prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
46 lines (45 loc) • 1.72 kB
JavaScript
import { a as languages, c as tokenize, u as withoutTokenizer } from "../../core-8vQkh0Rd.js";
import { n as re } from "../../shared-BPLAFNn7.js";
import { n as braces } from "../../jsx-shared-DIcqKxFi.js";
import { r as xmlComment, t as entity } from "../../xml-shared-BvyhLOaL.js";
import { n as astroTag, t as addInlined } from "../../markup-shared-YW12LkHC.js";
//#region src/prism/languages/svelte.js
var currentLang;
var expression = { pattern: RegExp(braces, "g") };
var tag = astroTag(expression);
var tagInside = tag.inside;
var blockInside = {
"punctuation": /^\W|\}$/,
"keyword": /^\w+|\bthen\b(?!\s*[^\s[{$\w\xa0-\uffff])/
};
var blockLang = { pattern: /[^]+/ };
tagInside["attr-value"].inside["expression"] = expression;
languages.svelte = {
"comment": xmlComment,
"script": addInlined("script", tagInside, (code) => {
return /^[^>]+?[\s"'}]lang\s*=\s*(["']?)ts\b\1/.test(code) ? "ts" : "js";
}),
"style": addInlined("style", tagInside, (code) => {
return /^[^>]+?[\s"'}]lang\s*=\s*(["']?)(less|s[ac]ss|stylus)\b\1/.exec(code)?.[2] || "css";
}),
"block": {
pattern: re("\\{[#@:/]\\w*(?:\\s(?:[^{}]|<0>)*)?\\}", [braces], "g"),
inside: blockInside
},
"tag": tag,
"expression": expression,
"entity": entity,
"punctuation": /[()[\]{}]/,
[tokenize](code, grammar) {
var lang = /<script\s(?:[^>]*?[\s"'}])?lang\s*=\s*(["'])ts\1/.test(code) ? "ts" : "js";
if (lang != currentLang) {
expression.alias = "language-" + lang;
delete blockInside["language-" + currentLang];
blockInside["language-" + lang] = blockLang;
expression.inside = blockLang.inside = currentLang = lang;
}
return withoutTokenizer(code, grammar);
}
};
//#endregion
//# sourceMappingURL=svelte.js.map