"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const language_core_1 = require("@volar/language-core"); const muggle_string_1 = require("muggle-string"); const buildMappings_1 = require("../utils/buildMappings"); const parseSfc_1 = require("../utils/parseSfc"); const codeblockReg = /(`{3,})[\s\S]+?\1/g; const inlineCodeblockReg = /`[^\n`]+?`/g; const scriptSetupReg = /\\\<[\s\S]+?\>\n?/g; const sfcBlockReg = /\<(script|style)\b[\s\S]*?\>([\s\S]*?)\<\/\1\>/g; const angleBracketReg = /\<\S*\:\S*\>/g; const linkReg = /\[[\s\S]*?\]\([\s\S]*?\)/g; const codeSnippetImportReg = /^\s*<<<\s*.+/gm; const plugin = ({ vueCompilerOptions }) => { return { version: 2.1, getLanguageId(fileName) { if (vueCompilerOptions.vitePressExtensions.some(ext => fileName.endsWith(ext))) { return 'markdown'; } }, isValidFile(_fileName, languageId) { return languageId === 'markdown'; }, parseSFC2(_fileName, languageId, content) { if (languageId !== 'markdown') { return; } content = content // code block .replace(codeblockReg, (match, quotes) => quotes + ' '.repeat(match.length - quotes.length * 2) + quotes) // inline code block .replace(inlineCodeblockReg, match => `\`${' '.repeat(match.length - 2)}\``) // # \