"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const muggle_string_1 = require("muggle-string");
const shared_1 = require("./shared");
const plugin = () => {
    return {
        version: 2.1,
        getEmbeddedCodes() {
            return [{
                    id: 'root_tags',
                    lang: 'vue-root-tags',
                }];
        },
        resolveEmbeddedCode(_fileName, sfc, embeddedFile) {
            if (embeddedFile.id === 'root_tags') {
                embeddedFile.content.push([sfc.content, undefined, 0, shared_1.allCodeFeatures]);
                for (const block of [
                    sfc.script,
                    sfc.scriptSetup,
                    sfc.template,
                    ...sfc.styles,
                    ...sfc.customBlocks,
                ]) {
                    if (!block) {
                        continue;
                    }
                    let content = block.content;
                    if (content.endsWith('\r\n')) {
                        content = content.slice(0, -2);
                    }
                    else if (content.endsWith('\n')) {
                        content = content.slice(0, -1);
                    }
                    const offset = content.lastIndexOf('\n') + 1;
                    // fix folding range end position failed to mapping
                    (0, muggle_string_1.replaceSourceRange)(embeddedFile.content, undefined, block.startTagEnd, block.endTagStart, sfc.content.substring(block.startTagEnd, block.startTagEnd + offset), [
                        '',
                        undefined,
                        block.startTagEnd + offset,
                        { structure: true },
                    ], sfc.content.substring(block.startTagEnd + offset, block.endTagStart));
                }
            }
            else {
                embeddedFile.parentCodeId ??= 'root_tags';
            }
        },
    };
};
exports.default = plugin;
//# sourceMappingURL=vue-root-tags.js.map