prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
57 lines (56 loc) • 1.89 kB
JavaScript
import { l as languages, a as tokenize, r as rest } from "../../index-DF54SWhA.js";
import { e as embeddedIn } from "../../templating-BdWShxVo.js";
import "./javascript.js";
var js = languages.js;
var templateString = js["template-string"];
var templateLiteralPattern = templateString.pattern.source;
var interpolationPattern = templateString.inside.interpolation.pattern;
var createTemplate = (language, tag) => ({
pattern: RegExp("(\\b(?:" + tag + ")\\s*)" + templateLiteralPattern, "g"),
lookbehind: true,
inside: {
"template-punctuation": {
pattern: /^`|`$/,
alias: "string"
},
["language-" + language]: {
pattern: /[^]+/,
inside: {
"interpolation": {
pattern: interpolationPattern,
lookbehind: true,
alias: "language-javascript",
inside: {
"interpolation-punctuation": {
pattern: /^..|\}$/g,
alias: "punctuation"
},
[rest]: "js"
}
},
[tokenize]: embeddedIn(language)
}
}
}
});
js["template-string"] = [
// styled-jsx:
// css`a { color: #25F; }`
// styled-components:
// styled.h1`color: red;`
createTemplate("css", "styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes"),
// html`<p></p>`
// div.innerHTML = `<p></p>`
createTemplate("html", "html|\\.\\s*(?:inner|outer)HTML\\s*\\+?="),
// svg`<path fill="#fff" d="M55.37 ..."/>`
createTemplate("svg", "svg"),
// md`# h1`, markdown`## h2`
createTemplate("markdown", "markdown|md"),
// gql`...`, graphql`...`, graphql.experimental`...`
createTemplate("graphql", "gql|graphql(?:\\s*\\.\\s*experimental)?"),
// sql`...`
createTemplate("sql", "sql"),
// vanilla template string
templateString
];
//# sourceMappingURL=js-templates.js.map