prism-code-editor
Version:
Lightweight, extensible code editor component for the web using Prism
73 lines (72 loc) • 2.05 kB
JavaScript
import { c, e, i } from "../../language-BqHrf6z-.js";
import { e as e2 } from "../../templating-BdWShxVo.js";
import { T as Token, t as tokenizeText, l as languages } from "../../index-DF54SWhA.js";
var tokenizeStrings = (tokens, tokenize) => {
var result = [];
for (var i2 = 0, token; token = tokens[i2++]; ) {
var content = token.content;
var stream;
if (content) {
if (Array.isArray(content)) {
tokenizeStrings(content, tokenize);
} else {
stream = tokenize(content);
if (stream[0] !== content) token.content = stream;
}
result.push(token);
} else {
result.push(...tokenize(token));
}
}
for (i2 = 0; token = result[i2]; ) tokens[i2++] = token;
};
var pattern$1 = /(['"]?)\s*data:[^,/]+\/(?:[^,+]+\+)?(css|javascript|json|html|xml),([^]+)\1$/g;
var tokenizeDataUris = (tokens) => {
return tokenizeStrings(tokens, (code) => {
var result = [];
var pos = 0;
var match;
var body;
while (match = pattern$1.exec(code)) {
result.push(
code.slice(pos, pos = code.indexOf(",", match.index) + 1),
new Token(
"language-" + match[2],
tokenizeText(
body = match[3],
languages[match[2]] || {}
),
body
)
);
pos += body.length;
}
if (code[pos]) result.push(code.slice(pos));
return result;
});
};
var pattern = / | /g;
var tokenizeInvisibles = (tokens) => {
return tokenizeStrings(tokens, (code) => {
var result = [];
var pos = 0;
var match, i2 = 0;
while (match = pattern.exec(code)) {
if (match.index > pos) result[i2++] = code.slice(pos, pos = match.index);
result[i2++] = new Token(match[0] == " " ? "space" : "tab", match[0], " ");
pos++;
}
if (code[pos]) result[i2] = code.slice(pos);
return result;
});
};
export {
c as clone,
e2 as embeddedIn,
e as extend,
i as insertBefore,
tokenizeDataUris,
tokenizeInvisibles,
tokenizeStrings
};
//# sourceMappingURL=index.js.map