diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 99674d1..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,2 +0,0 @@ -image: - file: .gitpod.dockerfile \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d423c22..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "base9.palette": "ffffff-972fff-00beef-008fff-00afff-aa00ff-9300ff-8a2be2-8866ff", - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.wordWrap": "on", - "files.autoSave": "afterDelay", - "workbench.commandPalette.experimental.suggestCommands": true, - "workbench.commandPalette.preserveInput": true, - "[html]": { - "editor.defaultFormatter": "vscode.html-language-features" - }, - "workbench.colorTheme": "Base 9", - "workbench.preferredDarkColorTheme": "Base 9", - "workbench.view.alwaysShowHeaderActions": true, - "accessibility.hideAccessibleView": true, - "window.density.editorTabHeight": "compact", - "workbench.editor.enablePreviewFromCodeNavigation": true, - "workbench.editor.enablePreviewFromQuickOpen": true, - "workbench.editor.tabSizing": "shrink", - "workbench.editor.wrapTabs": true, - "workbench.iconTheme": "vs-minimal", - "workbench.activityBar.location": "side", - "workbench.sideBar.location": "left", - "workbench.preferredHighContrastColorTheme": "Base 9", - "editor.tabSize": 1, - "autoOpenPreviewPanel.openPreviewToSide": true, - "editor.cursorStyle": "block", - "editor.renderWhitespace": "all", - "editor.fontSize": 12, - "editor.fontFamily": "'DM Mono', monospace", - "editor.bracketPairColorization.independentColorPoolPerBracketType": true -} diff --git a/.gitignore b/gitignore/.gitignore similarity index 84% rename from .gitignore rename to gitignore/.gitignore index 24bbcf5..435d7ea 100644 --- a/.gitignore +++ b/gitignore/.gitignore @@ -1,9 +1,10 @@ .vscode -.vscode/* node_modules +.node_modules references .gitpod.dockerfile .gitpod.yml package-lock.json package.js settings.json +vscode \ No newline at end of file diff --git a/index.html b/index.html index 14f857c..8af087c 100644 --- a/index.html +++ b/index.html @@ -1,49 +1,44 @@ -
-undefined
when no more characters are available.
- */
- next() {
- if (this.pos < this.string.length) {
- return this.string.charCodeAt(this.pos++);
- }
- }
- /**
- * `match` can be a character code or a function that takes a character code
- * and returns a boolean. If the next character in the stream 'matches'
- * the given argument, it is consumed and returned.
- * Otherwise, `false` is returned.
- */
- eat(match) {
- const ch = this.peek();
- const ok = typeof match === 'function' ? match(ch) : ch === match;
- if (ok) {
- this.next();
- }
- return ok;
- }
- /**
- * Repeatedly calls eat
with the given argument, until it
- * fails. Returns true
if any characters were eaten.
- */
- eatWhile(match) {
- const start = this.pos;
- while (!this.eof() && this.eat(match)) { /* */ }
- return this.pos !== start;
- }
- /**
- * Backs up the stream n characters. Backing it up further than the
- * start of the current token will cause things to break, so be careful.
- */
- backUp(n) {
- this.pos -= (n || 1);
- }
- /**
- * Get the string between the start of the current token and the
- * current stream position.
- */
- current() {
- return this.substring(this.start, this.pos);
- }
- /**
- * Returns substring for given range
- */
- substring(start, end) {
- return this.string.slice(start, end);
- }
- /**
- * Creates error object with current stream state
- */
- error(message, pos = this.pos) {
- return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);
- }
-}
-class ScannerError extends Error {
- constructor(message, pos, str) {
- super(message);
- this.pos = pos;
- this.string = str;
- }
-}
-
-function tokenScanner$1(tokens) {
- return {
- tokens,
- start: 0,
- pos: 0,
- size: tokens.length
- };
-}
-function peek$3(scanner) {
- return scanner.tokens[scanner.pos];
-}
-function next(scanner) {
- return scanner.tokens[scanner.pos++];
-}
-function slice(scanner, from = scanner.start, to = scanner.pos) {
- return scanner.tokens.slice(from, to);
-}
-function readable$1(scanner) {
- return scanner.pos < scanner.size;
-}
-function consume$2(scanner, test) {
- const token = peek$3(scanner);
- if (token && test(token)) {
- scanner.pos++;
- return true;
- }
- return false;
-}
-function error$1(scanner, message, token = peek$3(scanner)) {
- if (token && token.start != null) {
- message += ` at ${token.start}`;
- }
- const err = new Error(message);
- err['pos'] = token && token.start;
- return err;
-}
-
-function abbreviation(abbr, options = {}) {
- const scanner = tokenScanner$1(abbr);
- const result = statements(scanner, options);
- if (readable$1(scanner)) {
- throw error$1(scanner, 'Unexpected character');
- }
- return result;
-}
-function statements(scanner, options) {
- const result = {
- type: 'TokenGroup',
- elements: []
- };
- let ctx = result;
- let node;
- const stack = [];
- while (readable$1(scanner)) {
- if (node = element$2(scanner, options) || group(scanner, options)) {
- ctx.elements.push(node);
- if (consume$2(scanner, isChildOperator)) {
- stack.push(ctx);
- ctx = node;
- }
- else if (consume$2(scanner, isSiblingOperator$1)) {
- continue;
- }
- else if (consume$2(scanner, isClimbOperator)) {
- do {
- if (stack.length) {
- ctx = stack.pop();
- }
- } while (consume$2(scanner, isClimbOperator));
- }
- }
- else {
- break;
- }
- }
- return result;
-}
-/**
- * Consumes group from given scanner
- */
-function group(scanner, options) {
- if (consume$2(scanner, isGroupStart)) {
- const result = statements(scanner, options);
- const token = next(scanner);
- if (isBracket$2(token, 'group', false)) {
- result.repeat = repeater$1(scanner);
- }
- return result;
- }
-}
-/**
- * Consumes single element from given scanner
- */
-function element$2(scanner, options) {
- let attr;
- const elem = {
- type: 'TokenElement',
- name: void 0,
- attributes: void 0,
- value: void 0,
- repeat: void 0,
- selfClose: false,
- elements: []
- };
- if (elementName(scanner, options)) {
- elem.name = slice(scanner);
- }
- while (readable$1(scanner)) {
- scanner.start = scanner.pos;
- if (!elem.repeat && !isEmpty(elem) && consume$2(scanner, isRepeater)) {
- elem.repeat = scanner.tokens[scanner.pos - 1];
- }
- else if (!elem.value && text(scanner)) {
- elem.value = getText(scanner);
- }
- else if (attr = shortAttribute(scanner, 'id', options) || shortAttribute(scanner, 'class', options) || attributeSet(scanner)) {
- if (!elem.attributes) {
- elem.attributes = Array.isArray(attr) ? attr.slice() : [attr];
- }
- else {
- elem.attributes = elem.attributes.concat(attr);
- }
- }
- else {
- if (!isEmpty(elem) && consume$2(scanner, isCloseOperator)) {
- elem.selfClose = true;
- if (!elem.repeat && consume$2(scanner, isRepeater)) {
- elem.repeat = scanner.tokens[scanner.pos - 1];
- }
- }
- break;
- }
- }
- return !isEmpty(elem) ? elem : void 0;
-}
-/**
- * Consumes attribute set from given scanner
- */
-function attributeSet(scanner) {
- if (consume$2(scanner, isAttributeSetStart)) {
- const attributes = [];
- let attr;
- while (readable$1(scanner)) {
- if (attr = attribute(scanner)) {
- attributes.push(attr);
- }
- else if (consume$2(scanner, isAttributeSetEnd)) {
- break;
- }
- else if (!consume$2(scanner, isWhiteSpace$2)) {
- throw error$1(scanner, `Unexpected "${peek$3(scanner).type}" token`);
- }
- }
- return attributes;
- }
-}
-/**
- * Consumes attribute shorthand (class or id) from given scanner
- */
-function shortAttribute(scanner, type, options) {
- if (isOperator$1(peek$3(scanner), type)) {
- scanner.pos++;
- // Consume multiple operators
- let count = 1;
- while (isOperator$1(peek$3(scanner), type)) {
- scanner.pos++;
- count++;
- }
- const attr = {
- name: [createLiteral$1(type)]
- };
- if (count > 1) {
- attr.multiple = true;
- }
- // Consume expression after shorthand start for React-like components
- if (options.jsx && text(scanner)) {
- attr.value = getText(scanner);
- attr.expression = true;
- }
- else {
- attr.value = literal$1$1(scanner) ? slice(scanner) : void 0;
- }
- return attr;
- }
-}
-/**
- * Consumes single attribute from given scanner
- */
-function attribute(scanner) {
- if (quoted(scanner)) {
- // Consumed quoted value: it’s a value for default attribute
- return {
- value: slice(scanner)
- };
- }
- if (literal$1$1(scanner, true)) {
- const name = slice(scanner);
- let value;
- if (consume$2(scanner, isEquals)) {
- if (quoted(scanner) || literal$1$1(scanner, true)) {
- value = slice(scanner);
- }
- }
- return { name, value };
- }
-}
-function repeater$1(scanner) {
- return isRepeater(peek$3(scanner))
- ? scanner.tokens[scanner.pos++]
- : void 0;
-}
-/**
- * Consumes quoted value from given scanner, if possible
- */
-function quoted(scanner) {
- const start = scanner.pos;
- const quote = peek$3(scanner);
- if (isQuote$1(quote)) {
- scanner.pos++;
- while (readable$1(scanner)) {
- if (isQuote$1(next(scanner), quote.single)) {
- scanner.start = start;
- return true;
- }
- }
- throw error$1(scanner, 'Unclosed quote', quote);
- }
- return false;
-}
-/**
- * Consumes literal (unquoted value) from given scanner
- */
-function literal$1$1(scanner, allowBrackets) {
- const start = scanner.pos;
- const brackets = {
- attribute: 0,
- expression: 0,
- group: 0
- };
- while (readable$1(scanner)) {
- const token = peek$3(scanner);
- if (brackets.expression) {
- // If we’re inside expression, we should consume all content in it
- if (isBracket$2(token, 'expression')) {
- brackets[token.context] += token.open ? 1 : -1;
- }
- }
- else if (isQuote$1(token) || isOperator$1(token) || isWhiteSpace$2(token) || isRepeater(token)) {
- break;
- }
- else if (isBracket$2(token)) {
- if (!allowBrackets) {
- break;
- }
- if (token.open) {
- brackets[token.context]++;
- }
- else if (!brackets[token.context]) {
- // Stop if found unmatched closing brace: it must be handled
- // by parent consumer
- break;
- }
- else {
- brackets[token.context]--;
- }
- }
- scanner.pos++;
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return true;
- }
- return false;
-}
-/**
- * Consumes element name from given scanner
- */
-function elementName(scanner, options) {
- const start = scanner.pos;
- if (options.jsx && consume$2(scanner, isCapitalizedLiteral)) {
- // Check for edge case: consume immediate capitalized class names
- // for React-like components, e.g. `Foo.Bar.Baz`
- while (readable$1(scanner)) {
- const { pos } = scanner;
- if (!consume$2(scanner, isClassNameOperator) || !consume$2(scanner, isCapitalizedLiteral)) {
- scanner.pos = pos;
- break;
- }
- }
- }
- while (readable$1(scanner) && consume$2(scanner, isElementName$1)) {
- // empty
- }
- if (scanner.pos !== start) {
- scanner.start = start;
- return true;
- }
- return false;
-}
-/**
- * Consumes text value from given scanner
- */
-function text(scanner) {
- const start = scanner.pos;
- if (consume$2(scanner, isTextStart)) {
- let brackets = 0;
- while (readable$1(scanner)) {
- const token = next(scanner);
- if (isBracket$2(token, 'expression')) {
- if (token.open) {
- brackets++;
- }
- else if (!brackets) {
- break;
- }
- else {
- brackets--;
- }
- }
- }
- scanner.start = start;
- return true;
- }
- return false;
-}
-function getText(scanner) {
- let from = scanner.start;
- let to = scanner.pos;
- if (isBracket$2(scanner.tokens[from], 'expression', true)) {
- from++;
- }
- if (isBracket$2(scanner.tokens[to - 1], 'expression', false)) {
- to--;
- }
- return slice(scanner, from, to);
-}
-function isBracket$2(token, context, isOpen) {
- return Boolean(token && token.type === 'Bracket'
- && (!context || token.context === context)
- && (isOpen == null || token.open === isOpen));
-}
-function isOperator$1(token, type) {
- return Boolean(token && token.type === 'Operator' && (!type || token.operator === type));
-}
-function isQuote$1(token, isSingle) {
- return Boolean(token && token.type === 'Quote' && (isSingle == null || token.single === isSingle));
-}
-function isWhiteSpace$2(token) {
- return Boolean(token && token.type === 'WhiteSpace');
-}
-function isEquals(token) {
- return isOperator$1(token, 'equal');
-}
-function isRepeater(token) {
- return Boolean(token && token.type === 'Repeater');
-}
-function isLiteral$2(token) {
- return token.type === 'Literal';
-}
-function isCapitalizedLiteral(token) {
- if (isLiteral$2(token)) {
- const ch = token.value.charCodeAt(0);
- return ch >= 65 && ch <= 90;
- }
- return false;
-}
-function isElementName$1(token) {
- return token.type === 'Literal' || token.type === 'RepeaterNumber' || token.type === 'RepeaterPlaceholder';
-}
-function isClassNameOperator(token) {
- return isOperator$1(token, 'class');
-}
-function isAttributeSetStart(token) {
- return isBracket$2(token, 'attribute', true);
-}
-function isAttributeSetEnd(token) {
- return isBracket$2(token, 'attribute', false);
-}
-function isTextStart(token) {
- return isBracket$2(token, 'expression', true);
-}
-function isGroupStart(token) {
- return isBracket$2(token, 'group', true);
-}
-function createLiteral$1(value) {
- return { type: 'Literal', value };
-}
-function isEmpty(elem) {
- return !elem.name && !elem.value && !elem.attributes;
-}
-function isChildOperator(token) {
- return isOperator$1(token, 'child');
-}
-function isSiblingOperator$1(token) {
- return isOperator$1(token, 'sibling');
-}
-function isClimbOperator(token) {
- return isOperator$1(token, 'climb');
-}
-function isCloseOperator(token) {
- return isOperator$1(token, 'close');
-}
-
-var Chars$3;
-(function (Chars) {
- /** `{` character */
- Chars[Chars["CurlyBracketOpen"] = 123] = "CurlyBracketOpen";
- /** `}` character */
- Chars[Chars["CurlyBracketClose"] = 125] = "CurlyBracketClose";
- /** `\\` character */
- Chars[Chars["Escape"] = 92] = "Escape";
- /** `=` character */
- Chars[Chars["Equals"] = 61] = "Equals";
- /** `[` character */
- Chars[Chars["SquareBracketOpen"] = 91] = "SquareBracketOpen";
- /** `]` character */
- Chars[Chars["SquareBracketClose"] = 93] = "SquareBracketClose";
- /** `*` character */
- Chars[Chars["Asterisk"] = 42] = "Asterisk";
- /** `#` character */
- Chars[Chars["Hash"] = 35] = "Hash";
- /** `$` character */
- Chars[Chars["Dollar"] = 36] = "Dollar";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `.` character */
- Chars[Chars["Dot"] = 46] = "Dot";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `!` character */
- Chars[Chars["Excl"] = 33] = "Excl";
- /** `@` character */
- Chars[Chars["At"] = 64] = "At";
- /** `_` character */
- Chars[Chars["Underscore"] = 95] = "Underscore";
- /** `(` character */
- Chars[Chars["RoundBracketOpen"] = 40] = "RoundBracketOpen";
- /** `)` character */
- Chars[Chars["RoundBracketClose"] = 41] = "RoundBracketClose";
- /** `+` character */
- Chars[Chars["Sibling"] = 43] = "Sibling";
- /** `>` character */
- Chars[Chars["Child"] = 62] = "Child";
- /** `^` character */
- Chars[Chars["Climb"] = 94] = "Climb";
- /** `'` character */
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- /** `""` character */
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
-})(Chars$3 || (Chars$3 = {}));
-/**
- * If consumes escape character, sets current stream range to escaped value
- */
-function escaped(scanner) {
- if (scanner.eat(Chars$3.Escape)) {
- scanner.start = scanner.pos;
- if (!scanner.eof()) {
- scanner.pos++;
- }
- return true;
- }
- return false;
-}
-
-function tokenize$1(source) {
- const scanner = new Scanner(source);
- const result = [];
- const ctx = {
- group: 0,
- attribute: 0,
- expression: 0,
- quote: 0
- };
- let ch = 0;
- let token;
- while (!scanner.eof()) {
- ch = scanner.peek();
- token = getToken$1(scanner, ctx);
- if (token) {
- result.push(token);
- if (token.type === 'Quote') {
- ctx.quote = ch === ctx.quote ? 0 : ch;
- }
- else if (token.type === 'Bracket') {
- ctx[token.context] += token.open ? 1 : -1;
- }
- }
- else {
- throw scanner.error('Unexpected character');
- }
- }
- return result;
-}
-/**
- * Returns next token from given scanner, if possible
- */
-function getToken$1(scanner, ctx) {
- return field$2(scanner, ctx)
- || repeaterPlaceholder(scanner)
- || repeaterNumber(scanner)
- || repeater(scanner)
- || whiteSpace$1(scanner)
- || literal$2(scanner, ctx)
- || operator$1(scanner)
- || quote(scanner)
- || bracket$1(scanner);
-}
-/**
- * Consumes literal from given scanner
- */
-function literal$2(scanner, ctx) {
- const start = scanner.pos;
- const expressionStart = ctx.expression;
- let value = '';
- while (!scanner.eof()) {
- // Consume escaped sequence no matter of context
- if (escaped(scanner)) {
- value += scanner.current();
- continue;
- }
- const ch = scanner.peek();
- if (ch === Chars$3.Slash && !ctx.quote && !ctx.expression && !ctx.attribute) {
- // Special case for `/` character between numbers in class names
- const prev = scanner.string.charCodeAt(scanner.pos - 1);
- const next = scanner.string.charCodeAt(scanner.pos + 1);
- if (isNumber$1(prev) && isNumber$1(next)) {
- value += scanner.string[scanner.pos++];
- continue;
- }
- }
- if (ch === ctx.quote || ch === Chars$3.Dollar || isAllowedOperator(ch, ctx)) {
- // 1. Found matching quote
- // 2. The `$` character has special meaning in every context
- // 3. Depending on context, some characters should be treated as operators
- break;
- }
- if (expressionStart) {
- // Consume nested expressions, e.g. span{{foo}}
- if (ch === Chars$3.CurlyBracketOpen) {
- ctx.expression++;
- }
- else if (ch === Chars$3.CurlyBracketClose) {
- if (ctx.expression > expressionStart) {
- ctx.expression--;
- }
- else {
- break;
- }
- }
- }
- else if (!ctx.quote) {
- // Consuming element name
- if (!ctx.attribute && !isElementName(ch)) {
- break;
- }
- if (isAllowedSpace(ch, ctx) || isAllowedRepeater(ch, ctx) || isQuote$2(ch) || bracketType(ch)) {
- // Stop for characters not allowed in unquoted literal
- break;
- }
- }
- value += scanner.string[scanner.pos++];
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return {
- type: 'Literal',
- value,
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes white space characters as string literal from given scanner
- */
-function whiteSpace$1(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(isSpace)) {
- return {
- type: 'WhiteSpace',
- start,
- end: scanner.pos,
- value: scanner.substring(start, scanner.pos)
- };
- }
-}
-/**
- * Consumes quote from given scanner
- */
-function quote(scanner) {
- const ch = scanner.peek();
- if (isQuote$2(ch)) {
- return {
- type: 'Quote',
- single: ch === Chars$3.SingleQuote,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes bracket from given scanner
- */
-function bracket$1(scanner) {
- const ch = scanner.peek();
- const context = bracketType(ch);
- if (context) {
- return {
- type: 'Bracket',
- open: isOpenBracket$2(ch),
- context,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes operator from given scanner
- */
-function operator$1(scanner) {
- const op = operatorType$1(scanner.peek());
- if (op) {
- return {
- type: 'Operator',
- operator: op,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes node repeat token from current stream position and returns its
- * parsed value
- */
-function repeater(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$3.Asterisk)) {
- scanner.start = scanner.pos;
- let count = 1;
- let implicit = false;
- if (scanner.eatWhile(isNumber$1)) {
- count = Number(scanner.current());
- }
- else {
- implicit = true;
- }
- return {
- type: 'Repeater',
- count,
- value: 0,
- implicit,
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes repeater placeholder `$#` from given scanner
- */
-function repeaterPlaceholder(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$3.Dollar) && scanner.eat(Chars$3.Hash)) {
- return {
- type: 'RepeaterPlaceholder',
- value: void 0,
- start,
- end: scanner.pos
- };
- }
- scanner.pos = start;
-}
-/**
- * Consumes numbering token like `$` from given scanner state
- */
-function repeaterNumber(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(Chars$3.Dollar)) {
- const size = scanner.pos - start;
- let reverse = false;
- let base = 1;
- let parent = 0;
- if (scanner.eat(Chars$3.At)) {
- // Consume numbering modifiers
- while (scanner.eat(Chars$3.Climb)) {
- parent++;
- }
- reverse = scanner.eat(Chars$3.Dash);
- scanner.start = scanner.pos;
- if (scanner.eatWhile(isNumber$1)) {
- base = Number(scanner.current());
- }
- }
- scanner.start = start;
- return {
- type: 'RepeaterNumber',
- size,
- reverse,
- base,
- parent,
- start,
- end: scanner.pos
- };
- }
-}
-function field$2(scanner, ctx) {
- const start = scanner.pos;
- // Fields are allowed inside expressions and attributes
- if ((ctx.expression || ctx.attribute) && scanner.eat(Chars$3.Dollar) && scanner.eat(Chars$3.CurlyBracketOpen)) {
- scanner.start = scanner.pos;
- let index;
- let name = '';
- if (scanner.eatWhile(isNumber$1)) {
- // It’s a field
- index = Number(scanner.current());
- name = scanner.eat(Chars$3.Colon) ? consumePlaceholder$2(scanner) : '';
- }
- else if (isAlpha$1(scanner.peek())) {
- // It’s a variable
- name = consumePlaceholder$2(scanner);
- }
- if (scanner.eat(Chars$3.CurlyBracketClose)) {
- return {
- type: 'Field',
- index, name,
- start,
- end: scanner.pos
- };
- }
- throw scanner.error('Expecting }');
- }
- // If we reached here then there’s no valid field here, revert
- // back to starting position
- scanner.pos = start;
-}
-/**
- * Consumes a placeholder: value right after `:` in field. Could be empty
- */
-function consumePlaceholder$2(stream) {
- const stack = [];
- stream.start = stream.pos;
- while (!stream.eof()) {
- if (stream.eat(Chars$3.CurlyBracketOpen)) {
- stack.push(stream.pos);
- }
- else if (stream.eat(Chars$3.CurlyBracketClose)) {
- if (!stack.length) {
- stream.pos--;
- break;
- }
- stack.pop();
- }
- else {
- stream.pos++;
- }
- }
- if (stack.length) {
- stream.pos = stack.pop();
- throw stream.error(`Expecting }`);
- }
- return stream.current();
-}
-/**
- * Check if given character code is an operator and it’s allowed in current context
- */
-function isAllowedOperator(ch, ctx) {
- const op = operatorType$1(ch);
- if (!op || ctx.quote || ctx.expression) {
- // No operators inside quoted values or expressions
- return false;
- }
- // Inside attributes, only `equals` is allowed
- return !ctx.attribute || op === 'equal';
-}
-/**
- * Check if given character is a space character and is allowed to be consumed
- * as a space token in current context
- */
-function isAllowedSpace(ch, ctx) {
- return isSpace(ch) && !ctx.expression;
-}
-/**
- * Check if given character can be consumed as repeater in current context
- */
-function isAllowedRepeater(ch, ctx) {
- return ch === Chars$3.Asterisk && !ctx.attribute && !ctx.expression;
-}
-/**
- * If given character is a bracket, returns it’s type
- */
-function bracketType(ch) {
- if (ch === Chars$3.RoundBracketOpen || ch === Chars$3.RoundBracketClose) {
- return 'group';
- }
- if (ch === Chars$3.SquareBracketOpen || ch === Chars$3.SquareBracketClose) {
- return 'attribute';
- }
- if (ch === Chars$3.CurlyBracketOpen || ch === Chars$3.CurlyBracketClose) {
- return 'expression';
- }
-}
-/**
- * If given character is an operator, returns it’s type
- */
-function operatorType$1(ch) {
- return (ch === Chars$3.Child && 'child')
- || (ch === Chars$3.Sibling && 'sibling')
- || (ch === Chars$3.Climb && 'climb')
- || (ch === Chars$3.Dot && 'class')
- || (ch === Chars$3.Hash && 'id')
- || (ch === Chars$3.Slash && 'close')
- || (ch === Chars$3.Equals && 'equal')
- || void 0;
-}
-/**
- * Check if given character is an open bracket
- */
-function isOpenBracket$2(ch) {
- return ch === Chars$3.CurlyBracketOpen
- || ch === Chars$3.SquareBracketOpen
- || ch === Chars$3.RoundBracketOpen;
-}
-/**
- * Check if given character is allowed in element name
- */
-function isElementName(ch) {
- return isAlphaNumericWord(ch)
- || isUmlaut(ch)
- || ch === Chars$3.Dash
- || ch === Chars$3.Colon
- || ch === Chars$3.Excl;
-}
-
-const operators = {
- child: '>',
- class: '.',
- climb: '^',
- id: '#',
- equal: '=',
- close: '/',
- sibling: '+'
-};
-const tokenVisitor = {
- Literal(token) {
- return token.value;
- },
- Quote(token) {
- return token.single ? '\'' : '"';
- },
- Bracket(token) {
- if (token.context === 'attribute') {
- return token.open ? '[' : ']';
- }
- else if (token.context === 'expression') {
- return token.open ? '{' : '}';
- }
- else {
- return token.open ? '(' : '}';
- }
- },
- Operator(token) {
- return operators[token.operator];
- },
- Field(token, state) {
- if (token.index != null) {
- // It’s a field: by default, return TextMate-compatible field
- return token.name
- ? `\${${token.index}:${token.name}}`
- : `\${${token.index}`;
- }
- else if (token.name) {
- // It’s a variable
- return state.getVariable(token.name);
- }
- return '';
- },
- RepeaterPlaceholder(token, state) {
- // Find closest implicit repeater
- let repeater;
- for (let i = state.repeaters.length - 1; i >= 0; i--) {
- if (state.repeaters[i].implicit) {
- repeater = state.repeaters[i];
- break;
- }
- }
- state.inserted = true;
- return state.getText(repeater && repeater.value);
- },
- RepeaterNumber(token, state) {
- let value = 1;
- const lastIx = state.repeaters.length - 1;
- // const repeaterIx = Math.max(0, state.repeaters.length - 1 - token.parent);
- const repeater = state.repeaters[lastIx];
- if (repeater) {
- value = token.reverse
- ? token.base + repeater.count - repeater.value - 1
- : token.base + repeater.value;
- if (token.parent) {
- const parentIx = Math.max(0, lastIx - token.parent);
- if (parentIx !== lastIx) {
- const parentRepeater = state.repeaters[parentIx];
- value += repeater.count * parentRepeater.value;
- }
- }
- }
- let result = String(value);
- while (result.length < token.size) {
- result = '0' + result;
- }
- return result;
- },
- WhiteSpace(token) {
- return token.value;
- }
-};
-/**
- * Converts given value token to string
- */
-function stringify$1(token, state) {
- if (!tokenVisitor[token.type]) {
- throw new Error(`Unknown token ${token.type}`);
- }
- return tokenVisitor[token.type](token, state);
-}
-
-const urlRegex = /^((https?:|ftp:|file:)?\/\/|(www|ftp)\.)[^ ]*$/;
-const emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,5}$/;
-/**
- * Converts given token-based abbreviation into simplified and unrolled node-based
- * abbreviation
- */
-function convert(abbr, options = {}) {
- let textInserted = false;
- let cleanText;
- if (options.text) {
- if (Array.isArray(options.text)) {
- cleanText = options.text.filter(s => s.trim());
- }
- else {
- cleanText = options.text;
- }
- }
- const result = {
- type: 'Abbreviation',
- children: convertGroup(abbr, {
- inserted: false,
- repeaters: [],
- text: options.text,
- cleanText,
- repeatGuard: options.maxRepeat || Number.POSITIVE_INFINITY,
- getText(pos) {
- var _a;
- textInserted = true;
- let value;
- if (Array.isArray(options.text)) {
- if (pos !== undefined && pos >= 0 && pos < cleanText.length) {
- return cleanText[pos];
- }
- value = pos !== undefined ? options.text[pos] : options.text.join('\n');
- }
- else {
- value = (_a = options.text) !== null && _a !== void 0 ? _a : '';
- }
- return value;
- },
- getVariable(name) {
- const varValue = options.variables && options.variables[name];
- return varValue != null ? varValue : name;
- }
- })
- };
- if (options.text != null && !textInserted) {
- // Text given but no implicitly repeated elements: insert it into
- // deepest child
- const deepest = deepestNode(last$1(result.children));
- if (deepest) {
- const text = Array.isArray(options.text) ? options.text.join('\n') : options.text;
- insertText(deepest, text);
- if (deepest.name === 'a' && options.href) {
- // Automatically update value of `` element if inserting URL or email
- insertHref(deepest, text);
- }
- }
- }
- return result;
-}
-/**
- * Converts given statement to abbreviation nodes
- */
-function convertStatement(node, state) {
- let result = [];
- if (node.repeat) {
- // Node is repeated: we should create copies of given node
- // and supply context token with actual repeater state
- const original = node.repeat;
- const repeat = Object.assign({}, original);
- repeat.count = repeat.implicit && Array.isArray(state.text)
- ? state.cleanText.length
- : (repeat.count || 1);
- let items;
- state.repeaters.push(repeat);
- for (let i = 0; i < repeat.count; i++) {
- repeat.value = i;
- node.repeat = repeat;
- items = isGroup(node)
- ? convertGroup(node, state)
- : convertElement(node, state);
- if (repeat.implicit && !state.inserted) {
- // It’s an implicit repeater but no repeater placeholders found inside,
- // we should insert text into deepest node
- const target = last$1(items);
- const deepest = target && deepestNode(target);
- if (deepest) {
- insertText(deepest, state.getText(repeat.value));
- }
- }
- result = result.concat(items);
- // We should output at least one repeated item even if it’s reached
- // repeat limit
- if (--state.repeatGuard <= 0) {
- break;
- }
- }
- state.repeaters.pop();
- node.repeat = original;
- if (repeat.implicit) {
- state.inserted = true;
- }
- }
- else {
- result = result.concat(isGroup(node) ? convertGroup(node, state) : convertElement(node, state));
- }
- return result;
-}
-function convertElement(node, state) {
- let children = [];
- const elem = {
- type: 'AbbreviationNode',
- name: node.name && stringifyName(node.name, state),
- value: node.value && stringifyValue$1(node.value, state),
- attributes: void 0,
- children,
- repeat: node.repeat && Object.assign({}, node.repeat),
- selfClosing: node.selfClose,
- };
- let result = [elem];
- for (const child of node.elements) {
- children = children.concat(convertStatement(child, state));
- }
- if (node.attributes) {
- elem.attributes = [];
- for (const attr of node.attributes) {
- elem.attributes.push(convertAttribute(attr, state));
- }
- }
- // In case if current node is a text-only snippet without fields, we should
- // put all children as siblings
- if (!elem.name && !elem.attributes && elem.value && !elem.value.some(isField$1)) {
- // XXX it’s unclear that `children` is not bound to `elem`
- // due to concat operation
- result = result.concat(children);
- }
- else {
- elem.children = children;
- }
- return result;
-}
-function convertGroup(node, state) {
- let result = [];
- for (const child of node.elements) {
- result = result.concat(convertStatement(child, state));
- }
- if (node.repeat) {
- result = attachRepeater(result, node.repeat);
- }
- return result;
-}
-function convertAttribute(node, state) {
- let implied = false;
- let isBoolean = false;
- let valueType = node.expression ? 'expression' : 'raw';
- let value;
- const name = node.name && stringifyName(node.name, state);
- if (name && name[0] === '!') {
- implied = true;
- }
- if (name && name[name.length - 1] === '.') {
- isBoolean = true;
- }
- if (node.value) {
- const tokens = node.value.slice();
- if (isQuote$1(tokens[0])) {
- // It’s a quoted value: remove quotes from output but mark attribute
- // value as quoted
- const quote = tokens.shift();
- if (tokens.length && last$1(tokens).type === quote.type) {
- tokens.pop();
- }
- valueType = quote.single ? 'singleQuote' : 'doubleQuote';
- }
- else if (isBracket$2(tokens[0], 'expression', true)) {
- // Value is expression: remove brackets but mark value type
- valueType = 'expression';
- tokens.shift();
- if (isBracket$2(last$1(tokens), 'expression', false)) {
- tokens.pop();
- }
- }
- value = stringifyValue$1(tokens, state);
- }
- return {
- name: isBoolean || implied
- ? name.slice(implied ? 1 : 0, isBoolean ? -1 : void 0)
- : name,
- value,
- boolean: isBoolean,
- implied,
- valueType,
- multiple: node.multiple
- };
-}
-/**
- * Converts given token list to string
- */
-function stringifyName(tokens, state) {
- let str = '';
- for (let i = 0; i < tokens.length; i++) {
- str += stringify$1(tokens[i], state);
- }
- return str;
-}
-/**
- * Converts given token list to value list
- */
-function stringifyValue$1(tokens, state) {
- const result = [];
- let str = '';
- for (let i = 0, token; i < tokens.length; i++) {
- token = tokens[i];
- if (isField$1(token)) {
- // We should keep original fields in output since some editors has their
- // own syntax for field or doesn’t support fields at all so we should
- // capture actual field location in output stream
- if (str) {
- result.push(str);
- str = '';
- }
- result.push(token);
- }
- else {
- str += stringify$1(token, state);
- }
- }
- if (str) {
- result.push(str);
- }
- return result;
-}
-function isGroup(node) {
- return node.type === 'TokenGroup';
-}
-function isField$1(token) {
- return typeof token === 'object' && token.type === 'Field' && token.index != null;
-}
-function last$1(arr) {
- return arr[arr.length - 1];
-}
-function deepestNode(node) {
- return node.children.length ? deepestNode(last$1(node.children)) : node;
-}
-function insertText(node, text) {
- if (node.value) {
- const lastToken = last$1(node.value);
- if (typeof lastToken === 'string') {
- node.value[node.value.length - 1] += text;
- }
- else {
- node.value.push(text);
- }
- }
- else {
- node.value = [text];
- }
-}
-function insertHref(node, text) {
- var _a;
- let href = '';
- if (urlRegex.test(text)) {
- href = text;
- if (!/\w+:/.test(href) && !href.startsWith('//')) {
- href = `http://${href}`;
- }
- }
- else if (emailRegex.test(text)) {
- href = `mailto:${text}`;
- }
- const hrefAttribute = (_a = node.attributes) === null || _a === void 0 ? void 0 : _a.find(attr => attr.name === 'href');
- if (!hrefAttribute) {
- if (!node.attributes) {
- node.attributes = [];
- }
- node.attributes.push({ name: 'href', value: [href], valueType: 'doubleQuote' });
- }
- else if (!hrefAttribute.value) {
- hrefAttribute.value = [href];
- }
-}
-function attachRepeater(items, repeater) {
- for (const item of items) {
- if (!item.repeat) {
- item.repeat = Object.assign({}, repeater);
- }
- }
- return items;
-}
-
-/**
- * Parses given abbreviation into node tree
- */
-function parseAbbreviation(abbr, options) {
- try {
- const tokens = typeof abbr === 'string' ? tokenize$1(abbr) : abbr;
- return convert(abbreviation(tokens, options), options);
- }
- catch (err) {
- if (err instanceof ScannerError && typeof abbr === 'string') {
- err.message += `\n${abbr}\n${'-'.repeat(err.pos)}^`;
- }
- throw err;
- }
-}
-
-var OperatorType;
-(function (OperatorType) {
- OperatorType["Sibling"] = "+";
- OperatorType["Important"] = "!";
- OperatorType["ArgumentDelimiter"] = ",";
- OperatorType["ValueDelimiter"] = "-";
- OperatorType["PropertyDelimiter"] = ":";
-})(OperatorType || (OperatorType = {}));
-
-var Chars$2;
-(function (Chars) {
- /** `#` character */
- Chars[Chars["Hash"] = 35] = "Hash";
- /** `$` character */
- Chars[Chars["Dollar"] = 36] = "Dollar";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `.` character */
- Chars[Chars["Dot"] = 46] = "Dot";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `,` character */
- Chars[Chars["Comma"] = 44] = "Comma";
- /** `!` character */
- Chars[Chars["Excl"] = 33] = "Excl";
- /** `@` character */
- Chars[Chars["At"] = 64] = "At";
- /** `%` character */
- Chars[Chars["Percent"] = 37] = "Percent";
- /** `_` character */
- Chars[Chars["Underscore"] = 95] = "Underscore";
- /** `(` character */
- Chars[Chars["RoundBracketOpen"] = 40] = "RoundBracketOpen";
- /** `)` character */
- Chars[Chars["RoundBracketClose"] = 41] = "RoundBracketClose";
- /** `{` character */
- Chars[Chars["CurlyBracketOpen"] = 123] = "CurlyBracketOpen";
- /** `}` character */
- Chars[Chars["CurlyBracketClose"] = 125] = "CurlyBracketClose";
- /** `+` character */
- Chars[Chars["Sibling"] = 43] = "Sibling";
- /** `'` character */
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- /** `"` character */
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
- /** `t` character */
- Chars[Chars["Transparent"] = 116] = "Transparent";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
-})(Chars$2 || (Chars$2 = {}));
-
-function tokenize(abbr, isValue) {
- let brackets = 0;
- let token;
- const scanner = new Scanner(abbr);
- const tokens = [];
- while (!scanner.eof()) {
- token = getToken(scanner, brackets === 0 && !isValue);
- if (!token) {
- throw scanner.error('Unexpected character');
- }
- if (token.type === 'Bracket') {
- if (!brackets && token.open) {
- mergeTokens(scanner, tokens);
- }
- brackets += token.open ? 1 : -1;
- if (brackets < 0) {
- throw scanner.error('Unexpected bracket', token.start);
- }
- }
- tokens.push(token);
- // Forcibly consume next operator after unit-less numeric value or color:
- // next dash `-` must be used as value delimiter
- if (shouldConsumeDashAfter(token) && (token = operator(scanner))) {
- tokens.push(token);
- }
- }
- return tokens;
-}
-/**
- * Returns next token from given scanner, if possible
- */
-function getToken(scanner, short) {
- return field$1(scanner)
- || customProperty(scanner)
- || numberValue(scanner)
- || colorValue(scanner)
- || stringValue(scanner)
- || bracket(scanner)
- || operator(scanner)
- || whiteSpace(scanner)
- || literal$1(scanner, short);
-}
-function field$1(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dollar) && scanner.eat(Chars$2.CurlyBracketOpen)) {
- scanner.start = scanner.pos;
- let index;
- let name = '';
- if (scanner.eatWhile(isNumber$1)) {
- // It’s a field
- index = Number(scanner.current());
- name = scanner.eat(Chars$2.Colon) ? consumePlaceholder$1(scanner) : '';
- }
- else if (isAlpha$1(scanner.peek())) {
- // It’s a variable
- name = consumePlaceholder$1(scanner);
- }
- if (scanner.eat(Chars$2.CurlyBracketClose)) {
- return {
- type: 'Field',
- index, name,
- start,
- end: scanner.pos
- };
- }
- throw scanner.error('Expecting }');
- }
- // If we reached here then there’s no valid field here, revert
- // back to starting position
- scanner.pos = start;
-}
-/**
- * Consumes a placeholder: value right after `:` in field. Could be empty
- */
-function consumePlaceholder$1(stream) {
- const stack = [];
- stream.start = stream.pos;
- while (!stream.eof()) {
- if (stream.eat(Chars$2.CurlyBracketOpen)) {
- stack.push(stream.pos);
- }
- else if (stream.eat(Chars$2.CurlyBracketClose)) {
- if (!stack.length) {
- stream.pos--;
- break;
- }
- stack.pop();
- }
- else {
- stream.pos++;
- }
- }
- if (stack.length) {
- stream.pos = stack.pop();
- throw stream.error(`Expecting }`);
- }
- return stream.current();
-}
-/**
- * Consumes literal from given scanner
- * @param short Use short notation for consuming value.
- * The difference between “short” and “full” notation is that first one uses
- * alpha characters only and used for extracting keywords from abbreviation,
- * while “full” notation also supports numbers and dashes
- */
-function literal$1(scanner, short) {
- const start = scanner.pos;
- if (scanner.eat(isIdentPrefix)) {
- // SCSS or LESS variable
- // NB a bit dirty hack: if abbreviation starts with identifier prefix,
- // consume alpha characters only to allow embedded variables
- scanner.eatWhile(start ? isKeyword : isLiteral$1);
- }
- else if (scanner.eat(isAlphaWord)) {
- scanner.eatWhile(short ? isLiteral$1 : isKeyword);
- }
- else {
- // Allow dots only at the beginning of literal
- scanner.eat(Chars$2.Dot);
- scanner.eatWhile(isLiteral$1);
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return createLiteral(scanner, scanner.start = start);
- }
-}
-function createLiteral(scanner, start = scanner.start, end = scanner.pos) {
- return {
- type: 'Literal',
- value: scanner.substring(start, end),
- start,
- end
- };
-}
-/**
- * Consumes numeric CSS value (number with optional unit) from current stream,
- * if possible
- */
-function numberValue(scanner) {
- const start = scanner.pos;
- if (consumeNumber(scanner)) {
- scanner.start = start;
- const rawValue = scanner.current();
- // eat unit, which can be a % or alpha word
- scanner.start = scanner.pos;
- scanner.eat(Chars$2.Percent) || scanner.eatWhile(isAlphaWord);
- return {
- type: 'NumberValue',
- value: Number(rawValue),
- rawValue,
- unit: scanner.current(),
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes quoted string value from given scanner
- */
-function stringValue(scanner) {
- const ch = scanner.peek();
- const start = scanner.pos;
- let finished = false;
- if (isQuote$2(ch)) {
- scanner.pos++;
- while (!scanner.eof()) {
- // Do not throw error on malformed string
- if (scanner.eat(ch)) {
- finished = true;
- break;
- }
- else {
- scanner.pos++;
- }
- }
- scanner.start = start;
- return {
- type: 'StringValue',
- value: scanner.substring(start + 1, scanner.pos - (finished ? 1 : 0)),
- quote: ch === Chars$2.SingleQuote ? 'single' : 'double',
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes a color token from given string
- */
-function colorValue(scanner) {
- // supported color variations:
- // #abc → #aabbccc
- // #0 → #000000
- // #fff.5 → rgba(255, 255, 255, 0.5)
- // #t → transparent
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Hash)) {
- const valueStart = scanner.pos;
- let color = '';
- let alpha = '';
- if (scanner.eatWhile(isHex)) {
- color = scanner.substring(valueStart, scanner.pos);
- alpha = colorAlpha(scanner);
- }
- else if (scanner.eat(Chars$2.Transparent)) {
- color = '0';
- alpha = colorAlpha(scanner) || '0';
- }
- else {
- alpha = colorAlpha(scanner);
- }
- if (color || alpha || scanner.eof()) {
- const { r, g, b, a } = parseColor(color, alpha);
- return {
- type: 'ColorValue',
- r, g, b, a,
- raw: scanner.substring(start + 1, scanner.pos),
- start,
- end: scanner.pos
- };
- }
- else {
- // Consumed # but no actual value: invalid color value, treat it as literal
- return createLiteral(scanner, start);
- }
- }
- scanner.pos = start;
-}
-/**
- * Consumes alpha value of color: `.1`
- */
-function colorAlpha(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dot)) {
- scanner.start = start;
- if (scanner.eatWhile(isNumber$1)) {
- return scanner.current();
- }
- return '1';
- }
- return '';
-}
-/**
- * Consumes white space characters as string literal from given scanner
- */
-function whiteSpace(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(isSpace)) {
- return {
- type: 'WhiteSpace',
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes custom CSS property: --foo-bar
- */
-function customProperty(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dash) && scanner.eat(Chars$2.Dash)) {
- scanner.start = start;
- scanner.eatWhile(isKeyword);
- return {
- type: 'CustomProperty',
- value: scanner.current(),
- start,
- end: scanner.pos
- };
- }
- scanner.pos = start;
-}
-/**
- * Consumes bracket from given scanner
- */
-function bracket(scanner) {
- const ch = scanner.peek();
- if (isBracket$1(ch)) {
- return {
- type: 'Bracket',
- open: ch === Chars$2.RoundBracketOpen,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes operator from given scanner
- */
-function operator(scanner) {
- const op = operatorType(scanner.peek());
- if (op) {
- return {
- type: 'Operator',
- operator: op,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Eats number value from given stream
- * @return Returns `true` if number was consumed
- */
-function consumeNumber(stream) {
- const start = stream.pos;
- stream.eat(Chars$2.Dash);
- const afterNegative = stream.pos;
- const hasDecimal = stream.eatWhile(isNumber$1);
- const prevPos = stream.pos;
- if (stream.eat(Chars$2.Dot)) {
- // It’s perfectly valid to have numbers like `1.`, which enforces
- // value to float unit type
- const hasFloat = stream.eatWhile(isNumber$1);
- if (!hasDecimal && !hasFloat) {
- // Lone dot
- stream.pos = prevPos;
- }
- }
- // Edge case: consumed dash only: not a number, bail-out
- if (stream.pos === afterNegative) {
- stream.pos = start;
- }
- return stream.pos !== start;
-}
-function isIdentPrefix(code) {
- return code === Chars$2.At || code === Chars$2.Dollar;
-}
-/**
- * If given character is an operator, returns it’s type
- */
-function operatorType(ch) {
- return (ch === Chars$2.Sibling && OperatorType.Sibling)
- || (ch === Chars$2.Excl && OperatorType.Important)
- || (ch === Chars$2.Comma && OperatorType.ArgumentDelimiter)
- || (ch === Chars$2.Colon && OperatorType.PropertyDelimiter)
- || (ch === Chars$2.Dash && OperatorType.ValueDelimiter)
- || void 0;
-}
-/**
- * Check if given code is a hex value (/0-9a-f/)
- */
-function isHex(code) {
- return isNumber$1(code) || isAlpha$1(code, 65, 70); // A-F
-}
-function isKeyword(code) {
- return isAlphaNumericWord(code) || code === Chars$2.Dash;
-}
-function isBracket$1(code) {
- return code === Chars$2.RoundBracketOpen || code === Chars$2.RoundBracketClose;
-}
-function isLiteral$1(code) {
- return isAlphaWord(code) || code === Chars$2.Percent || code === Chars$2.Slash;
-}
-/**
- * Parses given color value from abbreviation into RGBA format
- */
-function parseColor(value, alpha) {
- let r = '0';
- let g = '0';
- let b = '0';
- let a = Number(alpha != null && alpha !== '' ? alpha : 1);
- if (value === 't') {
- a = 0;
- }
- else {
- switch (value.length) {
- case 0:
- break;
- case 1:
- r = g = b = value + value;
- break;
- case 2:
- r = g = b = value;
- break;
- case 3:
- r = value[0] + value[0];
- g = value[1] + value[1];
- b = value[2] + value[2];
- break;
- default:
- value += value;
- r = value.slice(0, 2);
- g = value.slice(2, 4);
- b = value.slice(4, 6);
- }
- }
- return {
- r: parseInt(r, 16),
- g: parseInt(g, 16),
- b: parseInt(b, 16),
- a
- };
-}
-/**
- * Check if scanner reader must consume dash after given token.
- * Used in cases where user must explicitly separate numeric values
- */
-function shouldConsumeDashAfter(token) {
- return token.type === 'ColorValue' || (token.type === 'NumberValue' && !token.unit);
-}
-/**
- * Merges last adjacent tokens into a single literal.
- * This function is used to overcome edge case when function name was parsed
- * as a list of separate tokens. For example, a `scale3d()` value will be
- * parsed as literal and number tokens (`scale` and `3d`) which is a perfectly
- * valid abbreviation but undesired result. This function will detect last adjacent
- * literal and number values and combine them into single literal
- */
-function mergeTokens(scanner, tokens) {
- let start = 0;
- let end = 0;
- while (tokens.length) {
- const token = last(tokens);
- if (token.type === 'Literal' || token.type === 'NumberValue') {
- start = token.start;
- if (!end) {
- end = token.end;
- }
- tokens.pop();
- }
- else {
- break;
- }
- }
- if (start !== end) {
- tokens.push(createLiteral(scanner, start, end));
- }
-}
-function last(arr) {
- return arr[arr.length - 1];
-}
-
-function tokenScanner(tokens) {
- return {
- tokens,
- start: 0,
- pos: 0,
- size: tokens.length
- };
-}
-function peek$2(scanner) {
- return scanner.tokens[scanner.pos];
-}
-function readable(scanner) {
- return scanner.pos < scanner.size;
-}
-function consume$1(scanner, test) {
- if (test(peek$2(scanner))) {
- scanner.pos++;
- return true;
- }
- return false;
-}
-function error(scanner, message, token = peek$2(scanner)) {
- if (token && token.start != null) {
- message += ` at ${token.start}`;
- }
- const err = new Error(message);
- err['pos'] = token && token.start;
- return err;
-}
-
-function parser(tokens, options = {}) {
- const scanner = tokenScanner(tokens);
- const result = [];
- let property;
- while (readable(scanner)) {
- if (property = consumeProperty(scanner, options)) {
- result.push(property);
- }
- else if (!consume$1(scanner, isSiblingOperator)) {
- throw error(scanner, 'Unexpected token');
- }
- }
- return result;
-}
-/**
- * Consumes single CSS property
- */
-function consumeProperty(scanner, options) {
- let name;
- let important = false;
- let valueFragment;
- const value = [];
- const token = peek$2(scanner);
- const valueMode = !!options.value;
- if (!valueMode && isLiteral(token) && !isFunctionStart(scanner)) {
- scanner.pos++;
- name = token.value;
- // Consume any following value delimiter after property name
- consume$1(scanner, isValueDelimiter);
- }
- // Skip whitespace right after property name, if any
- if (valueMode) {
- consume$1(scanner, isWhiteSpace$1);
- }
- while (readable(scanner)) {
- if (consume$1(scanner, isImportant)) {
- important = true;
- }
- else if (valueFragment = consumeValue(scanner, valueMode)) {
- value.push(valueFragment);
- }
- else if (!consume$1(scanner, isFragmentDelimiter)) {
- break;
- }
- }
- if (name || value.length || important) {
- return { name, value, important };
- }
-}
-/**
- * Consumes single value fragment, e.g. all value tokens before comma
- */
-function consumeValue(scanner, inArgument) {
- const result = [];
- let token;
- let args;
- while (readable(scanner)) {
- token = peek$2(scanner);
- if (isValue(token)) {
- scanner.pos++;
- if (isLiteral(token) && (args = consumeArguments(scanner))) {
- result.push({
- type: 'FunctionCall',
- name: token.value,
- arguments: args
- });
- }
- else {
- result.push(token);
- }
- }
- else if (isValueDelimiter(token) || (inArgument && isWhiteSpace$1(token))) {
- scanner.pos++;
- }
- else {
- break;
- }
- }
- return result.length
- ? { type: 'CSSValue', value: result }
- : void 0;
-}
-function consumeArguments(scanner) {
- const start = scanner.pos;
- if (consume$1(scanner, isOpenBracket$1)) {
- const args = [];
- let value;
- while (readable(scanner) && !consume$1(scanner, isCloseBracket$1)) {
- if (value = consumeValue(scanner, true)) {
- args.push(value);
- }
- else if (!consume$1(scanner, isWhiteSpace$1) && !consume$1(scanner, isArgumentDelimiter)) {
- throw error(scanner, 'Unexpected token');
- }
- }
- scanner.start = start;
- return args;
- }
-}
-function isLiteral(token) {
- return token && token.type === 'Literal';
-}
-function isBracket(token, open) {
- return token && token.type === 'Bracket' && (open == null || token.open === open);
-}
-function isOpenBracket$1(token) {
- return isBracket(token, true);
-}
-function isCloseBracket$1(token) {
- return isBracket(token, false);
-}
-function isWhiteSpace$1(token) {
- return token && token.type === 'WhiteSpace';
-}
-function isOperator(token, operator) {
- return token && token.type === 'Operator' && (!operator || token.operator === operator);
-}
-function isSiblingOperator(token) {
- return isOperator(token, OperatorType.Sibling);
-}
-function isArgumentDelimiter(token) {
- return isOperator(token, OperatorType.ArgumentDelimiter);
-}
-function isFragmentDelimiter(token) {
- return isArgumentDelimiter(token);
-}
-function isImportant(token) {
- return isOperator(token, OperatorType.Important);
-}
-function isValue(token) {
- return token.type === 'StringValue'
- || token.type === 'ColorValue'
- || token.type === 'NumberValue'
- || token.type === 'Literal'
- || token.type === 'Field'
- || token.type === 'CustomProperty';
-}
-function isValueDelimiter(token) {
- return isOperator(token, OperatorType.PropertyDelimiter)
- || isOperator(token, OperatorType.ValueDelimiter);
-}
-function isFunctionStart(scanner) {
- const t1 = scanner.tokens[scanner.pos];
- const t2 = scanner.tokens[scanner.pos + 1];
- return t1 && t2 && isLiteral(t1) && t2.type === 'Bracket';
-}
-
-/**
- * Parses given abbreviation into property set
- */
-function parse$2(abbr, options) {
- try {
- const tokens = typeof abbr === 'string' ? tokenize(abbr, options && options.value) : abbr;
- return parser(tokens, options);
- }
- catch (err) {
- if (err instanceof ScannerError && typeof abbr === 'string') {
- err.message += `\n${abbr}\n${'-'.repeat(err.pos)}^`;
- }
- throw err;
- }
-}
-
-/**
- * Merges attributes in current node: de-duplicates attributes with the same name
- * and merges class names
- */
-function mergeAttributes(node, config) {
- if (!node.attributes) {
- return;
- }
- const attributes = [];
- const lookup = {};
- for (const attr of node.attributes) {
- if (attr.name) {
- const attrName = attr.name;
- if (attrName in lookup) {
- const prev = lookup[attrName];
- if (attrName === 'class') {
- prev.value = mergeValue(prev.value, attr.value, ' ');
- }
- else {
- mergeDeclarations(prev, attr, config);
- }
- }
- else {
- // Create new attribute instance so we can safely modify it later
- attributes.push(lookup[attrName] = Object.assign({}, attr));
- }
- }
- else {
- attributes.push(attr);
- }
- }
- node.attributes = attributes;
-}
-/**
- * Merges two token lists into single list. Adjacent strings are merged together
- */
-function mergeValue(prev, next, glue) {
- if (prev && next) {
- if (prev.length && glue) {
- append(prev, glue);
- }
- for (const t of next) {
- append(prev, t);
- }
- return prev;
- }
- const result = prev || next;
- return result && result.slice();
-}
-/**
- * Merges data from `src` attribute into `dest` and returns it
- */
-function mergeDeclarations(dest, src, config) {
- dest.name = src.name;
- if (!config.options['output.reverseAttributes']) {
- dest.value = src.value;
- }
- // Keep high-priority properties
- if (!dest.implied) {
- dest.implied = src.implied;
- }
- if (!dest.boolean) {
- dest.boolean = src.boolean;
- }
- if (dest.valueType !== 'expression') {
- dest.valueType = src.valueType;
- }
- return dest;
-}
-function append(tokens, value) {
- const lastIx = tokens.length - 1;
- if (typeof tokens[lastIx] === 'string' && typeof value === 'string') {
- tokens[lastIx] += value;
- }
- else {
- tokens.push(value);
- }
-}
-
-/**
- * Walks over each child node of given markup abbreviation AST node (not including
- * given one) and invokes `fn` on each node.
- * The `fn` callback accepts context node, list of ancestor nodes and optional
- * state object
- */
-function walk$1(node, fn, state) {
- const ancestors = [node];
- const callback = (ctx) => {
- fn(ctx, ancestors, state);
- ancestors.push(ctx);
- ctx.children.forEach(callback);
- ancestors.pop();
- };
- node.children.forEach(callback);
-}
-/**
- * Finds node which is the deepest for in current node or node itself.
- */
-function findDeepest(node) {
- let parent;
- while (node.children.length) {
- parent = node;
- node = node.children[node.children.length - 1];
- }
- return { parent, node };
-}
-function isNode(node) {
- return node.type === 'AbbreviationNode';
-}
-
-/**
- * Finds matching snippet from `registry` and resolves it into a parsed abbreviation.
- * Resolved node is then updated or replaced with matched abbreviation tree.
- *
- * A HTML registry basically contains aliases to another Emmet abbreviations,
- * e.g. a predefined set of name, attributes and so on, possibly a complex
- * abbreviation with multiple elements. So we have to get snippet, parse it
- * and recursively resolve it.
- */
-function resolveSnippets(abbr, config) {
- const stack = [];
- const reversed = config.options['output.reverseAttributes'];
- const resolve = (child) => {
- const snippet = child.name && config.snippets[child.name];
- // A snippet in stack means circular reference.
- // It can be either a user error or a perfectly valid snippet like
- // "img": "img[src alt]/", e.g. an element with predefined shape.
- // In any case, simply stop parsing and keep element as is
- if (!snippet || stack.includes(snippet)) {
- return null;
- }
- const snippetAbbr = parseAbbreviation(snippet, config);
- stack.push(snippet);
- walkResolve(snippetAbbr, resolve);
- stack.pop();
- // Add attributes from current node into every top-level node of parsed abbreviation
- for (const topNode of snippetAbbr.children) {
- if (child.attributes) {
- const from = topNode.attributes || [];
- const to = child.attributes || [];
- topNode.attributes = reversed ? to.concat(from) : from.concat(to);
- }
- mergeNodes(child, topNode);
- }
- return snippetAbbr;
- };
- walkResolve(abbr, resolve);
- return abbr;
-}
-function walkResolve(node, resolve, config) {
- let children = [];
- for (const child of node.children) {
- const resolved = resolve(child);
- if (resolved) {
- children = children.concat(resolved.children);
- const deepest = findDeepest(resolved);
- if (isNode(deepest.node)) {
- deepest.node.children = deepest.node.children.concat(walkResolve(child, resolve));
- }
- }
- else {
- children.push(child);
- child.children = walkResolve(child, resolve);
- }
- }
- return node.children = children;
-}
-/**
- * Adds data from first node into second node
- */
-function mergeNodes(from, to) {
- if (from.selfClosing) {
- to.selfClosing = true;
- }
- if (from.value != null) {
- to.value = from.value;
- }
- if (from.repeat) {
- to.repeat = from.repeat;
- }
-}
-
-const expressionStart = '{';
-const expressionEnd = '}';
-function createOutputStream(options, level = 0) {
- return {
- options,
- value: '',
- level,
- offset: 0,
- line: 0,
- column: 0
- };
-}
-/**
- * Pushes plain string into output stream without newline processing
- */
-function push(stream, text) {
- const processText = stream.options['output.text'];
- _push(stream, processText(text, stream.offset, stream.line, stream.column));
-}
-/**
- * Pushes given string with possible newline formatting into output
- */
-function pushString(stream, value) {
- // If given value contains newlines, we should push content line-by-line and
- // use `pushNewline()` to maintain proper line/column state
- const lines = splitByLines$1(value);
- for (let i = 0, il = lines.length - 1; i <= il; i++) {
- push(stream, lines[i]);
- if (i !== il) {
- pushNewline(stream, true);
- }
- }
-}
-/**
- * Pushes new line into given output stream
- */
-function pushNewline(stream, indent) {
- const baseIndent = stream.options['output.baseIndent'];
- const newline = stream.options['output.newline'];
- push(stream, newline + baseIndent);
- stream.line++;
- stream.column = baseIndent.length;
- if (indent) {
- pushIndent(stream, indent === true ? stream.level : indent);
- }
-}
-/**
- * Adds indentation of `size` to current output stream
- */
-function pushIndent(stream, size = stream.level) {
- const indent = stream.options['output.indent'];
- push(stream, indent.repeat(Math.max(size, 0)));
-}
-/**
- * Pushes field/tabstop into output stream
- */
-function pushField(stream, index, placeholder) {
- const field = stream.options['output.field'];
- // NB: use `_push` instead of `push` to skip text processing
- _push(stream, field(index, placeholder, stream.offset, stream.line, stream.column));
-}
-/**
- * Returns given tag name formatted according to given config
- */
-function tagName(name, config) {
- return strCase(name, config.options['output.tagCase']);
-}
-/**
- * Returns given attribute name formatted according to given config
- */
-function attrName(name, config) {
- return strCase(name, config.options['output.attributeCase']);
-}
-/**
- * Returns character for quoting value of given attribute
- */
-function attrQuote(attr, config, isOpen) {
- if (attr.valueType === 'expression') {
- return isOpen ? expressionStart : expressionEnd;
- }
- return config.options['output.attributeQuotes'] === 'single' ? '\'' : '"';
-}
-/**
- * Check if given attribute is boolean
- */
-function isBooleanAttribute(attr, config) {
- return attr.boolean
- || config.options['output.booleanAttributes'].includes((attr.name || '').toLowerCase());
-}
-/**
- * Returns a token for self-closing tag, depending on current options
- */
-function selfClose(config) {
- switch (config.options['output.selfClosingStyle']) {
- case 'xhtml': return ' /';
- case 'xml': return '/';
- default: return '';
- }
-}
-/**
- * Check if given tag name belongs to inline-level element
- * @param node Parsed node or tag name
- */
-function isInline(node, config) {
- if (typeof node === 'string') {
- return config.options.inlineElements.includes(node.toLowerCase());
- }
- // inline node is a node either with inline-level name or text-only node
- return node.name ? isInline(node.name, config) : Boolean(node.value && !node.attributes);
-}
-/**
- * Splits given text by lines
- */
-function splitByLines$1(text) {
- return text.split(/\r\n|\r|\n/g);
-}
-/**
- * Pushes raw string into output stream without any processing
- */
-function _push(stream, text) {
- stream.value += text;
- stream.offset += text.length;
- stream.column += text.length;
-}
-function strCase(str, type) {
- if (type) {
- return type === 'upper' ? str.toUpperCase() : str.toLowerCase();
- }
- return str;
-}
-
-const elementMap = {
- p: 'span',
- ul: 'li',
- ol: 'li',
- table: 'tr',
- tr: 'td',
- tbody: 'tr',
- thead: 'tr',
- tfoot: 'tr',
- colgroup: 'col',
- select: 'option',
- optgroup: 'option',
- audio: 'source',
- video: 'source',
- object: 'param',
- map: 'area'
-};
-function implicitTag(node, ancestors, config) {
- if (!node.name && node.attributes) {
- resolveImplicitTag(node, ancestors, config);
- }
-}
-function resolveImplicitTag(node, ancestors, config) {
- const parent = getParentElement(ancestors);
- const contextName = config.context ? config.context.name : '';
- const parentName = lowercase(parent ? parent.name : contextName);
- node.name = elementMap[parentName]
- || (isInline(parentName, config) ? 'span' : 'div');
-}
-function lowercase(str) {
- return (str || '').toLowerCase();
-}
-/**
- * Returns closest element node from given ancestors list
- */
-function getParentElement(ancestors) {
- for (let i = ancestors.length - 1; i >= 0; i--) {
- const elem = ancestors[i];
- if (isNode(elem)) {
- return elem;
- }
- }
-}
-
-var latin = {
- "common": ["lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipisicing", "elit"],
- "words": ["exercitationem", "perferendis", "perspiciatis", "laborum", "eveniet",
- "sunt", "iure", "nam", "nobis", "eum", "cum", "officiis", "excepturi",
- "odio", "consectetur", "quasi", "aut", "quisquam", "vel", "eligendi",
- "itaque", "non", "odit", "tempore", "quaerat", "dignissimos",
- "facilis", "neque", "nihil", "expedita", "vitae", "vero", "ipsum",
- "nisi", "animi", "cumque", "pariatur", "velit", "modi", "natus",
- "iusto", "eaque", "sequi", "illo", "sed", "ex", "et", "voluptatibus",
- "tempora", "veritatis", "ratione", "assumenda", "incidunt", "nostrum",
- "placeat", "aliquid", "fuga", "provident", "praesentium", "rem",
- "necessitatibus", "suscipit", "adipisci", "quidem", "possimus",
- "voluptas", "debitis", "sint", "accusantium", "unde", "sapiente",
- "voluptate", "qui", "aspernatur", "laudantium", "soluta", "amet",
- "quo", "aliquam", "saepe", "culpa", "libero", "ipsa", "dicta",
- "reiciendis", "nesciunt", "doloribus", "autem", "impedit", "minima",
- "maiores", "repudiandae", "ipsam", "obcaecati", "ullam", "enim",
- "totam", "delectus", "ducimus", "quis", "voluptates", "dolores",
- "molestiae", "harum", "dolorem", "quia", "voluptatem", "molestias",
- "magni", "distinctio", "omnis", "illum", "dolorum", "voluptatum", "ea",
- "quas", "quam", "corporis", "quae", "blanditiis", "atque", "deserunt",
- "laboriosam", "earum", "consequuntur", "hic", "cupiditate",
- "quibusdam", "accusamus", "ut", "rerum", "error", "minus", "eius",
- "ab", "ad", "nemo", "fugit", "officia", "at", "in", "id", "quos",
- "reprehenderit", "numquam", "iste", "fugiat", "sit", "inventore",
- "beatae", "repellendus", "magnam", "recusandae", "quod", "explicabo",
- "doloremque", "aperiam", "consequatur", "asperiores", "commodi",
- "optio", "dolor", "labore", "temporibus", "repellat", "veniam",
- "architecto", "est", "esse", "mollitia", "nulla", "a", "similique",
- "eos", "alias", "dolore", "tenetur", "deleniti", "porro", "facere",
- "maxime", "corrupti"]
-};
-
-var ru = {
- "common": ["далеко-далеко", "за", "словесными", "горами", "в стране", "гласных", "и согласных", "живут", "рыбные", "тексты"],
- "words": ["вдали", "от всех", "они", "буквенных", "домах", "на берегу", "семантика",
- "большого", "языкового", "океана", "маленький", "ручеек", "даль",
- "журчит", "по всей", "обеспечивает", "ее","всеми", "необходимыми",
- "правилами", "эта", "парадигматическая", "страна", "которой", "жаренные",
- "предложения", "залетают", "прямо", "рот", "даже", "всемогущая",
- "пунктуация", "не", "имеет", "власти", "над", "рыбными", "текстами",
- "ведущими", "безорфографичный", "образ", "жизни", "однажды", "одна",
- "маленькая", "строчка","рыбного", "текста", "имени", "lorem", "ipsum",
- "решила", "выйти", "большой", "мир", "грамматики", "великий", "оксмокс",
- "предупреждал", "о", "злых", "запятых", "диких", "знаках", "вопроса",
- "коварных", "точках", "запятой", "но", "текст", "дал", "сбить",
- "себя", "толку", "он", "собрал", "семь", "своих", "заглавных", "букв",
- "подпоясал", "инициал", "за", "пояс", "пустился", "дорогу",
- "взобравшись", "первую", "вершину", "курсивных", "гор", "бросил",
- "последний", "взгляд", "назад", "силуэт", "своего", "родного", "города",
- "буквоград", "заголовок", "деревни", "алфавит", "подзаголовок", "своего",
- "переулка", "грустный", "реторический", "вопрос", "скатился", "его",
- "щеке", "продолжил", "свой", "путь", "дороге", "встретил", "рукопись",
- "она", "предупредила", "моей", "все", "переписывается", "несколько",
- "раз", "единственное", "что", "меня", "осталось", "это", "приставка",
- "возвращайся", "ты", "лучше", "свою", "безопасную", "страну", "послушавшись",
- "рукописи", "наш", "продолжил", "свой", "путь", "вскоре", "ему",
- "повстречался", "коварный", "составитель", "рекламных", "текстов",
- "напоивший", "языком", "речью", "заманивший", "свое", "агентство",
- "которое", "использовало", "снова", "снова", "своих", "проектах",
- "если", "переписали", "то", "живет", "там", "до", "сих", "пор"]
-};
-
-var sp = {
- "common": ["mujer", "uno", "dolor", "más", "de", "poder", "mismo", "si"],
- "words": ["ejercicio", "preferencia", "perspicacia", "laboral", "paño",
- "suntuoso", "molde", "namibia", "planeador", "mirar", "demás", "oficinista", "excepción",
- "odio", "consecuencia", "casi", "auto", "chicharra", "velo", "elixir",
- "ataque", "no", "odio", "temporal", "cuórum", "dignísimo",
- "facilismo", "letra", "nihilista", "expedición", "alma", "alveolar", "aparte",
- "león", "animal", "como", "paria", "belleza", "modo", "natividad",
- "justo", "ataque", "séquito", "pillo", "sed", "ex", "y", "voluminoso",
- "temporalidad", "verdades", "racional", "asunción", "incidente", "marejada",
- "placenta", "amanecer", "fuga", "previsor", "presentación", "lejos",
- "necesariamente", "sospechoso", "adiposidad", "quindío", "pócima",
- "voluble", "débito", "sintió", "accesorio", "falda", "sapiencia",
- "volutas", "queso", "permacultura", "laudo", "soluciones", "entero",
- "pan", "litro", "tonelada", "culpa", "libertario", "mosca", "dictado",
- "reincidente", "nascimiento", "dolor", "escolar", "impedimento", "mínima",
- "mayores", "repugnante", "dulce", "obcecado", "montaña", "enigma",
- "total", "deletéreo", "décima", "cábala", "fotografía", "dolores",
- "molesto", "olvido", "paciencia", "resiliencia", "voluntad", "molestias",
- "magnífico", "distinción", "ovni", "marejada", "cerro", "torre", "y",
- "abogada", "manantial", "corporal", "agua", "crepúsculo", "ataque", "desierto",
- "laboriosamente", "angustia", "afortunado", "alma", "encefalograma",
- "materialidad", "cosas", "o", "renuncia", "error", "menos", "conejo",
- "abadía", "analfabeto", "remo", "fugacidad", "oficio", "en", "almácigo", "vos", "pan",
- "represión", "números", "triste", "refugiado", "trote", "inventor",
- "corchea", "repelente", "magma", "recusado", "patrón", "explícito",
- "paloma", "síndrome", "inmune", "autoinmune", "comodidad",
- "ley", "vietnamita", "demonio", "tasmania", "repeler", "apéndice",
- "arquitecto", "columna", "yugo", "computador", "mula", "a", "propósito",
- "fantasía", "alias", "rayo", "tenedor", "deleznable", "ventana", "cara",
- "anemia", "corrupto"]
-};
-
-const vocabularies = { ru, sp, latin };
-const reLorem = /^lorem([a-z]*)(\d*)(-\d*)?$/i;
-function lorem(node, ancestors, config) {
- let m;
- if (node.name && (m = node.name.match(reLorem))) {
- const db = vocabularies[m[1]] || vocabularies.latin;
- const minWordCount = m[2] ? Math.max(1, Number(m[2])) : 30;
- const maxWordCount = m[3] ? Math.max(minWordCount, Number(m[3].slice(1))) : minWordCount;
- const wordCount = rand(minWordCount, maxWordCount);
- const repeat = node.repeat || findRepeater(ancestors);
- node.name = node.attributes = void 0;
- node.value = [paragraph(db, wordCount, !repeat || repeat.value === 0)];
- if (node.repeat && ancestors.length > 1) {
- resolveImplicitTag(node, ancestors, config);
- }
- }
-}
-/**
- * Returns random integer between from
and to
values
- */
-function rand(from, to) {
- return Math.floor(Math.random() * (to - from) + from);
-}
-function sample(arr, count) {
- const len = arr.length;
- const iterations = Math.min(len, count);
- const result = [];
- while (result.length < iterations) {
- const str = arr[rand(0, len)];
- if (!result.includes(str)) {
- result.push(str);
- }
- }
- return result;
-}
-function choice(val) {
- return val[rand(0, val.length - 1)];
-}
-function sentence(words, end) {
- if (words.length) {
- words = [capitalize(words[0])].concat(words.slice(1));
- }
- return words.join(' ') + (end || choice('?!...')); // more dots than question marks
-}
-function capitalize(word) {
- return word[0].toUpperCase() + word.slice(1);
-}
-/**
- * Insert commas at randomly selected words. This function modifies values
- * inside `words` array
- */
-function insertCommas(words) {
- if (words.length < 2) {
- return words;
- }
- words = words.slice();
- const len = words.length;
- const hasComma = /,$/;
- let totalCommas = 0;
- if (len > 3 && len <= 6) {
- totalCommas = rand(0, 1);
- }
- else if (len > 6 && len <= 12) {
- totalCommas = rand(0, 2);
- }
- else {
- totalCommas = rand(1, 4);
- }
- for (let i = 0, pos; i < totalCommas; i++) {
- pos = rand(0, len - 2);
- if (!hasComma.test(words[pos])) {
- words[pos] += ',';
- }
- }
- return words;
-}
-/**
- * Generate a paragraph of "Lorem ipsum" text
- * @param dict Words dictionary
- * @param wordCount Words count in paragraph
- * @param startWithCommon Should paragraph start with common "lorem ipsum" sentence.
- */
-function paragraph(dict, wordCount, startWithCommon) {
- const result = [];
- let totalWords = 0;
- let words;
- if (startWithCommon && dict.common) {
- words = dict.common.slice(0, wordCount);
- totalWords += words.length;
- result.push(sentence(insertCommas(words), '.'));
- }
- while (totalWords < wordCount) {
- words = sample(dict.words, Math.min(rand(2, 30), wordCount - totalWords));
- totalWords += words.length;
- result.push(sentence(insertCommas(words)));
- }
- return result.join(' ');
-}
-function findRepeater(ancestors) {
- for (let i = ancestors.length - 1; i >= 0; i--) {
- const element = ancestors[i];
- if (element.type === 'AbbreviationNode' && element.repeat) {
- return element.repeat;
- }
- }
-}
-
-/**
- * XSL transformer: removes `select` attributes from certain nodes that contain
- * children
- */
-function xsl(node) {
- if (matchesName(node.name) && node.attributes && (node.children.length || node.value)) {
- node.attributes = node.attributes.filter(isAllowed);
- }
-}
-function isAllowed(attr) {
- return attr.name !== 'select';
-}
-function matchesName(name) {
- return name === 'xsl:variable' || name === 'xsl:with-param';
-}
-
-const reElement = /^(-+)([a-z0-9]+[a-z0-9-]*)/i;
-const reModifier = /^(_+)([a-z0-9]+[a-z0-9-_]*)/i;
-const blockCandidates1 = (className) => /^[a-z]\-/i.test(className);
-const blockCandidates2 = (className) => /^[a-z]/i.test(className);
-function bem(node, ancestors, config) {
- expandClassNames(node);
- expandShortNotation(node, ancestors, config);
-}
-/**
- * Expands existing class names in BEM notation in given `node`.
- * For example, if node contains `b__el_mod` class name, this method ensures
- * that element contains `b__el` class as well
- */
-function expandClassNames(node) {
- const data = getBEMData(node);
- const classNames = [];
- for (const cl of data.classNames) {
- // remove all modifiers and element prefixes from class name to get a base element name
- const ix = cl.indexOf('_');
- if (ix > 0 && !cl.startsWith('-')) {
- classNames.push(cl.slice(0, ix));
- classNames.push(cl.slice(ix));
- }
- else {
- classNames.push(cl);
- }
- }
- if (classNames.length) {
- data.classNames = classNames.filter(uniqueClass);
- data.block = findBlockName(data.classNames);
- updateClass(node, data.classNames.join(' '));
- }
-}
-/**
- * Expands short BEM notation, e.g. `-element` and `_modifier`
- */
-function expandShortNotation(node, ancestors, config) {
- const data = getBEMData(node);
- const classNames = [];
- const { options } = config;
- const path = ancestors.slice(1).concat(node);
- for (let cl of data.classNames) {
- let prefix = '';
- let m;
- const originalClass = cl;
- // parse element definition (could be only one)
- if (m = cl.match(reElement)) {
- prefix = getBlockName(path, m[1].length, config.context) + options['bem.element'] + m[2];
- classNames.push(prefix);
- cl = cl.slice(m[0].length);
- }
- // parse modifiers definitions
- if (m = cl.match(reModifier)) {
- if (!prefix) {
- prefix = getBlockName(path, m[1].length);
- classNames.push(prefix);
- }
- classNames.push(`${prefix}${options['bem.modifier']}${m[2]}`);
- cl = cl.slice(m[0].length);
- }
- if (cl === originalClass) {
- // class name wasn’t modified: it’s not a BEM-specific class,
- // add it as-is into output
- classNames.push(originalClass);
- }
- }
- const arrClassNames = classNames.filter(uniqueClass);
- if (arrClassNames.length) {
- updateClass(node, arrClassNames.join(' '));
- }
-}
-/**
- * Returns BEM data from given abbreviation node
- */
-function getBEMData(node) {
- if (!node._bem) {
- let classValue = '';
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (attr.name === 'class' && attr.value) {
- classValue = stringifyValue(attr.value);
- break;
- }
- }
- }
- node._bem = parseBEM(classValue);
- }
- return node._bem;
-}
-function getBEMDataFromContext(context) {
- if (!context._bem) {
- context._bem = parseBEM(context.attributes && context.attributes.class || '');
- }
- return context._bem;
-}
-/**
- * Parses BEM data from given class name
- */
-function parseBEM(classValue) {
- const classNames = classValue ? classValue.split(/\s+/) : [];
- return {
- classNames,
- block: findBlockName(classNames)
- };
-}
-/**
- * Returns block name for given `node` by `prefix`, which tells the depth of
- * of parent node lookup
- */
-function getBlockName(ancestors, depth = 0, context) {
- const maxParentIx = 0;
- let parentIx = Math.max(ancestors.length - depth, maxParentIx);
- do {
- const parent = ancestors[parentIx];
- if (parent) {
- const data = getBEMData(parent);
- if (data.block) {
- return data.block;
- }
- }
- } while (maxParentIx < parentIx--);
- if (context) {
- const data = getBEMDataFromContext(context);
- if (data.block) {
- return data.block;
- }
- }
- return '';
-}
-function findBlockName(classNames) {
- return find(classNames, blockCandidates1)
- || find(classNames, blockCandidates2)
- || void 0;
-}
-/**
- * Finds class name from given list which may be used as block name
- */
-function find(classNames, filter) {
- for (const cl of classNames) {
- if (reElement.test(cl) || reModifier.test(cl)) {
- break;
- }
- if (filter(cl)) {
- return cl;
- }
- }
-}
-function updateClass(node, value) {
- for (const attr of node.attributes) {
- if (attr.name === 'class') {
- attr.value = [value];
- break;
- }
- }
-}
-function stringifyValue(value) {
- let result = '';
- for (const t of value) {
- result += typeof t === 'string' ? t : t.name;
- }
- return result;
-}
-function uniqueClass(item, ix, arr) {
- return !!item && arr.indexOf(item) === ix;
-}
-
-function walk(abbr, visitor, state) {
- const callback = (ctx, index, items) => {
- const { parent, current } = state;
- state.parent = current;
- state.current = ctx;
- visitor(ctx, index, items, state, next);
- state.current = current;
- state.parent = parent;
- };
- const next = (node, index, items) => {
- state.ancestors.push(state.current);
- callback(node, index, items);
- state.ancestors.pop();
- };
- abbr.children.forEach(callback);
-}
-function createWalkState(config) {
- return {
- // @ts-ignore: Will set value in iterator
- current: null,
- parent: void 0,
- ancestors: [],
- config,
- field: 1,
- out: createOutputStream(config.options)
- };
-}
-
-const caret = [{ type: 'Field', index: 0, name: '' }];
-/**
- * Check if given node is a snippet: a node without name and attributes
- */
-function isSnippet(node) {
- return node ? !node.name && !node.attributes : false;
-}
-/**
- * Check if given node is inline-level element, e.g. element with explicitly
- * defined node name
- */
-function isInlineElement(node, config) {
- return node ? isInline(node, config) : false;
-}
-/**
- * Check if given value token is a field
- */
-function isField(token) {
- return typeof token === 'object' && token.type === 'Field';
-}
-function pushTokens(tokens, state) {
- const { out } = state;
- let largestIndex = -1;
- for (const t of tokens) {
- if (typeof t === 'string') {
- pushString(out, t);
- }
- else {
- pushField(out, state.field + t.index, t.name);
- if (t.index > largestIndex) {
- largestIndex = t.index;
- }
- }
- }
- if (largestIndex !== -1) {
- state.field += largestIndex + 1;
- }
-}
-/**
- * Splits given value token by lines: returns array where each entry is a token list
- * for a single line
- */
-function splitByLines(tokens) {
- const result = [];
- let line = [];
- for (const t of tokens) {
- if (typeof t === 'string') {
- const lines = t.split(/\r\n?|\n/g);
- line.push(lines.shift() || '');
- while (lines.length) {
- result.push(line);
- line = [lines.shift() || ''];
- }
- }
- else {
- line.push(t);
- }
- }
- line.length && result.push(line);
- return result;
-}
-/**
- * Check if given attribute should be outputted
- */
-function shouldOutputAttribute(attr) {
- // In case if attribute is implied, check if it has a defined value:
- // either non-empty value or quoted empty value
- return !attr.implied || attr.valueType !== 'raw' || (!!attr.value && attr.value.length > 0);
-}
-
-var TemplateChars;
-(function (TemplateChars) {
- /** `[` character */
- TemplateChars[TemplateChars["Start"] = 91] = "Start";
- /** `]` character */
- TemplateChars[TemplateChars["End"] = 93] = "End";
- /* `_` character */
- TemplateChars[TemplateChars["Underscore"] = 95] = "Underscore";
- /* `-` character */
- TemplateChars[TemplateChars["Dash"] = 45] = "Dash";
-})(TemplateChars || (TemplateChars = {}));
-/**
- * Splits given string into template tokens.
- * Template is a string which contains placeholders which are uppercase names
- * between `[` and `]`, for example: `[PLACEHOLDER]`.
- * Unlike other templates, a placeholder may contain extra characters before and
- * after name: `[%PLACEHOLDER.]`. If data for `PLACEHOLDER` is defined, it will
- * be outputted with with these extra character, otherwise will be completely omitted.
- */
-function template(text) {
- const tokens = [];
- const scanner = { pos: 0, text };
- let placeholder;
- let offset = scanner.pos;
- let pos = scanner.pos;
- while (scanner.pos < scanner.text.length) {
- pos = scanner.pos;
- if (placeholder = consumePlaceholder(scanner)) {
- if (offset !== scanner.pos) {
- tokens.push(text.slice(offset, pos));
- }
- tokens.push(placeholder);
- offset = scanner.pos;
- }
- else {
- scanner.pos++;
- }
- }
- if (offset !== scanner.pos) {
- tokens.push(text.slice(offset));
- }
- return tokens;
-}
-/**
- * Consumes placeholder like `[#ID]` from given scanner
- */
-function consumePlaceholder(scanner) {
- if (peek$1(scanner) === TemplateChars.Start) {
- const start = ++scanner.pos;
- let namePos = start;
- let afterPos = start;
- let stack = 1;
- while (scanner.pos < scanner.text.length) {
- const code = peek$1(scanner);
- if (isTokenStart(code)) {
- namePos = scanner.pos;
- while (isToken(peek$1(scanner))) {
- scanner.pos++;
- }
- afterPos = scanner.pos;
- }
- else {
- if (code === TemplateChars.Start) {
- stack++;
- }
- else if (code === TemplateChars.End) {
- if (--stack === 0) {
- return {
- before: scanner.text.slice(start, namePos),
- after: scanner.text.slice(afterPos, scanner.pos++),
- name: scanner.text.slice(namePos, afterPos)
- };
- }
- }
- scanner.pos++;
- }
- }
- }
-}
-function peek$1(scanner, pos = scanner.pos) {
- return scanner.text.charCodeAt(pos);
-}
-function isTokenStart(code) {
- return code >= 65 && code <= 90; // A-Z
-}
-function isToken(code) {
- return isTokenStart(code)
- || (code > 47 && code < 58) /* 0-9 */
- || code === TemplateChars.Underscore
- || code === TemplateChars.Dash;
-}
-
-function createCommentState(config) {
- const { options } = config;
- return {
- enabled: options['comment.enabled'],
- trigger: options['comment.trigger'],
- before: options['comment.before'] ? template(options['comment.before']) : void 0,
- after: options['comment.after'] ? template(options['comment.after']) : void 0
- };
-}
-/**
- * Adds comment prefix for given node, if required
- */
-function commentNodeBefore(node, state) {
- if (shouldComment(node, state) && state.comment.before) {
- output(node, state.comment.before, state);
- }
-}
-/**
- * Adds comment suffix for given node, if required
- */
-function commentNodeAfter(node, state) {
- if (shouldComment(node, state) && state.comment.after) {
- output(node, state.comment.after, state);
- }
-}
-/**
- * Check if given node should be commented
- */
-function shouldComment(node, state) {
- const { comment } = state;
- if (!comment.enabled || !comment.trigger || !node.name || !node.attributes) {
- return false;
- }
- for (const attr of node.attributes) {
- if (attr.name && comment.trigger.includes(attr.name)) {
- return true;
- }
- }
- return false;
-}
-/**
- * Pushes given template tokens into output stream
- */
-function output(node, tokens, state) {
- const attrs = {};
- const { out } = state;
- // Collect attributes payload
- for (const attr of node.attributes) {
- if (attr.name && attr.value) {
- attrs[attr.name.toUpperCase()] = attr.value;
- }
- }
- // Output parsed tokens
- for (const token of tokens) {
- if (typeof token === 'string') {
- pushString(out, token);
- }
- else if (attrs[token.name]) {
- pushString(out, token.before);
- pushTokens(attrs[token.name], state);
- pushString(out, token.after);
- }
- }
-}
-
-const htmlTagRegex = /^<([\w\-:]+)[\s>]/;
-const reservedKeywords = new Set([
- 'for', 'while', 'of', 'async', 'await', 'const', 'let', 'var', 'continue',
- 'break', 'debugger', 'do', 'export', 'import', 'in', 'instanceof', 'new', 'return',
- 'switch', 'this', 'throw', 'try', 'catch', 'typeof', 'void', 'with', 'yield'
-]);
-function html(abbr, config) {
- const state = createWalkState(config);
- state.comment = createCommentState(config);
- walk(abbr, element$1, state);
- return state.out.value;
-}
-/**
- * Outputs `node` content to output stream of `state`
- * @param node Context node
- * @param index Index of `node` in `items`
- * @param items List of `node`’s siblings
- * @param state Current walk state
- */
-function element$1(node, index, items, state, next) {
- const { out, config } = state;
- const format = shouldFormat$1(node, index, items, state);
- // Pick offset level for current node
- const level = getIndent(state);
- out.level += level;
- format && pushNewline(out, true);
- if (node.name) {
- const name = tagName(node.name, config);
- commentNodeBefore(node, state);
- pushString(out, `<${name}`);
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (shouldOutputAttribute(attr)) {
- pushAttribute(attr, state);
- }
- }
- }
- if (node.selfClosing && !node.children.length && !node.value) {
- pushString(out, `${selfClose(config)}>`);
- }
- else {
- pushString(out, '>');
- if (!pushSnippet(node, state, next)) {
- if (node.value) {
- const innerFormat = node.value.some(hasNewline) || startsWithBlockTag(node.value, config);
- innerFormat && pushNewline(state.out, ++out.level);
- pushTokens(node.value, state);
- innerFormat && pushNewline(state.out, --out.level);
- }
- node.children.forEach(next);
- if (!node.value && !node.children.length) {
- const innerFormat = config.options['output.formatLeafNode']
- || config.options['output.formatForce'].includes(node.name);
- innerFormat && pushNewline(state.out, ++out.level);
- pushTokens(caret, state);
- innerFormat && pushNewline(state.out, --out.level);
- }
- }
- pushString(out, `${name}>`);
- commentNodeAfter(node, state);
- }
- }
- else if (!pushSnippet(node, state, next) && node.value) {
- // A text-only node (snippet)
- pushTokens(node.value, state);
- node.children.forEach(next);
- }
- if (format && index === items.length - 1 && state.parent) {
- const offset = isSnippet(state.parent) ? 0 : 1;
- pushNewline(out, out.level - offset);
- }
- out.level -= level;
-}
-/**
- * Outputs given attribute’s content into output stream
- */
-function pushAttribute(attr, state) {
- const { out, config } = state;
- if (attr.name) {
- const attributes = config.options['markup.attributes'];
- const valuePrefix = config.options['markup.valuePrefix'];
- let { name, value } = attr;
- let lQuote = attrQuote(attr, config, true);
- let rQuote = attrQuote(attr, config);
- if (attributes) {
- name = getMultiValue(name, attributes, attr.multiple) || name;
- }
- name = attrName(name, config);
- if (config.options['jsx.enabled'] && attr.multiple) {
- lQuote = expressionStart;
- rQuote = expressionEnd;
- }
- const prefix = valuePrefix
- ? getMultiValue(attr.name, valuePrefix, attr.multiple)
- : null;
- if (prefix && (value === null || value === void 0 ? void 0 : value.length) === 1 && typeof value[0] === 'string') {
- // Add given prefix in object notation
- const val = value[0];
- value = [isPropKey(val) ? `${prefix}.${val}` : `${prefix}['${val}']`];
- if (config.options['jsx.enabled']) {
- lQuote = expressionStart;
- rQuote = expressionEnd;
- }
- }
- if (isBooleanAttribute(attr, config) && !value) {
- // If attribute value is omitted and it’s a boolean value, check for
- // `compactBoolean` option: if it’s disabled, set value to attribute name
- // (XML style)
- if (!config.options['output.compactBoolean']) {
- value = [name];
- }
- }
- else if (!value) {
- value = caret;
- }
- pushString(out, ' ' + name);
- if (value) {
- pushString(out, '=' + lQuote);
- pushTokens(value, state);
- pushString(out, rQuote);
- }
- else if (config.options['output.selfClosingStyle'] !== 'html') {
- pushString(out, '=' + lQuote + rQuote);
- }
- }
-}
-function pushSnippet(node, state, next) {
- if (node.value && node.children.length) {
- // We have a value and child nodes. In case if value contains fields,
- // we should output children as a content of first field
- const fieldIx = node.value.findIndex(isField);
- if (fieldIx !== -1) {
- pushTokens(node.value.slice(0, fieldIx), state);
- const line = state.out.line;
- let pos = fieldIx + 1;
- node.children.forEach(next);
- // If there was a line change, trim leading whitespace for better result
- if (state.out.line !== line && typeof node.value[pos] === 'string') {
- pushString(state.out, node.value[pos++].trimLeft());
- }
- pushTokens(node.value.slice(pos), state);
- return true;
- }
- }
- return false;
-}
-/**
- * Check if given node should be formatted in its parent context
- */
-function shouldFormat$1(node, index, items, state) {
- const { config, parent } = state;
- if (!config.options['output.format']) {
- return false;
- }
- if (index === 0 && !parent) {
- // Do not format very first node
- return false;
- }
- // Do not format single child of snippet
- if (parent && isSnippet(parent) && items.length === 1) {
- return false;
- }
- /**
- * Adjacent text-only/snippet nodes
- */
- if (isSnippet(node)) {
- // Adjacent text-only/snippet nodes
- const format = isSnippet(items[index - 1]) || isSnippet(items[index + 1])
- // Has newlines: looks like wrapping code fragment
- || node.value.some(hasNewline)
- // Format as wrapper: contains children which will be outputted as field content
- || (node.value.some(isField) && node.children.length);
- if (format) {
- return true;
- }
- }
- if (isInline(node, config)) {
- // Check if inline node is the next sibling of block-level node
- if (index === 0) {
- // First node in parent: format if it’s followed by a block-level element
- for (let i = 0; i < items.length; i++) {
- if (!isInline(items[i], config)) {
- return true;
- }
- }
- }
- else if (!isInline(items[index - 1], config)) {
- // Node is right after block-level element
- return true;
- }
- if (config.options['output.inlineBreak']) {
- // check for adjacent inline elements before and after current element
- let adjacentInline = 1;
- let before = index;
- let after = index;
- while (isInlineElement(items[--before], config)) {
- adjacentInline++;
- }
- while (isInlineElement(items[++after], config)) {
- adjacentInline++;
- }
- if (adjacentInline >= config.options['output.inlineBreak']) {
- return true;
- }
- }
- // Edge case: inline node contains node that should receive formatting
- for (let i = 0, il = node.children.length; i < il; i++) {
- if (shouldFormat$1(node.children[i], i, node.children, state)) {
- return true;
- }
- }
- return false;
- }
- return true;
-}
-/**
- * Returns indentation offset for given node
- */
-function getIndent(state) {
- const { config, parent } = state;
- if (!parent || isSnippet(parent) || (parent.name && config.options['output.formatSkip'].includes(parent.name))) {
- return 0;
- }
- return 1;
-}
-/**
- * Check if given node value contains newlines
- */
-function hasNewline(value) {
- return typeof value === 'string' && /\r|\n/.test(value);
-}
-/**
- * Check if given node value starts with block-level tag
- */
-function startsWithBlockTag(value, config) {
- if (value.length && typeof value[0] === 'string') {
- const matches = htmlTagRegex.exec(value[0]);
- if ((matches === null || matches === void 0 ? void 0 : matches.length) && !config.options['inlineElements'].includes(matches[1].toLowerCase())) {
- return true;
- }
- }
- return false;
-}
-function getMultiValue(key, data, multiple) {
- return (multiple && data[`${key}*`]) || data[key];
-}
-function isPropKey(name) {
- return !reservedKeywords.has(name) && /^[a-zA-Z_$][\w_$]*$/.test(name);
-}
-
-function indentFormat(abbr, config, options) {
- const state = createWalkState(config);
- state.options = options || {};
- walk(abbr, element, state);
- return state.out.value;
-}
-/**
- * Outputs `node` content to output stream of `state`
- * @param node Context node
- * @param index Index of `node` in `items`
- * @param items List of `node`’s siblings
- * @param state Current walk state
- */
-function element(node, index, items, state, next) {
- const { out, options } = state;
- const { primary, secondary } = collectAttributes(node);
- // Pick offset level for current node
- const level = state.parent ? 1 : 0;
- out.level += level;
- // Do not indent top-level elements
- if (shouldFormat(node, index, items, state)) {
- pushNewline(out, true);
- }
- if (node.name && (node.name !== 'div' || !primary.length)) {
- pushString(out, (options.beforeName || '') + node.name + (options.afterName || ''));
- }
- pushPrimaryAttributes(primary, state);
- pushSecondaryAttributes(secondary.filter(shouldOutputAttribute), state);
- if (node.selfClosing && !node.value && !node.children.length) {
- if (state.options.selfClose) {
- pushString(out, state.options.selfClose);
- }
- }
- else {
- pushValue(node, state);
- node.children.forEach(next);
- }
- out.level -= level;
-}
-/**
- * From given node, collects all attributes as `primary` (id, class) and
- * `secondary` (all the rest) lists. In most indent-based syntaxes, primary attribute
- * has special syntax
- */
-function collectAttributes(node) {
- const primary = [];
- const secondary = [];
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (isPrimaryAttribute(attr)) {
- primary.push(attr);
- }
- else {
- secondary.push(attr);
- }
- }
- }
- return { primary, secondary };
-}
-/**
- * Outputs given attributes as primary into output stream
- */
-function pushPrimaryAttributes(attrs, state) {
- for (const attr of attrs) {
- if (attr.value) {
- if (attr.name === 'class') {
- pushString(state.out, '.');
- // All whitespace characters must be replaced with dots in class names
- const tokens = attr.value.map(t => typeof t === 'string' ? t.replace(/\s+/g, '.') : t);
- pushTokens(tokens, state);
- }
- else {
- // ID attribute
- pushString(state.out, '#');
- pushTokens(attr.value, state);
- }
- }
- }
-}
-/**
- * Outputs given attributes as secondary into output stream
- */
-function pushSecondaryAttributes(attrs, state) {
- if (attrs.length) {
- const { out, config, options } = state;
- options.beforeAttribute && pushString(out, options.beforeAttribute);
- for (let i = 0; i < attrs.length; i++) {
- const attr = attrs[i];
- pushString(out, attrName(attr.name || '', config));
- if (isBooleanAttribute(attr, config) && !attr.value) {
- if (!config.options['output.compactBoolean'] && options.booleanValue) {
- pushString(out, '=' + options.booleanValue);
- }
- }
- else {
- pushString(out, '=' + attrQuote(attr, config, true));
- pushTokens(attr.value || caret, state);
- pushString(out, attrQuote(attr, config));
- }
- if (i !== attrs.length - 1 && options.glueAttribute) {
- pushString(out, options.glueAttribute);
- }
- }
- options.afterAttribute && pushString(out, options.afterAttribute);
- }
-}
-/**
- * Outputs given node value into state output stream
- */
-function pushValue(node, state) {
- // We should either output value or add caret but for leaf nodes only (no children)
- if (!node.value && node.children.length) {
- return;
- }
- const value = node.value || caret;
- const lines = splitByLines(value);
- const { out, options } = state;
- if (lines.length === 1) {
- if (node.name || node.attributes) {
- push(out, ' ');
- }
- pushTokens(value, state);
- }
- else {
- // We should format multi-line value with terminating `|` character
- // and same line length
- const lineLengths = [];
- let maxLength = 0;
- // Calculate lengths of all lines and max line length
- for (const line of lines) {
- const len = valueLength(line);
- lineLengths.push(len);
- if (len > maxLength) {
- maxLength = len;
- }
- }
- // Output each line, padded to max length
- out.level++;
- for (let i = 0; i < lines.length; i++) {
- pushNewline(out, true);
- options.beforeTextLine && push(out, options.beforeTextLine);
- pushTokens(lines[i], state);
- if (options.afterTextLine) {
- push(out, ' '.repeat(maxLength - lineLengths[i]));
- push(out, options.afterTextLine);
- }
- }
- out.level--;
- }
-}
-function isPrimaryAttribute(attr) {
- return attr.name === 'class' || attr.name === 'id';
-}
-/**
- * Calculates string length from given tokens
- */
-function valueLength(tokens) {
- let len = 0;
- for (const token of tokens) {
- len += typeof token === 'string' ? token.length : token.name.length;
- }
- return len;
-}
-function shouldFormat(node, index, items, state) {
- // Do not format first top-level element or snippets
- if (!state.parent && index === 0) {
- return false;
- }
- return !isSnippet(node);
-}
-
-function haml(abbr, config) {
- return indentFormat(abbr, config, {
- beforeName: '%',
- beforeAttribute: '(',
- afterAttribute: ')',
- glueAttribute: ' ',
- afterTextLine: ' |',
- booleanValue: 'true',
- selfClose: '/'
- });
-}
-
-function slim(abbr, config) {
- return indentFormat(abbr, config, {
- beforeAttribute: ' ',
- glueAttribute: ' ',
- beforeTextLine: '| ',
- selfClose: '/'
- });
-}
-
-function pug(abbr, config) {
- return indentFormat(abbr, config, {
- beforeAttribute: '(',
- afterAttribute: ')',
- glueAttribute: ', ',
- beforeTextLine: '| ',
- selfClose: config.options['output.selfClosingStyle'] === 'xml' ? '/' : ''
- });
-}
-
-const formatters = { html, haml, slim, pug };
-/**
- * Parses given Emmet abbreviation into a final abbreviation tree with all
- * required transformations applied
- */
-function parse$1(abbr, config) {
- let oldTextValue;
- if (typeof abbr === 'string') {
- const parseOpt = Object.assign({}, config);
- if (config.options['jsx.enabled']) {
- parseOpt.jsx = true;
- }
- if (config.options['markup.href']) {
- parseOpt.href = true;
- }
- abbr = parseAbbreviation(abbr, parseOpt);
- // remove text field before snippets(abbr, config) call
- // as abbreviation(abbr, parseOpt) already handled it
- oldTextValue = config.text;
- config.text = undefined;
- }
- // Run abbreviation resolve in two passes:
- // 1. Map each node to snippets, which are abbreviations as well. A single snippet
- // may produce multiple nodes
- // 2. Transform every resolved node
- abbr = resolveSnippets(abbr, config);
- walk$1(abbr, transform, config);
- config.text = oldTextValue !== null && oldTextValue !== void 0 ? oldTextValue : config.text;
- return abbr;
-}
-/**
- * Converts given abbreviation to string according to provided `config`
- */
-function stringify(abbr, config) {
- const formatter = formatters[config.syntax] || html;
- return formatter(abbr, config);
-}
-/**
- * Modifies given node and prepares it for output
- */
-function transform(node, ancestors, config) {
- implicitTag(node, ancestors, config);
- mergeAttributes(node, config);
- lorem(node, ancestors, config);
- if (config.syntax === 'xsl') {
- xsl(node);
- }
- if (config.options['bem.enabled']) {
- bem(node, ancestors, config);
- }
-}
-
-var CSSSnippetType;
-(function (CSSSnippetType) {
- CSSSnippetType["Raw"] = "Raw";
- CSSSnippetType["Property"] = "Property";
-})(CSSSnippetType || (CSSSnippetType = {}));
-const reProperty = /^([a-z-]+)(?:\s*:\s*([^\n\r;]+?);*)?$/;
-const opt = { value: true };
-/**
- * Creates structure for holding resolved CSS snippet
- */
-function createSnippet(key, value) {
- // A snippet could be a raw text snippet (e.g. arbitrary text string) or a
- // CSS property with possible values separated by `|`.
- // In latter case, we have to parse snippet as CSS abbreviation
- const m = value.match(reProperty);
- if (m) {
- const keywords = {};
- const parsed = m[2] ? m[2].split('|').map(parseValue) : [];
- for (const item of parsed) {
- for (const cssVal of item) {
- collectKeywords(cssVal, keywords);
- }
- }
- return {
- type: CSSSnippetType.Property,
- key,
- property: m[1],
- value: parsed,
- keywords,
- dependencies: []
- };
- }
- return { type: CSSSnippetType.Raw, key, value };
-}
-/**
- * Nests more specific CSS properties into shorthand ones, e.g.
- * `background-position-x` -> `background-position` -> `background`
- */
-function nest(snippets) {
- snippets = snippets.slice().sort(snippetsSort);
- const stack = [];
- let prev;
- // For sorted list of CSS properties, create dependency graph where each
- // shorthand property contains its more specific one, e.g.
- // background -> background-position -> background-position-x
- for (const cur of snippets.filter(isProperty)) {
- // Check if current property belongs to one from parent stack.
- // Since `snippets` array is sorted, items are perfectly aligned
- // from shorthands to more specific variants
- while (stack.length) {
- prev = stack[stack.length - 1];
- if (cur.property.startsWith(prev.property)
- && cur.property.charCodeAt(prev.property.length) === 45 /* - */) {
- prev.dependencies.push(cur);
- stack.push(cur);
- break;
- }
- stack.pop();
- }
- if (!stack.length) {
- stack.push(cur);
- }
- }
- return snippets;
-}
-/**
- * A sorting function for array of snippets
- */
-function snippetsSort(a, b) {
- if (a.key === b.key) {
- return 0;
- }
- return a.key < b.key ? -1 : 1;
-}
-function parseValue(value) {
- return parse$2(value.trim(), opt)[0].value;
-}
-function isProperty(snippet) {
- return snippet.type === CSSSnippetType.Property;
-}
-function collectKeywords(cssVal, dest) {
- for (const v of cssVal.value) {
- if (v.type === 'Literal') {
- dest[v.value] = v;
- }
- else if (v.type === 'FunctionCall') {
- dest[v.name] = v;
- }
- else if (v.type === 'Field') {
- // Create literal from field, if available
- const value = v.name.trim();
- if (value) {
- dest[value] = { type: 'Literal', value };
- }
- }
- }
-}
-
-/**
- * Calculates how close `str1` matches `str2` using fuzzy match.
- * How matching works:
- * – first characters of both `str1` and `str2` *must* match
- * – `str1` length larger than `str2` length is allowed only when `unmatched` is true
- * – ideal match is when `str1` equals to `str2` (score: 1)
- * – next best match is `str2` starts with `str1` (score: 1 × percent of matched characters)
- * – other scores depend on how close characters of `str1` to the beginning of `str2`
- * @param partialMatch Allow length `str1` to be greater than `str2` length
- */
-function scoreMatch(str1, str2, partialMatch = false) {
- str1 = str1.toLowerCase();
- str2 = str2.toLowerCase();
- if (str1 === str2) {
- return 1;
- }
- // Both strings MUST start with the same character
- if (!str1 || !str2 || str1.charCodeAt(0) !== str2.charCodeAt(0)) {
- return 0;
- }
- const str1Len = str1.length;
- const str2Len = str2.length;
- if (!partialMatch && str1Len > str2Len) {
- return 0;
- }
- // Characters from `str1` which are closer to the beginning of a `str2` should
- // have higher score.
- // For example, if `str2` is `abcde`, it’s max score is:
- // 5 + 4 + 3 + 2 + 1 = 15 (sum of character positions in reverse order)
- // Matching `abd` against `abcde` should produce:
- // 5 + 4 + 2 = 11
- // Acronym bonus for match right after `-`. Matching `abd` against `abc-de`
- // should produce:
- // 6 + 5 + 4 (use `d` position in `abd`, not in abc-de`)
- const minLength = Math.min(str1Len, str2Len);
- const maxLength = Math.max(str1Len, str2Len);
- let i = 1;
- let j = 1;
- let score = maxLength;
- let ch1 = 0;
- let ch2 = 0;
- let found = false;
- let acronym = false;
- while (i < str1Len) {
- ch1 = str1.charCodeAt(i);
- found = false;
- acronym = false;
- while (j < str2Len) {
- ch2 = str2.charCodeAt(j);
- if (ch1 === ch2) {
- found = true;
- score += maxLength - (acronym ? i : j);
- break;
- }
- // add acronym bonus for exactly next match after unmatched `-`
- acronym = ch2 === 45 /* - */;
- j++;
- }
- if (!found) {
- if (!partialMatch) {
- return 0;
- }
- break;
- }
- i++;
- }
- const matchRatio = i / maxLength;
- const delta = maxLength - minLength;
- const maxScore = sum(maxLength) - sum(delta);
- return (score * matchRatio) / maxScore;
-}
-/**
- * Calculates sum of first `n` numbers, e.g. 1+2+3+...n
- */
-function sum(n) {
- return n * (n + 1) / 2;
-}
-
-function color(token, shortHex) {
- if (!token.r && !token.g && !token.b && !token.a) {
- return 'transparent';
- }
- else if (token.a === 1) {
- return asHex(token, shortHex);
- }
- return asRGB(token);
-}
-/**
- * Output given color as hex value
- * @param short Produce short value (e.g. #fff instead of #ffffff), if possible
- */
-function asHex(token, short) {
- const fn = (short && isShortHex(token.r) && isShortHex(token.g) && isShortHex(token.b))
- ? toShortHex : toHex;
- return '#' + fn(token.r) + fn(token.g) + fn(token.b);
-}
-/**
- * Output current color as `rgba?(...)` CSS color
- */
-function asRGB(token) {
- const values = [token.r, token.g, token.b];
- if (token.a !== 1) {
- values.push(frac(token.a, 8));
- }
- return `${values.length === 3 ? 'rgb' : 'rgba'}(${values.join(', ')})`;
-}
-function frac(num, digits = 4) {
- return num.toFixed(digits).replace(/\.?0+$/, '');
-}
-function isShortHex(hex) {
- return !(hex % 17);
-}
-function toShortHex(num) {
- return (num >> 4).toString(16);
-}
-function toHex(num) {
- return pad(num.toString(16), 2);
-}
-function pad(value, len) {
- while (value.length < len) {
- value = '0' + value;
- }
- return value;
-}
-
-const CSSAbbreviationScope = {
- /** Include all possible snippets in match */
- Global: '@@global',
- /** Include raw snippets only (e.g. no properties) in abbreviation match */
- Section: '@@section',
- /** Include properties only in abbreviation match */
- Property: '@@property',
- /** Resolve abbreviation in context of CSS property value */
- Value: '@@value',
-};
-function css(abbr, config) {
- var _a;
- const out = createOutputStream(config.options);
- const format = config.options['output.format'];
- if (((_a = config.context) === null || _a === void 0 ? void 0 : _a.name) === CSSAbbreviationScope.Section) {
- // For section context, filter out unmatched snippets
- abbr = abbr.filter(node => node.snippet);
- }
- for (let i = 0; i < abbr.length; i++) {
- if (format && i !== 0) {
- pushNewline(out, true);
- }
- property(abbr[i], out, config);
- }
- return out.value;
-}
-/**
- * Outputs given abbreviation node into output stream
- */
-function property(node, out, config) {
- const isJSON = config.options['stylesheet.json'];
- if (node.name) {
- // It’s a CSS property
- const name = isJSON ? toCamelCase(node.name) : node.name;
- pushString(out, name + config.options['stylesheet.between']);
- if (node.value.length) {
- propertyValue(node, out, config);
- }
- else {
- pushField(out, 0, '');
- }
- if (isJSON) {
- // For CSS-in-JS, always finalize property with comma
- // NB: seems like `important` is not available in CSS-in-JS syntaxes
- push(out, ',');
- }
- else {
- outputImportant(node, out, true);
- push(out, config.options['stylesheet.after']);
- }
- }
- else {
- // It’s a regular snippet, output plain tokens without any additional formatting
- for (const cssVal of node.value) {
- for (const v of cssVal.value) {
- outputToken(v, out, config);
- }
- }
- outputImportant(node, out, node.value.length > 0);
- }
-}
-function propertyValue(node, out, config) {
- const isJSON = config.options['stylesheet.json'];
- const num = isJSON ? getSingleNumeric(node) : null;
- if (num && (!num.unit || num.unit === 'px')) {
- // For CSS-in-JS, if property contains single numeric value, output it
- // as JS number
- push(out, String(num.value));
- }
- else {
- const quote = getQuote(config);
- isJSON && push(out, quote);
- for (let i = 0; i < node.value.length; i++) {
- if (i !== 0) {
- push(out, ', ');
- }
- outputValue(node.value[i], out, config);
- }
- isJSON && push(out, quote);
- }
-}
-function outputImportant(node, out, separator) {
- if (node.important) {
- if (separator) {
- push(out, ' ');
- }
- push(out, '!important');
- }
-}
-function outputValue(value, out, config) {
- for (let i = 0, prevEnd = -1; i < value.value.length; i++) {
- const token = value.value[i];
- // Handle edge case: a field is written close to previous token like this: `foo${bar}`.
- // We should not add delimiter here
- if (i !== 0 && (token.type !== 'Field' || token.start !== prevEnd)) {
- push(out, ' ');
- }
- outputToken(token, out, config);
- prevEnd = token['end'];
- }
-}
-function outputToken(token, out, config) {
- if (token.type === 'ColorValue') {
- push(out, color(token, config.options['stylesheet.shortHex']));
- }
- else if (token.type === 'Literal' || token.type === 'CustomProperty') {
- pushString(out, token.value);
- }
- else if (token.type === 'NumberValue') {
- pushString(out, frac(token.value, 4) + token.unit);
- }
- else if (token.type === 'StringValue') {
- const quote = token.quote === 'double' ? '"' : '\'';
- pushString(out, quote + token.value + quote);
- }
- else if (token.type === 'Field') {
- pushField(out, token.index, token.name);
- }
- else if (token.type === 'FunctionCall') {
- push(out, token.name + '(');
- for (let i = 0; i < token.arguments.length; i++) {
- if (i) {
- push(out, ', ');
- }
- outputValue(token.arguments[i], out, config);
- }
- push(out, ')');
- }
-}
-/**
- * If value of given property is a single numeric value, returns this token
- */
-function getSingleNumeric(node) {
- if (node.value.length === 1) {
- const cssVal = node.value[0];
- if (cssVal.value.length === 1 && cssVal.value[0].type === 'NumberValue') {
- return cssVal.value[0];
- }
- }
-}
-/**
- * Converts kebab-case string to camelCase
- */
-function toCamelCase(str) {
- return str.replace(/\-(\w)/g, (_, letter) => letter.toUpperCase());
-}
-function getQuote(config) {
- return config.options['stylesheet.jsonDoubleQuotes'] ? '"' : '\'';
-}
-
-const gradientName = 'lg';
-/**
- * Parses given Emmet abbreviation into a final abbreviation tree with all
- * required transformations applied
- */
-function parse(abbr, config) {
- var _a;
- const snippets = ((_a = config.cache) === null || _a === void 0 ? void 0 : _a.stylesheetSnippets) || convertSnippets(config.snippets);
- if (config.cache) {
- config.cache.stylesheetSnippets = snippets;
- }
- if (typeof abbr === 'string') {
- abbr = parse$2(abbr, { value: isValueScope(config) });
- }
- const filteredSnippets = getSnippetsForScope(snippets, config);
- for (const node of abbr) {
- resolveNode(node, filteredSnippets, config);
- }
- return abbr;
-}
-/**
- * Converts given raw snippets into internal snippets representation
- */
-function convertSnippets(snippets) {
- const result = [];
- for (const key of Object.keys(snippets)) {
- result.push(createSnippet(key, snippets[key]));
- }
- return nest(result);
-}
-/**
- * Resolves given node: finds matched CSS snippets using fuzzy match and resolves
- * keyword aliases from node value
- */
-function resolveNode(node, snippets, config) {
- if (!resolveGradient(node, config)) {
- const score = config.options['stylesheet.fuzzySearchMinScore'];
- if (isValueScope(config)) {
- // Resolve as value of given CSS property
- const propName = config.context.name;
- const snippet = snippets.find(s => s.type === CSSSnippetType.Property && s.property === propName);
- resolveValueKeywords(node, config, snippet, score);
- node.snippet = snippet;
- }
- else if (node.name) {
- const snippet = findBestMatch(node.name, snippets, score, true);
- node.snippet = snippet;
- if (snippet) {
- if (snippet.type === CSSSnippetType.Property) {
- resolveAsProperty(node, snippet, config);
- }
- else {
- resolveAsSnippet(node, snippet);
- }
- }
- }
- }
- if (node.name || config.context) {
- // Resolve numeric values for CSS properties only
- resolveNumericValue(node, config);
- }
- return node;
-}
-/**
- * Resolves CSS gradient shortcut from given property, if possible
- */
-function resolveGradient(node, config) {
- let gradientFn = null;
- const cssVal = node.value.length === 1 ? node.value[0] : null;
- if (cssVal && cssVal.value.length === 1) {
- const v = cssVal.value[0];
- if (v.type === 'FunctionCall' && v.name === gradientName) {
- gradientFn = v;
- }
- }
- if (gradientFn || node.name === gradientName) {
- if (!gradientFn) {
- gradientFn = {
- type: 'FunctionCall',
- name: 'linear-gradient',
- arguments: [cssValue(field(0, ''))]
- };
- }
- else {
- gradientFn = Object.assign(Object.assign({}, gradientFn), { name: 'linear-gradient' });
- }
- if (!config.context) {
- node.name = 'background-image';
- }
- node.value = [cssValue(gradientFn)];
- return true;
- }
- return false;
-}
-/**
- * Resolves given parsed abbreviation node as CSS property
- */
-function resolveAsProperty(node, snippet, config) {
- const abbr = node.name;
- // Check for unmatched part of abbreviation
- // For example, in `dib` abbreviation the matched part is `d` and `ib` should
- // be considered as inline value. If unmatched fragment exists, we should check
- // if it matches actual value of snippet. If either explicit value is specified
- // or unmatched fragment did not resolve to to a keyword, we should consider
- // matched snippet as invalid
- const inlineValue = getUnmatchedPart(abbr, snippet.key);
- if (inlineValue) {
- if (node.value.length) {
- // Already have value: unmatched part indicates matched snippet is invalid
- return node;
- }
- const kw = resolveKeyword(inlineValue, config, snippet);
- if (!kw) {
- return node;
- }
- node.value.push(cssValue(kw));
- }
- node.name = snippet.property;
- if (node.value.length) {
- // Replace keyword alias from current abbreviation node with matched keyword
- resolveValueKeywords(node, config, snippet);
- }
- else if (snippet.value.length) {
- const defaultValue = snippet.value[0];
- // https://github.com/emmetio/emmet/issues/558
- // We should auto-select inserted value only if there’s multiple value
- // choice
- node.value = snippet.value.length === 1 || defaultValue.some(hasField)
- ? defaultValue
- : defaultValue.map(n => wrapWithField(n, config));
- }
- return node;
-}
-function resolveValueKeywords(node, config, snippet, minScore) {
- for (const cssVal of node.value) {
- const value = [];
- for (const token of cssVal.value) {
- if (token.type === 'Literal') {
- value.push(resolveKeyword(token.value, config, snippet, minScore) || token);
- }
- else if (token.type === 'FunctionCall') {
- // For function calls, we should find matching function call
- // and merge arguments
- const match = resolveKeyword(token.name, config, snippet, minScore);
- if (match && match.type === 'FunctionCall') {
- value.push(Object.assign(Object.assign({}, match), { arguments: token.arguments.concat(match.arguments.slice(token.arguments.length)) }));
- }
- else {
- value.push(token);
- }
- }
- else {
- value.push(token);
- }
- }
- cssVal.value = value;
- }
-}
-/**
- * Resolves given parsed abbreviation node as a snippet: a plain code chunk
- */
-function resolveAsSnippet(node, snippet) {
- // When resolving snippets, we have to do the following:
- // 1. Replace field placeholders with actual field tokens.
- // 2. If input values given, put them instead of fields
- let offset = 0;
- let m;
- const reField = /\$\{(\d+)(:[^}]+)?\}/g;
- const inputValue = node.value[0];
- const outputValue = [];
- while (m = reField.exec(snippet.value)) {
- if (offset !== m.index) {
- outputValue.push(literal(snippet.value.slice(offset, m.index)));
- }
- offset = m.index + m[0].length;
- if (inputValue && inputValue.value.length) {
- outputValue.push(inputValue.value.shift());
- }
- else {
- outputValue.push(field(Number(m[1]), m[2] ? m[2].slice(1) : ''));
- }
- }
- const tail = snippet.value.slice(offset);
- if (tail) {
- outputValue.push(literal(tail));
- }
- node.name = void 0;
- node.value = [cssValue(...outputValue)];
- return node;
-}
-/**
- * Finds best matching item from `items` array
- * @param abbr Abbreviation to match
- * @param items List of items for match
- * @param minScore The minimum score the best matched item should have to be a valid match.
- */
-function findBestMatch(abbr, items, minScore = 0, partialMatch = false) {
- let matchedItem = null;
- let maxScore = 0;
- for (const item of items) {
- const score = scoreMatch(abbr, getScoringPart(item), partialMatch);
- if (score === 1) {
- // direct hit, no need to look further
- return item;
- }
- if (score && score >= maxScore) {
- maxScore = score;
- matchedItem = item;
- }
- }
- return maxScore >= minScore ? matchedItem : null;
-}
-function getScoringPart(item) {
- return typeof item === 'string' ? item : item.key;
-}
-/**
- * Returns a part of `abbr` that wasn’t directly matched against `str`.
- * For example, if abbreviation `poas` is matched against `position`,
- * the unmatched part will be `as` since `a` wasn’t found in string stream
- */
-function getUnmatchedPart(abbr, str) {
- for (let i = 0, lastPos = 0; i < abbr.length; i++) {
- lastPos = str.indexOf(abbr[i], lastPos);
- if (lastPos === -1) {
- return abbr.slice(i);
- }
- lastPos++;
- }
- return '';
-}
-/**
- * Resolves given keyword shorthand into matched snippet keyword or global keyword,
- * if possible
- */
-function resolveKeyword(kw, config, snippet, minScore) {
- let ref;
- if (snippet) {
- if (ref = findBestMatch(kw, Object.keys(snippet.keywords), minScore)) {
- return snippet.keywords[ref];
- }
- for (const dep of snippet.dependencies) {
- if (ref = findBestMatch(kw, Object.keys(dep.keywords), minScore)) {
- return dep.keywords[ref];
- }
- }
- }
- if (ref = findBestMatch(kw, config.options['stylesheet.keywords'], minScore)) {
- return literal(ref);
- }
- return null;
-}
-/**
- * Resolves numeric values in given abbreviation node
- */
-function resolveNumericValue(node, config) {
- const aliases = config.options['stylesheet.unitAliases'];
- const unitless = config.options['stylesheet.unitless'];
- for (const v of node.value) {
- for (const t of v.value) {
- if (t.type === 'NumberValue') {
- if (t.unit) {
- t.unit = aliases[t.unit] || t.unit;
- }
- else if (t.value !== 0 && !unitless.includes(node.name)) {
- t.unit = t.rawValue.includes('.')
- ? config.options['stylesheet.floatUnit']
- : config.options['stylesheet.intUnit'];
- }
- }
- }
- }
-}
-/**
- * Constructs CSS value token
- */
-function cssValue(...args) {
- return {
- type: 'CSSValue',
- value: args
- };
-}
-/**
- * Constructs literal token
- */
-function literal(value) {
- return { type: 'Literal', value };
-}
-/**
- * Constructs field token
- */
-function field(index, name) {
- return { type: 'Field', index, name };
-}
-/**
- * Check if given value contains fields
- */
-function hasField(value) {
- for (const v of value.value) {
- if (v.type === 'Field' || (v.type === 'FunctionCall' && v.arguments.some(hasField))) {
- return true;
- }
- }
- return false;
-}
-/**
- * Wraps tokens of given abbreviation with fields
- */
-function wrapWithField(node, config, state = { index: 1 }) {
- let value = [];
- for (const v of node.value) {
- switch (v.type) {
- case 'ColorValue':
- value.push(field(state.index++, color(v, config.options['stylesheet.shortHex'])));
- break;
- case 'Literal':
- value.push(field(state.index++, v.value));
- break;
- case 'NumberValue':
- value.push(field(state.index++, `${v.value}${v.unit}`));
- break;
- case 'StringValue':
- const q = v.quote === 'single' ? '\'' : '"';
- value.push(field(state.index++, q + v.value + q));
- break;
- case 'FunctionCall':
- value.push(field(state.index++, v.name), literal('('));
- for (let i = 0, il = v.arguments.length; i < il; i++) {
- value = value.concat(wrapWithField(v.arguments[i], config, state).value);
- if (i !== il - 1) {
- value.push(literal(', '));
- }
- }
- value.push(literal(')'));
- break;
- default:
- value.push(v);
- }
- }
- return Object.assign(Object.assign({}, node), { value });
-}
-/**
- * Check if abbreviation should be expanded in CSS value context
- */
-function isValueScope(config) {
- if (config.context) {
- return config.context.name === CSSAbbreviationScope.Value || !config.context.name.startsWith('@@');
- }
- return false;
-}
-/**
- * Returns snippets for given scope
- */
-function getSnippetsForScope(snippets, config) {
- if (config.context) {
- if (config.context.name === CSSAbbreviationScope.Section) {
- return snippets.filter(s => s.type === CSSSnippetType.Raw);
- }
- if (config.context.name === CSSAbbreviationScope.Property) {
- return snippets.filter(s => s.type === CSSSnippetType.Property);
- }
- }
- return snippets;
-}
-
-var markupSnippets = {
- "a": "a[href]",
- "a:blank": "a[href='http://${0}' target='_blank' rel='noopener noreferrer']",
- "a:link": "a[href='http://${0}']",
- "a:mail": "a[href='mailto:${0}']",
- "a:tel": "a[href='tel:+${0}']",
- "abbr": "abbr[title]",
- "acr|acronym": "acronym[title]",
- "base": "base[href]/",
- "basefont": "basefont/",
- "br": "br/",
- "frame": "frame/",
- "hr": "hr/",
- "bdo": "bdo[dir]",
- "bdo:r": "bdo[dir=rtl]",
- "bdo:l": "bdo[dir=ltr]",
- "col": "col/",
- "link": "link[rel=stylesheet href]/",
- "link:css": "link[href='${1:style}.css']",
- "link:print": "link[href='${1:print}.css' media=print]",
- "link:favicon": "link[rel='shortcut icon' type=image/x-icon href='${1:favicon.ico}']",
- "link:mf|link:manifest": "link[rel='manifest' href='${1:manifest.json}']",
- "link:touch": "link[rel=apple-touch-icon href='${1:favicon.png}']",
- "link:rss": "link[rel=alternate type=application/rss+xml title=RSS href='${1:rss.xml}']",
- "link:atom": "link[rel=alternate type=application/atom+xml title=Atom href='${1:atom.xml}']",
- "link:im|link:import": "link[rel=import href='${1:component}.html']",
- "meta": "meta/",
- "meta:utf": "meta[http-equiv=Content-Type content='text/html;charset=UTF-8']",
- "meta:vp": "meta[name=viewport content='width=${1:device-width}, initial-scale=${2:1.0}']",
- "meta:compat": "meta[http-equiv=X-UA-Compatible content='${1:IE=7}']",
- "meta:edge": "meta:compat[content='${1:ie=edge}']",
- "meta:redirect": "meta[http-equiv=refresh content='0; url=${1:http://example.com}']",
- "meta:refresh": "meta[http-equiv=refresh content='${1:5}']",
- "meta:kw": "meta[name=keywords content]",
- "meta:desc": "meta[name=description content]",
- "style": "style",
- "script": "script",
- "script:src": "script[src]",
- "script:module": "script[type=module src]",
- "img": "img[src alt]/",
- "img:s|img:srcset": "img[srcset src alt]",
- "img:z|img:sizes": "img[sizes srcset src alt]",
- "picture": "picture",
- "src|source": "source/",
- "src:sc|source:src": "source[src type]",
- "src:s|source:srcset": "source[srcset]",
- "src:t|source:type": "source[srcset type='${1:image/}']",
- "src:z|source:sizes": "source[sizes srcset]",
- "src:m|source:media": "source[media='(${1:min-width: })' srcset]",
- "src:mt|source:media:type": "source:media[type='${2:image/}']",
- "src:mz|source:media:sizes": "source:media[sizes srcset]",
- "src:zt|source:sizes:type": "source[sizes srcset type='${1:image/}']",
- "iframe": "iframe[src frameborder=0]",
- "embed": "embed[src type]/",
- "object": "object[data type]",
- "param": "param[name value]/",
- "map": "map[name]",
- "area": "area[shape coords href alt]/",
- "area:d": "area[shape=default]",
- "area:c": "area[shape=circle]",
- "area:r": "area[shape=rect]",
- "area:p": "area[shape=poly]",
- "form": "form[action]",
- "form:get": "form[method=get]",
- "form:post": "form[method=post]",
- "label": "label[for]",
- "input": "input[type=${1:text}]/",
- "inp": "input[name=${1} id=${1}]",
- "input:h|input:hidden": "input[type=hidden name]",
- "input:t|input:text": "inp[type=text]",
- "input:search": "inp[type=search]",
- "input:email": "inp[type=email]",
- "input:url": "inp[type=url]",
- "input:p|input:password": "inp[type=password]",
- "input:datetime": "inp[type=datetime]",
- "input:date": "inp[type=date]",
- "input:datetime-local": "inp[type=datetime-local]",
- "input:month": "inp[type=month]",
- "input:week": "inp[type=week]",
- "input:time": "inp[type=time]",
- "input:tel": "inp[type=tel]",
- "input:number": "inp[type=number]",
- "input:color": "inp[type=color]",
- "input:c|input:checkbox": "inp[type=checkbox]",
- "input:r|input:radio": "inp[type=radio]",
- "input:range": "inp[type=range]",
- "input:f|input:file": "inp[type=file]",
- "input:s|input:submit": "input[type=submit value]",
- "input:i|input:image": "input[type=image src alt]",
- "input:b|input:btn|input:button": "input[type=button value]",
- "input:reset": "input:button[type=reset]",
- "isindex": "isindex/",
- "select": "select[name=${1} id=${1}]",
- "select:d|select:disabled": "select[disabled.]",
- "opt|option": "option[value]",
- "textarea": "textarea[name=${1} id=${1} cols=${2:30} rows=${3:10}]",
- "marquee": "marquee[behavior direction]",
- "menu:c|menu:context": "menu[type=context]",
- "menu:t|menu:toolbar": "menu[type=toolbar]",
- "video": "video[src]",
- "audio": "audio[src]",
- "html:xml": "html[xmlns=http://www.w3.org/1999/xhtml]",
- "keygen": "keygen/",
- "command": "command/",
- "btn:s|button:s|button:submit" : "button[type=submit]",
- "btn:r|button:r|button:reset" : "button[type=reset]",
- "btn:b|button:b|button:button" : "button[type=button]",
- "btn:d|button:d|button:disabled" : "button[disabled.]",
- "fst:d|fset:d|fieldset:d|fieldset:disabled" : "fieldset[disabled.]",
-
- "bq": "blockquote",
- "fig": "figure",
- "figc": "figcaption",
- "pic": "picture",
- "ifr": "iframe",
- "emb": "embed",
- "obj": "object",
- "cap": "caption",
- "colg": "colgroup",
- "fst": "fieldset",
- "btn": "button",
- "optg": "optgroup",
- "tarea": "textarea",
- "leg": "legend",
- "sect": "section",
- "art": "article",
- "hdr": "header",
- "ftr": "footer",
- "adr": "address",
- "dlg": "dialog",
- "str": "strong",
- "prog": "progress",
- "mn": "main",
- "tem": "template",
- "fset": "fieldset",
- "datal": "datalist",
- "kg": "keygen",
- "out": "output",
- "det": "details",
- "sum": "summary",
- "cmd": "command",
- "data": "data[value]",
- "meter": "meter[value]",
- "time": "time[datetime]",
-
- "ri:d|ri:dpr": "img:s",
- "ri:v|ri:viewport": "img:z",
- "ri:a|ri:art": "pic>src:m+img",
- "ri:t|ri:type": "pic>src:t+img",
-
- "!!!": "{}",
- "doc": "html[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}})+body",
- "!|html:5": "!!!+doc",
-
- "c": "{}",
- "cc:ie": "{}",
- "cc:noie": "{${0}}"
-};
-
-var stylesheetSnippets = {
- "@f": "@font-face {\n\tfont-family: ${1};\n\tsrc: url(${2});\n}",
- "@ff": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}",
- "@i|@import": "@import url(${0});",
- "@kf": "@keyframes ${1:identifier} {\n\t${2}\n}",
- "@m|@media": "@media ${1:screen} {\n\t${0}\n}",
- "ac": "align-content:start|end|flex-start|flex-end|center|space-between|space-around|stretch|space-evenly",
- "ai": "align-items:start|end|flex-start|flex-end|center|baseline|stretch",
- "anim": "animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode}",
- "animdel": "animation-delay:time",
- "animdir": "animation-direction:normal|reverse|alternate|alternate-reverse",
- "animdur": "animation-duration:${1:0}s",
- "animfm": "animation-fill-mode:both|forwards|backwards",
- "animic": "animation-iteration-count:1|infinite",
- "animn": "animation-name",
- "animps": "animation-play-state:running|paused",
- "animtf": "animation-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1})",
- "ap": "appearance:none",
- "as": "align-self:start|end|auto|flex-start|flex-end|center|baseline|stretch",
- "b": "bottom",
- "bd": "border:${1:1px} ${2:solid} ${3:#000}",
- "bdb": "border-bottom:${1:1px} ${2:solid} ${3:#000}",
- "bdbc": "border-bottom-color:${1:#000}",
- "bdbi": "border-bottom-image:url(${0})",
- "bdbk": "border-break:close",
- "bdbli": "border-bottom-left-image:url(${0})|continue",
- "bdblrs": "border-bottom-left-radius",
- "bdbri": "border-bottom-right-image:url(${0})|continue",
- "bdbrrs": "border-bottom-right-radius",
- "bdbs": "border-bottom-style",
- "bdbw": "border-bottom-width",
- "bdc": "border-color:${1:#000}",
- "bdci": "border-corner-image:url(${0})|continue",
- "bdcl": "border-collapse:collapse|separate",
- "bdf": "border-fit:repeat|clip|scale|stretch|overwrite|overflow|space",
- "bdi": "border-image:url(${0})",
- "bdl": "border-left:${1:1px} ${2:solid} ${3:#000}",
- "bdlc": "border-left-color:${1:#000}",
- "bdlen": "border-length",
- "bdli": "border-left-image:url(${0})",
- "bdls": "border-left-style",
- "bdlw": "border-left-width",
- "bdr": "border-right:${1:1px} ${2:solid} ${3:#000}",
- "bdrc": "border-right-color:${1:#000}",
- "bdri": "border-right-image:url(${0})",
- "bdrs": "border-radius",
- "bdrst": "border-right-style",
- "bdrw": "border-right-width",
- "bds": "border-style:none|hidden|dotted|dashed|solid|double|dot-dash|dot-dot-dash|wave|groove|ridge|inset|outset",
- "bdsp": "border-spacing",
- "bdt": "border-top:${1:1px} ${2:solid} ${3:#000}",
- "bdtc": "border-top-color:${1:#000}",
- "bdti": "border-top-image:url(${0})",
- "bdtli": "border-top-left-image:url(${0})|continue",
- "bdtlrs": "border-top-left-radius",
- "bdtri": "border-top-right-image:url(${0})|continue",
- "bdtrrs": "border-top-right-radius",
- "bdts": "border-top-style",
- "bdtw": "border-top-width",
- "bdw": "border-width",
- "bbs": "border-block-start",
- "bbe": "border-block-end",
- "bis": "border-inline-start",
- "bie": "border-inline-end",
- "bfv": "backface-visibility:hidden|visible",
- "bg": "background:${1:#000}",
- "bg:n": "background: none",
- "bga": "background-attachment:fixed|scroll",
- "bgbk": "background-break:bounding-box|each-box|continuous",
- "bgc": "background-color:${1:#fff}",
- "bgcp": "background-clip:padding-box|border-box|content-box|no-clip",
- "bgi": "background-image:url(${0})",
- "bgo": "background-origin:padding-box|border-box|content-box",
- "bgp": "background-position:${1:0} ${2:0}",
- "bgpx": "background-position-x",
- "bgpy": "background-position-y",
- "bgr": "background-repeat:no-repeat|repeat-x|repeat-y|space|round",
- "bgsz": "background-size:contain|cover",
- "bs": "block-size",
- "bxsh": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:#000}|none",
- "bxsz": "box-sizing:border-box|content-box|border-box",
- "c": "color:${1:#000}",
- "cr": "color:rgb(${1:0}, ${2:0}, ${3:0})",
- "cra": "color:rgba(${1:0}, ${2:0}, ${3:0}, ${4:.5})",
- "cl": "clear:both|left|right|none",
- "cm": "/* ${0} */",
- "cnt": "content:'${0}'|normal|open-quote|no-open-quote|close-quote|no-close-quote|attr(${0})|counter(${0})|counters(${0})",
- "coi": "counter-increment",
- "colm": "columns",
- "colmc": "column-count",
- "colmf": "column-fill",
- "colmg": "column-gap",
- "colmr": "column-rule",
- "colmrc": "column-rule-color",
- "colmrs": "column-rule-style",
- "colmrw": "column-rule-width",
- "colms": "column-span",
- "colmw": "column-width",
- "cor": "counter-reset",
- "cp": "clip:auto|rect(${1:top} ${2:right} ${3:bottom} ${4:left})",
- "cps": "caption-side:top|bottom",
- "cur": "cursor:pointer|auto|default|crosshair|hand|help|move|pointer|text",
- "d": "display:block|none|flex|inline-flex|inline|inline-block|grid|inline-grid|subgrid|list-item|run-in|contents|table|inline-table|table-caption|table-column|table-column-group|table-header-group|table-footer-group|table-row|table-row-group|table-cell|ruby|ruby-base|ruby-base-group|ruby-text|ruby-text-group",
- "ec": "empty-cells:show|hide",
- "f": "font:${1:1em} ${2:sans-serif}",
- "fd": "font-display:auto|block|swap|fallback|optional",
- "fef": "font-effect:none|engrave|emboss|outline",
- "fem": "font-emphasize",
- "femp": "font-emphasize-position:before|after",
- "fems": "font-emphasize-style:none|accent|dot|circle|disc",
- "ff": "font-family:serif|sans-serif|cursive|fantasy|monospace",
- "fft": "font-family:\"Times New Roman\", Times, Baskerville, Georgia, serif",
- "ffa": "font-family:Arial, \"Helvetica Neue\", Helvetica, sans-serif",
- "ffv": "font-family:Verdana, Geneva, sans-serif",
- "fl": "float:left|right|none",
- "fs": "font-style:italic|normal|oblique",
- "fsm": "font-smoothing:antialiased|subpixel-antialiased|none",
- "fst": "font-stretch:normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",
- "fv": "font-variant:normal|small-caps",
- "fvs": "font-variation-settings:normal|inherit|initial|unset",
- "fw": "font-weight:normal|bold|bolder|lighter",
- "fx": "flex",
- "fxb": "flex-basis:fill|max-content|min-content|fit-content|content",
- "fxd": "flex-direction:row|row-reverse|column|column-reverse",
- "fxf": "flex-flow",
- "fxg": "flex-grow",
- "fxsh": "flex-shrink",
- "fxw": "flex-wrap:nowrap|wrap|wrap-reverse",
- "fsz": "font-size",
- "fsza": "font-size-adjust",
- "g": "gap",
- "gtc": "grid-template-columns:repeat(${0})|minmax()",
- "gtr": "grid-template-rows:repeat(${0})|minmax()",
- "gta": "grid-template-areas",
- "gt": "grid-template",
- "gg": "grid-gap",
- "gcg": "grid-column-gap",
- "grg": "grid-row-gap",
- "gac": "grid-auto-columns:auto|minmax()",
- "gar": "grid-auto-rows:auto|minmax()",
- "gaf": "grid-auto-flow:row|column|dense|inherit|initial|unset",
- "gd": "grid",
- "gc": "grid-column",
- "gcs": "grid-column-start",
- "gce": "grid-column-end",
- "gr": "grid-row",
- "grs": "grid-row-start",
- "gre": "grid-row-end",
- "ga": "grid-area",
- "h": "height",
- "is": "inline-size",
- "jc": "justify-content:start|end|stretch|flex-start|flex-end|center|space-between|space-around|space-evenly",
- "ji": "justify-items:start|end|center|stretch",
- "js": "justify-self:start|end|center|stretch",
- "l": "left",
- "lg": "background-image:linear-gradient(${1})",
- "lh": "line-height",
- "lis": "list-style",
- "lisi": "list-style-image",
- "lisp": "list-style-position:inside|outside",
- "list": "list-style-type:disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman",
- "lts": "letter-spacing:normal",
- "m": "margin",
- "mah": "max-height",
- "mar": "max-resolution",
- "maw": "max-width",
- "mb": "margin-bottom",
- "mih": "min-height",
- "mir": "min-resolution",
- "miw": "min-width",
- "ml": "margin-left",
- "mr": "margin-right",
- "mt": "margin-top",
- "mbs": "margin-block-start",
- "mbe": "margin-block-end",
- "mis": "margin-inline-start",
- "mie": "margin-inline-end",
- "ol": "outline",
- "olc": "outline-color:${1:#000}|invert",
- "olo": "outline-offset",
- "ols": "outline-style:none|dotted|dashed|solid|double|groove|ridge|inset|outset",
- "olw": "outline-width:thin|medium|thick",
- "op|opa": "opacity",
- "ord": "order",
- "ori": "orientation:landscape|portrait",
- "orp": "orphans",
- "ov": "overflow:hidden|visible|hidden|scroll|auto",
- "ovs": "overflow-style:scrollbar|auto|scrollbar|panner|move|marquee",
- "ovx": "overflow-x:hidden|visible|hidden|scroll|auto",
- "ovy": "overflow-y:hidden|visible|hidden|scroll|auto",
- "p": "padding",
- "pb": "padding-bottom",
- "pgba": "page-break-after:auto|always|left|right",
- "pgbb": "page-break-before:auto|always|left|right",
- "pgbi": "page-break-inside:auto|avoid",
- "pl": "padding-left",
- "pos": "position:relative|absolute|relative|fixed|static",
- "pr": "padding-right",
- "pt": "padding-top",
- "pbs": "padding-block-start",
- "pbe": "padding-block-end",
- "pis": "padding-inline-start",
- "pie": "padding-inline-end",
- "spbs": "scroll-padding-block-start",
- "spbe": "scroll-padding-block-end",
- "spis": "scroll-padding-inline-start",
- "spie": "scroll-padding-inline-end",
- "q": "quotes",
- "qen": "quotes:'\\201C' '\\201D' '\\2018' '\\2019'",
- "qru": "quotes:'\\00AB' '\\00BB' '\\201E' '\\201C'",
- "r": "right",
- "rsz": "resize:none|both|horizontal|vertical",
- "t": "top",
- "ta": "text-align:left|center|right|justify",
- "tal": "text-align-last:left|center|right",
- "tbl": "table-layout:fixed",
- "td": "text-decoration:none|underline|overline|line-through",
- "te": "text-emphasis:none|accent|dot|circle|disc|before|after",
- "th": "text-height:auto|font-size|text-size|max-size",
- "ti": "text-indent",
- "tj": "text-justify:auto|inter-word|inter-ideograph|inter-cluster|distribute|kashida|tibetan",
- "to": "text-outline:${1:0} ${2:0} ${3:#000}",
- "tov": "text-overflow:ellipsis|clip",
- "tr": "text-replace",
- "trf": "transform:${1}|skewX(${1:angle})|skewY(${1:angle})|scale(${1:x}, ${2:y})|scaleX(${1:x})|scaleY(${1:y})|scaleZ(${1:z})|scale3d(${1:x}, ${2:y}, ${3:z})|rotate(${1:angle})|rotateX(${1:angle})|rotateY(${1:angle})|rotateZ(${1:angle})|translate(${1:x}, ${2:y})|translateX(${1:x})|translateY(${1:y})|translateZ(${1:z})|translate3d(${1:tx}, ${2:ty}, ${3:tz})",
- "trfo": "transform-origin",
- "trfs": "transform-style:preserve-3d",
- "trs": "transition:${1:prop} ${2:time}",
- "trsde": "transition-delay:${1:time}",
- "trsdu": "transition-duration:${1:time}",
- "trsp": "transition-property:${1:prop}",
- "trstf": "transition-timing-function:${1:fn}",
- "tsh": "text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000}",
- "tt": "text-transform:uppercase|lowercase|capitalize|none",
- "tw": "text-wrap:none|normal|unrestricted|suppress",
- "us": "user-select:none",
- "v": "visibility:hidden|visible|collapse",
- "va": "vertical-align:top|super|text-top|middle|baseline|bottom|text-bottom|sub",
- "w": "width",
- "whs": "white-space:nowrap|pre|pre-wrap|pre-line|normal",
- "whsc": "white-space-collapse:normal|keep-all|loose|break-strict|break-all",
- "wid": "widows",
- "wm": "writing-mode:lr-tb|lr-tb|lr-bt|rl-tb|rl-bt|tb-rl|tb-lr|bt-lr|bt-rl",
- "wob": "word-break:normal|keep-all|break-all",
- "wos": "word-spacing",
- "wow": "word-wrap:none|unrestricted|suppress|break-word|normal",
- "z": "z-index",
- "zom": "zoom:1"
-};
-
-var xslSnippets = {
- "tm|tmatch": "xsl:template[match mode]",
- "tn|tname": "xsl:template[name]",
- "call": "xsl:call-template[name]",
- "ap": "xsl:apply-templates[select mode]",
- "api": "xsl:apply-imports",
- "imp": "xsl:import[href]",
- "inc": "xsl:include[href]",
- "ch": "xsl:choose",
- "wh|xsl:when": "xsl:when[test]",
- "ot": "xsl:otherwise",
- "if": "xsl:if[test]",
- "par": "xsl:param[name]",
- "pare": "xsl:param[name select]",
- "var": "xsl:variable[name]",
- "vare": "xsl:variable[name select]",
- "wp": "xsl:with-param[name select]",
- "key": "xsl:key[name match use]",
- "elem": "xsl:element[name]",
- "attr": "xsl:attribute[name]",
- "attrs": "xsl:attribute-set[name]",
- "cp": "xsl:copy[select]",
- "co": "xsl:copy-of[select]",
- "val": "xsl:value-of[select]",
- "for|each": "xsl:for-each[select]",
- "tex": "xsl:text",
- "com": "xsl:comment",
- "msg": "xsl:message[terminate=no]",
- "fall": "xsl:fallback",
- "num": "xsl:number[value]",
- "nam": "namespace-alias[stylesheet-prefix result-prefix]",
- "pres": "xsl:preserve-space[elements]",
- "strip": "xsl:strip-space[elements]",
- "proc": "xsl:processing-instruction[name]",
- "sort": "xsl:sort[select order]",
- "choose": "xsl:choose>xsl:when+xsl:otherwise",
- "xsl": "!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}",
- "!!!": "{}"
-};
-
-var pugSnippets = {
- "!!!": "{doctype html}"
-};
-
-var variables = {
- "lang": "en",
- "locale": "en-US",
- "charset": "UTF-8",
- "indentation": "\t",
- "newline": "\n"
-};
-
-/**
- * Default syntaxes for abbreviation types
- */
-const defaultSyntaxes = {
- markup: 'html',
- stylesheet: 'css'
-};
-const defaultOptions$1 = {
- 'inlineElements': [
- 'a', 'abbr', 'acronym', 'applet', 'b', 'basefont', 'bdo',
- 'big', 'br', 'button', 'cite', 'code', 'del', 'dfn', 'em', 'font', 'i',
- 'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map', 'object', 'q',
- 's', 'samp', 'select', 'small', 'span', 'strike', 'strong', 'sub', 'sup',
- 'textarea', 'tt', 'u', 'var'
- ],
- 'output.indent': '\t',
- 'output.baseIndent': '',
- 'output.newline': '\n',
- 'output.tagCase': '',
- 'output.attributeCase': '',
- 'output.attributeQuotes': 'double',
- 'output.format': true,
- 'output.formatLeafNode': false,
- 'output.formatSkip': ['html'],
- 'output.formatForce': ['body'],
- 'output.inlineBreak': 3,
- 'output.compactBoolean': false,
- 'output.booleanAttributes': [
- 'contenteditable', 'seamless', 'async', 'autofocus',
- 'autoplay', 'checked', 'controls', 'defer', 'disabled', 'formnovalidate',
- 'hidden', 'ismap', 'loop', 'multiple', 'muted', 'novalidate', 'readonly',
- 'required', 'reversed', 'selected', 'typemustmatch'
- ],
- 'output.reverseAttributes': false,
- 'output.selfClosingStyle': 'html',
- 'output.field': (index, placeholder) => placeholder,
- 'output.text': text => text,
- 'markup.href': true,
- 'comment.enabled': false,
- 'comment.trigger': ['id', 'class'],
- 'comment.before': '',
- 'comment.after': '\n',
- 'bem.enabled': false,
- 'bem.element': '__',
- 'bem.modifier': '_',
- 'jsx.enabled': false,
- 'stylesheet.keywords': ['auto', 'inherit', 'unset', 'none'],
- 'stylesheet.unitless': ['z-index', 'line-height', 'opacity', 'font-weight', 'zoom', 'flex', 'flex-grow', 'flex-shrink'],
- 'stylesheet.shortHex': true,
- 'stylesheet.between': ': ',
- 'stylesheet.after': ';',
- 'stylesheet.intUnit': 'px',
- 'stylesheet.floatUnit': 'em',
- 'stylesheet.unitAliases': { e: 'em', p: '%', x: 'ex', r: 'rem' },
- 'stylesheet.json': false,
- 'stylesheet.jsonDoubleQuotes': false,
- 'stylesheet.fuzzySearchMinScore': 0
-};
-const defaultConfig = {
- type: 'markup',
- syntax: 'html',
- variables,
- snippets: {},
- options: defaultOptions$1
-};
-/**
- * Default per-syntax config
- */
-const syntaxConfig = {
- markup: {
- snippets: parseSnippets(markupSnippets),
- },
- xhtml: {
- options: {
- 'output.selfClosingStyle': 'xhtml'
- }
- },
- xml: {
- options: {
- 'output.selfClosingStyle': 'xml'
- }
- },
- xsl: {
- snippets: parseSnippets(xslSnippets),
- options: {
- 'output.selfClosingStyle': 'xml'
- }
- },
- jsx: {
- options: {
- 'jsx.enabled': true,
- 'markup.attributes': {
- 'class': 'className',
- 'class*': 'styleName',
- 'for': 'htmlFor'
- },
- 'markup.valuePrefix': {
- 'class*': 'styles'
- }
- }
- },
- vue: {
- options: {
- 'markup.attributes': {
- 'class*': ':class',
- }
- }
- },
- svelte: {
- options: {
- 'jsx.enabled': true
- }
- },
- pug: {
- snippets: parseSnippets(pugSnippets)
- },
- stylesheet: {
- snippets: parseSnippets(stylesheetSnippets)
- },
- sass: {
- options: {
- 'stylesheet.after': ''
- }
- },
- stylus: {
- options: {
- 'stylesheet.between': ' ',
- 'stylesheet.after': '',
- }
- }
-};
-/**
- * Parses raw snippets definitions with possibly multiple keys into a plan
- * snippet map
- */
-function parseSnippets(snippets) {
- const result = {};
- Object.keys(snippets).forEach(k => {
- for (const name of k.split('|')) {
- result[name] = snippets[k];
- }
- });
- return result;
-}
-function resolveConfig(config = {}, globals = {}) {
- const type = config.type || 'markup';
- const syntax = config.syntax || defaultSyntaxes[type];
- return Object.assign(Object.assign(Object.assign({}, defaultConfig), config), { type,
- syntax, variables: mergedData(type, syntax, 'variables', config, globals), snippets: mergedData(type, syntax, 'snippets', config, globals), options: mergedData(type, syntax, 'options', config, globals) });
-}
-function mergedData(type, syntax, key, config, globals = {}) {
- const typeDefaults = syntaxConfig[type];
- const typeOverride = globals[type];
- const syntaxDefaults = syntaxConfig[syntax];
- const syntaxOverride = globals[syntax];
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaultConfig[key]), (typeDefaults && typeDefaults[key])), (syntaxDefaults && syntaxDefaults[key])), (typeOverride && typeOverride[key])), (syntaxOverride && syntaxOverride[key])), config[key]);
-}
-
-/**
- * Creates structure for scanning given string in backward direction
- */
-function backwardScanner(text, start = 0) {
- return { text, start, pos: text.length };
-}
-/**
- * Check if given scanner position is at start of scanned text
- */
-function sol(scanner) {
- return scanner.pos === scanner.start;
-}
-/**
- * “Peeks” character code an current scanner location without advancing it
- */
-function peek(scanner, offset = 0) {
- return scanner.text.charCodeAt(scanner.pos - 1 + offset);
-}
-/**
- * Returns current character code and moves character location one symbol back
- */
-function previous(scanner) {
- if (!sol(scanner)) {
- return scanner.text.charCodeAt(--scanner.pos);
- }
-}
-/**
- * Consumes current character code if it matches given `match` code or function
- */
-function consume(scanner, match) {
- if (sol(scanner)) {
- return false;
- }
- const ok = typeof match === 'function'
- ? match(peek(scanner))
- : match === peek(scanner);
- if (ok) {
- scanner.pos--;
- }
- return !!ok;
-}
-function consumeWhile(scanner, match) {
- const start = scanner.pos;
- while (consume(scanner, match)) {
- // empty
- }
- return scanner.pos < start;
-}
-
-var Chars$1;
-(function (Chars) {
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
- Chars[Chars["Escape"] = 92] = "Escape";
-})(Chars$1 || (Chars$1 = {}));
-/**
- * Check if given character code is a quote
- */
-function isQuote(c) {
- return c === Chars$1.SingleQuote || c === Chars$1.DoubleQuote;
-}
-/**
- * Consumes quoted value, if possible
- * @return Returns `true` is value was consumed
- */
-function consumeQuoted(scanner) {
- const start = scanner.pos;
- const quote = previous(scanner);
- if (isQuote(quote)) {
- while (!sol(scanner)) {
- if (previous(scanner) === quote && peek(scanner) !== Chars$1.Escape) {
- return true;
- }
- }
- }
- scanner.pos = start;
- return false;
-}
-
-var Brackets;
-(function (Brackets) {
- Brackets[Brackets["SquareL"] = 91] = "SquareL";
- Brackets[Brackets["SquareR"] = 93] = "SquareR";
- Brackets[Brackets["RoundL"] = 40] = "RoundL";
- Brackets[Brackets["RoundR"] = 41] = "RoundR";
- Brackets[Brackets["CurlyL"] = 123] = "CurlyL";
- Brackets[Brackets["CurlyR"] = 125] = "CurlyR";
-})(Brackets || (Brackets = {}));
-const bracePairs = {
- [Brackets.SquareL]: Brackets.SquareR,
- [Brackets.RoundL]: Brackets.RoundR,
- [Brackets.CurlyL]: Brackets.CurlyR,
-};
-
-var Chars;
-(function (Chars) {
- Chars[Chars["Tab"] = 9] = "Tab";
- Chars[Chars["Space"] = 32] = "Space";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `=` character */
- Chars[Chars["Equals"] = 61] = "Equals";
- /** `<` character */
- Chars[Chars["AngleLeft"] = 60] = "AngleLeft";
- /** `>` character */
- Chars[Chars["AngleRight"] = 62] = "AngleRight";
-})(Chars || (Chars = {}));
-/**
- * Check if given reader’s current position points at the end of HTML tag
- */
-function isHtml(scanner) {
- const start = scanner.pos;
- if (!consume(scanner, Chars.AngleRight)) {
- return false;
- }
- let ok = false;
- consume(scanner, Chars.Slash); // possibly self-closed element
- while (!sol(scanner)) {
- consumeWhile(scanner, isWhiteSpace);
- if (consumeIdent(scanner)) {
- // ate identifier: could be a tag name, boolean attribute or unquoted
- // attribute value
- if (consume(scanner, Chars.Slash)) {
- // either closing tag or invalid tag
- ok = consume(scanner, Chars.AngleLeft);
- break;
- }
- else if (consume(scanner, Chars.AngleLeft)) {
- // opening tag
- ok = true;
- break;
- }
- else if (consume(scanner, isWhiteSpace)) {
- // boolean attribute
- continue;
- }
- else if (consume(scanner, Chars.Equals)) {
- // simple unquoted value or invalid attribute
- if (consumeIdent(scanner)) {
- continue;
- }
- break;
- }
- else if (consumeAttributeWithUnquotedValue(scanner)) {
- // identifier was a part of unquoted value
- ok = true;
- break;
- }
- // invalid tag
- break;
- }
- if (consumeAttribute(scanner)) {
- continue;
- }
- break;
- }
- scanner.pos = start;
- return ok;
-}
-/**
- * Consumes HTML attribute from given string.
- * @return `true` if attribute was consumed.
- */
-function consumeAttribute(scanner) {
- return consumeAttributeWithQuotedValue(scanner) || consumeAttributeWithUnquotedValue(scanner);
-}
-function consumeAttributeWithQuotedValue(scanner) {
- const start = scanner.pos;
- if (consumeQuoted(scanner) && consume(scanner, Chars.Equals) && consumeIdent(scanner)) {
- return true;
- }
- scanner.pos = start;
- return false;
-}
-function consumeAttributeWithUnquotedValue(scanner) {
- const start = scanner.pos;
- const stack = [];
- while (!sol(scanner)) {
- const ch = peek(scanner);
- if (isCloseBracket(ch)) {
- stack.push(ch);
- }
- else if (isOpenBracket(ch)) {
- if (stack.pop() !== bracePairs[ch]) {
- // Unexpected open bracket
- break;
- }
- }
- else if (!isUnquotedValue(ch)) {
- break;
- }
- scanner.pos--;
- }
- if (start !== scanner.pos && consume(scanner, Chars.Equals) && consumeIdent(scanner)) {
- return true;
- }
- scanner.pos = start;
- return false;
-}
-/**
- * Consumes HTML identifier from stream
- */
-function consumeIdent(scanner) {
- return consumeWhile(scanner, isIdent);
-}
-/**
- * Check if given character code belongs to HTML identifier
- */
-function isIdent(ch) {
- return ch === Chars.Colon || ch === Chars.Dash || isAlpha(ch) || isNumber(ch);
-}
-/**
- * Check if given character code is alpha code (letter though A to Z)
- */
-function isAlpha(ch) {
- ch &= ~32; // quick hack to convert any char code to uppercase char code
- return ch >= 65 && ch <= 90; // A-Z
-}
-/**
- * Check if given code is a number
- */
-function isNumber(ch) {
- return ch > 47 && ch < 58;
-}
-/**
- * Check if given code is a whitespace
- */
-function isWhiteSpace(ch) {
- return ch === Chars.Space || ch === Chars.Tab;
-}
-/**
- * Check if given code may belong to unquoted attribute value
- */
-function isUnquotedValue(ch) {
- return !isNaN(ch) && ch !== Chars.Equals && !isWhiteSpace(ch) && !isQuote(ch);
-}
-function isOpenBracket(ch) {
- return ch === Brackets.CurlyL || ch === Brackets.RoundL || ch === Brackets.SquareL;
-}
-function isCloseBracket(ch) {
- return ch === Brackets.CurlyR || ch === Brackets.RoundR || ch === Brackets.SquareR;
-}
-
-const code = (ch) => ch.charCodeAt(0);
-const specialChars = '#.*:$-_!@%^+>/'.split('').map(code);
-const defaultOptions = {
- type: 'markup',
- lookAhead: true,
- prefix: ''
-};
-/**
- * Extracts Emmet abbreviation from given string.
- * The goal of this module is to extract abbreviation from current editor’s line,
- * e.g. like this: `.foo[title=bar|]` -> `.foo[title=bar]`, where
- * `|` is a current caret position.
- * @param line A text line where abbreviation should be expanded
- * @param pos Caret position in line. If not given, uses end of line
- * @param options Extracting options
- */
-function extractAbbreviation(line, pos = line.length, options = {}) {
- // make sure `pos` is within line range
- const opt = Object.assign(Object.assign({}, defaultOptions), options);
- pos = Math.min(line.length, Math.max(0, pos == null ? line.length : pos));
- if (opt.lookAhead) {
- pos = offsetPastAutoClosed(line, pos, opt);
- }
- let ch;
- const start = getStartOffset(line, pos, opt.prefix || '');
- if (start === -1) {
- return void 0;
- }
- const scanner = backwardScanner(line, start);
- scanner.pos = pos;
- const stack = [];
- while (!sol(scanner)) {
- ch = peek(scanner);
- if (stack.includes(Brackets.CurlyR)) {
- if (ch === Brackets.CurlyR) {
- stack.push(ch);
- scanner.pos--;
- continue;
- }
- if (ch !== Brackets.CurlyL) {
- scanner.pos--;
- continue;
- }
- }
- if (isCloseBrace(ch, opt.type)) {
- stack.push(ch);
- }
- else if (isOpenBrace(ch, opt.type)) {
- if (stack.pop() !== bracePairs[ch]) {
- // unexpected brace
- break;
- }
- }
- else if (stack.includes(Brackets.SquareR) || stack.includes(Brackets.CurlyR)) {
- // respect all characters inside attribute sets or text nodes
- scanner.pos--;
- continue;
- }
- else if (isHtml(scanner) || !isAbbreviation(ch)) {
- break;
- }
- scanner.pos--;
- }
- if (!stack.length && scanner.pos !== pos) {
- // Found something, remove some invalid symbols from the
- // beginning and return abbreviation
- const abbreviation = line.slice(scanner.pos, pos).replace(/^[*+>^]+/, '');
- return {
- abbreviation,
- location: pos - abbreviation.length,
- start: options.prefix
- ? start - options.prefix.length
- : pos - abbreviation.length,
- end: pos
- };
- }
-}
-/**
- * Returns new `line` index which is right after characters beyound `pos` that
- * editor will likely automatically close, e.g. }, ], and quotes
- */
-function offsetPastAutoClosed(line, pos, options) {
- // closing quote is allowed only as a next character
- if (isQuote(line.charCodeAt(pos))) {
- pos++;
- }
- // offset pointer until non-autoclosed character is found
- while (isCloseBrace(line.charCodeAt(pos), options.type)) {
- pos++;
- }
- return pos;
-}
-/**
- * Returns start offset (left limit) in `line` where we should stop looking for
- * abbreviation: it’s nearest to `pos` location of `prefix` token
- */
-function getStartOffset(line, pos, prefix) {
- if (!prefix) {
- return 0;
- }
- const scanner = backwardScanner(line);
- const compiledPrefix = prefix.split('').map(code);
- scanner.pos = pos;
- let result;
- while (!sol(scanner)) {
- if (consumePair(scanner, Brackets.SquareR, Brackets.SquareL) || consumePair(scanner, Brackets.CurlyR, Brackets.CurlyL)) {
- continue;
- }
- result = scanner.pos;
- if (consumeArray(scanner, compiledPrefix)) {
- return result;
- }
- scanner.pos--;
- }
- return -1;
-}
-/**
- * Consumes full character pair, if possible
- */
-function consumePair(scanner, close, open) {
- const start = scanner.pos;
- if (consume(scanner, close)) {
- while (!sol(scanner)) {
- if (consume(scanner, open)) {
- return true;
- }
- scanner.pos--;
- }
- }
- scanner.pos = start;
- return false;
-}
-/**
- * Consumes all character codes from given array, right-to-left, if possible
- */
-function consumeArray(scanner, arr) {
- const start = scanner.pos;
- let consumed = false;
- for (let i = arr.length - 1; i >= 0 && !sol(scanner); i--) {
- if (!consume(scanner, arr[i])) {
- break;
- }
- consumed = i === 0;
- }
- if (!consumed) {
- scanner.pos = start;
- }
- return consumed;
-}
-function isAbbreviation(ch) {
- return (ch > 64 && ch < 91) // uppercase letter
- || (ch > 96 && ch < 123) // lowercase letter
- || (ch > 47 && ch < 58) // number
- || specialChars.includes(ch); // special character
-}
-function isOpenBrace(ch, syntax) {
- return ch === Brackets.RoundL || (syntax === 'markup' && (ch === Brackets.SquareL || ch === Brackets.CurlyL));
-}
-function isCloseBrace(ch, syntax) {
- return ch === Brackets.RoundR || (syntax === 'markup' && (ch === Brackets.SquareR || ch === Brackets.CurlyR));
-}
-
-function expandAbbreviation(abbr, config) {
- const resolvedConfig = resolveConfig(config);
- return resolvedConfig.type === 'stylesheet'
- ? stylesheet(abbr, resolvedConfig)
- : markup(abbr, resolvedConfig);
-}
-/**
- * Expands given *markup* abbreviation (e.g. regular Emmet abbreviation that
- * produces structured output like HTML) and outputs it according to options
- * provided in config
- */
-function markup(abbr, config) {
- return stringify(parse$1(abbr, config), config);
-}
-/**
- * Expands given *stylesheet* abbreviation (a special Emmet abbreviation designed for
- * stylesheet languages like CSS, SASS etc.) and outputs it according to options
- * provided in config
- */
-function stylesheet(abbr, config) {
- return css(parse(abbr, config), config);
-}
-
-exports.CSSAbbreviationScope = CSSAbbreviationScope;
-exports.default = expandAbbreviation;
-exports.extract = extractAbbreviation;
-exports.markup = markup;
-exports.markupAbbreviation = parseAbbreviation;
-exports.parseMarkup = parse$1;
-exports.parseStylesheet = parse;
-exports.parseStylesheetSnippets = convertSnippets;
-exports.resolveConfig = resolveConfig;
-exports.stringifyMarkup = stringify;
-exports.stringifyStylesheet = css;
-exports.stylesheet = stylesheet;
-exports.stylesheetAbbreviation = parse$2;
-//# sourceMappingURL=emmet.cjs.map
diff --git a/node_modules/emmet/dist/emmet.cjs.map b/node_modules/emmet/dist/emmet.cjs.map
deleted file mode 100644
index 2ef190a..0000000
--- a/node_modules/emmet/dist/emmet.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"emmet.cjs","sources":["../packages/scanner/scanner.js","../packages/abbreviation/dist/index.js","../packages/css-abbreviation/dist/index.js","../src/markup/attributes.ts","../src/markup/utils.ts","../src/markup/snippets.ts","../src/output-stream.ts","../src/markup/implicit-tag.ts","../src/markup/lorem/latin.json","../src/markup/lorem/russian.json","../src/markup/lorem/spanish.json","../src/markup/lorem/index.ts","../src/markup/addon/xsl.ts","../src/markup/addon/bem.ts","../src/markup/format/walk.ts","../src/markup/format/utils.ts","../src/markup/format/template.ts","../src/markup/format/comment.ts","../src/markup/format/html.ts","../src/markup/format/indent-format.ts","../src/markup/format/haml.ts","../src/markup/format/slim.ts","../src/markup/format/pug.ts","../src/markup/index.ts","../src/stylesheet/snippets.ts","../src/stylesheet/score.ts","../src/stylesheet/color.ts","../src/stylesheet/format.ts","../src/stylesheet/index.ts","../src/snippets/html.json","../src/snippets/css.json","../src/snippets/xsl.json","../src/snippets/pug.json","../src/snippets/variables.json","../src/config.ts","../src/extract-abbreviation/reader.ts","../src/extract-abbreviation/quotes.ts","../src/extract-abbreviation/brackets.ts","../src/extract-abbreviation/is-html.ts","../src/extract-abbreviation/index.ts","../src/index.ts"],"sourcesContent":["const defaultQuotedOptions = {\n escape: 92,\n throws: false\n};\n/**\n * Check if given code is a number\n */\nfunction isNumber(code) {\n return code > 47 && code < 58;\n}\n/**\n * Check if given character code is alpha code (letter through A to Z)\n */\nfunction isAlpha(code, from, to) {\n from = from || 65; // A\n to = to || 90; // Z\n code &= ~32; // quick hack to convert any char code to uppercase char code\n return code >= from && code <= to;\n}\n/**\n * Check if given character code is alpha-numeric (letter through A to Z or number)\n */\nfunction isAlphaNumeric(code) {\n return isNumber(code) || isAlpha(code);\n}\nfunction isAlphaNumericWord(code) {\n return isNumber(code) || isAlphaWord(code);\n}\nfunction isAlphaWord(code) {\n return code === 95 /* _ */ || isAlpha(code);\n}\n/**\n * Check for Umlauts i.e. ä, Ä, ö, Ö, ü and Ü\n */\nfunction isUmlaut(code) {\n return code === 196\n || code == 214\n || code === 220\n || code === 228\n || code === 246\n || code === 252;\n}\n/**\n * Check if given character code is a white-space character: a space character\n * or line breaks\n */\nfunction isWhiteSpace(code) {\n return code === 32 /* space */\n || code === 9 /* tab */\n || code === 160; /* non-breaking space */\n}\n/**\n * Check if given character code is a space character\n */\nfunction isSpace(code) {\n return isWhiteSpace(code)\n || code === 10 /* LF */\n || code === 13; /* CR */\n}\n/**\n * Consumes 'single' or \"double\"-quoted string from given string, if possible\n * @return `true` if quoted string was consumed. The contents of quoted string\n * will be available as `stream.current()`\n */\nfunction eatQuoted(stream, options) {\n options = Object.assign(Object.assign({}, defaultQuotedOptions), options);\n const start = stream.pos;\n const quote = stream.peek();\n if (stream.eat(isQuote)) {\n while (!stream.eof()) {\n switch (stream.next()) {\n case quote:\n stream.start = start;\n return true;\n case options.escape:\n stream.next();\n break;\n }\n }\n // If we’re here then stream wasn’t properly consumed.\n // Revert stream and decide what to do\n stream.pos = start;\n if (options.throws) {\n throw stream.error('Unable to consume quoted string');\n }\n }\n return false;\n}\n/**\n * Check if given character code is a quote character\n */\nfunction isQuote(code) {\n return code === 39 /* ' */ || code === 34 /* \" */;\n}\n/**\n * Eats paired characters substring, for example `(foo)` or `[bar]`\n * @param open Character code of pair opening\n * @param close Character code of pair closing\n * @return Returns `true` if character pair was successfully consumed, it’s\n * content will be available as `stream.current()`\n */\nfunction eatPair(stream, open, close, options) {\n options = Object.assign(Object.assign({}, defaultQuotedOptions), options);\n const start = stream.pos;\n if (stream.eat(open)) {\n let stack = 1;\n let ch;\n while (!stream.eof()) {\n if (eatQuoted(stream, options)) {\n continue;\n }\n ch = stream.next();\n if (ch === open) {\n stack++;\n }\n else if (ch === close) {\n stack--;\n if (!stack) {\n stream.start = start;\n return true;\n }\n }\n else if (ch === options.escape) {\n stream.next();\n }\n }\n // If we’re here then paired character can’t be consumed\n stream.pos = start;\n if (options.throws) {\n throw stream.error(`Unable to find matching pair for ${String.fromCharCode(open)}`);\n }\n }\n return false;\n}\n\n/**\n * A streaming, character code-based string reader\n */\nclass Scanner {\n constructor(str, start, end) {\n if (end == null && typeof str === 'string') {\n end = str.length;\n }\n this.string = str;\n this.pos = this.start = start || 0;\n this.end = end || 0;\n }\n /**\n * Returns true only if the stream is at the end of the file.\n */\n eof() {\n return this.pos >= this.end;\n }\n /**\n * Creates a new stream instance which is limited to given `start` and `end`\n * range. E.g. its `eof()` method will look at `end` property, not actual\n * stream end\n */\n limit(start, end) {\n return new Scanner(this.string, start, end);\n }\n /**\n * Returns the next character code in the stream without advancing it.\n * Will return NaN at the end of the file.\n */\n peek() {\n return this.string.charCodeAt(this.pos);\n }\n /**\n * Returns the next character in the stream and advances it.\n * Also returns undefined
when no more characters are available.\n */\n next() {\n if (this.pos < this.string.length) {\n return this.string.charCodeAt(this.pos++);\n }\n }\n /**\n * `match` can be a character code or a function that takes a character code\n * and returns a boolean. If the next character in the stream 'matches'\n * the given argument, it is consumed and returned.\n * Otherwise, `false` is returned.\n */\n eat(match) {\n const ch = this.peek();\n const ok = typeof match === 'function' ? match(ch) : ch === match;\n if (ok) {\n this.next();\n }\n return ok;\n }\n /**\n * Repeatedly calls eat
with the given argument, until it\n * fails. Returns true
if any characters were eaten.\n */\n eatWhile(match) {\n const start = this.pos;\n while (!this.eof() && this.eat(match)) { /* */ }\n return this.pos !== start;\n }\n /**\n * Backs up the stream n characters. Backing it up further than the\n * start of the current token will cause things to break, so be careful.\n */\n backUp(n) {\n this.pos -= (n || 1);\n }\n /**\n * Get the string between the start of the current token and the\n * current stream position.\n */\n current() {\n return this.substring(this.start, this.pos);\n }\n /**\n * Returns substring for given range\n */\n substring(start, end) {\n return this.string.slice(start, end);\n }\n /**\n * Creates error object with current stream state\n */\n error(message, pos = this.pos) {\n return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);\n }\n}\nclass ScannerError extends Error {\n constructor(message, pos, str) {\n super(message);\n this.pos = pos;\n this.string = str;\n }\n}\n\nexport { ScannerError, Scanner as default, eatPair, eatQuoted, isAlpha, isAlphaNumeric, isAlphaNumericWord, isAlphaWord, isNumber, isQuote, isSpace, isUmlaut, isWhiteSpace };\n//# sourceMappingURL=scanner.js.map\n","import Scanner, { isNumber, isQuote as isQuote$1, isSpace, isAlpha, isAlphaNumericWord, isUmlaut, ScannerError } from '@emmetio/scanner';\n\nfunction tokenScanner(tokens) {\n return {\n tokens,\n start: 0,\n pos: 0,\n size: tokens.length\n };\n}\nfunction peek(scanner) {\n return scanner.tokens[scanner.pos];\n}\nfunction next(scanner) {\n return scanner.tokens[scanner.pos++];\n}\nfunction slice(scanner, from = scanner.start, to = scanner.pos) {\n return scanner.tokens.slice(from, to);\n}\nfunction readable(scanner) {\n return scanner.pos < scanner.size;\n}\nfunction consume(scanner, test) {\n const token = peek(scanner);\n if (token && test(token)) {\n scanner.pos++;\n return true;\n }\n return false;\n}\nfunction error(scanner, message, token = peek(scanner)) {\n if (token && token.start != null) {\n message += ` at ${token.start}`;\n }\n const err = new Error(message);\n err['pos'] = token && token.start;\n return err;\n}\n\nfunction abbreviation(abbr, options = {}) {\n const scanner = tokenScanner(abbr);\n const result = statements(scanner, options);\n if (readable(scanner)) {\n throw error(scanner, 'Unexpected character');\n }\n return result;\n}\nfunction statements(scanner, options) {\n const result = {\n type: 'TokenGroup',\n elements: []\n };\n let ctx = result;\n let node;\n const stack = [];\n while (readable(scanner)) {\n if (node = element(scanner, options) || group(scanner, options)) {\n ctx.elements.push(node);\n if (consume(scanner, isChildOperator)) {\n stack.push(ctx);\n ctx = node;\n }\n else if (consume(scanner, isSiblingOperator)) {\n continue;\n }\n else if (consume(scanner, isClimbOperator)) {\n do {\n if (stack.length) {\n ctx = stack.pop();\n }\n } while (consume(scanner, isClimbOperator));\n }\n }\n else {\n break;\n }\n }\n return result;\n}\n/**\n * Consumes group from given scanner\n */\nfunction group(scanner, options) {\n if (consume(scanner, isGroupStart)) {\n const result = statements(scanner, options);\n const token = next(scanner);\n if (isBracket(token, 'group', false)) {\n result.repeat = repeater$1(scanner);\n }\n return result;\n }\n}\n/**\n * Consumes single element from given scanner\n */\nfunction element(scanner, options) {\n let attr;\n const elem = {\n type: 'TokenElement',\n name: void 0,\n attributes: void 0,\n value: void 0,\n repeat: void 0,\n selfClose: false,\n elements: []\n };\n if (elementName(scanner, options)) {\n elem.name = slice(scanner);\n }\n while (readable(scanner)) {\n scanner.start = scanner.pos;\n if (!elem.repeat && !isEmpty(elem) && consume(scanner, isRepeater)) {\n elem.repeat = scanner.tokens[scanner.pos - 1];\n }\n else if (!elem.value && text(scanner)) {\n elem.value = getText(scanner);\n }\n else if (attr = shortAttribute(scanner, 'id', options) || shortAttribute(scanner, 'class', options) || attributeSet(scanner)) {\n if (!elem.attributes) {\n elem.attributes = Array.isArray(attr) ? attr.slice() : [attr];\n }\n else {\n elem.attributes = elem.attributes.concat(attr);\n }\n }\n else {\n if (!isEmpty(elem) && consume(scanner, isCloseOperator)) {\n elem.selfClose = true;\n if (!elem.repeat && consume(scanner, isRepeater)) {\n elem.repeat = scanner.tokens[scanner.pos - 1];\n }\n }\n break;\n }\n }\n return !isEmpty(elem) ? elem : void 0;\n}\n/**\n * Consumes attribute set from given scanner\n */\nfunction attributeSet(scanner) {\n if (consume(scanner, isAttributeSetStart)) {\n const attributes = [];\n let attr;\n while (readable(scanner)) {\n if (attr = attribute(scanner)) {\n attributes.push(attr);\n }\n else if (consume(scanner, isAttributeSetEnd)) {\n break;\n }\n else if (!consume(scanner, isWhiteSpace)) {\n throw error(scanner, `Unexpected \"${peek(scanner).type}\" token`);\n }\n }\n return attributes;\n }\n}\n/**\n * Consumes attribute shorthand (class or id) from given scanner\n */\nfunction shortAttribute(scanner, type, options) {\n if (isOperator(peek(scanner), type)) {\n scanner.pos++;\n // Consume multiple operators\n let count = 1;\n while (isOperator(peek(scanner), type)) {\n scanner.pos++;\n count++;\n }\n const attr = {\n name: [createLiteral(type)]\n };\n if (count > 1) {\n attr.multiple = true;\n }\n // Consume expression after shorthand start for React-like components\n if (options.jsx && text(scanner)) {\n attr.value = getText(scanner);\n attr.expression = true;\n }\n else {\n attr.value = literal$1(scanner) ? slice(scanner) : void 0;\n }\n return attr;\n }\n}\n/**\n * Consumes single attribute from given scanner\n */\nfunction attribute(scanner) {\n if (quoted(scanner)) {\n // Consumed quoted value: it’s a value for default attribute\n return {\n value: slice(scanner)\n };\n }\n if (literal$1(scanner, true)) {\n const name = slice(scanner);\n let value;\n if (consume(scanner, isEquals)) {\n if (quoted(scanner) || literal$1(scanner, true)) {\n value = slice(scanner);\n }\n }\n return { name, value };\n }\n}\nfunction repeater$1(scanner) {\n return isRepeater(peek(scanner))\n ? scanner.tokens[scanner.pos++]\n : void 0;\n}\n/**\n * Consumes quoted value from given scanner, if possible\n */\nfunction quoted(scanner) {\n const start = scanner.pos;\n const quote = peek(scanner);\n if (isQuote(quote)) {\n scanner.pos++;\n while (readable(scanner)) {\n if (isQuote(next(scanner), quote.single)) {\n scanner.start = start;\n return true;\n }\n }\n throw error(scanner, 'Unclosed quote', quote);\n }\n return false;\n}\n/**\n * Consumes literal (unquoted value) from given scanner\n */\nfunction literal$1(scanner, allowBrackets) {\n const start = scanner.pos;\n const brackets = {\n attribute: 0,\n expression: 0,\n group: 0\n };\n while (readable(scanner)) {\n const token = peek(scanner);\n if (brackets.expression) {\n // If we’re inside expression, we should consume all content in it\n if (isBracket(token, 'expression')) {\n brackets[token.context] += token.open ? 1 : -1;\n }\n }\n else if (isQuote(token) || isOperator(token) || isWhiteSpace(token) || isRepeater(token)) {\n break;\n }\n else if (isBracket(token)) {\n if (!allowBrackets) {\n break;\n }\n if (token.open) {\n brackets[token.context]++;\n }\n else if (!brackets[token.context]) {\n // Stop if found unmatched closing brace: it must be handled\n // by parent consumer\n break;\n }\n else {\n brackets[token.context]--;\n }\n }\n scanner.pos++;\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return true;\n }\n return false;\n}\n/**\n * Consumes element name from given scanner\n */\nfunction elementName(scanner, options) {\n const start = scanner.pos;\n if (options.jsx && consume(scanner, isCapitalizedLiteral)) {\n // Check for edge case: consume immediate capitalized class names\n // for React-like components, e.g. `Foo.Bar.Baz`\n while (readable(scanner)) {\n const { pos } = scanner;\n if (!consume(scanner, isClassNameOperator) || !consume(scanner, isCapitalizedLiteral)) {\n scanner.pos = pos;\n break;\n }\n }\n }\n while (readable(scanner) && consume(scanner, isElementName$1)) {\n // empty\n }\n if (scanner.pos !== start) {\n scanner.start = start;\n return true;\n }\n return false;\n}\n/**\n * Consumes text value from given scanner\n */\nfunction text(scanner) {\n const start = scanner.pos;\n if (consume(scanner, isTextStart)) {\n let brackets = 0;\n while (readable(scanner)) {\n const token = next(scanner);\n if (isBracket(token, 'expression')) {\n if (token.open) {\n brackets++;\n }\n else if (!brackets) {\n break;\n }\n else {\n brackets--;\n }\n }\n }\n scanner.start = start;\n return true;\n }\n return false;\n}\nfunction getText(scanner) {\n let from = scanner.start;\n let to = scanner.pos;\n if (isBracket(scanner.tokens[from], 'expression', true)) {\n from++;\n }\n if (isBracket(scanner.tokens[to - 1], 'expression', false)) {\n to--;\n }\n return slice(scanner, from, to);\n}\nfunction isBracket(token, context, isOpen) {\n return Boolean(token && token.type === 'Bracket'\n && (!context || token.context === context)\n && (isOpen == null || token.open === isOpen));\n}\nfunction isOperator(token, type) {\n return Boolean(token && token.type === 'Operator' && (!type || token.operator === type));\n}\nfunction isQuote(token, isSingle) {\n return Boolean(token && token.type === 'Quote' && (isSingle == null || token.single === isSingle));\n}\nfunction isWhiteSpace(token) {\n return Boolean(token && token.type === 'WhiteSpace');\n}\nfunction isEquals(token) {\n return isOperator(token, 'equal');\n}\nfunction isRepeater(token) {\n return Boolean(token && token.type === 'Repeater');\n}\nfunction isLiteral(token) {\n return token.type === 'Literal';\n}\nfunction isCapitalizedLiteral(token) {\n if (isLiteral(token)) {\n const ch = token.value.charCodeAt(0);\n return ch >= 65 && ch <= 90;\n }\n return false;\n}\nfunction isElementName$1(token) {\n return token.type === 'Literal' || token.type === 'RepeaterNumber' || token.type === 'RepeaterPlaceholder';\n}\nfunction isClassNameOperator(token) {\n return isOperator(token, 'class');\n}\nfunction isAttributeSetStart(token) {\n return isBracket(token, 'attribute', true);\n}\nfunction isAttributeSetEnd(token) {\n return isBracket(token, 'attribute', false);\n}\nfunction isTextStart(token) {\n return isBracket(token, 'expression', true);\n}\nfunction isGroupStart(token) {\n return isBracket(token, 'group', true);\n}\nfunction createLiteral(value) {\n return { type: 'Literal', value };\n}\nfunction isEmpty(elem) {\n return !elem.name && !elem.value && !elem.attributes;\n}\nfunction isChildOperator(token) {\n return isOperator(token, 'child');\n}\nfunction isSiblingOperator(token) {\n return isOperator(token, 'sibling');\n}\nfunction isClimbOperator(token) {\n return isOperator(token, 'climb');\n}\nfunction isCloseOperator(token) {\n return isOperator(token, 'close');\n}\n\nvar Chars;\n(function (Chars) {\n /** `{` character */\n Chars[Chars[\"CurlyBracketOpen\"] = 123] = \"CurlyBracketOpen\";\n /** `}` character */\n Chars[Chars[\"CurlyBracketClose\"] = 125] = \"CurlyBracketClose\";\n /** `\\\\` character */\n Chars[Chars[\"Escape\"] = 92] = \"Escape\";\n /** `=` character */\n Chars[Chars[\"Equals\"] = 61] = \"Equals\";\n /** `[` character */\n Chars[Chars[\"SquareBracketOpen\"] = 91] = \"SquareBracketOpen\";\n /** `]` character */\n Chars[Chars[\"SquareBracketClose\"] = 93] = \"SquareBracketClose\";\n /** `*` character */\n Chars[Chars[\"Asterisk\"] = 42] = \"Asterisk\";\n /** `#` character */\n Chars[Chars[\"Hash\"] = 35] = \"Hash\";\n /** `$` character */\n Chars[Chars[\"Dollar\"] = 36] = \"Dollar\";\n /** `-` character */\n Chars[Chars[\"Dash\"] = 45] = \"Dash\";\n /** `.` character */\n Chars[Chars[\"Dot\"] = 46] = \"Dot\";\n /** `/` character */\n Chars[Chars[\"Slash\"] = 47] = \"Slash\";\n /** `:` character */\n Chars[Chars[\"Colon\"] = 58] = \"Colon\";\n /** `!` character */\n Chars[Chars[\"Excl\"] = 33] = \"Excl\";\n /** `@` character */\n Chars[Chars[\"At\"] = 64] = \"At\";\n /** `_` character */\n Chars[Chars[\"Underscore\"] = 95] = \"Underscore\";\n /** `(` character */\n Chars[Chars[\"RoundBracketOpen\"] = 40] = \"RoundBracketOpen\";\n /** `)` character */\n Chars[Chars[\"RoundBracketClose\"] = 41] = \"RoundBracketClose\";\n /** `+` character */\n Chars[Chars[\"Sibling\"] = 43] = \"Sibling\";\n /** `>` character */\n Chars[Chars[\"Child\"] = 62] = \"Child\";\n /** `^` character */\n Chars[Chars[\"Climb\"] = 94] = \"Climb\";\n /** `'` character */\n Chars[Chars[\"SingleQuote\"] = 39] = \"SingleQuote\";\n /** `\"\"` character */\n Chars[Chars[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n})(Chars || (Chars = {}));\n/**\n * If consumes escape character, sets current stream range to escaped value\n */\nfunction escaped(scanner) {\n if (scanner.eat(Chars.Escape)) {\n scanner.start = scanner.pos;\n if (!scanner.eof()) {\n scanner.pos++;\n }\n return true;\n }\n return false;\n}\n\nfunction tokenize(source) {\n const scanner = new Scanner(source);\n const result = [];\n const ctx = {\n group: 0,\n attribute: 0,\n expression: 0,\n quote: 0\n };\n let ch = 0;\n let token;\n while (!scanner.eof()) {\n ch = scanner.peek();\n token = getToken(scanner, ctx);\n if (token) {\n result.push(token);\n if (token.type === 'Quote') {\n ctx.quote = ch === ctx.quote ? 0 : ch;\n }\n else if (token.type === 'Bracket') {\n ctx[token.context] += token.open ? 1 : -1;\n }\n }\n else {\n throw scanner.error('Unexpected character');\n }\n }\n return result;\n}\n/**\n * Returns next token from given scanner, if possible\n */\nfunction getToken(scanner, ctx) {\n return field(scanner, ctx)\n || repeaterPlaceholder(scanner)\n || repeaterNumber(scanner)\n || repeater(scanner)\n || whiteSpace(scanner)\n || literal(scanner, ctx)\n || operator(scanner)\n || quote(scanner)\n || bracket(scanner);\n}\n/**\n * Consumes literal from given scanner\n */\nfunction literal(scanner, ctx) {\n const start = scanner.pos;\n const expressionStart = ctx.expression;\n let value = '';\n while (!scanner.eof()) {\n // Consume escaped sequence no matter of context\n if (escaped(scanner)) {\n value += scanner.current();\n continue;\n }\n const ch = scanner.peek();\n if (ch === Chars.Slash && !ctx.quote && !ctx.expression && !ctx.attribute) {\n // Special case for `/` character between numbers in class names\n const prev = scanner.string.charCodeAt(scanner.pos - 1);\n const next = scanner.string.charCodeAt(scanner.pos + 1);\n if (isNumber(prev) && isNumber(next)) {\n value += scanner.string[scanner.pos++];\n continue;\n }\n }\n if (ch === ctx.quote || ch === Chars.Dollar || isAllowedOperator(ch, ctx)) {\n // 1. Found matching quote\n // 2. The `$` character has special meaning in every context\n // 3. Depending on context, some characters should be treated as operators\n break;\n }\n if (expressionStart) {\n // Consume nested expressions, e.g. span{{foo}}\n if (ch === Chars.CurlyBracketOpen) {\n ctx.expression++;\n }\n else if (ch === Chars.CurlyBracketClose) {\n if (ctx.expression > expressionStart) {\n ctx.expression--;\n }\n else {\n break;\n }\n }\n }\n else if (!ctx.quote) {\n // Consuming element name\n if (!ctx.attribute && !isElementName(ch)) {\n break;\n }\n if (isAllowedSpace(ch, ctx) || isAllowedRepeater(ch, ctx) || isQuote$1(ch) || bracketType(ch)) {\n // Stop for characters not allowed in unquoted literal\n break;\n }\n }\n value += scanner.string[scanner.pos++];\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return {\n type: 'Literal',\n value,\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes white space characters as string literal from given scanner\n */\nfunction whiteSpace(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(isSpace)) {\n return {\n type: 'WhiteSpace',\n start,\n end: scanner.pos,\n value: scanner.substring(start, scanner.pos)\n };\n }\n}\n/**\n * Consumes quote from given scanner\n */\nfunction quote(scanner) {\n const ch = scanner.peek();\n if (isQuote$1(ch)) {\n return {\n type: 'Quote',\n single: ch === Chars.SingleQuote,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes bracket from given scanner\n */\nfunction bracket(scanner) {\n const ch = scanner.peek();\n const context = bracketType(ch);\n if (context) {\n return {\n type: 'Bracket',\n open: isOpenBracket(ch),\n context,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes operator from given scanner\n */\nfunction operator(scanner) {\n const op = operatorType(scanner.peek());\n if (op) {\n return {\n type: 'Operator',\n operator: op,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes node repeat token from current stream position and returns its\n * parsed value\n */\nfunction repeater(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Asterisk)) {\n scanner.start = scanner.pos;\n let count = 1;\n let implicit = false;\n if (scanner.eatWhile(isNumber)) {\n count = Number(scanner.current());\n }\n else {\n implicit = true;\n }\n return {\n type: 'Repeater',\n count,\n value: 0,\n implicit,\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes repeater placeholder `$#` from given scanner\n */\nfunction repeaterPlaceholder(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dollar) && scanner.eat(Chars.Hash)) {\n return {\n type: 'RepeaterPlaceholder',\n value: void 0,\n start,\n end: scanner.pos\n };\n }\n scanner.pos = start;\n}\n/**\n * Consumes numbering token like `$` from given scanner state\n */\nfunction repeaterNumber(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(Chars.Dollar)) {\n const size = scanner.pos - start;\n let reverse = false;\n let base = 1;\n let parent = 0;\n if (scanner.eat(Chars.At)) {\n // Consume numbering modifiers\n while (scanner.eat(Chars.Climb)) {\n parent++;\n }\n reverse = scanner.eat(Chars.Dash);\n scanner.start = scanner.pos;\n if (scanner.eatWhile(isNumber)) {\n base = Number(scanner.current());\n }\n }\n scanner.start = start;\n return {\n type: 'RepeaterNumber',\n size,\n reverse,\n base,\n parent,\n start,\n end: scanner.pos\n };\n }\n}\nfunction field(scanner, ctx) {\n const start = scanner.pos;\n // Fields are allowed inside expressions and attributes\n if ((ctx.expression || ctx.attribute) && scanner.eat(Chars.Dollar) && scanner.eat(Chars.CurlyBracketOpen)) {\n scanner.start = scanner.pos;\n let index;\n let name = '';\n if (scanner.eatWhile(isNumber)) {\n // It’s a field\n index = Number(scanner.current());\n name = scanner.eat(Chars.Colon) ? consumePlaceholder(scanner) : '';\n }\n else if (isAlpha(scanner.peek())) {\n // It’s a variable\n name = consumePlaceholder(scanner);\n }\n if (scanner.eat(Chars.CurlyBracketClose)) {\n return {\n type: 'Field',\n index, name,\n start,\n end: scanner.pos\n };\n }\n throw scanner.error('Expecting }');\n }\n // If we reached here then there’s no valid field here, revert\n // back to starting position\n scanner.pos = start;\n}\n/**\n * Consumes a placeholder: value right after `:` in field. Could be empty\n */\nfunction consumePlaceholder(stream) {\n const stack = [];\n stream.start = stream.pos;\n while (!stream.eof()) {\n if (stream.eat(Chars.CurlyBracketOpen)) {\n stack.push(stream.pos);\n }\n else if (stream.eat(Chars.CurlyBracketClose)) {\n if (!stack.length) {\n stream.pos--;\n break;\n }\n stack.pop();\n }\n else {\n stream.pos++;\n }\n }\n if (stack.length) {\n stream.pos = stack.pop();\n throw stream.error(`Expecting }`);\n }\n return stream.current();\n}\n/**\n * Check if given character code is an operator and it’s allowed in current context\n */\nfunction isAllowedOperator(ch, ctx) {\n const op = operatorType(ch);\n if (!op || ctx.quote || ctx.expression) {\n // No operators inside quoted values or expressions\n return false;\n }\n // Inside attributes, only `equals` is allowed\n return !ctx.attribute || op === 'equal';\n}\n/**\n * Check if given character is a space character and is allowed to be consumed\n * as a space token in current context\n */\nfunction isAllowedSpace(ch, ctx) {\n return isSpace(ch) && !ctx.expression;\n}\n/**\n * Check if given character can be consumed as repeater in current context\n */\nfunction isAllowedRepeater(ch, ctx) {\n return ch === Chars.Asterisk && !ctx.attribute && !ctx.expression;\n}\n/**\n * If given character is a bracket, returns it’s type\n */\nfunction bracketType(ch) {\n if (ch === Chars.RoundBracketOpen || ch === Chars.RoundBracketClose) {\n return 'group';\n }\n if (ch === Chars.SquareBracketOpen || ch === Chars.SquareBracketClose) {\n return 'attribute';\n }\n if (ch === Chars.CurlyBracketOpen || ch === Chars.CurlyBracketClose) {\n return 'expression';\n }\n}\n/**\n * If given character is an operator, returns it’s type\n */\nfunction operatorType(ch) {\n return (ch === Chars.Child && 'child')\n || (ch === Chars.Sibling && 'sibling')\n || (ch === Chars.Climb && 'climb')\n || (ch === Chars.Dot && 'class')\n || (ch === Chars.Hash && 'id')\n || (ch === Chars.Slash && 'close')\n || (ch === Chars.Equals && 'equal')\n || void 0;\n}\n/**\n * Check if given character is an open bracket\n */\nfunction isOpenBracket(ch) {\n return ch === Chars.CurlyBracketOpen\n || ch === Chars.SquareBracketOpen\n || ch === Chars.RoundBracketOpen;\n}\n/**\n * Check if given character is allowed in element name\n */\nfunction isElementName(ch) {\n return isAlphaNumericWord(ch)\n || isUmlaut(ch)\n || ch === Chars.Dash\n || ch === Chars.Colon\n || ch === Chars.Excl;\n}\n\nconst operators = {\n child: '>',\n class: '.',\n climb: '^',\n id: '#',\n equal: '=',\n close: '/',\n sibling: '+'\n};\nconst tokenVisitor = {\n Literal(token) {\n return token.value;\n },\n Quote(token) {\n return token.single ? '\\'' : '\"';\n },\n Bracket(token) {\n if (token.context === 'attribute') {\n return token.open ? '[' : ']';\n }\n else if (token.context === 'expression') {\n return token.open ? '{' : '}';\n }\n else {\n return token.open ? '(' : '}';\n }\n },\n Operator(token) {\n return operators[token.operator];\n },\n Field(token, state) {\n if (token.index != null) {\n // It’s a field: by default, return TextMate-compatible field\n return token.name\n ? `\\${${token.index}:${token.name}}`\n : `\\${${token.index}`;\n }\n else if (token.name) {\n // It’s a variable\n return state.getVariable(token.name);\n }\n return '';\n },\n RepeaterPlaceholder(token, state) {\n // Find closest implicit repeater\n let repeater;\n for (let i = state.repeaters.length - 1; i >= 0; i--) {\n if (state.repeaters[i].implicit) {\n repeater = state.repeaters[i];\n break;\n }\n }\n state.inserted = true;\n return state.getText(repeater && repeater.value);\n },\n RepeaterNumber(token, state) {\n let value = 1;\n const lastIx = state.repeaters.length - 1;\n // const repeaterIx = Math.max(0, state.repeaters.length - 1 - token.parent);\n const repeater = state.repeaters[lastIx];\n if (repeater) {\n value = token.reverse\n ? token.base + repeater.count - repeater.value - 1\n : token.base + repeater.value;\n if (token.parent) {\n const parentIx = Math.max(0, lastIx - token.parent);\n if (parentIx !== lastIx) {\n const parentRepeater = state.repeaters[parentIx];\n value += repeater.count * parentRepeater.value;\n }\n }\n }\n let result = String(value);\n while (result.length < token.size) {\n result = '0' + result;\n }\n return result;\n },\n WhiteSpace(token) {\n return token.value;\n }\n};\n/**\n * Converts given value token to string\n */\nfunction stringify(token, state) {\n if (!tokenVisitor[token.type]) {\n throw new Error(`Unknown token ${token.type}`);\n }\n return tokenVisitor[token.type](token, state);\n}\n\nconst urlRegex = /^((https?:|ftp:|file:)?\\/\\/|(www|ftp)\\.)[^ ]*$/;\nconst emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,5}$/;\n/**\n * Converts given token-based abbreviation into simplified and unrolled node-based\n * abbreviation\n */\nfunction convert(abbr, options = {}) {\n let textInserted = false;\n let cleanText;\n if (options.text) {\n if (Array.isArray(options.text)) {\n cleanText = options.text.filter(s => s.trim());\n }\n else {\n cleanText = options.text;\n }\n }\n const result = {\n type: 'Abbreviation',\n children: convertGroup(abbr, {\n inserted: false,\n repeaters: [],\n text: options.text,\n cleanText,\n repeatGuard: options.maxRepeat || Number.POSITIVE_INFINITY,\n getText(pos) {\n var _a;\n textInserted = true;\n let value;\n if (Array.isArray(options.text)) {\n if (pos !== undefined && pos >= 0 && pos < cleanText.length) {\n return cleanText[pos];\n }\n value = pos !== undefined ? options.text[pos] : options.text.join('\\n');\n }\n else {\n value = (_a = options.text) !== null && _a !== void 0 ? _a : '';\n }\n return value;\n },\n getVariable(name) {\n const varValue = options.variables && options.variables[name];\n return varValue != null ? varValue : name;\n }\n })\n };\n if (options.text != null && !textInserted) {\n // Text given but no implicitly repeated elements: insert it into\n // deepest child\n const deepest = deepestNode(last(result.children));\n if (deepest) {\n const text = Array.isArray(options.text) ? options.text.join('\\n') : options.text;\n insertText(deepest, text);\n if (deepest.name === 'a' && options.href) {\n // Automatically update value of `` element if inserting URL or email\n insertHref(deepest, text);\n }\n }\n }\n return result;\n}\n/**\n * Converts given statement to abbreviation nodes\n */\nfunction convertStatement(node, state) {\n let result = [];\n if (node.repeat) {\n // Node is repeated: we should create copies of given node\n // and supply context token with actual repeater state\n const original = node.repeat;\n const repeat = Object.assign({}, original);\n repeat.count = repeat.implicit && Array.isArray(state.text)\n ? state.cleanText.length\n : (repeat.count || 1);\n let items;\n state.repeaters.push(repeat);\n for (let i = 0; i < repeat.count; i++) {\n repeat.value = i;\n node.repeat = repeat;\n items = isGroup(node)\n ? convertGroup(node, state)\n : convertElement(node, state);\n if (repeat.implicit && !state.inserted) {\n // It’s an implicit repeater but no repeater placeholders found inside,\n // we should insert text into deepest node\n const target = last(items);\n const deepest = target && deepestNode(target);\n if (deepest) {\n insertText(deepest, state.getText(repeat.value));\n }\n }\n result = result.concat(items);\n // We should output at least one repeated item even if it’s reached\n // repeat limit\n if (--state.repeatGuard <= 0) {\n break;\n }\n }\n state.repeaters.pop();\n node.repeat = original;\n if (repeat.implicit) {\n state.inserted = true;\n }\n }\n else {\n result = result.concat(isGroup(node) ? convertGroup(node, state) : convertElement(node, state));\n }\n return result;\n}\nfunction convertElement(node, state) {\n let children = [];\n const elem = {\n type: 'AbbreviationNode',\n name: node.name && stringifyName(node.name, state),\n value: node.value && stringifyValue(node.value, state),\n attributes: void 0,\n children,\n repeat: node.repeat && Object.assign({}, node.repeat),\n selfClosing: node.selfClose,\n };\n let result = [elem];\n for (const child of node.elements) {\n children = children.concat(convertStatement(child, state));\n }\n if (node.attributes) {\n elem.attributes = [];\n for (const attr of node.attributes) {\n elem.attributes.push(convertAttribute(attr, state));\n }\n }\n // In case if current node is a text-only snippet without fields, we should\n // put all children as siblings\n if (!elem.name && !elem.attributes && elem.value && !elem.value.some(isField)) {\n // XXX it’s unclear that `children` is not bound to `elem`\n // due to concat operation\n result = result.concat(children);\n }\n else {\n elem.children = children;\n }\n return result;\n}\nfunction convertGroup(node, state) {\n let result = [];\n for (const child of node.elements) {\n result = result.concat(convertStatement(child, state));\n }\n if (node.repeat) {\n result = attachRepeater(result, node.repeat);\n }\n return result;\n}\nfunction convertAttribute(node, state) {\n let implied = false;\n let isBoolean = false;\n let valueType = node.expression ? 'expression' : 'raw';\n let value;\n const name = node.name && stringifyName(node.name, state);\n if (name && name[0] === '!') {\n implied = true;\n }\n if (name && name[name.length - 1] === '.') {\n isBoolean = true;\n }\n if (node.value) {\n const tokens = node.value.slice();\n if (isQuote(tokens[0])) {\n // It’s a quoted value: remove quotes from output but mark attribute\n // value as quoted\n const quote = tokens.shift();\n if (tokens.length && last(tokens).type === quote.type) {\n tokens.pop();\n }\n valueType = quote.single ? 'singleQuote' : 'doubleQuote';\n }\n else if (isBracket(tokens[0], 'expression', true)) {\n // Value is expression: remove brackets but mark value type\n valueType = 'expression';\n tokens.shift();\n if (isBracket(last(tokens), 'expression', false)) {\n tokens.pop();\n }\n }\n value = stringifyValue(tokens, state);\n }\n return {\n name: isBoolean || implied\n ? name.slice(implied ? 1 : 0, isBoolean ? -1 : void 0)\n : name,\n value,\n boolean: isBoolean,\n implied,\n valueType,\n multiple: node.multiple\n };\n}\n/**\n * Converts given token list to string\n */\nfunction stringifyName(tokens, state) {\n let str = '';\n for (let i = 0; i < tokens.length; i++) {\n str += stringify(tokens[i], state);\n }\n return str;\n}\n/**\n * Converts given token list to value list\n */\nfunction stringifyValue(tokens, state) {\n const result = [];\n let str = '';\n for (let i = 0, token; i < tokens.length; i++) {\n token = tokens[i];\n if (isField(token)) {\n // We should keep original fields in output since some editors has their\n // own syntax for field or doesn’t support fields at all so we should\n // capture actual field location in output stream\n if (str) {\n result.push(str);\n str = '';\n }\n result.push(token);\n }\n else {\n str += stringify(token, state);\n }\n }\n if (str) {\n result.push(str);\n }\n return result;\n}\nfunction isGroup(node) {\n return node.type === 'TokenGroup';\n}\nfunction isField(token) {\n return typeof token === 'object' && token.type === 'Field' && token.index != null;\n}\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction deepestNode(node) {\n return node.children.length ? deepestNode(last(node.children)) : node;\n}\nfunction insertText(node, text) {\n if (node.value) {\n const lastToken = last(node.value);\n if (typeof lastToken === 'string') {\n node.value[node.value.length - 1] += text;\n }\n else {\n node.value.push(text);\n }\n }\n else {\n node.value = [text];\n }\n}\nfunction insertHref(node, text) {\n var _a;\n let href = '';\n if (urlRegex.test(text)) {\n href = text;\n if (!/\\w+:/.test(href) && !href.startsWith('//')) {\n href = `http://${href}`;\n }\n }\n else if (emailRegex.test(text)) {\n href = `mailto:${text}`;\n }\n const hrefAttribute = (_a = node.attributes) === null || _a === void 0 ? void 0 : _a.find(attr => attr.name === 'href');\n if (!hrefAttribute) {\n if (!node.attributes) {\n node.attributes = [];\n }\n node.attributes.push({ name: 'href', value: [href], valueType: 'doubleQuote' });\n }\n else if (!hrefAttribute.value) {\n hrefAttribute.value = [href];\n }\n}\nfunction attachRepeater(items, repeater) {\n for (const item of items) {\n if (!item.repeat) {\n item.repeat = Object.assign({}, repeater);\n }\n }\n return items;\n}\n\n/**\n * Parses given abbreviation into node tree\n */\nfunction parseAbbreviation(abbr, options) {\n try {\n const tokens = typeof abbr === 'string' ? tokenize(abbr) : abbr;\n return convert(abbreviation(tokens, options), options);\n }\n catch (err) {\n if (err instanceof ScannerError && typeof abbr === 'string') {\n err.message += `\\n${abbr}\\n${'-'.repeat(err.pos)}^`;\n }\n throw err;\n }\n}\n\nexport { convert, parseAbbreviation as default, getToken, abbreviation as parse, tokenize };\n//# sourceMappingURL=index.js.map\n","import Scanner, { isNumber, isAlpha, isAlphaWord, isQuote, isSpace, isAlphaNumericWord, ScannerError } from '@emmetio/scanner';\n\nvar OperatorType;\n(function (OperatorType) {\n OperatorType[\"Sibling\"] = \"+\";\n OperatorType[\"Important\"] = \"!\";\n OperatorType[\"ArgumentDelimiter\"] = \",\";\n OperatorType[\"ValueDelimiter\"] = \"-\";\n OperatorType[\"PropertyDelimiter\"] = \":\";\n})(OperatorType || (OperatorType = {}));\n\nvar Chars;\n(function (Chars) {\n /** `#` character */\n Chars[Chars[\"Hash\"] = 35] = \"Hash\";\n /** `$` character */\n Chars[Chars[\"Dollar\"] = 36] = \"Dollar\";\n /** `-` character */\n Chars[Chars[\"Dash\"] = 45] = \"Dash\";\n /** `.` character */\n Chars[Chars[\"Dot\"] = 46] = \"Dot\";\n /** `:` character */\n Chars[Chars[\"Colon\"] = 58] = \"Colon\";\n /** `,` character */\n Chars[Chars[\"Comma\"] = 44] = \"Comma\";\n /** `!` character */\n Chars[Chars[\"Excl\"] = 33] = \"Excl\";\n /** `@` character */\n Chars[Chars[\"At\"] = 64] = \"At\";\n /** `%` character */\n Chars[Chars[\"Percent\"] = 37] = \"Percent\";\n /** `_` character */\n Chars[Chars[\"Underscore\"] = 95] = \"Underscore\";\n /** `(` character */\n Chars[Chars[\"RoundBracketOpen\"] = 40] = \"RoundBracketOpen\";\n /** `)` character */\n Chars[Chars[\"RoundBracketClose\"] = 41] = \"RoundBracketClose\";\n /** `{` character */\n Chars[Chars[\"CurlyBracketOpen\"] = 123] = \"CurlyBracketOpen\";\n /** `}` character */\n Chars[Chars[\"CurlyBracketClose\"] = 125] = \"CurlyBracketClose\";\n /** `+` character */\n Chars[Chars[\"Sibling\"] = 43] = \"Sibling\";\n /** `'` character */\n Chars[Chars[\"SingleQuote\"] = 39] = \"SingleQuote\";\n /** `\"` character */\n Chars[Chars[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n /** `t` character */\n Chars[Chars[\"Transparent\"] = 116] = \"Transparent\";\n /** `/` character */\n Chars[Chars[\"Slash\"] = 47] = \"Slash\";\n})(Chars || (Chars = {}));\n\nfunction tokenize(abbr, isValue) {\n let brackets = 0;\n let token;\n const scanner = new Scanner(abbr);\n const tokens = [];\n while (!scanner.eof()) {\n token = getToken(scanner, brackets === 0 && !isValue);\n if (!token) {\n throw scanner.error('Unexpected character');\n }\n if (token.type === 'Bracket') {\n if (!brackets && token.open) {\n mergeTokens(scanner, tokens);\n }\n brackets += token.open ? 1 : -1;\n if (brackets < 0) {\n throw scanner.error('Unexpected bracket', token.start);\n }\n }\n tokens.push(token);\n // Forcibly consume next operator after unit-less numeric value or color:\n // next dash `-` must be used as value delimiter\n if (shouldConsumeDashAfter(token) && (token = operator(scanner))) {\n tokens.push(token);\n }\n }\n return tokens;\n}\n/**\n * Returns next token from given scanner, if possible\n */\nfunction getToken(scanner, short) {\n return field(scanner)\n || customProperty(scanner)\n || numberValue(scanner)\n || colorValue(scanner)\n || stringValue(scanner)\n || bracket(scanner)\n || operator(scanner)\n || whiteSpace(scanner)\n || literal(scanner, short);\n}\nfunction field(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dollar) && scanner.eat(Chars.CurlyBracketOpen)) {\n scanner.start = scanner.pos;\n let index;\n let name = '';\n if (scanner.eatWhile(isNumber)) {\n // It’s a field\n index = Number(scanner.current());\n name = scanner.eat(Chars.Colon) ? consumePlaceholder(scanner) : '';\n }\n else if (isAlpha(scanner.peek())) {\n // It’s a variable\n name = consumePlaceholder(scanner);\n }\n if (scanner.eat(Chars.CurlyBracketClose)) {\n return {\n type: 'Field',\n index, name,\n start,\n end: scanner.pos\n };\n }\n throw scanner.error('Expecting }');\n }\n // If we reached here then there’s no valid field here, revert\n // back to starting position\n scanner.pos = start;\n}\n/**\n * Consumes a placeholder: value right after `:` in field. Could be empty\n */\nfunction consumePlaceholder(stream) {\n const stack = [];\n stream.start = stream.pos;\n while (!stream.eof()) {\n if (stream.eat(Chars.CurlyBracketOpen)) {\n stack.push(stream.pos);\n }\n else if (stream.eat(Chars.CurlyBracketClose)) {\n if (!stack.length) {\n stream.pos--;\n break;\n }\n stack.pop();\n }\n else {\n stream.pos++;\n }\n }\n if (stack.length) {\n stream.pos = stack.pop();\n throw stream.error(`Expecting }`);\n }\n return stream.current();\n}\n/**\n * Consumes literal from given scanner\n * @param short Use short notation for consuming value.\n * The difference between “short” and “full” notation is that first one uses\n * alpha characters only and used for extracting keywords from abbreviation,\n * while “full” notation also supports numbers and dashes\n */\nfunction literal(scanner, short) {\n const start = scanner.pos;\n if (scanner.eat(isIdentPrefix)) {\n // SCSS or LESS variable\n // NB a bit dirty hack: if abbreviation starts with identifier prefix,\n // consume alpha characters only to allow embedded variables\n scanner.eatWhile(start ? isKeyword : isLiteral$1);\n }\n else if (scanner.eat(isAlphaWord)) {\n scanner.eatWhile(short ? isLiteral$1 : isKeyword);\n }\n else {\n // Allow dots only at the beginning of literal\n scanner.eat(Chars.Dot);\n scanner.eatWhile(isLiteral$1);\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return createLiteral(scanner, scanner.start = start);\n }\n}\nfunction createLiteral(scanner, start = scanner.start, end = scanner.pos) {\n return {\n type: 'Literal',\n value: scanner.substring(start, end),\n start,\n end\n };\n}\n/**\n * Consumes numeric CSS value (number with optional unit) from current stream,\n * if possible\n */\nfunction numberValue(scanner) {\n const start = scanner.pos;\n if (consumeNumber(scanner)) {\n scanner.start = start;\n const rawValue = scanner.current();\n // eat unit, which can be a % or alpha word\n scanner.start = scanner.pos;\n scanner.eat(Chars.Percent) || scanner.eatWhile(isAlphaWord);\n return {\n type: 'NumberValue',\n value: Number(rawValue),\n rawValue,\n unit: scanner.current(),\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes quoted string value from given scanner\n */\nfunction stringValue(scanner) {\n const ch = scanner.peek();\n const start = scanner.pos;\n let finished = false;\n if (isQuote(ch)) {\n scanner.pos++;\n while (!scanner.eof()) {\n // Do not throw error on malformed string\n if (scanner.eat(ch)) {\n finished = true;\n break;\n }\n else {\n scanner.pos++;\n }\n }\n scanner.start = start;\n return {\n type: 'StringValue',\n value: scanner.substring(start + 1, scanner.pos - (finished ? 1 : 0)),\n quote: ch === Chars.SingleQuote ? 'single' : 'double',\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes a color token from given string\n */\nfunction colorValue(scanner) {\n // supported color variations:\n // #abc → #aabbccc\n // #0 → #000000\n // #fff.5 → rgba(255, 255, 255, 0.5)\n // #t → transparent\n const start = scanner.pos;\n if (scanner.eat(Chars.Hash)) {\n const valueStart = scanner.pos;\n let color = '';\n let alpha = '';\n if (scanner.eatWhile(isHex)) {\n color = scanner.substring(valueStart, scanner.pos);\n alpha = colorAlpha(scanner);\n }\n else if (scanner.eat(Chars.Transparent)) {\n color = '0';\n alpha = colorAlpha(scanner) || '0';\n }\n else {\n alpha = colorAlpha(scanner);\n }\n if (color || alpha || scanner.eof()) {\n const { r, g, b, a } = parseColor(color, alpha);\n return {\n type: 'ColorValue',\n r, g, b, a,\n raw: scanner.substring(start + 1, scanner.pos),\n start,\n end: scanner.pos\n };\n }\n else {\n // Consumed # but no actual value: invalid color value, treat it as literal\n return createLiteral(scanner, start);\n }\n }\n scanner.pos = start;\n}\n/**\n * Consumes alpha value of color: `.1`\n */\nfunction colorAlpha(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dot)) {\n scanner.start = start;\n if (scanner.eatWhile(isNumber)) {\n return scanner.current();\n }\n return '1';\n }\n return '';\n}\n/**\n * Consumes white space characters as string literal from given scanner\n */\nfunction whiteSpace(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(isSpace)) {\n return {\n type: 'WhiteSpace',\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes custom CSS property: --foo-bar\n */\nfunction customProperty(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dash) && scanner.eat(Chars.Dash)) {\n scanner.start = start;\n scanner.eatWhile(isKeyword);\n return {\n type: 'CustomProperty',\n value: scanner.current(),\n start,\n end: scanner.pos\n };\n }\n scanner.pos = start;\n}\n/**\n * Consumes bracket from given scanner\n */\nfunction bracket(scanner) {\n const ch = scanner.peek();\n if (isBracket$1(ch)) {\n return {\n type: 'Bracket',\n open: ch === Chars.RoundBracketOpen,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes operator from given scanner\n */\nfunction operator(scanner) {\n const op = operatorType(scanner.peek());\n if (op) {\n return {\n type: 'Operator',\n operator: op,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Eats number value from given stream\n * @return Returns `true` if number was consumed\n */\nfunction consumeNumber(stream) {\n const start = stream.pos;\n stream.eat(Chars.Dash);\n const afterNegative = stream.pos;\n const hasDecimal = stream.eatWhile(isNumber);\n const prevPos = stream.pos;\n if (stream.eat(Chars.Dot)) {\n // It’s perfectly valid to have numbers like `1.`, which enforces\n // value to float unit type\n const hasFloat = stream.eatWhile(isNumber);\n if (!hasDecimal && !hasFloat) {\n // Lone dot\n stream.pos = prevPos;\n }\n }\n // Edge case: consumed dash only: not a number, bail-out\n if (stream.pos === afterNegative) {\n stream.pos = start;\n }\n return stream.pos !== start;\n}\nfunction isIdentPrefix(code) {\n return code === Chars.At || code === Chars.Dollar;\n}\n/**\n * If given character is an operator, returns it’s type\n */\nfunction operatorType(ch) {\n return (ch === Chars.Sibling && OperatorType.Sibling)\n || (ch === Chars.Excl && OperatorType.Important)\n || (ch === Chars.Comma && OperatorType.ArgumentDelimiter)\n || (ch === Chars.Colon && OperatorType.PropertyDelimiter)\n || (ch === Chars.Dash && OperatorType.ValueDelimiter)\n || void 0;\n}\n/**\n * Check if given code is a hex value (/0-9a-f/)\n */\nfunction isHex(code) {\n return isNumber(code) || isAlpha(code, 65, 70); // A-F\n}\nfunction isKeyword(code) {\n return isAlphaNumericWord(code) || code === Chars.Dash;\n}\nfunction isBracket$1(code) {\n return code === Chars.RoundBracketOpen || code === Chars.RoundBracketClose;\n}\nfunction isLiteral$1(code) {\n return isAlphaWord(code) || code === Chars.Percent || code === Chars.Slash;\n}\n/**\n * Parses given color value from abbreviation into RGBA format\n */\nfunction parseColor(value, alpha) {\n let r = '0';\n let g = '0';\n let b = '0';\n let a = Number(alpha != null && alpha !== '' ? alpha : 1);\n if (value === 't') {\n a = 0;\n }\n else {\n switch (value.length) {\n case 0:\n break;\n case 1:\n r = g = b = value + value;\n break;\n case 2:\n r = g = b = value;\n break;\n case 3:\n r = value[0] + value[0];\n g = value[1] + value[1];\n b = value[2] + value[2];\n break;\n default:\n value += value;\n r = value.slice(0, 2);\n g = value.slice(2, 4);\n b = value.slice(4, 6);\n }\n }\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16),\n a\n };\n}\n/**\n * Check if scanner reader must consume dash after given token.\n * Used in cases where user must explicitly separate numeric values\n */\nfunction shouldConsumeDashAfter(token) {\n return token.type === 'ColorValue' || (token.type === 'NumberValue' && !token.unit);\n}\n/**\n * Merges last adjacent tokens into a single literal.\n * This function is used to overcome edge case when function name was parsed\n * as a list of separate tokens. For example, a `scale3d()` value will be\n * parsed as literal and number tokens (`scale` and `3d`) which is a perfectly\n * valid abbreviation but undesired result. This function will detect last adjacent\n * literal and number values and combine them into single literal\n */\nfunction mergeTokens(scanner, tokens) {\n let start = 0;\n let end = 0;\n while (tokens.length) {\n const token = last(tokens);\n if (token.type === 'Literal' || token.type === 'NumberValue') {\n start = token.start;\n if (!end) {\n end = token.end;\n }\n tokens.pop();\n }\n else {\n break;\n }\n }\n if (start !== end) {\n tokens.push(createLiteral(scanner, start, end));\n }\n}\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nfunction tokenScanner(tokens) {\n return {\n tokens,\n start: 0,\n pos: 0,\n size: tokens.length\n };\n}\nfunction peek(scanner) {\n return scanner.tokens[scanner.pos];\n}\nfunction readable(scanner) {\n return scanner.pos < scanner.size;\n}\nfunction consume(scanner, test) {\n if (test(peek(scanner))) {\n scanner.pos++;\n return true;\n }\n return false;\n}\nfunction error(scanner, message, token = peek(scanner)) {\n if (token && token.start != null) {\n message += ` at ${token.start}`;\n }\n const err = new Error(message);\n err['pos'] = token && token.start;\n return err;\n}\n\nfunction parser(tokens, options = {}) {\n const scanner = tokenScanner(tokens);\n const result = [];\n let property;\n while (readable(scanner)) {\n if (property = consumeProperty(scanner, options)) {\n result.push(property);\n }\n else if (!consume(scanner, isSiblingOperator)) {\n throw error(scanner, 'Unexpected token');\n }\n }\n return result;\n}\n/**\n * Consumes single CSS property\n */\nfunction consumeProperty(scanner, options) {\n let name;\n let important = false;\n let valueFragment;\n const value = [];\n const token = peek(scanner);\n const valueMode = !!options.value;\n if (!valueMode && isLiteral(token) && !isFunctionStart(scanner)) {\n scanner.pos++;\n name = token.value;\n // Consume any following value delimiter after property name\n consume(scanner, isValueDelimiter);\n }\n // Skip whitespace right after property name, if any\n if (valueMode) {\n consume(scanner, isWhiteSpace);\n }\n while (readable(scanner)) {\n if (consume(scanner, isImportant)) {\n important = true;\n }\n else if (valueFragment = consumeValue(scanner, valueMode)) {\n value.push(valueFragment);\n }\n else if (!consume(scanner, isFragmentDelimiter)) {\n break;\n }\n }\n if (name || value.length || important) {\n return { name, value, important };\n }\n}\n/**\n * Consumes single value fragment, e.g. all value tokens before comma\n */\nfunction consumeValue(scanner, inArgument) {\n const result = [];\n let token;\n let args;\n while (readable(scanner)) {\n token = peek(scanner);\n if (isValue(token)) {\n scanner.pos++;\n if (isLiteral(token) && (args = consumeArguments(scanner))) {\n result.push({\n type: 'FunctionCall',\n name: token.value,\n arguments: args\n });\n }\n else {\n result.push(token);\n }\n }\n else if (isValueDelimiter(token) || (inArgument && isWhiteSpace(token))) {\n scanner.pos++;\n }\n else {\n break;\n }\n }\n return result.length\n ? { type: 'CSSValue', value: result }\n : void 0;\n}\nfunction consumeArguments(scanner) {\n const start = scanner.pos;\n if (consume(scanner, isOpenBracket)) {\n const args = [];\n let value;\n while (readable(scanner) && !consume(scanner, isCloseBracket)) {\n if (value = consumeValue(scanner, true)) {\n args.push(value);\n }\n else if (!consume(scanner, isWhiteSpace) && !consume(scanner, isArgumentDelimiter)) {\n throw error(scanner, 'Unexpected token');\n }\n }\n scanner.start = start;\n return args;\n }\n}\nfunction isLiteral(token) {\n return token && token.type === 'Literal';\n}\nfunction isBracket(token, open) {\n return token && token.type === 'Bracket' && (open == null || token.open === open);\n}\nfunction isOpenBracket(token) {\n return isBracket(token, true);\n}\nfunction isCloseBracket(token) {\n return isBracket(token, false);\n}\nfunction isWhiteSpace(token) {\n return token && token.type === 'WhiteSpace';\n}\nfunction isOperator(token, operator) {\n return token && token.type === 'Operator' && (!operator || token.operator === operator);\n}\nfunction isSiblingOperator(token) {\n return isOperator(token, OperatorType.Sibling);\n}\nfunction isArgumentDelimiter(token) {\n return isOperator(token, OperatorType.ArgumentDelimiter);\n}\nfunction isFragmentDelimiter(token) {\n return isArgumentDelimiter(token);\n}\nfunction isImportant(token) {\n return isOperator(token, OperatorType.Important);\n}\nfunction isValue(token) {\n return token.type === 'StringValue'\n || token.type === 'ColorValue'\n || token.type === 'NumberValue'\n || token.type === 'Literal'\n || token.type === 'Field'\n || token.type === 'CustomProperty';\n}\nfunction isValueDelimiter(token) {\n return isOperator(token, OperatorType.PropertyDelimiter)\n || isOperator(token, OperatorType.ValueDelimiter);\n}\nfunction isFunctionStart(scanner) {\n const t1 = scanner.tokens[scanner.pos];\n const t2 = scanner.tokens[scanner.pos + 1];\n return t1 && t2 && isLiteral(t1) && t2.type === 'Bracket';\n}\n\n/**\n * Parses given abbreviation into property set\n */\nfunction parse(abbr, options) {\n try {\n const tokens = typeof abbr === 'string' ? tokenize(abbr, options && options.value) : abbr;\n return parser(tokens, options);\n }\n catch (err) {\n if (err instanceof ScannerError && typeof abbr === 'string') {\n err.message += `\\n${abbr}\\n${'-'.repeat(err.pos)}^`;\n }\n throw err;\n }\n}\n\nexport { OperatorType, parse as default, getToken, parser, tokenize };\n//# sourceMappingURL=index.js.map\n",null,null,null,null,null,"{\n\t\"common\": [\"lorem\", \"ipsum\", \"dolor\", \"sit\", \"amet\", \"consectetur\", \"adipisicing\", \"elit\"],\n\t\"words\": [\"exercitationem\", \"perferendis\", \"perspiciatis\", \"laborum\", \"eveniet\",\n\t\t\"sunt\", \"iure\", \"nam\", \"nobis\", \"eum\", \"cum\", \"officiis\", \"excepturi\",\n\t\t\"odio\", \"consectetur\", \"quasi\", \"aut\", \"quisquam\", \"vel\", \"eligendi\",\n\t\t\"itaque\", \"non\", \"odit\", \"tempore\", \"quaerat\", \"dignissimos\",\n\t\t\"facilis\", \"neque\", \"nihil\", \"expedita\", \"vitae\", \"vero\", \"ipsum\",\n\t\t\"nisi\", \"animi\", \"cumque\", \"pariatur\", \"velit\", \"modi\", \"natus\",\n\t\t\"iusto\", \"eaque\", \"sequi\", \"illo\", \"sed\", \"ex\", \"et\", \"voluptatibus\",\n\t\t\"tempora\", \"veritatis\", \"ratione\", \"assumenda\", \"incidunt\", \"nostrum\",\n\t\t\"placeat\", \"aliquid\", \"fuga\", \"provident\", \"praesentium\", \"rem\",\n\t\t\"necessitatibus\", \"suscipit\", \"adipisci\", \"quidem\", \"possimus\",\n\t\t\"voluptas\", \"debitis\", \"sint\", \"accusantium\", \"unde\", \"sapiente\",\n\t\t\"voluptate\", \"qui\", \"aspernatur\", \"laudantium\", \"soluta\", \"amet\",\n\t\t\"quo\", \"aliquam\", \"saepe\", \"culpa\", \"libero\", \"ipsa\", \"dicta\",\n\t\t\"reiciendis\", \"nesciunt\", \"doloribus\", \"autem\", \"impedit\", \"minima\",\n\t\t\"maiores\", \"repudiandae\", \"ipsam\", \"obcaecati\", \"ullam\", \"enim\",\n\t\t\"totam\", \"delectus\", \"ducimus\", \"quis\", \"voluptates\", \"dolores\",\n\t\t\"molestiae\", \"harum\", \"dolorem\", \"quia\", \"voluptatem\", \"molestias\",\n\t\t\"magni\", \"distinctio\", \"omnis\", \"illum\", \"dolorum\", \"voluptatum\", \"ea\",\n\t\t\"quas\", \"quam\", \"corporis\", \"quae\", \"blanditiis\", \"atque\", \"deserunt\",\n\t\t\"laboriosam\", \"earum\", \"consequuntur\", \"hic\", \"cupiditate\",\n\t\t\"quibusdam\", \"accusamus\", \"ut\", \"rerum\", \"error\", \"minus\", \"eius\",\n\t\t\"ab\", \"ad\", \"nemo\", \"fugit\", \"officia\", \"at\", \"in\", \"id\", \"quos\",\n\t\t\"reprehenderit\", \"numquam\", \"iste\", \"fugiat\", \"sit\", \"inventore\",\n\t\t\"beatae\", \"repellendus\", \"magnam\", \"recusandae\", \"quod\", \"explicabo\",\n\t\t\"doloremque\", \"aperiam\", \"consequatur\", \"asperiores\", \"commodi\",\n\t\t\"optio\", \"dolor\", \"labore\", \"temporibus\", \"repellat\", \"veniam\",\n\t\t\"architecto\", \"est\", \"esse\", \"mollitia\", \"nulla\", \"a\", \"similique\",\n\t\t\"eos\", \"alias\", \"dolore\", \"tenetur\", \"deleniti\", \"porro\", \"facere\",\n\t\t\"maxime\", \"corrupti\"]\n}\n","{\n\t\"common\": [\"далеко-далеко\", \"за\", \"словесными\", \"горами\", \"в стране\", \"гласных\", \"и согласных\", \"живут\", \"рыбные\", \"тексты\"],\n\t\"words\": [\"вдали\", \"от всех\", \"они\", \"буквенных\", \"домах\", \"на берегу\", \"семантика\",\n\t\t\"большого\", \"языкового\", \"океана\", \"маленький\", \"ручеек\", \"даль\",\n\t\t\"журчит\", \"по всей\", \"обеспечивает\", \"ее\",\"всеми\", \"необходимыми\",\n\t\t\"правилами\", \"эта\", \"парадигматическая\", \"страна\", \"которой\", \"жаренные\",\n\t\t\"предложения\", \"залетают\", \"прямо\", \"рот\", \"даже\", \"всемогущая\",\n\t\t\"пунктуация\", \"не\", \"имеет\", \"власти\", \"над\", \"рыбными\", \"текстами\",\n\t\t\"ведущими\", \"безорфографичный\", \"образ\", \"жизни\", \"однажды\", \"одна\",\n\t\t\"маленькая\", \"строчка\",\"рыбного\", \"текста\", \"имени\", \"lorem\", \"ipsum\",\n\t\t\"решила\", \"выйти\", \"большой\", \"мир\", \"грамматики\", \"великий\", \"оксмокс\",\n\t\t\"предупреждал\", \"о\", \"злых\", \"запятых\", \"диких\", \"знаках\", \"вопроса\",\n\t\t\"коварных\", \"точках\", \"запятой\", \"но\", \"текст\", \"дал\", \"сбить\",\n\t\t\"себя\", \"толку\", \"он\", \"собрал\", \"семь\", \"своих\", \"заглавных\", \"букв\",\n\t\t\"подпоясал\", \"инициал\", \"за\", \"пояс\", \"пустился\", \"дорогу\",\n\t\t\"взобравшись\", \"первую\", \"вершину\", \"курсивных\", \"гор\", \"бросил\",\n\t\t\"последний\", \"взгляд\", \"назад\", \"силуэт\", \"своего\", \"родного\", \"города\",\n\t\t\"буквоград\", \"заголовок\", \"деревни\", \"алфавит\", \"подзаголовок\", \"своего\",\n\t\t\"переулка\", \"грустный\", \"реторический\", \"вопрос\", \"скатился\", \"его\",\n\t\t\"щеке\", \"продолжил\", \"свой\", \"путь\", \"дороге\", \"встретил\", \"рукопись\",\n\t\t\"она\", \"предупредила\", \"моей\", \"все\", \"переписывается\", \"несколько\",\n\t\t\"раз\", \"единственное\", \"что\", \"меня\", \"осталось\", \"это\", \"приставка\",\n\t\t\"возвращайся\", \"ты\", \"лучше\", \"свою\", \"безопасную\", \"страну\", \"послушавшись\",\n\t\t\"рукописи\", \"наш\", \"продолжил\", \"свой\", \"путь\", \"вскоре\", \"ему\",\n\t\t\"повстречался\", \"коварный\", \"составитель\", \"рекламных\", \"текстов\",\n\t\t\"напоивший\", \"языком\", \"речью\", \"заманивший\", \"свое\", \"агентство\",\n\t\t\"которое\", \"использовало\", \"снова\", \"снова\", \"своих\", \"проектах\",\n\t\t\"если\", \"переписали\", \"то\", \"живет\", \"там\", \"до\", \"сих\", \"пор\"]\n}\n","{\n\t\"common\": [\"mujer\", \"uno\", \"dolor\", \"más\", \"de\", \"poder\", \"mismo\", \"si\"],\n\t\"words\": [\"ejercicio\", \"preferencia\", \"perspicacia\", \"laboral\", \"paño\",\n\t\t\"suntuoso\", \"molde\", \"namibia\", \"planeador\", \"mirar\", \"demás\", \"oficinista\", \"excepción\",\n\t\t\"odio\", \"consecuencia\", \"casi\", \"auto\", \"chicharra\", \"velo\", \"elixir\",\n\t\t\"ataque\", \"no\", \"odio\", \"temporal\", \"cuórum\", \"dignísimo\",\n\t\t\"facilismo\", \"letra\", \"nihilista\", \"expedición\", \"alma\", \"alveolar\", \"aparte\",\n\t\t\"león\", \"animal\", \"como\", \"paria\", \"belleza\", \"modo\", \"natividad\",\n\t\t\"justo\", \"ataque\", \"séquito\", \"pillo\", \"sed\", \"ex\", \"y\", \"voluminoso\",\n\t\t\"temporalidad\", \"verdades\", \"racional\", \"asunción\", \"incidente\", \"marejada\",\n\t\t\"placenta\", \"amanecer\", \"fuga\", \"previsor\", \"presentación\", \"lejos\",\n\t\t\"necesariamente\", \"sospechoso\", \"adiposidad\", \"quindío\", \"pócima\",\n\t\t\"voluble\", \"débito\", \"sintió\", \"accesorio\", \"falda\", \"sapiencia\",\n\t\t\"volutas\", \"queso\", \"permacultura\", \"laudo\", \"soluciones\", \"entero\",\n\t\t\"pan\", \"litro\", \"tonelada\", \"culpa\", \"libertario\", \"mosca\", \"dictado\",\n\t\t\"reincidente\", \"nascimiento\", \"dolor\", \"escolar\", \"impedimento\", \"mínima\",\n\t\t\"mayores\", \"repugnante\", \"dulce\", \"obcecado\", \"montaña\", \"enigma\",\n\t\t\"total\", \"deletéreo\", \"décima\", \"cábala\", \"fotografía\", \"dolores\",\n\t\t\"molesto\", \"olvido\", \"paciencia\", \"resiliencia\", \"voluntad\", \"molestias\",\n\t\t\"magnífico\", \"distinción\", \"ovni\", \"marejada\", \"cerro\", \"torre\", \"y\",\n\t\t\"abogada\", \"manantial\", \"corporal\", \"agua\", \"crepúsculo\", \"ataque\", \"desierto\",\n\t\t\"laboriosamente\", \"angustia\", \"afortunado\", \"alma\", \"encefalograma\",\n\t\t\"materialidad\", \"cosas\", \"o\", \"renuncia\", \"error\", \"menos\", \"conejo\",\n\t\t\"abadía\", \"analfabeto\", \"remo\", \"fugacidad\", \"oficio\", \"en\", \"almácigo\", \"vos\", \"pan\",\n\t\t\"represión\", \"números\", \"triste\", \"refugiado\", \"trote\", \"inventor\",\n\t\t\"corchea\", \"repelente\", \"magma\", \"recusado\", \"patrón\", \"explícito\",\n\t\t\"paloma\", \"síndrome\", \"inmune\", \"autoinmune\", \"comodidad\",\n\t\t\"ley\", \"vietnamita\", \"demonio\", \"tasmania\", \"repeler\", \"apéndice\",\n\t\t\"arquitecto\", \"columna\", \"yugo\", \"computador\", \"mula\", \"a\", \"propósito\",\n\t\t\"fantasía\", \"alias\", \"rayo\", \"tenedor\", \"deleznable\", \"ventana\", \"cara\",\n\t\t\"anemia\", \"corrupto\"]\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"{\n\t\"a\": \"a[href]\",\n\t\"a:blank\": \"a[href='http://${0}' target='_blank' rel='noopener noreferrer']\",\n\t\"a:link\": \"a[href='http://${0}']\",\n\t\"a:mail\": \"a[href='mailto:${0}']\",\n\t\"a:tel\": \"a[href='tel:+${0}']\",\n\t\"abbr\": \"abbr[title]\",\n\t\"acr|acronym\": \"acronym[title]\",\n\t\"base\": \"base[href]/\",\n\t\"basefont\": \"basefont/\",\n\t\"br\": \"br/\",\n\t\"frame\": \"frame/\",\n\t\"hr\": \"hr/\",\n\t\"bdo\": \"bdo[dir]\",\n\t\"bdo:r\": \"bdo[dir=rtl]\",\n\t\"bdo:l\": \"bdo[dir=ltr]\",\n\t\"col\": \"col/\",\n\t\"link\": \"link[rel=stylesheet href]/\",\n\t\"link:css\": \"link[href='${1:style}.css']\",\n\t\"link:print\": \"link[href='${1:print}.css' media=print]\",\n\t\"link:favicon\": \"link[rel='shortcut icon' type=image/x-icon href='${1:favicon.ico}']\",\n\t\"link:mf|link:manifest\": \"link[rel='manifest' href='${1:manifest.json}']\",\n\t\"link:touch\": \"link[rel=apple-touch-icon href='${1:favicon.png}']\",\n\t\"link:rss\": \"link[rel=alternate type=application/rss+xml title=RSS href='${1:rss.xml}']\",\n\t\"link:atom\": \"link[rel=alternate type=application/atom+xml title=Atom href='${1:atom.xml}']\",\n\t\"link:im|link:import\": \"link[rel=import href='${1:component}.html']\",\n\t\"meta\": \"meta/\",\n\t\"meta:utf\": \"meta[http-equiv=Content-Type content='text/html;charset=UTF-8']\",\n\t\"meta:vp\": \"meta[name=viewport content='width=${1:device-width}, initial-scale=${2:1.0}']\",\n\t\"meta:compat\": \"meta[http-equiv=X-UA-Compatible content='${1:IE=7}']\",\n\t\"meta:edge\": \"meta:compat[content='${1:ie=edge}']\",\n\t\"meta:redirect\": \"meta[http-equiv=refresh content='0; url=${1:http://example.com}']\",\n\t\"meta:refresh\": \"meta[http-equiv=refresh content='${1:5}']\",\n\t\"meta:kw\": \"meta[name=keywords content]\",\n\t\"meta:desc\": \"meta[name=description content]\",\n\t\"style\": \"style\",\n\t\"script\": \"script\",\n\t\"script:src\": \"script[src]\",\n\t\"script:module\": \"script[type=module src]\",\n\t\"img\": \"img[src alt]/\",\n\t\"img:s|img:srcset\": \"img[srcset src alt]\",\n\t\"img:z|img:sizes\": \"img[sizes srcset src alt]\",\n\t\"picture\": \"picture\",\n\t\"src|source\": \"source/\",\n\t\"src:sc|source:src\": \"source[src type]\",\n\t\"src:s|source:srcset\": \"source[srcset]\",\n\t\"src:t|source:type\": \"source[srcset type='${1:image/}']\",\n\t\"src:z|source:sizes\": \"source[sizes srcset]\",\n\t\"src:m|source:media\": \"source[media='(${1:min-width: })' srcset]\",\n\t\"src:mt|source:media:type\": \"source:media[type='${2:image/}']\",\n\t\"src:mz|source:media:sizes\": \"source:media[sizes srcset]\",\n\t\"src:zt|source:sizes:type\": \"source[sizes srcset type='${1:image/}']\",\n\t\"iframe\": \"iframe[src frameborder=0]\",\n\t\"embed\": \"embed[src type]/\",\n\t\"object\": \"object[data type]\",\n\t\"param\": \"param[name value]/\",\n\t\"map\": \"map[name]\",\n\t\"area\": \"area[shape coords href alt]/\",\n\t\"area:d\": \"area[shape=default]\",\n\t\"area:c\": \"area[shape=circle]\",\n\t\"area:r\": \"area[shape=rect]\",\n\t\"area:p\": \"area[shape=poly]\",\n\t\"form\": \"form[action]\",\n\t\"form:get\": \"form[method=get]\",\n\t\"form:post\": \"form[method=post]\",\n\t\"label\": \"label[for]\",\n\t\"input\": \"input[type=${1:text}]/\",\n\t\"inp\": \"input[name=${1} id=${1}]\",\n\t\"input:h|input:hidden\": \"input[type=hidden name]\",\n\t\"input:t|input:text\": \"inp[type=text]\",\n\t\"input:search\": \"inp[type=search]\",\n\t\"input:email\": \"inp[type=email]\",\n\t\"input:url\": \"inp[type=url]\",\n\t\"input:p|input:password\": \"inp[type=password]\",\n\t\"input:datetime\": \"inp[type=datetime]\",\n\t\"input:date\": \"inp[type=date]\",\n\t\"input:datetime-local\": \"inp[type=datetime-local]\",\n\t\"input:month\": \"inp[type=month]\",\n\t\"input:week\": \"inp[type=week]\",\n\t\"input:time\": \"inp[type=time]\",\n\t\"input:tel\": \"inp[type=tel]\",\n\t\"input:number\": \"inp[type=number]\",\n\t\"input:color\": \"inp[type=color]\",\n\t\"input:c|input:checkbox\": \"inp[type=checkbox]\",\n\t\"input:r|input:radio\": \"inp[type=radio]\",\n\t\"input:range\": \"inp[type=range]\",\n\t\"input:f|input:file\": \"inp[type=file]\",\n\t\"input:s|input:submit\": \"input[type=submit value]\",\n\t\"input:i|input:image\": \"input[type=image src alt]\",\n\t\"input:b|input:btn|input:button\": \"input[type=button value]\",\n\t\"input:reset\": \"input:button[type=reset]\",\n\t\"isindex\": \"isindex/\",\n\t\"select\": \"select[name=${1} id=${1}]\",\n\t\"select:d|select:disabled\": \"select[disabled.]\",\n\t\"opt|option\": \"option[value]\",\n\t\"textarea\": \"textarea[name=${1} id=${1} cols=${2:30} rows=${3:10}]\",\n\t\"marquee\": \"marquee[behavior direction]\",\n\t\"menu:c|menu:context\": \"menu[type=context]\",\n\t\"menu:t|menu:toolbar\": \"menu[type=toolbar]\",\n\t\"video\": \"video[src]\",\n\t\"audio\": \"audio[src]\",\n\t\"html:xml\": \"html[xmlns=http://www.w3.org/1999/xhtml]\",\n\t\"keygen\": \"keygen/\",\n\t\"command\": \"command/\",\n\t\"btn:s|button:s|button:submit\" : \"button[type=submit]\",\n\t\"btn:r|button:r|button:reset\" : \"button[type=reset]\",\n\t\"btn:b|button:b|button:button\" : \"button[type=button]\",\n\t\"btn:d|button:d|button:disabled\" : \"button[disabled.]\",\n\t\"fst:d|fset:d|fieldset:d|fieldset:disabled\" : \"fieldset[disabled.]\",\n\n\t\"bq\": \"blockquote\",\n\t\"fig\": \"figure\",\n\t\"figc\": \"figcaption\",\n\t\"pic\": \"picture\",\n\t\"ifr\": \"iframe\",\n\t\"emb\": \"embed\",\n\t\"obj\": \"object\",\n\t\"cap\": \"caption\",\n\t\"colg\": \"colgroup\",\n\t\"fst\": \"fieldset\",\n\t\"btn\": \"button\",\n\t\"optg\": \"optgroup\",\n\t\"tarea\": \"textarea\",\n\t\"leg\": \"legend\",\n\t\"sect\": \"section\",\n\t\"art\": \"article\",\n\t\"hdr\": \"header\",\n\t\"ftr\": \"footer\",\n\t\"adr\": \"address\",\n\t\"dlg\": \"dialog\",\n\t\"str\": \"strong\",\n\t\"prog\": \"progress\",\n\t\"mn\": \"main\",\n\t\"tem\": \"template\",\n\t\"fset\": \"fieldset\",\n\t\"datal\": \"datalist\",\n\t\"kg\": \"keygen\",\n\t\"out\": \"output\",\n\t\"det\": \"details\",\n\t\"sum\": \"summary\",\n\t\"cmd\": \"command\",\n\t\"data\": \"data[value]\",\n\t\"meter\": \"meter[value]\",\n\t\"time\": \"time[datetime]\",\n\n\t\"ri:d|ri:dpr\": \"img:s\",\n\t\"ri:v|ri:viewport\": \"img:z\",\n\t\"ri:a|ri:art\": \"pic>src:m+img\",\n\t\"ri:t|ri:type\": \"pic>src:t+img\",\n\n\t\"!!!\": \"{}\",\n\t\"doc\": \"html[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}})+body\",\n\t\"!|html:5\": \"!!!+doc\",\n\n\t\"c\": \"{}\",\n\t\"cc:ie\": \"{}\",\n\t\"cc:noie\": \"{${0}}\"\n}\n","{\n\t\"@f\": \"@font-face {\\n\\tfont-family: ${1};\\n\\tsrc: url(${2});\\n}\",\n\t\"@ff\": \"@font-face {\\n\\tfont-family: '${1:FontName}';\\n\\tsrc: url('${2:FileName}.eot');\\n\\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\\n\\t\\t url('${2:FileName}.woff') format('woff'),\\n\\t\\t url('${2:FileName}.ttf') format('truetype'),\\n\\t\\t url('${2:FileName}.svg#${1:FontName}') format('svg');\\n\\tfont-style: ${3:normal};\\n\\tfont-weight: ${4:normal};\\n}\",\n\t\"@i|@import\": \"@import url(${0});\",\n\t\"@kf\": \"@keyframes ${1:identifier} {\\n\\t${2}\\n}\",\n\t\"@m|@media\": \"@media ${1:screen} {\\n\\t${0}\\n}\",\n\t\"ac\": \"align-content:start|end|flex-start|flex-end|center|space-between|space-around|stretch|space-evenly\",\n\t\"ai\": \"align-items:start|end|flex-start|flex-end|center|baseline|stretch\",\n\t\"anim\": \"animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode}\",\n\t\"animdel\": \"animation-delay:time\",\n\t\"animdir\": \"animation-direction:normal|reverse|alternate|alternate-reverse\",\n\t\"animdur\": \"animation-duration:${1:0}s\",\n\t\"animfm\": \"animation-fill-mode:both|forwards|backwards\",\n\t\"animic\": \"animation-iteration-count:1|infinite\",\n\t\"animn\": \"animation-name\",\n\t\"animps\": \"animation-play-state:running|paused\",\n\t\"animtf\": \"animation-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1})\",\n\t\"ap\": \"appearance:none\",\n\t\"as\": \"align-self:start|end|auto|flex-start|flex-end|center|baseline|stretch\",\n\t\"b\": \"bottom\",\n\t\"bd\": \"border:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdb\": \"border-bottom:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdbc\": \"border-bottom-color:${1:#000}\",\n\t\"bdbi\": \"border-bottom-image:url(${0})\",\n\t\"bdbk\": \"border-break:close\",\n\t\"bdbli\": \"border-bottom-left-image:url(${0})|continue\",\n\t\"bdblrs\": \"border-bottom-left-radius\",\n\t\"bdbri\": \"border-bottom-right-image:url(${0})|continue\",\n\t\"bdbrrs\": \"border-bottom-right-radius\",\n\t\"bdbs\": \"border-bottom-style\",\n\t\"bdbw\": \"border-bottom-width\",\n\t\"bdc\": \"border-color:${1:#000}\",\n\t\"bdci\": \"border-corner-image:url(${0})|continue\",\n\t\"bdcl\": \"border-collapse:collapse|separate\",\n\t\"bdf\": \"border-fit:repeat|clip|scale|stretch|overwrite|overflow|space\",\n\t\"bdi\": \"border-image:url(${0})\",\n\t\"bdl\": \"border-left:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdlc\": \"border-left-color:${1:#000}\",\n\t\"bdlen\": \"border-length\",\n\t\"bdli\": \"border-left-image:url(${0})\",\n\t\"bdls\": \"border-left-style\",\n\t\"bdlw\": \"border-left-width\",\n\t\"bdr\": \"border-right:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdrc\": \"border-right-color:${1:#000}\",\n\t\"bdri\": \"border-right-image:url(${0})\",\n\t\"bdrs\": \"border-radius\",\n\t\"bdrst\": \"border-right-style\",\n\t\"bdrw\": \"border-right-width\",\n\t\"bds\": \"border-style:none|hidden|dotted|dashed|solid|double|dot-dash|dot-dot-dash|wave|groove|ridge|inset|outset\",\n\t\"bdsp\": \"border-spacing\",\n\t\"bdt\": \"border-top:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdtc\": \"border-top-color:${1:#000}\",\n\t\"bdti\": \"border-top-image:url(${0})\",\n\t\"bdtli\": \"border-top-left-image:url(${0})|continue\",\n\t\"bdtlrs\": \"border-top-left-radius\",\n\t\"bdtri\": \"border-top-right-image:url(${0})|continue\",\n\t\"bdtrrs\": \"border-top-right-radius\",\n\t\"bdts\": \"border-top-style\",\n\t\"bdtw\": \"border-top-width\",\n\t\"bdw\": \"border-width\",\n \"bbs\": \"border-block-start\",\n \"bbe\": \"border-block-end\",\n \"bis\": \"border-inline-start\",\n \"bie\": \"border-inline-end\",\n\t\"bfv\": \"backface-visibility:hidden|visible\",\n\t\"bg\": \"background:${1:#000}\",\n\t\"bg:n\": \"background: none\",\n\t\"bga\": \"background-attachment:fixed|scroll\",\n\t\"bgbk\": \"background-break:bounding-box|each-box|continuous\",\n\t\"bgc\": \"background-color:${1:#fff}\",\n\t\"bgcp\": \"background-clip:padding-box|border-box|content-box|no-clip\",\n\t\"bgi\": \"background-image:url(${0})\",\n\t\"bgo\": \"background-origin:padding-box|border-box|content-box\",\n\t\"bgp\": \"background-position:${1:0} ${2:0}\",\n\t\"bgpx\": \"background-position-x\",\n\t\"bgpy\": \"background-position-y\",\n\t\"bgr\": \"background-repeat:no-repeat|repeat-x|repeat-y|space|round\",\n\t\"bgsz\": \"background-size:contain|cover\",\n \"bs\": \"block-size\",\n\t\"bxsh\": \"box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:#000}|none\",\n\t\"bxsz\": \"box-sizing:border-box|content-box|border-box\",\n\t\"c\": \"color:${1:#000}\",\n\t\"cr\": \"color:rgb(${1:0}, ${2:0}, ${3:0})\",\n\t\"cra\": \"color:rgba(${1:0}, ${2:0}, ${3:0}, ${4:.5})\",\n\t\"cl\": \"clear:both|left|right|none\",\n\t\"cm\": \"/* ${0} */\",\n\t\"cnt\": \"content:'${0}'|normal|open-quote|no-open-quote|close-quote|no-close-quote|attr(${0})|counter(${0})|counters(${0})\",\n\t\"coi\": \"counter-increment\",\n\t\"colm\": \"columns\",\n\t\"colmc\": \"column-count\",\n\t\"colmf\": \"column-fill\",\n\t\"colmg\": \"column-gap\",\n\t\"colmr\": \"column-rule\",\n\t\"colmrc\": \"column-rule-color\",\n\t\"colmrs\": \"column-rule-style\",\n\t\"colmrw\": \"column-rule-width\",\n\t\"colms\": \"column-span\",\n\t\"colmw\": \"column-width\",\n\t\"cor\": \"counter-reset\",\n\t\"cp\": \"clip:auto|rect(${1:top} ${2:right} ${3:bottom} ${4:left})\",\n\t\"cps\": \"caption-side:top|bottom\",\n\t\"cur\": \"cursor:pointer|auto|default|crosshair|hand|help|move|pointer|text\",\n\t\"d\": \"display:block|none|flex|inline-flex|inline|inline-block|grid|inline-grid|subgrid|list-item|run-in|contents|table|inline-table|table-caption|table-column|table-column-group|table-header-group|table-footer-group|table-row|table-row-group|table-cell|ruby|ruby-base|ruby-base-group|ruby-text|ruby-text-group\",\n\t\"ec\": \"empty-cells:show|hide\",\n\t\"f\": \"font:${1:1em} ${2:sans-serif}\",\n\t\"fd\": \"font-display:auto|block|swap|fallback|optional\",\n\t\"fef\": \"font-effect:none|engrave|emboss|outline\",\n\t\"fem\": \"font-emphasize\",\n\t\"femp\": \"font-emphasize-position:before|after\",\n\t\"fems\": \"font-emphasize-style:none|accent|dot|circle|disc\",\n\t\"ff\": \"font-family:serif|sans-serif|cursive|fantasy|monospace\",\n\t\"fft\": \"font-family:\\\"Times New Roman\\\", Times, Baskerville, Georgia, serif\",\n\t\"ffa\": \"font-family:Arial, \\\"Helvetica Neue\\\", Helvetica, sans-serif\",\n\t\"ffv\": \"font-family:Verdana, Geneva, sans-serif\",\n\t\"fl\": \"float:left|right|none\",\n\t\"fs\": \"font-style:italic|normal|oblique\",\n\t\"fsm\": \"font-smoothing:antialiased|subpixel-antialiased|none\",\n\t\"fst\": \"font-stretch:normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded\",\n\t\"fv\": \"font-variant:normal|small-caps\",\n\t\"fvs\": \"font-variation-settings:normal|inherit|initial|unset\",\n\t\"fw\": \"font-weight:normal|bold|bolder|lighter\",\n\t\"fx\": \"flex\",\n\t\"fxb\": \"flex-basis:fill|max-content|min-content|fit-content|content\",\n\t\"fxd\": \"flex-direction:row|row-reverse|column|column-reverse\",\n\t\"fxf\": \"flex-flow\",\n\t\"fxg\": \"flex-grow\",\n\t\"fxsh\": \"flex-shrink\",\n\t\"fxw\": \"flex-wrap:nowrap|wrap|wrap-reverse\",\n\t\"fsz\": \"font-size\",\n\t\"fsza\": \"font-size-adjust\",\n\t\"g\": \"gap\",\n\t\"gtc\": \"grid-template-columns:repeat(${0})|minmax()\",\n\t\"gtr\": \"grid-template-rows:repeat(${0})|minmax()\",\n\t\"gta\": \"grid-template-areas\",\n\t\"gt\": \"grid-template\",\n\t\"gg\": \"grid-gap\",\n\t\"gcg\": \"grid-column-gap\",\n\t\"grg\": \"grid-row-gap\",\n\t\"gac\": \"grid-auto-columns:auto|minmax()\",\n\t\"gar\": \"grid-auto-rows:auto|minmax()\",\n\t\"gaf\": \"grid-auto-flow:row|column|dense|inherit|initial|unset\",\n\t\"gd\": \"grid\",\n\t\"gc\": \"grid-column\",\n\t\"gcs\": \"grid-column-start\",\n\t\"gce\": \"grid-column-end\",\n\t\"gr\": \"grid-row\",\n\t\"grs\": \"grid-row-start\",\n\t\"gre\": \"grid-row-end\",\n\t\"ga\": \"grid-area\",\n\t\"h\": \"height\",\n \"is\": \"inline-size\",\n\t\"jc\": \"justify-content:start|end|stretch|flex-start|flex-end|center|space-between|space-around|space-evenly\",\n\t\"ji\": \"justify-items:start|end|center|stretch\",\n\t\"js\": \"justify-self:start|end|center|stretch\",\n\t\"l\": \"left\",\n\t\"lg\": \"background-image:linear-gradient(${1})\",\n\t\"lh\": \"line-height\",\n\t\"lis\": \"list-style\",\n\t\"lisi\": \"list-style-image\",\n\t\"lisp\": \"list-style-position:inside|outside\",\n\t\"list\": \"list-style-type:disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman\",\n\t\"lts\": \"letter-spacing:normal\",\n\t\"m\": \"margin\",\n\t\"mah\": \"max-height\",\n\t\"mar\": \"max-resolution\",\n\t\"maw\": \"max-width\",\n\t\"mb\": \"margin-bottom\",\n\t\"mih\": \"min-height\",\n\t\"mir\": \"min-resolution\",\n\t\"miw\": \"min-width\",\n\t\"ml\": \"margin-left\",\n\t\"mr\": \"margin-right\",\n\t\"mt\": \"margin-top\",\n \"mbs\": \"margin-block-start\",\n \"mbe\": \"margin-block-end\",\n \"mis\": \"margin-inline-start\",\n \"mie\": \"margin-inline-end\",\n\t\"ol\": \"outline\",\n\t\"olc\": \"outline-color:${1:#000}|invert\",\n\t\"olo\": \"outline-offset\",\n\t\"ols\": \"outline-style:none|dotted|dashed|solid|double|groove|ridge|inset|outset\",\n\t\"olw\": \"outline-width:thin|medium|thick\",\n\t\"op|opa\": \"opacity\",\n\t\"ord\": \"order\",\n\t\"ori\": \"orientation:landscape|portrait\",\n\t\"orp\": \"orphans\",\n\t\"ov\": \"overflow:hidden|visible|hidden|scroll|auto\",\n\t\"ovs\": \"overflow-style:scrollbar|auto|scrollbar|panner|move|marquee\",\n\t\"ovx\": \"overflow-x:hidden|visible|hidden|scroll|auto\",\n\t\"ovy\": \"overflow-y:hidden|visible|hidden|scroll|auto\",\n\t\"p\": \"padding\",\n\t\"pb\": \"padding-bottom\",\n\t\"pgba\": \"page-break-after:auto|always|left|right\",\n\t\"pgbb\": \"page-break-before:auto|always|left|right\",\n\t\"pgbi\": \"page-break-inside:auto|avoid\",\n\t\"pl\": \"padding-left\",\n\t\"pos\": \"position:relative|absolute|relative|fixed|static\",\n\t\"pr\": \"padding-right\",\n\t\"pt\": \"padding-top\",\n \"pbs\": \"padding-block-start\",\n \"pbe\": \"padding-block-end\",\n \"pis\": \"padding-inline-start\",\n \"pie\": \"padding-inline-end\",\n \"spbs\": \"scroll-padding-block-start\",\n \"spbe\": \"scroll-padding-block-end\",\n \"spis\": \"scroll-padding-inline-start\",\n \"spie\": \"scroll-padding-inline-end\",\n\t\"q\": \"quotes\",\n\t\"qen\": \"quotes:'\\\\201C' '\\\\201D' '\\\\2018' '\\\\2019'\",\n\t\"qru\": \"quotes:'\\\\00AB' '\\\\00BB' '\\\\201E' '\\\\201C'\",\n\t\"r\": \"right\",\n\t\"rsz\": \"resize:none|both|horizontal|vertical\",\n\t\"t\": \"top\",\n\t\"ta\": \"text-align:left|center|right|justify\",\n\t\"tal\": \"text-align-last:left|center|right\",\n\t\"tbl\": \"table-layout:fixed\",\n\t\"td\": \"text-decoration:none|underline|overline|line-through\",\n\t\"te\": \"text-emphasis:none|accent|dot|circle|disc|before|after\",\n\t\"th\": \"text-height:auto|font-size|text-size|max-size\",\n\t\"ti\": \"text-indent\",\n\t\"tj\": \"text-justify:auto|inter-word|inter-ideograph|inter-cluster|distribute|kashida|tibetan\",\n\t\"to\": \"text-outline:${1:0} ${2:0} ${3:#000}\",\n\t\"tov\": \"text-overflow:ellipsis|clip\",\n\t\"tr\": \"text-replace\",\n\t\"trf\": \"transform:${1}|skewX(${1:angle})|skewY(${1:angle})|scale(${1:x}, ${2:y})|scaleX(${1:x})|scaleY(${1:y})|scaleZ(${1:z})|scale3d(${1:x}, ${2:y}, ${3:z})|rotate(${1:angle})|rotateX(${1:angle})|rotateY(${1:angle})|rotateZ(${1:angle})|translate(${1:x}, ${2:y})|translateX(${1:x})|translateY(${1:y})|translateZ(${1:z})|translate3d(${1:tx}, ${2:ty}, ${3:tz})\",\n\t\"trfo\": \"transform-origin\",\n\t\"trfs\": \"transform-style:preserve-3d\",\n\t\"trs\": \"transition:${1:prop} ${2:time}\",\n\t\"trsde\": \"transition-delay:${1:time}\",\n\t\"trsdu\": \"transition-duration:${1:time}\",\n\t\"trsp\": \"transition-property:${1:prop}\",\n\t\"trstf\": \"transition-timing-function:${1:fn}\",\n\t\"tsh\": \"text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000}\",\n\t\"tt\": \"text-transform:uppercase|lowercase|capitalize|none\",\n\t\"tw\": \"text-wrap:none|normal|unrestricted|suppress\",\n\t\"us\": \"user-select:none\",\n\t\"v\": \"visibility:hidden|visible|collapse\",\n\t\"va\": \"vertical-align:top|super|text-top|middle|baseline|bottom|text-bottom|sub\",\n\t\"w\": \"width\",\n\t\"whs\": \"white-space:nowrap|pre|pre-wrap|pre-line|normal\",\n\t\"whsc\": \"white-space-collapse:normal|keep-all|loose|break-strict|break-all\",\n\t\"wid\": \"widows\",\n\t\"wm\": \"writing-mode:lr-tb|lr-tb|lr-bt|rl-tb|rl-bt|tb-rl|tb-lr|bt-lr|bt-rl\",\n\t\"wob\": \"word-break:normal|keep-all|break-all\",\n\t\"wos\": \"word-spacing\",\n\t\"wow\": \"word-wrap:none|unrestricted|suppress|break-word|normal\",\n\t\"z\": \"z-index\",\n\t\"zom\": \"zoom:1\"\n}\n","{\n \"tm|tmatch\": \"xsl:template[match mode]\",\n \"tn|tname\": \"xsl:template[name]\",\n \"call\": \"xsl:call-template[name]\",\n \"ap\": \"xsl:apply-templates[select mode]\",\n \"api\": \"xsl:apply-imports\",\n \"imp\": \"xsl:import[href]\",\n \"inc\": \"xsl:include[href]\",\n \"ch\": \"xsl:choose\",\n \"wh|xsl:when\": \"xsl:when[test]\",\n \"ot\": \"xsl:otherwise\",\n \"if\": \"xsl:if[test]\",\n \"par\": \"xsl:param[name]\",\n \"pare\": \"xsl:param[name select]\",\n \"var\": \"xsl:variable[name]\",\n \"vare\": \"xsl:variable[name select]\",\n \"wp\": \"xsl:with-param[name select]\",\n \"key\": \"xsl:key[name match use]\",\n \"elem\": \"xsl:element[name]\",\n \"attr\": \"xsl:attribute[name]\",\n \"attrs\": \"xsl:attribute-set[name]\",\n \"cp\": \"xsl:copy[select]\",\n \"co\": \"xsl:copy-of[select]\",\n \"val\": \"xsl:value-of[select]\",\n \"for|each\": \"xsl:for-each[select]\",\n \"tex\": \"xsl:text\",\n \"com\": \"xsl:comment\",\n \"msg\": \"xsl:message[terminate=no]\",\n \"fall\": \"xsl:fallback\",\n \"num\": \"xsl:number[value]\",\n \"nam\": \"namespace-alias[stylesheet-prefix result-prefix]\",\n \"pres\": \"xsl:preserve-space[elements]\",\n \"strip\": \"xsl:strip-space[elements]\",\n \"proc\": \"xsl:processing-instruction[name]\",\n \"sort\": \"xsl:sort[select order]\",\n \"choose\": \"xsl:choose>xsl:when+xsl:otherwise\",\n \"xsl\": \"!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\\n|}\",\n \"!!!\": \"{}\"\n}","{\n\t\"!!!\": \"{doctype html}\"\n}\n","{\n\t\"lang\": \"en\",\n\t\"locale\": \"en-US\",\n\t\"charset\": \"UTF-8\",\n\t\"indentation\": \"\\t\",\n\t\"newline\": \"\\n\"\n}\n",null,null,null,null,null,null,null],"names":["isNumber","isAlpha","isWhiteSpace","isQuote","tokenScanner","peek","readable","consume","error","element","isSiblingOperator","isBracket","isOperator","createLiteral","literal$1","isLiteral","Chars","tokenize","getToken","field","whiteSpace","literal","operator","bracket","isQuote$1","isOpenBracket","operatorType","consumePlaceholder","stringify","last","stringifyValue","isField","isCloseBracket","parse","walk","splitByLines","shouldFormat","abbreviation","snippets","attributes","calculateScore","defaultOptions","isAtHTMLTag","stringifyMarkup","parseMarkup","stringifyStylesheet","parseStylesheet"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/emmet/dist/emmet.es.js b/node_modules/emmet/dist/emmet.es.js
deleted file mode 100644
index bf7dc2d..0000000
--- a/node_modules/emmet/dist/emmet.es.js
+++ /dev/null
@@ -1,5356 +0,0 @@
-/**
- * Check if given code is a number
- */
-function isNumber$1(code) {
- return code > 47 && code < 58;
-}
-/**
- * Check if given character code is alpha code (letter through A to Z)
- */
-function isAlpha$1(code, from, to) {
- from = from || 65; // A
- to = to || 90; // Z
- code &= ~32; // quick hack to convert any char code to uppercase char code
- return code >= from && code <= to;
-}
-function isAlphaNumericWord(code) {
- return isNumber$1(code) || isAlphaWord(code);
-}
-function isAlphaWord(code) {
- return code === 95 /* _ */ || isAlpha$1(code);
-}
-/**
- * Check for Umlauts i.e. ä, Ä, ö, Ö, ü and Ü
- */
-function isUmlaut(code) {
- return code === 196
- || code == 214
- || code === 220
- || code === 228
- || code === 246
- || code === 252;
-}
-/**
- * Check if given character code is a white-space character: a space character
- * or line breaks
- */
-function isWhiteSpace$3(code) {
- return code === 32 /* space */
- || code === 9 /* tab */
- || code === 160; /* non-breaking space */
-}
-/**
- * Check if given character code is a space character
- */
-function isSpace(code) {
- return isWhiteSpace$3(code)
- || code === 10 /* LF */
- || code === 13; /* CR */
-}
-/**
- * Check if given character code is a quote character
- */
-function isQuote$2(code) {
- return code === 39 /* ' */ || code === 34 /* " */;
-}
-
-/**
- * A streaming, character code-based string reader
- */
-class Scanner {
- constructor(str, start, end) {
- if (end == null && typeof str === 'string') {
- end = str.length;
- }
- this.string = str;
- this.pos = this.start = start || 0;
- this.end = end || 0;
- }
- /**
- * Returns true only if the stream is at the end of the file.
- */
- eof() {
- return this.pos >= this.end;
- }
- /**
- * Creates a new stream instance which is limited to given `start` and `end`
- * range. E.g. its `eof()` method will look at `end` property, not actual
- * stream end
- */
- limit(start, end) {
- return new Scanner(this.string, start, end);
- }
- /**
- * Returns the next character code in the stream without advancing it.
- * Will return NaN at the end of the file.
- */
- peek() {
- return this.string.charCodeAt(this.pos);
- }
- /**
- * Returns the next character in the stream and advances it.
- * Also returns undefined
when no more characters are available.
- */
- next() {
- if (this.pos < this.string.length) {
- return this.string.charCodeAt(this.pos++);
- }
- }
- /**
- * `match` can be a character code or a function that takes a character code
- * and returns a boolean. If the next character in the stream 'matches'
- * the given argument, it is consumed and returned.
- * Otherwise, `false` is returned.
- */
- eat(match) {
- const ch = this.peek();
- const ok = typeof match === 'function' ? match(ch) : ch === match;
- if (ok) {
- this.next();
- }
- return ok;
- }
- /**
- * Repeatedly calls eat
with the given argument, until it
- * fails. Returns true
if any characters were eaten.
- */
- eatWhile(match) {
- const start = this.pos;
- while (!this.eof() && this.eat(match)) { /* */ }
- return this.pos !== start;
- }
- /**
- * Backs up the stream n characters. Backing it up further than the
- * start of the current token will cause things to break, so be careful.
- */
- backUp(n) {
- this.pos -= (n || 1);
- }
- /**
- * Get the string between the start of the current token and the
- * current stream position.
- */
- current() {
- return this.substring(this.start, this.pos);
- }
- /**
- * Returns substring for given range
- */
- substring(start, end) {
- return this.string.slice(start, end);
- }
- /**
- * Creates error object with current stream state
- */
- error(message, pos = this.pos) {
- return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);
- }
-}
-class ScannerError extends Error {
- constructor(message, pos, str) {
- super(message);
- this.pos = pos;
- this.string = str;
- }
-}
-
-function tokenScanner$1(tokens) {
- return {
- tokens,
- start: 0,
- pos: 0,
- size: tokens.length
- };
-}
-function peek$3(scanner) {
- return scanner.tokens[scanner.pos];
-}
-function next(scanner) {
- return scanner.tokens[scanner.pos++];
-}
-function slice(scanner, from = scanner.start, to = scanner.pos) {
- return scanner.tokens.slice(from, to);
-}
-function readable$1(scanner) {
- return scanner.pos < scanner.size;
-}
-function consume$2(scanner, test) {
- const token = peek$3(scanner);
- if (token && test(token)) {
- scanner.pos++;
- return true;
- }
- return false;
-}
-function error$1(scanner, message, token = peek$3(scanner)) {
- if (token && token.start != null) {
- message += ` at ${token.start}`;
- }
- const err = new Error(message);
- err['pos'] = token && token.start;
- return err;
-}
-
-function abbreviation(abbr, options = {}) {
- const scanner = tokenScanner$1(abbr);
- const result = statements(scanner, options);
- if (readable$1(scanner)) {
- throw error$1(scanner, 'Unexpected character');
- }
- return result;
-}
-function statements(scanner, options) {
- const result = {
- type: 'TokenGroup',
- elements: []
- };
- let ctx = result;
- let node;
- const stack = [];
- while (readable$1(scanner)) {
- if (node = element$2(scanner, options) || group(scanner, options)) {
- ctx.elements.push(node);
- if (consume$2(scanner, isChildOperator)) {
- stack.push(ctx);
- ctx = node;
- }
- else if (consume$2(scanner, isSiblingOperator$1)) {
- continue;
- }
- else if (consume$2(scanner, isClimbOperator)) {
- do {
- if (stack.length) {
- ctx = stack.pop();
- }
- } while (consume$2(scanner, isClimbOperator));
- }
- }
- else {
- break;
- }
- }
- return result;
-}
-/**
- * Consumes group from given scanner
- */
-function group(scanner, options) {
- if (consume$2(scanner, isGroupStart)) {
- const result = statements(scanner, options);
- const token = next(scanner);
- if (isBracket$2(token, 'group', false)) {
- result.repeat = repeater$1(scanner);
- }
- return result;
- }
-}
-/**
- * Consumes single element from given scanner
- */
-function element$2(scanner, options) {
- let attr;
- const elem = {
- type: 'TokenElement',
- name: void 0,
- attributes: void 0,
- value: void 0,
- repeat: void 0,
- selfClose: false,
- elements: []
- };
- if (elementName(scanner, options)) {
- elem.name = slice(scanner);
- }
- while (readable$1(scanner)) {
- scanner.start = scanner.pos;
- if (!elem.repeat && !isEmpty(elem) && consume$2(scanner, isRepeater)) {
- elem.repeat = scanner.tokens[scanner.pos - 1];
- }
- else if (!elem.value && text(scanner)) {
- elem.value = getText(scanner);
- }
- else if (attr = shortAttribute(scanner, 'id', options) || shortAttribute(scanner, 'class', options) || attributeSet(scanner)) {
- if (!elem.attributes) {
- elem.attributes = Array.isArray(attr) ? attr.slice() : [attr];
- }
- else {
- elem.attributes = elem.attributes.concat(attr);
- }
- }
- else {
- if (!isEmpty(elem) && consume$2(scanner, isCloseOperator)) {
- elem.selfClose = true;
- if (!elem.repeat && consume$2(scanner, isRepeater)) {
- elem.repeat = scanner.tokens[scanner.pos - 1];
- }
- }
- break;
- }
- }
- return !isEmpty(elem) ? elem : void 0;
-}
-/**
- * Consumes attribute set from given scanner
- */
-function attributeSet(scanner) {
- if (consume$2(scanner, isAttributeSetStart)) {
- const attributes = [];
- let attr;
- while (readable$1(scanner)) {
- if (attr = attribute(scanner)) {
- attributes.push(attr);
- }
- else if (consume$2(scanner, isAttributeSetEnd)) {
- break;
- }
- else if (!consume$2(scanner, isWhiteSpace$2)) {
- throw error$1(scanner, `Unexpected "${peek$3(scanner).type}" token`);
- }
- }
- return attributes;
- }
-}
-/**
- * Consumes attribute shorthand (class or id) from given scanner
- */
-function shortAttribute(scanner, type, options) {
- if (isOperator$1(peek$3(scanner), type)) {
- scanner.pos++;
- // Consume multiple operators
- let count = 1;
- while (isOperator$1(peek$3(scanner), type)) {
- scanner.pos++;
- count++;
- }
- const attr = {
- name: [createLiteral$1(type)]
- };
- if (count > 1) {
- attr.multiple = true;
- }
- // Consume expression after shorthand start for React-like components
- if (options.jsx && text(scanner)) {
- attr.value = getText(scanner);
- attr.expression = true;
- }
- else {
- attr.value = literal$1$1(scanner) ? slice(scanner) : void 0;
- }
- return attr;
- }
-}
-/**
- * Consumes single attribute from given scanner
- */
-function attribute(scanner) {
- if (quoted(scanner)) {
- // Consumed quoted value: it’s a value for default attribute
- return {
- value: slice(scanner)
- };
- }
- if (literal$1$1(scanner, true)) {
- const name = slice(scanner);
- let value;
- if (consume$2(scanner, isEquals)) {
- if (quoted(scanner) || literal$1$1(scanner, true)) {
- value = slice(scanner);
- }
- }
- return { name, value };
- }
-}
-function repeater$1(scanner) {
- return isRepeater(peek$3(scanner))
- ? scanner.tokens[scanner.pos++]
- : void 0;
-}
-/**
- * Consumes quoted value from given scanner, if possible
- */
-function quoted(scanner) {
- const start = scanner.pos;
- const quote = peek$3(scanner);
- if (isQuote$1(quote)) {
- scanner.pos++;
- while (readable$1(scanner)) {
- if (isQuote$1(next(scanner), quote.single)) {
- scanner.start = start;
- return true;
- }
- }
- throw error$1(scanner, 'Unclosed quote', quote);
- }
- return false;
-}
-/**
- * Consumes literal (unquoted value) from given scanner
- */
-function literal$1$1(scanner, allowBrackets) {
- const start = scanner.pos;
- const brackets = {
- attribute: 0,
- expression: 0,
- group: 0
- };
- while (readable$1(scanner)) {
- const token = peek$3(scanner);
- if (brackets.expression) {
- // If we’re inside expression, we should consume all content in it
- if (isBracket$2(token, 'expression')) {
- brackets[token.context] += token.open ? 1 : -1;
- }
- }
- else if (isQuote$1(token) || isOperator$1(token) || isWhiteSpace$2(token) || isRepeater(token)) {
- break;
- }
- else if (isBracket$2(token)) {
- if (!allowBrackets) {
- break;
- }
- if (token.open) {
- brackets[token.context]++;
- }
- else if (!brackets[token.context]) {
- // Stop if found unmatched closing brace: it must be handled
- // by parent consumer
- break;
- }
- else {
- brackets[token.context]--;
- }
- }
- scanner.pos++;
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return true;
- }
- return false;
-}
-/**
- * Consumes element name from given scanner
- */
-function elementName(scanner, options) {
- const start = scanner.pos;
- if (options.jsx && consume$2(scanner, isCapitalizedLiteral)) {
- // Check for edge case: consume immediate capitalized class names
- // for React-like components, e.g. `Foo.Bar.Baz`
- while (readable$1(scanner)) {
- const { pos } = scanner;
- if (!consume$2(scanner, isClassNameOperator) || !consume$2(scanner, isCapitalizedLiteral)) {
- scanner.pos = pos;
- break;
- }
- }
- }
- while (readable$1(scanner) && consume$2(scanner, isElementName$1)) {
- // empty
- }
- if (scanner.pos !== start) {
- scanner.start = start;
- return true;
- }
- return false;
-}
-/**
- * Consumes text value from given scanner
- */
-function text(scanner) {
- const start = scanner.pos;
- if (consume$2(scanner, isTextStart)) {
- let brackets = 0;
- while (readable$1(scanner)) {
- const token = next(scanner);
- if (isBracket$2(token, 'expression')) {
- if (token.open) {
- brackets++;
- }
- else if (!brackets) {
- break;
- }
- else {
- brackets--;
- }
- }
- }
- scanner.start = start;
- return true;
- }
- return false;
-}
-function getText(scanner) {
- let from = scanner.start;
- let to = scanner.pos;
- if (isBracket$2(scanner.tokens[from], 'expression', true)) {
- from++;
- }
- if (isBracket$2(scanner.tokens[to - 1], 'expression', false)) {
- to--;
- }
- return slice(scanner, from, to);
-}
-function isBracket$2(token, context, isOpen) {
- return Boolean(token && token.type === 'Bracket'
- && (!context || token.context === context)
- && (isOpen == null || token.open === isOpen));
-}
-function isOperator$1(token, type) {
- return Boolean(token && token.type === 'Operator' && (!type || token.operator === type));
-}
-function isQuote$1(token, isSingle) {
- return Boolean(token && token.type === 'Quote' && (isSingle == null || token.single === isSingle));
-}
-function isWhiteSpace$2(token) {
- return Boolean(token && token.type === 'WhiteSpace');
-}
-function isEquals(token) {
- return isOperator$1(token, 'equal');
-}
-function isRepeater(token) {
- return Boolean(token && token.type === 'Repeater');
-}
-function isLiteral$2(token) {
- return token.type === 'Literal';
-}
-function isCapitalizedLiteral(token) {
- if (isLiteral$2(token)) {
- const ch = token.value.charCodeAt(0);
- return ch >= 65 && ch <= 90;
- }
- return false;
-}
-function isElementName$1(token) {
- return token.type === 'Literal' || token.type === 'RepeaterNumber' || token.type === 'RepeaterPlaceholder';
-}
-function isClassNameOperator(token) {
- return isOperator$1(token, 'class');
-}
-function isAttributeSetStart(token) {
- return isBracket$2(token, 'attribute', true);
-}
-function isAttributeSetEnd(token) {
- return isBracket$2(token, 'attribute', false);
-}
-function isTextStart(token) {
- return isBracket$2(token, 'expression', true);
-}
-function isGroupStart(token) {
- return isBracket$2(token, 'group', true);
-}
-function createLiteral$1(value) {
- return { type: 'Literal', value };
-}
-function isEmpty(elem) {
- return !elem.name && !elem.value && !elem.attributes;
-}
-function isChildOperator(token) {
- return isOperator$1(token, 'child');
-}
-function isSiblingOperator$1(token) {
- return isOperator$1(token, 'sibling');
-}
-function isClimbOperator(token) {
- return isOperator$1(token, 'climb');
-}
-function isCloseOperator(token) {
- return isOperator$1(token, 'close');
-}
-
-var Chars$3;
-(function (Chars) {
- /** `{` character */
- Chars[Chars["CurlyBracketOpen"] = 123] = "CurlyBracketOpen";
- /** `}` character */
- Chars[Chars["CurlyBracketClose"] = 125] = "CurlyBracketClose";
- /** `\\` character */
- Chars[Chars["Escape"] = 92] = "Escape";
- /** `=` character */
- Chars[Chars["Equals"] = 61] = "Equals";
- /** `[` character */
- Chars[Chars["SquareBracketOpen"] = 91] = "SquareBracketOpen";
- /** `]` character */
- Chars[Chars["SquareBracketClose"] = 93] = "SquareBracketClose";
- /** `*` character */
- Chars[Chars["Asterisk"] = 42] = "Asterisk";
- /** `#` character */
- Chars[Chars["Hash"] = 35] = "Hash";
- /** `$` character */
- Chars[Chars["Dollar"] = 36] = "Dollar";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `.` character */
- Chars[Chars["Dot"] = 46] = "Dot";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `!` character */
- Chars[Chars["Excl"] = 33] = "Excl";
- /** `@` character */
- Chars[Chars["At"] = 64] = "At";
- /** `_` character */
- Chars[Chars["Underscore"] = 95] = "Underscore";
- /** `(` character */
- Chars[Chars["RoundBracketOpen"] = 40] = "RoundBracketOpen";
- /** `)` character */
- Chars[Chars["RoundBracketClose"] = 41] = "RoundBracketClose";
- /** `+` character */
- Chars[Chars["Sibling"] = 43] = "Sibling";
- /** `>` character */
- Chars[Chars["Child"] = 62] = "Child";
- /** `^` character */
- Chars[Chars["Climb"] = 94] = "Climb";
- /** `'` character */
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- /** `""` character */
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
-})(Chars$3 || (Chars$3 = {}));
-/**
- * If consumes escape character, sets current stream range to escaped value
- */
-function escaped(scanner) {
- if (scanner.eat(Chars$3.Escape)) {
- scanner.start = scanner.pos;
- if (!scanner.eof()) {
- scanner.pos++;
- }
- return true;
- }
- return false;
-}
-
-function tokenize$1(source) {
- const scanner = new Scanner(source);
- const result = [];
- const ctx = {
- group: 0,
- attribute: 0,
- expression: 0,
- quote: 0
- };
- let ch = 0;
- let token;
- while (!scanner.eof()) {
- ch = scanner.peek();
- token = getToken$1(scanner, ctx);
- if (token) {
- result.push(token);
- if (token.type === 'Quote') {
- ctx.quote = ch === ctx.quote ? 0 : ch;
- }
- else if (token.type === 'Bracket') {
- ctx[token.context] += token.open ? 1 : -1;
- }
- }
- else {
- throw scanner.error('Unexpected character');
- }
- }
- return result;
-}
-/**
- * Returns next token from given scanner, if possible
- */
-function getToken$1(scanner, ctx) {
- return field$2(scanner, ctx)
- || repeaterPlaceholder(scanner)
- || repeaterNumber(scanner)
- || repeater(scanner)
- || whiteSpace$1(scanner)
- || literal$2(scanner, ctx)
- || operator$1(scanner)
- || quote(scanner)
- || bracket$1(scanner);
-}
-/**
- * Consumes literal from given scanner
- */
-function literal$2(scanner, ctx) {
- const start = scanner.pos;
- const expressionStart = ctx.expression;
- let value = '';
- while (!scanner.eof()) {
- // Consume escaped sequence no matter of context
- if (escaped(scanner)) {
- value += scanner.current();
- continue;
- }
- const ch = scanner.peek();
- if (ch === Chars$3.Slash && !ctx.quote && !ctx.expression && !ctx.attribute) {
- // Special case for `/` character between numbers in class names
- const prev = scanner.string.charCodeAt(scanner.pos - 1);
- const next = scanner.string.charCodeAt(scanner.pos + 1);
- if (isNumber$1(prev) && isNumber$1(next)) {
- value += scanner.string[scanner.pos++];
- continue;
- }
- }
- if (ch === ctx.quote || ch === Chars$3.Dollar || isAllowedOperator(ch, ctx)) {
- // 1. Found matching quote
- // 2. The `$` character has special meaning in every context
- // 3. Depending on context, some characters should be treated as operators
- break;
- }
- if (expressionStart) {
- // Consume nested expressions, e.g. span{{foo}}
- if (ch === Chars$3.CurlyBracketOpen) {
- ctx.expression++;
- }
- else if (ch === Chars$3.CurlyBracketClose) {
- if (ctx.expression > expressionStart) {
- ctx.expression--;
- }
- else {
- break;
- }
- }
- }
- else if (!ctx.quote) {
- // Consuming element name
- if (!ctx.attribute && !isElementName(ch)) {
- break;
- }
- if (isAllowedSpace(ch, ctx) || isAllowedRepeater(ch, ctx) || isQuote$2(ch) || bracketType(ch)) {
- // Stop for characters not allowed in unquoted literal
- break;
- }
- }
- value += scanner.string[scanner.pos++];
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return {
- type: 'Literal',
- value,
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes white space characters as string literal from given scanner
- */
-function whiteSpace$1(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(isSpace)) {
- return {
- type: 'WhiteSpace',
- start,
- end: scanner.pos,
- value: scanner.substring(start, scanner.pos)
- };
- }
-}
-/**
- * Consumes quote from given scanner
- */
-function quote(scanner) {
- const ch = scanner.peek();
- if (isQuote$2(ch)) {
- return {
- type: 'Quote',
- single: ch === Chars$3.SingleQuote,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes bracket from given scanner
- */
-function bracket$1(scanner) {
- const ch = scanner.peek();
- const context = bracketType(ch);
- if (context) {
- return {
- type: 'Bracket',
- open: isOpenBracket$2(ch),
- context,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes operator from given scanner
- */
-function operator$1(scanner) {
- const op = operatorType$1(scanner.peek());
- if (op) {
- return {
- type: 'Operator',
- operator: op,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes node repeat token from current stream position and returns its
- * parsed value
- */
-function repeater(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$3.Asterisk)) {
- scanner.start = scanner.pos;
- let count = 1;
- let implicit = false;
- if (scanner.eatWhile(isNumber$1)) {
- count = Number(scanner.current());
- }
- else {
- implicit = true;
- }
- return {
- type: 'Repeater',
- count,
- value: 0,
- implicit,
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes repeater placeholder `$#` from given scanner
- */
-function repeaterPlaceholder(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$3.Dollar) && scanner.eat(Chars$3.Hash)) {
- return {
- type: 'RepeaterPlaceholder',
- value: void 0,
- start,
- end: scanner.pos
- };
- }
- scanner.pos = start;
-}
-/**
- * Consumes numbering token like `$` from given scanner state
- */
-function repeaterNumber(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(Chars$3.Dollar)) {
- const size = scanner.pos - start;
- let reverse = false;
- let base = 1;
- let parent = 0;
- if (scanner.eat(Chars$3.At)) {
- // Consume numbering modifiers
- while (scanner.eat(Chars$3.Climb)) {
- parent++;
- }
- reverse = scanner.eat(Chars$3.Dash);
- scanner.start = scanner.pos;
- if (scanner.eatWhile(isNumber$1)) {
- base = Number(scanner.current());
- }
- }
- scanner.start = start;
- return {
- type: 'RepeaterNumber',
- size,
- reverse,
- base,
- parent,
- start,
- end: scanner.pos
- };
- }
-}
-function field$2(scanner, ctx) {
- const start = scanner.pos;
- // Fields are allowed inside expressions and attributes
- if ((ctx.expression || ctx.attribute) && scanner.eat(Chars$3.Dollar) && scanner.eat(Chars$3.CurlyBracketOpen)) {
- scanner.start = scanner.pos;
- let index;
- let name = '';
- if (scanner.eatWhile(isNumber$1)) {
- // It’s a field
- index = Number(scanner.current());
- name = scanner.eat(Chars$3.Colon) ? consumePlaceholder$2(scanner) : '';
- }
- else if (isAlpha$1(scanner.peek())) {
- // It’s a variable
- name = consumePlaceholder$2(scanner);
- }
- if (scanner.eat(Chars$3.CurlyBracketClose)) {
- return {
- type: 'Field',
- index, name,
- start,
- end: scanner.pos
- };
- }
- throw scanner.error('Expecting }');
- }
- // If we reached here then there’s no valid field here, revert
- // back to starting position
- scanner.pos = start;
-}
-/**
- * Consumes a placeholder: value right after `:` in field. Could be empty
- */
-function consumePlaceholder$2(stream) {
- const stack = [];
- stream.start = stream.pos;
- while (!stream.eof()) {
- if (stream.eat(Chars$3.CurlyBracketOpen)) {
- stack.push(stream.pos);
- }
- else if (stream.eat(Chars$3.CurlyBracketClose)) {
- if (!stack.length) {
- stream.pos--;
- break;
- }
- stack.pop();
- }
- else {
- stream.pos++;
- }
- }
- if (stack.length) {
- stream.pos = stack.pop();
- throw stream.error(`Expecting }`);
- }
- return stream.current();
-}
-/**
- * Check if given character code is an operator and it’s allowed in current context
- */
-function isAllowedOperator(ch, ctx) {
- const op = operatorType$1(ch);
- if (!op || ctx.quote || ctx.expression) {
- // No operators inside quoted values or expressions
- return false;
- }
- // Inside attributes, only `equals` is allowed
- return !ctx.attribute || op === 'equal';
-}
-/**
- * Check if given character is a space character and is allowed to be consumed
- * as a space token in current context
- */
-function isAllowedSpace(ch, ctx) {
- return isSpace(ch) && !ctx.expression;
-}
-/**
- * Check if given character can be consumed as repeater in current context
- */
-function isAllowedRepeater(ch, ctx) {
- return ch === Chars$3.Asterisk && !ctx.attribute && !ctx.expression;
-}
-/**
- * If given character is a bracket, returns it’s type
- */
-function bracketType(ch) {
- if (ch === Chars$3.RoundBracketOpen || ch === Chars$3.RoundBracketClose) {
- return 'group';
- }
- if (ch === Chars$3.SquareBracketOpen || ch === Chars$3.SquareBracketClose) {
- return 'attribute';
- }
- if (ch === Chars$3.CurlyBracketOpen || ch === Chars$3.CurlyBracketClose) {
- return 'expression';
- }
-}
-/**
- * If given character is an operator, returns it’s type
- */
-function operatorType$1(ch) {
- return (ch === Chars$3.Child && 'child')
- || (ch === Chars$3.Sibling && 'sibling')
- || (ch === Chars$3.Climb && 'climb')
- || (ch === Chars$3.Dot && 'class')
- || (ch === Chars$3.Hash && 'id')
- || (ch === Chars$3.Slash && 'close')
- || (ch === Chars$3.Equals && 'equal')
- || void 0;
-}
-/**
- * Check if given character is an open bracket
- */
-function isOpenBracket$2(ch) {
- return ch === Chars$3.CurlyBracketOpen
- || ch === Chars$3.SquareBracketOpen
- || ch === Chars$3.RoundBracketOpen;
-}
-/**
- * Check if given character is allowed in element name
- */
-function isElementName(ch) {
- return isAlphaNumericWord(ch)
- || isUmlaut(ch)
- || ch === Chars$3.Dash
- || ch === Chars$3.Colon
- || ch === Chars$3.Excl;
-}
-
-const operators = {
- child: '>',
- class: '.',
- climb: '^',
- id: '#',
- equal: '=',
- close: '/',
- sibling: '+'
-};
-const tokenVisitor = {
- Literal(token) {
- return token.value;
- },
- Quote(token) {
- return token.single ? '\'' : '"';
- },
- Bracket(token) {
- if (token.context === 'attribute') {
- return token.open ? '[' : ']';
- }
- else if (token.context === 'expression') {
- return token.open ? '{' : '}';
- }
- else {
- return token.open ? '(' : '}';
- }
- },
- Operator(token) {
- return operators[token.operator];
- },
- Field(token, state) {
- if (token.index != null) {
- // It’s a field: by default, return TextMate-compatible field
- return token.name
- ? `\${${token.index}:${token.name}}`
- : `\${${token.index}`;
- }
- else if (token.name) {
- // It’s a variable
- return state.getVariable(token.name);
- }
- return '';
- },
- RepeaterPlaceholder(token, state) {
- // Find closest implicit repeater
- let repeater;
- for (let i = state.repeaters.length - 1; i >= 0; i--) {
- if (state.repeaters[i].implicit) {
- repeater = state.repeaters[i];
- break;
- }
- }
- state.inserted = true;
- return state.getText(repeater && repeater.value);
- },
- RepeaterNumber(token, state) {
- let value = 1;
- const lastIx = state.repeaters.length - 1;
- // const repeaterIx = Math.max(0, state.repeaters.length - 1 - token.parent);
- const repeater = state.repeaters[lastIx];
- if (repeater) {
- value = token.reverse
- ? token.base + repeater.count - repeater.value - 1
- : token.base + repeater.value;
- if (token.parent) {
- const parentIx = Math.max(0, lastIx - token.parent);
- if (parentIx !== lastIx) {
- const parentRepeater = state.repeaters[parentIx];
- value += repeater.count * parentRepeater.value;
- }
- }
- }
- let result = String(value);
- while (result.length < token.size) {
- result = '0' + result;
- }
- return result;
- },
- WhiteSpace(token) {
- return token.value;
- }
-};
-/**
- * Converts given value token to string
- */
-function stringify$1(token, state) {
- if (!tokenVisitor[token.type]) {
- throw new Error(`Unknown token ${token.type}`);
- }
- return tokenVisitor[token.type](token, state);
-}
-
-const urlRegex = /^((https?:|ftp:|file:)?\/\/|(www|ftp)\.)[^ ]*$/;
-const emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,5}$/;
-/**
- * Converts given token-based abbreviation into simplified and unrolled node-based
- * abbreviation
- */
-function convert(abbr, options = {}) {
- let textInserted = false;
- let cleanText;
- if (options.text) {
- if (Array.isArray(options.text)) {
- cleanText = options.text.filter(s => s.trim());
- }
- else {
- cleanText = options.text;
- }
- }
- const result = {
- type: 'Abbreviation',
- children: convertGroup(abbr, {
- inserted: false,
- repeaters: [],
- text: options.text,
- cleanText,
- repeatGuard: options.maxRepeat || Number.POSITIVE_INFINITY,
- getText(pos) {
- var _a;
- textInserted = true;
- let value;
- if (Array.isArray(options.text)) {
- if (pos !== undefined && pos >= 0 && pos < cleanText.length) {
- return cleanText[pos];
- }
- value = pos !== undefined ? options.text[pos] : options.text.join('\n');
- }
- else {
- value = (_a = options.text) !== null && _a !== void 0 ? _a : '';
- }
- return value;
- },
- getVariable(name) {
- const varValue = options.variables && options.variables[name];
- return varValue != null ? varValue : name;
- }
- })
- };
- if (options.text != null && !textInserted) {
- // Text given but no implicitly repeated elements: insert it into
- // deepest child
- const deepest = deepestNode(last$1(result.children));
- if (deepest) {
- const text = Array.isArray(options.text) ? options.text.join('\n') : options.text;
- insertText(deepest, text);
- if (deepest.name === 'a' && options.href) {
- // Automatically update value of `` element if inserting URL or email
- insertHref(deepest, text);
- }
- }
- }
- return result;
-}
-/**
- * Converts given statement to abbreviation nodes
- */
-function convertStatement(node, state) {
- let result = [];
- if (node.repeat) {
- // Node is repeated: we should create copies of given node
- // and supply context token with actual repeater state
- const original = node.repeat;
- const repeat = Object.assign({}, original);
- repeat.count = repeat.implicit && Array.isArray(state.text)
- ? state.cleanText.length
- : (repeat.count || 1);
- let items;
- state.repeaters.push(repeat);
- for (let i = 0; i < repeat.count; i++) {
- repeat.value = i;
- node.repeat = repeat;
- items = isGroup(node)
- ? convertGroup(node, state)
- : convertElement(node, state);
- if (repeat.implicit && !state.inserted) {
- // It’s an implicit repeater but no repeater placeholders found inside,
- // we should insert text into deepest node
- const target = last$1(items);
- const deepest = target && deepestNode(target);
- if (deepest) {
- insertText(deepest, state.getText(repeat.value));
- }
- }
- result = result.concat(items);
- // We should output at least one repeated item even if it’s reached
- // repeat limit
- if (--state.repeatGuard <= 0) {
- break;
- }
- }
- state.repeaters.pop();
- node.repeat = original;
- if (repeat.implicit) {
- state.inserted = true;
- }
- }
- else {
- result = result.concat(isGroup(node) ? convertGroup(node, state) : convertElement(node, state));
- }
- return result;
-}
-function convertElement(node, state) {
- let children = [];
- const elem = {
- type: 'AbbreviationNode',
- name: node.name && stringifyName(node.name, state),
- value: node.value && stringifyValue$1(node.value, state),
- attributes: void 0,
- children,
- repeat: node.repeat && Object.assign({}, node.repeat),
- selfClosing: node.selfClose,
- };
- let result = [elem];
- for (const child of node.elements) {
- children = children.concat(convertStatement(child, state));
- }
- if (node.attributes) {
- elem.attributes = [];
- for (const attr of node.attributes) {
- elem.attributes.push(convertAttribute(attr, state));
- }
- }
- // In case if current node is a text-only snippet without fields, we should
- // put all children as siblings
- if (!elem.name && !elem.attributes && elem.value && !elem.value.some(isField$1)) {
- // XXX it’s unclear that `children` is not bound to `elem`
- // due to concat operation
- result = result.concat(children);
- }
- else {
- elem.children = children;
- }
- return result;
-}
-function convertGroup(node, state) {
- let result = [];
- for (const child of node.elements) {
- result = result.concat(convertStatement(child, state));
- }
- if (node.repeat) {
- result = attachRepeater(result, node.repeat);
- }
- return result;
-}
-function convertAttribute(node, state) {
- let implied = false;
- let isBoolean = false;
- let valueType = node.expression ? 'expression' : 'raw';
- let value;
- const name = node.name && stringifyName(node.name, state);
- if (name && name[0] === '!') {
- implied = true;
- }
- if (name && name[name.length - 1] === '.') {
- isBoolean = true;
- }
- if (node.value) {
- const tokens = node.value.slice();
- if (isQuote$1(tokens[0])) {
- // It’s a quoted value: remove quotes from output but mark attribute
- // value as quoted
- const quote = tokens.shift();
- if (tokens.length && last$1(tokens).type === quote.type) {
- tokens.pop();
- }
- valueType = quote.single ? 'singleQuote' : 'doubleQuote';
- }
- else if (isBracket$2(tokens[0], 'expression', true)) {
- // Value is expression: remove brackets but mark value type
- valueType = 'expression';
- tokens.shift();
- if (isBracket$2(last$1(tokens), 'expression', false)) {
- tokens.pop();
- }
- }
- value = stringifyValue$1(tokens, state);
- }
- return {
- name: isBoolean || implied
- ? name.slice(implied ? 1 : 0, isBoolean ? -1 : void 0)
- : name,
- value,
- boolean: isBoolean,
- implied,
- valueType,
- multiple: node.multiple
- };
-}
-/**
- * Converts given token list to string
- */
-function stringifyName(tokens, state) {
- let str = '';
- for (let i = 0; i < tokens.length; i++) {
- str += stringify$1(tokens[i], state);
- }
- return str;
-}
-/**
- * Converts given token list to value list
- */
-function stringifyValue$1(tokens, state) {
- const result = [];
- let str = '';
- for (let i = 0, token; i < tokens.length; i++) {
- token = tokens[i];
- if (isField$1(token)) {
- // We should keep original fields in output since some editors has their
- // own syntax for field or doesn’t support fields at all so we should
- // capture actual field location in output stream
- if (str) {
- result.push(str);
- str = '';
- }
- result.push(token);
- }
- else {
- str += stringify$1(token, state);
- }
- }
- if (str) {
- result.push(str);
- }
- return result;
-}
-function isGroup(node) {
- return node.type === 'TokenGroup';
-}
-function isField$1(token) {
- return typeof token === 'object' && token.type === 'Field' && token.index != null;
-}
-function last$1(arr) {
- return arr[arr.length - 1];
-}
-function deepestNode(node) {
- return node.children.length ? deepestNode(last$1(node.children)) : node;
-}
-function insertText(node, text) {
- if (node.value) {
- const lastToken = last$1(node.value);
- if (typeof lastToken === 'string') {
- node.value[node.value.length - 1] += text;
- }
- else {
- node.value.push(text);
- }
- }
- else {
- node.value = [text];
- }
-}
-function insertHref(node, text) {
- var _a;
- let href = '';
- if (urlRegex.test(text)) {
- href = text;
- if (!/\w+:/.test(href) && !href.startsWith('//')) {
- href = `http://${href}`;
- }
- }
- else if (emailRegex.test(text)) {
- href = `mailto:${text}`;
- }
- const hrefAttribute = (_a = node.attributes) === null || _a === void 0 ? void 0 : _a.find(attr => attr.name === 'href');
- if (!hrefAttribute) {
- if (!node.attributes) {
- node.attributes = [];
- }
- node.attributes.push({ name: 'href', value: [href], valueType: 'doubleQuote' });
- }
- else if (!hrefAttribute.value) {
- hrefAttribute.value = [href];
- }
-}
-function attachRepeater(items, repeater) {
- for (const item of items) {
- if (!item.repeat) {
- item.repeat = Object.assign({}, repeater);
- }
- }
- return items;
-}
-
-/**
- * Parses given abbreviation into node tree
- */
-function parseAbbreviation(abbr, options) {
- try {
- const tokens = typeof abbr === 'string' ? tokenize$1(abbr) : abbr;
- return convert(abbreviation(tokens, options), options);
- }
- catch (err) {
- if (err instanceof ScannerError && typeof abbr === 'string') {
- err.message += `\n${abbr}\n${'-'.repeat(err.pos)}^`;
- }
- throw err;
- }
-}
-
-var OperatorType;
-(function (OperatorType) {
- OperatorType["Sibling"] = "+";
- OperatorType["Important"] = "!";
- OperatorType["ArgumentDelimiter"] = ",";
- OperatorType["ValueDelimiter"] = "-";
- OperatorType["PropertyDelimiter"] = ":";
-})(OperatorType || (OperatorType = {}));
-
-var Chars$2;
-(function (Chars) {
- /** `#` character */
- Chars[Chars["Hash"] = 35] = "Hash";
- /** `$` character */
- Chars[Chars["Dollar"] = 36] = "Dollar";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `.` character */
- Chars[Chars["Dot"] = 46] = "Dot";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `,` character */
- Chars[Chars["Comma"] = 44] = "Comma";
- /** `!` character */
- Chars[Chars["Excl"] = 33] = "Excl";
- /** `@` character */
- Chars[Chars["At"] = 64] = "At";
- /** `%` character */
- Chars[Chars["Percent"] = 37] = "Percent";
- /** `_` character */
- Chars[Chars["Underscore"] = 95] = "Underscore";
- /** `(` character */
- Chars[Chars["RoundBracketOpen"] = 40] = "RoundBracketOpen";
- /** `)` character */
- Chars[Chars["RoundBracketClose"] = 41] = "RoundBracketClose";
- /** `{` character */
- Chars[Chars["CurlyBracketOpen"] = 123] = "CurlyBracketOpen";
- /** `}` character */
- Chars[Chars["CurlyBracketClose"] = 125] = "CurlyBracketClose";
- /** `+` character */
- Chars[Chars["Sibling"] = 43] = "Sibling";
- /** `'` character */
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- /** `"` character */
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
- /** `t` character */
- Chars[Chars["Transparent"] = 116] = "Transparent";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
-})(Chars$2 || (Chars$2 = {}));
-
-function tokenize(abbr, isValue) {
- let brackets = 0;
- let token;
- const scanner = new Scanner(abbr);
- const tokens = [];
- while (!scanner.eof()) {
- token = getToken(scanner, brackets === 0 && !isValue);
- if (!token) {
- throw scanner.error('Unexpected character');
- }
- if (token.type === 'Bracket') {
- if (!brackets && token.open) {
- mergeTokens(scanner, tokens);
- }
- brackets += token.open ? 1 : -1;
- if (brackets < 0) {
- throw scanner.error('Unexpected bracket', token.start);
- }
- }
- tokens.push(token);
- // Forcibly consume next operator after unit-less numeric value or color:
- // next dash `-` must be used as value delimiter
- if (shouldConsumeDashAfter(token) && (token = operator(scanner))) {
- tokens.push(token);
- }
- }
- return tokens;
-}
-/**
- * Returns next token from given scanner, if possible
- */
-function getToken(scanner, short) {
- return field$1(scanner)
- || customProperty(scanner)
- || numberValue(scanner)
- || colorValue(scanner)
- || stringValue(scanner)
- || bracket(scanner)
- || operator(scanner)
- || whiteSpace(scanner)
- || literal$1(scanner, short);
-}
-function field$1(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dollar) && scanner.eat(Chars$2.CurlyBracketOpen)) {
- scanner.start = scanner.pos;
- let index;
- let name = '';
- if (scanner.eatWhile(isNumber$1)) {
- // It’s a field
- index = Number(scanner.current());
- name = scanner.eat(Chars$2.Colon) ? consumePlaceholder$1(scanner) : '';
- }
- else if (isAlpha$1(scanner.peek())) {
- // It’s a variable
- name = consumePlaceholder$1(scanner);
- }
- if (scanner.eat(Chars$2.CurlyBracketClose)) {
- return {
- type: 'Field',
- index, name,
- start,
- end: scanner.pos
- };
- }
- throw scanner.error('Expecting }');
- }
- // If we reached here then there’s no valid field here, revert
- // back to starting position
- scanner.pos = start;
-}
-/**
- * Consumes a placeholder: value right after `:` in field. Could be empty
- */
-function consumePlaceholder$1(stream) {
- const stack = [];
- stream.start = stream.pos;
- while (!stream.eof()) {
- if (stream.eat(Chars$2.CurlyBracketOpen)) {
- stack.push(stream.pos);
- }
- else if (stream.eat(Chars$2.CurlyBracketClose)) {
- if (!stack.length) {
- stream.pos--;
- break;
- }
- stack.pop();
- }
- else {
- stream.pos++;
- }
- }
- if (stack.length) {
- stream.pos = stack.pop();
- throw stream.error(`Expecting }`);
- }
- return stream.current();
-}
-/**
- * Consumes literal from given scanner
- * @param short Use short notation for consuming value.
- * The difference between “short” and “full” notation is that first one uses
- * alpha characters only and used for extracting keywords from abbreviation,
- * while “full” notation also supports numbers and dashes
- */
-function literal$1(scanner, short) {
- const start = scanner.pos;
- if (scanner.eat(isIdentPrefix)) {
- // SCSS or LESS variable
- // NB a bit dirty hack: if abbreviation starts with identifier prefix,
- // consume alpha characters only to allow embedded variables
- scanner.eatWhile(start ? isKeyword : isLiteral$1);
- }
- else if (scanner.eat(isAlphaWord)) {
- scanner.eatWhile(short ? isLiteral$1 : isKeyword);
- }
- else {
- // Allow dots only at the beginning of literal
- scanner.eat(Chars$2.Dot);
- scanner.eatWhile(isLiteral$1);
- }
- if (start !== scanner.pos) {
- scanner.start = start;
- return createLiteral(scanner, scanner.start = start);
- }
-}
-function createLiteral(scanner, start = scanner.start, end = scanner.pos) {
- return {
- type: 'Literal',
- value: scanner.substring(start, end),
- start,
- end
- };
-}
-/**
- * Consumes numeric CSS value (number with optional unit) from current stream,
- * if possible
- */
-function numberValue(scanner) {
- const start = scanner.pos;
- if (consumeNumber(scanner)) {
- scanner.start = start;
- const rawValue = scanner.current();
- // eat unit, which can be a % or alpha word
- scanner.start = scanner.pos;
- scanner.eat(Chars$2.Percent) || scanner.eatWhile(isAlphaWord);
- return {
- type: 'NumberValue',
- value: Number(rawValue),
- rawValue,
- unit: scanner.current(),
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes quoted string value from given scanner
- */
-function stringValue(scanner) {
- const ch = scanner.peek();
- const start = scanner.pos;
- let finished = false;
- if (isQuote$2(ch)) {
- scanner.pos++;
- while (!scanner.eof()) {
- // Do not throw error on malformed string
- if (scanner.eat(ch)) {
- finished = true;
- break;
- }
- else {
- scanner.pos++;
- }
- }
- scanner.start = start;
- return {
- type: 'StringValue',
- value: scanner.substring(start + 1, scanner.pos - (finished ? 1 : 0)),
- quote: ch === Chars$2.SingleQuote ? 'single' : 'double',
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes a color token from given string
- */
-function colorValue(scanner) {
- // supported color variations:
- // #abc → #aabbccc
- // #0 → #000000
- // #fff.5 → rgba(255, 255, 255, 0.5)
- // #t → transparent
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Hash)) {
- const valueStart = scanner.pos;
- let color = '';
- let alpha = '';
- if (scanner.eatWhile(isHex)) {
- color = scanner.substring(valueStart, scanner.pos);
- alpha = colorAlpha(scanner);
- }
- else if (scanner.eat(Chars$2.Transparent)) {
- color = '0';
- alpha = colorAlpha(scanner) || '0';
- }
- else {
- alpha = colorAlpha(scanner);
- }
- if (color || alpha || scanner.eof()) {
- const { r, g, b, a } = parseColor(color, alpha);
- return {
- type: 'ColorValue',
- r, g, b, a,
- raw: scanner.substring(start + 1, scanner.pos),
- start,
- end: scanner.pos
- };
- }
- else {
- // Consumed # but no actual value: invalid color value, treat it as literal
- return createLiteral(scanner, start);
- }
- }
- scanner.pos = start;
-}
-/**
- * Consumes alpha value of color: `.1`
- */
-function colorAlpha(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dot)) {
- scanner.start = start;
- if (scanner.eatWhile(isNumber$1)) {
- return scanner.current();
- }
- return '1';
- }
- return '';
-}
-/**
- * Consumes white space characters as string literal from given scanner
- */
-function whiteSpace(scanner) {
- const start = scanner.pos;
- if (scanner.eatWhile(isSpace)) {
- return {
- type: 'WhiteSpace',
- start,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes custom CSS property: --foo-bar
- */
-function customProperty(scanner) {
- const start = scanner.pos;
- if (scanner.eat(Chars$2.Dash) && scanner.eat(Chars$2.Dash)) {
- scanner.start = start;
- scanner.eatWhile(isKeyword);
- return {
- type: 'CustomProperty',
- value: scanner.current(),
- start,
- end: scanner.pos
- };
- }
- scanner.pos = start;
-}
-/**
- * Consumes bracket from given scanner
- */
-function bracket(scanner) {
- const ch = scanner.peek();
- if (isBracket$1(ch)) {
- return {
- type: 'Bracket',
- open: ch === Chars$2.RoundBracketOpen,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Consumes operator from given scanner
- */
-function operator(scanner) {
- const op = operatorType(scanner.peek());
- if (op) {
- return {
- type: 'Operator',
- operator: op,
- start: scanner.pos++,
- end: scanner.pos
- };
- }
-}
-/**
- * Eats number value from given stream
- * @return Returns `true` if number was consumed
- */
-function consumeNumber(stream) {
- const start = stream.pos;
- stream.eat(Chars$2.Dash);
- const afterNegative = stream.pos;
- const hasDecimal = stream.eatWhile(isNumber$1);
- const prevPos = stream.pos;
- if (stream.eat(Chars$2.Dot)) {
- // It’s perfectly valid to have numbers like `1.`, which enforces
- // value to float unit type
- const hasFloat = stream.eatWhile(isNumber$1);
- if (!hasDecimal && !hasFloat) {
- // Lone dot
- stream.pos = prevPos;
- }
- }
- // Edge case: consumed dash only: not a number, bail-out
- if (stream.pos === afterNegative) {
- stream.pos = start;
- }
- return stream.pos !== start;
-}
-function isIdentPrefix(code) {
- return code === Chars$2.At || code === Chars$2.Dollar;
-}
-/**
- * If given character is an operator, returns it’s type
- */
-function operatorType(ch) {
- return (ch === Chars$2.Sibling && OperatorType.Sibling)
- || (ch === Chars$2.Excl && OperatorType.Important)
- || (ch === Chars$2.Comma && OperatorType.ArgumentDelimiter)
- || (ch === Chars$2.Colon && OperatorType.PropertyDelimiter)
- || (ch === Chars$2.Dash && OperatorType.ValueDelimiter)
- || void 0;
-}
-/**
- * Check if given code is a hex value (/0-9a-f/)
- */
-function isHex(code) {
- return isNumber$1(code) || isAlpha$1(code, 65, 70); // A-F
-}
-function isKeyword(code) {
- return isAlphaNumericWord(code) || code === Chars$2.Dash;
-}
-function isBracket$1(code) {
- return code === Chars$2.RoundBracketOpen || code === Chars$2.RoundBracketClose;
-}
-function isLiteral$1(code) {
- return isAlphaWord(code) || code === Chars$2.Percent || code === Chars$2.Slash;
-}
-/**
- * Parses given color value from abbreviation into RGBA format
- */
-function parseColor(value, alpha) {
- let r = '0';
- let g = '0';
- let b = '0';
- let a = Number(alpha != null && alpha !== '' ? alpha : 1);
- if (value === 't') {
- a = 0;
- }
- else {
- switch (value.length) {
- case 0:
- break;
- case 1:
- r = g = b = value + value;
- break;
- case 2:
- r = g = b = value;
- break;
- case 3:
- r = value[0] + value[0];
- g = value[1] + value[1];
- b = value[2] + value[2];
- break;
- default:
- value += value;
- r = value.slice(0, 2);
- g = value.slice(2, 4);
- b = value.slice(4, 6);
- }
- }
- return {
- r: parseInt(r, 16),
- g: parseInt(g, 16),
- b: parseInt(b, 16),
- a
- };
-}
-/**
- * Check if scanner reader must consume dash after given token.
- * Used in cases where user must explicitly separate numeric values
- */
-function shouldConsumeDashAfter(token) {
- return token.type === 'ColorValue' || (token.type === 'NumberValue' && !token.unit);
-}
-/**
- * Merges last adjacent tokens into a single literal.
- * This function is used to overcome edge case when function name was parsed
- * as a list of separate tokens. For example, a `scale3d()` value will be
- * parsed as literal and number tokens (`scale` and `3d`) which is a perfectly
- * valid abbreviation but undesired result. This function will detect last adjacent
- * literal and number values and combine them into single literal
- */
-function mergeTokens(scanner, tokens) {
- let start = 0;
- let end = 0;
- while (tokens.length) {
- const token = last(tokens);
- if (token.type === 'Literal' || token.type === 'NumberValue') {
- start = token.start;
- if (!end) {
- end = token.end;
- }
- tokens.pop();
- }
- else {
- break;
- }
- }
- if (start !== end) {
- tokens.push(createLiteral(scanner, start, end));
- }
-}
-function last(arr) {
- return arr[arr.length - 1];
-}
-
-function tokenScanner(tokens) {
- return {
- tokens,
- start: 0,
- pos: 0,
- size: tokens.length
- };
-}
-function peek$2(scanner) {
- return scanner.tokens[scanner.pos];
-}
-function readable(scanner) {
- return scanner.pos < scanner.size;
-}
-function consume$1(scanner, test) {
- if (test(peek$2(scanner))) {
- scanner.pos++;
- return true;
- }
- return false;
-}
-function error(scanner, message, token = peek$2(scanner)) {
- if (token && token.start != null) {
- message += ` at ${token.start}`;
- }
- const err = new Error(message);
- err['pos'] = token && token.start;
- return err;
-}
-
-function parser(tokens, options = {}) {
- const scanner = tokenScanner(tokens);
- const result = [];
- let property;
- while (readable(scanner)) {
- if (property = consumeProperty(scanner, options)) {
- result.push(property);
- }
- else if (!consume$1(scanner, isSiblingOperator)) {
- throw error(scanner, 'Unexpected token');
- }
- }
- return result;
-}
-/**
- * Consumes single CSS property
- */
-function consumeProperty(scanner, options) {
- let name;
- let important = false;
- let valueFragment;
- const value = [];
- const token = peek$2(scanner);
- const valueMode = !!options.value;
- if (!valueMode && isLiteral(token) && !isFunctionStart(scanner)) {
- scanner.pos++;
- name = token.value;
- // Consume any following value delimiter after property name
- consume$1(scanner, isValueDelimiter);
- }
- // Skip whitespace right after property name, if any
- if (valueMode) {
- consume$1(scanner, isWhiteSpace$1);
- }
- while (readable(scanner)) {
- if (consume$1(scanner, isImportant)) {
- important = true;
- }
- else if (valueFragment = consumeValue(scanner, valueMode)) {
- value.push(valueFragment);
- }
- else if (!consume$1(scanner, isFragmentDelimiter)) {
- break;
- }
- }
- if (name || value.length || important) {
- return { name, value, important };
- }
-}
-/**
- * Consumes single value fragment, e.g. all value tokens before comma
- */
-function consumeValue(scanner, inArgument) {
- const result = [];
- let token;
- let args;
- while (readable(scanner)) {
- token = peek$2(scanner);
- if (isValue(token)) {
- scanner.pos++;
- if (isLiteral(token) && (args = consumeArguments(scanner))) {
- result.push({
- type: 'FunctionCall',
- name: token.value,
- arguments: args
- });
- }
- else {
- result.push(token);
- }
- }
- else if (isValueDelimiter(token) || (inArgument && isWhiteSpace$1(token))) {
- scanner.pos++;
- }
- else {
- break;
- }
- }
- return result.length
- ? { type: 'CSSValue', value: result }
- : void 0;
-}
-function consumeArguments(scanner) {
- const start = scanner.pos;
- if (consume$1(scanner, isOpenBracket$1)) {
- const args = [];
- let value;
- while (readable(scanner) && !consume$1(scanner, isCloseBracket$1)) {
- if (value = consumeValue(scanner, true)) {
- args.push(value);
- }
- else if (!consume$1(scanner, isWhiteSpace$1) && !consume$1(scanner, isArgumentDelimiter)) {
- throw error(scanner, 'Unexpected token');
- }
- }
- scanner.start = start;
- return args;
- }
-}
-function isLiteral(token) {
- return token && token.type === 'Literal';
-}
-function isBracket(token, open) {
- return token && token.type === 'Bracket' && (open == null || token.open === open);
-}
-function isOpenBracket$1(token) {
- return isBracket(token, true);
-}
-function isCloseBracket$1(token) {
- return isBracket(token, false);
-}
-function isWhiteSpace$1(token) {
- return token && token.type === 'WhiteSpace';
-}
-function isOperator(token, operator) {
- return token && token.type === 'Operator' && (!operator || token.operator === operator);
-}
-function isSiblingOperator(token) {
- return isOperator(token, OperatorType.Sibling);
-}
-function isArgumentDelimiter(token) {
- return isOperator(token, OperatorType.ArgumentDelimiter);
-}
-function isFragmentDelimiter(token) {
- return isArgumentDelimiter(token);
-}
-function isImportant(token) {
- return isOperator(token, OperatorType.Important);
-}
-function isValue(token) {
- return token.type === 'StringValue'
- || token.type === 'ColorValue'
- || token.type === 'NumberValue'
- || token.type === 'Literal'
- || token.type === 'Field'
- || token.type === 'CustomProperty';
-}
-function isValueDelimiter(token) {
- return isOperator(token, OperatorType.PropertyDelimiter)
- || isOperator(token, OperatorType.ValueDelimiter);
-}
-function isFunctionStart(scanner) {
- const t1 = scanner.tokens[scanner.pos];
- const t2 = scanner.tokens[scanner.pos + 1];
- return t1 && t2 && isLiteral(t1) && t2.type === 'Bracket';
-}
-
-/**
- * Parses given abbreviation into property set
- */
-function parse$2(abbr, options) {
- try {
- const tokens = typeof abbr === 'string' ? tokenize(abbr, options && options.value) : abbr;
- return parser(tokens, options);
- }
- catch (err) {
- if (err instanceof ScannerError && typeof abbr === 'string') {
- err.message += `\n${abbr}\n${'-'.repeat(err.pos)}^`;
- }
- throw err;
- }
-}
-
-/**
- * Merges attributes in current node: de-duplicates attributes with the same name
- * and merges class names
- */
-function mergeAttributes(node, config) {
- if (!node.attributes) {
- return;
- }
- const attributes = [];
- const lookup = {};
- for (const attr of node.attributes) {
- if (attr.name) {
- const attrName = attr.name;
- if (attrName in lookup) {
- const prev = lookup[attrName];
- if (attrName === 'class') {
- prev.value = mergeValue(prev.value, attr.value, ' ');
- }
- else {
- mergeDeclarations(prev, attr, config);
- }
- }
- else {
- // Create new attribute instance so we can safely modify it later
- attributes.push(lookup[attrName] = Object.assign({}, attr));
- }
- }
- else {
- attributes.push(attr);
- }
- }
- node.attributes = attributes;
-}
-/**
- * Merges two token lists into single list. Adjacent strings are merged together
- */
-function mergeValue(prev, next, glue) {
- if (prev && next) {
- if (prev.length && glue) {
- append(prev, glue);
- }
- for (const t of next) {
- append(prev, t);
- }
- return prev;
- }
- const result = prev || next;
- return result && result.slice();
-}
-/**
- * Merges data from `src` attribute into `dest` and returns it
- */
-function mergeDeclarations(dest, src, config) {
- dest.name = src.name;
- if (!config.options['output.reverseAttributes']) {
- dest.value = src.value;
- }
- // Keep high-priority properties
- if (!dest.implied) {
- dest.implied = src.implied;
- }
- if (!dest.boolean) {
- dest.boolean = src.boolean;
- }
- if (dest.valueType !== 'expression') {
- dest.valueType = src.valueType;
- }
- return dest;
-}
-function append(tokens, value) {
- const lastIx = tokens.length - 1;
- if (typeof tokens[lastIx] === 'string' && typeof value === 'string') {
- tokens[lastIx] += value;
- }
- else {
- tokens.push(value);
- }
-}
-
-/**
- * Walks over each child node of given markup abbreviation AST node (not including
- * given one) and invokes `fn` on each node.
- * The `fn` callback accepts context node, list of ancestor nodes and optional
- * state object
- */
-function walk$1(node, fn, state) {
- const ancestors = [node];
- const callback = (ctx) => {
- fn(ctx, ancestors, state);
- ancestors.push(ctx);
- ctx.children.forEach(callback);
- ancestors.pop();
- };
- node.children.forEach(callback);
-}
-/**
- * Finds node which is the deepest for in current node or node itself.
- */
-function findDeepest(node) {
- let parent;
- while (node.children.length) {
- parent = node;
- node = node.children[node.children.length - 1];
- }
- return { parent, node };
-}
-function isNode(node) {
- return node.type === 'AbbreviationNode';
-}
-
-/**
- * Finds matching snippet from `registry` and resolves it into a parsed abbreviation.
- * Resolved node is then updated or replaced with matched abbreviation tree.
- *
- * A HTML registry basically contains aliases to another Emmet abbreviations,
- * e.g. a predefined set of name, attributes and so on, possibly a complex
- * abbreviation with multiple elements. So we have to get snippet, parse it
- * and recursively resolve it.
- */
-function resolveSnippets(abbr, config) {
- const stack = [];
- const reversed = config.options['output.reverseAttributes'];
- const resolve = (child) => {
- const snippet = child.name && config.snippets[child.name];
- // A snippet in stack means circular reference.
- // It can be either a user error or a perfectly valid snippet like
- // "img": "img[src alt]/", e.g. an element with predefined shape.
- // In any case, simply stop parsing and keep element as is
- if (!snippet || stack.includes(snippet)) {
- return null;
- }
- const snippetAbbr = parseAbbreviation(snippet, config);
- stack.push(snippet);
- walkResolve(snippetAbbr, resolve);
- stack.pop();
- // Add attributes from current node into every top-level node of parsed abbreviation
- for (const topNode of snippetAbbr.children) {
- if (child.attributes) {
- const from = topNode.attributes || [];
- const to = child.attributes || [];
- topNode.attributes = reversed ? to.concat(from) : from.concat(to);
- }
- mergeNodes(child, topNode);
- }
- return snippetAbbr;
- };
- walkResolve(abbr, resolve);
- return abbr;
-}
-function walkResolve(node, resolve, config) {
- let children = [];
- for (const child of node.children) {
- const resolved = resolve(child);
- if (resolved) {
- children = children.concat(resolved.children);
- const deepest = findDeepest(resolved);
- if (isNode(deepest.node)) {
- deepest.node.children = deepest.node.children.concat(walkResolve(child, resolve));
- }
- }
- else {
- children.push(child);
- child.children = walkResolve(child, resolve);
- }
- }
- return node.children = children;
-}
-/**
- * Adds data from first node into second node
- */
-function mergeNodes(from, to) {
- if (from.selfClosing) {
- to.selfClosing = true;
- }
- if (from.value != null) {
- to.value = from.value;
- }
- if (from.repeat) {
- to.repeat = from.repeat;
- }
-}
-
-const expressionStart = '{';
-const expressionEnd = '}';
-function createOutputStream(options, level = 0) {
- return {
- options,
- value: '',
- level,
- offset: 0,
- line: 0,
- column: 0
- };
-}
-/**
- * Pushes plain string into output stream without newline processing
- */
-function push(stream, text) {
- const processText = stream.options['output.text'];
- _push(stream, processText(text, stream.offset, stream.line, stream.column));
-}
-/**
- * Pushes given string with possible newline formatting into output
- */
-function pushString(stream, value) {
- // If given value contains newlines, we should push content line-by-line and
- // use `pushNewline()` to maintain proper line/column state
- const lines = splitByLines$1(value);
- for (let i = 0, il = lines.length - 1; i <= il; i++) {
- push(stream, lines[i]);
- if (i !== il) {
- pushNewline(stream, true);
- }
- }
-}
-/**
- * Pushes new line into given output stream
- */
-function pushNewline(stream, indent) {
- const baseIndent = stream.options['output.baseIndent'];
- const newline = stream.options['output.newline'];
- push(stream, newline + baseIndent);
- stream.line++;
- stream.column = baseIndent.length;
- if (indent) {
- pushIndent(stream, indent === true ? stream.level : indent);
- }
-}
-/**
- * Adds indentation of `size` to current output stream
- */
-function pushIndent(stream, size = stream.level) {
- const indent = stream.options['output.indent'];
- push(stream, indent.repeat(Math.max(size, 0)));
-}
-/**
- * Pushes field/tabstop into output stream
- */
-function pushField(stream, index, placeholder) {
- const field = stream.options['output.field'];
- // NB: use `_push` instead of `push` to skip text processing
- _push(stream, field(index, placeholder, stream.offset, stream.line, stream.column));
-}
-/**
- * Returns given tag name formatted according to given config
- */
-function tagName(name, config) {
- return strCase(name, config.options['output.tagCase']);
-}
-/**
- * Returns given attribute name formatted according to given config
- */
-function attrName(name, config) {
- return strCase(name, config.options['output.attributeCase']);
-}
-/**
- * Returns character for quoting value of given attribute
- */
-function attrQuote(attr, config, isOpen) {
- if (attr.valueType === 'expression') {
- return isOpen ? expressionStart : expressionEnd;
- }
- return config.options['output.attributeQuotes'] === 'single' ? '\'' : '"';
-}
-/**
- * Check if given attribute is boolean
- */
-function isBooleanAttribute(attr, config) {
- return attr.boolean
- || config.options['output.booleanAttributes'].includes((attr.name || '').toLowerCase());
-}
-/**
- * Returns a token for self-closing tag, depending on current options
- */
-function selfClose(config) {
- switch (config.options['output.selfClosingStyle']) {
- case 'xhtml': return ' /';
- case 'xml': return '/';
- default: return '';
- }
-}
-/**
- * Check if given tag name belongs to inline-level element
- * @param node Parsed node or tag name
- */
-function isInline(node, config) {
- if (typeof node === 'string') {
- return config.options.inlineElements.includes(node.toLowerCase());
- }
- // inline node is a node either with inline-level name or text-only node
- return node.name ? isInline(node.name, config) : Boolean(node.value && !node.attributes);
-}
-/**
- * Splits given text by lines
- */
-function splitByLines$1(text) {
- return text.split(/\r\n|\r|\n/g);
-}
-/**
- * Pushes raw string into output stream without any processing
- */
-function _push(stream, text) {
- stream.value += text;
- stream.offset += text.length;
- stream.column += text.length;
-}
-function strCase(str, type) {
- if (type) {
- return type === 'upper' ? str.toUpperCase() : str.toLowerCase();
- }
- return str;
-}
-
-const elementMap = {
- p: 'span',
- ul: 'li',
- ol: 'li',
- table: 'tr',
- tr: 'td',
- tbody: 'tr',
- thead: 'tr',
- tfoot: 'tr',
- colgroup: 'col',
- select: 'option',
- optgroup: 'option',
- audio: 'source',
- video: 'source',
- object: 'param',
- map: 'area'
-};
-function implicitTag(node, ancestors, config) {
- if (!node.name && node.attributes) {
- resolveImplicitTag(node, ancestors, config);
- }
-}
-function resolveImplicitTag(node, ancestors, config) {
- const parent = getParentElement(ancestors);
- const contextName = config.context ? config.context.name : '';
- const parentName = lowercase(parent ? parent.name : contextName);
- node.name = elementMap[parentName]
- || (isInline(parentName, config) ? 'span' : 'div');
-}
-function lowercase(str) {
- return (str || '').toLowerCase();
-}
-/**
- * Returns closest element node from given ancestors list
- */
-function getParentElement(ancestors) {
- for (let i = ancestors.length - 1; i >= 0; i--) {
- const elem = ancestors[i];
- if (isNode(elem)) {
- return elem;
- }
- }
-}
-
-var latin = {
- "common": ["lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipisicing", "elit"],
- "words": ["exercitationem", "perferendis", "perspiciatis", "laborum", "eveniet",
- "sunt", "iure", "nam", "nobis", "eum", "cum", "officiis", "excepturi",
- "odio", "consectetur", "quasi", "aut", "quisquam", "vel", "eligendi",
- "itaque", "non", "odit", "tempore", "quaerat", "dignissimos",
- "facilis", "neque", "nihil", "expedita", "vitae", "vero", "ipsum",
- "nisi", "animi", "cumque", "pariatur", "velit", "modi", "natus",
- "iusto", "eaque", "sequi", "illo", "sed", "ex", "et", "voluptatibus",
- "tempora", "veritatis", "ratione", "assumenda", "incidunt", "nostrum",
- "placeat", "aliquid", "fuga", "provident", "praesentium", "rem",
- "necessitatibus", "suscipit", "adipisci", "quidem", "possimus",
- "voluptas", "debitis", "sint", "accusantium", "unde", "sapiente",
- "voluptate", "qui", "aspernatur", "laudantium", "soluta", "amet",
- "quo", "aliquam", "saepe", "culpa", "libero", "ipsa", "dicta",
- "reiciendis", "nesciunt", "doloribus", "autem", "impedit", "minima",
- "maiores", "repudiandae", "ipsam", "obcaecati", "ullam", "enim",
- "totam", "delectus", "ducimus", "quis", "voluptates", "dolores",
- "molestiae", "harum", "dolorem", "quia", "voluptatem", "molestias",
- "magni", "distinctio", "omnis", "illum", "dolorum", "voluptatum", "ea",
- "quas", "quam", "corporis", "quae", "blanditiis", "atque", "deserunt",
- "laboriosam", "earum", "consequuntur", "hic", "cupiditate",
- "quibusdam", "accusamus", "ut", "rerum", "error", "minus", "eius",
- "ab", "ad", "nemo", "fugit", "officia", "at", "in", "id", "quos",
- "reprehenderit", "numquam", "iste", "fugiat", "sit", "inventore",
- "beatae", "repellendus", "magnam", "recusandae", "quod", "explicabo",
- "doloremque", "aperiam", "consequatur", "asperiores", "commodi",
- "optio", "dolor", "labore", "temporibus", "repellat", "veniam",
- "architecto", "est", "esse", "mollitia", "nulla", "a", "similique",
- "eos", "alias", "dolore", "tenetur", "deleniti", "porro", "facere",
- "maxime", "corrupti"]
-};
-
-var ru = {
- "common": ["далеко-далеко", "за", "словесными", "горами", "в стране", "гласных", "и согласных", "живут", "рыбные", "тексты"],
- "words": ["вдали", "от всех", "они", "буквенных", "домах", "на берегу", "семантика",
- "большого", "языкового", "океана", "маленький", "ручеек", "даль",
- "журчит", "по всей", "обеспечивает", "ее","всеми", "необходимыми",
- "правилами", "эта", "парадигматическая", "страна", "которой", "жаренные",
- "предложения", "залетают", "прямо", "рот", "даже", "всемогущая",
- "пунктуация", "не", "имеет", "власти", "над", "рыбными", "текстами",
- "ведущими", "безорфографичный", "образ", "жизни", "однажды", "одна",
- "маленькая", "строчка","рыбного", "текста", "имени", "lorem", "ipsum",
- "решила", "выйти", "большой", "мир", "грамматики", "великий", "оксмокс",
- "предупреждал", "о", "злых", "запятых", "диких", "знаках", "вопроса",
- "коварных", "точках", "запятой", "но", "текст", "дал", "сбить",
- "себя", "толку", "он", "собрал", "семь", "своих", "заглавных", "букв",
- "подпоясал", "инициал", "за", "пояс", "пустился", "дорогу",
- "взобравшись", "первую", "вершину", "курсивных", "гор", "бросил",
- "последний", "взгляд", "назад", "силуэт", "своего", "родного", "города",
- "буквоград", "заголовок", "деревни", "алфавит", "подзаголовок", "своего",
- "переулка", "грустный", "реторический", "вопрос", "скатился", "его",
- "щеке", "продолжил", "свой", "путь", "дороге", "встретил", "рукопись",
- "она", "предупредила", "моей", "все", "переписывается", "несколько",
- "раз", "единственное", "что", "меня", "осталось", "это", "приставка",
- "возвращайся", "ты", "лучше", "свою", "безопасную", "страну", "послушавшись",
- "рукописи", "наш", "продолжил", "свой", "путь", "вскоре", "ему",
- "повстречался", "коварный", "составитель", "рекламных", "текстов",
- "напоивший", "языком", "речью", "заманивший", "свое", "агентство",
- "которое", "использовало", "снова", "снова", "своих", "проектах",
- "если", "переписали", "то", "живет", "там", "до", "сих", "пор"]
-};
-
-var sp = {
- "common": ["mujer", "uno", "dolor", "más", "de", "poder", "mismo", "si"],
- "words": ["ejercicio", "preferencia", "perspicacia", "laboral", "paño",
- "suntuoso", "molde", "namibia", "planeador", "mirar", "demás", "oficinista", "excepción",
- "odio", "consecuencia", "casi", "auto", "chicharra", "velo", "elixir",
- "ataque", "no", "odio", "temporal", "cuórum", "dignísimo",
- "facilismo", "letra", "nihilista", "expedición", "alma", "alveolar", "aparte",
- "león", "animal", "como", "paria", "belleza", "modo", "natividad",
- "justo", "ataque", "séquito", "pillo", "sed", "ex", "y", "voluminoso",
- "temporalidad", "verdades", "racional", "asunción", "incidente", "marejada",
- "placenta", "amanecer", "fuga", "previsor", "presentación", "lejos",
- "necesariamente", "sospechoso", "adiposidad", "quindío", "pócima",
- "voluble", "débito", "sintió", "accesorio", "falda", "sapiencia",
- "volutas", "queso", "permacultura", "laudo", "soluciones", "entero",
- "pan", "litro", "tonelada", "culpa", "libertario", "mosca", "dictado",
- "reincidente", "nascimiento", "dolor", "escolar", "impedimento", "mínima",
- "mayores", "repugnante", "dulce", "obcecado", "montaña", "enigma",
- "total", "deletéreo", "décima", "cábala", "fotografía", "dolores",
- "molesto", "olvido", "paciencia", "resiliencia", "voluntad", "molestias",
- "magnífico", "distinción", "ovni", "marejada", "cerro", "torre", "y",
- "abogada", "manantial", "corporal", "agua", "crepúsculo", "ataque", "desierto",
- "laboriosamente", "angustia", "afortunado", "alma", "encefalograma",
- "materialidad", "cosas", "o", "renuncia", "error", "menos", "conejo",
- "abadía", "analfabeto", "remo", "fugacidad", "oficio", "en", "almácigo", "vos", "pan",
- "represión", "números", "triste", "refugiado", "trote", "inventor",
- "corchea", "repelente", "magma", "recusado", "patrón", "explícito",
- "paloma", "síndrome", "inmune", "autoinmune", "comodidad",
- "ley", "vietnamita", "demonio", "tasmania", "repeler", "apéndice",
- "arquitecto", "columna", "yugo", "computador", "mula", "a", "propósito",
- "fantasía", "alias", "rayo", "tenedor", "deleznable", "ventana", "cara",
- "anemia", "corrupto"]
-};
-
-const vocabularies = { ru, sp, latin };
-const reLorem = /^lorem([a-z]*)(\d*)(-\d*)?$/i;
-function lorem(node, ancestors, config) {
- let m;
- if (node.name && (m = node.name.match(reLorem))) {
- const db = vocabularies[m[1]] || vocabularies.latin;
- const minWordCount = m[2] ? Math.max(1, Number(m[2])) : 30;
- const maxWordCount = m[3] ? Math.max(minWordCount, Number(m[3].slice(1))) : minWordCount;
- const wordCount = rand(minWordCount, maxWordCount);
- const repeat = node.repeat || findRepeater(ancestors);
- node.name = node.attributes = void 0;
- node.value = [paragraph(db, wordCount, !repeat || repeat.value === 0)];
- if (node.repeat && ancestors.length > 1) {
- resolveImplicitTag(node, ancestors, config);
- }
- }
-}
-/**
- * Returns random integer between from
and to
values
- */
-function rand(from, to) {
- return Math.floor(Math.random() * (to - from) + from);
-}
-function sample(arr, count) {
- const len = arr.length;
- const iterations = Math.min(len, count);
- const result = [];
- while (result.length < iterations) {
- const str = arr[rand(0, len)];
- if (!result.includes(str)) {
- result.push(str);
- }
- }
- return result;
-}
-function choice(val) {
- return val[rand(0, val.length - 1)];
-}
-function sentence(words, end) {
- if (words.length) {
- words = [capitalize(words[0])].concat(words.slice(1));
- }
- return words.join(' ') + (end || choice('?!...')); // more dots than question marks
-}
-function capitalize(word) {
- return word[0].toUpperCase() + word.slice(1);
-}
-/**
- * Insert commas at randomly selected words. This function modifies values
- * inside `words` array
- */
-function insertCommas(words) {
- if (words.length < 2) {
- return words;
- }
- words = words.slice();
- const len = words.length;
- const hasComma = /,$/;
- let totalCommas = 0;
- if (len > 3 && len <= 6) {
- totalCommas = rand(0, 1);
- }
- else if (len > 6 && len <= 12) {
- totalCommas = rand(0, 2);
- }
- else {
- totalCommas = rand(1, 4);
- }
- for (let i = 0, pos; i < totalCommas; i++) {
- pos = rand(0, len - 2);
- if (!hasComma.test(words[pos])) {
- words[pos] += ',';
- }
- }
- return words;
-}
-/**
- * Generate a paragraph of "Lorem ipsum" text
- * @param dict Words dictionary
- * @param wordCount Words count in paragraph
- * @param startWithCommon Should paragraph start with common "lorem ipsum" sentence.
- */
-function paragraph(dict, wordCount, startWithCommon) {
- const result = [];
- let totalWords = 0;
- let words;
- if (startWithCommon && dict.common) {
- words = dict.common.slice(0, wordCount);
- totalWords += words.length;
- result.push(sentence(insertCommas(words), '.'));
- }
- while (totalWords < wordCount) {
- words = sample(dict.words, Math.min(rand(2, 30), wordCount - totalWords));
- totalWords += words.length;
- result.push(sentence(insertCommas(words)));
- }
- return result.join(' ');
-}
-function findRepeater(ancestors) {
- for (let i = ancestors.length - 1; i >= 0; i--) {
- const element = ancestors[i];
- if (element.type === 'AbbreviationNode' && element.repeat) {
- return element.repeat;
- }
- }
-}
-
-/**
- * XSL transformer: removes `select` attributes from certain nodes that contain
- * children
- */
-function xsl(node) {
- if (matchesName(node.name) && node.attributes && (node.children.length || node.value)) {
- node.attributes = node.attributes.filter(isAllowed);
- }
-}
-function isAllowed(attr) {
- return attr.name !== 'select';
-}
-function matchesName(name) {
- return name === 'xsl:variable' || name === 'xsl:with-param';
-}
-
-const reElement = /^(-+)([a-z0-9]+[a-z0-9-]*)/i;
-const reModifier = /^(_+)([a-z0-9]+[a-z0-9-_]*)/i;
-const blockCandidates1 = (className) => /^[a-z]\-/i.test(className);
-const blockCandidates2 = (className) => /^[a-z]/i.test(className);
-function bem(node, ancestors, config) {
- expandClassNames(node);
- expandShortNotation(node, ancestors, config);
-}
-/**
- * Expands existing class names in BEM notation in given `node`.
- * For example, if node contains `b__el_mod` class name, this method ensures
- * that element contains `b__el` class as well
- */
-function expandClassNames(node) {
- const data = getBEMData(node);
- const classNames = [];
- for (const cl of data.classNames) {
- // remove all modifiers and element prefixes from class name to get a base element name
- const ix = cl.indexOf('_');
- if (ix > 0 && !cl.startsWith('-')) {
- classNames.push(cl.slice(0, ix));
- classNames.push(cl.slice(ix));
- }
- else {
- classNames.push(cl);
- }
- }
- if (classNames.length) {
- data.classNames = classNames.filter(uniqueClass);
- data.block = findBlockName(data.classNames);
- updateClass(node, data.classNames.join(' '));
- }
-}
-/**
- * Expands short BEM notation, e.g. `-element` and `_modifier`
- */
-function expandShortNotation(node, ancestors, config) {
- const data = getBEMData(node);
- const classNames = [];
- const { options } = config;
- const path = ancestors.slice(1).concat(node);
- for (let cl of data.classNames) {
- let prefix = '';
- let m;
- const originalClass = cl;
- // parse element definition (could be only one)
- if (m = cl.match(reElement)) {
- prefix = getBlockName(path, m[1].length, config.context) + options['bem.element'] + m[2];
- classNames.push(prefix);
- cl = cl.slice(m[0].length);
- }
- // parse modifiers definitions
- if (m = cl.match(reModifier)) {
- if (!prefix) {
- prefix = getBlockName(path, m[1].length);
- classNames.push(prefix);
- }
- classNames.push(`${prefix}${options['bem.modifier']}${m[2]}`);
- cl = cl.slice(m[0].length);
- }
- if (cl === originalClass) {
- // class name wasn’t modified: it’s not a BEM-specific class,
- // add it as-is into output
- classNames.push(originalClass);
- }
- }
- const arrClassNames = classNames.filter(uniqueClass);
- if (arrClassNames.length) {
- updateClass(node, arrClassNames.join(' '));
- }
-}
-/**
- * Returns BEM data from given abbreviation node
- */
-function getBEMData(node) {
- if (!node._bem) {
- let classValue = '';
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (attr.name === 'class' && attr.value) {
- classValue = stringifyValue(attr.value);
- break;
- }
- }
- }
- node._bem = parseBEM(classValue);
- }
- return node._bem;
-}
-function getBEMDataFromContext(context) {
- if (!context._bem) {
- context._bem = parseBEM(context.attributes && context.attributes.class || '');
- }
- return context._bem;
-}
-/**
- * Parses BEM data from given class name
- */
-function parseBEM(classValue) {
- const classNames = classValue ? classValue.split(/\s+/) : [];
- return {
- classNames,
- block: findBlockName(classNames)
- };
-}
-/**
- * Returns block name for given `node` by `prefix`, which tells the depth of
- * of parent node lookup
- */
-function getBlockName(ancestors, depth = 0, context) {
- const maxParentIx = 0;
- let parentIx = Math.max(ancestors.length - depth, maxParentIx);
- do {
- const parent = ancestors[parentIx];
- if (parent) {
- const data = getBEMData(parent);
- if (data.block) {
- return data.block;
- }
- }
- } while (maxParentIx < parentIx--);
- if (context) {
- const data = getBEMDataFromContext(context);
- if (data.block) {
- return data.block;
- }
- }
- return '';
-}
-function findBlockName(classNames) {
- return find(classNames, blockCandidates1)
- || find(classNames, blockCandidates2)
- || void 0;
-}
-/**
- * Finds class name from given list which may be used as block name
- */
-function find(classNames, filter) {
- for (const cl of classNames) {
- if (reElement.test(cl) || reModifier.test(cl)) {
- break;
- }
- if (filter(cl)) {
- return cl;
- }
- }
-}
-function updateClass(node, value) {
- for (const attr of node.attributes) {
- if (attr.name === 'class') {
- attr.value = [value];
- break;
- }
- }
-}
-function stringifyValue(value) {
- let result = '';
- for (const t of value) {
- result += typeof t === 'string' ? t : t.name;
- }
- return result;
-}
-function uniqueClass(item, ix, arr) {
- return !!item && arr.indexOf(item) === ix;
-}
-
-function walk(abbr, visitor, state) {
- const callback = (ctx, index, items) => {
- const { parent, current } = state;
- state.parent = current;
- state.current = ctx;
- visitor(ctx, index, items, state, next);
- state.current = current;
- state.parent = parent;
- };
- const next = (node, index, items) => {
- state.ancestors.push(state.current);
- callback(node, index, items);
- state.ancestors.pop();
- };
- abbr.children.forEach(callback);
-}
-function createWalkState(config) {
- return {
- // @ts-ignore: Will set value in iterator
- current: null,
- parent: void 0,
- ancestors: [],
- config,
- field: 1,
- out: createOutputStream(config.options)
- };
-}
-
-const caret = [{ type: 'Field', index: 0, name: '' }];
-/**
- * Check if given node is a snippet: a node without name and attributes
- */
-function isSnippet(node) {
- return node ? !node.name && !node.attributes : false;
-}
-/**
- * Check if given node is inline-level element, e.g. element with explicitly
- * defined node name
- */
-function isInlineElement(node, config) {
- return node ? isInline(node, config) : false;
-}
-/**
- * Check if given value token is a field
- */
-function isField(token) {
- return typeof token === 'object' && token.type === 'Field';
-}
-function pushTokens(tokens, state) {
- const { out } = state;
- let largestIndex = -1;
- for (const t of tokens) {
- if (typeof t === 'string') {
- pushString(out, t);
- }
- else {
- pushField(out, state.field + t.index, t.name);
- if (t.index > largestIndex) {
- largestIndex = t.index;
- }
- }
- }
- if (largestIndex !== -1) {
- state.field += largestIndex + 1;
- }
-}
-/**
- * Splits given value token by lines: returns array where each entry is a token list
- * for a single line
- */
-function splitByLines(tokens) {
- const result = [];
- let line = [];
- for (const t of tokens) {
- if (typeof t === 'string') {
- const lines = t.split(/\r\n?|\n/g);
- line.push(lines.shift() || '');
- while (lines.length) {
- result.push(line);
- line = [lines.shift() || ''];
- }
- }
- else {
- line.push(t);
- }
- }
- line.length && result.push(line);
- return result;
-}
-/**
- * Check if given attribute should be outputted
- */
-function shouldOutputAttribute(attr) {
- // In case if attribute is implied, check if it has a defined value:
- // either non-empty value or quoted empty value
- return !attr.implied || attr.valueType !== 'raw' || (!!attr.value && attr.value.length > 0);
-}
-
-var TemplateChars;
-(function (TemplateChars) {
- /** `[` character */
- TemplateChars[TemplateChars["Start"] = 91] = "Start";
- /** `]` character */
- TemplateChars[TemplateChars["End"] = 93] = "End";
- /* `_` character */
- TemplateChars[TemplateChars["Underscore"] = 95] = "Underscore";
- /* `-` character */
- TemplateChars[TemplateChars["Dash"] = 45] = "Dash";
-})(TemplateChars || (TemplateChars = {}));
-/**
- * Splits given string into template tokens.
- * Template is a string which contains placeholders which are uppercase names
- * between `[` and `]`, for example: `[PLACEHOLDER]`.
- * Unlike other templates, a placeholder may contain extra characters before and
- * after name: `[%PLACEHOLDER.]`. If data for `PLACEHOLDER` is defined, it will
- * be outputted with with these extra character, otherwise will be completely omitted.
- */
-function template(text) {
- const tokens = [];
- const scanner = { pos: 0, text };
- let placeholder;
- let offset = scanner.pos;
- let pos = scanner.pos;
- while (scanner.pos < scanner.text.length) {
- pos = scanner.pos;
- if (placeholder = consumePlaceholder(scanner)) {
- if (offset !== scanner.pos) {
- tokens.push(text.slice(offset, pos));
- }
- tokens.push(placeholder);
- offset = scanner.pos;
- }
- else {
- scanner.pos++;
- }
- }
- if (offset !== scanner.pos) {
- tokens.push(text.slice(offset));
- }
- return tokens;
-}
-/**
- * Consumes placeholder like `[#ID]` from given scanner
- */
-function consumePlaceholder(scanner) {
- if (peek$1(scanner) === TemplateChars.Start) {
- const start = ++scanner.pos;
- let namePos = start;
- let afterPos = start;
- let stack = 1;
- while (scanner.pos < scanner.text.length) {
- const code = peek$1(scanner);
- if (isTokenStart(code)) {
- namePos = scanner.pos;
- while (isToken(peek$1(scanner))) {
- scanner.pos++;
- }
- afterPos = scanner.pos;
- }
- else {
- if (code === TemplateChars.Start) {
- stack++;
- }
- else if (code === TemplateChars.End) {
- if (--stack === 0) {
- return {
- before: scanner.text.slice(start, namePos),
- after: scanner.text.slice(afterPos, scanner.pos++),
- name: scanner.text.slice(namePos, afterPos)
- };
- }
- }
- scanner.pos++;
- }
- }
- }
-}
-function peek$1(scanner, pos = scanner.pos) {
- return scanner.text.charCodeAt(pos);
-}
-function isTokenStart(code) {
- return code >= 65 && code <= 90; // A-Z
-}
-function isToken(code) {
- return isTokenStart(code)
- || (code > 47 && code < 58) /* 0-9 */
- || code === TemplateChars.Underscore
- || code === TemplateChars.Dash;
-}
-
-function createCommentState(config) {
- const { options } = config;
- return {
- enabled: options['comment.enabled'],
- trigger: options['comment.trigger'],
- before: options['comment.before'] ? template(options['comment.before']) : void 0,
- after: options['comment.after'] ? template(options['comment.after']) : void 0
- };
-}
-/**
- * Adds comment prefix for given node, if required
- */
-function commentNodeBefore(node, state) {
- if (shouldComment(node, state) && state.comment.before) {
- output(node, state.comment.before, state);
- }
-}
-/**
- * Adds comment suffix for given node, if required
- */
-function commentNodeAfter(node, state) {
- if (shouldComment(node, state) && state.comment.after) {
- output(node, state.comment.after, state);
- }
-}
-/**
- * Check if given node should be commented
- */
-function shouldComment(node, state) {
- const { comment } = state;
- if (!comment.enabled || !comment.trigger || !node.name || !node.attributes) {
- return false;
- }
- for (const attr of node.attributes) {
- if (attr.name && comment.trigger.includes(attr.name)) {
- return true;
- }
- }
- return false;
-}
-/**
- * Pushes given template tokens into output stream
- */
-function output(node, tokens, state) {
- const attrs = {};
- const { out } = state;
- // Collect attributes payload
- for (const attr of node.attributes) {
- if (attr.name && attr.value) {
- attrs[attr.name.toUpperCase()] = attr.value;
- }
- }
- // Output parsed tokens
- for (const token of tokens) {
- if (typeof token === 'string') {
- pushString(out, token);
- }
- else if (attrs[token.name]) {
- pushString(out, token.before);
- pushTokens(attrs[token.name], state);
- pushString(out, token.after);
- }
- }
-}
-
-const htmlTagRegex = /^<([\w\-:]+)[\s>]/;
-const reservedKeywords = new Set([
- 'for', 'while', 'of', 'async', 'await', 'const', 'let', 'var', 'continue',
- 'break', 'debugger', 'do', 'export', 'import', 'in', 'instanceof', 'new', 'return',
- 'switch', 'this', 'throw', 'try', 'catch', 'typeof', 'void', 'with', 'yield'
-]);
-function html(abbr, config) {
- const state = createWalkState(config);
- state.comment = createCommentState(config);
- walk(abbr, element$1, state);
- return state.out.value;
-}
-/**
- * Outputs `node` content to output stream of `state`
- * @param node Context node
- * @param index Index of `node` in `items`
- * @param items List of `node`’s siblings
- * @param state Current walk state
- */
-function element$1(node, index, items, state, next) {
- const { out, config } = state;
- const format = shouldFormat$1(node, index, items, state);
- // Pick offset level for current node
- const level = getIndent(state);
- out.level += level;
- format && pushNewline(out, true);
- if (node.name) {
- const name = tagName(node.name, config);
- commentNodeBefore(node, state);
- pushString(out, `<${name}`);
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (shouldOutputAttribute(attr)) {
- pushAttribute(attr, state);
- }
- }
- }
- if (node.selfClosing && !node.children.length && !node.value) {
- pushString(out, `${selfClose(config)}>`);
- }
- else {
- pushString(out, '>');
- if (!pushSnippet(node, state, next)) {
- if (node.value) {
- const innerFormat = node.value.some(hasNewline) || startsWithBlockTag(node.value, config);
- innerFormat && pushNewline(state.out, ++out.level);
- pushTokens(node.value, state);
- innerFormat && pushNewline(state.out, --out.level);
- }
- node.children.forEach(next);
- if (!node.value && !node.children.length) {
- const innerFormat = config.options['output.formatLeafNode']
- || config.options['output.formatForce'].includes(node.name);
- innerFormat && pushNewline(state.out, ++out.level);
- pushTokens(caret, state);
- innerFormat && pushNewline(state.out, --out.level);
- }
- }
- pushString(out, `${name}>`);
- commentNodeAfter(node, state);
- }
- }
- else if (!pushSnippet(node, state, next) && node.value) {
- // A text-only node (snippet)
- pushTokens(node.value, state);
- node.children.forEach(next);
- }
- if (format && index === items.length - 1 && state.parent) {
- const offset = isSnippet(state.parent) ? 0 : 1;
- pushNewline(out, out.level - offset);
- }
- out.level -= level;
-}
-/**
- * Outputs given attribute’s content into output stream
- */
-function pushAttribute(attr, state) {
- const { out, config } = state;
- if (attr.name) {
- const attributes = config.options['markup.attributes'];
- const valuePrefix = config.options['markup.valuePrefix'];
- let { name, value } = attr;
- let lQuote = attrQuote(attr, config, true);
- let rQuote = attrQuote(attr, config);
- if (attributes) {
- name = getMultiValue(name, attributes, attr.multiple) || name;
- }
- name = attrName(name, config);
- if (config.options['jsx.enabled'] && attr.multiple) {
- lQuote = expressionStart;
- rQuote = expressionEnd;
- }
- const prefix = valuePrefix
- ? getMultiValue(attr.name, valuePrefix, attr.multiple)
- : null;
- if (prefix && (value === null || value === void 0 ? void 0 : value.length) === 1 && typeof value[0] === 'string') {
- // Add given prefix in object notation
- const val = value[0];
- value = [isPropKey(val) ? `${prefix}.${val}` : `${prefix}['${val}']`];
- if (config.options['jsx.enabled']) {
- lQuote = expressionStart;
- rQuote = expressionEnd;
- }
- }
- if (isBooleanAttribute(attr, config) && !value) {
- // If attribute value is omitted and it’s a boolean value, check for
- // `compactBoolean` option: if it’s disabled, set value to attribute name
- // (XML style)
- if (!config.options['output.compactBoolean']) {
- value = [name];
- }
- }
- else if (!value) {
- value = caret;
- }
- pushString(out, ' ' + name);
- if (value) {
- pushString(out, '=' + lQuote);
- pushTokens(value, state);
- pushString(out, rQuote);
- }
- else if (config.options['output.selfClosingStyle'] !== 'html') {
- pushString(out, '=' + lQuote + rQuote);
- }
- }
-}
-function pushSnippet(node, state, next) {
- if (node.value && node.children.length) {
- // We have a value and child nodes. In case if value contains fields,
- // we should output children as a content of first field
- const fieldIx = node.value.findIndex(isField);
- if (fieldIx !== -1) {
- pushTokens(node.value.slice(0, fieldIx), state);
- const line = state.out.line;
- let pos = fieldIx + 1;
- node.children.forEach(next);
- // If there was a line change, trim leading whitespace for better result
- if (state.out.line !== line && typeof node.value[pos] === 'string') {
- pushString(state.out, node.value[pos++].trimLeft());
- }
- pushTokens(node.value.slice(pos), state);
- return true;
- }
- }
- return false;
-}
-/**
- * Check if given node should be formatted in its parent context
- */
-function shouldFormat$1(node, index, items, state) {
- const { config, parent } = state;
- if (!config.options['output.format']) {
- return false;
- }
- if (index === 0 && !parent) {
- // Do not format very first node
- return false;
- }
- // Do not format single child of snippet
- if (parent && isSnippet(parent) && items.length === 1) {
- return false;
- }
- /**
- * Adjacent text-only/snippet nodes
- */
- if (isSnippet(node)) {
- // Adjacent text-only/snippet nodes
- const format = isSnippet(items[index - 1]) || isSnippet(items[index + 1])
- // Has newlines: looks like wrapping code fragment
- || node.value.some(hasNewline)
- // Format as wrapper: contains children which will be outputted as field content
- || (node.value.some(isField) && node.children.length);
- if (format) {
- return true;
- }
- }
- if (isInline(node, config)) {
- // Check if inline node is the next sibling of block-level node
- if (index === 0) {
- // First node in parent: format if it’s followed by a block-level element
- for (let i = 0; i < items.length; i++) {
- if (!isInline(items[i], config)) {
- return true;
- }
- }
- }
- else if (!isInline(items[index - 1], config)) {
- // Node is right after block-level element
- return true;
- }
- if (config.options['output.inlineBreak']) {
- // check for adjacent inline elements before and after current element
- let adjacentInline = 1;
- let before = index;
- let after = index;
- while (isInlineElement(items[--before], config)) {
- adjacentInline++;
- }
- while (isInlineElement(items[++after], config)) {
- adjacentInline++;
- }
- if (adjacentInline >= config.options['output.inlineBreak']) {
- return true;
- }
- }
- // Edge case: inline node contains node that should receive formatting
- for (let i = 0, il = node.children.length; i < il; i++) {
- if (shouldFormat$1(node.children[i], i, node.children, state)) {
- return true;
- }
- }
- return false;
- }
- return true;
-}
-/**
- * Returns indentation offset for given node
- */
-function getIndent(state) {
- const { config, parent } = state;
- if (!parent || isSnippet(parent) || (parent.name && config.options['output.formatSkip'].includes(parent.name))) {
- return 0;
- }
- return 1;
-}
-/**
- * Check if given node value contains newlines
- */
-function hasNewline(value) {
- return typeof value === 'string' && /\r|\n/.test(value);
-}
-/**
- * Check if given node value starts with block-level tag
- */
-function startsWithBlockTag(value, config) {
- if (value.length && typeof value[0] === 'string') {
- const matches = htmlTagRegex.exec(value[0]);
- if ((matches === null || matches === void 0 ? void 0 : matches.length) && !config.options['inlineElements'].includes(matches[1].toLowerCase())) {
- return true;
- }
- }
- return false;
-}
-function getMultiValue(key, data, multiple) {
- return (multiple && data[`${key}*`]) || data[key];
-}
-function isPropKey(name) {
- return !reservedKeywords.has(name) && /^[a-zA-Z_$][\w_$]*$/.test(name);
-}
-
-function indentFormat(abbr, config, options) {
- const state = createWalkState(config);
- state.options = options || {};
- walk(abbr, element, state);
- return state.out.value;
-}
-/**
- * Outputs `node` content to output stream of `state`
- * @param node Context node
- * @param index Index of `node` in `items`
- * @param items List of `node`’s siblings
- * @param state Current walk state
- */
-function element(node, index, items, state, next) {
- const { out, options } = state;
- const { primary, secondary } = collectAttributes(node);
- // Pick offset level for current node
- const level = state.parent ? 1 : 0;
- out.level += level;
- // Do not indent top-level elements
- if (shouldFormat(node, index, items, state)) {
- pushNewline(out, true);
- }
- if (node.name && (node.name !== 'div' || !primary.length)) {
- pushString(out, (options.beforeName || '') + node.name + (options.afterName || ''));
- }
- pushPrimaryAttributes(primary, state);
- pushSecondaryAttributes(secondary.filter(shouldOutputAttribute), state);
- if (node.selfClosing && !node.value && !node.children.length) {
- if (state.options.selfClose) {
- pushString(out, state.options.selfClose);
- }
- }
- else {
- pushValue(node, state);
- node.children.forEach(next);
- }
- out.level -= level;
-}
-/**
- * From given node, collects all attributes as `primary` (id, class) and
- * `secondary` (all the rest) lists. In most indent-based syntaxes, primary attribute
- * has special syntax
- */
-function collectAttributes(node) {
- const primary = [];
- const secondary = [];
- if (node.attributes) {
- for (const attr of node.attributes) {
- if (isPrimaryAttribute(attr)) {
- primary.push(attr);
- }
- else {
- secondary.push(attr);
- }
- }
- }
- return { primary, secondary };
-}
-/**
- * Outputs given attributes as primary into output stream
- */
-function pushPrimaryAttributes(attrs, state) {
- for (const attr of attrs) {
- if (attr.value) {
- if (attr.name === 'class') {
- pushString(state.out, '.');
- // All whitespace characters must be replaced with dots in class names
- const tokens = attr.value.map(t => typeof t === 'string' ? t.replace(/\s+/g, '.') : t);
- pushTokens(tokens, state);
- }
- else {
- // ID attribute
- pushString(state.out, '#');
- pushTokens(attr.value, state);
- }
- }
- }
-}
-/**
- * Outputs given attributes as secondary into output stream
- */
-function pushSecondaryAttributes(attrs, state) {
- if (attrs.length) {
- const { out, config, options } = state;
- options.beforeAttribute && pushString(out, options.beforeAttribute);
- for (let i = 0; i < attrs.length; i++) {
- const attr = attrs[i];
- pushString(out, attrName(attr.name || '', config));
- if (isBooleanAttribute(attr, config) && !attr.value) {
- if (!config.options['output.compactBoolean'] && options.booleanValue) {
- pushString(out, '=' + options.booleanValue);
- }
- }
- else {
- pushString(out, '=' + attrQuote(attr, config, true));
- pushTokens(attr.value || caret, state);
- pushString(out, attrQuote(attr, config));
- }
- if (i !== attrs.length - 1 && options.glueAttribute) {
- pushString(out, options.glueAttribute);
- }
- }
- options.afterAttribute && pushString(out, options.afterAttribute);
- }
-}
-/**
- * Outputs given node value into state output stream
- */
-function pushValue(node, state) {
- // We should either output value or add caret but for leaf nodes only (no children)
- if (!node.value && node.children.length) {
- return;
- }
- const value = node.value || caret;
- const lines = splitByLines(value);
- const { out, options } = state;
- if (lines.length === 1) {
- if (node.name || node.attributes) {
- push(out, ' ');
- }
- pushTokens(value, state);
- }
- else {
- // We should format multi-line value with terminating `|` character
- // and same line length
- const lineLengths = [];
- let maxLength = 0;
- // Calculate lengths of all lines and max line length
- for (const line of lines) {
- const len = valueLength(line);
- lineLengths.push(len);
- if (len > maxLength) {
- maxLength = len;
- }
- }
- // Output each line, padded to max length
- out.level++;
- for (let i = 0; i < lines.length; i++) {
- pushNewline(out, true);
- options.beforeTextLine && push(out, options.beforeTextLine);
- pushTokens(lines[i], state);
- if (options.afterTextLine) {
- push(out, ' '.repeat(maxLength - lineLengths[i]));
- push(out, options.afterTextLine);
- }
- }
- out.level--;
- }
-}
-function isPrimaryAttribute(attr) {
- return attr.name === 'class' || attr.name === 'id';
-}
-/**
- * Calculates string length from given tokens
- */
-function valueLength(tokens) {
- let len = 0;
- for (const token of tokens) {
- len += typeof token === 'string' ? token.length : token.name.length;
- }
- return len;
-}
-function shouldFormat(node, index, items, state) {
- // Do not format first top-level element or snippets
- if (!state.parent && index === 0) {
- return false;
- }
- return !isSnippet(node);
-}
-
-function haml(abbr, config) {
- return indentFormat(abbr, config, {
- beforeName: '%',
- beforeAttribute: '(',
- afterAttribute: ')',
- glueAttribute: ' ',
- afterTextLine: ' |',
- booleanValue: 'true',
- selfClose: '/'
- });
-}
-
-function slim(abbr, config) {
- return indentFormat(abbr, config, {
- beforeAttribute: ' ',
- glueAttribute: ' ',
- beforeTextLine: '| ',
- selfClose: '/'
- });
-}
-
-function pug(abbr, config) {
- return indentFormat(abbr, config, {
- beforeAttribute: '(',
- afterAttribute: ')',
- glueAttribute: ', ',
- beforeTextLine: '| ',
- selfClose: config.options['output.selfClosingStyle'] === 'xml' ? '/' : ''
- });
-}
-
-const formatters = { html, haml, slim, pug };
-/**
- * Parses given Emmet abbreviation into a final abbreviation tree with all
- * required transformations applied
- */
-function parse$1(abbr, config) {
- let oldTextValue;
- if (typeof abbr === 'string') {
- const parseOpt = Object.assign({}, config);
- if (config.options['jsx.enabled']) {
- parseOpt.jsx = true;
- }
- if (config.options['markup.href']) {
- parseOpt.href = true;
- }
- abbr = parseAbbreviation(abbr, parseOpt);
- // remove text field before snippets(abbr, config) call
- // as abbreviation(abbr, parseOpt) already handled it
- oldTextValue = config.text;
- config.text = undefined;
- }
- // Run abbreviation resolve in two passes:
- // 1. Map each node to snippets, which are abbreviations as well. A single snippet
- // may produce multiple nodes
- // 2. Transform every resolved node
- abbr = resolveSnippets(abbr, config);
- walk$1(abbr, transform, config);
- config.text = oldTextValue !== null && oldTextValue !== void 0 ? oldTextValue : config.text;
- return abbr;
-}
-/**
- * Converts given abbreviation to string according to provided `config`
- */
-function stringify(abbr, config) {
- const formatter = formatters[config.syntax] || html;
- return formatter(abbr, config);
-}
-/**
- * Modifies given node and prepares it for output
- */
-function transform(node, ancestors, config) {
- implicitTag(node, ancestors, config);
- mergeAttributes(node, config);
- lorem(node, ancestors, config);
- if (config.syntax === 'xsl') {
- xsl(node);
- }
- if (config.options['bem.enabled']) {
- bem(node, ancestors, config);
- }
-}
-
-var CSSSnippetType;
-(function (CSSSnippetType) {
- CSSSnippetType["Raw"] = "Raw";
- CSSSnippetType["Property"] = "Property";
-})(CSSSnippetType || (CSSSnippetType = {}));
-const reProperty = /^([a-z-]+)(?:\s*:\s*([^\n\r;]+?);*)?$/;
-const opt = { value: true };
-/**
- * Creates structure for holding resolved CSS snippet
- */
-function createSnippet(key, value) {
- // A snippet could be a raw text snippet (e.g. arbitrary text string) or a
- // CSS property with possible values separated by `|`.
- // In latter case, we have to parse snippet as CSS abbreviation
- const m = value.match(reProperty);
- if (m) {
- const keywords = {};
- const parsed = m[2] ? m[2].split('|').map(parseValue) : [];
- for (const item of parsed) {
- for (const cssVal of item) {
- collectKeywords(cssVal, keywords);
- }
- }
- return {
- type: CSSSnippetType.Property,
- key,
- property: m[1],
- value: parsed,
- keywords,
- dependencies: []
- };
- }
- return { type: CSSSnippetType.Raw, key, value };
-}
-/**
- * Nests more specific CSS properties into shorthand ones, e.g.
- * `background-position-x` -> `background-position` -> `background`
- */
-function nest(snippets) {
- snippets = snippets.slice().sort(snippetsSort);
- const stack = [];
- let prev;
- // For sorted list of CSS properties, create dependency graph where each
- // shorthand property contains its more specific one, e.g.
- // background -> background-position -> background-position-x
- for (const cur of snippets.filter(isProperty)) {
- // Check if current property belongs to one from parent stack.
- // Since `snippets` array is sorted, items are perfectly aligned
- // from shorthands to more specific variants
- while (stack.length) {
- prev = stack[stack.length - 1];
- if (cur.property.startsWith(prev.property)
- && cur.property.charCodeAt(prev.property.length) === 45 /* - */) {
- prev.dependencies.push(cur);
- stack.push(cur);
- break;
- }
- stack.pop();
- }
- if (!stack.length) {
- stack.push(cur);
- }
- }
- return snippets;
-}
-/**
- * A sorting function for array of snippets
- */
-function snippetsSort(a, b) {
- if (a.key === b.key) {
- return 0;
- }
- return a.key < b.key ? -1 : 1;
-}
-function parseValue(value) {
- return parse$2(value.trim(), opt)[0].value;
-}
-function isProperty(snippet) {
- return snippet.type === CSSSnippetType.Property;
-}
-function collectKeywords(cssVal, dest) {
- for (const v of cssVal.value) {
- if (v.type === 'Literal') {
- dest[v.value] = v;
- }
- else if (v.type === 'FunctionCall') {
- dest[v.name] = v;
- }
- else if (v.type === 'Field') {
- // Create literal from field, if available
- const value = v.name.trim();
- if (value) {
- dest[value] = { type: 'Literal', value };
- }
- }
- }
-}
-
-/**
- * Calculates how close `str1` matches `str2` using fuzzy match.
- * How matching works:
- * – first characters of both `str1` and `str2` *must* match
- * – `str1` length larger than `str2` length is allowed only when `unmatched` is true
- * – ideal match is when `str1` equals to `str2` (score: 1)
- * – next best match is `str2` starts with `str1` (score: 1 × percent of matched characters)
- * – other scores depend on how close characters of `str1` to the beginning of `str2`
- * @param partialMatch Allow length `str1` to be greater than `str2` length
- */
-function scoreMatch(str1, str2, partialMatch = false) {
- str1 = str1.toLowerCase();
- str2 = str2.toLowerCase();
- if (str1 === str2) {
- return 1;
- }
- // Both strings MUST start with the same character
- if (!str1 || !str2 || str1.charCodeAt(0) !== str2.charCodeAt(0)) {
- return 0;
- }
- const str1Len = str1.length;
- const str2Len = str2.length;
- if (!partialMatch && str1Len > str2Len) {
- return 0;
- }
- // Characters from `str1` which are closer to the beginning of a `str2` should
- // have higher score.
- // For example, if `str2` is `abcde`, it’s max score is:
- // 5 + 4 + 3 + 2 + 1 = 15 (sum of character positions in reverse order)
- // Matching `abd` against `abcde` should produce:
- // 5 + 4 + 2 = 11
- // Acronym bonus for match right after `-`. Matching `abd` against `abc-de`
- // should produce:
- // 6 + 5 + 4 (use `d` position in `abd`, not in abc-de`)
- const minLength = Math.min(str1Len, str2Len);
- const maxLength = Math.max(str1Len, str2Len);
- let i = 1;
- let j = 1;
- let score = maxLength;
- let ch1 = 0;
- let ch2 = 0;
- let found = false;
- let acronym = false;
- while (i < str1Len) {
- ch1 = str1.charCodeAt(i);
- found = false;
- acronym = false;
- while (j < str2Len) {
- ch2 = str2.charCodeAt(j);
- if (ch1 === ch2) {
- found = true;
- score += maxLength - (acronym ? i : j);
- break;
- }
- // add acronym bonus for exactly next match after unmatched `-`
- acronym = ch2 === 45 /* - */;
- j++;
- }
- if (!found) {
- if (!partialMatch) {
- return 0;
- }
- break;
- }
- i++;
- }
- const matchRatio = i / maxLength;
- const delta = maxLength - minLength;
- const maxScore = sum(maxLength) - sum(delta);
- return (score * matchRatio) / maxScore;
-}
-/**
- * Calculates sum of first `n` numbers, e.g. 1+2+3+...n
- */
-function sum(n) {
- return n * (n + 1) / 2;
-}
-
-function color(token, shortHex) {
- if (!token.r && !token.g && !token.b && !token.a) {
- return 'transparent';
- }
- else if (token.a === 1) {
- return asHex(token, shortHex);
- }
- return asRGB(token);
-}
-/**
- * Output given color as hex value
- * @param short Produce short value (e.g. #fff instead of #ffffff), if possible
- */
-function asHex(token, short) {
- const fn = (short && isShortHex(token.r) && isShortHex(token.g) && isShortHex(token.b))
- ? toShortHex : toHex;
- return '#' + fn(token.r) + fn(token.g) + fn(token.b);
-}
-/**
- * Output current color as `rgba?(...)` CSS color
- */
-function asRGB(token) {
- const values = [token.r, token.g, token.b];
- if (token.a !== 1) {
- values.push(frac(token.a, 8));
- }
- return `${values.length === 3 ? 'rgb' : 'rgba'}(${values.join(', ')})`;
-}
-function frac(num, digits = 4) {
- return num.toFixed(digits).replace(/\.?0+$/, '');
-}
-function isShortHex(hex) {
- return !(hex % 17);
-}
-function toShortHex(num) {
- return (num >> 4).toString(16);
-}
-function toHex(num) {
- return pad(num.toString(16), 2);
-}
-function pad(value, len) {
- while (value.length < len) {
- value = '0' + value;
- }
- return value;
-}
-
-const CSSAbbreviationScope = {
- /** Include all possible snippets in match */
- Global: '@@global',
- /** Include raw snippets only (e.g. no properties) in abbreviation match */
- Section: '@@section',
- /** Include properties only in abbreviation match */
- Property: '@@property',
- /** Resolve abbreviation in context of CSS property value */
- Value: '@@value',
-};
-function css(abbr, config) {
- var _a;
- const out = createOutputStream(config.options);
- const format = config.options['output.format'];
- if (((_a = config.context) === null || _a === void 0 ? void 0 : _a.name) === CSSAbbreviationScope.Section) {
- // For section context, filter out unmatched snippets
- abbr = abbr.filter(node => node.snippet);
- }
- for (let i = 0; i < abbr.length; i++) {
- if (format && i !== 0) {
- pushNewline(out, true);
- }
- property(abbr[i], out, config);
- }
- return out.value;
-}
-/**
- * Outputs given abbreviation node into output stream
- */
-function property(node, out, config) {
- const isJSON = config.options['stylesheet.json'];
- if (node.name) {
- // It’s a CSS property
- const name = isJSON ? toCamelCase(node.name) : node.name;
- pushString(out, name + config.options['stylesheet.between']);
- if (node.value.length) {
- propertyValue(node, out, config);
- }
- else {
- pushField(out, 0, '');
- }
- if (isJSON) {
- // For CSS-in-JS, always finalize property with comma
- // NB: seems like `important` is not available in CSS-in-JS syntaxes
- push(out, ',');
- }
- else {
- outputImportant(node, out, true);
- push(out, config.options['stylesheet.after']);
- }
- }
- else {
- // It’s a regular snippet, output plain tokens without any additional formatting
- for (const cssVal of node.value) {
- for (const v of cssVal.value) {
- outputToken(v, out, config);
- }
- }
- outputImportant(node, out, node.value.length > 0);
- }
-}
-function propertyValue(node, out, config) {
- const isJSON = config.options['stylesheet.json'];
- const num = isJSON ? getSingleNumeric(node) : null;
- if (num && (!num.unit || num.unit === 'px')) {
- // For CSS-in-JS, if property contains single numeric value, output it
- // as JS number
- push(out, String(num.value));
- }
- else {
- const quote = getQuote(config);
- isJSON && push(out, quote);
- for (let i = 0; i < node.value.length; i++) {
- if (i !== 0) {
- push(out, ', ');
- }
- outputValue(node.value[i], out, config);
- }
- isJSON && push(out, quote);
- }
-}
-function outputImportant(node, out, separator) {
- if (node.important) {
- if (separator) {
- push(out, ' ');
- }
- push(out, '!important');
- }
-}
-function outputValue(value, out, config) {
- for (let i = 0, prevEnd = -1; i < value.value.length; i++) {
- const token = value.value[i];
- // Handle edge case: a field is written close to previous token like this: `foo${bar}`.
- // We should not add delimiter here
- if (i !== 0 && (token.type !== 'Field' || token.start !== prevEnd)) {
- push(out, ' ');
- }
- outputToken(token, out, config);
- prevEnd = token['end'];
- }
-}
-function outputToken(token, out, config) {
- if (token.type === 'ColorValue') {
- push(out, color(token, config.options['stylesheet.shortHex']));
- }
- else if (token.type === 'Literal' || token.type === 'CustomProperty') {
- pushString(out, token.value);
- }
- else if (token.type === 'NumberValue') {
- pushString(out, frac(token.value, 4) + token.unit);
- }
- else if (token.type === 'StringValue') {
- const quote = token.quote === 'double' ? '"' : '\'';
- pushString(out, quote + token.value + quote);
- }
- else if (token.type === 'Field') {
- pushField(out, token.index, token.name);
- }
- else if (token.type === 'FunctionCall') {
- push(out, token.name + '(');
- for (let i = 0; i < token.arguments.length; i++) {
- if (i) {
- push(out, ', ');
- }
- outputValue(token.arguments[i], out, config);
- }
- push(out, ')');
- }
-}
-/**
- * If value of given property is a single numeric value, returns this token
- */
-function getSingleNumeric(node) {
- if (node.value.length === 1) {
- const cssVal = node.value[0];
- if (cssVal.value.length === 1 && cssVal.value[0].type === 'NumberValue') {
- return cssVal.value[0];
- }
- }
-}
-/**
- * Converts kebab-case string to camelCase
- */
-function toCamelCase(str) {
- return str.replace(/\-(\w)/g, (_, letter) => letter.toUpperCase());
-}
-function getQuote(config) {
- return config.options['stylesheet.jsonDoubleQuotes'] ? '"' : '\'';
-}
-
-const gradientName = 'lg';
-/**
- * Parses given Emmet abbreviation into a final abbreviation tree with all
- * required transformations applied
- */
-function parse(abbr, config) {
- var _a;
- const snippets = ((_a = config.cache) === null || _a === void 0 ? void 0 : _a.stylesheetSnippets) || convertSnippets(config.snippets);
- if (config.cache) {
- config.cache.stylesheetSnippets = snippets;
- }
- if (typeof abbr === 'string') {
- abbr = parse$2(abbr, { value: isValueScope(config) });
- }
- const filteredSnippets = getSnippetsForScope(snippets, config);
- for (const node of abbr) {
- resolveNode(node, filteredSnippets, config);
- }
- return abbr;
-}
-/**
- * Converts given raw snippets into internal snippets representation
- */
-function convertSnippets(snippets) {
- const result = [];
- for (const key of Object.keys(snippets)) {
- result.push(createSnippet(key, snippets[key]));
- }
- return nest(result);
-}
-/**
- * Resolves given node: finds matched CSS snippets using fuzzy match and resolves
- * keyword aliases from node value
- */
-function resolveNode(node, snippets, config) {
- if (!resolveGradient(node, config)) {
- const score = config.options['stylesheet.fuzzySearchMinScore'];
- if (isValueScope(config)) {
- // Resolve as value of given CSS property
- const propName = config.context.name;
- const snippet = snippets.find(s => s.type === CSSSnippetType.Property && s.property === propName);
- resolveValueKeywords(node, config, snippet, score);
- node.snippet = snippet;
- }
- else if (node.name) {
- const snippet = findBestMatch(node.name, snippets, score, true);
- node.snippet = snippet;
- if (snippet) {
- if (snippet.type === CSSSnippetType.Property) {
- resolveAsProperty(node, snippet, config);
- }
- else {
- resolveAsSnippet(node, snippet);
- }
- }
- }
- }
- if (node.name || config.context) {
- // Resolve numeric values for CSS properties only
- resolveNumericValue(node, config);
- }
- return node;
-}
-/**
- * Resolves CSS gradient shortcut from given property, if possible
- */
-function resolveGradient(node, config) {
- let gradientFn = null;
- const cssVal = node.value.length === 1 ? node.value[0] : null;
- if (cssVal && cssVal.value.length === 1) {
- const v = cssVal.value[0];
- if (v.type === 'FunctionCall' && v.name === gradientName) {
- gradientFn = v;
- }
- }
- if (gradientFn || node.name === gradientName) {
- if (!gradientFn) {
- gradientFn = {
- type: 'FunctionCall',
- name: 'linear-gradient',
- arguments: [cssValue(field(0, ''))]
- };
- }
- else {
- gradientFn = Object.assign(Object.assign({}, gradientFn), { name: 'linear-gradient' });
- }
- if (!config.context) {
- node.name = 'background-image';
- }
- node.value = [cssValue(gradientFn)];
- return true;
- }
- return false;
-}
-/**
- * Resolves given parsed abbreviation node as CSS property
- */
-function resolveAsProperty(node, snippet, config) {
- const abbr = node.name;
- // Check for unmatched part of abbreviation
- // For example, in `dib` abbreviation the matched part is `d` and `ib` should
- // be considered as inline value. If unmatched fragment exists, we should check
- // if it matches actual value of snippet. If either explicit value is specified
- // or unmatched fragment did not resolve to to a keyword, we should consider
- // matched snippet as invalid
- const inlineValue = getUnmatchedPart(abbr, snippet.key);
- if (inlineValue) {
- if (node.value.length) {
- // Already have value: unmatched part indicates matched snippet is invalid
- return node;
- }
- const kw = resolveKeyword(inlineValue, config, snippet);
- if (!kw) {
- return node;
- }
- node.value.push(cssValue(kw));
- }
- node.name = snippet.property;
- if (node.value.length) {
- // Replace keyword alias from current abbreviation node with matched keyword
- resolveValueKeywords(node, config, snippet);
- }
- else if (snippet.value.length) {
- const defaultValue = snippet.value[0];
- // https://github.com/emmetio/emmet/issues/558
- // We should auto-select inserted value only if there’s multiple value
- // choice
- node.value = snippet.value.length === 1 || defaultValue.some(hasField)
- ? defaultValue
- : defaultValue.map(n => wrapWithField(n, config));
- }
- return node;
-}
-function resolveValueKeywords(node, config, snippet, minScore) {
- for (const cssVal of node.value) {
- const value = [];
- for (const token of cssVal.value) {
- if (token.type === 'Literal') {
- value.push(resolveKeyword(token.value, config, snippet, minScore) || token);
- }
- else if (token.type === 'FunctionCall') {
- // For function calls, we should find matching function call
- // and merge arguments
- const match = resolveKeyword(token.name, config, snippet, minScore);
- if (match && match.type === 'FunctionCall') {
- value.push(Object.assign(Object.assign({}, match), { arguments: token.arguments.concat(match.arguments.slice(token.arguments.length)) }));
- }
- else {
- value.push(token);
- }
- }
- else {
- value.push(token);
- }
- }
- cssVal.value = value;
- }
-}
-/**
- * Resolves given parsed abbreviation node as a snippet: a plain code chunk
- */
-function resolveAsSnippet(node, snippet) {
- // When resolving snippets, we have to do the following:
- // 1. Replace field placeholders with actual field tokens.
- // 2. If input values given, put them instead of fields
- let offset = 0;
- let m;
- const reField = /\$\{(\d+)(:[^}]+)?\}/g;
- const inputValue = node.value[0];
- const outputValue = [];
- while (m = reField.exec(snippet.value)) {
- if (offset !== m.index) {
- outputValue.push(literal(snippet.value.slice(offset, m.index)));
- }
- offset = m.index + m[0].length;
- if (inputValue && inputValue.value.length) {
- outputValue.push(inputValue.value.shift());
- }
- else {
- outputValue.push(field(Number(m[1]), m[2] ? m[2].slice(1) : ''));
- }
- }
- const tail = snippet.value.slice(offset);
- if (tail) {
- outputValue.push(literal(tail));
- }
- node.name = void 0;
- node.value = [cssValue(...outputValue)];
- return node;
-}
-/**
- * Finds best matching item from `items` array
- * @param abbr Abbreviation to match
- * @param items List of items for match
- * @param minScore The minimum score the best matched item should have to be a valid match.
- */
-function findBestMatch(abbr, items, minScore = 0, partialMatch = false) {
- let matchedItem = null;
- let maxScore = 0;
- for (const item of items) {
- const score = scoreMatch(abbr, getScoringPart(item), partialMatch);
- if (score === 1) {
- // direct hit, no need to look further
- return item;
- }
- if (score && score >= maxScore) {
- maxScore = score;
- matchedItem = item;
- }
- }
- return maxScore >= minScore ? matchedItem : null;
-}
-function getScoringPart(item) {
- return typeof item === 'string' ? item : item.key;
-}
-/**
- * Returns a part of `abbr` that wasn’t directly matched against `str`.
- * For example, if abbreviation `poas` is matched against `position`,
- * the unmatched part will be `as` since `a` wasn’t found in string stream
- */
-function getUnmatchedPart(abbr, str) {
- for (let i = 0, lastPos = 0; i < abbr.length; i++) {
- lastPos = str.indexOf(abbr[i], lastPos);
- if (lastPos === -1) {
- return abbr.slice(i);
- }
- lastPos++;
- }
- return '';
-}
-/**
- * Resolves given keyword shorthand into matched snippet keyword or global keyword,
- * if possible
- */
-function resolveKeyword(kw, config, snippet, minScore) {
- let ref;
- if (snippet) {
- if (ref = findBestMatch(kw, Object.keys(snippet.keywords), minScore)) {
- return snippet.keywords[ref];
- }
- for (const dep of snippet.dependencies) {
- if (ref = findBestMatch(kw, Object.keys(dep.keywords), minScore)) {
- return dep.keywords[ref];
- }
- }
- }
- if (ref = findBestMatch(kw, config.options['stylesheet.keywords'], minScore)) {
- return literal(ref);
- }
- return null;
-}
-/**
- * Resolves numeric values in given abbreviation node
- */
-function resolveNumericValue(node, config) {
- const aliases = config.options['stylesheet.unitAliases'];
- const unitless = config.options['stylesheet.unitless'];
- for (const v of node.value) {
- for (const t of v.value) {
- if (t.type === 'NumberValue') {
- if (t.unit) {
- t.unit = aliases[t.unit] || t.unit;
- }
- else if (t.value !== 0 && !unitless.includes(node.name)) {
- t.unit = t.rawValue.includes('.')
- ? config.options['stylesheet.floatUnit']
- : config.options['stylesheet.intUnit'];
- }
- }
- }
- }
-}
-/**
- * Constructs CSS value token
- */
-function cssValue(...args) {
- return {
- type: 'CSSValue',
- value: args
- };
-}
-/**
- * Constructs literal token
- */
-function literal(value) {
- return { type: 'Literal', value };
-}
-/**
- * Constructs field token
- */
-function field(index, name) {
- return { type: 'Field', index, name };
-}
-/**
- * Check if given value contains fields
- */
-function hasField(value) {
- for (const v of value.value) {
- if (v.type === 'Field' || (v.type === 'FunctionCall' && v.arguments.some(hasField))) {
- return true;
- }
- }
- return false;
-}
-/**
- * Wraps tokens of given abbreviation with fields
- */
-function wrapWithField(node, config, state = { index: 1 }) {
- let value = [];
- for (const v of node.value) {
- switch (v.type) {
- case 'ColorValue':
- value.push(field(state.index++, color(v, config.options['stylesheet.shortHex'])));
- break;
- case 'Literal':
- value.push(field(state.index++, v.value));
- break;
- case 'NumberValue':
- value.push(field(state.index++, `${v.value}${v.unit}`));
- break;
- case 'StringValue':
- const q = v.quote === 'single' ? '\'' : '"';
- value.push(field(state.index++, q + v.value + q));
- break;
- case 'FunctionCall':
- value.push(field(state.index++, v.name), literal('('));
- for (let i = 0, il = v.arguments.length; i < il; i++) {
- value = value.concat(wrapWithField(v.arguments[i], config, state).value);
- if (i !== il - 1) {
- value.push(literal(', '));
- }
- }
- value.push(literal(')'));
- break;
- default:
- value.push(v);
- }
- }
- return Object.assign(Object.assign({}, node), { value });
-}
-/**
- * Check if abbreviation should be expanded in CSS value context
- */
-function isValueScope(config) {
- if (config.context) {
- return config.context.name === CSSAbbreviationScope.Value || !config.context.name.startsWith('@@');
- }
- return false;
-}
-/**
- * Returns snippets for given scope
- */
-function getSnippetsForScope(snippets, config) {
- if (config.context) {
- if (config.context.name === CSSAbbreviationScope.Section) {
- return snippets.filter(s => s.type === CSSSnippetType.Raw);
- }
- if (config.context.name === CSSAbbreviationScope.Property) {
- return snippets.filter(s => s.type === CSSSnippetType.Property);
- }
- }
- return snippets;
-}
-
-var markupSnippets = {
- "a": "a[href]",
- "a:blank": "a[href='http://${0}' target='_blank' rel='noopener noreferrer']",
- "a:link": "a[href='http://${0}']",
- "a:mail": "a[href='mailto:${0}']",
- "a:tel": "a[href='tel:+${0}']",
- "abbr": "abbr[title]",
- "acr|acronym": "acronym[title]",
- "base": "base[href]/",
- "basefont": "basefont/",
- "br": "br/",
- "frame": "frame/",
- "hr": "hr/",
- "bdo": "bdo[dir]",
- "bdo:r": "bdo[dir=rtl]",
- "bdo:l": "bdo[dir=ltr]",
- "col": "col/",
- "link": "link[rel=stylesheet href]/",
- "link:css": "link[href='${1:style}.css']",
- "link:print": "link[href='${1:print}.css' media=print]",
- "link:favicon": "link[rel='shortcut icon' type=image/x-icon href='${1:favicon.ico}']",
- "link:mf|link:manifest": "link[rel='manifest' href='${1:manifest.json}']",
- "link:touch": "link[rel=apple-touch-icon href='${1:favicon.png}']",
- "link:rss": "link[rel=alternate type=application/rss+xml title=RSS href='${1:rss.xml}']",
- "link:atom": "link[rel=alternate type=application/atom+xml title=Atom href='${1:atom.xml}']",
- "link:im|link:import": "link[rel=import href='${1:component}.html']",
- "meta": "meta/",
- "meta:utf": "meta[http-equiv=Content-Type content='text/html;charset=UTF-8']",
- "meta:vp": "meta[name=viewport content='width=${1:device-width}, initial-scale=${2:1.0}']",
- "meta:compat": "meta[http-equiv=X-UA-Compatible content='${1:IE=7}']",
- "meta:edge": "meta:compat[content='${1:ie=edge}']",
- "meta:redirect": "meta[http-equiv=refresh content='0; url=${1:http://example.com}']",
- "meta:refresh": "meta[http-equiv=refresh content='${1:5}']",
- "meta:kw": "meta[name=keywords content]",
- "meta:desc": "meta[name=description content]",
- "style": "style",
- "script": "script",
- "script:src": "script[src]",
- "script:module": "script[type=module src]",
- "img": "img[src alt]/",
- "img:s|img:srcset": "img[srcset src alt]",
- "img:z|img:sizes": "img[sizes srcset src alt]",
- "picture": "picture",
- "src|source": "source/",
- "src:sc|source:src": "source[src type]",
- "src:s|source:srcset": "source[srcset]",
- "src:t|source:type": "source[srcset type='${1:image/}']",
- "src:z|source:sizes": "source[sizes srcset]",
- "src:m|source:media": "source[media='(${1:min-width: })' srcset]",
- "src:mt|source:media:type": "source:media[type='${2:image/}']",
- "src:mz|source:media:sizes": "source:media[sizes srcset]",
- "src:zt|source:sizes:type": "source[sizes srcset type='${1:image/}']",
- "iframe": "iframe[src frameborder=0]",
- "embed": "embed[src type]/",
- "object": "object[data type]",
- "param": "param[name value]/",
- "map": "map[name]",
- "area": "area[shape coords href alt]/",
- "area:d": "area[shape=default]",
- "area:c": "area[shape=circle]",
- "area:r": "area[shape=rect]",
- "area:p": "area[shape=poly]",
- "form": "form[action]",
- "form:get": "form[method=get]",
- "form:post": "form[method=post]",
- "label": "label[for]",
- "input": "input[type=${1:text}]/",
- "inp": "input[name=${1} id=${1}]",
- "input:h|input:hidden": "input[type=hidden name]",
- "input:t|input:text": "inp[type=text]",
- "input:search": "inp[type=search]",
- "input:email": "inp[type=email]",
- "input:url": "inp[type=url]",
- "input:p|input:password": "inp[type=password]",
- "input:datetime": "inp[type=datetime]",
- "input:date": "inp[type=date]",
- "input:datetime-local": "inp[type=datetime-local]",
- "input:month": "inp[type=month]",
- "input:week": "inp[type=week]",
- "input:time": "inp[type=time]",
- "input:tel": "inp[type=tel]",
- "input:number": "inp[type=number]",
- "input:color": "inp[type=color]",
- "input:c|input:checkbox": "inp[type=checkbox]",
- "input:r|input:radio": "inp[type=radio]",
- "input:range": "inp[type=range]",
- "input:f|input:file": "inp[type=file]",
- "input:s|input:submit": "input[type=submit value]",
- "input:i|input:image": "input[type=image src alt]",
- "input:b|input:btn|input:button": "input[type=button value]",
- "input:reset": "input:button[type=reset]",
- "isindex": "isindex/",
- "select": "select[name=${1} id=${1}]",
- "select:d|select:disabled": "select[disabled.]",
- "opt|option": "option[value]",
- "textarea": "textarea[name=${1} id=${1} cols=${2:30} rows=${3:10}]",
- "marquee": "marquee[behavior direction]",
- "menu:c|menu:context": "menu[type=context]",
- "menu:t|menu:toolbar": "menu[type=toolbar]",
- "video": "video[src]",
- "audio": "audio[src]",
- "html:xml": "html[xmlns=http://www.w3.org/1999/xhtml]",
- "keygen": "keygen/",
- "command": "command/",
- "btn:s|button:s|button:submit" : "button[type=submit]",
- "btn:r|button:r|button:reset" : "button[type=reset]",
- "btn:b|button:b|button:button" : "button[type=button]",
- "btn:d|button:d|button:disabled" : "button[disabled.]",
- "fst:d|fset:d|fieldset:d|fieldset:disabled" : "fieldset[disabled.]",
-
- "bq": "blockquote",
- "fig": "figure",
- "figc": "figcaption",
- "pic": "picture",
- "ifr": "iframe",
- "emb": "embed",
- "obj": "object",
- "cap": "caption",
- "colg": "colgroup",
- "fst": "fieldset",
- "btn": "button",
- "optg": "optgroup",
- "tarea": "textarea",
- "leg": "legend",
- "sect": "section",
- "art": "article",
- "hdr": "header",
- "ftr": "footer",
- "adr": "address",
- "dlg": "dialog",
- "str": "strong",
- "prog": "progress",
- "mn": "main",
- "tem": "template",
- "fset": "fieldset",
- "datal": "datalist",
- "kg": "keygen",
- "out": "output",
- "det": "details",
- "sum": "summary",
- "cmd": "command",
- "data": "data[value]",
- "meter": "meter[value]",
- "time": "time[datetime]",
-
- "ri:d|ri:dpr": "img:s",
- "ri:v|ri:viewport": "img:z",
- "ri:a|ri:art": "pic>src:m+img",
- "ri:t|ri:type": "pic>src:t+img",
-
- "!!!": "{}",
- "doc": "html[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}})+body",
- "!|html:5": "!!!+doc",
-
- "c": "{}",
- "cc:ie": "{}",
- "cc:noie": "{${0}}"
-};
-
-var stylesheetSnippets = {
- "@f": "@font-face {\n\tfont-family: ${1};\n\tsrc: url(${2});\n}",
- "@ff": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}",
- "@i|@import": "@import url(${0});",
- "@kf": "@keyframes ${1:identifier} {\n\t${2}\n}",
- "@m|@media": "@media ${1:screen} {\n\t${0}\n}",
- "ac": "align-content:start|end|flex-start|flex-end|center|space-between|space-around|stretch|space-evenly",
- "ai": "align-items:start|end|flex-start|flex-end|center|baseline|stretch",
- "anim": "animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode}",
- "animdel": "animation-delay:time",
- "animdir": "animation-direction:normal|reverse|alternate|alternate-reverse",
- "animdur": "animation-duration:${1:0}s",
- "animfm": "animation-fill-mode:both|forwards|backwards",
- "animic": "animation-iteration-count:1|infinite",
- "animn": "animation-name",
- "animps": "animation-play-state:running|paused",
- "animtf": "animation-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1})",
- "ap": "appearance:none",
- "as": "align-self:start|end|auto|flex-start|flex-end|center|baseline|stretch",
- "b": "bottom",
- "bd": "border:${1:1px} ${2:solid} ${3:#000}",
- "bdb": "border-bottom:${1:1px} ${2:solid} ${3:#000}",
- "bdbc": "border-bottom-color:${1:#000}",
- "bdbi": "border-bottom-image:url(${0})",
- "bdbk": "border-break:close",
- "bdbli": "border-bottom-left-image:url(${0})|continue",
- "bdblrs": "border-bottom-left-radius",
- "bdbri": "border-bottom-right-image:url(${0})|continue",
- "bdbrrs": "border-bottom-right-radius",
- "bdbs": "border-bottom-style",
- "bdbw": "border-bottom-width",
- "bdc": "border-color:${1:#000}",
- "bdci": "border-corner-image:url(${0})|continue",
- "bdcl": "border-collapse:collapse|separate",
- "bdf": "border-fit:repeat|clip|scale|stretch|overwrite|overflow|space",
- "bdi": "border-image:url(${0})",
- "bdl": "border-left:${1:1px} ${2:solid} ${3:#000}",
- "bdlc": "border-left-color:${1:#000}",
- "bdlen": "border-length",
- "bdli": "border-left-image:url(${0})",
- "bdls": "border-left-style",
- "bdlw": "border-left-width",
- "bdr": "border-right:${1:1px} ${2:solid} ${3:#000}",
- "bdrc": "border-right-color:${1:#000}",
- "bdri": "border-right-image:url(${0})",
- "bdrs": "border-radius",
- "bdrst": "border-right-style",
- "bdrw": "border-right-width",
- "bds": "border-style:none|hidden|dotted|dashed|solid|double|dot-dash|dot-dot-dash|wave|groove|ridge|inset|outset",
- "bdsp": "border-spacing",
- "bdt": "border-top:${1:1px} ${2:solid} ${3:#000}",
- "bdtc": "border-top-color:${1:#000}",
- "bdti": "border-top-image:url(${0})",
- "bdtli": "border-top-left-image:url(${0})|continue",
- "bdtlrs": "border-top-left-radius",
- "bdtri": "border-top-right-image:url(${0})|continue",
- "bdtrrs": "border-top-right-radius",
- "bdts": "border-top-style",
- "bdtw": "border-top-width",
- "bdw": "border-width",
- "bbs": "border-block-start",
- "bbe": "border-block-end",
- "bis": "border-inline-start",
- "bie": "border-inline-end",
- "bfv": "backface-visibility:hidden|visible",
- "bg": "background:${1:#000}",
- "bg:n": "background: none",
- "bga": "background-attachment:fixed|scroll",
- "bgbk": "background-break:bounding-box|each-box|continuous",
- "bgc": "background-color:${1:#fff}",
- "bgcp": "background-clip:padding-box|border-box|content-box|no-clip",
- "bgi": "background-image:url(${0})",
- "bgo": "background-origin:padding-box|border-box|content-box",
- "bgp": "background-position:${1:0} ${2:0}",
- "bgpx": "background-position-x",
- "bgpy": "background-position-y",
- "bgr": "background-repeat:no-repeat|repeat-x|repeat-y|space|round",
- "bgsz": "background-size:contain|cover",
- "bs": "block-size",
- "bxsh": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:#000}|none",
- "bxsz": "box-sizing:border-box|content-box|border-box",
- "c": "color:${1:#000}",
- "cr": "color:rgb(${1:0}, ${2:0}, ${3:0})",
- "cra": "color:rgba(${1:0}, ${2:0}, ${3:0}, ${4:.5})",
- "cl": "clear:both|left|right|none",
- "cm": "/* ${0} */",
- "cnt": "content:'${0}'|normal|open-quote|no-open-quote|close-quote|no-close-quote|attr(${0})|counter(${0})|counters(${0})",
- "coi": "counter-increment",
- "colm": "columns",
- "colmc": "column-count",
- "colmf": "column-fill",
- "colmg": "column-gap",
- "colmr": "column-rule",
- "colmrc": "column-rule-color",
- "colmrs": "column-rule-style",
- "colmrw": "column-rule-width",
- "colms": "column-span",
- "colmw": "column-width",
- "cor": "counter-reset",
- "cp": "clip:auto|rect(${1:top} ${2:right} ${3:bottom} ${4:left})",
- "cps": "caption-side:top|bottom",
- "cur": "cursor:pointer|auto|default|crosshair|hand|help|move|pointer|text",
- "d": "display:block|none|flex|inline-flex|inline|inline-block|grid|inline-grid|subgrid|list-item|run-in|contents|table|inline-table|table-caption|table-column|table-column-group|table-header-group|table-footer-group|table-row|table-row-group|table-cell|ruby|ruby-base|ruby-base-group|ruby-text|ruby-text-group",
- "ec": "empty-cells:show|hide",
- "f": "font:${1:1em} ${2:sans-serif}",
- "fd": "font-display:auto|block|swap|fallback|optional",
- "fef": "font-effect:none|engrave|emboss|outline",
- "fem": "font-emphasize",
- "femp": "font-emphasize-position:before|after",
- "fems": "font-emphasize-style:none|accent|dot|circle|disc",
- "ff": "font-family:serif|sans-serif|cursive|fantasy|monospace",
- "fft": "font-family:\"Times New Roman\", Times, Baskerville, Georgia, serif",
- "ffa": "font-family:Arial, \"Helvetica Neue\", Helvetica, sans-serif",
- "ffv": "font-family:Verdana, Geneva, sans-serif",
- "fl": "float:left|right|none",
- "fs": "font-style:italic|normal|oblique",
- "fsm": "font-smoothing:antialiased|subpixel-antialiased|none",
- "fst": "font-stretch:normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",
- "fv": "font-variant:normal|small-caps",
- "fvs": "font-variation-settings:normal|inherit|initial|unset",
- "fw": "font-weight:normal|bold|bolder|lighter",
- "fx": "flex",
- "fxb": "flex-basis:fill|max-content|min-content|fit-content|content",
- "fxd": "flex-direction:row|row-reverse|column|column-reverse",
- "fxf": "flex-flow",
- "fxg": "flex-grow",
- "fxsh": "flex-shrink",
- "fxw": "flex-wrap:nowrap|wrap|wrap-reverse",
- "fsz": "font-size",
- "fsza": "font-size-adjust",
- "g": "gap",
- "gtc": "grid-template-columns:repeat(${0})|minmax()",
- "gtr": "grid-template-rows:repeat(${0})|minmax()",
- "gta": "grid-template-areas",
- "gt": "grid-template",
- "gg": "grid-gap",
- "gcg": "grid-column-gap",
- "grg": "grid-row-gap",
- "gac": "grid-auto-columns:auto|minmax()",
- "gar": "grid-auto-rows:auto|minmax()",
- "gaf": "grid-auto-flow:row|column|dense|inherit|initial|unset",
- "gd": "grid",
- "gc": "grid-column",
- "gcs": "grid-column-start",
- "gce": "grid-column-end",
- "gr": "grid-row",
- "grs": "grid-row-start",
- "gre": "grid-row-end",
- "ga": "grid-area",
- "h": "height",
- "is": "inline-size",
- "jc": "justify-content:start|end|stretch|flex-start|flex-end|center|space-between|space-around|space-evenly",
- "ji": "justify-items:start|end|center|stretch",
- "js": "justify-self:start|end|center|stretch",
- "l": "left",
- "lg": "background-image:linear-gradient(${1})",
- "lh": "line-height",
- "lis": "list-style",
- "lisi": "list-style-image",
- "lisp": "list-style-position:inside|outside",
- "list": "list-style-type:disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman",
- "lts": "letter-spacing:normal",
- "m": "margin",
- "mah": "max-height",
- "mar": "max-resolution",
- "maw": "max-width",
- "mb": "margin-bottom",
- "mih": "min-height",
- "mir": "min-resolution",
- "miw": "min-width",
- "ml": "margin-left",
- "mr": "margin-right",
- "mt": "margin-top",
- "mbs": "margin-block-start",
- "mbe": "margin-block-end",
- "mis": "margin-inline-start",
- "mie": "margin-inline-end",
- "ol": "outline",
- "olc": "outline-color:${1:#000}|invert",
- "olo": "outline-offset",
- "ols": "outline-style:none|dotted|dashed|solid|double|groove|ridge|inset|outset",
- "olw": "outline-width:thin|medium|thick",
- "op|opa": "opacity",
- "ord": "order",
- "ori": "orientation:landscape|portrait",
- "orp": "orphans",
- "ov": "overflow:hidden|visible|hidden|scroll|auto",
- "ovs": "overflow-style:scrollbar|auto|scrollbar|panner|move|marquee",
- "ovx": "overflow-x:hidden|visible|hidden|scroll|auto",
- "ovy": "overflow-y:hidden|visible|hidden|scroll|auto",
- "p": "padding",
- "pb": "padding-bottom",
- "pgba": "page-break-after:auto|always|left|right",
- "pgbb": "page-break-before:auto|always|left|right",
- "pgbi": "page-break-inside:auto|avoid",
- "pl": "padding-left",
- "pos": "position:relative|absolute|relative|fixed|static",
- "pr": "padding-right",
- "pt": "padding-top",
- "pbs": "padding-block-start",
- "pbe": "padding-block-end",
- "pis": "padding-inline-start",
- "pie": "padding-inline-end",
- "spbs": "scroll-padding-block-start",
- "spbe": "scroll-padding-block-end",
- "spis": "scroll-padding-inline-start",
- "spie": "scroll-padding-inline-end",
- "q": "quotes",
- "qen": "quotes:'\\201C' '\\201D' '\\2018' '\\2019'",
- "qru": "quotes:'\\00AB' '\\00BB' '\\201E' '\\201C'",
- "r": "right",
- "rsz": "resize:none|both|horizontal|vertical",
- "t": "top",
- "ta": "text-align:left|center|right|justify",
- "tal": "text-align-last:left|center|right",
- "tbl": "table-layout:fixed",
- "td": "text-decoration:none|underline|overline|line-through",
- "te": "text-emphasis:none|accent|dot|circle|disc|before|after",
- "th": "text-height:auto|font-size|text-size|max-size",
- "ti": "text-indent",
- "tj": "text-justify:auto|inter-word|inter-ideograph|inter-cluster|distribute|kashida|tibetan",
- "to": "text-outline:${1:0} ${2:0} ${3:#000}",
- "tov": "text-overflow:ellipsis|clip",
- "tr": "text-replace",
- "trf": "transform:${1}|skewX(${1:angle})|skewY(${1:angle})|scale(${1:x}, ${2:y})|scaleX(${1:x})|scaleY(${1:y})|scaleZ(${1:z})|scale3d(${1:x}, ${2:y}, ${3:z})|rotate(${1:angle})|rotateX(${1:angle})|rotateY(${1:angle})|rotateZ(${1:angle})|translate(${1:x}, ${2:y})|translateX(${1:x})|translateY(${1:y})|translateZ(${1:z})|translate3d(${1:tx}, ${2:ty}, ${3:tz})",
- "trfo": "transform-origin",
- "trfs": "transform-style:preserve-3d",
- "trs": "transition:${1:prop} ${2:time}",
- "trsde": "transition-delay:${1:time}",
- "trsdu": "transition-duration:${1:time}",
- "trsp": "transition-property:${1:prop}",
- "trstf": "transition-timing-function:${1:fn}",
- "tsh": "text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000}",
- "tt": "text-transform:uppercase|lowercase|capitalize|none",
- "tw": "text-wrap:none|normal|unrestricted|suppress",
- "us": "user-select:none",
- "v": "visibility:hidden|visible|collapse",
- "va": "vertical-align:top|super|text-top|middle|baseline|bottom|text-bottom|sub",
- "w": "width",
- "whs": "white-space:nowrap|pre|pre-wrap|pre-line|normal",
- "whsc": "white-space-collapse:normal|keep-all|loose|break-strict|break-all",
- "wid": "widows",
- "wm": "writing-mode:lr-tb|lr-tb|lr-bt|rl-tb|rl-bt|tb-rl|tb-lr|bt-lr|bt-rl",
- "wob": "word-break:normal|keep-all|break-all",
- "wos": "word-spacing",
- "wow": "word-wrap:none|unrestricted|suppress|break-word|normal",
- "z": "z-index",
- "zom": "zoom:1"
-};
-
-var xslSnippets = {
- "tm|tmatch": "xsl:template[match mode]",
- "tn|tname": "xsl:template[name]",
- "call": "xsl:call-template[name]",
- "ap": "xsl:apply-templates[select mode]",
- "api": "xsl:apply-imports",
- "imp": "xsl:import[href]",
- "inc": "xsl:include[href]",
- "ch": "xsl:choose",
- "wh|xsl:when": "xsl:when[test]",
- "ot": "xsl:otherwise",
- "if": "xsl:if[test]",
- "par": "xsl:param[name]",
- "pare": "xsl:param[name select]",
- "var": "xsl:variable[name]",
- "vare": "xsl:variable[name select]",
- "wp": "xsl:with-param[name select]",
- "key": "xsl:key[name match use]",
- "elem": "xsl:element[name]",
- "attr": "xsl:attribute[name]",
- "attrs": "xsl:attribute-set[name]",
- "cp": "xsl:copy[select]",
- "co": "xsl:copy-of[select]",
- "val": "xsl:value-of[select]",
- "for|each": "xsl:for-each[select]",
- "tex": "xsl:text",
- "com": "xsl:comment",
- "msg": "xsl:message[terminate=no]",
- "fall": "xsl:fallback",
- "num": "xsl:number[value]",
- "nam": "namespace-alias[stylesheet-prefix result-prefix]",
- "pres": "xsl:preserve-space[elements]",
- "strip": "xsl:strip-space[elements]",
- "proc": "xsl:processing-instruction[name]",
- "sort": "xsl:sort[select order]",
- "choose": "xsl:choose>xsl:when+xsl:otherwise",
- "xsl": "!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\n|}",
- "!!!": "{}"
-};
-
-var pugSnippets = {
- "!!!": "{doctype html}"
-};
-
-var variables = {
- "lang": "en",
- "locale": "en-US",
- "charset": "UTF-8",
- "indentation": "\t",
- "newline": "\n"
-};
-
-/**
- * Default syntaxes for abbreviation types
- */
-const defaultSyntaxes = {
- markup: 'html',
- stylesheet: 'css'
-};
-const defaultOptions$1 = {
- 'inlineElements': [
- 'a', 'abbr', 'acronym', 'applet', 'b', 'basefont', 'bdo',
- 'big', 'br', 'button', 'cite', 'code', 'del', 'dfn', 'em', 'font', 'i',
- 'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map', 'object', 'q',
- 's', 'samp', 'select', 'small', 'span', 'strike', 'strong', 'sub', 'sup',
- 'textarea', 'tt', 'u', 'var'
- ],
- 'output.indent': '\t',
- 'output.baseIndent': '',
- 'output.newline': '\n',
- 'output.tagCase': '',
- 'output.attributeCase': '',
- 'output.attributeQuotes': 'double',
- 'output.format': true,
- 'output.formatLeafNode': false,
- 'output.formatSkip': ['html'],
- 'output.formatForce': ['body'],
- 'output.inlineBreak': 3,
- 'output.compactBoolean': false,
- 'output.booleanAttributes': [
- 'contenteditable', 'seamless', 'async', 'autofocus',
- 'autoplay', 'checked', 'controls', 'defer', 'disabled', 'formnovalidate',
- 'hidden', 'ismap', 'loop', 'multiple', 'muted', 'novalidate', 'readonly',
- 'required', 'reversed', 'selected', 'typemustmatch'
- ],
- 'output.reverseAttributes': false,
- 'output.selfClosingStyle': 'html',
- 'output.field': (index, placeholder) => placeholder,
- 'output.text': text => text,
- 'markup.href': true,
- 'comment.enabled': false,
- 'comment.trigger': ['id', 'class'],
- 'comment.before': '',
- 'comment.after': '\n',
- 'bem.enabled': false,
- 'bem.element': '__',
- 'bem.modifier': '_',
- 'jsx.enabled': false,
- 'stylesheet.keywords': ['auto', 'inherit', 'unset', 'none'],
- 'stylesheet.unitless': ['z-index', 'line-height', 'opacity', 'font-weight', 'zoom', 'flex', 'flex-grow', 'flex-shrink'],
- 'stylesheet.shortHex': true,
- 'stylesheet.between': ': ',
- 'stylesheet.after': ';',
- 'stylesheet.intUnit': 'px',
- 'stylesheet.floatUnit': 'em',
- 'stylesheet.unitAliases': { e: 'em', p: '%', x: 'ex', r: 'rem' },
- 'stylesheet.json': false,
- 'stylesheet.jsonDoubleQuotes': false,
- 'stylesheet.fuzzySearchMinScore': 0
-};
-const defaultConfig = {
- type: 'markup',
- syntax: 'html',
- variables,
- snippets: {},
- options: defaultOptions$1
-};
-/**
- * Default per-syntax config
- */
-const syntaxConfig = {
- markup: {
- snippets: parseSnippets(markupSnippets),
- },
- xhtml: {
- options: {
- 'output.selfClosingStyle': 'xhtml'
- }
- },
- xml: {
- options: {
- 'output.selfClosingStyle': 'xml'
- }
- },
- xsl: {
- snippets: parseSnippets(xslSnippets),
- options: {
- 'output.selfClosingStyle': 'xml'
- }
- },
- jsx: {
- options: {
- 'jsx.enabled': true,
- 'markup.attributes': {
- 'class': 'className',
- 'class*': 'styleName',
- 'for': 'htmlFor'
- },
- 'markup.valuePrefix': {
- 'class*': 'styles'
- }
- }
- },
- vue: {
- options: {
- 'markup.attributes': {
- 'class*': ':class',
- }
- }
- },
- svelte: {
- options: {
- 'jsx.enabled': true
- }
- },
- pug: {
- snippets: parseSnippets(pugSnippets)
- },
- stylesheet: {
- snippets: parseSnippets(stylesheetSnippets)
- },
- sass: {
- options: {
- 'stylesheet.after': ''
- }
- },
- stylus: {
- options: {
- 'stylesheet.between': ' ',
- 'stylesheet.after': '',
- }
- }
-};
-/**
- * Parses raw snippets definitions with possibly multiple keys into a plan
- * snippet map
- */
-function parseSnippets(snippets) {
- const result = {};
- Object.keys(snippets).forEach(k => {
- for (const name of k.split('|')) {
- result[name] = snippets[k];
- }
- });
- return result;
-}
-function resolveConfig(config = {}, globals = {}) {
- const type = config.type || 'markup';
- const syntax = config.syntax || defaultSyntaxes[type];
- return Object.assign(Object.assign(Object.assign({}, defaultConfig), config), { type,
- syntax, variables: mergedData(type, syntax, 'variables', config, globals), snippets: mergedData(type, syntax, 'snippets', config, globals), options: mergedData(type, syntax, 'options', config, globals) });
-}
-function mergedData(type, syntax, key, config, globals = {}) {
- const typeDefaults = syntaxConfig[type];
- const typeOverride = globals[type];
- const syntaxDefaults = syntaxConfig[syntax];
- const syntaxOverride = globals[syntax];
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaultConfig[key]), (typeDefaults && typeDefaults[key])), (syntaxDefaults && syntaxDefaults[key])), (typeOverride && typeOverride[key])), (syntaxOverride && syntaxOverride[key])), config[key]);
-}
-
-/**
- * Creates structure for scanning given string in backward direction
- */
-function backwardScanner(text, start = 0) {
- return { text, start, pos: text.length };
-}
-/**
- * Check if given scanner position is at start of scanned text
- */
-function sol(scanner) {
- return scanner.pos === scanner.start;
-}
-/**
- * “Peeks” character code an current scanner location without advancing it
- */
-function peek(scanner, offset = 0) {
- return scanner.text.charCodeAt(scanner.pos - 1 + offset);
-}
-/**
- * Returns current character code and moves character location one symbol back
- */
-function previous(scanner) {
- if (!sol(scanner)) {
- return scanner.text.charCodeAt(--scanner.pos);
- }
-}
-/**
- * Consumes current character code if it matches given `match` code or function
- */
-function consume(scanner, match) {
- if (sol(scanner)) {
- return false;
- }
- const ok = typeof match === 'function'
- ? match(peek(scanner))
- : match === peek(scanner);
- if (ok) {
- scanner.pos--;
- }
- return !!ok;
-}
-function consumeWhile(scanner, match) {
- const start = scanner.pos;
- while (consume(scanner, match)) {
- // empty
- }
- return scanner.pos < start;
-}
-
-var Chars$1;
-(function (Chars) {
- Chars[Chars["SingleQuote"] = 39] = "SingleQuote";
- Chars[Chars["DoubleQuote"] = 34] = "DoubleQuote";
- Chars[Chars["Escape"] = 92] = "Escape";
-})(Chars$1 || (Chars$1 = {}));
-/**
- * Check if given character code is a quote
- */
-function isQuote(c) {
- return c === Chars$1.SingleQuote || c === Chars$1.DoubleQuote;
-}
-/**
- * Consumes quoted value, if possible
- * @return Returns `true` is value was consumed
- */
-function consumeQuoted(scanner) {
- const start = scanner.pos;
- const quote = previous(scanner);
- if (isQuote(quote)) {
- while (!sol(scanner)) {
- if (previous(scanner) === quote && peek(scanner) !== Chars$1.Escape) {
- return true;
- }
- }
- }
- scanner.pos = start;
- return false;
-}
-
-var Brackets;
-(function (Brackets) {
- Brackets[Brackets["SquareL"] = 91] = "SquareL";
- Brackets[Brackets["SquareR"] = 93] = "SquareR";
- Brackets[Brackets["RoundL"] = 40] = "RoundL";
- Brackets[Brackets["RoundR"] = 41] = "RoundR";
- Brackets[Brackets["CurlyL"] = 123] = "CurlyL";
- Brackets[Brackets["CurlyR"] = 125] = "CurlyR";
-})(Brackets || (Brackets = {}));
-const bracePairs = {
- [Brackets.SquareL]: Brackets.SquareR,
- [Brackets.RoundL]: Brackets.RoundR,
- [Brackets.CurlyL]: Brackets.CurlyR,
-};
-
-var Chars;
-(function (Chars) {
- Chars[Chars["Tab"] = 9] = "Tab";
- Chars[Chars["Space"] = 32] = "Space";
- /** `-` character */
- Chars[Chars["Dash"] = 45] = "Dash";
- /** `/` character */
- Chars[Chars["Slash"] = 47] = "Slash";
- /** `:` character */
- Chars[Chars["Colon"] = 58] = "Colon";
- /** `=` character */
- Chars[Chars["Equals"] = 61] = "Equals";
- /** `<` character */
- Chars[Chars["AngleLeft"] = 60] = "AngleLeft";
- /** `>` character */
- Chars[Chars["AngleRight"] = 62] = "AngleRight";
-})(Chars || (Chars = {}));
-/**
- * Check if given reader’s current position points at the end of HTML tag
- */
-function isHtml(scanner) {
- const start = scanner.pos;
- if (!consume(scanner, Chars.AngleRight)) {
- return false;
- }
- let ok = false;
- consume(scanner, Chars.Slash); // possibly self-closed element
- while (!sol(scanner)) {
- consumeWhile(scanner, isWhiteSpace);
- if (consumeIdent(scanner)) {
- // ate identifier: could be a tag name, boolean attribute or unquoted
- // attribute value
- if (consume(scanner, Chars.Slash)) {
- // either closing tag or invalid tag
- ok = consume(scanner, Chars.AngleLeft);
- break;
- }
- else if (consume(scanner, Chars.AngleLeft)) {
- // opening tag
- ok = true;
- break;
- }
- else if (consume(scanner, isWhiteSpace)) {
- // boolean attribute
- continue;
- }
- else if (consume(scanner, Chars.Equals)) {
- // simple unquoted value or invalid attribute
- if (consumeIdent(scanner)) {
- continue;
- }
- break;
- }
- else if (consumeAttributeWithUnquotedValue(scanner)) {
- // identifier was a part of unquoted value
- ok = true;
- break;
- }
- // invalid tag
- break;
- }
- if (consumeAttribute(scanner)) {
- continue;
- }
- break;
- }
- scanner.pos = start;
- return ok;
-}
-/**
- * Consumes HTML attribute from given string.
- * @return `true` if attribute was consumed.
- */
-function consumeAttribute(scanner) {
- return consumeAttributeWithQuotedValue(scanner) || consumeAttributeWithUnquotedValue(scanner);
-}
-function consumeAttributeWithQuotedValue(scanner) {
- const start = scanner.pos;
- if (consumeQuoted(scanner) && consume(scanner, Chars.Equals) && consumeIdent(scanner)) {
- return true;
- }
- scanner.pos = start;
- return false;
-}
-function consumeAttributeWithUnquotedValue(scanner) {
- const start = scanner.pos;
- const stack = [];
- while (!sol(scanner)) {
- const ch = peek(scanner);
- if (isCloseBracket(ch)) {
- stack.push(ch);
- }
- else if (isOpenBracket(ch)) {
- if (stack.pop() !== bracePairs[ch]) {
- // Unexpected open bracket
- break;
- }
- }
- else if (!isUnquotedValue(ch)) {
- break;
- }
- scanner.pos--;
- }
- if (start !== scanner.pos && consume(scanner, Chars.Equals) && consumeIdent(scanner)) {
- return true;
- }
- scanner.pos = start;
- return false;
-}
-/**
- * Consumes HTML identifier from stream
- */
-function consumeIdent(scanner) {
- return consumeWhile(scanner, isIdent);
-}
-/**
- * Check if given character code belongs to HTML identifier
- */
-function isIdent(ch) {
- return ch === Chars.Colon || ch === Chars.Dash || isAlpha(ch) || isNumber(ch);
-}
-/**
- * Check if given character code is alpha code (letter though A to Z)
- */
-function isAlpha(ch) {
- ch &= ~32; // quick hack to convert any char code to uppercase char code
- return ch >= 65 && ch <= 90; // A-Z
-}
-/**
- * Check if given code is a number
- */
-function isNumber(ch) {
- return ch > 47 && ch < 58;
-}
-/**
- * Check if given code is a whitespace
- */
-function isWhiteSpace(ch) {
- return ch === Chars.Space || ch === Chars.Tab;
-}
-/**
- * Check if given code may belong to unquoted attribute value
- */
-function isUnquotedValue(ch) {
- return !isNaN(ch) && ch !== Chars.Equals && !isWhiteSpace(ch) && !isQuote(ch);
-}
-function isOpenBracket(ch) {
- return ch === Brackets.CurlyL || ch === Brackets.RoundL || ch === Brackets.SquareL;
-}
-function isCloseBracket(ch) {
- return ch === Brackets.CurlyR || ch === Brackets.RoundR || ch === Brackets.SquareR;
-}
-
-const code = (ch) => ch.charCodeAt(0);
-const specialChars = '#.*:$-_!@%^+>/'.split('').map(code);
-const defaultOptions = {
- type: 'markup',
- lookAhead: true,
- prefix: ''
-};
-/**
- * Extracts Emmet abbreviation from given string.
- * The goal of this module is to extract abbreviation from current editor’s line,
- * e.g. like this: `.foo[title=bar|]` -> `.foo[title=bar]`, where
- * `|` is a current caret position.
- * @param line A text line where abbreviation should be expanded
- * @param pos Caret position in line. If not given, uses end of line
- * @param options Extracting options
- */
-function extractAbbreviation(line, pos = line.length, options = {}) {
- // make sure `pos` is within line range
- const opt = Object.assign(Object.assign({}, defaultOptions), options);
- pos = Math.min(line.length, Math.max(0, pos == null ? line.length : pos));
- if (opt.lookAhead) {
- pos = offsetPastAutoClosed(line, pos, opt);
- }
- let ch;
- const start = getStartOffset(line, pos, opt.prefix || '');
- if (start === -1) {
- return void 0;
- }
- const scanner = backwardScanner(line, start);
- scanner.pos = pos;
- const stack = [];
- while (!sol(scanner)) {
- ch = peek(scanner);
- if (stack.includes(Brackets.CurlyR)) {
- if (ch === Brackets.CurlyR) {
- stack.push(ch);
- scanner.pos--;
- continue;
- }
- if (ch !== Brackets.CurlyL) {
- scanner.pos--;
- continue;
- }
- }
- if (isCloseBrace(ch, opt.type)) {
- stack.push(ch);
- }
- else if (isOpenBrace(ch, opt.type)) {
- if (stack.pop() !== bracePairs[ch]) {
- // unexpected brace
- break;
- }
- }
- else if (stack.includes(Brackets.SquareR) || stack.includes(Brackets.CurlyR)) {
- // respect all characters inside attribute sets or text nodes
- scanner.pos--;
- continue;
- }
- else if (isHtml(scanner) || !isAbbreviation(ch)) {
- break;
- }
- scanner.pos--;
- }
- if (!stack.length && scanner.pos !== pos) {
- // Found something, remove some invalid symbols from the
- // beginning and return abbreviation
- const abbreviation = line.slice(scanner.pos, pos).replace(/^[*+>^]+/, '');
- return {
- abbreviation,
- location: pos - abbreviation.length,
- start: options.prefix
- ? start - options.prefix.length
- : pos - abbreviation.length,
- end: pos
- };
- }
-}
-/**
- * Returns new `line` index which is right after characters beyound `pos` that
- * editor will likely automatically close, e.g. }, ], and quotes
- */
-function offsetPastAutoClosed(line, pos, options) {
- // closing quote is allowed only as a next character
- if (isQuote(line.charCodeAt(pos))) {
- pos++;
- }
- // offset pointer until non-autoclosed character is found
- while (isCloseBrace(line.charCodeAt(pos), options.type)) {
- pos++;
- }
- return pos;
-}
-/**
- * Returns start offset (left limit) in `line` where we should stop looking for
- * abbreviation: it’s nearest to `pos` location of `prefix` token
- */
-function getStartOffset(line, pos, prefix) {
- if (!prefix) {
- return 0;
- }
- const scanner = backwardScanner(line);
- const compiledPrefix = prefix.split('').map(code);
- scanner.pos = pos;
- let result;
- while (!sol(scanner)) {
- if (consumePair(scanner, Brackets.SquareR, Brackets.SquareL) || consumePair(scanner, Brackets.CurlyR, Brackets.CurlyL)) {
- continue;
- }
- result = scanner.pos;
- if (consumeArray(scanner, compiledPrefix)) {
- return result;
- }
- scanner.pos--;
- }
- return -1;
-}
-/**
- * Consumes full character pair, if possible
- */
-function consumePair(scanner, close, open) {
- const start = scanner.pos;
- if (consume(scanner, close)) {
- while (!sol(scanner)) {
- if (consume(scanner, open)) {
- return true;
- }
- scanner.pos--;
- }
- }
- scanner.pos = start;
- return false;
-}
-/**
- * Consumes all character codes from given array, right-to-left, if possible
- */
-function consumeArray(scanner, arr) {
- const start = scanner.pos;
- let consumed = false;
- for (let i = arr.length - 1; i >= 0 && !sol(scanner); i--) {
- if (!consume(scanner, arr[i])) {
- break;
- }
- consumed = i === 0;
- }
- if (!consumed) {
- scanner.pos = start;
- }
- return consumed;
-}
-function isAbbreviation(ch) {
- return (ch > 64 && ch < 91) // uppercase letter
- || (ch > 96 && ch < 123) // lowercase letter
- || (ch > 47 && ch < 58) // number
- || specialChars.includes(ch); // special character
-}
-function isOpenBrace(ch, syntax) {
- return ch === Brackets.RoundL || (syntax === 'markup' && (ch === Brackets.SquareL || ch === Brackets.CurlyL));
-}
-function isCloseBrace(ch, syntax) {
- return ch === Brackets.RoundR || (syntax === 'markup' && (ch === Brackets.SquareR || ch === Brackets.CurlyR));
-}
-
-function expandAbbreviation(abbr, config) {
- const resolvedConfig = resolveConfig(config);
- return resolvedConfig.type === 'stylesheet'
- ? stylesheet(abbr, resolvedConfig)
- : markup(abbr, resolvedConfig);
-}
-/**
- * Expands given *markup* abbreviation (e.g. regular Emmet abbreviation that
- * produces structured output like HTML) and outputs it according to options
- * provided in config
- */
-function markup(abbr, config) {
- return stringify(parse$1(abbr, config), config);
-}
-/**
- * Expands given *stylesheet* abbreviation (a special Emmet abbreviation designed for
- * stylesheet languages like CSS, SASS etc.) and outputs it according to options
- * provided in config
- */
-function stylesheet(abbr, config) {
- return css(parse(abbr, config), config);
-}
-
-export { CSSAbbreviationScope, expandAbbreviation as default, extractAbbreviation as extract, markup, parseAbbreviation as markupAbbreviation, parse$1 as parseMarkup, parse as parseStylesheet, convertSnippets as parseStylesheetSnippets, resolveConfig, stringify as stringifyMarkup, css as stringifyStylesheet, stylesheet, parse$2 as stylesheetAbbreviation };
-//# sourceMappingURL=emmet.es.js.map
diff --git a/node_modules/emmet/dist/emmet.es.js.map b/node_modules/emmet/dist/emmet.es.js.map
deleted file mode 100644
index 30040fc..0000000
--- a/node_modules/emmet/dist/emmet.es.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"emmet.es.js","sources":["../packages/scanner/scanner.js","../packages/abbreviation/dist/index.js","../packages/css-abbreviation/dist/index.js","../src/markup/attributes.ts","../src/markup/utils.ts","../src/markup/snippets.ts","../src/output-stream.ts","../src/markup/implicit-tag.ts","../src/markup/lorem/latin.json","../src/markup/lorem/russian.json","../src/markup/lorem/spanish.json","../src/markup/lorem/index.ts","../src/markup/addon/xsl.ts","../src/markup/addon/bem.ts","../src/markup/format/walk.ts","../src/markup/format/utils.ts","../src/markup/format/template.ts","../src/markup/format/comment.ts","../src/markup/format/html.ts","../src/markup/format/indent-format.ts","../src/markup/format/haml.ts","../src/markup/format/slim.ts","../src/markup/format/pug.ts","../src/markup/index.ts","../src/stylesheet/snippets.ts","../src/stylesheet/score.ts","../src/stylesheet/color.ts","../src/stylesheet/format.ts","../src/stylesheet/index.ts","../src/snippets/html.json","../src/snippets/css.json","../src/snippets/xsl.json","../src/snippets/pug.json","../src/snippets/variables.json","../src/config.ts","../src/extract-abbreviation/reader.ts","../src/extract-abbreviation/quotes.ts","../src/extract-abbreviation/brackets.ts","../src/extract-abbreviation/is-html.ts","../src/extract-abbreviation/index.ts","../src/index.ts"],"sourcesContent":["const defaultQuotedOptions = {\n escape: 92,\n throws: false\n};\n/**\n * Check if given code is a number\n */\nfunction isNumber(code) {\n return code > 47 && code < 58;\n}\n/**\n * Check if given character code is alpha code (letter through A to Z)\n */\nfunction isAlpha(code, from, to) {\n from = from || 65; // A\n to = to || 90; // Z\n code &= ~32; // quick hack to convert any char code to uppercase char code\n return code >= from && code <= to;\n}\n/**\n * Check if given character code is alpha-numeric (letter through A to Z or number)\n */\nfunction isAlphaNumeric(code) {\n return isNumber(code) || isAlpha(code);\n}\nfunction isAlphaNumericWord(code) {\n return isNumber(code) || isAlphaWord(code);\n}\nfunction isAlphaWord(code) {\n return code === 95 /* _ */ || isAlpha(code);\n}\n/**\n * Check for Umlauts i.e. ä, Ä, ö, Ö, ü and Ü\n */\nfunction isUmlaut(code) {\n return code === 196\n || code == 214\n || code === 220\n || code === 228\n || code === 246\n || code === 252;\n}\n/**\n * Check if given character code is a white-space character: a space character\n * or line breaks\n */\nfunction isWhiteSpace(code) {\n return code === 32 /* space */\n || code === 9 /* tab */\n || code === 160; /* non-breaking space */\n}\n/**\n * Check if given character code is a space character\n */\nfunction isSpace(code) {\n return isWhiteSpace(code)\n || code === 10 /* LF */\n || code === 13; /* CR */\n}\n/**\n * Consumes 'single' or \"double\"-quoted string from given string, if possible\n * @return `true` if quoted string was consumed. The contents of quoted string\n * will be available as `stream.current()`\n */\nfunction eatQuoted(stream, options) {\n options = Object.assign(Object.assign({}, defaultQuotedOptions), options);\n const start = stream.pos;\n const quote = stream.peek();\n if (stream.eat(isQuote)) {\n while (!stream.eof()) {\n switch (stream.next()) {\n case quote:\n stream.start = start;\n return true;\n case options.escape:\n stream.next();\n break;\n }\n }\n // If we’re here then stream wasn’t properly consumed.\n // Revert stream and decide what to do\n stream.pos = start;\n if (options.throws) {\n throw stream.error('Unable to consume quoted string');\n }\n }\n return false;\n}\n/**\n * Check if given character code is a quote character\n */\nfunction isQuote(code) {\n return code === 39 /* ' */ || code === 34 /* \" */;\n}\n/**\n * Eats paired characters substring, for example `(foo)` or `[bar]`\n * @param open Character code of pair opening\n * @param close Character code of pair closing\n * @return Returns `true` if character pair was successfully consumed, it’s\n * content will be available as `stream.current()`\n */\nfunction eatPair(stream, open, close, options) {\n options = Object.assign(Object.assign({}, defaultQuotedOptions), options);\n const start = stream.pos;\n if (stream.eat(open)) {\n let stack = 1;\n let ch;\n while (!stream.eof()) {\n if (eatQuoted(stream, options)) {\n continue;\n }\n ch = stream.next();\n if (ch === open) {\n stack++;\n }\n else if (ch === close) {\n stack--;\n if (!stack) {\n stream.start = start;\n return true;\n }\n }\n else if (ch === options.escape) {\n stream.next();\n }\n }\n // If we’re here then paired character can’t be consumed\n stream.pos = start;\n if (options.throws) {\n throw stream.error(`Unable to find matching pair for ${String.fromCharCode(open)}`);\n }\n }\n return false;\n}\n\n/**\n * A streaming, character code-based string reader\n */\nclass Scanner {\n constructor(str, start, end) {\n if (end == null && typeof str === 'string') {\n end = str.length;\n }\n this.string = str;\n this.pos = this.start = start || 0;\n this.end = end || 0;\n }\n /**\n * Returns true only if the stream is at the end of the file.\n */\n eof() {\n return this.pos >= this.end;\n }\n /**\n * Creates a new stream instance which is limited to given `start` and `end`\n * range. E.g. its `eof()` method will look at `end` property, not actual\n * stream end\n */\n limit(start, end) {\n return new Scanner(this.string, start, end);\n }\n /**\n * Returns the next character code in the stream without advancing it.\n * Will return NaN at the end of the file.\n */\n peek() {\n return this.string.charCodeAt(this.pos);\n }\n /**\n * Returns the next character in the stream and advances it.\n * Also returns undefined
when no more characters are available.\n */\n next() {\n if (this.pos < this.string.length) {\n return this.string.charCodeAt(this.pos++);\n }\n }\n /**\n * `match` can be a character code or a function that takes a character code\n * and returns a boolean. If the next character in the stream 'matches'\n * the given argument, it is consumed and returned.\n * Otherwise, `false` is returned.\n */\n eat(match) {\n const ch = this.peek();\n const ok = typeof match === 'function' ? match(ch) : ch === match;\n if (ok) {\n this.next();\n }\n return ok;\n }\n /**\n * Repeatedly calls eat
with the given argument, until it\n * fails. Returns true
if any characters were eaten.\n */\n eatWhile(match) {\n const start = this.pos;\n while (!this.eof() && this.eat(match)) { /* */ }\n return this.pos !== start;\n }\n /**\n * Backs up the stream n characters. Backing it up further than the\n * start of the current token will cause things to break, so be careful.\n */\n backUp(n) {\n this.pos -= (n || 1);\n }\n /**\n * Get the string between the start of the current token and the\n * current stream position.\n */\n current() {\n return this.substring(this.start, this.pos);\n }\n /**\n * Returns substring for given range\n */\n substring(start, end) {\n return this.string.slice(start, end);\n }\n /**\n * Creates error object with current stream state\n */\n error(message, pos = this.pos) {\n return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);\n }\n}\nclass ScannerError extends Error {\n constructor(message, pos, str) {\n super(message);\n this.pos = pos;\n this.string = str;\n }\n}\n\nexport { ScannerError, Scanner as default, eatPair, eatQuoted, isAlpha, isAlphaNumeric, isAlphaNumericWord, isAlphaWord, isNumber, isQuote, isSpace, isUmlaut, isWhiteSpace };\n//# sourceMappingURL=scanner.js.map\n","import Scanner, { isNumber, isQuote as isQuote$1, isSpace, isAlpha, isAlphaNumericWord, isUmlaut, ScannerError } from '@emmetio/scanner';\n\nfunction tokenScanner(tokens) {\n return {\n tokens,\n start: 0,\n pos: 0,\n size: tokens.length\n };\n}\nfunction peek(scanner) {\n return scanner.tokens[scanner.pos];\n}\nfunction next(scanner) {\n return scanner.tokens[scanner.pos++];\n}\nfunction slice(scanner, from = scanner.start, to = scanner.pos) {\n return scanner.tokens.slice(from, to);\n}\nfunction readable(scanner) {\n return scanner.pos < scanner.size;\n}\nfunction consume(scanner, test) {\n const token = peek(scanner);\n if (token && test(token)) {\n scanner.pos++;\n return true;\n }\n return false;\n}\nfunction error(scanner, message, token = peek(scanner)) {\n if (token && token.start != null) {\n message += ` at ${token.start}`;\n }\n const err = new Error(message);\n err['pos'] = token && token.start;\n return err;\n}\n\nfunction abbreviation(abbr, options = {}) {\n const scanner = tokenScanner(abbr);\n const result = statements(scanner, options);\n if (readable(scanner)) {\n throw error(scanner, 'Unexpected character');\n }\n return result;\n}\nfunction statements(scanner, options) {\n const result = {\n type: 'TokenGroup',\n elements: []\n };\n let ctx = result;\n let node;\n const stack = [];\n while (readable(scanner)) {\n if (node = element(scanner, options) || group(scanner, options)) {\n ctx.elements.push(node);\n if (consume(scanner, isChildOperator)) {\n stack.push(ctx);\n ctx = node;\n }\n else if (consume(scanner, isSiblingOperator)) {\n continue;\n }\n else if (consume(scanner, isClimbOperator)) {\n do {\n if (stack.length) {\n ctx = stack.pop();\n }\n } while (consume(scanner, isClimbOperator));\n }\n }\n else {\n break;\n }\n }\n return result;\n}\n/**\n * Consumes group from given scanner\n */\nfunction group(scanner, options) {\n if (consume(scanner, isGroupStart)) {\n const result = statements(scanner, options);\n const token = next(scanner);\n if (isBracket(token, 'group', false)) {\n result.repeat = repeater$1(scanner);\n }\n return result;\n }\n}\n/**\n * Consumes single element from given scanner\n */\nfunction element(scanner, options) {\n let attr;\n const elem = {\n type: 'TokenElement',\n name: void 0,\n attributes: void 0,\n value: void 0,\n repeat: void 0,\n selfClose: false,\n elements: []\n };\n if (elementName(scanner, options)) {\n elem.name = slice(scanner);\n }\n while (readable(scanner)) {\n scanner.start = scanner.pos;\n if (!elem.repeat && !isEmpty(elem) && consume(scanner, isRepeater)) {\n elem.repeat = scanner.tokens[scanner.pos - 1];\n }\n else if (!elem.value && text(scanner)) {\n elem.value = getText(scanner);\n }\n else if (attr = shortAttribute(scanner, 'id', options) || shortAttribute(scanner, 'class', options) || attributeSet(scanner)) {\n if (!elem.attributes) {\n elem.attributes = Array.isArray(attr) ? attr.slice() : [attr];\n }\n else {\n elem.attributes = elem.attributes.concat(attr);\n }\n }\n else {\n if (!isEmpty(elem) && consume(scanner, isCloseOperator)) {\n elem.selfClose = true;\n if (!elem.repeat && consume(scanner, isRepeater)) {\n elem.repeat = scanner.tokens[scanner.pos - 1];\n }\n }\n break;\n }\n }\n return !isEmpty(elem) ? elem : void 0;\n}\n/**\n * Consumes attribute set from given scanner\n */\nfunction attributeSet(scanner) {\n if (consume(scanner, isAttributeSetStart)) {\n const attributes = [];\n let attr;\n while (readable(scanner)) {\n if (attr = attribute(scanner)) {\n attributes.push(attr);\n }\n else if (consume(scanner, isAttributeSetEnd)) {\n break;\n }\n else if (!consume(scanner, isWhiteSpace)) {\n throw error(scanner, `Unexpected \"${peek(scanner).type}\" token`);\n }\n }\n return attributes;\n }\n}\n/**\n * Consumes attribute shorthand (class or id) from given scanner\n */\nfunction shortAttribute(scanner, type, options) {\n if (isOperator(peek(scanner), type)) {\n scanner.pos++;\n // Consume multiple operators\n let count = 1;\n while (isOperator(peek(scanner), type)) {\n scanner.pos++;\n count++;\n }\n const attr = {\n name: [createLiteral(type)]\n };\n if (count > 1) {\n attr.multiple = true;\n }\n // Consume expression after shorthand start for React-like components\n if (options.jsx && text(scanner)) {\n attr.value = getText(scanner);\n attr.expression = true;\n }\n else {\n attr.value = literal$1(scanner) ? slice(scanner) : void 0;\n }\n return attr;\n }\n}\n/**\n * Consumes single attribute from given scanner\n */\nfunction attribute(scanner) {\n if (quoted(scanner)) {\n // Consumed quoted value: it’s a value for default attribute\n return {\n value: slice(scanner)\n };\n }\n if (literal$1(scanner, true)) {\n const name = slice(scanner);\n let value;\n if (consume(scanner, isEquals)) {\n if (quoted(scanner) || literal$1(scanner, true)) {\n value = slice(scanner);\n }\n }\n return { name, value };\n }\n}\nfunction repeater$1(scanner) {\n return isRepeater(peek(scanner))\n ? scanner.tokens[scanner.pos++]\n : void 0;\n}\n/**\n * Consumes quoted value from given scanner, if possible\n */\nfunction quoted(scanner) {\n const start = scanner.pos;\n const quote = peek(scanner);\n if (isQuote(quote)) {\n scanner.pos++;\n while (readable(scanner)) {\n if (isQuote(next(scanner), quote.single)) {\n scanner.start = start;\n return true;\n }\n }\n throw error(scanner, 'Unclosed quote', quote);\n }\n return false;\n}\n/**\n * Consumes literal (unquoted value) from given scanner\n */\nfunction literal$1(scanner, allowBrackets) {\n const start = scanner.pos;\n const brackets = {\n attribute: 0,\n expression: 0,\n group: 0\n };\n while (readable(scanner)) {\n const token = peek(scanner);\n if (brackets.expression) {\n // If we’re inside expression, we should consume all content in it\n if (isBracket(token, 'expression')) {\n brackets[token.context] += token.open ? 1 : -1;\n }\n }\n else if (isQuote(token) || isOperator(token) || isWhiteSpace(token) || isRepeater(token)) {\n break;\n }\n else if (isBracket(token)) {\n if (!allowBrackets) {\n break;\n }\n if (token.open) {\n brackets[token.context]++;\n }\n else if (!brackets[token.context]) {\n // Stop if found unmatched closing brace: it must be handled\n // by parent consumer\n break;\n }\n else {\n brackets[token.context]--;\n }\n }\n scanner.pos++;\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return true;\n }\n return false;\n}\n/**\n * Consumes element name from given scanner\n */\nfunction elementName(scanner, options) {\n const start = scanner.pos;\n if (options.jsx && consume(scanner, isCapitalizedLiteral)) {\n // Check for edge case: consume immediate capitalized class names\n // for React-like components, e.g. `Foo.Bar.Baz`\n while (readable(scanner)) {\n const { pos } = scanner;\n if (!consume(scanner, isClassNameOperator) || !consume(scanner, isCapitalizedLiteral)) {\n scanner.pos = pos;\n break;\n }\n }\n }\n while (readable(scanner) && consume(scanner, isElementName$1)) {\n // empty\n }\n if (scanner.pos !== start) {\n scanner.start = start;\n return true;\n }\n return false;\n}\n/**\n * Consumes text value from given scanner\n */\nfunction text(scanner) {\n const start = scanner.pos;\n if (consume(scanner, isTextStart)) {\n let brackets = 0;\n while (readable(scanner)) {\n const token = next(scanner);\n if (isBracket(token, 'expression')) {\n if (token.open) {\n brackets++;\n }\n else if (!brackets) {\n break;\n }\n else {\n brackets--;\n }\n }\n }\n scanner.start = start;\n return true;\n }\n return false;\n}\nfunction getText(scanner) {\n let from = scanner.start;\n let to = scanner.pos;\n if (isBracket(scanner.tokens[from], 'expression', true)) {\n from++;\n }\n if (isBracket(scanner.tokens[to - 1], 'expression', false)) {\n to--;\n }\n return slice(scanner, from, to);\n}\nfunction isBracket(token, context, isOpen) {\n return Boolean(token && token.type === 'Bracket'\n && (!context || token.context === context)\n && (isOpen == null || token.open === isOpen));\n}\nfunction isOperator(token, type) {\n return Boolean(token && token.type === 'Operator' && (!type || token.operator === type));\n}\nfunction isQuote(token, isSingle) {\n return Boolean(token && token.type === 'Quote' && (isSingle == null || token.single === isSingle));\n}\nfunction isWhiteSpace(token) {\n return Boolean(token && token.type === 'WhiteSpace');\n}\nfunction isEquals(token) {\n return isOperator(token, 'equal');\n}\nfunction isRepeater(token) {\n return Boolean(token && token.type === 'Repeater');\n}\nfunction isLiteral(token) {\n return token.type === 'Literal';\n}\nfunction isCapitalizedLiteral(token) {\n if (isLiteral(token)) {\n const ch = token.value.charCodeAt(0);\n return ch >= 65 && ch <= 90;\n }\n return false;\n}\nfunction isElementName$1(token) {\n return token.type === 'Literal' || token.type === 'RepeaterNumber' || token.type === 'RepeaterPlaceholder';\n}\nfunction isClassNameOperator(token) {\n return isOperator(token, 'class');\n}\nfunction isAttributeSetStart(token) {\n return isBracket(token, 'attribute', true);\n}\nfunction isAttributeSetEnd(token) {\n return isBracket(token, 'attribute', false);\n}\nfunction isTextStart(token) {\n return isBracket(token, 'expression', true);\n}\nfunction isGroupStart(token) {\n return isBracket(token, 'group', true);\n}\nfunction createLiteral(value) {\n return { type: 'Literal', value };\n}\nfunction isEmpty(elem) {\n return !elem.name && !elem.value && !elem.attributes;\n}\nfunction isChildOperator(token) {\n return isOperator(token, 'child');\n}\nfunction isSiblingOperator(token) {\n return isOperator(token, 'sibling');\n}\nfunction isClimbOperator(token) {\n return isOperator(token, 'climb');\n}\nfunction isCloseOperator(token) {\n return isOperator(token, 'close');\n}\n\nvar Chars;\n(function (Chars) {\n /** `{` character */\n Chars[Chars[\"CurlyBracketOpen\"] = 123] = \"CurlyBracketOpen\";\n /** `}` character */\n Chars[Chars[\"CurlyBracketClose\"] = 125] = \"CurlyBracketClose\";\n /** `\\\\` character */\n Chars[Chars[\"Escape\"] = 92] = \"Escape\";\n /** `=` character */\n Chars[Chars[\"Equals\"] = 61] = \"Equals\";\n /** `[` character */\n Chars[Chars[\"SquareBracketOpen\"] = 91] = \"SquareBracketOpen\";\n /** `]` character */\n Chars[Chars[\"SquareBracketClose\"] = 93] = \"SquareBracketClose\";\n /** `*` character */\n Chars[Chars[\"Asterisk\"] = 42] = \"Asterisk\";\n /** `#` character */\n Chars[Chars[\"Hash\"] = 35] = \"Hash\";\n /** `$` character */\n Chars[Chars[\"Dollar\"] = 36] = \"Dollar\";\n /** `-` character */\n Chars[Chars[\"Dash\"] = 45] = \"Dash\";\n /** `.` character */\n Chars[Chars[\"Dot\"] = 46] = \"Dot\";\n /** `/` character */\n Chars[Chars[\"Slash\"] = 47] = \"Slash\";\n /** `:` character */\n Chars[Chars[\"Colon\"] = 58] = \"Colon\";\n /** `!` character */\n Chars[Chars[\"Excl\"] = 33] = \"Excl\";\n /** `@` character */\n Chars[Chars[\"At\"] = 64] = \"At\";\n /** `_` character */\n Chars[Chars[\"Underscore\"] = 95] = \"Underscore\";\n /** `(` character */\n Chars[Chars[\"RoundBracketOpen\"] = 40] = \"RoundBracketOpen\";\n /** `)` character */\n Chars[Chars[\"RoundBracketClose\"] = 41] = \"RoundBracketClose\";\n /** `+` character */\n Chars[Chars[\"Sibling\"] = 43] = \"Sibling\";\n /** `>` character */\n Chars[Chars[\"Child\"] = 62] = \"Child\";\n /** `^` character */\n Chars[Chars[\"Climb\"] = 94] = \"Climb\";\n /** `'` character */\n Chars[Chars[\"SingleQuote\"] = 39] = \"SingleQuote\";\n /** `\"\"` character */\n Chars[Chars[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n})(Chars || (Chars = {}));\n/**\n * If consumes escape character, sets current stream range to escaped value\n */\nfunction escaped(scanner) {\n if (scanner.eat(Chars.Escape)) {\n scanner.start = scanner.pos;\n if (!scanner.eof()) {\n scanner.pos++;\n }\n return true;\n }\n return false;\n}\n\nfunction tokenize(source) {\n const scanner = new Scanner(source);\n const result = [];\n const ctx = {\n group: 0,\n attribute: 0,\n expression: 0,\n quote: 0\n };\n let ch = 0;\n let token;\n while (!scanner.eof()) {\n ch = scanner.peek();\n token = getToken(scanner, ctx);\n if (token) {\n result.push(token);\n if (token.type === 'Quote') {\n ctx.quote = ch === ctx.quote ? 0 : ch;\n }\n else if (token.type === 'Bracket') {\n ctx[token.context] += token.open ? 1 : -1;\n }\n }\n else {\n throw scanner.error('Unexpected character');\n }\n }\n return result;\n}\n/**\n * Returns next token from given scanner, if possible\n */\nfunction getToken(scanner, ctx) {\n return field(scanner, ctx)\n || repeaterPlaceholder(scanner)\n || repeaterNumber(scanner)\n || repeater(scanner)\n || whiteSpace(scanner)\n || literal(scanner, ctx)\n || operator(scanner)\n || quote(scanner)\n || bracket(scanner);\n}\n/**\n * Consumes literal from given scanner\n */\nfunction literal(scanner, ctx) {\n const start = scanner.pos;\n const expressionStart = ctx.expression;\n let value = '';\n while (!scanner.eof()) {\n // Consume escaped sequence no matter of context\n if (escaped(scanner)) {\n value += scanner.current();\n continue;\n }\n const ch = scanner.peek();\n if (ch === Chars.Slash && !ctx.quote && !ctx.expression && !ctx.attribute) {\n // Special case for `/` character between numbers in class names\n const prev = scanner.string.charCodeAt(scanner.pos - 1);\n const next = scanner.string.charCodeAt(scanner.pos + 1);\n if (isNumber(prev) && isNumber(next)) {\n value += scanner.string[scanner.pos++];\n continue;\n }\n }\n if (ch === ctx.quote || ch === Chars.Dollar || isAllowedOperator(ch, ctx)) {\n // 1. Found matching quote\n // 2. The `$` character has special meaning in every context\n // 3. Depending on context, some characters should be treated as operators\n break;\n }\n if (expressionStart) {\n // Consume nested expressions, e.g. span{{foo}}\n if (ch === Chars.CurlyBracketOpen) {\n ctx.expression++;\n }\n else if (ch === Chars.CurlyBracketClose) {\n if (ctx.expression > expressionStart) {\n ctx.expression--;\n }\n else {\n break;\n }\n }\n }\n else if (!ctx.quote) {\n // Consuming element name\n if (!ctx.attribute && !isElementName(ch)) {\n break;\n }\n if (isAllowedSpace(ch, ctx) || isAllowedRepeater(ch, ctx) || isQuote$1(ch) || bracketType(ch)) {\n // Stop for characters not allowed in unquoted literal\n break;\n }\n }\n value += scanner.string[scanner.pos++];\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return {\n type: 'Literal',\n value,\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes white space characters as string literal from given scanner\n */\nfunction whiteSpace(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(isSpace)) {\n return {\n type: 'WhiteSpace',\n start,\n end: scanner.pos,\n value: scanner.substring(start, scanner.pos)\n };\n }\n}\n/**\n * Consumes quote from given scanner\n */\nfunction quote(scanner) {\n const ch = scanner.peek();\n if (isQuote$1(ch)) {\n return {\n type: 'Quote',\n single: ch === Chars.SingleQuote,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes bracket from given scanner\n */\nfunction bracket(scanner) {\n const ch = scanner.peek();\n const context = bracketType(ch);\n if (context) {\n return {\n type: 'Bracket',\n open: isOpenBracket(ch),\n context,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes operator from given scanner\n */\nfunction operator(scanner) {\n const op = operatorType(scanner.peek());\n if (op) {\n return {\n type: 'Operator',\n operator: op,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes node repeat token from current stream position and returns its\n * parsed value\n */\nfunction repeater(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Asterisk)) {\n scanner.start = scanner.pos;\n let count = 1;\n let implicit = false;\n if (scanner.eatWhile(isNumber)) {\n count = Number(scanner.current());\n }\n else {\n implicit = true;\n }\n return {\n type: 'Repeater',\n count,\n value: 0,\n implicit,\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes repeater placeholder `$#` from given scanner\n */\nfunction repeaterPlaceholder(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dollar) && scanner.eat(Chars.Hash)) {\n return {\n type: 'RepeaterPlaceholder',\n value: void 0,\n start,\n end: scanner.pos\n };\n }\n scanner.pos = start;\n}\n/**\n * Consumes numbering token like `$` from given scanner state\n */\nfunction repeaterNumber(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(Chars.Dollar)) {\n const size = scanner.pos - start;\n let reverse = false;\n let base = 1;\n let parent = 0;\n if (scanner.eat(Chars.At)) {\n // Consume numbering modifiers\n while (scanner.eat(Chars.Climb)) {\n parent++;\n }\n reverse = scanner.eat(Chars.Dash);\n scanner.start = scanner.pos;\n if (scanner.eatWhile(isNumber)) {\n base = Number(scanner.current());\n }\n }\n scanner.start = start;\n return {\n type: 'RepeaterNumber',\n size,\n reverse,\n base,\n parent,\n start,\n end: scanner.pos\n };\n }\n}\nfunction field(scanner, ctx) {\n const start = scanner.pos;\n // Fields are allowed inside expressions and attributes\n if ((ctx.expression || ctx.attribute) && scanner.eat(Chars.Dollar) && scanner.eat(Chars.CurlyBracketOpen)) {\n scanner.start = scanner.pos;\n let index;\n let name = '';\n if (scanner.eatWhile(isNumber)) {\n // It’s a field\n index = Number(scanner.current());\n name = scanner.eat(Chars.Colon) ? consumePlaceholder(scanner) : '';\n }\n else if (isAlpha(scanner.peek())) {\n // It’s a variable\n name = consumePlaceholder(scanner);\n }\n if (scanner.eat(Chars.CurlyBracketClose)) {\n return {\n type: 'Field',\n index, name,\n start,\n end: scanner.pos\n };\n }\n throw scanner.error('Expecting }');\n }\n // If we reached here then there’s no valid field here, revert\n // back to starting position\n scanner.pos = start;\n}\n/**\n * Consumes a placeholder: value right after `:` in field. Could be empty\n */\nfunction consumePlaceholder(stream) {\n const stack = [];\n stream.start = stream.pos;\n while (!stream.eof()) {\n if (stream.eat(Chars.CurlyBracketOpen)) {\n stack.push(stream.pos);\n }\n else if (stream.eat(Chars.CurlyBracketClose)) {\n if (!stack.length) {\n stream.pos--;\n break;\n }\n stack.pop();\n }\n else {\n stream.pos++;\n }\n }\n if (stack.length) {\n stream.pos = stack.pop();\n throw stream.error(`Expecting }`);\n }\n return stream.current();\n}\n/**\n * Check if given character code is an operator and it’s allowed in current context\n */\nfunction isAllowedOperator(ch, ctx) {\n const op = operatorType(ch);\n if (!op || ctx.quote || ctx.expression) {\n // No operators inside quoted values or expressions\n return false;\n }\n // Inside attributes, only `equals` is allowed\n return !ctx.attribute || op === 'equal';\n}\n/**\n * Check if given character is a space character and is allowed to be consumed\n * as a space token in current context\n */\nfunction isAllowedSpace(ch, ctx) {\n return isSpace(ch) && !ctx.expression;\n}\n/**\n * Check if given character can be consumed as repeater in current context\n */\nfunction isAllowedRepeater(ch, ctx) {\n return ch === Chars.Asterisk && !ctx.attribute && !ctx.expression;\n}\n/**\n * If given character is a bracket, returns it’s type\n */\nfunction bracketType(ch) {\n if (ch === Chars.RoundBracketOpen || ch === Chars.RoundBracketClose) {\n return 'group';\n }\n if (ch === Chars.SquareBracketOpen || ch === Chars.SquareBracketClose) {\n return 'attribute';\n }\n if (ch === Chars.CurlyBracketOpen || ch === Chars.CurlyBracketClose) {\n return 'expression';\n }\n}\n/**\n * If given character is an operator, returns it’s type\n */\nfunction operatorType(ch) {\n return (ch === Chars.Child && 'child')\n || (ch === Chars.Sibling && 'sibling')\n || (ch === Chars.Climb && 'climb')\n || (ch === Chars.Dot && 'class')\n || (ch === Chars.Hash && 'id')\n || (ch === Chars.Slash && 'close')\n || (ch === Chars.Equals && 'equal')\n || void 0;\n}\n/**\n * Check if given character is an open bracket\n */\nfunction isOpenBracket(ch) {\n return ch === Chars.CurlyBracketOpen\n || ch === Chars.SquareBracketOpen\n || ch === Chars.RoundBracketOpen;\n}\n/**\n * Check if given character is allowed in element name\n */\nfunction isElementName(ch) {\n return isAlphaNumericWord(ch)\n || isUmlaut(ch)\n || ch === Chars.Dash\n || ch === Chars.Colon\n || ch === Chars.Excl;\n}\n\nconst operators = {\n child: '>',\n class: '.',\n climb: '^',\n id: '#',\n equal: '=',\n close: '/',\n sibling: '+'\n};\nconst tokenVisitor = {\n Literal(token) {\n return token.value;\n },\n Quote(token) {\n return token.single ? '\\'' : '\"';\n },\n Bracket(token) {\n if (token.context === 'attribute') {\n return token.open ? '[' : ']';\n }\n else if (token.context === 'expression') {\n return token.open ? '{' : '}';\n }\n else {\n return token.open ? '(' : '}';\n }\n },\n Operator(token) {\n return operators[token.operator];\n },\n Field(token, state) {\n if (token.index != null) {\n // It’s a field: by default, return TextMate-compatible field\n return token.name\n ? `\\${${token.index}:${token.name}}`\n : `\\${${token.index}`;\n }\n else if (token.name) {\n // It’s a variable\n return state.getVariable(token.name);\n }\n return '';\n },\n RepeaterPlaceholder(token, state) {\n // Find closest implicit repeater\n let repeater;\n for (let i = state.repeaters.length - 1; i >= 0; i--) {\n if (state.repeaters[i].implicit) {\n repeater = state.repeaters[i];\n break;\n }\n }\n state.inserted = true;\n return state.getText(repeater && repeater.value);\n },\n RepeaterNumber(token, state) {\n let value = 1;\n const lastIx = state.repeaters.length - 1;\n // const repeaterIx = Math.max(0, state.repeaters.length - 1 - token.parent);\n const repeater = state.repeaters[lastIx];\n if (repeater) {\n value = token.reverse\n ? token.base + repeater.count - repeater.value - 1\n : token.base + repeater.value;\n if (token.parent) {\n const parentIx = Math.max(0, lastIx - token.parent);\n if (parentIx !== lastIx) {\n const parentRepeater = state.repeaters[parentIx];\n value += repeater.count * parentRepeater.value;\n }\n }\n }\n let result = String(value);\n while (result.length < token.size) {\n result = '0' + result;\n }\n return result;\n },\n WhiteSpace(token) {\n return token.value;\n }\n};\n/**\n * Converts given value token to string\n */\nfunction stringify(token, state) {\n if (!tokenVisitor[token.type]) {\n throw new Error(`Unknown token ${token.type}`);\n }\n return tokenVisitor[token.type](token, state);\n}\n\nconst urlRegex = /^((https?:|ftp:|file:)?\\/\\/|(www|ftp)\\.)[^ ]*$/;\nconst emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,5}$/;\n/**\n * Converts given token-based abbreviation into simplified and unrolled node-based\n * abbreviation\n */\nfunction convert(abbr, options = {}) {\n let textInserted = false;\n let cleanText;\n if (options.text) {\n if (Array.isArray(options.text)) {\n cleanText = options.text.filter(s => s.trim());\n }\n else {\n cleanText = options.text;\n }\n }\n const result = {\n type: 'Abbreviation',\n children: convertGroup(abbr, {\n inserted: false,\n repeaters: [],\n text: options.text,\n cleanText,\n repeatGuard: options.maxRepeat || Number.POSITIVE_INFINITY,\n getText(pos) {\n var _a;\n textInserted = true;\n let value;\n if (Array.isArray(options.text)) {\n if (pos !== undefined && pos >= 0 && pos < cleanText.length) {\n return cleanText[pos];\n }\n value = pos !== undefined ? options.text[pos] : options.text.join('\\n');\n }\n else {\n value = (_a = options.text) !== null && _a !== void 0 ? _a : '';\n }\n return value;\n },\n getVariable(name) {\n const varValue = options.variables && options.variables[name];\n return varValue != null ? varValue : name;\n }\n })\n };\n if (options.text != null && !textInserted) {\n // Text given but no implicitly repeated elements: insert it into\n // deepest child\n const deepest = deepestNode(last(result.children));\n if (deepest) {\n const text = Array.isArray(options.text) ? options.text.join('\\n') : options.text;\n insertText(deepest, text);\n if (deepest.name === 'a' && options.href) {\n // Automatically update value of `` element if inserting URL or email\n insertHref(deepest, text);\n }\n }\n }\n return result;\n}\n/**\n * Converts given statement to abbreviation nodes\n */\nfunction convertStatement(node, state) {\n let result = [];\n if (node.repeat) {\n // Node is repeated: we should create copies of given node\n // and supply context token with actual repeater state\n const original = node.repeat;\n const repeat = Object.assign({}, original);\n repeat.count = repeat.implicit && Array.isArray(state.text)\n ? state.cleanText.length\n : (repeat.count || 1);\n let items;\n state.repeaters.push(repeat);\n for (let i = 0; i < repeat.count; i++) {\n repeat.value = i;\n node.repeat = repeat;\n items = isGroup(node)\n ? convertGroup(node, state)\n : convertElement(node, state);\n if (repeat.implicit && !state.inserted) {\n // It’s an implicit repeater but no repeater placeholders found inside,\n // we should insert text into deepest node\n const target = last(items);\n const deepest = target && deepestNode(target);\n if (deepest) {\n insertText(deepest, state.getText(repeat.value));\n }\n }\n result = result.concat(items);\n // We should output at least one repeated item even if it’s reached\n // repeat limit\n if (--state.repeatGuard <= 0) {\n break;\n }\n }\n state.repeaters.pop();\n node.repeat = original;\n if (repeat.implicit) {\n state.inserted = true;\n }\n }\n else {\n result = result.concat(isGroup(node) ? convertGroup(node, state) : convertElement(node, state));\n }\n return result;\n}\nfunction convertElement(node, state) {\n let children = [];\n const elem = {\n type: 'AbbreviationNode',\n name: node.name && stringifyName(node.name, state),\n value: node.value && stringifyValue(node.value, state),\n attributes: void 0,\n children,\n repeat: node.repeat && Object.assign({}, node.repeat),\n selfClosing: node.selfClose,\n };\n let result = [elem];\n for (const child of node.elements) {\n children = children.concat(convertStatement(child, state));\n }\n if (node.attributes) {\n elem.attributes = [];\n for (const attr of node.attributes) {\n elem.attributes.push(convertAttribute(attr, state));\n }\n }\n // In case if current node is a text-only snippet without fields, we should\n // put all children as siblings\n if (!elem.name && !elem.attributes && elem.value && !elem.value.some(isField)) {\n // XXX it’s unclear that `children` is not bound to `elem`\n // due to concat operation\n result = result.concat(children);\n }\n else {\n elem.children = children;\n }\n return result;\n}\nfunction convertGroup(node, state) {\n let result = [];\n for (const child of node.elements) {\n result = result.concat(convertStatement(child, state));\n }\n if (node.repeat) {\n result = attachRepeater(result, node.repeat);\n }\n return result;\n}\nfunction convertAttribute(node, state) {\n let implied = false;\n let isBoolean = false;\n let valueType = node.expression ? 'expression' : 'raw';\n let value;\n const name = node.name && stringifyName(node.name, state);\n if (name && name[0] === '!') {\n implied = true;\n }\n if (name && name[name.length - 1] === '.') {\n isBoolean = true;\n }\n if (node.value) {\n const tokens = node.value.slice();\n if (isQuote(tokens[0])) {\n // It’s a quoted value: remove quotes from output but mark attribute\n // value as quoted\n const quote = tokens.shift();\n if (tokens.length && last(tokens).type === quote.type) {\n tokens.pop();\n }\n valueType = quote.single ? 'singleQuote' : 'doubleQuote';\n }\n else if (isBracket(tokens[0], 'expression', true)) {\n // Value is expression: remove brackets but mark value type\n valueType = 'expression';\n tokens.shift();\n if (isBracket(last(tokens), 'expression', false)) {\n tokens.pop();\n }\n }\n value = stringifyValue(tokens, state);\n }\n return {\n name: isBoolean || implied\n ? name.slice(implied ? 1 : 0, isBoolean ? -1 : void 0)\n : name,\n value,\n boolean: isBoolean,\n implied,\n valueType,\n multiple: node.multiple\n };\n}\n/**\n * Converts given token list to string\n */\nfunction stringifyName(tokens, state) {\n let str = '';\n for (let i = 0; i < tokens.length; i++) {\n str += stringify(tokens[i], state);\n }\n return str;\n}\n/**\n * Converts given token list to value list\n */\nfunction stringifyValue(tokens, state) {\n const result = [];\n let str = '';\n for (let i = 0, token; i < tokens.length; i++) {\n token = tokens[i];\n if (isField(token)) {\n // We should keep original fields in output since some editors has their\n // own syntax for field or doesn’t support fields at all so we should\n // capture actual field location in output stream\n if (str) {\n result.push(str);\n str = '';\n }\n result.push(token);\n }\n else {\n str += stringify(token, state);\n }\n }\n if (str) {\n result.push(str);\n }\n return result;\n}\nfunction isGroup(node) {\n return node.type === 'TokenGroup';\n}\nfunction isField(token) {\n return typeof token === 'object' && token.type === 'Field' && token.index != null;\n}\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction deepestNode(node) {\n return node.children.length ? deepestNode(last(node.children)) : node;\n}\nfunction insertText(node, text) {\n if (node.value) {\n const lastToken = last(node.value);\n if (typeof lastToken === 'string') {\n node.value[node.value.length - 1] += text;\n }\n else {\n node.value.push(text);\n }\n }\n else {\n node.value = [text];\n }\n}\nfunction insertHref(node, text) {\n var _a;\n let href = '';\n if (urlRegex.test(text)) {\n href = text;\n if (!/\\w+:/.test(href) && !href.startsWith('//')) {\n href = `http://${href}`;\n }\n }\n else if (emailRegex.test(text)) {\n href = `mailto:${text}`;\n }\n const hrefAttribute = (_a = node.attributes) === null || _a === void 0 ? void 0 : _a.find(attr => attr.name === 'href');\n if (!hrefAttribute) {\n if (!node.attributes) {\n node.attributes = [];\n }\n node.attributes.push({ name: 'href', value: [href], valueType: 'doubleQuote' });\n }\n else if (!hrefAttribute.value) {\n hrefAttribute.value = [href];\n }\n}\nfunction attachRepeater(items, repeater) {\n for (const item of items) {\n if (!item.repeat) {\n item.repeat = Object.assign({}, repeater);\n }\n }\n return items;\n}\n\n/**\n * Parses given abbreviation into node tree\n */\nfunction parseAbbreviation(abbr, options) {\n try {\n const tokens = typeof abbr === 'string' ? tokenize(abbr) : abbr;\n return convert(abbreviation(tokens, options), options);\n }\n catch (err) {\n if (err instanceof ScannerError && typeof abbr === 'string') {\n err.message += `\\n${abbr}\\n${'-'.repeat(err.pos)}^`;\n }\n throw err;\n }\n}\n\nexport { convert, parseAbbreviation as default, getToken, abbreviation as parse, tokenize };\n//# sourceMappingURL=index.js.map\n","import Scanner, { isNumber, isAlpha, isAlphaWord, isQuote, isSpace, isAlphaNumericWord, ScannerError } from '@emmetio/scanner';\n\nvar OperatorType;\n(function (OperatorType) {\n OperatorType[\"Sibling\"] = \"+\";\n OperatorType[\"Important\"] = \"!\";\n OperatorType[\"ArgumentDelimiter\"] = \",\";\n OperatorType[\"ValueDelimiter\"] = \"-\";\n OperatorType[\"PropertyDelimiter\"] = \":\";\n})(OperatorType || (OperatorType = {}));\n\nvar Chars;\n(function (Chars) {\n /** `#` character */\n Chars[Chars[\"Hash\"] = 35] = \"Hash\";\n /** `$` character */\n Chars[Chars[\"Dollar\"] = 36] = \"Dollar\";\n /** `-` character */\n Chars[Chars[\"Dash\"] = 45] = \"Dash\";\n /** `.` character */\n Chars[Chars[\"Dot\"] = 46] = \"Dot\";\n /** `:` character */\n Chars[Chars[\"Colon\"] = 58] = \"Colon\";\n /** `,` character */\n Chars[Chars[\"Comma\"] = 44] = \"Comma\";\n /** `!` character */\n Chars[Chars[\"Excl\"] = 33] = \"Excl\";\n /** `@` character */\n Chars[Chars[\"At\"] = 64] = \"At\";\n /** `%` character */\n Chars[Chars[\"Percent\"] = 37] = \"Percent\";\n /** `_` character */\n Chars[Chars[\"Underscore\"] = 95] = \"Underscore\";\n /** `(` character */\n Chars[Chars[\"RoundBracketOpen\"] = 40] = \"RoundBracketOpen\";\n /** `)` character */\n Chars[Chars[\"RoundBracketClose\"] = 41] = \"RoundBracketClose\";\n /** `{` character */\n Chars[Chars[\"CurlyBracketOpen\"] = 123] = \"CurlyBracketOpen\";\n /** `}` character */\n Chars[Chars[\"CurlyBracketClose\"] = 125] = \"CurlyBracketClose\";\n /** `+` character */\n Chars[Chars[\"Sibling\"] = 43] = \"Sibling\";\n /** `'` character */\n Chars[Chars[\"SingleQuote\"] = 39] = \"SingleQuote\";\n /** `\"` character */\n Chars[Chars[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n /** `t` character */\n Chars[Chars[\"Transparent\"] = 116] = \"Transparent\";\n /** `/` character */\n Chars[Chars[\"Slash\"] = 47] = \"Slash\";\n})(Chars || (Chars = {}));\n\nfunction tokenize(abbr, isValue) {\n let brackets = 0;\n let token;\n const scanner = new Scanner(abbr);\n const tokens = [];\n while (!scanner.eof()) {\n token = getToken(scanner, brackets === 0 && !isValue);\n if (!token) {\n throw scanner.error('Unexpected character');\n }\n if (token.type === 'Bracket') {\n if (!brackets && token.open) {\n mergeTokens(scanner, tokens);\n }\n brackets += token.open ? 1 : -1;\n if (brackets < 0) {\n throw scanner.error('Unexpected bracket', token.start);\n }\n }\n tokens.push(token);\n // Forcibly consume next operator after unit-less numeric value or color:\n // next dash `-` must be used as value delimiter\n if (shouldConsumeDashAfter(token) && (token = operator(scanner))) {\n tokens.push(token);\n }\n }\n return tokens;\n}\n/**\n * Returns next token from given scanner, if possible\n */\nfunction getToken(scanner, short) {\n return field(scanner)\n || customProperty(scanner)\n || numberValue(scanner)\n || colorValue(scanner)\n || stringValue(scanner)\n || bracket(scanner)\n || operator(scanner)\n || whiteSpace(scanner)\n || literal(scanner, short);\n}\nfunction field(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dollar) && scanner.eat(Chars.CurlyBracketOpen)) {\n scanner.start = scanner.pos;\n let index;\n let name = '';\n if (scanner.eatWhile(isNumber)) {\n // It’s a field\n index = Number(scanner.current());\n name = scanner.eat(Chars.Colon) ? consumePlaceholder(scanner) : '';\n }\n else if (isAlpha(scanner.peek())) {\n // It’s a variable\n name = consumePlaceholder(scanner);\n }\n if (scanner.eat(Chars.CurlyBracketClose)) {\n return {\n type: 'Field',\n index, name,\n start,\n end: scanner.pos\n };\n }\n throw scanner.error('Expecting }');\n }\n // If we reached here then there’s no valid field here, revert\n // back to starting position\n scanner.pos = start;\n}\n/**\n * Consumes a placeholder: value right after `:` in field. Could be empty\n */\nfunction consumePlaceholder(stream) {\n const stack = [];\n stream.start = stream.pos;\n while (!stream.eof()) {\n if (stream.eat(Chars.CurlyBracketOpen)) {\n stack.push(stream.pos);\n }\n else if (stream.eat(Chars.CurlyBracketClose)) {\n if (!stack.length) {\n stream.pos--;\n break;\n }\n stack.pop();\n }\n else {\n stream.pos++;\n }\n }\n if (stack.length) {\n stream.pos = stack.pop();\n throw stream.error(`Expecting }`);\n }\n return stream.current();\n}\n/**\n * Consumes literal from given scanner\n * @param short Use short notation for consuming value.\n * The difference between “short” and “full” notation is that first one uses\n * alpha characters only and used for extracting keywords from abbreviation,\n * while “full” notation also supports numbers and dashes\n */\nfunction literal(scanner, short) {\n const start = scanner.pos;\n if (scanner.eat(isIdentPrefix)) {\n // SCSS or LESS variable\n // NB a bit dirty hack: if abbreviation starts with identifier prefix,\n // consume alpha characters only to allow embedded variables\n scanner.eatWhile(start ? isKeyword : isLiteral$1);\n }\n else if (scanner.eat(isAlphaWord)) {\n scanner.eatWhile(short ? isLiteral$1 : isKeyword);\n }\n else {\n // Allow dots only at the beginning of literal\n scanner.eat(Chars.Dot);\n scanner.eatWhile(isLiteral$1);\n }\n if (start !== scanner.pos) {\n scanner.start = start;\n return createLiteral(scanner, scanner.start = start);\n }\n}\nfunction createLiteral(scanner, start = scanner.start, end = scanner.pos) {\n return {\n type: 'Literal',\n value: scanner.substring(start, end),\n start,\n end\n };\n}\n/**\n * Consumes numeric CSS value (number with optional unit) from current stream,\n * if possible\n */\nfunction numberValue(scanner) {\n const start = scanner.pos;\n if (consumeNumber(scanner)) {\n scanner.start = start;\n const rawValue = scanner.current();\n // eat unit, which can be a % or alpha word\n scanner.start = scanner.pos;\n scanner.eat(Chars.Percent) || scanner.eatWhile(isAlphaWord);\n return {\n type: 'NumberValue',\n value: Number(rawValue),\n rawValue,\n unit: scanner.current(),\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes quoted string value from given scanner\n */\nfunction stringValue(scanner) {\n const ch = scanner.peek();\n const start = scanner.pos;\n let finished = false;\n if (isQuote(ch)) {\n scanner.pos++;\n while (!scanner.eof()) {\n // Do not throw error on malformed string\n if (scanner.eat(ch)) {\n finished = true;\n break;\n }\n else {\n scanner.pos++;\n }\n }\n scanner.start = start;\n return {\n type: 'StringValue',\n value: scanner.substring(start + 1, scanner.pos - (finished ? 1 : 0)),\n quote: ch === Chars.SingleQuote ? 'single' : 'double',\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes a color token from given string\n */\nfunction colorValue(scanner) {\n // supported color variations:\n // #abc → #aabbccc\n // #0 → #000000\n // #fff.5 → rgba(255, 255, 255, 0.5)\n // #t → transparent\n const start = scanner.pos;\n if (scanner.eat(Chars.Hash)) {\n const valueStart = scanner.pos;\n let color = '';\n let alpha = '';\n if (scanner.eatWhile(isHex)) {\n color = scanner.substring(valueStart, scanner.pos);\n alpha = colorAlpha(scanner);\n }\n else if (scanner.eat(Chars.Transparent)) {\n color = '0';\n alpha = colorAlpha(scanner) || '0';\n }\n else {\n alpha = colorAlpha(scanner);\n }\n if (color || alpha || scanner.eof()) {\n const { r, g, b, a } = parseColor(color, alpha);\n return {\n type: 'ColorValue',\n r, g, b, a,\n raw: scanner.substring(start + 1, scanner.pos),\n start,\n end: scanner.pos\n };\n }\n else {\n // Consumed # but no actual value: invalid color value, treat it as literal\n return createLiteral(scanner, start);\n }\n }\n scanner.pos = start;\n}\n/**\n * Consumes alpha value of color: `.1`\n */\nfunction colorAlpha(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dot)) {\n scanner.start = start;\n if (scanner.eatWhile(isNumber)) {\n return scanner.current();\n }\n return '1';\n }\n return '';\n}\n/**\n * Consumes white space characters as string literal from given scanner\n */\nfunction whiteSpace(scanner) {\n const start = scanner.pos;\n if (scanner.eatWhile(isSpace)) {\n return {\n type: 'WhiteSpace',\n start,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes custom CSS property: --foo-bar\n */\nfunction customProperty(scanner) {\n const start = scanner.pos;\n if (scanner.eat(Chars.Dash) && scanner.eat(Chars.Dash)) {\n scanner.start = start;\n scanner.eatWhile(isKeyword);\n return {\n type: 'CustomProperty',\n value: scanner.current(),\n start,\n end: scanner.pos\n };\n }\n scanner.pos = start;\n}\n/**\n * Consumes bracket from given scanner\n */\nfunction bracket(scanner) {\n const ch = scanner.peek();\n if (isBracket$1(ch)) {\n return {\n type: 'Bracket',\n open: ch === Chars.RoundBracketOpen,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Consumes operator from given scanner\n */\nfunction operator(scanner) {\n const op = operatorType(scanner.peek());\n if (op) {\n return {\n type: 'Operator',\n operator: op,\n start: scanner.pos++,\n end: scanner.pos\n };\n }\n}\n/**\n * Eats number value from given stream\n * @return Returns `true` if number was consumed\n */\nfunction consumeNumber(stream) {\n const start = stream.pos;\n stream.eat(Chars.Dash);\n const afterNegative = stream.pos;\n const hasDecimal = stream.eatWhile(isNumber);\n const prevPos = stream.pos;\n if (stream.eat(Chars.Dot)) {\n // It’s perfectly valid to have numbers like `1.`, which enforces\n // value to float unit type\n const hasFloat = stream.eatWhile(isNumber);\n if (!hasDecimal && !hasFloat) {\n // Lone dot\n stream.pos = prevPos;\n }\n }\n // Edge case: consumed dash only: not a number, bail-out\n if (stream.pos === afterNegative) {\n stream.pos = start;\n }\n return stream.pos !== start;\n}\nfunction isIdentPrefix(code) {\n return code === Chars.At || code === Chars.Dollar;\n}\n/**\n * If given character is an operator, returns it’s type\n */\nfunction operatorType(ch) {\n return (ch === Chars.Sibling && OperatorType.Sibling)\n || (ch === Chars.Excl && OperatorType.Important)\n || (ch === Chars.Comma && OperatorType.ArgumentDelimiter)\n || (ch === Chars.Colon && OperatorType.PropertyDelimiter)\n || (ch === Chars.Dash && OperatorType.ValueDelimiter)\n || void 0;\n}\n/**\n * Check if given code is a hex value (/0-9a-f/)\n */\nfunction isHex(code) {\n return isNumber(code) || isAlpha(code, 65, 70); // A-F\n}\nfunction isKeyword(code) {\n return isAlphaNumericWord(code) || code === Chars.Dash;\n}\nfunction isBracket$1(code) {\n return code === Chars.RoundBracketOpen || code === Chars.RoundBracketClose;\n}\nfunction isLiteral$1(code) {\n return isAlphaWord(code) || code === Chars.Percent || code === Chars.Slash;\n}\n/**\n * Parses given color value from abbreviation into RGBA format\n */\nfunction parseColor(value, alpha) {\n let r = '0';\n let g = '0';\n let b = '0';\n let a = Number(alpha != null && alpha !== '' ? alpha : 1);\n if (value === 't') {\n a = 0;\n }\n else {\n switch (value.length) {\n case 0:\n break;\n case 1:\n r = g = b = value + value;\n break;\n case 2:\n r = g = b = value;\n break;\n case 3:\n r = value[0] + value[0];\n g = value[1] + value[1];\n b = value[2] + value[2];\n break;\n default:\n value += value;\n r = value.slice(0, 2);\n g = value.slice(2, 4);\n b = value.slice(4, 6);\n }\n }\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16),\n a\n };\n}\n/**\n * Check if scanner reader must consume dash after given token.\n * Used in cases where user must explicitly separate numeric values\n */\nfunction shouldConsumeDashAfter(token) {\n return token.type === 'ColorValue' || (token.type === 'NumberValue' && !token.unit);\n}\n/**\n * Merges last adjacent tokens into a single literal.\n * This function is used to overcome edge case when function name was parsed\n * as a list of separate tokens. For example, a `scale3d()` value will be\n * parsed as literal and number tokens (`scale` and `3d`) which is a perfectly\n * valid abbreviation but undesired result. This function will detect last adjacent\n * literal and number values and combine them into single literal\n */\nfunction mergeTokens(scanner, tokens) {\n let start = 0;\n let end = 0;\n while (tokens.length) {\n const token = last(tokens);\n if (token.type === 'Literal' || token.type === 'NumberValue') {\n start = token.start;\n if (!end) {\n end = token.end;\n }\n tokens.pop();\n }\n else {\n break;\n }\n }\n if (start !== end) {\n tokens.push(createLiteral(scanner, start, end));\n }\n}\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nfunction tokenScanner(tokens) {\n return {\n tokens,\n start: 0,\n pos: 0,\n size: tokens.length\n };\n}\nfunction peek(scanner) {\n return scanner.tokens[scanner.pos];\n}\nfunction readable(scanner) {\n return scanner.pos < scanner.size;\n}\nfunction consume(scanner, test) {\n if (test(peek(scanner))) {\n scanner.pos++;\n return true;\n }\n return false;\n}\nfunction error(scanner, message, token = peek(scanner)) {\n if (token && token.start != null) {\n message += ` at ${token.start}`;\n }\n const err = new Error(message);\n err['pos'] = token && token.start;\n return err;\n}\n\nfunction parser(tokens, options = {}) {\n const scanner = tokenScanner(tokens);\n const result = [];\n let property;\n while (readable(scanner)) {\n if (property = consumeProperty(scanner, options)) {\n result.push(property);\n }\n else if (!consume(scanner, isSiblingOperator)) {\n throw error(scanner, 'Unexpected token');\n }\n }\n return result;\n}\n/**\n * Consumes single CSS property\n */\nfunction consumeProperty(scanner, options) {\n let name;\n let important = false;\n let valueFragment;\n const value = [];\n const token = peek(scanner);\n const valueMode = !!options.value;\n if (!valueMode && isLiteral(token) && !isFunctionStart(scanner)) {\n scanner.pos++;\n name = token.value;\n // Consume any following value delimiter after property name\n consume(scanner, isValueDelimiter);\n }\n // Skip whitespace right after property name, if any\n if (valueMode) {\n consume(scanner, isWhiteSpace);\n }\n while (readable(scanner)) {\n if (consume(scanner, isImportant)) {\n important = true;\n }\n else if (valueFragment = consumeValue(scanner, valueMode)) {\n value.push(valueFragment);\n }\n else if (!consume(scanner, isFragmentDelimiter)) {\n break;\n }\n }\n if (name || value.length || important) {\n return { name, value, important };\n }\n}\n/**\n * Consumes single value fragment, e.g. all value tokens before comma\n */\nfunction consumeValue(scanner, inArgument) {\n const result = [];\n let token;\n let args;\n while (readable(scanner)) {\n token = peek(scanner);\n if (isValue(token)) {\n scanner.pos++;\n if (isLiteral(token) && (args = consumeArguments(scanner))) {\n result.push({\n type: 'FunctionCall',\n name: token.value,\n arguments: args\n });\n }\n else {\n result.push(token);\n }\n }\n else if (isValueDelimiter(token) || (inArgument && isWhiteSpace(token))) {\n scanner.pos++;\n }\n else {\n break;\n }\n }\n return result.length\n ? { type: 'CSSValue', value: result }\n : void 0;\n}\nfunction consumeArguments(scanner) {\n const start = scanner.pos;\n if (consume(scanner, isOpenBracket)) {\n const args = [];\n let value;\n while (readable(scanner) && !consume(scanner, isCloseBracket)) {\n if (value = consumeValue(scanner, true)) {\n args.push(value);\n }\n else if (!consume(scanner, isWhiteSpace) && !consume(scanner, isArgumentDelimiter)) {\n throw error(scanner, 'Unexpected token');\n }\n }\n scanner.start = start;\n return args;\n }\n}\nfunction isLiteral(token) {\n return token && token.type === 'Literal';\n}\nfunction isBracket(token, open) {\n return token && token.type === 'Bracket' && (open == null || token.open === open);\n}\nfunction isOpenBracket(token) {\n return isBracket(token, true);\n}\nfunction isCloseBracket(token) {\n return isBracket(token, false);\n}\nfunction isWhiteSpace(token) {\n return token && token.type === 'WhiteSpace';\n}\nfunction isOperator(token, operator) {\n return token && token.type === 'Operator' && (!operator || token.operator === operator);\n}\nfunction isSiblingOperator(token) {\n return isOperator(token, OperatorType.Sibling);\n}\nfunction isArgumentDelimiter(token) {\n return isOperator(token, OperatorType.ArgumentDelimiter);\n}\nfunction isFragmentDelimiter(token) {\n return isArgumentDelimiter(token);\n}\nfunction isImportant(token) {\n return isOperator(token, OperatorType.Important);\n}\nfunction isValue(token) {\n return token.type === 'StringValue'\n || token.type === 'ColorValue'\n || token.type === 'NumberValue'\n || token.type === 'Literal'\n || token.type === 'Field'\n || token.type === 'CustomProperty';\n}\nfunction isValueDelimiter(token) {\n return isOperator(token, OperatorType.PropertyDelimiter)\n || isOperator(token, OperatorType.ValueDelimiter);\n}\nfunction isFunctionStart(scanner) {\n const t1 = scanner.tokens[scanner.pos];\n const t2 = scanner.tokens[scanner.pos + 1];\n return t1 && t2 && isLiteral(t1) && t2.type === 'Bracket';\n}\n\n/**\n * Parses given abbreviation into property set\n */\nfunction parse(abbr, options) {\n try {\n const tokens = typeof abbr === 'string' ? tokenize(abbr, options && options.value) : abbr;\n return parser(tokens, options);\n }\n catch (err) {\n if (err instanceof ScannerError && typeof abbr === 'string') {\n err.message += `\\n${abbr}\\n${'-'.repeat(err.pos)}^`;\n }\n throw err;\n }\n}\n\nexport { OperatorType, parse as default, getToken, parser, tokenize };\n//# sourceMappingURL=index.js.map\n",null,null,null,null,null,"{\n\t\"common\": [\"lorem\", \"ipsum\", \"dolor\", \"sit\", \"amet\", \"consectetur\", \"adipisicing\", \"elit\"],\n\t\"words\": [\"exercitationem\", \"perferendis\", \"perspiciatis\", \"laborum\", \"eveniet\",\n\t\t\"sunt\", \"iure\", \"nam\", \"nobis\", \"eum\", \"cum\", \"officiis\", \"excepturi\",\n\t\t\"odio\", \"consectetur\", \"quasi\", \"aut\", \"quisquam\", \"vel\", \"eligendi\",\n\t\t\"itaque\", \"non\", \"odit\", \"tempore\", \"quaerat\", \"dignissimos\",\n\t\t\"facilis\", \"neque\", \"nihil\", \"expedita\", \"vitae\", \"vero\", \"ipsum\",\n\t\t\"nisi\", \"animi\", \"cumque\", \"pariatur\", \"velit\", \"modi\", \"natus\",\n\t\t\"iusto\", \"eaque\", \"sequi\", \"illo\", \"sed\", \"ex\", \"et\", \"voluptatibus\",\n\t\t\"tempora\", \"veritatis\", \"ratione\", \"assumenda\", \"incidunt\", \"nostrum\",\n\t\t\"placeat\", \"aliquid\", \"fuga\", \"provident\", \"praesentium\", \"rem\",\n\t\t\"necessitatibus\", \"suscipit\", \"adipisci\", \"quidem\", \"possimus\",\n\t\t\"voluptas\", \"debitis\", \"sint\", \"accusantium\", \"unde\", \"sapiente\",\n\t\t\"voluptate\", \"qui\", \"aspernatur\", \"laudantium\", \"soluta\", \"amet\",\n\t\t\"quo\", \"aliquam\", \"saepe\", \"culpa\", \"libero\", \"ipsa\", \"dicta\",\n\t\t\"reiciendis\", \"nesciunt\", \"doloribus\", \"autem\", \"impedit\", \"minima\",\n\t\t\"maiores\", \"repudiandae\", \"ipsam\", \"obcaecati\", \"ullam\", \"enim\",\n\t\t\"totam\", \"delectus\", \"ducimus\", \"quis\", \"voluptates\", \"dolores\",\n\t\t\"molestiae\", \"harum\", \"dolorem\", \"quia\", \"voluptatem\", \"molestias\",\n\t\t\"magni\", \"distinctio\", \"omnis\", \"illum\", \"dolorum\", \"voluptatum\", \"ea\",\n\t\t\"quas\", \"quam\", \"corporis\", \"quae\", \"blanditiis\", \"atque\", \"deserunt\",\n\t\t\"laboriosam\", \"earum\", \"consequuntur\", \"hic\", \"cupiditate\",\n\t\t\"quibusdam\", \"accusamus\", \"ut\", \"rerum\", \"error\", \"minus\", \"eius\",\n\t\t\"ab\", \"ad\", \"nemo\", \"fugit\", \"officia\", \"at\", \"in\", \"id\", \"quos\",\n\t\t\"reprehenderit\", \"numquam\", \"iste\", \"fugiat\", \"sit\", \"inventore\",\n\t\t\"beatae\", \"repellendus\", \"magnam\", \"recusandae\", \"quod\", \"explicabo\",\n\t\t\"doloremque\", \"aperiam\", \"consequatur\", \"asperiores\", \"commodi\",\n\t\t\"optio\", \"dolor\", \"labore\", \"temporibus\", \"repellat\", \"veniam\",\n\t\t\"architecto\", \"est\", \"esse\", \"mollitia\", \"nulla\", \"a\", \"similique\",\n\t\t\"eos\", \"alias\", \"dolore\", \"tenetur\", \"deleniti\", \"porro\", \"facere\",\n\t\t\"maxime\", \"corrupti\"]\n}\n","{\n\t\"common\": [\"далеко-далеко\", \"за\", \"словесными\", \"горами\", \"в стране\", \"гласных\", \"и согласных\", \"живут\", \"рыбные\", \"тексты\"],\n\t\"words\": [\"вдали\", \"от всех\", \"они\", \"буквенных\", \"домах\", \"на берегу\", \"семантика\",\n\t\t\"большого\", \"языкового\", \"океана\", \"маленький\", \"ручеек\", \"даль\",\n\t\t\"журчит\", \"по всей\", \"обеспечивает\", \"ее\",\"всеми\", \"необходимыми\",\n\t\t\"правилами\", \"эта\", \"парадигматическая\", \"страна\", \"которой\", \"жаренные\",\n\t\t\"предложения\", \"залетают\", \"прямо\", \"рот\", \"даже\", \"всемогущая\",\n\t\t\"пунктуация\", \"не\", \"имеет\", \"власти\", \"над\", \"рыбными\", \"текстами\",\n\t\t\"ведущими\", \"безорфографичный\", \"образ\", \"жизни\", \"однажды\", \"одна\",\n\t\t\"маленькая\", \"строчка\",\"рыбного\", \"текста\", \"имени\", \"lorem\", \"ipsum\",\n\t\t\"решила\", \"выйти\", \"большой\", \"мир\", \"грамматики\", \"великий\", \"оксмокс\",\n\t\t\"предупреждал\", \"о\", \"злых\", \"запятых\", \"диких\", \"знаках\", \"вопроса\",\n\t\t\"коварных\", \"точках\", \"запятой\", \"но\", \"текст\", \"дал\", \"сбить\",\n\t\t\"себя\", \"толку\", \"он\", \"собрал\", \"семь\", \"своих\", \"заглавных\", \"букв\",\n\t\t\"подпоясал\", \"инициал\", \"за\", \"пояс\", \"пустился\", \"дорогу\",\n\t\t\"взобравшись\", \"первую\", \"вершину\", \"курсивных\", \"гор\", \"бросил\",\n\t\t\"последний\", \"взгляд\", \"назад\", \"силуэт\", \"своего\", \"родного\", \"города\",\n\t\t\"буквоград\", \"заголовок\", \"деревни\", \"алфавит\", \"подзаголовок\", \"своего\",\n\t\t\"переулка\", \"грустный\", \"реторический\", \"вопрос\", \"скатился\", \"его\",\n\t\t\"щеке\", \"продолжил\", \"свой\", \"путь\", \"дороге\", \"встретил\", \"рукопись\",\n\t\t\"она\", \"предупредила\", \"моей\", \"все\", \"переписывается\", \"несколько\",\n\t\t\"раз\", \"единственное\", \"что\", \"меня\", \"осталось\", \"это\", \"приставка\",\n\t\t\"возвращайся\", \"ты\", \"лучше\", \"свою\", \"безопасную\", \"страну\", \"послушавшись\",\n\t\t\"рукописи\", \"наш\", \"продолжил\", \"свой\", \"путь\", \"вскоре\", \"ему\",\n\t\t\"повстречался\", \"коварный\", \"составитель\", \"рекламных\", \"текстов\",\n\t\t\"напоивший\", \"языком\", \"речью\", \"заманивший\", \"свое\", \"агентство\",\n\t\t\"которое\", \"использовало\", \"снова\", \"снова\", \"своих\", \"проектах\",\n\t\t\"если\", \"переписали\", \"то\", \"живет\", \"там\", \"до\", \"сих\", \"пор\"]\n}\n","{\n\t\"common\": [\"mujer\", \"uno\", \"dolor\", \"más\", \"de\", \"poder\", \"mismo\", \"si\"],\n\t\"words\": [\"ejercicio\", \"preferencia\", \"perspicacia\", \"laboral\", \"paño\",\n\t\t\"suntuoso\", \"molde\", \"namibia\", \"planeador\", \"mirar\", \"demás\", \"oficinista\", \"excepción\",\n\t\t\"odio\", \"consecuencia\", \"casi\", \"auto\", \"chicharra\", \"velo\", \"elixir\",\n\t\t\"ataque\", \"no\", \"odio\", \"temporal\", \"cuórum\", \"dignísimo\",\n\t\t\"facilismo\", \"letra\", \"nihilista\", \"expedición\", \"alma\", \"alveolar\", \"aparte\",\n\t\t\"león\", \"animal\", \"como\", \"paria\", \"belleza\", \"modo\", \"natividad\",\n\t\t\"justo\", \"ataque\", \"séquito\", \"pillo\", \"sed\", \"ex\", \"y\", \"voluminoso\",\n\t\t\"temporalidad\", \"verdades\", \"racional\", \"asunción\", \"incidente\", \"marejada\",\n\t\t\"placenta\", \"amanecer\", \"fuga\", \"previsor\", \"presentación\", \"lejos\",\n\t\t\"necesariamente\", \"sospechoso\", \"adiposidad\", \"quindío\", \"pócima\",\n\t\t\"voluble\", \"débito\", \"sintió\", \"accesorio\", \"falda\", \"sapiencia\",\n\t\t\"volutas\", \"queso\", \"permacultura\", \"laudo\", \"soluciones\", \"entero\",\n\t\t\"pan\", \"litro\", \"tonelada\", \"culpa\", \"libertario\", \"mosca\", \"dictado\",\n\t\t\"reincidente\", \"nascimiento\", \"dolor\", \"escolar\", \"impedimento\", \"mínima\",\n\t\t\"mayores\", \"repugnante\", \"dulce\", \"obcecado\", \"montaña\", \"enigma\",\n\t\t\"total\", \"deletéreo\", \"décima\", \"cábala\", \"fotografía\", \"dolores\",\n\t\t\"molesto\", \"olvido\", \"paciencia\", \"resiliencia\", \"voluntad\", \"molestias\",\n\t\t\"magnífico\", \"distinción\", \"ovni\", \"marejada\", \"cerro\", \"torre\", \"y\",\n\t\t\"abogada\", \"manantial\", \"corporal\", \"agua\", \"crepúsculo\", \"ataque\", \"desierto\",\n\t\t\"laboriosamente\", \"angustia\", \"afortunado\", \"alma\", \"encefalograma\",\n\t\t\"materialidad\", \"cosas\", \"o\", \"renuncia\", \"error\", \"menos\", \"conejo\",\n\t\t\"abadía\", \"analfabeto\", \"remo\", \"fugacidad\", \"oficio\", \"en\", \"almácigo\", \"vos\", \"pan\",\n\t\t\"represión\", \"números\", \"triste\", \"refugiado\", \"trote\", \"inventor\",\n\t\t\"corchea\", \"repelente\", \"magma\", \"recusado\", \"patrón\", \"explícito\",\n\t\t\"paloma\", \"síndrome\", \"inmune\", \"autoinmune\", \"comodidad\",\n\t\t\"ley\", \"vietnamita\", \"demonio\", \"tasmania\", \"repeler\", \"apéndice\",\n\t\t\"arquitecto\", \"columna\", \"yugo\", \"computador\", \"mula\", \"a\", \"propósito\",\n\t\t\"fantasía\", \"alias\", \"rayo\", \"tenedor\", \"deleznable\", \"ventana\", \"cara\",\n\t\t\"anemia\", \"corrupto\"]\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"{\n\t\"a\": \"a[href]\",\n\t\"a:blank\": \"a[href='http://${0}' target='_blank' rel='noopener noreferrer']\",\n\t\"a:link\": \"a[href='http://${0}']\",\n\t\"a:mail\": \"a[href='mailto:${0}']\",\n\t\"a:tel\": \"a[href='tel:+${0}']\",\n\t\"abbr\": \"abbr[title]\",\n\t\"acr|acronym\": \"acronym[title]\",\n\t\"base\": \"base[href]/\",\n\t\"basefont\": \"basefont/\",\n\t\"br\": \"br/\",\n\t\"frame\": \"frame/\",\n\t\"hr\": \"hr/\",\n\t\"bdo\": \"bdo[dir]\",\n\t\"bdo:r\": \"bdo[dir=rtl]\",\n\t\"bdo:l\": \"bdo[dir=ltr]\",\n\t\"col\": \"col/\",\n\t\"link\": \"link[rel=stylesheet href]/\",\n\t\"link:css\": \"link[href='${1:style}.css']\",\n\t\"link:print\": \"link[href='${1:print}.css' media=print]\",\n\t\"link:favicon\": \"link[rel='shortcut icon' type=image/x-icon href='${1:favicon.ico}']\",\n\t\"link:mf|link:manifest\": \"link[rel='manifest' href='${1:manifest.json}']\",\n\t\"link:touch\": \"link[rel=apple-touch-icon href='${1:favicon.png}']\",\n\t\"link:rss\": \"link[rel=alternate type=application/rss+xml title=RSS href='${1:rss.xml}']\",\n\t\"link:atom\": \"link[rel=alternate type=application/atom+xml title=Atom href='${1:atom.xml}']\",\n\t\"link:im|link:import\": \"link[rel=import href='${1:component}.html']\",\n\t\"meta\": \"meta/\",\n\t\"meta:utf\": \"meta[http-equiv=Content-Type content='text/html;charset=UTF-8']\",\n\t\"meta:vp\": \"meta[name=viewport content='width=${1:device-width}, initial-scale=${2:1.0}']\",\n\t\"meta:compat\": \"meta[http-equiv=X-UA-Compatible content='${1:IE=7}']\",\n\t\"meta:edge\": \"meta:compat[content='${1:ie=edge}']\",\n\t\"meta:redirect\": \"meta[http-equiv=refresh content='0; url=${1:http://example.com}']\",\n\t\"meta:refresh\": \"meta[http-equiv=refresh content='${1:5}']\",\n\t\"meta:kw\": \"meta[name=keywords content]\",\n\t\"meta:desc\": \"meta[name=description content]\",\n\t\"style\": \"style\",\n\t\"script\": \"script\",\n\t\"script:src\": \"script[src]\",\n\t\"script:module\": \"script[type=module src]\",\n\t\"img\": \"img[src alt]/\",\n\t\"img:s|img:srcset\": \"img[srcset src alt]\",\n\t\"img:z|img:sizes\": \"img[sizes srcset src alt]\",\n\t\"picture\": \"picture\",\n\t\"src|source\": \"source/\",\n\t\"src:sc|source:src\": \"source[src type]\",\n\t\"src:s|source:srcset\": \"source[srcset]\",\n\t\"src:t|source:type\": \"source[srcset type='${1:image/}']\",\n\t\"src:z|source:sizes\": \"source[sizes srcset]\",\n\t\"src:m|source:media\": \"source[media='(${1:min-width: })' srcset]\",\n\t\"src:mt|source:media:type\": \"source:media[type='${2:image/}']\",\n\t\"src:mz|source:media:sizes\": \"source:media[sizes srcset]\",\n\t\"src:zt|source:sizes:type\": \"source[sizes srcset type='${1:image/}']\",\n\t\"iframe\": \"iframe[src frameborder=0]\",\n\t\"embed\": \"embed[src type]/\",\n\t\"object\": \"object[data type]\",\n\t\"param\": \"param[name value]/\",\n\t\"map\": \"map[name]\",\n\t\"area\": \"area[shape coords href alt]/\",\n\t\"area:d\": \"area[shape=default]\",\n\t\"area:c\": \"area[shape=circle]\",\n\t\"area:r\": \"area[shape=rect]\",\n\t\"area:p\": \"area[shape=poly]\",\n\t\"form\": \"form[action]\",\n\t\"form:get\": \"form[method=get]\",\n\t\"form:post\": \"form[method=post]\",\n\t\"label\": \"label[for]\",\n\t\"input\": \"input[type=${1:text}]/\",\n\t\"inp\": \"input[name=${1} id=${1}]\",\n\t\"input:h|input:hidden\": \"input[type=hidden name]\",\n\t\"input:t|input:text\": \"inp[type=text]\",\n\t\"input:search\": \"inp[type=search]\",\n\t\"input:email\": \"inp[type=email]\",\n\t\"input:url\": \"inp[type=url]\",\n\t\"input:p|input:password\": \"inp[type=password]\",\n\t\"input:datetime\": \"inp[type=datetime]\",\n\t\"input:date\": \"inp[type=date]\",\n\t\"input:datetime-local\": \"inp[type=datetime-local]\",\n\t\"input:month\": \"inp[type=month]\",\n\t\"input:week\": \"inp[type=week]\",\n\t\"input:time\": \"inp[type=time]\",\n\t\"input:tel\": \"inp[type=tel]\",\n\t\"input:number\": \"inp[type=number]\",\n\t\"input:color\": \"inp[type=color]\",\n\t\"input:c|input:checkbox\": \"inp[type=checkbox]\",\n\t\"input:r|input:radio\": \"inp[type=radio]\",\n\t\"input:range\": \"inp[type=range]\",\n\t\"input:f|input:file\": \"inp[type=file]\",\n\t\"input:s|input:submit\": \"input[type=submit value]\",\n\t\"input:i|input:image\": \"input[type=image src alt]\",\n\t\"input:b|input:btn|input:button\": \"input[type=button value]\",\n\t\"input:reset\": \"input:button[type=reset]\",\n\t\"isindex\": \"isindex/\",\n\t\"select\": \"select[name=${1} id=${1}]\",\n\t\"select:d|select:disabled\": \"select[disabled.]\",\n\t\"opt|option\": \"option[value]\",\n\t\"textarea\": \"textarea[name=${1} id=${1} cols=${2:30} rows=${3:10}]\",\n\t\"marquee\": \"marquee[behavior direction]\",\n\t\"menu:c|menu:context\": \"menu[type=context]\",\n\t\"menu:t|menu:toolbar\": \"menu[type=toolbar]\",\n\t\"video\": \"video[src]\",\n\t\"audio\": \"audio[src]\",\n\t\"html:xml\": \"html[xmlns=http://www.w3.org/1999/xhtml]\",\n\t\"keygen\": \"keygen/\",\n\t\"command\": \"command/\",\n\t\"btn:s|button:s|button:submit\" : \"button[type=submit]\",\n\t\"btn:r|button:r|button:reset\" : \"button[type=reset]\",\n\t\"btn:b|button:b|button:button\" : \"button[type=button]\",\n\t\"btn:d|button:d|button:disabled\" : \"button[disabled.]\",\n\t\"fst:d|fset:d|fieldset:d|fieldset:disabled\" : \"fieldset[disabled.]\",\n\n\t\"bq\": \"blockquote\",\n\t\"fig\": \"figure\",\n\t\"figc\": \"figcaption\",\n\t\"pic\": \"picture\",\n\t\"ifr\": \"iframe\",\n\t\"emb\": \"embed\",\n\t\"obj\": \"object\",\n\t\"cap\": \"caption\",\n\t\"colg\": \"colgroup\",\n\t\"fst\": \"fieldset\",\n\t\"btn\": \"button\",\n\t\"optg\": \"optgroup\",\n\t\"tarea\": \"textarea\",\n\t\"leg\": \"legend\",\n\t\"sect\": \"section\",\n\t\"art\": \"article\",\n\t\"hdr\": \"header\",\n\t\"ftr\": \"footer\",\n\t\"adr\": \"address\",\n\t\"dlg\": \"dialog\",\n\t\"str\": \"strong\",\n\t\"prog\": \"progress\",\n\t\"mn\": \"main\",\n\t\"tem\": \"template\",\n\t\"fset\": \"fieldset\",\n\t\"datal\": \"datalist\",\n\t\"kg\": \"keygen\",\n\t\"out\": \"output\",\n\t\"det\": \"details\",\n\t\"sum\": \"summary\",\n\t\"cmd\": \"command\",\n\t\"data\": \"data[value]\",\n\t\"meter\": \"meter[value]\",\n\t\"time\": \"time[datetime]\",\n\n\t\"ri:d|ri:dpr\": \"img:s\",\n\t\"ri:v|ri:viewport\": \"img:z\",\n\t\"ri:a|ri:art\": \"pic>src:m+img\",\n\t\"ri:t|ri:type\": \"pic>src:t+img\",\n\n\t\"!!!\": \"{}\",\n\t\"doc\": \"html[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}})+body\",\n\t\"!|html:5\": \"!!!+doc\",\n\n\t\"c\": \"{}\",\n\t\"cc:ie\": \"{}\",\n\t\"cc:noie\": \"{${0}}\"\n}\n","{\n\t\"@f\": \"@font-face {\\n\\tfont-family: ${1};\\n\\tsrc: url(${2});\\n}\",\n\t\"@ff\": \"@font-face {\\n\\tfont-family: '${1:FontName}';\\n\\tsrc: url('${2:FileName}.eot');\\n\\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\\n\\t\\t url('${2:FileName}.woff') format('woff'),\\n\\t\\t url('${2:FileName}.ttf') format('truetype'),\\n\\t\\t url('${2:FileName}.svg#${1:FontName}') format('svg');\\n\\tfont-style: ${3:normal};\\n\\tfont-weight: ${4:normal};\\n}\",\n\t\"@i|@import\": \"@import url(${0});\",\n\t\"@kf\": \"@keyframes ${1:identifier} {\\n\\t${2}\\n}\",\n\t\"@m|@media\": \"@media ${1:screen} {\\n\\t${0}\\n}\",\n\t\"ac\": \"align-content:start|end|flex-start|flex-end|center|space-between|space-around|stretch|space-evenly\",\n\t\"ai\": \"align-items:start|end|flex-start|flex-end|center|baseline|stretch\",\n\t\"anim\": \"animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode}\",\n\t\"animdel\": \"animation-delay:time\",\n\t\"animdir\": \"animation-direction:normal|reverse|alternate|alternate-reverse\",\n\t\"animdur\": \"animation-duration:${1:0}s\",\n\t\"animfm\": \"animation-fill-mode:both|forwards|backwards\",\n\t\"animic\": \"animation-iteration-count:1|infinite\",\n\t\"animn\": \"animation-name\",\n\t\"animps\": \"animation-play-state:running|paused\",\n\t\"animtf\": \"animation-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1})\",\n\t\"ap\": \"appearance:none\",\n\t\"as\": \"align-self:start|end|auto|flex-start|flex-end|center|baseline|stretch\",\n\t\"b\": \"bottom\",\n\t\"bd\": \"border:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdb\": \"border-bottom:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdbc\": \"border-bottom-color:${1:#000}\",\n\t\"bdbi\": \"border-bottom-image:url(${0})\",\n\t\"bdbk\": \"border-break:close\",\n\t\"bdbli\": \"border-bottom-left-image:url(${0})|continue\",\n\t\"bdblrs\": \"border-bottom-left-radius\",\n\t\"bdbri\": \"border-bottom-right-image:url(${0})|continue\",\n\t\"bdbrrs\": \"border-bottom-right-radius\",\n\t\"bdbs\": \"border-bottom-style\",\n\t\"bdbw\": \"border-bottom-width\",\n\t\"bdc\": \"border-color:${1:#000}\",\n\t\"bdci\": \"border-corner-image:url(${0})|continue\",\n\t\"bdcl\": \"border-collapse:collapse|separate\",\n\t\"bdf\": \"border-fit:repeat|clip|scale|stretch|overwrite|overflow|space\",\n\t\"bdi\": \"border-image:url(${0})\",\n\t\"bdl\": \"border-left:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdlc\": \"border-left-color:${1:#000}\",\n\t\"bdlen\": \"border-length\",\n\t\"bdli\": \"border-left-image:url(${0})\",\n\t\"bdls\": \"border-left-style\",\n\t\"bdlw\": \"border-left-width\",\n\t\"bdr\": \"border-right:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdrc\": \"border-right-color:${1:#000}\",\n\t\"bdri\": \"border-right-image:url(${0})\",\n\t\"bdrs\": \"border-radius\",\n\t\"bdrst\": \"border-right-style\",\n\t\"bdrw\": \"border-right-width\",\n\t\"bds\": \"border-style:none|hidden|dotted|dashed|solid|double|dot-dash|dot-dot-dash|wave|groove|ridge|inset|outset\",\n\t\"bdsp\": \"border-spacing\",\n\t\"bdt\": \"border-top:${1:1px} ${2:solid} ${3:#000}\",\n\t\"bdtc\": \"border-top-color:${1:#000}\",\n\t\"bdti\": \"border-top-image:url(${0})\",\n\t\"bdtli\": \"border-top-left-image:url(${0})|continue\",\n\t\"bdtlrs\": \"border-top-left-radius\",\n\t\"bdtri\": \"border-top-right-image:url(${0})|continue\",\n\t\"bdtrrs\": \"border-top-right-radius\",\n\t\"bdts\": \"border-top-style\",\n\t\"bdtw\": \"border-top-width\",\n\t\"bdw\": \"border-width\",\n \"bbs\": \"border-block-start\",\n \"bbe\": \"border-block-end\",\n \"bis\": \"border-inline-start\",\n \"bie\": \"border-inline-end\",\n\t\"bfv\": \"backface-visibility:hidden|visible\",\n\t\"bg\": \"background:${1:#000}\",\n\t\"bg:n\": \"background: none\",\n\t\"bga\": \"background-attachment:fixed|scroll\",\n\t\"bgbk\": \"background-break:bounding-box|each-box|continuous\",\n\t\"bgc\": \"background-color:${1:#fff}\",\n\t\"bgcp\": \"background-clip:padding-box|border-box|content-box|no-clip\",\n\t\"bgi\": \"background-image:url(${0})\",\n\t\"bgo\": \"background-origin:padding-box|border-box|content-box\",\n\t\"bgp\": \"background-position:${1:0} ${2:0}\",\n\t\"bgpx\": \"background-position-x\",\n\t\"bgpy\": \"background-position-y\",\n\t\"bgr\": \"background-repeat:no-repeat|repeat-x|repeat-y|space|round\",\n\t\"bgsz\": \"background-size:contain|cover\",\n \"bs\": \"block-size\",\n\t\"bxsh\": \"box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:#000}|none\",\n\t\"bxsz\": \"box-sizing:border-box|content-box|border-box\",\n\t\"c\": \"color:${1:#000}\",\n\t\"cr\": \"color:rgb(${1:0}, ${2:0}, ${3:0})\",\n\t\"cra\": \"color:rgba(${1:0}, ${2:0}, ${3:0}, ${4:.5})\",\n\t\"cl\": \"clear:both|left|right|none\",\n\t\"cm\": \"/* ${0} */\",\n\t\"cnt\": \"content:'${0}'|normal|open-quote|no-open-quote|close-quote|no-close-quote|attr(${0})|counter(${0})|counters(${0})\",\n\t\"coi\": \"counter-increment\",\n\t\"colm\": \"columns\",\n\t\"colmc\": \"column-count\",\n\t\"colmf\": \"column-fill\",\n\t\"colmg\": \"column-gap\",\n\t\"colmr\": \"column-rule\",\n\t\"colmrc\": \"column-rule-color\",\n\t\"colmrs\": \"column-rule-style\",\n\t\"colmrw\": \"column-rule-width\",\n\t\"colms\": \"column-span\",\n\t\"colmw\": \"column-width\",\n\t\"cor\": \"counter-reset\",\n\t\"cp\": \"clip:auto|rect(${1:top} ${2:right} ${3:bottom} ${4:left})\",\n\t\"cps\": \"caption-side:top|bottom\",\n\t\"cur\": \"cursor:pointer|auto|default|crosshair|hand|help|move|pointer|text\",\n\t\"d\": \"display:block|none|flex|inline-flex|inline|inline-block|grid|inline-grid|subgrid|list-item|run-in|contents|table|inline-table|table-caption|table-column|table-column-group|table-header-group|table-footer-group|table-row|table-row-group|table-cell|ruby|ruby-base|ruby-base-group|ruby-text|ruby-text-group\",\n\t\"ec\": \"empty-cells:show|hide\",\n\t\"f\": \"font:${1:1em} ${2:sans-serif}\",\n\t\"fd\": \"font-display:auto|block|swap|fallback|optional\",\n\t\"fef\": \"font-effect:none|engrave|emboss|outline\",\n\t\"fem\": \"font-emphasize\",\n\t\"femp\": \"font-emphasize-position:before|after\",\n\t\"fems\": \"font-emphasize-style:none|accent|dot|circle|disc\",\n\t\"ff\": \"font-family:serif|sans-serif|cursive|fantasy|monospace\",\n\t\"fft\": \"font-family:\\\"Times New Roman\\\", Times, Baskerville, Georgia, serif\",\n\t\"ffa\": \"font-family:Arial, \\\"Helvetica Neue\\\", Helvetica, sans-serif\",\n\t\"ffv\": \"font-family:Verdana, Geneva, sans-serif\",\n\t\"fl\": \"float:left|right|none\",\n\t\"fs\": \"font-style:italic|normal|oblique\",\n\t\"fsm\": \"font-smoothing:antialiased|subpixel-antialiased|none\",\n\t\"fst\": \"font-stretch:normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded\",\n\t\"fv\": \"font-variant:normal|small-caps\",\n\t\"fvs\": \"font-variation-settings:normal|inherit|initial|unset\",\n\t\"fw\": \"font-weight:normal|bold|bolder|lighter\",\n\t\"fx\": \"flex\",\n\t\"fxb\": \"flex-basis:fill|max-content|min-content|fit-content|content\",\n\t\"fxd\": \"flex-direction:row|row-reverse|column|column-reverse\",\n\t\"fxf\": \"flex-flow\",\n\t\"fxg\": \"flex-grow\",\n\t\"fxsh\": \"flex-shrink\",\n\t\"fxw\": \"flex-wrap:nowrap|wrap|wrap-reverse\",\n\t\"fsz\": \"font-size\",\n\t\"fsza\": \"font-size-adjust\",\n\t\"g\": \"gap\",\n\t\"gtc\": \"grid-template-columns:repeat(${0})|minmax()\",\n\t\"gtr\": \"grid-template-rows:repeat(${0})|minmax()\",\n\t\"gta\": \"grid-template-areas\",\n\t\"gt\": \"grid-template\",\n\t\"gg\": \"grid-gap\",\n\t\"gcg\": \"grid-column-gap\",\n\t\"grg\": \"grid-row-gap\",\n\t\"gac\": \"grid-auto-columns:auto|minmax()\",\n\t\"gar\": \"grid-auto-rows:auto|minmax()\",\n\t\"gaf\": \"grid-auto-flow:row|column|dense|inherit|initial|unset\",\n\t\"gd\": \"grid\",\n\t\"gc\": \"grid-column\",\n\t\"gcs\": \"grid-column-start\",\n\t\"gce\": \"grid-column-end\",\n\t\"gr\": \"grid-row\",\n\t\"grs\": \"grid-row-start\",\n\t\"gre\": \"grid-row-end\",\n\t\"ga\": \"grid-area\",\n\t\"h\": \"height\",\n \"is\": \"inline-size\",\n\t\"jc\": \"justify-content:start|end|stretch|flex-start|flex-end|center|space-between|space-around|space-evenly\",\n\t\"ji\": \"justify-items:start|end|center|stretch\",\n\t\"js\": \"justify-self:start|end|center|stretch\",\n\t\"l\": \"left\",\n\t\"lg\": \"background-image:linear-gradient(${1})\",\n\t\"lh\": \"line-height\",\n\t\"lis\": \"list-style\",\n\t\"lisi\": \"list-style-image\",\n\t\"lisp\": \"list-style-position:inside|outside\",\n\t\"list\": \"list-style-type:disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman\",\n\t\"lts\": \"letter-spacing:normal\",\n\t\"m\": \"margin\",\n\t\"mah\": \"max-height\",\n\t\"mar\": \"max-resolution\",\n\t\"maw\": \"max-width\",\n\t\"mb\": \"margin-bottom\",\n\t\"mih\": \"min-height\",\n\t\"mir\": \"min-resolution\",\n\t\"miw\": \"min-width\",\n\t\"ml\": \"margin-left\",\n\t\"mr\": \"margin-right\",\n\t\"mt\": \"margin-top\",\n \"mbs\": \"margin-block-start\",\n \"mbe\": \"margin-block-end\",\n \"mis\": \"margin-inline-start\",\n \"mie\": \"margin-inline-end\",\n\t\"ol\": \"outline\",\n\t\"olc\": \"outline-color:${1:#000}|invert\",\n\t\"olo\": \"outline-offset\",\n\t\"ols\": \"outline-style:none|dotted|dashed|solid|double|groove|ridge|inset|outset\",\n\t\"olw\": \"outline-width:thin|medium|thick\",\n\t\"op|opa\": \"opacity\",\n\t\"ord\": \"order\",\n\t\"ori\": \"orientation:landscape|portrait\",\n\t\"orp\": \"orphans\",\n\t\"ov\": \"overflow:hidden|visible|hidden|scroll|auto\",\n\t\"ovs\": \"overflow-style:scrollbar|auto|scrollbar|panner|move|marquee\",\n\t\"ovx\": \"overflow-x:hidden|visible|hidden|scroll|auto\",\n\t\"ovy\": \"overflow-y:hidden|visible|hidden|scroll|auto\",\n\t\"p\": \"padding\",\n\t\"pb\": \"padding-bottom\",\n\t\"pgba\": \"page-break-after:auto|always|left|right\",\n\t\"pgbb\": \"page-break-before:auto|always|left|right\",\n\t\"pgbi\": \"page-break-inside:auto|avoid\",\n\t\"pl\": \"padding-left\",\n\t\"pos\": \"position:relative|absolute|relative|fixed|static\",\n\t\"pr\": \"padding-right\",\n\t\"pt\": \"padding-top\",\n \"pbs\": \"padding-block-start\",\n \"pbe\": \"padding-block-end\",\n \"pis\": \"padding-inline-start\",\n \"pie\": \"padding-inline-end\",\n \"spbs\": \"scroll-padding-block-start\",\n \"spbe\": \"scroll-padding-block-end\",\n \"spis\": \"scroll-padding-inline-start\",\n \"spie\": \"scroll-padding-inline-end\",\n\t\"q\": \"quotes\",\n\t\"qen\": \"quotes:'\\\\201C' '\\\\201D' '\\\\2018' '\\\\2019'\",\n\t\"qru\": \"quotes:'\\\\00AB' '\\\\00BB' '\\\\201E' '\\\\201C'\",\n\t\"r\": \"right\",\n\t\"rsz\": \"resize:none|both|horizontal|vertical\",\n\t\"t\": \"top\",\n\t\"ta\": \"text-align:left|center|right|justify\",\n\t\"tal\": \"text-align-last:left|center|right\",\n\t\"tbl\": \"table-layout:fixed\",\n\t\"td\": \"text-decoration:none|underline|overline|line-through\",\n\t\"te\": \"text-emphasis:none|accent|dot|circle|disc|before|after\",\n\t\"th\": \"text-height:auto|font-size|text-size|max-size\",\n\t\"ti\": \"text-indent\",\n\t\"tj\": \"text-justify:auto|inter-word|inter-ideograph|inter-cluster|distribute|kashida|tibetan\",\n\t\"to\": \"text-outline:${1:0} ${2:0} ${3:#000}\",\n\t\"tov\": \"text-overflow:ellipsis|clip\",\n\t\"tr\": \"text-replace\",\n\t\"trf\": \"transform:${1}|skewX(${1:angle})|skewY(${1:angle})|scale(${1:x}, ${2:y})|scaleX(${1:x})|scaleY(${1:y})|scaleZ(${1:z})|scale3d(${1:x}, ${2:y}, ${3:z})|rotate(${1:angle})|rotateX(${1:angle})|rotateY(${1:angle})|rotateZ(${1:angle})|translate(${1:x}, ${2:y})|translateX(${1:x})|translateY(${1:y})|translateZ(${1:z})|translate3d(${1:tx}, ${2:ty}, ${3:tz})\",\n\t\"trfo\": \"transform-origin\",\n\t\"trfs\": \"transform-style:preserve-3d\",\n\t\"trs\": \"transition:${1:prop} ${2:time}\",\n\t\"trsde\": \"transition-delay:${1:time}\",\n\t\"trsdu\": \"transition-duration:${1:time}\",\n\t\"trsp\": \"transition-property:${1:prop}\",\n\t\"trstf\": \"transition-timing-function:${1:fn}\",\n\t\"tsh\": \"text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000}\",\n\t\"tt\": \"text-transform:uppercase|lowercase|capitalize|none\",\n\t\"tw\": \"text-wrap:none|normal|unrestricted|suppress\",\n\t\"us\": \"user-select:none\",\n\t\"v\": \"visibility:hidden|visible|collapse\",\n\t\"va\": \"vertical-align:top|super|text-top|middle|baseline|bottom|text-bottom|sub\",\n\t\"w\": \"width\",\n\t\"whs\": \"white-space:nowrap|pre|pre-wrap|pre-line|normal\",\n\t\"whsc\": \"white-space-collapse:normal|keep-all|loose|break-strict|break-all\",\n\t\"wid\": \"widows\",\n\t\"wm\": \"writing-mode:lr-tb|lr-tb|lr-bt|rl-tb|rl-bt|tb-rl|tb-lr|bt-lr|bt-rl\",\n\t\"wob\": \"word-break:normal|keep-all|break-all\",\n\t\"wos\": \"word-spacing\",\n\t\"wow\": \"word-wrap:none|unrestricted|suppress|break-word|normal\",\n\t\"z\": \"z-index\",\n\t\"zom\": \"zoom:1\"\n}\n","{\n \"tm|tmatch\": \"xsl:template[match mode]\",\n \"tn|tname\": \"xsl:template[name]\",\n \"call\": \"xsl:call-template[name]\",\n \"ap\": \"xsl:apply-templates[select mode]\",\n \"api\": \"xsl:apply-imports\",\n \"imp\": \"xsl:import[href]\",\n \"inc\": \"xsl:include[href]\",\n \"ch\": \"xsl:choose\",\n \"wh|xsl:when\": \"xsl:when[test]\",\n \"ot\": \"xsl:otherwise\",\n \"if\": \"xsl:if[test]\",\n \"par\": \"xsl:param[name]\",\n \"pare\": \"xsl:param[name select]\",\n \"var\": \"xsl:variable[name]\",\n \"vare\": \"xsl:variable[name select]\",\n \"wp\": \"xsl:with-param[name select]\",\n \"key\": \"xsl:key[name match use]\",\n \"elem\": \"xsl:element[name]\",\n \"attr\": \"xsl:attribute[name]\",\n \"attrs\": \"xsl:attribute-set[name]\",\n \"cp\": \"xsl:copy[select]\",\n \"co\": \"xsl:copy-of[select]\",\n \"val\": \"xsl:value-of[select]\",\n \"for|each\": \"xsl:for-each[select]\",\n \"tex\": \"xsl:text\",\n \"com\": \"xsl:comment\",\n \"msg\": \"xsl:message[terminate=no]\",\n \"fall\": \"xsl:fallback\",\n \"num\": \"xsl:number[value]\",\n \"nam\": \"namespace-alias[stylesheet-prefix result-prefix]\",\n \"pres\": \"xsl:preserve-space[elements]\",\n \"strip\": \"xsl:strip-space[elements]\",\n \"proc\": \"xsl:processing-instruction[name]\",\n \"sort\": \"xsl:sort[select order]\",\n \"choose\": \"xsl:choose>xsl:when+xsl:otherwise\",\n \"xsl\": \"!!!+xsl:stylesheet[version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform]>{\\n|}\",\n \"!!!\": \"{}\"\n}","{\n\t\"!!!\": \"{doctype html}\"\n}\n","{\n\t\"lang\": \"en\",\n\t\"locale\": \"en-US\",\n\t\"charset\": \"UTF-8\",\n\t\"indentation\": \"\\t\",\n\t\"newline\": \"\\n\"\n}\n",null,null,null,null,null,null,null],"names":["isNumber","isAlpha","isWhiteSpace","isQuote","tokenScanner","peek","readable","consume","error","element","isSiblingOperator","isBracket","isOperator","createLiteral","literal$1","isLiteral","Chars","tokenize","getToken","field","whiteSpace","literal","operator","bracket","isQuote$1","isOpenBracket","operatorType","consumePlaceholder","stringify","last","stringifyValue","isField","isCloseBracket","parse","walk","splitByLines","shouldFormat","abbreviation","snippets","attributes","calculateScore","defaultOptions","isAtHTMLTag","stringifyMarkup","parseMarkup","stringifyStylesheet","parseStylesheet"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/emmet/dist/extract-abbreviation/brackets.d.ts b/node_modules/emmet/dist/extract-abbreviation/brackets.d.ts
deleted file mode 100644
index 36813b8..0000000
--- a/node_modules/emmet/dist/extract-abbreviation/brackets.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export declare const enum Brackets {
- SquareL = 91,
- SquareR = 93,
- RoundL = 40,
- RoundR = 41,
- CurlyL = 123,
- CurlyR = 125
-}
-export declare const bracePairs: {
- 91: Brackets;
- 40: Brackets;
- 123: Brackets;
-};
diff --git a/node_modules/emmet/dist/extract-abbreviation/index.d.ts b/node_modules/emmet/dist/extract-abbreviation/index.d.ts
deleted file mode 100644
index fae4057..0000000
--- a/node_modules/emmet/dist/extract-abbreviation/index.d.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type { SyntaxType } from '../config.js';
-export interface ExtractOptions {
- /**
- * Allow parser to look ahead of `pos` index for searching of missing
- * abbreviation parts. Most editors automatically inserts closing braces for
- * `[`, `{` and `(`, which will most likely be right after current caret position.
- * So in order to properly expand abbreviation, user must explicitly move
- * caret right after auto-inserted braces. With this option enabled, parser
- * will search for closing braces right after `pos`. Default is `true`
- */
- lookAhead: boolean;
- /**
- * Type of context syntax of expanded abbreviation.
- * In 'stylesheet' syntax, brackets `[]` and `{}` are not supported thus
- * not extracted.
- */
- type: SyntaxType;
- /**
- * A string that should precede abbreviation in order to make it successfully
- * extracted. If given, the abbreviation will be extracted from the nearest
- * `prefix` occurrence.
- */
- prefix: string;
-}
-export interface ExtractedAbbreviation {
- /** Extracted abbreviation */
- abbreviation: string;
- /** Location of abbreviation in input string */
- location: number;
- /** Start location of matched abbreviation, including prefix */
- start: number;
- /** End location of extracted abbreviation */
- end: number;
-}
-/**
- * Extracts Emmet abbreviation from given string.
- * The goal of this module is to extract abbreviation from current editor’s line,
- * e.g. like this: `.foo[title=bar|]` -> `.foo[title=bar]`, where
- * `|` is a current caret position.
- * @param line A text line where abbreviation should be expanded
- * @param pos Caret position in line. If not given, uses end of line
- * @param options Extracting options
- */
-export default function extractAbbreviation(line: string, pos?: number, options?: Partialundefined
when no more characters are available.
- */
- next() {
- if (this.pos < this.string.length) {
- return this.string.charCodeAt(this.pos++);
- }
- }
- /**
- * `match` can be a character code or a function that takes a character code
- * and returns a boolean. If the next character in the stream 'matches'
- * the given argument, it is consumed and returned.
- * Otherwise, `false` is returned.
- */
- eat(match) {
- const ch = this.peek();
- const ok = typeof match === 'function' ? match(ch) : ch === match;
- if (ok) {
- this.next();
- }
- return ok;
- }
- /**
- * Repeatedly calls eat
with the given argument, until it
- * fails. Returns true
if any characters were eaten.
- */
- eatWhile(match) {
- const start = this.pos;
- while (!this.eof() && this.eat(match)) { /* */ }
- return this.pos !== start;
- }
- /**
- * Backs up the stream n characters. Backing it up further than the
- * start of the current token will cause things to break, so be careful.
- */
- backUp(n) {
- this.pos -= (n || 1);
- }
- /**
- * Get the string between the start of the current token and the
- * current stream position.
- */
- current() {
- return this.substring(this.start, this.pos);
- }
- /**
- * Returns substring for given range
- */
- substring(start, end) {
- return this.string.slice(start, end);
- }
- /**
- * Creates error object with current stream state
- */
- error(message, pos = this.pos) {
- return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);
- }
-}
-class ScannerError extends Error {
- constructor(message, pos, str) {
- super(message);
- this.pos = pos;
- this.string = str;
- }
-}
-
-exports.ScannerError = ScannerError;
-exports.default = Scanner;
-exports.eatPair = eatPair;
-exports.eatQuoted = eatQuoted;
-exports.isAlpha = isAlpha;
-exports.isAlphaNumeric = isAlphaNumeric;
-exports.isAlphaNumericWord = isAlphaNumericWord;
-exports.isAlphaWord = isAlphaWord;
-exports.isNumber = isNumber;
-exports.isQuote = isQuote;
-exports.isSpace = isSpace;
-exports.isUmlaut = isUmlaut;
-exports.isWhiteSpace = isWhiteSpace;
-//# sourceMappingURL=scanner.cjs.map
diff --git a/node_modules/emmetio/scanner/scanner.cjs.map b/node_modules/emmetio/scanner/scanner.cjs.map
deleted file mode 100644
index ff81ee9..0000000
--- a/node_modules/emmetio/scanner/scanner.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"scanner.cjs","sources":["packages/scanner/src/utils.ts","packages/scanner/src/scanner.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/emmetio/scanner/scanner.d.ts b/node_modules/emmetio/scanner/scanner.d.ts
deleted file mode 100644
index 15e0bf4..0000000
--- a/node_modules/emmetio/scanner/scanner.d.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-export * from './utils.js';
-type MatchFn = (ch: number) => boolean;
-/**
- * A streaming, character code-based string reader
- */
-export default class Scanner {
- /** Current string */
- string: string;
- /** Current scanner position */
- pos: number;
- /** Lower range limit where string reader is available */
- start: number;
- /** Upper range limit where string reader is available */
- end: number;
- constructor(str: string, start?: number, end?: number);
- /**
- * Returns true only if the stream is at the end of the file.
- */
- eof(): boolean;
- /**
- * Creates a new stream instance which is limited to given `start` and `end`
- * range. E.g. its `eof()` method will look at `end` property, not actual
- * stream end
- */
- limit(start?: number, end?: number): Scanner;
- /**
- * Returns the next character code in the stream without advancing it.
- * Will return NaN at the end of the file.
- */
- peek(): number;
- /**
- * Returns the next character in the stream and advances it.
- * Also returns undefined
when no more characters are available.
- */
- next(): number | undefined;
- /**
- * `match` can be a character code or a function that takes a character code
- * and returns a boolean. If the next character in the stream 'matches'
- * the given argument, it is consumed and returned.
- * Otherwise, `false` is returned.
- */
- eat(match: number | MatchFn): boolean;
- /**
- * Repeatedly calls eat
with the given argument, until it
- * fails. Returns true
if any characters were eaten.
- */
- eatWhile(match: number | MatchFn): boolean;
- /**
- * Backs up the stream n characters. Backing it up further than the
- * start of the current token will cause things to break, so be careful.
- */
- backUp(n: number): void;
- /**
- * Get the string between the start of the current token and the
- * current stream position.
- */
- current(): string;
- /**
- * Returns substring for given range
- */
- substring(start: number, end?: number): string;
- /**
- * Creates error object with current stream state
- */
- error(message: string, pos?: number): ScannerError;
-}
-export declare class ScannerError extends Error {
- pos: number;
- string: string;
- constructor(message: string, pos: number, str: string);
-}
diff --git a/node_modules/emmetio/scanner/scanner.js b/node_modules/emmetio/scanner/scanner.js
deleted file mode 100644
index e78cfff..0000000
--- a/node_modules/emmetio/scanner/scanner.js
+++ /dev/null
@@ -1,237 +0,0 @@
-const defaultQuotedOptions = {
- escape: 92,
- throws: false
-};
-/**
- * Check if given code is a number
- */
-function isNumber(code) {
- return code > 47 && code < 58;
-}
-/**
- * Check if given character code is alpha code (letter through A to Z)
- */
-function isAlpha(code, from, to) {
- from = from || 65; // A
- to = to || 90; // Z
- code &= ~32; // quick hack to convert any char code to uppercase char code
- return code >= from && code <= to;
-}
-/**
- * Check if given character code is alpha-numeric (letter through A to Z or number)
- */
-function isAlphaNumeric(code) {
- return isNumber(code) || isAlpha(code);
-}
-function isAlphaNumericWord(code) {
- return isNumber(code) || isAlphaWord(code);
-}
-function isAlphaWord(code) {
- return code === 95 /* _ */ || isAlpha(code);
-}
-/**
- * Check for Umlauts i.e. ä, Ä, ö, Ö, ü and Ü
- */
-function isUmlaut(code) {
- return code === 196
- || code == 214
- || code === 220
- || code === 228
- || code === 246
- || code === 252;
-}
-/**
- * Check if given character code is a white-space character: a space character
- * or line breaks
- */
-function isWhiteSpace(code) {
- return code === 32 /* space */
- || code === 9 /* tab */
- || code === 160; /* non-breaking space */
-}
-/**
- * Check if given character code is a space character
- */
-function isSpace(code) {
- return isWhiteSpace(code)
- || code === 10 /* LF */
- || code === 13; /* CR */
-}
-/**
- * Consumes 'single' or "double"-quoted string from given string, if possible
- * @return `true` if quoted string was consumed. The contents of quoted string
- * will be available as `stream.current()`
- */
-function eatQuoted(stream, options) {
- options = Object.assign(Object.assign({}, defaultQuotedOptions), options);
- const start = stream.pos;
- const quote = stream.peek();
- if (stream.eat(isQuote)) {
- while (!stream.eof()) {
- switch (stream.next()) {
- case quote:
- stream.start = start;
- return true;
- case options.escape:
- stream.next();
- break;
- }
- }
- // If we’re here then stream wasn’t properly consumed.
- // Revert stream and decide what to do
- stream.pos = start;
- if (options.throws) {
- throw stream.error('Unable to consume quoted string');
- }
- }
- return false;
-}
-/**
- * Check if given character code is a quote character
- */
-function isQuote(code) {
- return code === 39 /* ' */ || code === 34 /* " */;
-}
-/**
- * Eats paired characters substring, for example `(foo)` or `[bar]`
- * @param open Character code of pair opening
- * @param close Character code of pair closing
- * @return Returns `true` if character pair was successfully consumed, it’s
- * content will be available as `stream.current()`
- */
-function eatPair(stream, open, close, options) {
- options = Object.assign(Object.assign({}, defaultQuotedOptions), options);
- const start = stream.pos;
- if (stream.eat(open)) {
- let stack = 1;
- let ch;
- while (!stream.eof()) {
- if (eatQuoted(stream, options)) {
- continue;
- }
- ch = stream.next();
- if (ch === open) {
- stack++;
- }
- else if (ch === close) {
- stack--;
- if (!stack) {
- stream.start = start;
- return true;
- }
- }
- else if (ch === options.escape) {
- stream.next();
- }
- }
- // If we’re here then paired character can’t be consumed
- stream.pos = start;
- if (options.throws) {
- throw stream.error(`Unable to find matching pair for ${String.fromCharCode(open)}`);
- }
- }
- return false;
-}
-
-/**
- * A streaming, character code-based string reader
- */
-class Scanner {
- constructor(str, start, end) {
- if (end == null && typeof str === 'string') {
- end = str.length;
- }
- this.string = str;
- this.pos = this.start = start || 0;
- this.end = end || 0;
- }
- /**
- * Returns true only if the stream is at the end of the file.
- */
- eof() {
- return this.pos >= this.end;
- }
- /**
- * Creates a new stream instance which is limited to given `start` and `end`
- * range. E.g. its `eof()` method will look at `end` property, not actual
- * stream end
- */
- limit(start, end) {
- return new Scanner(this.string, start, end);
- }
- /**
- * Returns the next character code in the stream without advancing it.
- * Will return NaN at the end of the file.
- */
- peek() {
- return this.string.charCodeAt(this.pos);
- }
- /**
- * Returns the next character in the stream and advances it.
- * Also returns undefined
when no more characters are available.
- */
- next() {
- if (this.pos < this.string.length) {
- return this.string.charCodeAt(this.pos++);
- }
- }
- /**
- * `match` can be a character code or a function that takes a character code
- * and returns a boolean. If the next character in the stream 'matches'
- * the given argument, it is consumed and returned.
- * Otherwise, `false` is returned.
- */
- eat(match) {
- const ch = this.peek();
- const ok = typeof match === 'function' ? match(ch) : ch === match;
- if (ok) {
- this.next();
- }
- return ok;
- }
- /**
- * Repeatedly calls eat
with the given argument, until it
- * fails. Returns true
if any characters were eaten.
- */
- eatWhile(match) {
- const start = this.pos;
- while (!this.eof() && this.eat(match)) { /* */ }
- return this.pos !== start;
- }
- /**
- * Backs up the stream n characters. Backing it up further than the
- * start of the current token will cause things to break, so be careful.
- */
- backUp(n) {
- this.pos -= (n || 1);
- }
- /**
- * Get the string between the start of the current token and the
- * current stream position.
- */
- current() {
- return this.substring(this.start, this.pos);
- }
- /**
- * Returns substring for given range
- */
- substring(start, end) {
- return this.string.slice(start, end);
- }
- /**
- * Creates error object with current stream state
- */
- error(message, pos = this.pos) {
- return new ScannerError(`${message} at ${pos + 1}`, pos, this.string);
- }
-}
-class ScannerError extends Error {
- constructor(message, pos, str) {
- super(message);
- this.pos = pos;
- this.string = str;
- }
-}
-
-export { ScannerError, Scanner as default, eatPair, eatQuoted, isAlpha, isAlphaNumeric, isAlphaNumericWord, isAlphaWord, isNumber, isQuote, isSpace, isUmlaut, isWhiteSpace };
-//# sourceMappingURL=scanner.js.map
diff --git a/node_modules/emmetio/scanner/scanner.js.map b/node_modules/emmetio/scanner/scanner.js.map
deleted file mode 100644
index e403cc1..0000000
--- a/node_modules/emmetio/scanner/scanner.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"scanner.js","sources":["packages/scanner/src/utils.ts","packages/scanner/src/scanner.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/emmetio/scanner/utils.d.ts b/node_modules/emmetio/scanner/utils.d.ts
deleted file mode 100644
index a96a743..0000000
--- a/node_modules/emmetio/scanner/utils.d.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import type Scanner from './scanner.js';
-interface QuotedOptions {
- /** A character code of quote-escape symbol */
- escape?: number;
- /** Throw error if quotes string can’t be properly consumed */
- throws?: boolean;
-}
-/**
- * Check if given code is a number
- */
-export declare function isNumber(code: number): boolean;
-/**
- * Check if given character code is alpha code (letter through A to Z)
- */
-export declare function isAlpha(code: number, from?: number, to?: number): boolean;
-/**
- * Check if given character code is alpha-numeric (letter through A to Z or number)
- */
-export declare function isAlphaNumeric(code: number): boolean;
-export declare function isAlphaNumericWord(code: number): boolean;
-export declare function isAlphaWord(code: number): boolean;
-/**
- * Check for Umlauts i.e. ä, Ä, ö, Ö, ü and Ü
- */
-export declare function isUmlaut(code: number): boolean;
-/**
- * Check if given character code is a white-space character: a space character
- * or line breaks
- */
-export declare function isWhiteSpace(code: number): boolean;
-/**
- * Check if given character code is a space character
- */
-export declare function isSpace(code: number): boolean;
-/**
- * Consumes 'single' or "double"-quoted string from given string, if possible
- * @return `true` if quoted string was consumed. The contents of quoted string
- * will be available as `stream.current()`
- */
-export declare function eatQuoted(stream: Scanner, options?: QuotedOptions): boolean;
-/**
- * Check if given character code is a quote character
- */
-export declare function isQuote(code: number): boolean;
-/**
- * Eats paired characters substring, for example `(foo)` or `[bar]`
- * @param open Character code of pair opening
- * @param close Character code of pair closing
- * @return Returns `true` if character pair was successfully consumed, it’s
- * content will be available as `stream.current()`
- */
-export declare function eatPair(stream: Scanner, open: number, close: number, options?: QuotedOptions): boolean;
-export {};
diff --git a/node_modules/npm/LICENSE b/node_modules/npm/LICENSE
deleted file mode 100644
index 0b6c228..0000000
--- a/node_modules/npm/LICENSE
+++ /dev/null
@@ -1,235 +0,0 @@
-The npm application
-Copyright (c) npm, Inc. and Contributors
-Licensed on the terms of The Artistic License 2.0
-
-Node package dependencies of the npm application
-Copyright (c) their respective copyright owners
-Licensed on their respective license terms
-
-The npm public registry at https://registry.npmjs.org
-and the npm website at https://www.npmjs.com
-Operated by npm, Inc.
-Use governed by terms published on https://www.npmjs.com
-
-"Node.js"
-Trademark Joyent, Inc., https://joyent.com
-Neither npm nor npm, Inc. are affiliated with Joyent, Inc.
-
-The Node.js application
-Project of Node Foundation, https://nodejs.org
-
-The npm Logo
-Copyright (c) Mathias Pettersson and Brian Hammond
-
-"Gubblebum Blocky" typeface
-Copyright (c) Tjarda Koster, https://jelloween.deviantart.com
-Used with permission
-
-
---------
-
-
-The Artistic License 2.0
-
-Copyright (c) 2000-2006, The Perl Foundation.
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-Preamble
-
-This license establishes the terms under which a given free software
-Package may be copied, modified, distributed, and/or redistributed.
-The intent is that the Copyright Holder maintains some artistic
-control over the development of that Package while still keeping the
-Package available as open source and free software.
-
-You are always permitted to make arrangements wholly outside of this
-license directly with the Copyright Holder of a given Package. If the
-terms of this license do not permit the full use that you propose to
-make of the Package, you should contact the Copyright Holder and seek
-a different licensing arrangement.
-
-Definitions
-
- "Copyright Holder" means the individual(s) or organization(s)
- named in the copyright notice for the entire Package.
-
- "Contributor" means any party that has contributed code or other
- material to the Package, in accordance with the Copyright Holder's
- procedures.
-
- "You" and "your" means any person who would like to copy,
- distribute, or modify the Package.
-
- "Package" means the collection of files distributed by the
- Copyright Holder, and derivatives of that collection and/or of
- those files. A given Package may consist of either the Standard
- Version, or a Modified Version.
-
- "Distribute" means providing a copy of the Package or making it
- accessible to anyone else, or in the case of a company or
- organization, to others outside of your company or organization.
-
- "Distributor Fee" means any fee that you charge for Distributing
- this Package or providing support for this Package to another
- party. It does not mean licensing fees.
-
- "Standard Version" refers to the Package if it has not been
- modified, or has been modified only in ways explicitly requested
- by the Copyright Holder.
-
- "Modified Version" means the Package, if it has been changed, and
- such changes were not explicitly requested by the Copyright
- Holder.
-
- "Original License" means this Artistic License as Distributed with
- the Standard Version of the Package, in its current version or as
- it may be modified by The Perl Foundation in the future.
-
- "Source" form means the source code, documentation source, and
- configuration files for the Package.
-
- "Compiled" form means the compiled bytecode, object code, binary,
- or any other form resulting from mechanical transformation or
- translation of the Source form.
-
-
-Permission for Use and Modification Without Distribution
-
-(1) You are permitted to use the Standard Version and create and use
-Modified Versions for any purpose without restriction, provided that
-you do not Distribute the Modified Version.
-
-
-Permissions for Redistribution of the Standard Version
-
-(2) You may Distribute verbatim copies of the Source form of the
-Standard Version of this Package in any medium without restriction,
-either gratis or for a Distributor Fee, provided that you duplicate
-all of the original copyright notices and associated disclaimers. At
-your discretion, such verbatim copies may or may not include a
-Compiled form of the Package.
-
-(3) You may apply any bug fixes, portability changes, and other
-modifications made available from the Copyright Holder. The resulting
-Package will still be considered the Standard Version, and as such
-will be subject to the Original License.
-
-
-Distribution of Modified Versions of the Package as Source
-
-(4) You may Distribute your Modified Version as Source (either gratis
-or for a Distributor Fee, and with or without a Compiled form of the
-Modified Version) provided that you clearly document how it differs
-from the Standard Version, including, but not limited to, documenting
-any non-standard features, executables, or modules, and provided that
-you do at least ONE of the following:
-
- (a) make the Modified Version available to the Copyright Holder
- of the Standard Version, under the Original License, so that the
- Copyright Holder may include your modifications in the Standard
- Version.
-
- (b) ensure that installation of your Modified Version does not
- prevent the user installing or running the Standard Version. In
- addition, the Modified Version must bear a name that is different
- from the name of the Standard Version.
-
- (c) allow anyone who receives a copy of the Modified Version to
- make the Source form of the Modified Version available to others
- under
-
- (i) the Original License or
-
- (ii) a license that permits the licensee to freely copy,
- modify and redistribute the Modified Version using the same
- licensing terms that apply to the copy that the licensee
- received, and requires that the Source form of the Modified
- Version, and of any works derived from it, be made freely
- available in that license fees are prohibited but Distributor
- Fees are allowed.
-
-
-Distribution of Compiled Forms of the Standard Version
-or Modified Versions without the Source
-
-(5) You may Distribute Compiled forms of the Standard Version without
-the Source, provided that you include complete instructions on how to
-get the Source of the Standard Version. Such instructions must be
-valid at the time of your distribution. If these instructions, at any
-time while you are carrying out such distribution, become invalid, you
-must provide new instructions on demand or cease further distribution.
-If you provide valid instructions or cease distribution within thirty
-days after you become aware that the instructions are invalid, then
-you do not forfeit any of your rights under this license.
-
-(6) You may Distribute a Modified Version in Compiled form without
-the Source, provided that you comply with Section 4 with respect to
-the Source of the Modified Version.
-
-
-Aggregating or Linking the Package
-
-(7) You may aggregate the Package (either the Standard Version or
-Modified Version) with other packages and Distribute the resulting
-aggregation provided that you do not charge a licensing fee for the
-Package. Distributor Fees are permitted, and licensing fees for other
-components in the aggregation are permitted. The terms of this license
-apply to the use and Distribution of the Standard or Modified Versions
-as included in the aggregation.
-
-(8) You are permitted to link Modified and Standard Versions with
-other works, to embed the Package in a larger work of your own, or to
-build stand-alone binary or bytecode versions of applications that
-include the Package, and Distribute the result without restriction,
-provided the result does not expose a direct interface to the Package.
-
-
-Items That are Not Considered Part of a Modified Version
-
-(9) Works (including, but not limited to, modules and scripts) that
-merely extend or make use of the Package, do not, by themselves, cause
-the Package to be a Modified Version. In addition, such works are not
-considered parts of the Package itself, and are not subject to the
-terms of this license.
-
-
-General Provisions
-
-(10) Any use, modification, and distribution of the Standard or
-Modified Versions is governed by this Artistic License. By using,
-modifying or distributing the Package, you accept this license. Do not
-use, modify, or distribute the Package, if you do not accept this
-license.
-
-(11) If your Modified Version has been derived from a Modified
-Version made by someone other than you, you are nevertheless required
-to ensure that your Modified Version complies with the requirements of
-this license.
-
-(12) This license does not grant you the right to use any trademark,
-service mark, tradename, or logo of the Copyright Holder.
-
-(13) This license includes the non-exclusive, worldwide,
-free-of-charge patent license to make, have made, use, offer to sell,
-sell, import and otherwise transfer the Package with respect to any
-patent claims licensable by the Copyright Holder that are necessarily
-infringed by the Package. If you institute patent litigation
-(including a cross-claim or counterclaim) against any party alleging
-that the Package constitutes direct or contributory patent
-infringement, then this Artistic License to you shall terminate on the
-date that such litigation is filed.
-
-(14) Disclaimer of Warranty:
-THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
-IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
-NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
-LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
---------
diff --git a/node_modules/npm/README.md b/node_modules/npm/README.md
deleted file mode 100644
index cffee24..0000000
--- a/node_modules/npm/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# npm - a JavaScript package manager
-
-[![npm version](https://img.shields.io/npm/v/npm.svg)](https://npm.im/npm)
-[![license](https://img.shields.io/npm/l/npm.svg)](https://npm.im/npm)
-[![CI - cli](https://github.com/npm/cli/actions/workflows/ci.yml/badge.svg)](https://github.com/npm/cli/actions/workflows/ci.yml)
-[![Benchmark Suite](https://github.com/npm/cli/actions/workflows/benchmark.yml/badge.svg)](https://github.com/npm/cli/actions/workflows/benchmark.yml)
-
-### Requirements
-
-One of the following versions of [Node.js](https://nodejs.org/en/download/) must be installed to run **`npm`**:
-
-* `18.x.x` >= `18.17.0`
-* `20.5.0` or higher
-
-### Installation
-
-**`npm`** comes bundled with [**`node`**](https://nodejs.org/), & most third-party distributions, by default. Officially supported downloads/distributions can be found at: [nodejs.org/en/download](https://nodejs.org/en/download)
-
-#### Direct Download
-
-You can download & install **`npm`** directly from [**npmjs**.com](https://npmjs.com/) using our custom `install.sh` script:
-
-```bash
-curl -qL https://www.npmjs.com/install.sh | sh
-```
-
-#### Node Version Managers
-
-If you're looking to manage multiple versions of **`Node.js`** &/or **`npm`**, consider using a [node version manager](https://github.com/search?q=node+version+manager+archived%3Afalse&type=repositories&ref=advsearch)
-
-### Usage
-
-```bash
-npm