unvendor: Replace css-tools

c3f62b8699bcfb6529bfe2ca39e7507b1dcd559c

Cohee <18619528+Cohee1207@users.noreply.github.com>

6 files changed, +12 -767Showing whitespace changes
package-lock.json+7 -0
@@ -10,6 +10,7 @@
10 "hasInstallScript": true,10 "hasInstallScript": true,
11 "license": "AGPL-3.0",11 "license": "AGPL-3.0",
12 "dependencies": {12 "dependencies": {
13 "@adobe/css-tools": "^4.4.0",
13 "@agnai/sentencepiece-js": "^1.1.1",14 "@agnai/sentencepiece-js": "^1.1.1",
14 "@agnai/web-tokenizers": "^0.1.3",15 "@agnai/web-tokenizers": "^0.1.3",
15 "@zeldafan0225/ai_horde": "^5.1.0",16 "@zeldafan0225/ai_horde": "^5.1.0",
@@ -103,6 +104,12 @@
103 "node": ">=0.10.0"104 "node": ">=0.10.0"
104 }105 }
105 },106 },
107 "node_modules/@adobe/css-tools": {
108 "version": "4.4.0",
109 "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz",
110 "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==",
111 "license": "MIT"
112 },
106 "node_modules/@agnai/sentencepiece-js": {113 "node_modules/@agnai/sentencepiece-js": {
107 "version": "1.1.1",114 "version": "1.1.1",
108 "resolved": "https://registry.npmjs.org/@agnai/sentencepiece-js/-/sentencepiece-js-1.1.1.tgz",115 "resolved": "https://registry.npmjs.org/@agnai/sentencepiece-js/-/sentencepiece-js-1.1.1.tgz",
package.json+1 -0
@@ -1,5 +1,6 @@
1{1{
2 "dependencies": {2 "dependencies": {
3 "@adobe/css-tools": "^4.4.0",
3 "@agnai/sentencepiece-js": "^1.1.1",4 "@agnai/sentencepiece-js": "^1.1.1",
4 "@agnai/web-tokenizers": "^0.1.3",5 "@agnai/web-tokenizers": "^0.1.3",
5 "@zeldafan0225/ai_horde": "^5.1.0",6 "@zeldafan0225/ai_horde": "^5.1.0",
public/lib.js+3 -0
@@ -7,6 +7,7 @@ import DOMPurify from 'dompurify';
7import hljs from 'highlight.js';7import hljs from 'highlight.js';
8import localforage from 'localforage';8import localforage from 'localforage';
9import Handlebars from 'handlebars';9import Handlebars from 'handlebars';
10import css from '@adobe/css-tools';
1011
11/**12/**
12 * Expose the libraries to the 'window' object.13 * Expose the libraries to the 'window' object.
@@ -45,6 +46,7 @@ export default {
45 hljs,46 hljs,
46 localforage,47 localforage,
47 Handlebars,48 Handlebars,
49 css,
48};50};
4951
50export {52export {
@@ -53,4 +55,5 @@ export {
53 hljs,55 hljs,
54 localforage,56 localforage,
55 Handlebars,57 Handlebars,
58 css,
56};59};
public/lib/css-parser.map+0 -1
@@ -1 +0,0 @@
1{"mappings":"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","sources":["src/index.ts","src/parse/index.ts","src/CssParseError.ts","src/CssPosition.ts","src/type.ts","src/stringify/index.ts","src/stringify/compiler.ts"],"sourcesContent":["import {default as parseFn} from './parse';\nimport {default as stringifyFn} from './stringify';\nexport const parse = parseFn;\nexport const stringify = stringifyFn;\nexport * from './type';\nexport * from './CssParseError';\nexport * from './CssPosition';\nexport default {parse, stringify};\n","import CssParseError from '../CssParseError';\nimport Position from '../CssPosition';\nimport {\n CssAtRuleAST,\n CssCharsetAST,\n CssCommentAST,\n CssCommonPositionAST,\n CssContainerAST,\n CssCustomMediaAST,\n CssDeclarationAST,\n CssDocumentAST,\n CssFontFaceAST,\n CssHostAST,\n CssImportAST,\n CssKeyframeAST,\n CssKeyframesAST,\n CssLayerAST,\n CssMediaAST,\n CssNamespaceAST,\n CssPageAST,\n CssRuleAST,\n CssStylesheetAST,\n CssSupportsAST,\n CssTypes,\n} from '../type';\n\n// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\n// New rule => https://www.w3.org/TR/CSS22/syndata.html#comments\n// [^] is equivalent to [.\\n\\r]\nconst commentre = /\\/\\*[^]*?(?:\\*\\/|$)/g;\n\nexport const parse = (\n css: string,\n options?: {source?: string; silent?: boolean}\n): CssStylesheetAST => {\n options = options || {};\n\n /**\n * Positional.\n */\n let lineno = 1;\n let column = 1;\n\n /**\n * Update lineno and column based on `str`.\n */\n function updatePosition(str: string) {\n const lines = str.match(/\\n/g);\n if (lines) lineno += lines.length;\n const i = str.lastIndexOf('\\n');\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n */\n function position() {\n const start = {line: lineno, column: column};\n return function <T1 extends CssCommonPositionAST>(\n node: Omit<T1, 'position'>\n ): T1 {\n (node as T1).position = new Position(\n start,\n {line: lineno, column: column},\n options?.source || ''\n );\n whitespace();\n return node as T1;\n };\n }\n\n /**\n * Error `msg`.\n */\n const errorsList: Array<CssParseError> = [];\n\n function error(msg: string) {\n const err = new CssParseError(\n options?.source || '',\n msg,\n lineno,\n column,\n css\n );\n\n if (options?.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Parse stylesheet.\n */\n function stylesheet(): CssStylesheetAST {\n const rulesList = rules();\n\n const result: CssStylesheetAST = {\n type: CssTypes.stylesheet,\n stylesheet: {\n source: options?.source,\n rules: rulesList,\n parsingErrors: errorsList,\n },\n };\n\n return result;\n }\n\n /**\n * Opening brace.\n */\n function open() {\n return match(/^{\\s*/);\n }\n\n /**\n * Closing brace.\n */\n function close() {\n return match(/^}/);\n }\n\n /**\n * Parse ruleset.\n */\n function rules() {\n let node: CssRuleAST | CssAtRuleAST | void;\n const rules: Array<CssRuleAST | CssAtRuleAST> = [];\n whitespace();\n comments(rules);\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\n if (node) {\n rules.push(node);\n comments(rules);\n }\n }\n return rules;\n }\n\n /**\n * Match `re` and return captures.\n */\n function match(re: RegExp) {\n const m = re.exec(css);\n if (!m) {\n return;\n }\n const str = m[0];\n updatePosition(str);\n css = css.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(/^\\s*/);\n }\n\n /**\n * Parse comments;\n */\n function comments<T1 extends CssCommonPositionAST>(\n rules?: Array<T1 | CssCommentAST>\n ) {\n let c;\n rules = rules || [];\n while ((c = comment())) {\n if (c) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n */\n function comment(): CssCommentAST | void {\n const pos = position();\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\n return;\n }\n\n const m = match(/^\\/\\*[^]*?\\*\\//);\n if (!m) {\n return error('End of comment missing');\n }\n\n return pos<CssCommentAST>({\n type: CssTypes.comment,\n comment: m[0].slice(2, -2),\n });\n }\n\n function findClosingParenthese(\n str: string,\n start: number,\n depth: number\n ): number {\n let ptr = start + 1;\n let found = false;\n let closeParentheses = str.indexOf(')', ptr);\n while (!found && closeParentheses !== -1) {\n const nextParentheses = str.indexOf('(', ptr);\n if (nextParentheses !== -1 && nextParentheses < closeParentheses) {\n const nextSearch = findClosingParenthese(\n str,\n nextParentheses + 1,\n depth + 1\n );\n ptr = nextSearch + 1;\n closeParentheses = str.indexOf(')', ptr);\n } else {\n found = true;\n }\n }\n if (found && closeParentheses !== -1) {\n return closeParentheses;\n } else {\n return -1;\n }\n }\n\n /**\n * Parse selector.\n */\n function selector() {\n const m = match(/^([^{]+)/);\n if (!m) {\n return;\n }\n\n // remove comment in selector;\n let res = trim(m[0]).replace(commentre, '');\n\n // Optimisation: If there is no ',' no need to split or post-process (this is less costly)\n if (res.indexOf(',') === -1) {\n return [res];\n }\n\n // Replace all the , in the parentheses by \\u200C\n let ptr = 0;\n let startParentheses = res.indexOf('(', ptr);\n while (startParentheses !== -1) {\n const closeParentheses = findClosingParenthese(res, startParentheses, 0);\n if (closeParentheses === -1) {\n break;\n }\n ptr = closeParentheses + 1;\n res =\n res.substring(0, startParentheses) +\n res\n .substring(startParentheses, closeParentheses)\n .replace(/,/g, '\\u200C') +\n res.substring(closeParentheses);\n startParentheses = res.indexOf('(', ptr);\n }\n\n // Replace all the , in ' and \" by \\u200C\n res = res\n /**\n * replace ',' by \\u200C for data selector (div[data-lang=\"fr,de,us\"])\n *\n * Examples:\n * div[data-lang=\"fr,\\\"de,us\"]\n * div[data-lang='fr,\\'de,us']\n *\n * Regex logic:\n * (\"|')(?:\\\\\\1|.)*?\\1 => Handle the \" and '\n *\n * Optimization 1:\n * No greedy capture (see docs about the difference between .* and .*?)\n *\n * Optimization 2:\n * (\"|')(?:\\\\\\1|.)*?\\1 this use reference to capture group, it work faster.\n */\n .replace(/(\"|')(?:\\\\\\1|.)*?\\1/g, m => m.replace(/,/g, '\\u200C'));\n\n // Split all the left , and replace all the \\u200C by ,\n return (\n res\n // Split the selector by ','\n .split(',')\n // Replace back \\u200C by ','\n .map(s => {\n return trim(s.replace(/\\u200C/g, ','));\n })\n );\n }\n\n /**\n * Parse declaration.\n */\n function declaration(): CssDeclarationAST | void {\n const pos = position();\n\n // prop\n const propMatch = match(/^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n if (!propMatch) {\n return;\n }\n const propValue = trim(propMatch[0]);\n\n // :\n if (!match(/^:\\s*/)) {\n return error(\"property missing ':'\");\n }\n\n // val\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/);\n\n const ret = pos<CssDeclarationAST>({\n type: CssTypes.declaration,\n property: propValue.replace(commentre, ''),\n value: val ? trim(val[0]).replace(commentre, '') : '',\n });\n\n // ;\n match(/^[;\\s]*/);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n */\n function declarations() {\n const decls: Array<CssDeclarationAST | CssCommentAST> = [];\n\n if (!open()) {\n return error(\"missing '{'\");\n }\n comments(decls);\n\n // declarations\n let decl;\n while ((decl = declaration())) {\n if (decl) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n if (!close()) {\n return error(\"missing '}'\");\n }\n return decls;\n }\n\n /**\n * Parse keyframe.\n */\n function keyframe() {\n let m;\n const vals = [];\n const pos = position();\n\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n\n if (!vals.length) {\n return;\n }\n\n return pos<CssKeyframeAST>({\n type: CssTypes.keyframe,\n values: vals,\n declarations: declarations() || [],\n });\n }\n\n /**\n * Parse keyframes.\n */\n function atkeyframes(): CssKeyframesAST | void {\n const pos = position();\n const m1 = match(/^@([-\\w]+)?keyframes\\s*/);\n\n if (!m1) {\n return;\n }\n const vendor = m1[1];\n\n // identifier\n const m2 = match(/^([-\\w]+)\\s*/);\n if (!m2) {\n return error('@keyframes missing name');\n }\n const name = m2[1];\n\n if (!open()) {\n return error(\"@keyframes missing '{'\");\n }\n\n let frame;\n let frames: Array<CssKeyframeAST | CssCommentAST> = comments();\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n\n if (!close()) {\n return error(\"@keyframes missing '}'\");\n }\n\n return pos<CssKeyframesAST>({\n type: CssTypes.keyframes,\n name: name,\n vendor: vendor,\n keyframes: frames,\n });\n }\n\n /**\n * Parse supports.\n */\n function atsupports(): CssSupportsAST | void {\n const pos = position();\n const m = match(/^@supports *([^{]+)/);\n\n if (!m) {\n return;\n }\n const supports = trim(m[1]);\n\n if (!open()) {\n return error(\"@supports missing '{'\");\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@supports missing '}'\");\n }\n\n return pos<CssSupportsAST>({\n type: CssTypes.supports,\n supports: supports,\n rules: style,\n });\n }\n\n /**\n * Parse host.\n */\n function athost() {\n const pos = position();\n const m = match(/^@host\\s*/);\n\n if (!m) {\n return;\n }\n\n if (!open()) {\n return error(\"@host missing '{'\");\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@host missing '}'\");\n }\n\n return pos<CssHostAST>({\n type: CssTypes.host,\n rules: style,\n });\n }\n\n /**\n * Parse container.\n */\n function atcontainer(): CssContainerAST | void {\n const pos = position();\n const m = match(/^@container *([^{]+)/);\n\n if (!m) {\n return;\n }\n const container = trim(m[1]);\n\n if (!open()) {\n return error(\"@container missing '{'\");\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@container missing '}'\");\n }\n\n return pos<CssContainerAST>({\n type: CssTypes.container,\n container: container,\n rules: style,\n });\n }\n\n /**\n * Parse container.\n */\n function atlayer(): CssLayerAST | void {\n const pos = position();\n const m = match(/^@layer *([^{;@]+)/);\n\n if (!m) {\n return;\n }\n const layer = trim(m[1]);\n\n if (!open()) {\n match(/^[;\\s]*/);\n return pos<CssLayerAST>({\n type: CssTypes.layer,\n layer: layer,\n });\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@layer missing '}'\");\n }\n\n return pos<CssLayerAST>({\n type: CssTypes.layer,\n layer: layer,\n rules: style,\n });\n }\n\n /**\n * Parse media.\n */\n function atmedia(): CssMediaAST | void {\n const pos = position();\n const m = match(/^@media *([^{]+)/);\n\n if (!m) {\n return;\n }\n const media = trim(m[1]);\n\n if (!open()) {\n return error(\"@media missing '{'\");\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@media missing '}'\");\n }\n\n return pos<CssMediaAST>({\n type: CssTypes.media,\n media: media,\n rules: style,\n });\n }\n\n /**\n * Parse custom-media.\n */\n function atcustommedia(): CssCustomMediaAST | void {\n const pos = position();\n const m = match(/^@custom-media\\s+(--\\S+)\\s*([^{;\\s][^{;]*);/);\n if (!m) {\n return;\n }\n\n return pos<CssCustomMediaAST>({\n type: CssTypes.customMedia,\n name: trim(m[1]),\n media: trim(m[2]),\n });\n }\n\n /**\n * Parse paged media.\n */\n function atpage(): CssPageAST | void {\n const pos = position();\n const m = match(/^@page */);\n if (!m) {\n return;\n }\n\n const sel = selector() || [];\n\n if (!open()) {\n return error(\"@page missing '{'\");\n }\n let decls = comments<CssDeclarationAST>();\n\n // declarations\n let decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n\n if (!close()) {\n return error(\"@page missing '}'\");\n }\n\n return pos<CssPageAST>({\n type: CssTypes.page,\n selectors: sel,\n declarations: decls,\n });\n }\n\n /**\n * Parse document.\n */\n function atdocument(): CssDocumentAST | void {\n const pos = position();\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (!m) {\n return;\n }\n\n const vendor = trim(m[1]);\n const doc = trim(m[2]);\n\n if (!open()) {\n return error(\"@document missing '{'\");\n }\n\n const style = comments<CssAtRuleAST>().concat(rules());\n\n if (!close()) {\n return error(\"@document missing '}'\");\n }\n\n return pos<CssDocumentAST>({\n type: CssTypes.document,\n document: doc,\n vendor: vendor,\n rules: style,\n });\n }\n\n /**\n * Parse font-face.\n */\n function atfontface(): CssFontFaceAST | void {\n const pos = position();\n const m = match(/^@font-face\\s*/);\n if (!m) {\n return;\n }\n\n if (!open()) {\n return error(\"@font-face missing '{'\");\n }\n let decls = comments<CssDeclarationAST>();\n\n // declarations\n let decl;\n while ((decl = declaration())) {\n decls.push(decl);\n decls = decls.concat(comments());\n }\n\n if (!close()) {\n return error(\"@font-face missing '}'\");\n }\n\n return pos<CssFontFaceAST>({\n type: CssTypes.fontFace,\n declarations: decls,\n });\n }\n\n /**\n * Parse import\n */\n const atimport = _compileAtrule<CssImportAST>('import');\n\n /**\n * Parse charset\n */\n const atcharset = _compileAtrule<CssCharsetAST>('charset');\n\n /**\n * Parse namespace\n */\n const atnamespace = _compileAtrule<CssNamespaceAST>('namespace');\n\n /**\n * Parse non-block at-rules\n */\n function _compileAtrule<T1 extends CssCommonPositionAST>(\n name: string\n ): () => T1 | void {\n const re = new RegExp(\n '^@' +\n name +\n '\\\\s*((?::?[^;\\'\"]|\"(?:\\\\\\\\\"|[^\"])*?\"|\\'(?:\\\\\\\\\\'|[^\\'])*?\\')+)(?:;|$)'\n );\n\n // ^@import\\s*([^;\"']|(\"|')(?:\\\\\\2|.)*?\\2)+(;|$)\n\n return function (): T1 | void {\n const pos = position();\n const m = match(re);\n if (!m) {\n return;\n }\n const ret: Record<string, string> = {type: name};\n ret[name] = m[1].trim();\n return pos<T1>(ret as unknown as T1) as T1;\n };\n }\n\n /**\n * Parse at rule.\n */\n function atrule(): CssAtRuleAST | void {\n if (css[0] !== '@') {\n return;\n }\n\n return (\n atkeyframes() ||\n atmedia() ||\n atcustommedia() ||\n atsupports() ||\n atimport() ||\n atcharset() ||\n atnamespace() ||\n atdocument() ||\n atpage() ||\n athost() ||\n atfontface() ||\n atcontainer() ||\n atlayer()\n );\n }\n\n /**\n * Parse rule.\n */\n function rule() {\n const pos = position();\n const sel = selector();\n\n if (!sel) {\n return error('selector missing');\n }\n comments();\n\n return pos<CssRuleAST>({\n type: CssTypes.rule,\n selectors: sel,\n declarations: declarations() || [],\n });\n }\n\n return addParent(stylesheet());\n};\n\n/**\n * Trim `str`.\n */\nfunction trim(str: string) {\n return str ? str.trim() : '';\n}\n\n/**\n * Adds non-enumerable parent node reference to each node.\n */\nfunction addParent<T1 extends {type?: string}>(obj: T1, parent?: unknown): T1 {\n const isNode = obj && typeof obj.type === 'string';\n const childParent = isNode ? obj : parent;\n\n for (const k in obj) {\n const value = obj[k];\n if (Array.isArray(value)) {\n value.forEach(v => {\n addParent(v, childParent);\n });\n } else if (value && typeof value === 'object') {\n addParent(value, childParent);\n }\n }\n\n if (isNode) {\n Object.defineProperty(obj, 'parent', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: parent || null,\n });\n }\n\n return obj;\n}\n\nexport default parse;\n","export default class CssParseError extends Error {\n readonly reason: string;\n readonly filename?: string;\n readonly line: number;\n readonly column: number;\n readonly source: string;\n\n constructor(\n filename: string,\n msg: string,\n lineno: number,\n column: number,\n css: string\n ) {\n super(filename + ':' + lineno + ':' + column + ': ' + msg);\n this.reason = msg;\n this.filename = filename;\n this.line = lineno;\n this.column = column;\n this.source = css;\n }\n}\n","/**\n * Store position information for a node\n */\nexport default class Position {\n start: {line: number; column: number};\n end: {line: number; column: number};\n source?: string;\n\n constructor(\n start: {line: number; column: number},\n end: {line: number; column: number},\n source: string\n ) {\n this.start = start;\n this.end = end;\n this.source = source;\n }\n}\n","import CssParseError from './CssParseError';\nimport Position from './CssPosition';\n\nexport enum CssTypes {\n stylesheet = 'stylesheet',\n rule = 'rule',\n declaration = 'declaration',\n comment = 'comment',\n container = 'container',\n charset = 'charset',\n document = 'document',\n customMedia = 'custom-media',\n fontFace = 'font-face',\n host = 'host',\n import = 'import',\n keyframes = 'keyframes',\n keyframe = 'keyframe',\n layer = 'layer',\n media = 'media',\n namespace = 'namespace',\n page = 'page',\n supports = 'supports',\n}\n\nexport type CssCommonAST = {\n type: CssTypes;\n};\n\nexport type CssCommonPositionAST = CssCommonAST & {\n position?: Position;\n parent?: unknown;\n};\n\nexport type CssStylesheetAST = CssCommonAST & {\n type: CssTypes.stylesheet;\n stylesheet: {\n source?: string;\n rules: Array<CssAtRuleAST>;\n parsingErrors?: Array<CssParseError>;\n };\n};\n\nexport type CssRuleAST = CssCommonPositionAST & {\n type: CssTypes.rule;\n selectors: Array<string>;\n declarations: Array<CssDeclarationAST | CssCommentAST>;\n};\n\nexport type CssDeclarationAST = CssCommonPositionAST & {\n type: CssTypes.declaration;\n property: string;\n value: string;\n};\n\nexport type CssCommentAST = CssCommonPositionAST & {\n type: CssTypes.comment;\n comment: string;\n};\nexport type CssContainerAST = CssCommonPositionAST & {\n type: CssTypes.container;\n container: string;\n rules: Array<CssAtRuleAST>;\n};\n\nexport type CssCharsetAST = CssCommonPositionAST & {\n type: CssTypes.charset;\n charset: string;\n};\nexport type CssCustomMediaAST = CssCommonPositionAST & {\n type: CssTypes.customMedia;\n name: string;\n media: string;\n};\nexport type CssDocumentAST = CssCommonPositionAST & {\n type: CssTypes.document;\n document: string;\n vendor?: string;\n rules: Array<CssAtRuleAST>;\n};\nexport type CssFontFaceAST = CssCommonPositionAST & {\n type: CssTypes.fontFace;\n declarations: Array<CssDeclarationAST | CssCommentAST>;\n};\nexport type CssHostAST = CssCommonPositionAST & {\n type: CssTypes.host;\n rules: Array<CssAtRuleAST>;\n};\nexport type CssImportAST = CssCommonPositionAST & {\n type: CssTypes.import;\n import: string;\n};\nexport type CssKeyframesAST = CssCommonPositionAST & {\n type: CssTypes.keyframes;\n name: string;\n vendor?: string;\n keyframes: Array<CssKeyframeAST | CssCommentAST>;\n};\nexport type CssKeyframeAST = CssCommonPositionAST & {\n type: CssTypes.keyframe;\n values: Array<string>;\n declarations: Array<CssDeclarationAST | CssCommentAST>;\n};\nexport type CssLayerAST = CssCommonPositionAST & {\n type: CssTypes.layer;\n layer: string;\n rules?: Array<CssAtRuleAST>;\n};\nexport type CssMediaAST = CssCommonPositionAST & {\n type: CssTypes.media;\n media: string;\n rules: Array<CssAtRuleAST>;\n};\nexport type CssNamespaceAST = CssCommonPositionAST & {\n type: CssTypes.namespace;\n namespace: string;\n};\nexport type CssPageAST = CssCommonPositionAST & {\n type: CssTypes.page;\n selectors: Array<string>;\n declarations: Array<CssDeclarationAST | CssCommentAST>;\n};\nexport type CssSupportsAST = CssCommonPositionAST & {\n type: CssTypes.supports;\n supports: string;\n rules: Array<CssAtRuleAST>;\n};\n\nexport type CssAtRuleAST =\n | CssRuleAST\n | CssCommentAST\n | CssContainerAST\n | CssCharsetAST\n | CssCustomMediaAST\n | CssDocumentAST\n | CssFontFaceAST\n | CssHostAST\n | CssImportAST\n | CssKeyframesAST\n | CssLayerAST\n | CssMediaAST\n | CssNamespaceAST\n | CssPageAST\n | CssSupportsAST;\n\nexport type CssAllNodesAST =\n | CssAtRuleAST\n | CssStylesheetAST\n | CssDeclarationAST\n | CssKeyframeAST;\n","import {CssStylesheetAST} from '../type';\nimport Compiler from './compiler';\n\nexport default (\n node: CssStylesheetAST,\n options?: ConstructorParameters<typeof Compiler>[0]\n) => {\n const compiler = new Compiler(options || {});\n return compiler.compile(node);\n};\n","import {\n CssAllNodesAST,\n CssCharsetAST,\n CssCommentAST,\n CssCommonPositionAST,\n CssContainerAST,\n CssCustomMediaAST,\n CssDeclarationAST,\n CssDocumentAST,\n CssFontFaceAST,\n CssHostAST,\n CssImportAST,\n CssKeyframeAST,\n CssKeyframesAST,\n CssLayerAST,\n CssMediaAST,\n CssNamespaceAST,\n CssPageAST,\n CssRuleAST,\n CssStylesheetAST,\n CssSupportsAST,\n CssTypes,\n} from '../type';\n\nclass Compiler {\n level = 0;\n indentation = ' ';\n compress = false;\n\n constructor(options?: {indent?: string; compress?: boolean}) {\n if (typeof options?.indent === 'string') {\n this.indentation = options?.indent;\n }\n if (options?.compress) {\n this.compress = true;\n }\n }\n\n // We disable no-unused-vars for _position. We keep position for potential reintroduction of source-map\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n emit(str: string, _position?: CssCommonPositionAST['position']) {\n return str;\n }\n\n /**\n * Increase, decrease or return current indentation.\n */\n indent(level?: number) {\n this.level = this.level || 1;\n\n if (level) {\n this.level += level;\n return '';\n }\n\n return Array(this.level).join(this.indentation);\n }\n\n visit(node: CssAllNodesAST): string {\n switch (node.type) {\n case CssTypes.stylesheet:\n return this.stylesheet(node);\n case CssTypes.rule:\n return this.rule(node);\n case CssTypes.declaration:\n return this.declaration(node);\n case CssTypes.comment:\n return this.comment(node);\n case CssTypes.container:\n return this.container(node);\n case CssTypes.charset:\n return this.charset(node);\n case CssTypes.document:\n return this.document(node);\n case CssTypes.customMedia:\n return this.customMedia(node);\n case CssTypes.fontFace:\n return this.fontFace(node);\n case CssTypes.host:\n return this.host(node);\n case CssTypes.import:\n return this.import(node);\n case CssTypes.keyframes:\n return this.keyframes(node);\n case CssTypes.keyframe:\n return this.keyframe(node);\n case CssTypes.layer:\n return this.layer(node);\n case CssTypes.media:\n return this.media(node);\n case CssTypes.namespace:\n return this.namespace(node);\n case CssTypes.page:\n return this.page(node);\n case CssTypes.supports:\n return this.supports(node);\n }\n }\n\n mapVisit(nodes: Array<CssAllNodesAST>, delim?: string) {\n let buf = '';\n delim = delim || '';\n\n for (let i = 0, length = nodes.length; i < length; i++) {\n buf += this.visit(nodes[i]);\n if (delim && i < length - 1) {\n buf += this.emit(delim);\n }\n }\n\n return buf;\n }\n\n compile(node: CssStylesheetAST) {\n if (this.compress) {\n return node.stylesheet.rules.map(this.visit, this).join('');\n }\n\n return this.stylesheet(node);\n }\n\n /**\n * Visit stylesheet node.\n */\n stylesheet(node: CssStylesheetAST) {\n return this.mapVisit(node.stylesheet.rules, '\\n\\n');\n }\n\n /**\n * Visit comment node.\n */\n comment(node: CssCommentAST) {\n if (this.compress) {\n return this.emit('', node.position);\n }\n return this.emit(this.indent() + '/*' + node.comment + '*/', node.position);\n }\n\n /**\n * Visit container node.\n */\n container(node: CssContainerAST) {\n if (this.compress) {\n return (\n this.emit('@container ' + node.container, node.position) +\n this.emit('{') +\n this.mapVisit(node.rules) +\n this.emit('}')\n );\n }\n return (\n this.emit(this.indent() + '@container ' + node.container, node.position) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(node.rules, '\\n\\n') +\n this.emit('\\n' + this.indent(-1) + this.indent() + '}')\n );\n }\n\n /**\n * Visit container node.\n */\n layer(node: CssLayerAST) {\n if (this.compress) {\n return (\n this.emit('@layer ' + node.layer, node.position) +\n (node.rules\n ? this.emit('{') +\n this.mapVisit(<CssAllNodesAST[]>node.rules) +\n this.emit('}')\n : ';')\n );\n }\n return (\n this.emit(this.indent() + '@layer ' + node.layer, node.position) +\n (node.rules\n ? this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(<CssAllNodesAST[]>node.rules, '\\n\\n') +\n this.emit('\\n' + this.indent(-1) + this.indent() + '}')\n : ';')\n );\n }\n\n /**\n * Visit import node.\n */\n import(node: CssImportAST) {\n return this.emit('@import ' + node.import + ';', node.position);\n }\n\n /**\n * Visit media node.\n */\n media(node: CssMediaAST) {\n if (this.compress) {\n return (\n this.emit('@media ' + node.media, node.position) +\n this.emit('{') +\n this.mapVisit(node.rules) +\n this.emit('}')\n );\n }\n return (\n this.emit(this.indent() + '@media ' + node.media, node.position) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(node.rules, '\\n\\n') +\n this.emit('\\n' + this.indent(-1) + this.indent() + '}')\n );\n }\n\n /**\n * Visit document node.\n */\n document(node: CssDocumentAST) {\n const doc = '@' + (node.vendor || '') + 'document ' + node.document;\n if (this.compress) {\n return (\n this.emit(doc, node.position) +\n this.emit('{') +\n this.mapVisit(node.rules) +\n this.emit('}')\n );\n }\n return (\n this.emit(doc, node.position) +\n this.emit(' ' + ' {\\n' + this.indent(1)) +\n this.mapVisit(node.rules, '\\n\\n') +\n this.emit(this.indent(-1) + '\\n}')\n );\n }\n\n /**\n * Visit charset node.\n */\n charset(node: CssCharsetAST) {\n return this.emit('@charset ' + node.charset + ';', node.position);\n }\n\n /**\n * Visit namespace node.\n */\n namespace(node: CssNamespaceAST) {\n return this.emit('@namespace ' + node.namespace + ';', node.position);\n }\n\n /**\n * Visit supports node.\n */\n supports(node: CssSupportsAST) {\n if (this.compress) {\n return (\n this.emit('@supports ' + node.supports, node.position) +\n this.emit('{') +\n this.mapVisit(node.rules) +\n this.emit('}')\n );\n }\n return (\n this.emit(this.indent() + '@supports ' + node.supports, node.position) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(node.rules, '\\n\\n') +\n this.emit('\\n' + this.indent(-1) + this.indent() + '}')\n );\n }\n\n /**\n * Visit keyframes node.\n */\n keyframes(node: CssKeyframesAST) {\n if (this.compress) {\n return (\n this.emit(\n '@' + (node.vendor || '') + 'keyframes ' + node.name,\n node.position\n ) +\n this.emit('{') +\n this.mapVisit(node.keyframes) +\n this.emit('}')\n );\n }\n return (\n this.emit(\n '@' + (node.vendor || '') + 'keyframes ' + node.name,\n node.position\n ) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(node.keyframes, '\\n') +\n this.emit(this.indent(-1) + '}')\n );\n }\n\n /**\n * Visit keyframe node.\n */\n keyframe(node: CssKeyframeAST) {\n const decls = node.declarations;\n if (this.compress) {\n return (\n this.emit(node.values.join(','), node.position) +\n this.emit('{') +\n this.mapVisit(decls) +\n this.emit('}')\n );\n }\n\n return (\n this.emit(this.indent()) +\n this.emit(node.values.join(', '), node.position) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(decls, '\\n') +\n this.emit(this.indent(-1) + '\\n' + this.indent() + '}\\n')\n );\n }\n\n /**\n * Visit page node.\n */\n page(node: CssPageAST) {\n if (this.compress) {\n const sel = node.selectors.length ? node.selectors.join(', ') : '';\n\n return (\n this.emit('@page ' + sel, node.position) +\n this.emit('{') +\n this.mapVisit(node.declarations) +\n this.emit('}')\n );\n }\n const sel = node.selectors.length ? node.selectors.join(', ') + ' ' : '';\n\n return (\n this.emit('@page ' + sel, node.position) +\n this.emit('{\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(node.declarations, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit('\\n}')\n );\n }\n\n /**\n * Visit font-face node.\n */\n fontFace(node: CssFontFaceAST) {\n if (this.compress) {\n return (\n this.emit('@font-face', node.position) +\n this.emit('{') +\n this.mapVisit(node.declarations) +\n this.emit('}')\n );\n }\n return (\n this.emit('@font-face ', node.position) +\n this.emit('{\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(node.declarations, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit('\\n}')\n );\n }\n\n /**\n * Visit host node.\n */\n host(node: CssHostAST) {\n if (this.compress) {\n return (\n this.emit('@host', node.position) +\n this.emit('{') +\n this.mapVisit(node.rules) +\n this.emit('}')\n );\n }\n return (\n this.emit('@host', node.position) +\n this.emit(' {\\n' + this.indent(1)) +\n this.mapVisit(node.rules, '\\n\\n') +\n this.emit(this.indent(-1) + '\\n}')\n );\n }\n\n /**\n * Visit custom-media node.\n */\n customMedia(node: CssCustomMediaAST) {\n return this.emit(\n '@custom-media ' + node.name + ' ' + node.media + ';',\n node.position\n );\n }\n\n /**\n * Visit rule node.\n */\n rule(node: CssRuleAST) {\n const decls = node.declarations;\n if (!decls.length) {\n return '';\n }\n\n if (this.compress) {\n return (\n this.emit(node.selectors.join(','), node.position) +\n this.emit('{') +\n this.mapVisit(decls) +\n this.emit('}')\n );\n }\n const indent = this.indent();\n\n return (\n this.emit(\n node.selectors\n .map(s => {\n return indent + s;\n })\n .join(',\\n'),\n node.position\n ) +\n this.emit(' {\\n') +\n this.emit(this.indent(1)) +\n this.mapVisit(decls, '\\n') +\n this.emit(this.indent(-1)) +\n this.emit('\\n' + this.indent() + '}')\n );\n }\n\n /**\n * Visit declaration node.\n */\n declaration(node: CssDeclarationAST) {\n if (this.compress) {\n return (\n this.emit(node.property + ':' + node.value, node.position) +\n this.emit(';')\n );\n }\n return (\n this.emit(this.indent()) +\n this.emit(node.property + ': ' + node.value, node.position) +\n this.emit(';')\n );\n }\n}\n\nexport default Compiler;\n"],"names":[],"version":3,"file":"index.mjs.map"}
1 \ No newline at end of file \ No newline at end of file
public/lib/css-parser.mjs+0 -765
@@ -1,765 +0,0 @@
1
2function $parcel$defineInteropFlag(a) {
3 Object.defineProperty(a, '__esModule', {value: true, configurable: true});
4}
5
6function $parcel$export(e, n, v, s) {
7 Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
8}
9var $009ddb00d3ec72b8$exports = {};
10
11$parcel$defineInteropFlag($009ddb00d3ec72b8$exports);
12
13$parcel$export($009ddb00d3ec72b8$exports, "default", () => $009ddb00d3ec72b8$export$2e2bcd8739ae039);
14class $009ddb00d3ec72b8$export$2e2bcd8739ae039 extends Error {
15 constructor(filename, msg, lineno, column, css){
16 super(filename + ":" + lineno + ":" + column + ": " + msg);
17 this.reason = msg;
18 this.filename = filename;
19 this.line = lineno;
20 this.column = column;
21 this.source = css;
22 }
23}
24
25
26var $0865a9fb4cc365fe$exports = {};
27
28$parcel$defineInteropFlag($0865a9fb4cc365fe$exports);
29
30$parcel$export($0865a9fb4cc365fe$exports, "default", () => $0865a9fb4cc365fe$export$2e2bcd8739ae039);
31/**
32 * Store position information for a node
33 */ class $0865a9fb4cc365fe$export$2e2bcd8739ae039 {
34 constructor(start, end, source){
35 this.start = start;
36 this.end = end;
37 this.source = source;
38 }
39}
40
41
42var $b2e137848b48cf4f$exports = {};
43
44$parcel$export($b2e137848b48cf4f$exports, "CssTypes", () => $b2e137848b48cf4f$export$9be5dd6e61d5d73a);
45var $b2e137848b48cf4f$export$9be5dd6e61d5d73a;
46(function(CssTypes) {
47 CssTypes["stylesheet"] = "stylesheet";
48 CssTypes["rule"] = "rule";
49 CssTypes["declaration"] = "declaration";
50 CssTypes["comment"] = "comment";
51 CssTypes["container"] = "container";
52 CssTypes["charset"] = "charset";
53 CssTypes["document"] = "document";
54 CssTypes["customMedia"] = "custom-media";
55 CssTypes["fontFace"] = "font-face";
56 CssTypes["host"] = "host";
57 CssTypes["import"] = "import";
58 CssTypes["keyframes"] = "keyframes";
59 CssTypes["keyframe"] = "keyframe";
60 CssTypes["layer"] = "layer";
61 CssTypes["media"] = "media";
62 CssTypes["namespace"] = "namespace";
63 CssTypes["page"] = "page";
64 CssTypes["supports"] = "supports";
65})($b2e137848b48cf4f$export$9be5dd6e61d5d73a || ($b2e137848b48cf4f$export$9be5dd6e61d5d73a = {}));
66
67
68// http://www.w3.org/TR/CSS21/grammar.html
69// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
70// New rule => https://www.w3.org/TR/CSS22/syndata.html#comments
71// [^] is equivalent to [.\n\r]
72const $d708735ed1303b43$var$commentre = /\/\*[^]*?(?:\*\/|$)/g;
73const $d708735ed1303b43$export$98e6a39c04603d36 = (css, options)=>{
74 options = options || {};
75 /**
76 * Positional.
77 */ let lineno = 1;
78 let column = 1;
79 /**
80 * Update lineno and column based on `str`.
81 */ function updatePosition(str) {
82 const lines = str.match(/\n/g);
83 if (lines) lineno += lines.length;
84 const i = str.lastIndexOf("\n");
85 column = ~i ? str.length - i : column + str.length;
86 }
87 /**
88 * Mark position and patch `node.position`.
89 */ function position() {
90 const start = {
91 line: lineno,
92 column: column
93 };
94 return function(node) {
95 node.position = new (0, $0865a9fb4cc365fe$export$2e2bcd8739ae039)(start, {
96 line: lineno,
97 column: column
98 }, options?.source || "");
99 whitespace();
100 return node;
101 };
102 }
103 /**
104 * Error `msg`.
105 */ const errorsList = [];
106 function error(msg) {
107 const err = new (0, $009ddb00d3ec72b8$export$2e2bcd8739ae039)(options?.source || "", msg, lineno, column, css);
108 if (options?.silent) errorsList.push(err);
109 else throw err;
110 }
111 /**
112 * Parse stylesheet.
113 */ function stylesheet() {
114 const rulesList = rules();
115 const result = {
116 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).stylesheet,
117 stylesheet: {
118 source: options?.source,
119 rules: rulesList,
120 parsingErrors: errorsList
121 }
122 };
123 return result;
124 }
125 /**
126 * Opening brace.
127 */ function open() {
128 return match(/^{\s*/);
129 }
130 /**
131 * Closing brace.
132 */ function close() {
133 return match(/^}/);
134 }
135 /**
136 * Parse ruleset.
137 */ function rules() {
138 let node;
139 const rules = [];
140 whitespace();
141 comments(rules);
142 while(css.length && css.charAt(0) !== "}" && (node = atrule() || rule()))if (node) {
143 rules.push(node);
144 comments(rules);
145 }
146 return rules;
147 }
148 /**
149 * Match `re` and return captures.
150 */ function match(re) {
151 const m = re.exec(css);
152 if (!m) return;
153 const str = m[0];
154 updatePosition(str);
155 css = css.slice(str.length);
156 return m;
157 }
158 /**
159 * Parse whitespace.
160 */ function whitespace() {
161 match(/^\s*/);
162 }
163 /**
164 * Parse comments;
165 */ function comments(rules) {
166 let c;
167 rules = rules || [];
168 while(c = comment())if (c) rules.push(c);
169 return rules;
170 }
171 /**
172 * Parse comment.
173 */ function comment() {
174 const pos = position();
175 if ("/" !== css.charAt(0) || "*" !== css.charAt(1)) return;
176 const m = match(/^\/\*[^]*?\*\//);
177 if (!m) return error("End of comment missing");
178 return pos({
179 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).comment,
180 comment: m[0].slice(2, -2)
181 });
182 }
183 function findClosingParenthese(str, start, depth) {
184 let ptr = start + 1;
185 let found = false;
186 let closeParentheses = str.indexOf(")", ptr);
187 while(!found && closeParentheses !== -1){
188 const nextParentheses = str.indexOf("(", ptr);
189 if (nextParentheses !== -1 && nextParentheses < closeParentheses) {
190 const nextSearch = findClosingParenthese(str, nextParentheses + 1, depth + 1);
191 ptr = nextSearch + 1;
192 closeParentheses = str.indexOf(")", ptr);
193 } else found = true;
194 }
195 if (found && closeParentheses !== -1) return closeParentheses;
196 else return -1;
197 }
198 /**
199 * Parse selector.
200 */ function selector() {
201 const m = match(/^([^{]+)/);
202 if (!m) return;
203 // remove comment in selector;
204 let res = $d708735ed1303b43$var$trim(m[0]).replace($d708735ed1303b43$var$commentre, "");
205 // Optimisation: If there is no ',' no need to split or post-process (this is less costly)
206 if (res.indexOf(",") === -1) return [
207 res
208 ];
209 // Replace all the , in the parentheses by \u200C
210 let ptr = 0;
211 let startParentheses = res.indexOf("(", ptr);
212 while(startParentheses !== -1){
213 const closeParentheses = findClosingParenthese(res, startParentheses, 0);
214 if (closeParentheses === -1) break;
215 ptr = closeParentheses + 1;
216 res = res.substring(0, startParentheses) + res.substring(startParentheses, closeParentheses).replace(/,/g, "\u200C") + res.substring(closeParentheses);
217 startParentheses = res.indexOf("(", ptr);
218 }
219 // Replace all the , in ' and " by \u200C
220 res = res/**
221 * replace ',' by \u200C for data selector (div[data-lang="fr,de,us"])
222 *
223 * Examples:
224 * div[data-lang="fr,\"de,us"]
225 * div[data-lang='fr,\'de,us']
226 *
227 * Regex logic:
228 * ("|')(?:\\\1|.)*?\1 => Handle the " and '
229 *
230 * Optimization 1:
231 * No greedy capture (see docs about the difference between .* and .*?)
232 *
233 * Optimization 2:
234 * ("|')(?:\\\1|.)*?\1 this use reference to capture group, it work faster.
235 */ .replace(/("|')(?:\\\1|.)*?\1/g, (m)=>m.replace(/,/g, "\u200C"));
236 // Split all the left , and replace all the \u200C by ,
237 return res// Split the selector by ','
238 .split(",")// Replace back \u200C by ','
239 .map((s)=>{
240 return $d708735ed1303b43$var$trim(s.replace(/\u200C/g, ","));
241 });
242 }
243 /**
244 * Parse declaration.
245 */ function declaration() {
246 const pos = position();
247 // prop
248 const propMatch = match(/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
249 if (!propMatch) return;
250 const propValue = $d708735ed1303b43$var$trim(propMatch[0]);
251 // :
252 if (!match(/^:\s*/)) return error("property missing ':'");
253 // val
254 const val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/);
255 const ret = pos({
256 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).declaration,
257 property: propValue.replace($d708735ed1303b43$var$commentre, ""),
258 value: val ? $d708735ed1303b43$var$trim(val[0]).replace($d708735ed1303b43$var$commentre, "") : ""
259 });
260 // ;
261 match(/^[;\s]*/);
262 return ret;
263 }
264 /**
265 * Parse declarations.
266 */ function declarations() {
267 const decls = [];
268 if (!open()) return error("missing '{'");
269 comments(decls);
270 // declarations
271 let decl;
272 while(decl = declaration())if (decl) {
273 decls.push(decl);
274 comments(decls);
275 }
276 if (!close()) return error("missing '}'");
277 return decls;
278 }
279 /**
280 * Parse keyframe.
281 */ function keyframe() {
282 let m;
283 const vals = [];
284 const pos = position();
285 while(m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)){
286 vals.push(m[1]);
287 match(/^,\s*/);
288 }
289 if (!vals.length) return;
290 return pos({
291 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).keyframe,
292 values: vals,
293 declarations: declarations() || []
294 });
295 }
296 /**
297 * Parse keyframes.
298 */ function atkeyframes() {
299 const pos = position();
300 const m1 = match(/^@([-\w]+)?keyframes\s*/);
301 if (!m1) return;
302 const vendor = m1[1];
303 // identifier
304 const m2 = match(/^([-\w]+)\s*/);
305 if (!m2) return error("@keyframes missing name");
306 const name = m2[1];
307 if (!open()) return error("@keyframes missing '{'");
308 let frame;
309 let frames = comments();
310 while(frame = keyframe()){
311 frames.push(frame);
312 frames = frames.concat(comments());
313 }
314 if (!close()) return error("@keyframes missing '}'");
315 return pos({
316 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).keyframes,
317 name: name,
318 vendor: vendor,
319 keyframes: frames
320 });
321 }
322 /**
323 * Parse supports.
324 */ function atsupports() {
325 const pos = position();
326 const m = match(/^@supports *([^{]+)/);
327 if (!m) return;
328 const supports = $d708735ed1303b43$var$trim(m[1]);
329 if (!open()) return error("@supports missing '{'");
330 const style = comments().concat(rules());
331 if (!close()) return error("@supports missing '}'");
332 return pos({
333 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).supports,
334 supports: supports,
335 rules: style
336 });
337 }
338 /**
339 * Parse host.
340 */ function athost() {
341 const pos = position();
342 const m = match(/^@host\s*/);
343 if (!m) return;
344 if (!open()) return error("@host missing '{'");
345 const style = comments().concat(rules());
346 if (!close()) return error("@host missing '}'");
347 return pos({
348 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).host,
349 rules: style
350 });
351 }
352 /**
353 * Parse container.
354 */ function atcontainer() {
355 const pos = position();
356 const m = match(/^@container *([^{]+)/);
357 if (!m) return;
358 const container = $d708735ed1303b43$var$trim(m[1]);
359 if (!open()) return error("@container missing '{'");
360 const style = comments().concat(rules());
361 if (!close()) return error("@container missing '}'");
362 return pos({
363 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).container,
364 container: container,
365 rules: style
366 });
367 }
368 /**
369 * Parse container.
370 */ function atlayer() {
371 const pos = position();
372 const m = match(/^@layer *([^{;@]+)/);
373 if (!m) return;
374 const layer = $d708735ed1303b43$var$trim(m[1]);
375 if (!open()) {
376 match(/^[;\s]*/);
377 return pos({
378 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).layer,
379 layer: layer
380 });
381 }
382 const style = comments().concat(rules());
383 if (!close()) return error("@layer missing '}'");
384 return pos({
385 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).layer,
386 layer: layer,
387 rules: style
388 });
389 }
390 /**
391 * Parse media.
392 */ function atmedia() {
393 const pos = position();
394 const m = match(/^@media *([^{]+)/);
395 if (!m) return;
396 const media = $d708735ed1303b43$var$trim(m[1]);
397 if (!open()) return error("@media missing '{'");
398 const style = comments().concat(rules());
399 if (!close()) return error("@media missing '}'");
400 return pos({
401 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).media,
402 media: media,
403 rules: style
404 });
405 }
406 /**
407 * Parse custom-media.
408 */ function atcustommedia() {
409 const pos = position();
410 const m = match(/^@custom-media\s+(--\S+)\s*([^{;\s][^{;]*);/);
411 if (!m) return;
412 return pos({
413 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).customMedia,
414 name: $d708735ed1303b43$var$trim(m[1]),
415 media: $d708735ed1303b43$var$trim(m[2])
416 });
417 }
418 /**
419 * Parse paged media.
420 */ function atpage() {
421 const pos = position();
422 const m = match(/^@page */);
423 if (!m) return;
424 const sel = selector() || [];
425 if (!open()) return error("@page missing '{'");
426 let decls = comments();
427 // declarations
428 let decl;
429 while(decl = declaration()){
430 decls.push(decl);
431 decls = decls.concat(comments());
432 }
433 if (!close()) return error("@page missing '}'");
434 return pos({
435 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).page,
436 selectors: sel,
437 declarations: decls
438 });
439 }
440 /**
441 * Parse document.
442 */ function atdocument() {
443 const pos = position();
444 const m = match(/^@([-\w]+)?document *([^{]+)/);
445 if (!m) return;
446 const vendor = $d708735ed1303b43$var$trim(m[1]);
447 const doc = $d708735ed1303b43$var$trim(m[2]);
448 if (!open()) return error("@document missing '{'");
449 const style = comments().concat(rules());
450 if (!close()) return error("@document missing '}'");
451 return pos({
452 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).document,
453 document: doc,
454 vendor: vendor,
455 rules: style
456 });
457 }
458 /**
459 * Parse font-face.
460 */ function atfontface() {
461 const pos = position();
462 const m = match(/^@font-face\s*/);
463 if (!m) return;
464 if (!open()) return error("@font-face missing '{'");
465 let decls = comments();
466 // declarations
467 let decl;
468 while(decl = declaration()){
469 decls.push(decl);
470 decls = decls.concat(comments());
471 }
472 if (!close()) return error("@font-face missing '}'");
473 return pos({
474 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).fontFace,
475 declarations: decls
476 });
477 }
478 /**
479 * Parse import
480 */ const atimport = _compileAtrule("import");
481 /**
482 * Parse charset
483 */ const atcharset = _compileAtrule("charset");
484 /**
485 * Parse namespace
486 */ const atnamespace = _compileAtrule("namespace");
487 /**
488 * Parse non-block at-rules
489 */ function _compileAtrule(name) {
490 const re = new RegExp("^@" + name + "\\s*((?::?[^;'\"]|\"(?:\\\\\"|[^\"])*?\"|'(?:\\\\'|[^'])*?')+)(?:;|$)");
491 // ^@import\s*([^;"']|("|')(?:\\\2|.)*?\2)+(;|$)
492 return function() {
493 const pos = position();
494 const m = match(re);
495 if (!m) return;
496 const ret = {
497 type: name
498 };
499 ret[name] = m[1].trim();
500 return pos(ret);
501 };
502 }
503 /**
504 * Parse at rule.
505 */ function atrule() {
506 if (css[0] !== "@") return;
507 return atkeyframes() || atmedia() || atcustommedia() || atsupports() || atimport() || atcharset() || atnamespace() || atdocument() || atpage() || athost() || atfontface() || atcontainer() || atlayer();
508 }
509 /**
510 * Parse rule.
511 */ function rule() {
512 const pos = position();
513 const sel = selector();
514 if (!sel) return error("selector missing");
515 comments();
516 return pos({
517 type: (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).rule,
518 selectors: sel,
519 declarations: declarations() || []
520 });
521 }
522 return $d708735ed1303b43$var$addParent(stylesheet());
523};
524/**
525 * Trim `str`.
526 */ function $d708735ed1303b43$var$trim(str) {
527 return str ? str.trim() : "";
528}
529/**
530 * Adds non-enumerable parent node reference to each node.
531 */ function $d708735ed1303b43$var$addParent(obj, parent) {
532 const isNode = obj && typeof obj.type === "string";
533 const childParent = isNode ? obj : parent;
534 for(const k in obj){
535 const value = obj[k];
536 if (Array.isArray(value)) value.forEach((v)=>{
537 $d708735ed1303b43$var$addParent(v, childParent);
538 });
539 else if (value && typeof value === "object") $d708735ed1303b43$var$addParent(value, childParent);
540 }
541 if (isNode) Object.defineProperty(obj, "parent", {
542 configurable: true,
543 writable: true,
544 enumerable: false,
545 value: parent || null
546 });
547 return obj;
548}
549var $d708735ed1303b43$export$2e2bcd8739ae039 = $d708735ed1303b43$export$98e6a39c04603d36;
550
551
552
553class $de9540138ed1fd01$var$Compiler {
554 constructor(options){
555 this.level = 0;
556 this.indentation = " ";
557 this.compress = false;
558 if (typeof options?.indent === "string") this.indentation = options?.indent;
559 if (options?.compress) this.compress = true;
560 }
561 // We disable no-unused-vars for _position. We keep position for potential reintroduction of source-map
562 // eslint-disable-next-line @typescript-eslint/no-unused-vars
563 emit(str, _position) {
564 return str;
565 }
566 /**
567 * Increase, decrease or return current indentation.
568 */ indent(level) {
569 this.level = this.level || 1;
570 if (level) {
571 this.level += level;
572 return "";
573 }
574 return Array(this.level).join(this.indentation);
575 }
576 visit(node) {
577 switch(node.type){
578 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).stylesheet:
579 return this.stylesheet(node);
580 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).rule:
581 return this.rule(node);
582 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).declaration:
583 return this.declaration(node);
584 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).comment:
585 return this.comment(node);
586 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).container:
587 return this.container(node);
588 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).charset:
589 return this.charset(node);
590 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).document:
591 return this.document(node);
592 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).customMedia:
593 return this.customMedia(node);
594 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).fontFace:
595 return this.fontFace(node);
596 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).host:
597 return this.host(node);
598 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).import:
599 return this.import(node);
600 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).keyframes:
601 return this.keyframes(node);
602 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).keyframe:
603 return this.keyframe(node);
604 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).layer:
605 return this.layer(node);
606 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).media:
607 return this.media(node);
608 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).namespace:
609 return this.namespace(node);
610 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).page:
611 return this.page(node);
612 case (0, $b2e137848b48cf4f$export$9be5dd6e61d5d73a).supports:
613 return this.supports(node);
614 }
615 }
616 mapVisit(nodes, delim) {
617 let buf = "";
618 delim = delim || "";
619 for(let i = 0, length = nodes.length; i < length; i++){
620 buf += this.visit(nodes[i]);
621 if (delim && i < length - 1) buf += this.emit(delim);
622 }
623 return buf;
624 }
625 compile(node) {
626 if (this.compress) return node.stylesheet.rules.map(this.visit, this).join("");
627 return this.stylesheet(node);
628 }
629 /**
630 * Visit stylesheet node.
631 */ stylesheet(node) {
632 return this.mapVisit(node.stylesheet.rules, "\n\n");
633 }
634 /**
635 * Visit comment node.
636 */ comment(node) {
637 if (this.compress) return this.emit("", node.position);
638 return this.emit(this.indent() + "/*" + node.comment + "*/", node.position);
639 }
640 /**
641 * Visit container node.
642 */ container(node) {
643 if (this.compress) return this.emit("@container " + node.container, node.position) + this.emit("{") + this.mapVisit(node.rules) + this.emit("}");
644 return this.emit(this.indent() + "@container " + node.container, node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit("\n" + this.indent(-1) + this.indent() + "}");
645 }
646 /**
647 * Visit container node.
648 */ layer(node) {
649 if (this.compress) return this.emit("@layer " + node.layer, node.position) + (node.rules ? this.emit("{") + this.mapVisit(node.rules) + this.emit("}") : ";");
650 return this.emit(this.indent() + "@layer " + node.layer, node.position) + (node.rules ? this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit("\n" + this.indent(-1) + this.indent() + "}") : ";");
651 }
652 /**
653 * Visit import node.
654 */ import(node) {
655 return this.emit("@import " + node.import + ";", node.position);
656 }
657 /**
658 * Visit media node.
659 */ media(node) {
660 if (this.compress) return this.emit("@media " + node.media, node.position) + this.emit("{") + this.mapVisit(node.rules) + this.emit("}");
661 return this.emit(this.indent() + "@media " + node.media, node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit("\n" + this.indent(-1) + this.indent() + "}");
662 }
663 /**
664 * Visit document node.
665 */ document(node) {
666 const doc = "@" + (node.vendor || "") + "document " + node.document;
667 if (this.compress) return this.emit(doc, node.position) + this.emit("{") + this.mapVisit(node.rules) + this.emit("}");
668 return this.emit(doc, node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit(this.indent(-1) + "\n}");
669 }
670 /**
671 * Visit charset node.
672 */ charset(node) {
673 return this.emit("@charset " + node.charset + ";", node.position);
674 }
675 /**
676 * Visit namespace node.
677 */ namespace(node) {
678 return this.emit("@namespace " + node.namespace + ";", node.position);
679 }
680 /**
681 * Visit supports node.
682 */ supports(node) {
683 if (this.compress) return this.emit("@supports " + node.supports, node.position) + this.emit("{") + this.mapVisit(node.rules) + this.emit("}");
684 return this.emit(this.indent() + "@supports " + node.supports, node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit("\n" + this.indent(-1) + this.indent() + "}");
685 }
686 /**
687 * Visit keyframes node.
688 */ keyframes(node) {
689 if (this.compress) return this.emit("@" + (node.vendor || "") + "keyframes " + node.name, node.position) + this.emit("{") + this.mapVisit(node.keyframes) + this.emit("}");
690 return this.emit("@" + (node.vendor || "") + "keyframes " + node.name, node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.keyframes, "\n") + this.emit(this.indent(-1) + "}");
691 }
692 /**
693 * Visit keyframe node.
694 */ keyframe(node) {
695 const decls = node.declarations;
696 if (this.compress) return this.emit(node.values.join(","), node.position) + this.emit("{") + this.mapVisit(decls) + this.emit("}");
697 return this.emit(this.indent()) + this.emit(node.values.join(", "), node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(decls, "\n") + this.emit(this.indent(-1) + "\n" + this.indent() + "}\n");
698 }
699 /**
700 * Visit page node.
701 */ page(node) {
702 if (this.compress) {
703 const sel = node.selectors.length ? node.selectors.join(", ") : "";
704 return this.emit("@page " + sel, node.position) + this.emit("{") + this.mapVisit(node.declarations) + this.emit("}");
705 }
706 const sel = node.selectors.length ? node.selectors.join(", ") + " " : "";
707 return this.emit("@page " + sel, node.position) + this.emit("{\n") + this.emit(this.indent(1)) + this.mapVisit(node.declarations, "\n") + this.emit(this.indent(-1)) + this.emit("\n}");
708 }
709 /**
710 * Visit font-face node.
711 */ fontFace(node) {
712 if (this.compress) return this.emit("@font-face", node.position) + this.emit("{") + this.mapVisit(node.declarations) + this.emit("}");
713 return this.emit("@font-face ", node.position) + this.emit("{\n") + this.emit(this.indent(1)) + this.mapVisit(node.declarations, "\n") + this.emit(this.indent(-1)) + this.emit("\n}");
714 }
715 /**
716 * Visit host node.
717 */ host(node) {
718 if (this.compress) return this.emit("@host", node.position) + this.emit("{") + this.mapVisit(node.rules) + this.emit("}");
719 return this.emit("@host", node.position) + this.emit(" {\n" + this.indent(1)) + this.mapVisit(node.rules, "\n\n") + this.emit(this.indent(-1) + "\n}");
720 }
721 /**
722 * Visit custom-media node.
723 */ customMedia(node) {
724 return this.emit("@custom-media " + node.name + " " + node.media + ";", node.position);
725 }
726 /**
727 * Visit rule node.
728 */ rule(node) {
729 const decls = node.declarations;
730 if (!decls.length) return "";
731 if (this.compress) return this.emit(node.selectors.join(","), node.position) + this.emit("{") + this.mapVisit(decls) + this.emit("}");
732 const indent = this.indent();
733 return this.emit(node.selectors.map((s)=>{
734 return indent + s;
735 }).join(",\n"), node.position) + this.emit(" {\n") + this.emit(this.indent(1)) + this.mapVisit(decls, "\n") + this.emit(this.indent(-1)) + this.emit("\n" + this.indent() + "}");
736 }
737 /**
738 * Visit declaration node.
739 */ declaration(node) {
740 if (this.compress) return this.emit(node.property + ":" + node.value, node.position) + this.emit(";");
741 return this.emit(this.indent()) + this.emit(node.property + ": " + node.value, node.position) + this.emit(";");
742 }
743}
744var $de9540138ed1fd01$export$2e2bcd8739ae039 = $de9540138ed1fd01$var$Compiler;
745
746
747var $fdf773ab87e20450$export$2e2bcd8739ae039 = (node, options)=>{
748 const compiler = new (0, $de9540138ed1fd01$export$2e2bcd8739ae039)(options || {});
749 return compiler.compile(node);
750};
751
752
753
754
755
756const $149c1bd638913645$export$98e6a39c04603d36 = (0, $d708735ed1303b43$export$2e2bcd8739ae039);
757const $149c1bd638913645$export$fac44ee5b035f737 = (0, $fdf773ab87e20450$export$2e2bcd8739ae039);
758var $149c1bd638913645$export$2e2bcd8739ae039 = {
759 parse: $149c1bd638913645$export$98e6a39c04603d36,
760 stringify: $149c1bd638913645$export$fac44ee5b035f737
761};
762
763
764export {$149c1bd638913645$export$98e6a39c04603d36 as parse, $149c1bd638913645$export$fac44ee5b035f737 as stringify, $149c1bd638913645$export$2e2bcd8739ae039 as default, $b2e137848b48cf4f$export$9be5dd6e61d5d73a as CssTypes};
765//# sourceMappingURL=index.mjs.map
public/scripts/chats.js+1 -1
@@ -1,6 +1,6 @@
1// Move chat functions here from script.js (eventually)1// Move chat functions here from script.js (eventually)
22
3import css from '../lib/css-parser.mjs';3import { css } from '../lib.js';
4import {4import {
5 addCopyToCodeBlocks,5 addCopyToCodeBlocks,
6 appendMediaToMessage,6 appendMediaToMessage,