@pyscript/core 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{codemirror-DhfqJnow.js → codemirror-7vXPINKi.js} +2 -2
- package/dist/codemirror-7vXPINKi.js.map +1 -0
- package/dist/{codemirror_commands-aDUdtLV0.js → codemirror_commands-CN4gxvZk.js} +2 -2
- package/dist/{codemirror_commands-aDUdtLV0.js.map → codemirror_commands-CN4gxvZk.js.map} +1 -1
- package/dist/{codemirror_lang-python-DbjDBf6C.js → codemirror_lang-python-CkOVBHci.js} +2 -2
- package/dist/{codemirror_lang-python-DbjDBf6C.js.map → codemirror_lang-python-CkOVBHci.js.map} +1 -1
- package/dist/codemirror_language-DOkvasqm.js +2 -0
- package/dist/codemirror_language-DOkvasqm.js.map +1 -0
- package/dist/{codemirror_view-Bc_iulwl.js → codemirror_view-Bt4sLgyA.js} +2 -2
- package/dist/{codemirror_view-Bc_iulwl.js.map → codemirror_view-Bt4sLgyA.js.map} +1 -1
- package/dist/core-C2tt6oeV.js +4 -0
- package/dist/core-C2tt6oeV.js.map +1 -0
- package/dist/core.js +1 -1
- package/dist/{deprecations-manager-Kkwj7uxq.js → deprecations-manager-C79L_aJJ.js} +2 -2
- package/dist/{deprecations-manager-Kkwj7uxq.js.map → deprecations-manager-C79L_aJJ.js.map} +1 -1
- package/dist/{donkey-CnugBzSW.js → donkey-RJL_ZnrA.js} +2 -2
- package/dist/{donkey-CnugBzSW.js.map → donkey-RJL_ZnrA.js.map} +1 -1
- package/dist/{error-WAkuD3Ml.js → error-Czk1Ozzw.js} +2 -2
- package/dist/{error-WAkuD3Ml.js.map → error-Czk1Ozzw.js.map} +1 -1
- package/dist/index-jZ1aOVVJ.js +2 -0
- package/dist/index-jZ1aOVVJ.js.map +1 -0
- package/dist/{mpy-DSOSxxXp.js → mpy-wbykD3IU.js} +2 -2
- package/dist/{mpy-DSOSxxXp.js.map → mpy-wbykD3IU.js.map} +1 -1
- package/dist/{py-0_0OQQA0.js → py-CiUGXkWU.js} +2 -2
- package/dist/{py-0_0OQQA0.js.map → py-CiUGXkWU.js.map} +1 -1
- package/dist/{py-editor-CmVF6SYN.js → py-editor-CMrEvYqp.js} +2 -2
- package/dist/{py-editor-CmVF6SYN.js.map → py-editor-CMrEvYqp.js.map} +1 -1
- package/dist/{py-game-CIa4j_D5.js → py-game-D5NDaNk9.js} +2 -2
- package/dist/{py-game-CIa4j_D5.js.map → py-game-D5NDaNk9.js.map} +1 -1
- package/dist/{py-terminal-D7nbEhCT.js → py-terminal-CtPDJmW9.js} +2 -2
- package/dist/{py-terminal-D7nbEhCT.js.map → py-terminal-CtPDJmW9.js.map} +1 -1
- package/dist/xterm-readline-CK_45Ygx.js +2 -0
- package/dist/xterm-readline-CK_45Ygx.js.map +1 -0
- package/dist/zip-CakRHzZu.js +2 -0
- package/dist/zip-CakRHzZu.js.map +1 -0
- package/package.json +9 -9
- package/src/config.js +9 -3
- package/dist/codemirror-DhfqJnow.js.map +0 -1
- package/dist/codemirror_language-C7NTiYFF.js +0 -2
- package/dist/codemirror_language-C7NTiYFF.js.map +0 -1
- package/dist/core-DG5cWfnq.js +0 -4
- package/dist/core-DG5cWfnq.js.map +0 -1
- package/dist/index-DElqkBi5.js +0 -2
- package/dist/index-DElqkBi5.js.map +0 -1
- package/dist/xterm-readline-CWt4l78j.js +0 -2
- package/dist/xterm-readline-CWt4l78j.js.map +0 -1
- package/dist/zip-D8wJncBv.js +0 -2
- package/dist/zip-D8wJncBv.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pyscript/core",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "PyScript",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@webreflection/utils": "^0.1.1",
|
|
71
71
|
"add-promise-listener": "^0.1.3",
|
|
72
72
|
"basic-devtools": "^0.1.6",
|
|
73
|
-
"polyscript": "^0.19.
|
|
73
|
+
"polyscript": "^0.19.6",
|
|
74
74
|
"sticky-module": "^0.1.1",
|
|
75
75
|
"to-json-callback": "^0.1.1",
|
|
76
76
|
"type-checked-collections": "^0.1.7"
|
|
@@ -80,22 +80,22 @@
|
|
|
80
80
|
"@codemirror/lang-python": "^6.2.1",
|
|
81
81
|
"@codemirror/language": "^6.11.3",
|
|
82
82
|
"@codemirror/state": "^6.5.2",
|
|
83
|
-
"@codemirror/view": "^6.38.
|
|
84
|
-
"@playwright/test": "^1.56.
|
|
85
|
-
"@rollup/plugin-commonjs": "^28.0.
|
|
86
|
-
"@rollup/plugin-node-resolve": "^16.0.
|
|
83
|
+
"@codemirror/view": "^6.38.6",
|
|
84
|
+
"@playwright/test": "^1.56.1",
|
|
85
|
+
"@rollup/plugin-commonjs": "^28.0.8",
|
|
86
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
87
87
|
"@rollup/plugin-terser": "^0.4.4",
|
|
88
88
|
"@webreflection/toml-j0.4": "^1.1.4",
|
|
89
89
|
"@xterm/addon-fit": "^0.10.0",
|
|
90
90
|
"@xterm/addon-web-links": "^0.11.0",
|
|
91
91
|
"@xterm/xterm": "^5.5.0",
|
|
92
|
-
"bun": "^1.
|
|
92
|
+
"bun": "^1.3.0",
|
|
93
93
|
"chokidar": "^4.0.3",
|
|
94
94
|
"codedent": "^0.1.2",
|
|
95
95
|
"codemirror": "^6.0.2",
|
|
96
|
-
"eslint": "^9.
|
|
96
|
+
"eslint": "^9.38.0",
|
|
97
97
|
"flatted": "^3.3.3",
|
|
98
|
-
"rollup": "^4.52.
|
|
98
|
+
"rollup": "^4.52.5",
|
|
99
99
|
"rollup-plugin-postcss": "^4.0.2",
|
|
100
100
|
"rollup-plugin-string": "^3.0.0",
|
|
101
101
|
"static-handler": "^0.5.3",
|
package/src/config.js
CHANGED
|
@@ -70,6 +70,7 @@ for (const [TYPE] of TYPES) {
|
|
|
70
70
|
|
|
71
71
|
let config,
|
|
72
72
|
type,
|
|
73
|
+
parser,
|
|
73
74
|
pyElement,
|
|
74
75
|
pyConfigs = $$(`${TYPE}-config`),
|
|
75
76
|
attrConfigs = $$(
|
|
@@ -92,9 +93,11 @@ for (const [TYPE] of TYPES) {
|
|
|
92
93
|
[pyElement] = pyConfigs;
|
|
93
94
|
config = pyElement.getAttribute("src") || pyElement.textContent;
|
|
94
95
|
type = pyElement.getAttribute("type");
|
|
96
|
+
parser = pyElement.getAttribute("config-parser");
|
|
95
97
|
} else if (attrConfigs.length) {
|
|
96
98
|
[pyElement, ...attrConfigs] = attrConfigs;
|
|
97
99
|
config = pyElement.getAttribute("config");
|
|
100
|
+
parser = pyElement.getAttribute("config-parser");
|
|
98
101
|
// throw an error if dirrent scripts use different configs
|
|
99
102
|
if (
|
|
100
103
|
attrConfigs.some((el) => el.getAttribute("config") !== config)
|
|
@@ -120,9 +123,12 @@ for (const [TYPE] of TYPES) {
|
|
|
120
123
|
}
|
|
121
124
|
} else if (toml || type === "toml") {
|
|
122
125
|
try {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
const module = parser
|
|
127
|
+
? await import(parser)
|
|
128
|
+
: await import(
|
|
129
|
+
/* webpackIgnore: true */ "./3rd-party/toml.js"
|
|
130
|
+
);
|
|
131
|
+
const parse = module.parse || module.default;
|
|
126
132
|
parsed = parse(text);
|
|
127
133
|
} catch (e) {
|
|
128
134
|
error = syntaxError("TOML", url, e);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codemirror-DhfqJnow.js","sources":["../node_modules/@codemirror/search/dist/index.js","../node_modules/@codemirror/lint/dist/index.js","../node_modules/codemirror/dist/index.js"],"sourcesContent":["import { showPanel, EditorView, getPanel, Decoration, ViewPlugin, runScopeHandlers } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, StateEffect, StateField, EditorSelection, Facet, combineConfig, CharCategory, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n /**\n Create a text cursor. The query is the search string, `from` to\n `to` provides the region to search.\n \n When `normalize` is given, it will be called, on both the query\n string and the content it is matched against, before comparing.\n You can, for example, create a case-insensitive search by\n passing `s => s.toLowerCase()`.\n \n Text is always normalized with\n [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n (when supported).\n */\n constructor(text, query, from = 0, to = text.length, normalize, test) {\n this.test = test;\n /**\n The current match (only holds a meaningful value after\n [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n `done` is false).\n */\n this.value = { from: 0, to: 0 };\n /**\n Whether the end of the iterated region has been reached.\n */\n this.done = false;\n this.matches = [];\n this.buffer = \"\";\n this.bufferPos = 0;\n this.iter = text.iterRange(from, to);\n this.bufferStart = from;\n this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n this.query = this.normalize(query);\n }\n peek() {\n if (this.bufferPos == this.buffer.length) {\n this.bufferStart += this.buffer.length;\n this.iter.next();\n if (this.iter.done)\n return -1;\n this.bufferPos = 0;\n this.buffer = this.iter.value;\n }\n return codePointAt(this.buffer, this.bufferPos);\n }\n /**\n Look for the next match. Updates the iterator's\n [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n at least once before using the cursor.\n */\n next() {\n while (this.matches.length)\n this.matches.pop();\n return this.nextOverlapping();\n }\n /**\n The `next` method will ignore matches that partially overlap a\n previous match. This method behaves like `next`, but includes\n such matches.\n */\n nextOverlapping() {\n for (;;) {\n let next = this.peek();\n if (next < 0) {\n this.done = true;\n return this;\n }\n let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n this.bufferPos += codePointSize(next);\n let norm = this.normalize(str);\n if (norm.length)\n for (let i = 0, pos = start;; i++) {\n let code = norm.charCodeAt(i);\n let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n if (i == norm.length - 1) {\n if (match) {\n this.value = match;\n return this;\n }\n break;\n }\n if (pos == start && i < str.length && str.charCodeAt(i) == code)\n pos++;\n }\n }\n }\n match(code, pos, end) {\n let match = null;\n for (let i = 0; i < this.matches.length; i += 2) {\n let index = this.matches[i], keep = false;\n if (this.query.charCodeAt(index) == code) {\n if (index == this.query.length - 1) {\n match = { from: this.matches[i + 1], to: end };\n }\n else {\n this.matches[i]++;\n keep = true;\n }\n }\n if (!keep) {\n this.matches.splice(i, 2);\n i -= 2;\n }\n }\n if (this.query.charCodeAt(0) == code) {\n if (this.query.length == 1)\n match = { from: pos, to: end };\n else\n this.matches.push(1, pos);\n }\n if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n match = null;\n return match;\n }\n}\nif (typeof Symbol != \"undefined\")\n SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n /**\n Create a cursor that will search the given range in the given\n document. `query` should be the raw pattern (as you'd pass it to\n `new RegExp`).\n */\n constructor(text, query, options, from = 0, to = text.length) {\n this.text = text;\n this.to = to;\n this.curLine = \"\";\n /**\n Set to `true` when the cursor has reached the end of the search\n range.\n */\n this.done = false;\n /**\n Will contain an object with the extent of the match and the\n match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n sucessfully finds a match.\n */\n this.value = empty;\n if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n return new MultilineRegExpCursor(text, query, options, from, to);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.iter = text.iter();\n let startLine = text.lineAt(from);\n this.curLineStart = startLine.from;\n this.matchPos = toCharEnd(text, from);\n this.getLine(this.curLineStart);\n }\n getLine(skip) {\n this.iter.next(skip);\n if (this.iter.lineBreak) {\n this.curLine = \"\";\n }\n else {\n this.curLine = this.iter.value;\n if (this.curLineStart + this.curLine.length > this.to)\n this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n this.iter.next();\n }\n }\n nextLine() {\n this.curLineStart = this.curLineStart + this.curLine.length + 1;\n if (this.curLineStart > this.to)\n this.curLine = \"\";\n else\n this.getLine(0);\n }\n /**\n Move to the next match, if there is one.\n */\n next() {\n for (let off = this.matchPos - this.curLineStart;;) {\n this.re.lastIndex = off;\n let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n if (match) {\n let from = this.curLineStart + match.index, to = from + match[0].length;\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n if (from == this.curLineStart + this.curLine.length)\n this.nextLine();\n if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n return this;\n }\n off = this.matchPos - this.curLineStart;\n }\n else if (this.curLineStart + this.curLine.length < this.to) {\n this.nextLine();\n off = 0;\n }\n else {\n this.done = true;\n return this;\n }\n }\n }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n constructor(from, text) {\n this.from = from;\n this.text = text;\n }\n get to() { return this.from + this.text.length; }\n static get(doc, from, to) {\n let cached = flattened.get(doc);\n if (!cached || cached.from >= to || cached.to <= from) {\n let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n flattened.set(doc, flat);\n return flat;\n }\n if (cached.from == from && cached.to == to)\n return cached;\n let { text, from: cachedFrom } = cached;\n if (cachedFrom > from) {\n text = doc.sliceString(from, cachedFrom) + text;\n cachedFrom = from;\n }\n if (cached.to < to)\n text += doc.sliceString(cached.to, to);\n flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n }\n}\nclass MultilineRegExpCursor {\n constructor(text, query, options, from, to) {\n this.text = text;\n this.to = to;\n this.done = false;\n this.value = empty;\n this.matchPos = toCharEnd(text, from);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n }\n chunkEnd(pos) {\n return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n }\n next() {\n for (;;) {\n let off = this.re.lastIndex = this.matchPos - this.flat.from;\n let match = this.re.exec(this.flat.text);\n // Skip empty matches directly after the last match\n if (match && !match[0] && match.index == off) {\n this.re.lastIndex = off + 1;\n match = this.re.exec(this.flat.text);\n }\n if (match) {\n let from = this.flat.from + match.index, to = from + match[0].length;\n // If a match goes almost to the end of a noncomplete chunk, try\n // again, since it'll likely be able to match more\n if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n return this;\n }\n }\n if (this.flat.to == this.to) {\n this.done = true;\n return this;\n }\n // Grow the flattened doc\n this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n }\n }\n}\nif (typeof Symbol != \"undefined\") {\n RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n function () { return this; };\n}\nfunction validRegExp(source) {\n try {\n new RegExp(source, baseFlags);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction toCharEnd(text, pos) {\n if (pos >= text.length)\n return pos;\n let line = text.lineAt(pos), next;\n while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n pos++;\n return pos;\n}\n\nfunction createLineDialog(view) {\n let line = String(view.state.doc.lineAt(view.state.selection.main.head).number);\n let input = elt(\"input\", { class: \"cm-textfield\", name: \"line\", value: line });\n let dom = elt(\"form\", {\n class: \"cm-gotoLine\",\n onkeydown: (event) => {\n if (event.keyCode == 27) { // Escape\n event.preventDefault();\n view.dispatch({ effects: dialogEffect.of(false) });\n view.focus();\n }\n else if (event.keyCode == 13) { // Enter\n event.preventDefault();\n go();\n }\n },\n onsubmit: (event) => {\n event.preventDefault();\n go();\n }\n }, elt(\"label\", view.state.phrase(\"Go to line\"), \": \", input), \" \", elt(\"button\", { class: \"cm-button\", type: \"submit\" }, view.state.phrase(\"go\")), elt(\"button\", {\n name: \"close\",\n onclick: () => {\n view.dispatch({ effects: dialogEffect.of(false) });\n view.focus();\n },\n \"aria-label\": view.state.phrase(\"close\"),\n type: \"button\"\n }, [\"×\"]));\n function go() {\n let match = /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(input.value);\n if (!match)\n return;\n let { state } = view, startLine = state.doc.lineAt(state.selection.main.head);\n let [, sign, ln, cl, percent] = match;\n let col = cl ? +cl.slice(1) : 0;\n let line = ln ? +ln : startLine.number;\n if (ln && percent) {\n let pc = line / 100;\n if (sign)\n pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n line = Math.round(state.doc.lines * pc);\n }\n else if (ln && sign) {\n line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n }\n let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n view.dispatch({\n effects: [dialogEffect.of(false), EditorView.scrollIntoView(selection.from, { y: 'center' })],\n selection,\n });\n view.focus();\n }\n return { dom };\n}\nconst dialogEffect = /*@__PURE__*/StateEffect.define();\nconst dialogField = /*@__PURE__*/StateField.define({\n create() { return true; },\n update(value, tr) {\n for (let e of tr.effects)\n if (e.is(dialogEffect))\n value = e.value;\n return value;\n },\n provide: f => showPanel.from(f, val => val ? createLineDialog : null)\n});\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n let panel = getPanel(view, createLineDialog);\n if (!panel) {\n let effects = [dialogEffect.of(true)];\n if (view.state.field(dialogField, false) == null)\n effects.push(StateEffect.appendConfig.of([dialogField, baseTheme$1]));\n view.dispatch({ effects });\n panel = getPanel(view, createLineDialog);\n }\n if (panel)\n panel.dom.querySelector(\"input\").select();\n return true;\n};\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-gotoLine\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& label\": { fontSize: \"80%\" },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\", bottom: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: \"0\"\n }\n }\n});\n\nconst defaultHighlightOptions = {\n highlightWordAroundCursor: false,\n minSelectionLength: 1,\n maxMatches: 100,\n wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n combine(options) {\n return combineConfig(options, defaultHighlightOptions, {\n highlightWordAroundCursor: (a, b) => a || b,\n minSelectionLength: Math.min,\n maxMatches: Math.min\n });\n }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n let ext = [defaultTheme, matchHighlighter];\n if (options)\n ext.push(highlightConfig.of(options));\n return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.selectionSet || update.docChanged || update.viewportChanged)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let conf = view.state.facet(highlightConfig);\n let { state } = view, sel = state.selection;\n if (sel.ranges.length > 1)\n return Decoration.none;\n let range = sel.main, query, check = null;\n if (range.empty) {\n if (!conf.highlightWordAroundCursor)\n return Decoration.none;\n let word = state.wordAt(range.head);\n if (!word)\n return Decoration.none;\n check = state.charCategorizer(range.head);\n query = state.sliceDoc(word.from, word.to);\n }\n else {\n let len = range.to - range.from;\n if (len < conf.minSelectionLength || len > 200)\n return Decoration.none;\n if (conf.wholeWords) {\n query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n check = state.charCategorizer(range.head);\n if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n insideWord(check, state, range.from, range.to)))\n return Decoration.none;\n }\n else {\n query = state.sliceDoc(range.from, range.to);\n if (!query)\n return Decoration.none;\n }\n }\n let deco = [];\n for (let part of view.visibleRanges) {\n let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n while (!cursor.next().done) {\n let { from, to } = cursor.value;\n if (!check || insideWordBoundaries(check, state, from, to)) {\n if (range.empty && from <= range.from && to >= range.to)\n deco.push(mainMatchDeco.range(from, to));\n else if (from >= range.to || to <= range.from)\n deco.push(matchDeco.range(from, to));\n if (deco.length > conf.maxMatches)\n return Decoration.none;\n }\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n let { selection } = state;\n let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n if (newSel.eq(selection))\n return false;\n dispatch(state.update({ selection: newSel }));\n return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n let { main, ranges } = state.selection;\n let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n cursor.next();\n if (cursor.done) {\n if (cycled)\n return null;\n cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n cycled = true;\n }\n else {\n if (cycled && ranges.some(r => r.from == cursor.value.from))\n continue;\n if (fullWord) {\n let word = state.wordAt(cursor.value.from);\n if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n continue;\n }\n return cursor.value;\n }\n }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n let { ranges } = state.selection;\n if (ranges.some(sel => sel.from === sel.to))\n return selectWord({ state, dispatch });\n let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n return false;\n let range = findNextOccurrence(state, searchedText);\n if (!range)\n return false;\n dispatch(state.update({\n selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n effects: EditorView.scrollIntoView(range.to)\n }));\n return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n top: false,\n caseSensitive: false,\n literal: false,\n regexp: false,\n wholeWord: false,\n createPanel: view => new SearchPanel(view),\n scrollToMatch: range => EditorView.scrollIntoView(range)\n });\n }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n /**\n Create a query object.\n */\n constructor(config) {\n this.search = config.search;\n this.caseSensitive = !!config.caseSensitive;\n this.literal = !!config.literal;\n this.regexp = !!config.regexp;\n this.replace = config.replace || \"\";\n this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n this.unquoted = this.unquote(this.search);\n this.wholeWord = !!config.wholeWord;\n }\n /**\n @internal\n */\n unquote(text) {\n return this.literal ? text :\n text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n }\n /**\n Compare this query to another query.\n */\n eq(other) {\n return this.search == other.search && this.replace == other.replace &&\n this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n this.wholeWord == other.wholeWord;\n }\n /**\n @internal\n */\n create() {\n return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n }\n /**\n Get a search cursor for this query, searching through the given\n range in the given state.\n */\n getCursor(state, from = 0, to) {\n let st = state.doc ? state : EditorState.create({ doc: state });\n if (to == null)\n to = st.doc.length;\n return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n }\n}\nclass QueryType {\n constructor(spec) {\n this.spec = spec;\n }\n}\nfunction stringCursor(spec, state, from, to) {\n return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), spec.wholeWord ? stringWordTest(state.doc, state.charCategorizer(state.selection.main.head)) : undefined);\n}\nfunction stringWordTest(doc, categorizer) {\n return (from, to, buf, bufPos) => {\n if (bufPos > from || bufPos + buf.length < to) {\n bufPos = Math.max(0, from - 2);\n buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n }\n return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n };\n}\nclass StringQuery extends QueryType {\n constructor(spec) {\n super(spec);\n }\n nextMatch(state, curFrom, curTo) {\n let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n if (cursor.done) {\n let end = Math.min(state.doc.length, curFrom + this.spec.unquoted.length);\n cursor = stringCursor(this.spec, state, 0, end).nextOverlapping();\n }\n return cursor.done || cursor.value.from == curFrom && cursor.value.to == curTo ? null : cursor.value;\n }\n // Searching in reverse is, rather than implementing an inverted search\n // cursor, done by scanning chunk after chunk forward.\n prevMatchInRange(state, from, to) {\n for (let pos = to;;) {\n let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n let cursor = stringCursor(this.spec, state, start, pos), range = null;\n while (!cursor.nextOverlapping().done)\n range = cursor.value;\n if (range)\n return range;\n if (start == from)\n return null;\n pos -= 10000 /* FindPrev.ChunkSize */;\n }\n }\n prevMatch(state, curFrom, curTo) {\n let found = this.prevMatchInRange(state, 0, curFrom);\n if (!found)\n found = this.prevMatchInRange(state, Math.max(0, curTo - this.spec.unquoted.length), state.doc.length);\n return found && (found.from != curFrom || found.to != curTo) ? found : null;\n }\n getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n matchAll(state, limit) {\n let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\nfunction regexpCursor(spec, state, from, to) {\n return new RegExpCursor(state.doc, spec.search, {\n ignoreCase: !spec.caseSensitive,\n test: spec.wholeWord ? regexpWordTest(state.charCategorizer(state.selection.main.head)) : undefined\n }, from, to);\n}\nfunction charBefore(str, index) {\n return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n return (_from, _to, match) => !match[0].length ||\n (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n nextMatch(state, curFrom, curTo) {\n let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n if (cursor.done)\n cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n return cursor.done ? null : cursor.value;\n }\n prevMatchInRange(state, from, to) {\n for (let size = 1;; size++) {\n let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n let cursor = regexpCursor(this.spec, state, start, to), range = null;\n while (!cursor.next().done)\n range = cursor.value;\n if (range && (start == from || range.from > start + 10))\n return range;\n if (start == from)\n return null;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(result) {\n return this.spec.unquote(this.spec.replace).replace(/\\$([$&]|\\d+)/g, (m, i) => {\n if (i == \"&\")\n return result.match[0];\n if (i == \"$\")\n return \"$\";\n for (let l = i.length; l > 0; l--) {\n let n = +i.slice(0, l);\n if (n > 0 && n < result.match.length)\n return result.match[n] + i.slice(l);\n }\n return m;\n });\n }\n matchAll(state, limit) {\n let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n create(state) {\n return new SearchState(defaultQuery(state).create(), null);\n },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery))\n value = new SearchState(effect.value.create(), value.panel);\n else if (effect.is(togglePanel))\n value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n }\n return value;\n },\n provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n let curState = state.field(searchState, false);\n return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n var _a;\n return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n constructor(query, panel) {\n this.query = query;\n this.panel = panel;\n }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = this.highlight(view.state.field(searchState));\n }\n update(update) {\n let state = update.state.field(searchState);\n if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n this.decorations = this.highlight(state);\n }\n highlight({ query, panel }) {\n if (!panel || !query.spec.valid)\n return Decoration.none;\n let { view } = this;\n let builder = new RangeSetBuilder();\n for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n let { from, to } = ranges[i];\n while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n to = ranges[++i].to;\n query.highlight(view.state, from, to, (from, to) => {\n let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n builder.add(from, to, selected ? selectedMatchMark : matchMark);\n });\n }\n return builder.finish();\n }\n}, {\n decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n return view => {\n let state = view.state.field(searchState, false);\n return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { to } = view.state.selection.main;\n let next = query.nextMatch(view.state, to, to);\n if (!next)\n return false;\n let selection = EditorSelection.single(next.from, next.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from } = state.selection.main;\n let prev = query.prevMatch(state, from, from);\n if (!prev)\n return false;\n let selection = EditorSelection.single(prev.from, prev.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n let ranges = query.matchAll(view.state, 1000);\n if (!ranges || !ranges.length)\n return false;\n view.dispatch({\n selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n userEvent: \"select.search.matches\"\n });\n return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n let sel = state.selection;\n if (sel.ranges.length > 1 || sel.main.empty)\n return false;\n let { from, to } = sel.main;\n let ranges = [], main = 0;\n for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n if (ranges.length > 1000)\n return false;\n if (cur.value.from == from)\n main = ranges.length;\n ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n }\n dispatch(state.update({\n selection: EditorSelection.create(ranges, main),\n userEvent: \"select.search.matches\"\n }));\n return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from, to } = state.selection.main;\n if (state.readOnly)\n return false;\n let match = query.nextMatch(state, from, from);\n if (!match)\n return false;\n let next = match;\n let changes = [], selection, replacement;\n let effects = [];\n if (next.from == from && next.to == to) {\n replacement = state.toText(query.getReplacement(next));\n changes.push({ from: next.from, to: next.to, insert: replacement });\n next = query.nextMatch(state, next.from, next.to);\n effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n }\n let changeSet = view.state.changes(changes);\n if (next) {\n selection = EditorSelection.single(next.from, next.to).map(changeSet);\n effects.push(announceMatch(view, next));\n effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n }\n view.dispatch({\n changes: changeSet,\n selection,\n effects,\n userEvent: \"input.replace\"\n });\n return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n if (view.state.readOnly)\n return false;\n let changes = query.matchAll(view.state, 1e9).map(match => {\n let { from, to } = match;\n return { from, to, insert: query.getReplacement(match) };\n });\n if (!changes.length)\n return false;\n let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n view.dispatch({\n changes,\n effects: EditorView.announce.of(announceText),\n userEvent: \"input.replace.all\"\n });\n return true;\n});\nfunction createSearchPanel(view) {\n return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n var _a, _b, _c, _d, _e;\n let sel = state.selection.main;\n let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n if (fallback && !selText)\n return fallback;\n let config = state.facet(searchConfigFacet);\n return new SearchQuery({\n search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n });\n}\nfunction getSearchInput(view) {\n let panel = getPanel(view, createSearchPanel);\n return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n let input = getSearchInput(view);\n if (input && input == view.root.activeElement)\n input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (state && state.panel) {\n let searchInput = getSearchInput(view);\n if (searchInput && searchInput != view.root.activeElement) {\n let query = defaultQuery(view.state, state.query.spec);\n if (query.valid)\n view.dispatch({ effects: setSearchQuery.of(query) });\n searchInput.focus();\n searchInput.select();\n }\n }\n else {\n view.dispatch({ effects: [\n togglePanel.of(true),\n state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n ] });\n }\n return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (!state || !state.panel)\n return false;\n let panel = getPanel(view, createSearchPanel);\n if (panel && panel.dom.contains(view.root.activeElement))\n view.focus();\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n { key: \"Mod-Alt-g\", run: gotoLine },\n { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n constructor(view) {\n this.view = view;\n let query = this.query = view.state.field(searchState).query.spec;\n this.commit = this.commit.bind(this);\n this.searchField = elt(\"input\", {\n value: query.search,\n placeholder: phrase(view, \"Find\"),\n \"aria-label\": phrase(view, \"Find\"),\n class: \"cm-textfield\",\n name: \"search\",\n form: \"\",\n \"main-field\": \"true\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.replaceField = elt(\"input\", {\n value: query.replace,\n placeholder: phrase(view, \"Replace\"),\n \"aria-label\": phrase(view, \"Replace\"),\n class: \"cm-textfield\",\n name: \"replace\",\n form: \"\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.caseField = elt(\"input\", {\n type: \"checkbox\",\n name: \"case\",\n form: \"\",\n checked: query.caseSensitive,\n onchange: this.commit\n });\n this.reField = elt(\"input\", {\n type: \"checkbox\",\n name: \"re\",\n form: \"\",\n checked: query.regexp,\n onchange: this.commit\n });\n this.wordField = elt(\"input\", {\n type: \"checkbox\",\n name: \"word\",\n form: \"\",\n checked: query.wholeWord,\n onchange: this.commit\n });\n function button(name, onclick, content) {\n return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n }\n this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n this.searchField,\n button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n ...view.state.readOnly ? [] : [\n elt(\"br\"),\n this.replaceField,\n button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n ],\n elt(\"button\", {\n name: \"close\",\n onclick: () => closeSearchPanel(view),\n \"aria-label\": phrase(view, \"close\"),\n type: \"button\"\n }, [\"×\"])\n ]);\n }\n commit() {\n let query = new SearchQuery({\n search: this.searchField.value,\n caseSensitive: this.caseField.checked,\n regexp: this.reField.checked,\n wholeWord: this.wordField.checked,\n replace: this.replaceField.value,\n });\n if (!query.eq(this.query)) {\n this.query = query;\n this.view.dispatch({ effects: setSearchQuery.of(query) });\n }\n }\n keydown(e) {\n if (runScopeHandlers(this.view, e, \"search-panel\")) {\n e.preventDefault();\n }\n else if (e.keyCode == 13 && e.target == this.searchField) {\n e.preventDefault();\n (e.shiftKey ? findPrevious : findNext)(this.view);\n }\n else if (e.keyCode == 13 && e.target == this.replaceField) {\n e.preventDefault();\n replaceNext(this.view);\n }\n }\n update(update) {\n for (let tr of update.transactions)\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n this.setQuery(effect.value);\n }\n }\n setQuery(query) {\n this.query = query;\n this.searchField.value = query.search;\n this.replaceField.value = query.replace;\n this.caseField.checked = query.caseSensitive;\n this.reField.checked = query.regexp;\n this.wordField.checked = query.wholeWord;\n }\n mount() {\n this.searchField.select();\n }\n get pos() { return 80; }\n get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n let text = view.state.sliceDoc(start, end);\n if (start != line.from) {\n for (let i = 0; i < AnnounceMargin; i++)\n if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n text = text.slice(i);\n break;\n }\n }\n if (end != lineEnd) {\n for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n text = text.slice(0, i);\n break;\n }\n }\n return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-search\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n },\n \"& input, & button, & label\": {\n margin: \".2em .6em .2em 0\"\n },\n \"& input[type=checkbox]\": {\n marginRight: \".2em\"\n },\n \"& label\": {\n fontSize: \"80%\",\n whiteSpace: \"pre\"\n }\n },\n \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n searchState,\n /*@__PURE__*/Prec.low(searchHighlighter),\n baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { Decoration, showPanel, EditorView, ViewPlugin, gutter, showTooltip, hoverTooltip, getPanel, logException, WidgetType, GutterMarker } from '@codemirror/view';\nimport { StateEffect, StateField, Facet, combineConfig, RangeSet, RangeSetBuilder } from '@codemirror/state';\nimport elt from 'crelt';\n\nclass SelectedDiagnostic {\n constructor(from, to, diagnostic) {\n this.from = from;\n this.to = to;\n this.diagnostic = diagnostic;\n }\n}\nclass LintState {\n constructor(diagnostics, panel, selected) {\n this.diagnostics = diagnostics;\n this.panel = panel;\n this.selected = selected;\n }\n static init(diagnostics, panel, state) {\n // Filter the list of diagnostics for which to create markers\n let diagnosticFilter = state.facet(lintConfig).markerFilter;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics, state);\n let sorted = diagnostics.slice().sort((a, b) => a.from - b.from || a.to - b.to);\n let deco = new RangeSetBuilder(), active = [], pos = 0;\n for (let i = 0;;) {\n let next = i == sorted.length ? null : sorted[i];\n if (!next && !active.length)\n break;\n let from, to;\n if (active.length) {\n from = pos;\n to = active.reduce((p, d) => Math.min(p, d.to), next && next.from > from ? next.from : 1e8);\n }\n else {\n from = next.from;\n to = next.to;\n active.push(next);\n i++;\n }\n while (i < sorted.length) {\n let next = sorted[i];\n if (next.from == from && (next.to > next.from || next.to == from)) {\n active.push(next);\n i++;\n to = Math.min(next.to, to);\n }\n else {\n to = Math.min(next.from, to);\n break;\n }\n }\n let sev = maxSeverity(active);\n if (active.some(d => d.from == d.to || (d.from == d.to - 1 && state.doc.lineAt(d.from).to == d.from))) {\n deco.add(from, from, Decoration.widget({\n widget: new DiagnosticWidget(sev),\n diagnostics: active.slice()\n }));\n }\n else {\n let markClass = active.reduce((c, d) => d.markClass ? c + \" \" + d.markClass : c, \"\");\n deco.add(from, to, Decoration.mark({\n class: \"cm-lintRange cm-lintRange-\" + sev + markClass,\n diagnostics: active.slice(),\n inclusiveEnd: active.some(a => a.to > to)\n }));\n }\n pos = to;\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= pos)\n active.splice(i--, 1);\n }\n let set = deco.finish();\n return new LintState(set, panel, findDiagnostic(set));\n }\n}\nfunction findDiagnostic(diagnostics, diagnostic = null, after = 0) {\n let found = null;\n diagnostics.between(after, 1e9, (from, to, { spec }) => {\n if (diagnostic && spec.diagnostics.indexOf(diagnostic) < 0)\n return;\n if (!found)\n found = new SelectedDiagnostic(from, to, diagnostic || spec.diagnostics[0]);\n else if (spec.diagnostics.indexOf(found.diagnostic) < 0)\n return false;\n else\n found = new SelectedDiagnostic(found.from, to, found.diagnostic);\n });\n return found;\n}\nfunction hideTooltip(tr, tooltip) {\n let from = tooltip.pos, to = tooltip.end || from;\n let result = tr.state.facet(lintConfig).hideOn(tr, from, to);\n if (result != null)\n return result;\n let line = tr.startState.doc.lineAt(tooltip.pos);\n return !!(tr.effects.some(e => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(line.from, Math.max(line.to, to)));\n}\nfunction maybeEnableLint(state, effects) {\n return state.field(lintState, false) ? effects : effects.concat(StateEffect.appendConfig.of(lintExtensions));\n}\n/**\nReturns a transaction spec which updates the current set of\ndiagnostics, and enables the lint extension if if wasn't already\nactive.\n*/\nfunction setDiagnostics(state, diagnostics) {\n return {\n effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)])\n };\n}\n/**\nThe state effect that updates the set of active diagnostics. Can\nbe useful when writing an extension that needs to track these.\n*/\nconst setDiagnosticsEffect = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst movePanelSelection = /*@__PURE__*/StateEffect.define();\nconst lintState = /*@__PURE__*/StateField.define({\n create() {\n return new LintState(Decoration.none, null, null);\n },\n update(value, tr) {\n if (tr.docChanged && value.diagnostics.size) {\n let mapped = value.diagnostics.map(tr.changes), selected = null, panel = value.panel;\n if (value.selected) {\n let selPos = tr.changes.mapPos(value.selected.from, 1);\n selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos);\n }\n if (!mapped.size && panel && tr.state.facet(lintConfig).autoPanel)\n panel = null;\n value = new LintState(mapped, panel, selected);\n }\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let panel = !tr.state.facet(lintConfig).autoPanel ? value.panel : effect.value.length ? LintPanel.open : null;\n value = LintState.init(effect.value, panel, tr.state);\n }\n else if (effect.is(togglePanel)) {\n value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected);\n }\n else if (effect.is(movePanelSelection)) {\n value = new LintState(value.diagnostics, value.panel, effect.value);\n }\n }\n return value;\n },\n provide: f => [showPanel.from(f, val => val.panel),\n EditorView.decorations.from(f, s => s.diagnostics)]\n});\n/**\nReturns the number of active lint diagnostics in the given state.\n*/\nfunction diagnosticCount(state) {\n let lint = state.field(lintState, false);\n return lint ? lint.diagnostics.size : 0;\n}\nconst activeMark = /*@__PURE__*/Decoration.mark({ class: \"cm-lintRange cm-lintRange-active\" });\nfunction lintTooltip(view, pos, side) {\n let { diagnostics } = view.state.field(lintState);\n let found, start = -1, end = -1;\n diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, { spec }) => {\n if (pos >= from && pos <= to &&\n (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) {\n found = spec.diagnostics;\n start = from;\n end = to;\n return false;\n }\n });\n let diagnosticFilter = view.state.facet(lintConfig).tooltipFilter;\n if (found && diagnosticFilter)\n found = diagnosticFilter(found, view.state);\n if (!found)\n return null;\n return {\n pos: start,\n end: end,\n above: view.state.doc.lineAt(start).to < end,\n create() {\n return { dom: diagnosticsTooltip(view, found) };\n }\n };\n}\nfunction diagnosticsTooltip(view, diagnostics) {\n return elt(\"ul\", { class: \"cm-tooltip-lint\" }, diagnostics.map(d => renderDiagnostic(view, d, false)));\n}\n/**\nCommand to open and focus the lint panel.\n*/\nconst openLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n view.dispatch({ effects: maybeEnableLint(view.state, [togglePanel.of(true)]) });\n let panel = getPanel(view, LintPanel.open);\n if (panel)\n panel.dom.querySelector(\".cm-panel-lint ul\").focus();\n return true;\n};\n/**\nCommand to close the lint panel, when open.\n*/\nconst closeLintPanel = (view) => {\n let field = view.state.field(lintState, false);\n if (!field || !field.panel)\n return false;\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nMove the selection to the next diagnostic.\n*/\nconst nextDiagnostic = (view) => {\n let field = view.state.field(lintState, false);\n if (!field)\n return false;\n let sel = view.state.selection.main, next = field.diagnostics.iter(sel.to + 1);\n if (!next.value) {\n next = field.diagnostics.iter(0);\n if (!next.value || next.from == sel.from && next.to == sel.to)\n return false;\n }\n view.dispatch({ selection: { anchor: next.from, head: next.to }, scrollIntoView: true });\n return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n let { state } = view, field = state.field(lintState, false);\n if (!field)\n return false;\n let sel = state.selection.main;\n let prevFrom, prevTo, lastFrom, lastTo;\n field.diagnostics.between(0, state.doc.length, (from, to) => {\n if (to < sel.to && (prevFrom == null || prevFrom < from)) {\n prevFrom = from;\n prevTo = to;\n }\n if (lastFrom == null || from > lastFrom) {\n lastFrom = from;\n lastTo = to;\n }\n });\n if (lastFrom == null || prevFrom == null && lastFrom == sel.from)\n return false;\n view.dispatch({ selection: { anchor: prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, head: prevTo !== null && prevTo !== void 0 ? prevTo : lastTo }, scrollIntoView: true });\n return true;\n};\n/**\nA set of default key bindings for the lint functionality.\n\n- Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)\n- F8: [`nextDiagnostic`](https://codemirror.net/6/docs/ref/#lint.nextDiagnostic)\n*/\nconst lintKeymap = [\n { key: \"Mod-Shift-m\", run: openLintPanel, preventDefault: true },\n { key: \"F8\", run: nextDiagnostic }\n];\nconst lintPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.timeout = -1;\n this.set = true;\n let { delay } = view.state.facet(lintConfig);\n this.lintTime = Date.now() + delay;\n this.run = this.run.bind(this);\n this.timeout = setTimeout(this.run, delay);\n }\n run() {\n clearTimeout(this.timeout);\n let now = Date.now();\n if (now < this.lintTime - 10) {\n this.timeout = setTimeout(this.run, this.lintTime - now);\n }\n else {\n this.set = false;\n let { state } = this.view, { sources } = state.facet(lintConfig);\n if (sources.length)\n batchResults(sources.map(s => Promise.resolve(s(this.view))), annotations => {\n if (this.view.state.doc == state.doc)\n this.view.dispatch(setDiagnostics(this.view.state, annotations.reduce((a, b) => a.concat(b))));\n }, error => { logException(this.view.state, error); });\n }\n }\n update(update) {\n let config = update.state.facet(lintConfig);\n if (update.docChanged || config != update.startState.facet(lintConfig) ||\n config.needsRefresh && config.needsRefresh(update)) {\n this.lintTime = Date.now() + config.delay;\n if (!this.set) {\n this.set = true;\n this.timeout = setTimeout(this.run, config.delay);\n }\n }\n }\n force() {\n if (this.set) {\n this.lintTime = Date.now();\n this.run();\n }\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n});\nfunction batchResults(promises, sink, error) {\n let collected = [], timeout = -1;\n for (let p of promises)\n p.then(value => {\n collected.push(value);\n clearTimeout(timeout);\n if (collected.length == promises.length)\n sink(collected);\n else\n timeout = setTimeout(() => sink(collected), 200);\n }, error);\n}\nconst lintConfig = /*@__PURE__*/Facet.define({\n combine(input) {\n return Object.assign({ sources: input.map(i => i.source).filter(x => x != null) }, combineConfig(input.map(i => i.config), {\n delay: 750,\n markerFilter: null,\n tooltipFilter: null,\n needsRefresh: null,\n hideOn: () => null,\n }, {\n needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u)\n }));\n }\n});\n/**\nGiven a diagnostic source, this function returns an extension that\nenables linting with that source. It will be called whenever the\neditor is idle (after its content changed). If `null` is given as\nsource, this only configures the lint extension.\n*/\nfunction linter(source, config = {}) {\n return [\n lintConfig.of({ source, config }),\n lintPlugin,\n lintExtensions\n ];\n}\n/**\nForces any linters [configured](https://codemirror.net/6/docs/ref/#lint.linter) to run when the\neditor is idle to run right away.\n*/\nfunction forceLinting(view) {\n let plugin = view.plugin(lintPlugin);\n if (plugin)\n plugin.force();\n}\nfunction assignKeys(actions) {\n let assigned = [];\n if (actions)\n actions: for (let { name } of actions) {\n for (let i = 0; i < name.length; i++) {\n let ch = name[i];\n if (/[a-zA-Z]/.test(ch) && !assigned.some(c => c.toLowerCase() == ch.toLowerCase())) {\n assigned.push(ch);\n continue actions;\n }\n }\n assigned.push(\"\");\n }\n return assigned;\n}\nfunction renderDiagnostic(view, diagnostic, inPanel) {\n var _a;\n let keys = inPanel ? assignKeys(diagnostic.actions) : [];\n return elt(\"li\", { class: \"cm-diagnostic cm-diagnostic-\" + diagnostic.severity }, elt(\"span\", { class: \"cm-diagnosticText\" }, diagnostic.renderMessage ? diagnostic.renderMessage(view) : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map((action, i) => {\n let fired = false, click = (e) => {\n e.preventDefault();\n if (fired)\n return;\n fired = true;\n let found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n action.apply(view, found.from, found.to);\n };\n let { name } = action, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1;\n let nameElt = keyIndex < 0 ? name : [name.slice(0, keyIndex),\n elt(\"u\", name.slice(keyIndex, keyIndex + 1)),\n name.slice(keyIndex + 1)];\n return elt(\"button\", {\n type: \"button\",\n class: \"cm-diagnosticAction\",\n onclick: click,\n onmousedown: click,\n \"aria-label\": ` Action: ${name}${keyIndex < 0 ? \"\" : ` (access key \"${keys[i]})\"`}.`\n }, nameElt);\n }), diagnostic.source && elt(\"div\", { class: \"cm-diagnosticSource\" }, diagnostic.source));\n}\nclass DiagnosticWidget extends WidgetType {\n constructor(sev) {\n super();\n this.sev = sev;\n }\n eq(other) { return other.sev == this.sev; }\n toDOM() {\n return elt(\"span\", { class: \"cm-lintPoint cm-lintPoint-\" + this.sev });\n }\n}\nclass PanelItem {\n constructor(view, diagnostic) {\n this.diagnostic = diagnostic;\n this.id = \"item_\" + Math.floor(Math.random() * 0xffffffff).toString(16);\n this.dom = renderDiagnostic(view, diagnostic, true);\n this.dom.id = this.id;\n this.dom.setAttribute(\"role\", \"option\");\n }\n}\nclass LintPanel {\n constructor(view) {\n this.view = view;\n this.items = [];\n let onkeydown = (event) => {\n if (event.keyCode == 27) { // Escape\n closeLintPanel(this.view);\n this.view.focus();\n }\n else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length);\n }\n else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n this.moveSelection((this.selectedIndex + 1) % this.items.length);\n }\n else if (event.keyCode == 36) { // Home\n this.moveSelection(0);\n }\n else if (event.keyCode == 35) { // End\n this.moveSelection(this.items.length - 1);\n }\n else if (event.keyCode == 13) { // Enter\n this.view.focus();\n }\n else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { // A-Z\n let { diagnostic } = this.items[this.selectedIndex], keys = assignKeys(diagnostic.actions);\n for (let i = 0; i < keys.length; i++)\n if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) {\n let found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic);\n if (found)\n diagnostic.actions[i].apply(view, found.from, found.to);\n }\n }\n else {\n return;\n }\n event.preventDefault();\n };\n let onclick = (event) => {\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].dom.contains(event.target))\n this.moveSelection(i);\n }\n };\n this.list = elt(\"ul\", {\n tabIndex: 0,\n role: \"listbox\",\n \"aria-label\": this.view.state.phrase(\"Diagnostics\"),\n onkeydown,\n onclick\n });\n this.dom = elt(\"div\", { class: \"cm-panel-lint\" }, this.list, elt(\"button\", {\n type: \"button\",\n name: \"close\",\n \"aria-label\": this.view.state.phrase(\"close\"),\n onclick: () => closeLintPanel(this.view)\n }, \"×\"));\n this.update();\n }\n get selectedIndex() {\n let selected = this.view.state.field(lintState).selected;\n if (!selected)\n return -1;\n for (let i = 0; i < this.items.length; i++)\n if (this.items[i].diagnostic == selected.diagnostic)\n return i;\n return -1;\n }\n update() {\n let { diagnostics, selected } = this.view.state.field(lintState);\n let i = 0, needsSync = false, newSelectedItem = null;\n let seen = new Set();\n diagnostics.between(0, this.view.state.doc.length, (_start, _end, { spec }) => {\n for (let diagnostic of spec.diagnostics) {\n if (seen.has(diagnostic))\n continue;\n seen.add(diagnostic);\n let found = -1, item;\n for (let j = i; j < this.items.length; j++)\n if (this.items[j].diagnostic == diagnostic) {\n found = j;\n break;\n }\n if (found < 0) {\n item = new PanelItem(this.view, diagnostic);\n this.items.splice(i, 0, item);\n needsSync = true;\n }\n else {\n item = this.items[found];\n if (found > i) {\n this.items.splice(i, found - i);\n needsSync = true;\n }\n }\n if (selected && item.diagnostic == selected.diagnostic) {\n if (!item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.setAttribute(\"aria-selected\", \"true\");\n newSelectedItem = item;\n }\n }\n else if (item.dom.hasAttribute(\"aria-selected\")) {\n item.dom.removeAttribute(\"aria-selected\");\n }\n i++;\n }\n });\n while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) {\n needsSync = true;\n this.items.pop();\n }\n if (this.items.length == 0) {\n this.items.push(new PanelItem(this.view, {\n from: -1, to: -1,\n severity: \"info\",\n message: this.view.state.phrase(\"No diagnostics\")\n }));\n needsSync = true;\n }\n if (newSelectedItem) {\n this.list.setAttribute(\"aria-activedescendant\", newSelectedItem.id);\n this.view.requestMeasure({\n key: this,\n read: () => ({ sel: newSelectedItem.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }),\n write: ({ sel, panel }) => {\n let scaleY = panel.height / this.list.offsetHeight;\n if (sel.top < panel.top)\n this.list.scrollTop -= (panel.top - sel.top) / scaleY;\n else if (sel.bottom > panel.bottom)\n this.list.scrollTop += (sel.bottom - panel.bottom) / scaleY;\n }\n });\n }\n else if (this.selectedIndex < 0) {\n this.list.removeAttribute(\"aria-activedescendant\");\n }\n if (needsSync)\n this.sync();\n }\n sync() {\n let domPos = this.list.firstChild;\n function rm() {\n let prev = domPos;\n domPos = prev.nextSibling;\n prev.remove();\n }\n for (let item of this.items) {\n if (item.dom.parentNode == this.list) {\n while (domPos != item.dom)\n rm();\n domPos = item.dom.nextSibling;\n }\n else {\n this.list.insertBefore(item.dom, domPos);\n }\n }\n while (domPos)\n rm();\n }\n moveSelection(selectedIndex) {\n if (this.selectedIndex < 0)\n return;\n let field = this.view.state.field(lintState);\n let selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic);\n if (!selection)\n return;\n this.view.dispatch({\n selection: { anchor: selection.from, head: selection.to },\n scrollIntoView: true,\n effects: movePanelSelection.of(selection)\n });\n }\n static open(view) { return new LintPanel(view); }\n}\nfunction svg(content, attrs = `viewBox=\"0 0 40 40\"`) {\n return `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${attrs}>${encodeURIComponent(content)}</svg>')`;\n}\nfunction underline(color) {\n return svg(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${color}\" fill=\"none\" stroke-width=\".7\"/>`, `width=\"6\" height=\"3\"`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-diagnostic\": {\n padding: \"3px 6px 3px 8px\",\n marginLeft: \"-1px\",\n display: \"block\",\n whiteSpace: \"pre-wrap\"\n },\n \".cm-diagnostic-error\": { borderLeft: \"5px solid #d11\" },\n \".cm-diagnostic-warning\": { borderLeft: \"5px solid orange\" },\n \".cm-diagnostic-info\": { borderLeft: \"5px solid #999\" },\n \".cm-diagnostic-hint\": { borderLeft: \"5px solid #66d\" },\n \".cm-diagnosticAction\": {\n font: \"inherit\",\n border: \"none\",\n padding: \"2px 4px\",\n backgroundColor: \"#444\",\n color: \"white\",\n borderRadius: \"3px\",\n marginLeft: \"8px\",\n cursor: \"pointer\"\n },\n \".cm-diagnosticSource\": {\n fontSize: \"70%\",\n opacity: .7\n },\n \".cm-lintRange\": {\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n paddingBottom: \"0.7px\",\n },\n \".cm-lintRange-error\": { backgroundImage: /*@__PURE__*/underline(\"#d11\") },\n \".cm-lintRange-warning\": { backgroundImage: /*@__PURE__*/underline(\"orange\") },\n \".cm-lintRange-info\": { backgroundImage: /*@__PURE__*/underline(\"#999\") },\n \".cm-lintRange-hint\": { backgroundImage: /*@__PURE__*/underline(\"#66d\") },\n \".cm-lintRange-active\": { backgroundColor: \"#ffdd9980\" },\n \".cm-tooltip-lint\": {\n padding: 0,\n margin: 0\n },\n \".cm-lintPoint\": {\n position: \"relative\",\n \"&:after\": {\n content: '\"\"',\n position: \"absolute\",\n bottom: 0,\n left: \"-2px\",\n borderLeft: \"3px solid transparent\",\n borderRight: \"3px solid transparent\",\n borderBottom: \"4px solid #d11\"\n }\n },\n \".cm-lintPoint-warning\": {\n \"&:after\": { borderBottomColor: \"orange\" }\n },\n \".cm-lintPoint-info\": {\n \"&:after\": { borderBottomColor: \"#999\" }\n },\n \".cm-lintPoint-hint\": {\n \"&:after\": { borderBottomColor: \"#66d\" }\n },\n \".cm-panel.cm-panel-lint\": {\n position: \"relative\",\n \"& ul\": {\n maxHeight: \"100px\",\n overflowY: \"auto\",\n \"& [aria-selected]\": {\n backgroundColor: \"#ddd\",\n \"& u\": { textDecoration: \"underline\" }\n },\n \"&:focus [aria-selected]\": {\n background_fallback: \"#bdf\",\n backgroundColor: \"Highlight\",\n color_fallback: \"white\",\n color: \"HighlightText\"\n },\n \"& u\": { textDecoration: \"none\" },\n padding: 0,\n margin: 0\n },\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"2px\",\n background: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n }\n }\n});\nfunction severityWeight(sev) {\n return sev == \"error\" ? 4 : sev == \"warning\" ? 3 : sev == \"info\" ? 2 : 1;\n}\nfunction maxSeverity(diagnostics) {\n let sev = \"hint\", weight = 1;\n for (let d of diagnostics) {\n let w = severityWeight(d.severity);\n if (w > weight) {\n weight = w;\n sev = d.severity;\n }\n }\n return sev;\n}\nclass LintGutterMarker extends GutterMarker {\n constructor(diagnostics) {\n super();\n this.diagnostics = diagnostics;\n this.severity = maxSeverity(diagnostics);\n }\n toDOM(view) {\n let elt = document.createElement(\"div\");\n elt.className = \"cm-lint-marker cm-lint-marker-\" + this.severity;\n let diagnostics = this.diagnostics;\n let diagnosticsFilter = view.state.facet(lintGutterConfig).tooltipFilter;\n if (diagnosticsFilter)\n diagnostics = diagnosticsFilter(diagnostics, view.state);\n if (diagnostics.length)\n elt.onmouseover = () => gutterMarkerMouseOver(view, elt, diagnostics);\n return elt;\n }\n}\nfunction trackHoverOn(view, marker) {\n let mousemove = (event) => {\n let rect = marker.getBoundingClientRect();\n if (event.clientX > rect.left - 10 /* Hover.Margin */ && event.clientX < rect.right + 10 /* Hover.Margin */ &&\n event.clientY > rect.top - 10 /* Hover.Margin */ && event.clientY < rect.bottom + 10 /* Hover.Margin */)\n return;\n for (let target = event.target; target; target = target.parentNode) {\n if (target.nodeType == 1 && target.classList.contains(\"cm-tooltip-lint\"))\n return;\n }\n window.removeEventListener(\"mousemove\", mousemove);\n if (view.state.field(lintGutterTooltip))\n view.dispatch({ effects: setLintGutterTooltip.of(null) });\n };\n window.addEventListener(\"mousemove\", mousemove);\n}\nfunction gutterMarkerMouseOver(view, marker, diagnostics) {\n function hovered() {\n let line = view.elementAtHeight(marker.getBoundingClientRect().top + 5 - view.documentTop);\n const linePos = view.coordsAtPos(line.from);\n if (linePos) {\n view.dispatch({ effects: setLintGutterTooltip.of({\n pos: line.from,\n above: false,\n clip: false,\n create() {\n return {\n dom: diagnosticsTooltip(view, diagnostics),\n getCoords: () => marker.getBoundingClientRect()\n };\n }\n }) });\n }\n marker.onmouseout = marker.onmousemove = null;\n trackHoverOn(view, marker);\n }\n let { hoverTime } = view.state.facet(lintGutterConfig);\n let hoverTimeout = setTimeout(hovered, hoverTime);\n marker.onmouseout = () => {\n clearTimeout(hoverTimeout);\n marker.onmouseout = marker.onmousemove = null;\n };\n marker.onmousemove = () => {\n clearTimeout(hoverTimeout);\n hoverTimeout = setTimeout(hovered, hoverTime);\n };\n}\nfunction markersForDiagnostics(doc, diagnostics) {\n let byLine = Object.create(null);\n for (let diagnostic of diagnostics) {\n let line = doc.lineAt(diagnostic.from);\n (byLine[line.from] || (byLine[line.from] = [])).push(diagnostic);\n }\n let markers = [];\n for (let line in byLine) {\n markers.push(new LintGutterMarker(byLine[line]).range(+line));\n }\n return RangeSet.of(markers, true);\n}\nconst lintGutterExtension = /*@__PURE__*/gutter({\n class: \"cm-gutter-lint\",\n markers: view => view.state.field(lintGutterMarkers),\n widgetMarker: (view, widget, block) => {\n let diagnostics = [];\n view.state.field(lintGutterMarkers).between(block.from, block.to, (from, to, value) => {\n if (from > block.from && from < block.to)\n diagnostics.push(...value.diagnostics);\n });\n return diagnostics.length ? new LintGutterMarker(diagnostics) : null;\n }\n});\nconst lintGutterMarkers = /*@__PURE__*/StateField.define({\n create() {\n return RangeSet.empty;\n },\n update(markers, tr) {\n markers = markers.map(tr.changes);\n let diagnosticFilter = tr.state.facet(lintGutterConfig).markerFilter;\n for (let effect of tr.effects) {\n if (effect.is(setDiagnosticsEffect)) {\n let diagnostics = effect.value;\n if (diagnosticFilter)\n diagnostics = diagnosticFilter(diagnostics || [], tr.state);\n markers = markersForDiagnostics(tr.state.doc, diagnostics.slice(0));\n }\n }\n return markers;\n }\n});\nconst setLintGutterTooltip = /*@__PURE__*/StateEffect.define();\nconst lintGutterTooltip = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(tooltip, tr) {\n if (tooltip && tr.docChanged)\n tooltip = hideTooltip(tr, tooltip) ? null : Object.assign(Object.assign({}, tooltip), { pos: tr.changes.mapPos(tooltip.pos) });\n return tr.effects.reduce((t, e) => e.is(setLintGutterTooltip) ? e.value : t, tooltip);\n },\n provide: field => showTooltip.from(field)\n});\nconst lintGutterTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-gutter-lint\": {\n width: \"1.4em\",\n \"& .cm-gutterElement\": {\n padding: \".2em\"\n }\n },\n \".cm-lint-marker\": {\n width: \"1em\",\n height: \"1em\"\n },\n \".cm-lint-marker-info\": {\n content: /*@__PURE__*/svg(`<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>`)\n },\n \".cm-lint-marker-warning\": {\n content: /*@__PURE__*/svg(`<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>`),\n },\n \".cm-lint-marker-error\": {\n content: /*@__PURE__*/svg(`<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>`)\n },\n});\nconst lintExtensions = [\n lintState,\n /*@__PURE__*/EditorView.decorations.compute([lintState], state => {\n let { selected, panel } = state.field(lintState);\n return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([\n activeMark.range(selected.from, selected.to)\n ]);\n }),\n /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip }),\n baseTheme\n];\nconst lintGutterConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n hoverTime: 300 /* Hover.Time */,\n markerFilter: null,\n tooltipFilter: null\n });\n }\n});\n/**\nReturns an extension that installs a gutter showing markers for\neach line that has diagnostics, which can be hovered over to see\nthe diagnostics.\n*/\nfunction lintGutter(config = {}) {\n return [lintGutterConfig.of(config), lintGutterMarkers, lintGutterExtension, lintGutterTheme, lintGutterTooltip];\n}\n/**\nIterate over the marked diagnostics for the given editor state,\ncalling `f` for each of them. Note that, if the document changed\nsince the diagnostics were created, the `Diagnostic` object will\nhold the original outdated position, whereas the `to` and `from`\narguments hold the diagnostic's current position.\n*/\nfunction forEachDiagnostic(state, f) {\n let lState = state.field(lintState, false);\n if (lState && lState.diagnostics.size) {\n let pending = [], pendingStart = [], lastEnd = -1;\n for (let iter = RangeSet.iter([lState.diagnostics]);; iter.next()) {\n for (let i = 0; i < pending.length; i++)\n if (!iter.value || iter.value.spec.diagnostics.indexOf(pending[i]) < 0) {\n f(pending[i], pendingStart[i], lastEnd);\n pending.splice(i, 1);\n pendingStart.splice(i--, 1);\n }\n if (!iter.value)\n break;\n for (let d of iter.value.spec.diagnostics)\n if (pending.indexOf(d) < 0) {\n pending.push(d);\n pendingStart.push(iter.from);\n }\n lastEnd = iter.to;\n }\n }\n}\n\nexport { closeLintPanel, diagnosticCount, forEachDiagnostic, forceLinting, lintGutter, lintKeymap, linter, nextDiagnostic, openLintPanel, previousDiagnostic, setDiagnostics, setDiagnosticsEffect };\n","import { lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap } from '@codemirror/view';\nexport { EditorView } from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap } from '@codemirror/language';\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands';\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search';\nimport { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from '@codemirror/autocomplete';\nimport { lintKeymap } from '@codemirror/lint';\n\n// (The superfluous function calls around the list of extensions work\n// around current limitations in tree-shaking software.)\n/**\nThis is an extension value that just pulls together a number of\nextensions that you might want in a basic editor. It is meant as a\nconvenient helper to quickly set up CodeMirror without installing\nand importing a lot of separate packages.\n\nSpecifically, it includes...\n\n - [the default command bindings](https://codemirror.net/6/docs/ref/#commands.defaultKeymap)\n - [line numbers](https://codemirror.net/6/docs/ref/#view.lineNumbers)\n - [special character highlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars)\n - [the undo history](https://codemirror.net/6/docs/ref/#commands.history)\n - [a fold gutter](https://codemirror.net/6/docs/ref/#language.foldGutter)\n - [custom selection drawing](https://codemirror.net/6/docs/ref/#view.drawSelection)\n - [drop cursor](https://codemirror.net/6/docs/ref/#view.dropCursor)\n - [multiple selections](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\n - [reindentation on input](https://codemirror.net/6/docs/ref/#language.indentOnInput)\n - [the default highlight style](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle) (as fallback)\n - [bracket matching](https://codemirror.net/6/docs/ref/#language.bracketMatching)\n - [bracket closing](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets)\n - [autocompletion](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion)\n - [rectangular selection](https://codemirror.net/6/docs/ref/#view.rectangularSelection) and [crosshair cursor](https://codemirror.net/6/docs/ref/#view.crosshairCursor)\n - [active line highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLine)\n - [active line gutter highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLineGutter)\n - [selection match highlighting](https://codemirror.net/6/docs/ref/#search.highlightSelectionMatches)\n - [search](https://codemirror.net/6/docs/ref/#search.searchKeymap)\n - [linting](https://codemirror.net/6/docs/ref/#lint.lintKeymap)\n\n(You'll probably want to add some language package to your setup\ntoo.)\n\nThis extension does not allow customization. The idea is that,\nonce you decide you want to configure your editor more precisely,\nyou take this package's source (which is just a bunch of imports\nand an array literal), copy it into your own code, and adjust it\nas desired.\n*/\nconst basicSetup = /*@__PURE__*/(() => [\n lineNumbers(),\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n foldGutter(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n bracketMatching(),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n highlightSelectionMatches(),\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...searchKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n ...lintKeymap\n ])\n])();\n/**\nA minimal set of extensions to create a functional editor. Only\nincludes [the default keymap](https://codemirror.net/6/docs/ref/#commands.defaultKeymap), [undo\nhistory](https://codemirror.net/6/docs/ref/#commands.history), [special character\nhighlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars), [custom selection\ndrawing](https://codemirror.net/6/docs/ref/#view.drawSelection), and [default highlight\nstyle](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle).\n*/\nconst minimalSetup = /*@__PURE__*/(() => [\n highlightSpecialChars(),\n history(),\n drawSelection(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n keymap.of([\n ...defaultKeymap,\n ...historyKeymap,\n ])\n])();\n\nexport { basicSetup, minimalSetup };\n"],"names":["basicNormalize","String","prototype","normalize","x","SearchCursor","constructor","text","query","from","to","length","test","this","value","done","matches","buffer","bufferPos","iter","iterRange","bufferStart","peek","next","codePointAt","pop","nextOverlapping","str","fromCodePoint","start","codePointSize","norm","i","pos","code","charCodeAt","match","end","index","keep","splice","push","Symbol","iterator","empty","exec","baseFlags","unicode","RegExpCursor","options","curLine","MultilineRegExpCursor","re","RegExp","ignoreCase","startLine","lineAt","curLineStart","matchPos","toCharEnd","getLine","skip","lineBreak","slice","nextLine","off","lastIndex","flattened","WeakMap","FlattenedDoc","get","doc","cached","flat","sliceString","set","cachedFrom","chunkEnd","line","createLineDialog","view","state","selection","main","head","number","input","elt","class","name","go","sign","ln","cl","percent","col","pc","lines","Math","round","docLine","max","min","EditorSelection","cursor","dispatch","effects","dialogEffect","of","EditorView","scrollIntoView","y","focus","dom","onkeydown","event","keyCode","preventDefault","onsubmit","phrase","type","onclick","StateEffect","define","dialogField","StateField","create","update","tr","e","is","provide","f","showPanel","val","baseTheme$1","baseTheme","padding","position","fontSize","top","bottom","right","backgroundColor","border","font","defaultHighlightOptions","highlightWordAroundCursor","minSelectionLength","maxMatches","wholeWords","highlightConfig","Facet","combine","combineConfig","a","b","matchDeco","Decoration","mark","mainMatchDeco","insideWordBoundaries","check","sliceDoc","CharCategory","Word","matchHighlighter","ViewPlugin","fromClass","decorations","getDeco","selectionSet","docChanged","viewportChanged","conf","facet","sel","ranges","none","range","word","wordAt","charCategorizer","len","insideWord","deco","part","visibleRanges","v","defaultTheme","searchConfigFacet","configs","caseSensitive","literal","regexp","wholeWord","createPanel","SearchPanel","scrollToMatch","SearchQuery","config","search","replace","valid","source","_a","validRegExp","unquoted","unquote","_","ch","eq","other","RegExpQuery","StringQuery","getCursor","st","EditorState","regexpCursor","stringCursor","QueryType","spec","undefined","toLowerCase","categorizer","buf","bufPos","charBefore","charAfter","super","nextMatch","curFrom","curTo","prevMatchInRange","prevMatch","found","getReplacement","_result","matchAll","limit","highlight","add","_from","_to","findClusterBreak","size","result","m","l","n","setSearchQuery","togglePanel","searchState","SearchState","defaultQuery","effect","panel","createSearchPanel","matchMark","selectedMatchMark","searchHighlighter","field","startState","builder","RangeSetBuilder","selected","some","r","finish","searchCommand","openSearchPanel","findNext","single","announceMatch","userEvent","selectSearchInput","findPrevious","prev","selectMatches","map","replaceNext","readOnly","replacement","changes","toText","insert","announce","changeSet","replaceAll","announceText","fallback","_b","_c","_d","_e","selText","getSearchInput","getPanel","querySelector","root","activeElement","select","searchInput","appendConfig","searchExtensions","closeSearchPanel","contains","searchKeymap","key","run","scope","shift","cur","newSel","mainIndex","selectWord","searchedText","fullWord","cycled","findNextOccurrence","addRange","button","content","commit","bind","searchField","placeholder","form","onchange","onkeyup","replaceField","caseField","checked","reField","wordField","keydown","runScopeHandlers","target","shiftKey","transactions","setQuery","mount","AnnounceMargin","Break","lineEnd","margin","marginRight","whiteSpace","Prec","low","SelectedDiagnostic","diagnostic","LintState","diagnostics","init","diagnosticFilter","lintConfig","markerFilter","sorted","sort","active","reduce","p","d","sev","maxSeverity","widget","DiagnosticWidget","markClass","c","inclusiveEnd","findDiagnostic","after","between","indexOf","setDiagnosticsEffect","movePanelSelection","lintState","mapped","selPos","mapPos","autoPanel","LintPanel","open","s","activeMark","lintTooltip","side","tooltipFilter","above","diagnosticsTooltip","renderDiagnostic","closeLintPanel","lintKeymap","concat","lintExtensions","anchor","Object","assign","sources","filter","delay","needsRefresh","hideOn","u","assignKeys","actions","assigned","inPanel","keys","severity","renderMessage","message","action","fired","click","apply","keyIndex","nameElt","onmousedown","WidgetType","toDOM","PanelItem","id","floor","random","toString","setAttribute","items","list","tabIndex","role","moveSelection","selectedIndex","toUpperCase","needsSync","newSelectedItem","seen","Set","_start","_end","has","item","j","hasAttribute","removeAttribute","requestMeasure","read","getBoundingClientRect","write","scaleY","height","offsetHeight","scrollTop","sync","domPos","firstChild","rm","nextSibling","remove","parentNode","insertBefore","underline","color","attrs","encodeURIComponent","svg","marginLeft","display","borderLeft","borderRadius","opacity","backgroundPosition","backgroundRepeat","paddingBottom","backgroundImage","left","borderRight","borderBottom","borderBottomColor","maxHeight","overflowY","textDecoration","background_fallback","color_fallback","background","severityWeight","weight","w","compute","hoverTooltip","tooltip","touchesRange","basicSetup","lineNumbers","highlightActiveLineGutter","highlightSpecialChars","history","foldGutter","drawSelection","dropCursor","allowMultipleSelections","indentOnInput","syntaxHighlighting","defaultHighlightStyle","bracketMatching","closeBrackets","autocompletion","rectangularSelection","crosshairCursor","highlightActiveLine","keymap","closeBracketsKeymap","defaultKeymap","historyKeymap","foldKeymap","completionKeymap","minimalSetup"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{StateEffect as t,Facet as e,StateField as r,countColumn as n,EditorState as i,RangeSetBuilder as s,RangeSet as o,Prec as l,combineConfig as a}from"./codemirror_state-BIAL8JKm.js";import{V as h,E as f,q as u,a as c,S as d,D as p,G as g,W as m,l as b}from"./codemirror_view-Bc_iulwl.js";const k=1024;let x=0;class y{constructor(t,e){this.from=t,this.to=e}}class v{constructor(t={}){this.id=x++,this.perNode=!!t.perNode,this.deserialize=t.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(t){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof t&&(t=A.match(t)),e=>{let r=t(e);return void 0===r?null:[this,r]}}}v.closedBy=new v({deserialize:t=>t.split(" ")}),v.openedBy=new v({deserialize:t=>t.split(" ")}),v.group=new v({deserialize:t=>t.split(" ")}),v.isolate=new v({deserialize:t=>{if(t&&"rtl"!=t&&"ltr"!=t&&"auto"!=t)throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}}),v.contextHash=new v({perNode:!0}),v.lookAhead=new v({perNode:!0}),v.mounted=new v({perNode:!0});class w{constructor(t,e,r){this.tree=t,this.overlay=e,this.parser=r}static get(t){return t&&t.props&&t.props[v.mounted.id]}}const S=Object.create(null);class A{constructor(t,e,r,n=0){this.name=t,this.props=e,this.id=r,this.flags=n}static define(t){let e=t.props&&t.props.length?Object.create(null):S,r=(t.top?1:0)|(t.skipped?2:0)|(t.error?4:0)|(null==t.name?8:0),n=new A(t.name||"",e,t.id,r);if(t.props)for(let r of t.props)if(Array.isArray(r)||(r=r(n)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");e[r[0].id]=r[1]}return n}prop(t){return this.props[t.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(v.group);return!!e&&e.indexOf(t)>-1}return this.id==t}static match(t){let e=Object.create(null);for(let r in t)for(let n of r.split(" "))e[n]=t[r];return t=>{for(let r=t.prop(v.group),n=-1;n<(r?r.length:0);n++){let i=e[n<0?t.name:r[n]];if(i)return i}}}}A.none=new A("",Object.create(null),0,8);class C{constructor(t){this.types=t;for(let e=0;e<t.length;e++)if(t[e].id!=e)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...t){let e=[];for(let r of this.types){let n=null;for(let e of t){let t=e(r);t&&(n||(n=Object.assign({},r.props)),n[t[0].id]=t[1])}e.push(n?new A(r.name,n,r.id,r.flags):r)}return new C(e)}}const N=new WeakMap,P=new WeakMap;var I;!function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"}(I||(I={}));class T{constructor(t,e,r,n,i){if(this.type=t,this.children=e,this.positions=r,this.length=n,this.props=null,i&&i.length){this.props=Object.create(null);for(let[t,e]of i)this.props["number"==typeof t?t:t.id]=e}}toString(){let t=w.get(this);if(t&&!t.overlay)return t.tree.toString();let e="";for(let t of this.children){let r=t.toString();r&&(e&&(e+=","),e+=r)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(e.length?"("+e+")":""):e}cursor(t=0){return new F(this.topNode,t)}cursorAt(t,e=0,r=0){let n=N.get(this)||this.topNode,i=new F(n);return i.moveTo(t,e),N.set(this,i._tree),i}get topNode(){return new L(this,0,0,null)}resolve(t,e=0){let r=M(N.get(this)||this.topNode,t,e,!1);return N.set(this,r),r}resolveInner(t,e=0){let r=M(P.get(this)||this.topNode,t,e,!0);return P.set(this,r),r}resolveStack(t,e=0){return function(t,e,r){let n=t.resolveInner(e,r),i=null;for(let t=n instanceof L?n:n.context.parent;t;t=t.parent)if(t.index<0){let s=t.parent;(i||(i=[n])).push(s.resolve(e,r)),t=s}else{let s=w.get(t.tree);if(s&&s.overlay&&s.overlay[0].from<=e&&s.overlay[s.overlay.length-1].to>=e){let o=new L(s.tree,s.overlay[0].from+t.from,-1,t);(i||(i=[n])).push(M(o,e,r,!1))}}return i?W(i):n}(this,t,e)}iterate(t){let{enter:e,leave:r,from:n=0,to:i=this.length}=t,s=t.mode||0,o=(s&I.IncludeAnonymous)>0;for(let t=this.cursor(s|I.IncludeAnonymous);;){let s=!1;if(t.from<=i&&t.to>=n&&(!o&&t.type.isAnonymous||!1!==e(t))){if(t.firstChild())continue;s=!0}for(;s&&r&&(o||!t.type.isAnonymous)&&r(t),!t.nextSibling();){if(!t.parent())return;s=!0}}}prop(t){return t.perNode?this.props?this.props[t.id]:void 0:this.type.prop(t)}get propValues(){let t=[];if(this.props)for(let e in this.props)t.push([+e,this.props[e]]);return t}balance(t={}){return this.children.length<=8?this:H(A.none,this.children,this.positions,0,this.children.length,0,this.length,(t,e,r)=>new T(this.type,t,e,r,this.propValues),t.makeTree||((t,e,r)=>new T(A.none,t,e,r)))}static build(t){return function(t){var e;let{buffer:r,nodeSet:n,maxBufferLength:i=k,reused:s=[],minRepeatType:o=n.types.length}=t,l=Array.isArray(r)?new O(r,r.length):r,a=n.types,h=0,f=0;function u(t,e,r,k,x,y){let{id:v,start:w,end:S,size:A}=l,C=f,N=h;for(;A<0;){if(l.next(),-1==A){let e=s[v];return r.push(e),void k.push(w-t)}if(-3==A)return void(h=v);if(-4==A)return void(f=v);throw new RangeError(`Unrecognized record size: ${A}`)}let P,I,T=a[v],O=w-t;if(S-w<=i&&(I=m(l.pos-e,x))){let e=new Uint16Array(I.size-I.skip),r=l.pos-I.size,i=e.length;for(;l.pos>r;)i=b(I.start,e,i);P=new B(e,S-I.start,n),O=I.start-t}else{let t=l.pos-A;l.next();let e=[],r=[],n=v>=o?v:-1,s=0,a=S;for(;l.pos>t;)n>=0&&l.id==n&&l.size>=0?(l.end<=a-i&&(p(e,r,w,s,l.end,a,n,C,N),s=e.length,a=l.end),l.next()):y>2500?c(w,t,e,r):u(w,t,e,r,n,y+1);if(n>=0&&s>0&&s<e.length&&p(e,r,w,s,w,a,n,C,N),e.reverse(),r.reverse(),n>-1&&s>0){let t=d(T,N);P=H(T,e,r,0,e.length,0,S-w,t,t)}else P=g(T,e,r,S-w,C-S,N)}r.push(P),k.push(O)}function c(t,e,r,s){let o=[],a=0,h=-1;for(;l.pos>e;){let{id:t,start:e,end:r,size:n}=l;if(n>4)l.next();else{if(h>-1&&e<h)break;h<0&&(h=r-i),o.push(t,e,r),a++,l.next()}}if(a){let e=new Uint16Array(4*a),i=o[o.length-2];for(let t=o.length-3,r=0;t>=0;t-=3)e[r++]=o[t],e[r++]=o[t+1]-i,e[r++]=o[t+2]-i,e[r++]=r;r.push(new B(e,o[2]-i,n)),s.push(i-t)}}function d(t,e){return(r,n,i)=>{let s,o,l=0,a=r.length-1;if(a>=0&&(s=r[a])instanceof T){if(!a&&s.type==t&&s.length==i)return s;(o=s.prop(v.lookAhead))&&(l=n[a]+s.length+o)}return g(t,r,n,i,l,e)}}function p(t,e,r,i,s,o,l,a,h){let f=[],u=[];for(;t.length>i;)f.push(t.pop()),u.push(e.pop()+r-s);t.push(g(n.types[l],f,u,o-s,a-o,h)),e.push(s-r)}function g(t,e,r,n,i,s,o){if(s){let t=[v.contextHash,s];o=o?[t].concat(o):[t]}if(i>25){let t=[v.lookAhead,i];o=o?[t].concat(o):[t]}return new T(t,e,r,n,o)}function m(t,e){let r=l.fork(),n=0,s=0,a=0,h=r.end-i,f={size:0,start:0,skip:0};t:for(let i=r.pos-t;r.pos>i;){let t=r.size;if(r.id==e&&t>=0){f.size=n,f.start=s,f.skip=a,a+=4,n+=4,r.next();continue}let l=r.pos-t;if(t<0||l<i||r.start<h)break;let u=r.id>=o?4:0,c=r.start;for(r.next();r.pos>l;){if(r.size<0){if(-3!=r.size)break t;u+=4}else r.id>=o&&(u+=4);r.next()}s=c,n+=t,a+=u}return(e<0||n==t)&&(f.size=n,f.start=s,f.skip=a),f.size>4?f:void 0}function b(t,e,r){let{id:n,start:i,end:s,size:a}=l;if(l.next(),a>=0&&n<o){let o=r;if(a>4){let n=l.pos-(a-4);for(;l.pos>n;)r=b(t,e,r)}e[--r]=o,e[--r]=s-t,e[--r]=i-t,e[--r]=n}else-3==a?h=n:-4==a&&(f=n);return r}let x=[],y=[];for(;l.pos>0;)u(t.start||0,t.bufferStart||0,x,y,-1,0);let w=null!==(e=t.length)&&void 0!==e?e:x.length?y[0]+x[0].length:0;return new T(a[t.topID],x.reverse(),y.reverse(),w)}(t)}}T.empty=new T(A.none,[],[],0);class O{constructor(t,e){this.buffer=t,this.index=e}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new O(this.buffer,this.index)}}class B{constructor(t,e,r){this.buffer=t,this.length=e,this.set=r}get type(){return A.none}toString(){let t=[];for(let e=0;e<this.buffer.length;)t.push(this.childString(e)),e=this.buffer[e+3];return t.join(",")}childString(t){let e=this.buffer[t],r=this.buffer[t+3],n=this.set.types[e],i=n.name;if(/\W/.test(i)&&!n.isError&&(i=JSON.stringify(i)),r==(t+=4))return i;let s=[];for(;t<r;)s.push(this.childString(t)),t=this.buffer[t+3];return i+"("+s.join(",")+")"}findChild(t,e,r,n,i){let{buffer:s}=this,o=-1;for(let l=t;l!=e&&!(_(i,n,s[l+1],s[l+2])&&(o=l,r>0));l=s[l+3]);return o}slice(t,e,r){let n=this.buffer,i=new Uint16Array(e-t),s=0;for(let o=t,l=0;o<e;){i[l++]=n[o++],i[l++]=n[o++]-r;let e=i[l++]=n[o++]-r;i[l++]=n[o++]-t,s=Math.max(s,e)}return new B(i,s,this.set)}}function _(t,e,r,n){switch(t){case-2:return r<e;case-1:return n>=e&&r<e;case 0:return r<e&&n>e;case 1:return r<=e&&n>e;case 2:return n>e;case 4:return!0}}function M(t,e,r,n){for(var i;t.from==t.to||(r<1?t.from>=e:t.from>e)||(r>-1?t.to<=e:t.to<e);){let e=!n&&t instanceof L&&t.index<0?null:t.parent;if(!e)return t;t=e}let s=n?0:I.IgnoreOverlays;if(n)for(let n=t,o=n.parent;o;n=o,o=n.parent)n instanceof L&&n.index<0&&(null===(i=o.enter(e,r,s))||void 0===i?void 0:i.from)!=n.from&&(t=o);for(;;){let n=t.enter(e,r,s);if(!n)return t;t=n}}class D{cursor(t=0){return new F(this,t)}getChild(t,e=null,r=null){let n=E(this,t,e,r);return n.length?n[0]:null}getChildren(t,e=null,r=null){return E(this,t,e,r)}resolve(t,e=0){return M(this,t,e,!1)}resolveInner(t,e=0){return M(this,t,e,!0)}matchContext(t){return R(this.parent,t)}enterUnfinishedNodesBefore(t){let e=this.childBefore(t),r=this;for(;e;){let t=e.lastChild;if(!t||t.to!=e.to)break;t.type.isError&&t.from==t.to?(r=e,e=t.prevSibling):e=t}return r}get node(){return this}get next(){return this.parent}}class L extends D{constructor(t,e,r,n){super(),this._tree=t,this.from=e,this.index=r,this._parent=n}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(t,e,r,n,i=0){for(let s=this;;){for(let{children:o,positions:l}=s._tree,a=e>0?o.length:-1;t!=a;t+=e){let a=o[t],h=l[t]+s.from;if(_(n,r,h,h+a.length))if(a instanceof B){if(i&I.ExcludeBuffers)continue;let o=a.findChild(0,a.buffer.length,e,r-h,n);if(o>-1)return new j(new z(s,a,t,h),null,o)}else if(i&I.IncludeAnonymous||!a.type.isAnonymous||V(a)){let o;if(!(i&I.IgnoreMounts)&&(o=w.get(a))&&!o.overlay)return new L(o.tree,h,t,s);let l=new L(a,h,t,s);return i&I.IncludeAnonymous||!l.type.isAnonymous?l:l.nextChild(e<0?a.children.length-1:0,e,r,n)}}if(i&I.IncludeAnonymous||!s.type.isAnonymous)return null;if(t=s.index>=0?s.index+e:e<0?-1:s._parent._tree.children.length,s=s._parent,!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(t){return this.nextChild(0,1,t,2)}childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t,-2)}enter(t,e,r=0){let n;if(!(r&I.IgnoreOverlays)&&(n=w.get(this._tree))&&n.overlay){let r=t-this.from;for(let{from:t,to:i}of n.overlay)if((e>0?t<=r:t<r)&&(e<0?i>=r:i>r))return new L(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,t,e,r)}nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;)t=t._parent;return t}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function E(t,e,r,n){let i=t.cursor(),s=[];if(!i.firstChild())return s;if(null!=r)for(let t=!1;!t;)if(t=i.type.is(r),!i.nextSibling())return s;for(;;){if(null!=n&&i.type.is(n))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return null==n?s:[]}}function R(t,e,r=e.length-1){for(let n=t;r>=0;n=n.parent){if(!n)return!1;if(!n.type.isAnonymous){if(e[r]&&e[r]!=n.name)return!1;r--}}return!0}class z{constructor(t,e,r,n){this.parent=t,this.buffer=e,this.index=r,this.start=n}}class j extends D{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(t,e,r){super(),this.context=t,this._parent=e,this.index=r,this.type=t.buffer.set.types[t.buffer.buffer[r]]}child(t,e,r){let{buffer:n}=this.context,i=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.context.start,r);return i<0?null:new j(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(t){return this.child(1,t,2)}childBefore(t){return this.child(-1,t,-2)}enter(t,e,r=0){if(r&I.ExcludeBuffers)return null;let{buffer:n}=this.context,i=n.findChild(this.index+4,n.buffer[this.index+3],e>0?1:-1,t-this.context.start,e);return i<0?null:new j(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(t){return this._parent?null:this.context.parent.nextChild(this.context.index+t,t,0,4)}get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];return e<(this._parent?t.buffer[this._parent.index+3]:t.buffer.length)?new j(this.context,this._parent,e):this.externalSibling(1)}get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._parent.index+4:0;return this.index==e?this.externalSibling(-1):new j(this.context,this._parent,t.findChild(e,this.index,-1,0,4))}get tree(){return null}toTree(){let t=[],e=[],{buffer:r}=this.context,n=this.index+4,i=r.buffer[this.index+3];if(i>n){let s=r.buffer[this.index+1];t.push(r.slice(n,i,s)),e.push(0)}return new T(this.type,t,e,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function W(t){if(!t.length)return null;let e=0,r=t[0];for(let n=1;n<t.length;n++){let i=t[n];(i.from>r.from||i.to<r.to)&&(r=i,e=n)}let n=r instanceof L&&r.index<0?null:r.parent,i=t.slice();return n?i[e]=n:i.splice(e,1),new U(i,r)}class U{constructor(t,e){this.heads=t,this.node=e}get next(){return W(this.heads)}}class F{get name(){return this.type.name}constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,t instanceof L)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let e=t._parent;e;e=e._parent)this.stack.unshift(e.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(t){return!!t&&(this._tree=t,this.type=t.type,this.from=t.from,this.to=t.to,!0)}yieldBuf(t,e){this.index=t;let{start:r,buffer:n}=this.buffer;return this.type=e||n.set.types[n.buffer[t]],this.from=r+n.buffer[t+1],this.to=r+n.buffer[t+2],!0}yield(t){return!!t&&(t instanceof L?(this.buffer=null,this.yieldNode(t)):(this.buffer=t.context,this.yieldBuf(t.index,t.type)))}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(t,e,r){if(!this.buffer)return this.yield(this._tree.nextChild(t<0?this._tree._tree.children.length-1:0,t,e,r,this.mode));let{buffer:n}=this.buffer,i=n.findChild(this.index+4,n.buffer[this.index+3],t,e-this.buffer.start,r);return!(i<0)&&(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(t){return this.enterChild(1,t,2)}childBefore(t){return this.enterChild(-1,t,-2)}enter(t,e,r=this.mode){return this.buffer?!(r&I.ExcludeBuffers)&&this.enterChild(1,t,e):this.yield(this._tree.enter(t,e,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&I.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let t=this.mode&I.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(t)}sibling(t){if(!this.buffer)return!!this._tree._parent&&this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+t,t,0,4,this.mode));let{buffer:e}=this.buffer,r=this.stack.length-1;if(t<0){let t=r<0?0:this.stack[r]+4;if(this.index!=t)return this.yieldBuf(e.findChild(t,this.index,-1,0,4))}else{let t=e.buffer[this.index+3];if(t<(r<0?e.buffer.length:e.buffer[this.stack[r]+3]))return this.yieldBuf(t)}return r<0&&this.yield(this.buffer.parent.nextChild(this.buffer.index+t,t,0,4,this.mode))}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(t){let e,r,{buffer:n}=this;if(n){if(t>0){if(this.index<n.buffer.buffer.length)return!1}else for(let t=0;t<this.index;t++)if(n.buffer.buffer[t+3]<this.index)return!1;({index:e,parent:r}=n)}else({index:e,_parent:r}=this._tree);for(;r;({index:e,_parent:r}=r))if(e>-1)for(let n=e+t,i=t<0?-1:r._tree.children.length;n!=i;n+=t){let t=r._tree.children[n];if(this.mode&I.IncludeAnonymous||t instanceof B||!t.type.isAnonymous||V(t))return!1}return!0}move(t,e){if(e&&this.enterChild(t,0,4))return!0;for(;;){if(this.sibling(t))return!0;if(this.atLastNode(t)||!this.parent())return!1}}next(t=!0){return this.move(1,t)}prev(t=!0){return this.move(-1,t)}moveTo(t,e=0){for(;(this.from==this.to||(e<1?this.from>=t:this.from>t)||(e>-1?this.to<=t:this.to<t))&&this.parent(););for(;this.enterChild(1,t,e););return this}get node(){if(!this.buffer)return this._tree;let t=this.bufferNode,e=null,r=0;if(t&&t.context==this.buffer)t:for(let n=this.index,i=this.stack.length;i>=0;){for(let s=t;s;s=s._parent)if(s.index==n){if(n==this.index)return s;e=s,r=i+1;break t}n=this.stack[--i]}for(let t=r;t<this.stack.length;t++)e=new j(this.buffer,e,this.stack[t]);return this.bufferNode=new j(this.buffer,e,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(t,e){for(let r=0;;){let n=!1;if(this.type.isAnonymous||!1!==t(this)){if(this.firstChild()){r++;continue}this.type.isAnonymous||(n=!0)}for(;;){if(n&&e&&e(this),n=this.type.isAnonymous,!r)return;if(this.nextSibling())break;this.parent(),r--,n=!0}}}matchContext(t){if(!this.buffer)return R(this.node.parent,t);let{buffer:e}=this.buffer,{types:r}=e.set;for(let n=t.length-1,i=this.stack.length-1;n>=0;i--){if(i<0)return R(this._tree,t,n);let s=r[e.buffer[this.stack[i]]];if(!s.isAnonymous){if(t[n]&&t[n]!=s.name)return!1;n--}}return!0}}function V(t){return t.children.some(t=>t instanceof B||!t.type.isAnonymous||V(t))}const $=new WeakMap;function q(t,e){if(!t.isAnonymous||e instanceof B||e.type!=t)return 1;let r=$.get(e);if(null==r){r=1;for(let n of e.children){if(n.type!=t||!(n instanceof T)){r=1;break}r+=q(t,n)}$.set(e,r)}return r}function H(t,e,r,n,i,s,o,l,a){let h=0;for(let r=n;r<i;r++)h+=q(t,e[r]);let f=Math.ceil(1.5*h/8),u=[],c=[];return function e(r,n,i,o,l){for(let h=i;h<o;){let i=h,d=n[h],p=q(t,r[h]);for(h++;h<o;h++){let e=q(t,r[h]);if(p+e>=f)break;p+=e}if(h==i+1){if(p>f){let t=r[i];e(t.children,t.positions,0,t.children.length,n[i]+l);continue}u.push(r[i])}else{let e=n[h-1]+r[h-1].length-d;u.push(H(t,r,n,i,h,d,e,null,a))}c.push(d+l-s)}}(e,r,n,i,0),(l||a)(u,c,o)}class G{constructor(){this.map=new WeakMap}setBuffer(t,e,r){let n=this.map.get(t);n||this.map.set(t,n=new Map),n.set(e,r)}getBuffer(t,e){let r=this.map.get(t);return r&&r.get(e)}set(t,e){t instanceof j?this.setBuffer(t.context.buffer,t.index,e):t instanceof L&&this.map.set(t.tree,e)}get(t){return t instanceof j?this.getBuffer(t.context.buffer,t.index):t instanceof L?this.map.get(t.tree):void 0}cursorSet(t,e){t.buffer?this.setBuffer(t.buffer.buffer,t.index,e):this.map.set(t.tree,e)}cursorGet(t){return t.buffer?this.getBuffer(t.buffer.buffer,t.index):this.map.get(t.tree)}}class J{constructor(t,e,r,n,i=!1,s=!1){this.from=t,this.to=e,this.tree=r,this.offset=n,this.open=(i?1:0)|(s?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(t,e=[],r=!1){let n=[new J(0,t.length,t,0,!1,r)];for(let r of e)r.to>t.length&&n.push(r);return n}static applyChanges(t,e,r=128){if(!e.length)return t;let n=[],i=1,s=t.length?t[0]:null;for(let o=0,l=0,a=0;;o++){let h=o<e.length?e[o]:null,f=h?h.fromA:1e9;if(f-l>=r)for(;s&&s.from<f;){let e=s;if(l>=e.from||f<=e.to||a){let t=Math.max(e.from,l)-a,r=Math.min(e.to,f)-a;e=t>=r?null:new J(t,r,e.tree,e.offset+a,o>0,!!h)}if(e&&n.push(e),s.to>f)break;s=i<t.length?t[i++]:null}if(!h)break;l=h.toA,a=h.toA-h.toB}return n}}class K{startParse(t,e,r){return"string"==typeof t&&(t=new Q(t)),r=r?r.length?r.map(t=>new y(t.from,t.to)):[new y(0,0)]:[new y(0,t.length)],this.createParse(t,e||[],r)}parse(t,e,r){let n=this.startParse(t,e,r);for(;;){let t=n.advance();if(t)return t}}}class Q{constructor(t){this.string=t}get length(){return this.string.length}chunk(t){return this.string.slice(t)}get lineChunks(){return!1}read(t,e){return this.string.slice(t,e)}}new v({perNode:!0});let X=0;class Y{constructor(t,e,r,n){this.name=t,this.set=e,this.base=r,this.modified=n,this.id=X++}toString(){let{name:t}=this;for(let e of this.modified)e.name&&(t=`${e.name}(${t})`);return t}static define(t,e){let r="string"==typeof t?t:"?";if(t instanceof Y&&(e=t),null==e?void 0:e.base)throw new Error("Can not derive from a modified tag");let n=new Y(r,[],null,[]);if(n.set.push(n),e)for(let t of e.set)n.set.push(t);return n}static defineModifier(t){let e=new tt(t);return t=>t.modified.indexOf(e)>-1?t:tt.get(t.base||t,t.modified.concat(e).sort((t,e)=>t.id-e.id))}}let Z=0;class tt{constructor(t){this.name=t,this.instances=[],this.id=Z++}static get(t,e){if(!e.length)return t;let r=e[0].instances.find(r=>{return r.base==t&&(n=e,i=r.modified,n.length==i.length&&n.every((t,e)=>t==i[e]));var n,i});if(r)return r;let n=[],i=new Y(t.name,n,t,e);for(let t of e)t.instances.push(i);let s=function(t){let e=[[]];for(let r=0;r<t.length;r++)for(let n=0,i=e.length;n<i;n++)e.push(e[n].concat(t[r]));return e.sort((t,e)=>e.length-t.length)}(e);for(let e of t.set)if(!e.modified.length)for(let t of s)n.push(tt.get(e,t));return i}}function et(t){let e=Object.create(null);for(let r in t){let n=t[r];Array.isArray(n)||(n=[n]);for(let t of r.split(" "))if(t){let r=[],i=2,s=t;for(let e=0;;){if("..."==s&&e>0&&e+3==t.length){i=1;break}let n=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(s);if(!n)throw new RangeError("Invalid path: "+t);if(r.push("*"==n[0]?"":'"'==n[0][0]?JSON.parse(n[0]):n[0]),e+=n[0].length,e==t.length)break;let o=t[e++];if(e==t.length&&"!"==o){i=0;break}if("/"!=o)throw new RangeError("Invalid path: "+t);s=t.slice(e)}let o=r.length-1,l=r[o];if(!l)throw new RangeError("Invalid path: "+t);let a=new nt(n,i,o>0?r.slice(0,o):null);e[l]=a.sort(e[l])}}return rt.add(e)}const rt=new v;class nt{constructor(t,e,r,n){this.tags=t,this.mode=e,this.context=r,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(t){return!t||t.depth<this.depth?(this.next=t,this):(t.next=this.sort(t.next),t)}get depth(){return this.context?this.context.length:0}}function it(t,e){let r=Object.create(null);for(let e of t)if(Array.isArray(e.tag))for(let t of e.tag)r[t.id]=e.class;else r[e.tag.id]=e.class;let{scope:n,all:i=null}=e||{};return{style:t=>{let e=i;for(let n of t)for(let t of n.set){let n=r[t.id];if(n){e=e?e+" "+n:n;break}}return e},scope:n}}function st(t,e,r,n=0,i=t.length){let s=new ot(n,Array.isArray(e)?e:[e],r);s.highlightRange(t.cursor(),n,i,"",s.highlighters),s.flush(i)}nt.empty=new nt([],2,null);class ot{constructor(t,e,r){this.at=t,this.highlighters=e,this.span=r,this.class=""}startSpan(t,e){e!=this.class&&(this.flush(t),t>this.at&&(this.at=t),this.class=e)}flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)}highlightRange(t,e,r,n,i){let{type:s,from:o,to:l}=t;if(o>=r||l<=e)return;s.isTop&&(i=this.highlighters.filter(t=>!t.scope||t.scope(s)));let a=n,h=function(t){let e=t.type.prop(rt);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}(t)||nt.empty,f=function(t,e){let r=null;for(let n of t){let t=n.style(e);t&&(r=r?r+" "+t:t)}return r}(i,h.tags);if(f&&(a&&(a+=" "),a+=f,1==h.mode&&(n+=(n?" ":"")+f)),this.startSpan(Math.max(e,o),a),h.opaque)return;let u=t.tree&&t.tree.prop(v.mounted);if(u&&u.overlay){let s=t.node.enter(u.overlay[0].from+o,1),h=this.highlighters.filter(t=>!t.scope||t.scope(u.tree.type)),f=t.firstChild();for(let c=0,d=o;;c++){let p=c<u.overlay.length?u.overlay[c]:null,g=p?p.from+o:l,m=Math.max(e,d),b=Math.min(r,g);if(m<b&&f)for(;t.from<b&&(this.highlightRange(t,m,b,n,i),this.startSpan(Math.min(b,t.to),a),!(t.to>=g)&&t.nextSibling()););if(!p||g>r)break;d=p.to+o,d>e&&(this.highlightRange(s.cursor(),Math.max(e,p.from+o),Math.min(r,d),"",h),this.startSpan(Math.min(r,d),a))}f&&t.parent()}else if(t.firstChild()){u&&(n="");do{if(!(t.to<=e)){if(t.from>=r)break;this.highlightRange(t,e,r,n,i),this.startSpan(Math.min(r,t.to),a)}}while(t.nextSibling());t.parent()}}}const lt=Y.define,at=lt(),ht=lt(),ft=lt(ht),ut=lt(ht),ct=lt(),dt=lt(ct),pt=lt(ct),gt=lt(),mt=lt(gt),bt=lt(),kt=lt(),xt=lt(),yt=lt(xt),vt=lt(),wt={comment:at,lineComment:lt(at),blockComment:lt(at),docComment:lt(at),name:ht,variableName:lt(ht),typeName:ft,tagName:lt(ft),propertyName:ut,attributeName:lt(ut),className:lt(ht),labelName:lt(ht),namespace:lt(ht),macroName:lt(ht),literal:ct,string:dt,docString:lt(dt),character:lt(dt),attributeValue:lt(dt),number:pt,integer:lt(pt),float:lt(pt),bool:lt(ct),regexp:lt(ct),escape:lt(ct),color:lt(ct),url:lt(ct),keyword:bt,self:lt(bt),null:lt(bt),atom:lt(bt),unit:lt(bt),modifier:lt(bt),operatorKeyword:lt(bt),controlKeyword:lt(bt),definitionKeyword:lt(bt),moduleKeyword:lt(bt),operator:kt,derefOperator:lt(kt),arithmeticOperator:lt(kt),logicOperator:lt(kt),bitwiseOperator:lt(kt),compareOperator:lt(kt),updateOperator:lt(kt),definitionOperator:lt(kt),typeOperator:lt(kt),controlOperator:lt(kt),punctuation:xt,separator:lt(xt),bracket:yt,angleBracket:lt(yt),squareBracket:lt(yt),paren:lt(yt),brace:lt(yt),content:gt,heading:mt,heading1:lt(mt),heading2:lt(mt),heading3:lt(mt),heading4:lt(mt),heading5:lt(mt),heading6:lt(mt),contentSeparator:lt(gt),list:lt(gt),quote:lt(gt),emphasis:lt(gt),strong:lt(gt),link:lt(gt),monospace:lt(gt),strikethrough:lt(gt),inserted:lt(),deleted:lt(),changed:lt(),invalid:lt(),meta:vt,documentMeta:lt(vt),annotation:lt(vt),processingInstruction:lt(vt),definition:Y.defineModifier("definition"),constant:Y.defineModifier("constant"),function:Y.defineModifier("function"),standard:Y.defineModifier("standard"),local:Y.defineModifier("local"),special:Y.defineModifier("special")};for(let t in wt){let e=wt[t];e instanceof Y&&(e.name=t)}var St;it([{tag:wt.link,class:"tok-link"},{tag:wt.heading,class:"tok-heading"},{tag:wt.emphasis,class:"tok-emphasis"},{tag:wt.strong,class:"tok-strong"},{tag:wt.keyword,class:"tok-keyword"},{tag:wt.atom,class:"tok-atom"},{tag:wt.bool,class:"tok-bool"},{tag:wt.url,class:"tok-url"},{tag:wt.labelName,class:"tok-labelName"},{tag:wt.inserted,class:"tok-inserted"},{tag:wt.deleted,class:"tok-deleted"},{tag:wt.literal,class:"tok-literal"},{tag:wt.string,class:"tok-string"},{tag:wt.number,class:"tok-number"},{tag:[wt.regexp,wt.escape,wt.special(wt.string)],class:"tok-string2"},{tag:wt.variableName,class:"tok-variableName"},{tag:wt.local(wt.variableName),class:"tok-variableName tok-local"},{tag:wt.definition(wt.variableName),class:"tok-variableName tok-definition"},{tag:wt.special(wt.variableName),class:"tok-variableName2"},{tag:wt.definition(wt.propertyName),class:"tok-propertyName tok-definition"},{tag:wt.typeName,class:"tok-typeName"},{tag:wt.namespace,class:"tok-namespace"},{tag:wt.className,class:"tok-className"},{tag:wt.macroName,class:"tok-macroName"},{tag:wt.propertyName,class:"tok-propertyName"},{tag:wt.operator,class:"tok-operator"},{tag:wt.comment,class:"tok-comment"},{tag:wt.meta,class:"tok-meta"},{tag:wt.invalid,class:"tok-invalid"},{tag:wt.punctuation,class:"tok-punctuation"}]);const At=new v;function Ct(t){return e.define({combine:t?e=>e.concat(t):void 0})}const Nt=new v;class Pt{constructor(t,e,r=[],n=""){this.data=t,this.name=n,i.prototype.hasOwnProperty("tree")||Object.defineProperty(i.prototype,"tree",{get(){return Ot(this)}}),this.parser=e,this.extension=[Wt.of(this),i.languageData.of((t,e,r)=>{let n=It(t,e,r),i=n.type.prop(At);if(!i)return[];let s=t.facet(i),o=n.type.prop(Nt);if(o){let i=n.resolve(e-n.from,r);for(let e of o)if(e.test(i,t)){let r=t.facet(e.facet);return"replace"==e.type?r:r.concat(s)}}return s})].concat(r)}isActiveAt(t,e,r=-1){return It(t,e,r).type.prop(At)==this.data}findRegions(t){let e=t.facet(Wt);if((null==e?void 0:e.data)==this.data)return[{from:0,to:t.doc.length}];if(!e||!e.allowsNesting)return[];let r=[],n=(t,e)=>{if(t.prop(At)==this.data)return void r.push({from:e,to:e+t.length});let i=t.prop(v.mounted);if(i){if(i.tree.prop(At)==this.data){if(i.overlay)for(let t of i.overlay)r.push({from:t.from+e,to:t.to+e});else r.push({from:e,to:e+t.length});return}if(i.overlay){let t=r.length;if(n(i.tree,i.overlay[0].from+e),r.length>t)return}}for(let r=0;r<t.children.length;r++){let i=t.children[r];i instanceof T&&n(i,t.positions[r]+e)}};return n(Ot(t),0),r}get allowsNesting(){return!0}}function It(t,e,r){let n=t.facet(Wt),i=Ot(t).topNode;if(!n||n.allowsNesting)for(let t=i;t;t=t.enter(e,r,I.ExcludeBuffers))t.type.isTop&&(i=t);return i}Pt.setState=t.define();class Tt extends Pt{constructor(t,e,r){super(t,e,[],r),this.parser=e}static define(t){let e=Ct(t.languageData);return new Tt(e,t.parser.configure({props:[At.add(t=>t.isTop?e:void 0)]}),t.name)}configure(t,e){return new Tt(this.data,this.parser.configure(t),e||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Ot(t){let e=t.field(Pt.state,!1);return e?e.tree:T.empty}function Bt(t,e,r=50){var n;let i=null===(n=t.field(Pt.state,!1))||void 0===n?void 0:n.context;if(!i)return null;let s=i.viewport;i.updateViewport({from:0,to:e});let o=i.isDone(e)||i.work(r,e)?i.tree:null;return i.updateViewport(s),o}class _t{constructor(t){this.doc=t,this.cursorPos=0,this.string="",this.cursor=t.iter()}get length(){return this.doc.length}syncTo(t){return this.string=this.cursor.next(t-this.cursorPos).value,this.cursorPos=t+this.string.length,this.cursorPos-this.string.length}chunk(t){return this.syncTo(t),this.string}get lineChunks(){return!0}read(t,e){let r=this.cursorPos-this.string.length;return t<r||e>=this.cursorPos?this.doc.sliceString(t,e):this.string.slice(t-r,e-r)}}let Mt=null;class Dt{constructor(t,e,r=[],n,i,s,o,l){this.parser=t,this.state=e,this.fragments=r,this.tree=n,this.treeLen=i,this.viewport=s,this.skipped=o,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(t,e,r){return new Dt(t,e,[],T.empty,0,r,[],null)}startParse(){return this.parser.startParse(new _t(this.state.doc),this.fragments)}work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tree!=T.empty&&this.isDone(null!=e?e:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if("number"==typeof t){let e=Date.now()+t;t=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=e&&(null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&e<this.state.doc.length&&this.parse.stopAt(e);;){let n=this.parse.advance();if(n){if(this.fragments=this.withoutTempSkipped(J.addTree(n,this.fragments,null!=this.parse.stoppedAt)),this.treeLen=null!==(r=this.parse.stoppedAt)&&void 0!==r?r:this.state.doc.length,this.tree=n,this.parse=null,!(this.treeLen<(null!=e?e:this.state.doc.length)))return!0;this.parse=this.startParse()}if(t())return!1}})}takeTree(){let t,e;this.parse&&(t=this.parse.parsedPos)>=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>t)&&this.parse.stopAt(t),this.withContext(()=>{for(;!(e=this.parse.advance()););}),this.treeLen=t,this.tree=e,this.fragments=this.withoutTempSkipped(J.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(t){let e=Mt;Mt=this;try{return t()}finally{Mt=e}}withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=Lt(t,e.from,e.to);return t}changes(t,e){let{fragments:r,tree:n,treeLen:i,viewport:s,skipped:o}=this;if(this.takeTree(),!t.empty){let e=[];if(t.iterChangedRanges((t,r,n,i)=>e.push({fromA:t,toA:r,fromB:n,toB:i})),r=J.applyChanges(r,e),n=T.empty,i=0,s={from:t.mapPos(s.from,-1),to:t.mapPos(s.to,1)},this.skipped.length){o=[];for(let e of this.skipped){let r=t.mapPos(e.from,1),n=t.mapPos(e.to,-1);r<n&&o.push({from:r,to:n})}}}return new Dt(this.parser,e,r,n,i,s,o,this.scheduleOn)}updateViewport(t){if(this.viewport.from==t.from&&this.viewport.to==t.to)return!1;this.viewport=t;let e=this.skipped.length;for(let e=0;e<this.skipped.length;e++){let{from:r,to:n}=this.skipped[e];r<t.to&&n>t.from&&(this.fragments=Lt(this.fragments,r,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e)&&(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(t,e){this.skipped.push({from:t,to:e})}static getSkippingParser(t){return new class extends K{createParse(e,r,n){let i=n[0].from,s=n[n.length-1].to;return{parsedPos:i,advance(){let e=Mt;if(e){for(let t of n)e.tempSkipped.push(t);t&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,t]):t)}return this.parsedPos=s,new T(A.none,[],[],s-i)},stoppedAt:null,stopAt(){}}}}}isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;return this.treeLen>=t&&e.length&&0==e[0].from&&e[0].to>=t}static get(){return Mt}}function Lt(t,e,r){return J.applyChanges(t,[{fromA:e,toA:r,fromB:e,toB:r}])}class Et{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;let e=this.context.changes(t.changes,t.state),r=this.context.treeLen==t.startState.doc.length?void 0:Math.max(t.changes.mapPos(this.context.treeLen),e.viewport.to);return e.work(20,r)||e.takeTree(),new Et(e)}static init(t){let e=Math.min(3e3,t.doc.length),r=Dt.create(t.facet(Wt).parser,t,{from:0,to:e});return r.work(20,e)||r.takeTree(),new Et(r)}}Pt.state=r.define({create:Et.init,update(t,e){for(let t of e.effects)if(t.is(Pt.setState))return t.value;return e.startState.facet(Wt)!=e.state.facet(Wt)?Et.init(e.state):t.apply(e)}});let Rt=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};"undefined"!=typeof requestIdleCallback&&(Rt=t=>{let e=-1,r=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(r):cancelIdleCallback(e)});const zt="undefined"!=typeof navigator&&(null===(St=navigator.scheduling)||void 0===St?void 0:St.isInputPending)?()=>navigator.scheduling.isInputPending():null,jt=h.fromClass(class{constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(t){let e=this.view.state.field(Pt.state).context;(e.updateViewport(t.view.viewport)||this.view.viewport.to>e.treeLen)&&this.scheduleWork(),(t.docChanged||t.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(e)}scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(Pt.state);e.tree==e.context.tree&&e.context.isDone(t.doc.length)||(this.working=Rt(this.work))}work(t){this.working=null;let e=Date.now();if(this.chunkEnd<e&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=e+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:r,viewport:{to:n}}=this.view,i=r.field(Pt.state);if(i.tree==i.context.tree&&i.context.isDone(n+1e5))return;let s=Date.now()+Math.min(this.chunkBudget,100,t&&!zt?Math.max(25,t.timeRemaining()-5):1e9),o=i.context.treeLen<n&&r.doc.length>n+1e3,l=i.context.work(()=>zt&&zt()||Date.now()>s,n+(o?0:1e5));this.chunkBudget-=Date.now()-e,(l||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Pt.setState.of(new Et(i.context))})),this.chunkBudget>0&&(!l||o)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(t){t.scheduleOn&&(this.workScheduled++,t.scheduleOn.then(()=>this.scheduleWork()).catch(t=>b(this.view.state,t)).then(()=>this.workScheduled--),t.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Wt=e.define({combine:t=>t.length?t[0]:null,enables:t=>[Pt.state,jt,f.contentAttributes.compute([t],e=>{let r=e.facet(t);return r&&r.name?{"data-language":r.name}:{}})]});class Ut{constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]}}class Ft{constructor(t,e,r,n,i,s=void 0){this.name=t,this.alias=e,this.extensions=r,this.filename=n,this.loadFunc=i,this.support=s,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(t=>this.support=t,t=>{throw this.loading=null,t}))}static of(t){let{load:e,support:r}=t;if(!e){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");e=()=>Promise.resolve(r)}return new Ft(t.name,(t.alias||[]).concat(t.name).map(t=>t.toLowerCase()),t.extensions||[],t.filename,e,r)}static matchFilename(t,e){for(let r of t)if(r.filename&&r.filename.test(e))return r;let r=/\.([^.]+)$/.exec(e);if(r)for(let e of t)if(e.extensions.indexOf(r[1])>-1)return e;return null}static matchLanguageName(t,e,r=!0){e=e.toLowerCase();for(let r of t)if(r.alias.some(t=>t==e))return r;if(r)for(let r of t)for(let t of r.alias){let n=e.indexOf(t);if(n>-1&&(t.length>2||!/\w/.test(e[n-1])&&!/\w/.test(e[n+t.length])))return r}return null}}const Vt=e.define(),$t=e.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function qt(t){let e=t.facet($t);return 9==e.charCodeAt(0)?t.tabSize*e.length:e.length}function Ht(t,e){let r="",n=t.tabSize,i=t.facet($t)[0];if("\t"==i){for(;e>=n;)r+="\t",e-=n;i=" "}for(let t=0;t<e;t++)r+=i;return r}function Gt(t,e){t instanceof i&&(t=new Jt(t));for(let r of t.state.facet(Vt)){let n=r(t,e);if(void 0!==n)return n}let r=Ot(t.state);return r.length>=e?function(t,e,r){let n=e.resolveStack(r),i=e.resolveInner(r,-1).resolve(r,0).enterUnfinishedNodesBefore(r);if(i!=n.node){let t=[];for(let e=i;e&&!(e.from<n.node.from||e.to>n.node.to||e.from==n.node.from&&e.type==n.node.type);e=e.parent)t.push(e);for(let e=t.length-1;e>=0;e--)n={node:t[e],next:n}}return Qt(n,t,r)}(t,r,e):null}class Jt{constructor(t,e={}){this.state=t,this.options=e,this.unit=qt(t)}lineAt(t,e=1){let r=this.state.doc.lineAt(t),{simulateBreak:n,simulateDoubleBreak:i}=this.options;return null!=n&&n>=r.from&&n<=r.to?i&&n==t?{text:"",from:t}:(e<0?n<t:n<=t)?{text:r.text.slice(n-r.from),from:n}:{text:r.text.slice(0,n-r.from),from:r.from}:r}textAfterPos(t,e=1){if(this.options.simulateDoubleBreak&&t==this.options.simulateBreak)return"";let{text:r,from:n}=this.lineAt(t,e);return r.slice(t-n,Math.min(r.length,t+100-n))}column(t,e=1){let{text:r,from:n}=this.lineAt(t,e),i=this.countColumn(r,t-n),s=this.options.overrideIndentation?this.options.overrideIndentation(n):-1;return s>-1&&(i+=s-this.countColumn(r,r.search(/\S|$/))),i}countColumn(t,e=t.length){return n(t,this.state.tabSize,e)}lineIndent(t,e=1){let{text:r,from:n}=this.lineAt(t,e),i=this.options.overrideIndentation;if(i){let t=i(n);if(t>-1)return t}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Kt=new v;function Qt(t,e,r){for(let n=t;n;n=n.next){let t=Xt(n.node);if(t)return t(Zt.create(e,r,n))}return 0}function Xt(t){let e=t.type.prop(Kt);if(e)return e;let r,n=t.firstChild;if(n&&(r=n.type.prop(v.closedBy))){let e=t.lastChild,n=e&&r.indexOf(e.name)>-1;return t=>re(t,!0,1,void 0,n&&!function(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}(t)?e.from:void 0)}return null==t.parent?Yt:null}function Yt(){return 0}class Zt extends Jt{constructor(t,e,r){super(t.state,t.options),this.base=t,this.pos=e,this.context=r}get node(){return this.context.node}static create(t,e,r){return new Zt(t,e,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let e=this.state.doc.lineAt(t.from);for(;;){let r=t.resolve(e.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(te(r,t))break;e=this.state.doc.lineAt(r.from)}return this.lineIndent(e.from)}continue(){return Qt(this.context.next,this.base,this.pos)}}function te(t,e){for(let r=e;r;r=r.parent)if(t==r)return!0;return!1}function ee({closing:t,align:e=!0,units:r=1}){return n=>re(n,e,r,t)}function re(t,e,r,n,i){let s=t.textAfter,o=s.match(/^\s*/)[0].length,l=n&&s.slice(o,o+n.length)==n||i==t.pos+o,a=e?function(t){let e=t.node,r=e.childAfter(e.from),n=e.lastChild;if(!r)return null;let i=t.options.simulateBreak,s=t.state.doc.lineAt(r.from),o=null==i||i<=s.from?s.to:Math.min(s.to,i);for(let t=r.to;;){let i=e.childAfter(t);if(!i||i==n)return null;if(!i.type.isSkipped){if(i.from>=o)return null;let t=/^ */.exec(s.text.slice(r.to-s.from))[0].length;return{from:r.from,to:r.to+t}}t=i.to}}(t):null;return a?l?t.column(a.from):t.column(a.to):t.baseIndent+(l?0:t.unit*r)}function ne(){return i.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let r=t.newDoc,{head:n}=t.newSelection.main,i=r.lineAt(n);if(n>i.from+200)return t;let s=r.sliceString(i.from,n);if(!e.some(t=>t.test(s)))return t;let{state:o}=t,l=-1,a=[];for(let{head:t}of o.selection.ranges){let e=o.doc.lineAt(t);if(e.from==l)continue;l=e.from;let r=Gt(o,e.from);if(null==r)continue;let n=/^\s*/.exec(e.text)[0],i=Ht(o,r);n!=i&&a.push({from:e.from,to:e.from+n.length,insert:i})}return a.length?[t,{changes:a,sequential:!0}]:t})}const ie=e.define(),se=new v;function oe(t){let e=t.firstChild,r=t.lastChild;return e&&e.to<r.from?{from:e.to,to:r.type.isError?t.to:r.from}:null}function le(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function ae(t,e,r){for(let n of t.facet(ie)){let i=n(t,e,r);if(i)return i}return function(t,e,r){let n=Ot(t);if(n.length<r)return null;let i=null;for(let s=n.resolveStack(r,1);s;s=s.next){let o=s.node;if(o.to<=r||o.from>r)continue;if(i&&o.from<e)break;let l=o.type.prop(se);if(l&&(o.to<n.length-50||n.length==t.doc.length||!le(o))){let n=l(o,t);n&&n.from<=r&&n.from>=e&&n.to>r&&(i=n)}}return i}(t,e,r)}function he(t,e){let r=e.mapPos(t.from,1),n=e.mapPos(t.to,-1);return r>=n?void 0:{from:r,to:n}}const fe=t.define({map:he}),ue=t.define({map:he});function ce(t){let e=[];for(let{head:r}of t.state.selection.ranges)e.some(t=>t.from<=r&&t.to>=r)||e.push(t.lineBlockAt(r));return e}const de=r.define({create:()=>c.none,update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((e,r)=>t=pe(t,e,r)),t=t.map(e.changes);for(let r of e.effects)if(r.is(fe)&&!me(t,r.value.from,r.value.to)){let{preparePlaceholder:n}=e.state.facet(Ne),i=n?c.replace({widget:new Oe(n(e.state,r.value))}):Te;t=t.update({add:[i.range(r.value.from,r.value.to)]})}else r.is(ue)&&(t=t.update({filter:(t,e)=>r.value.from!=t||r.value.to!=e,filterFrom:r.value.from,filterTo:r.value.to}));return e.selection&&(t=pe(t,e.selection.main.head)),t},provide:t=>f.decorations.from(t),toJSON(t,e){let r=[];return t.between(0,e.doc.length,(t,e)=>{r.push(t,e)}),r},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let r=0;r<t.length;){let n=t[r++],i=t[r++];if("number"!=typeof n||"number"!=typeof i)throw new RangeError("Invalid JSON for fold state");e.push(Te.range(n,i))}return c.set(e,!0)}});function pe(t,e,r=e){let n=!1;return t.between(e,r,(t,i)=>{t<r&&i>e&&(n=!0)}),n?t.update({filterFrom:e,filterTo:r,filter:(t,n)=>t>=r||n<=e}):t}function ge(t,e,r){var n;let i=null;return null===(n=t.field(de,!1))||void 0===n||n.between(e,r,(t,e)=>{(!i||i.from>t)&&(i={from:t,to:e})}),i}function me(t,e,r){let n=!1;return t.between(e,e,(t,i)=>{t==e&&i==r&&(n=!0)}),n}function be(e,r){return e.field(de,!1)?r:r.concat(t.appendConfig.of(Pe()))}const ke=t=>{for(let e of ce(t)){let r=ae(t.state,e.from,e.to);if(r)return t.dispatch({effects:be(t.state,[fe.of(r),ye(t,r)])}),!0}return!1},xe=t=>{if(!t.state.field(de,!1))return!1;let e=[];for(let r of ce(t)){let n=ge(t.state,r.from,r.to);n&&e.push(ue.of(n),ye(t,n,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function ye(t,e,r=!0){let n=t.state.doc.lineAt(e.from).number,i=t.state.doc.lineAt(e.to).number;return f.announce.of(`${t.state.phrase(r?"Folded lines":"Unfolded lines")} ${n} ${t.state.phrase("to")} ${i}.`)}const ve=t=>{let{state:e}=t,r=[];for(let n=0;n<e.doc.length;){let i=t.lineBlockAt(n),s=ae(e,i.from,i.to);s&&r.push(fe.of(s)),n=(s?t.lineBlockAt(s.to):i).to+1}return r.length&&t.dispatch({effects:be(t.state,r)}),!!r.length},we=t=>{let e=t.state.field(de,!1);if(!e||!e.size)return!1;let r=[];return e.between(0,t.state.doc.length,(t,e)=>{r.push(ue.of({from:t,to:e}))}),t.dispatch({effects:r}),!0};function Se(t,e){for(let r=e;;){let n=ae(t.state,r.from,r.to);if(n&&n.to>e.from)return n;if(!r.from)return null;r=t.lineBlockAt(r.from-1)}}const Ae=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:ke},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:xe},{key:"Ctrl-Alt-[",run:ve},{key:"Ctrl-Alt-]",run:we}],Ce={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Ne=e.define({combine:t=>a(t,Ce)});function Pe(t){let e=[de,De];return t&&e.push(Ne.of(t)),e}function Ie(t,e){let{state:r}=t,n=r.facet(Ne),i=e=>{let r=t.lineBlockAt(t.posAtDOM(e.target)),n=ge(t.state,r.from,r.to);n&&t.dispatch({effects:ue.of(n)}),e.preventDefault()};if(n.placeholderDOM)return n.placeholderDOM(t,i,e);let s=document.createElement("span");return s.textContent=n.placeholderText,s.setAttribute("aria-label",r.phrase("folded code")),s.title=r.phrase("unfold"),s.className="cm-foldPlaceholder",s.onclick=i,s}const Te=c.replace({widget:new class extends m{toDOM(t){return Ie(t,null)}}});class Oe extends m{constructor(t){super(),this.value=t}eq(t){return this.value==t.value}toDOM(t){return Ie(t,this.value)}}const Be={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class _e extends g{constructor(t,e){super(),this.config=t,this.open=e}eq(t){return this.config==t.config&&this.open==t.open}toDOM(t){if(this.config.markerDOM)return this.config.markerDOM(this.open);let e=document.createElement("span");return e.textContent=this.open?this.config.openText:this.config.closedText,e.title=t.state.phrase(this.open?"Fold line":"Unfold line"),e}}function Me(t={}){let e={...Be,...t},r=new _e(e,!0),n=new _e(e,!1),i=h.fromClass(class{constructor(t){this.from=t.viewport.from,this.markers=this.buildMarkers(t)}update(t){(t.docChanged||t.viewportChanged||t.startState.facet(Wt)!=t.state.facet(Wt)||t.startState.field(de,!1)!=t.state.field(de,!1)||Ot(t.startState)!=Ot(t.state)||e.foldingChanged(t))&&(this.markers=this.buildMarkers(t.view))}buildMarkers(t){let e=new s;for(let i of t.viewportLineBlocks){let s=ge(t.state,i.from,i.to)?n:ae(t.state,i.from,i.to)?r:null;s&&e.add(i.from,i.from,s)}return e.finish()}}),{domEventHandlers:l}=e;return[i,u({class:"cm-foldGutter",markers(t){var e;return(null===(e=t.plugin(i))||void 0===e?void 0:e.markers)||o.empty},initialSpacer:()=>new _e(e,!1),domEventHandlers:{...l,click:(t,e,r)=>{if(l.click&&l.click(t,e,r))return!0;let n=ge(t.state,e.from,e.to);if(n)return t.dispatch({effects:ue.of(n)}),!0;let i=ae(t.state,e.from,e.to);return!!i&&(t.dispatch({effects:fe.of(i)}),!0)}}}),Pe()]}const De=f.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Le{constructor(t,e){let r;function n(t){let e=d.newName();return(r||(r=Object.create(null)))["."+e]=t,e}this.specs=t;const i="string"==typeof e.all?e.all:e.all?n(e.all):void 0,s=e.scope;this.scope=s instanceof Pt?t=>t.prop(At)==s.data:s?t=>t==s:void 0,this.style=it(t.map(t=>({tag:t.tag,class:t.class||n(Object.assign({},t,{tag:null}))})),{all:i}).style,this.module=r?new d(r):null,this.themeType=e.themeType}static define(t,e){return new Le(t,e||{})}}const Ee=e.define(),Re=e.define({combine:t=>t.length?[t[0]]:null});function ze(t){let e=t.facet(Ee);return e.length?e:t.facet(Re)}function je(t,e){let r,n=[Ue];return t instanceof Le&&(t.module&&n.push(f.styleModule.of(t.module)),r=t.themeType),(null==e?void 0:e.fallback)?n.push(Re.of(t)):r?n.push(Ee.computeN([f.darkTheme],e=>e.facet(f.darkTheme)==("dark"==r)?[t]:[])):n.push(Ee.of(t)),n}class We{constructor(t){this.markCache=Object.create(null),this.tree=Ot(t.state),this.decorations=this.buildDeco(t,ze(t.state)),this.decoratedTo=t.viewport.to}update(t){let e=Ot(t.state),r=ze(t.state),n=r!=ze(t.startState),{viewport:i}=t.view,s=t.changes.mapPos(this.decoratedTo,1);e.length<i.to&&!n&&e.type==this.tree.type&&s>=i.to?(this.decorations=this.decorations.map(t.changes),this.decoratedTo=s):(e!=this.tree||t.viewportChanged||n)&&(this.tree=e,this.decorations=this.buildDeco(t.view,r),this.decoratedTo=i.to)}buildDeco(t,e){if(!e||!this.tree.length)return c.none;let r=new s;for(let{from:n,to:i}of t.visibleRanges)st(this.tree,e,(t,e,n)=>{r.add(t,e,this.markCache[n]||(this.markCache[n]=c.mark({class:n})))},n,i);return r.finish()}}const Ue=l.high(h.fromClass(We,{decorations:t=>t.decorations})),Fe=Le.define([{tag:wt.meta,color:"#404740"},{tag:wt.link,textDecoration:"underline"},{tag:wt.heading,textDecoration:"underline",fontWeight:"bold"},{tag:wt.emphasis,fontStyle:"italic"},{tag:wt.strong,fontWeight:"bold"},{tag:wt.strikethrough,textDecoration:"line-through"},{tag:wt.keyword,color:"#708"},{tag:[wt.atom,wt.bool,wt.url,wt.contentSeparator,wt.labelName],color:"#219"},{tag:[wt.literal,wt.inserted],color:"#164"},{tag:[wt.string,wt.deleted],color:"#a11"},{tag:[wt.regexp,wt.escape,wt.special(wt.string)],color:"#e40"},{tag:wt.definition(wt.variableName),color:"#00f"},{tag:wt.local(wt.variableName),color:"#30a"},{tag:[wt.typeName,wt.namespace],color:"#085"},{tag:wt.className,color:"#167"},{tag:[wt.special(wt.variableName),wt.macroName],color:"#256"},{tag:wt.definition(wt.propertyName),color:"#00c"},{tag:wt.comment,color:"#940"},{tag:wt.invalid,color:"#f00"}]),Ve=f.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),$e="()[]{}",qe=e.define({combine:t=>a(t,{afterCursor:!0,brackets:$e,maxScanDistance:1e4,renderMatch:Je})}),He=c.mark({class:"cm-matchingBracket"}),Ge=c.mark({class:"cm-nonmatchingBracket"});function Je(t){let e=[],r=t.matched?He:Ge;return e.push(r.range(t.start.from,t.start.to)),t.end&&e.push(r.range(t.end.from,t.end.to)),e}const Ke=[r.define({create:()=>c.none,update(t,e){if(!e.docChanged&&!e.selection)return t;let r=[],n=e.state.facet(qe);for(let t of e.state.selection.ranges){if(!t.empty)continue;let i=tr(e.state,t.head,-1,n)||t.head>0&&tr(e.state,t.head-1,1,n)||n.afterCursor&&(tr(e.state,t.head,1,n)||t.head<e.state.doc.length&&tr(e.state,t.head+1,-1,n));i&&(r=r.concat(n.renderMatch(i,e.state)))}return c.set(r,!0)},provide:t=>f.decorations.from(t)}),Ve];function Qe(t={}){return[qe.of(t),Ke]}const Xe=new v;function Ye(t,e,r){let n=t.prop(e<0?v.openedBy:v.closedBy);if(n)return n;if(1==t.name.length){let n=r.indexOf(t.name);if(n>-1&&n%2==(e<0?1:0))return[r[n+e]]}return null}function Ze(t){let e=t.type.prop(Xe);return e?e(t.node):t}function tr(t,e,r,n={}){let i=n.maxScanDistance||1e4,s=n.brackets||$e,o=Ot(t),l=o.resolveInner(e,r);for(let n=l;n;n=n.parent){let i=Ye(n.type,r,s);if(i&&n.from<n.to){let o=Ze(n);if(o&&(r>0?e>=o.from&&e<o.to:e>o.from&&e<=o.to))return er(t,e,r,n,o,i,s)}}return function(t,e,r,n,i,s,o){let l=r<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),a=o.indexOf(l);if(a<0||a%2==0!=r>0)return null;let h={from:r<0?e-1:e,to:r>0?e+1:e},f=t.doc.iterRange(e,r>0?t.doc.length:0),u=0;for(let t=0;!f.next().done&&t<=s;){let s=f.value;r<0&&(t+=s.length);let l=e+t*r;for(let t=r>0?0:s.length-1,e=r>0?s.length:-1;t!=e;t+=r){let e=o.indexOf(s[t]);if(!(e<0||n.resolveInner(l+t,1).type!=i))if(e%2==0==r>0)u++;else{if(1==u)return{start:h,end:{from:l+t,to:l+t+1},matched:e>>1==a>>1};u--}}r>0&&(t+=s.length)}return f.done?{start:h,matched:!1}:null}(t,e,r,o,l.type,i,s)}function er(t,e,r,n,i,s,o){let l=n.parent,a={from:i.from,to:i.to},h=0,f=null==l?void 0:l.cursor();if(f&&(r<0?f.childBefore(n.from):f.childAfter(n.to)))do{if(r<0?f.to<=n.from:f.from>=n.to){if(0==h&&s.indexOf(f.type.name)>-1&&f.from<f.to){let t=Ze(f);return{start:a,end:t?{from:t.from,to:t.to}:void 0,matched:!0}}if(Ye(f.type,r,o))h++;else if(Ye(f.type,-r,o)){if(0==h){let t=Ze(f);return{start:a,end:t&&t.from<t.to?{from:t.from,to:t.to}:void 0,matched:!1}}h--}}}while(r<0?f.prevSibling():f.nextSibling());return{start:a,matched:!1}}function rr(t,e,r,n=0,i=0){null==e&&-1==(e=t.search(/[^\s\u00a0]/))&&(e=t.length);let s=i;for(let i=n;i<e;i++)9==t.charCodeAt(i)?s+=r-s%r:s++;return s}class nr{constructor(t,e,r,n){this.string=t,this.tabSize=e,this.indentUnit=r,this.overrideIndent=n,this.pos=0,this.start=0,this.lastColumnPos=0,this.lastColumnValue=0}eol(){return this.pos>=this.string.length}sol(){return 0==this.pos}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)}eat(t){let e,r=this.string.charAt(this.pos);if(e="string"==typeof t?r==t:r&&(t instanceof RegExp?t.test(r):t(r)),e)return++this.pos,r}eatWhile(t){let e=this.pos;for(;this.eat(t););return this.pos>e}eatSpace(){let t=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t}skipToEnd(){this.pos=this.string.length}skipTo(t){let e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0}backUp(t){this.pos-=t}column(){return this.lastColumnPos<this.start&&(this.lastColumnValue=rr(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue}indentation(){var t;return null!==(t=this.overrideIndent)&&void 0!==t?t:rr(this.string,null,this.tabSize)}match(t,e,r){if("string"==typeof t){let n=t=>r?t.toLowerCase():t;return n(this.string.substr(this.pos,t.length))==n(t)?(!1!==e&&(this.pos+=t.length),!0):null}{let r=this.string.slice(this.pos).match(t);return r&&r.index>0?null:(r&&!1!==e&&(this.pos+=r[0].length),r)}}current(){return this.string.slice(this.start,this.pos)}}function ir(t){if("object"!=typeof t)return t;let e={};for(let r in t){let n=t[r];e[r]=n instanceof Array?n.slice():n}return e}const sr=new WeakMap;class or extends Pt{constructor(t){let e,r=Ct(t.languageData),n={name:(i=t).name||"",token:i.token,blankLine:i.blankLine||(()=>{}),startState:i.startState||(()=>!0),copyState:i.copyState||ir,indent:i.indent||(()=>null),languageData:i.languageData||{},tokenTable:i.tokenTable||ur,mergeTokens:!1!==i.mergeTokens};var i;super(r,new class extends K{createParse(t,r,n){return new hr(e,t,r,n)}},[],t.name),this.topNode=function(t,e){let r=A.define({id:cr.length,name:"Document",props:[At.add(()=>t),Kt.add(()=>t=>e.getIndent(t))],top:!0});return cr.push(r),r}(r,this),e=this,this.streamParser=n,this.stateAfter=new v({perNode:!0}),this.tokenTable=t.tokenTable?new br(n.tokenTable):kr}static define(t){return new or(t)}getIndent(t){let e,{overrideIndentation:r}=t.options;r&&(e=sr.get(t.state),null!=e&&e<t.pos-1e4&&(e=void 0));let n,i,s=lr(this,t.node.tree,t.node.from,t.node.from,null!=e?e:t.pos);if(s?(i=s.state,n=s.pos+1):(i=this.streamParser.startState(t.unit),n=t.node.from),t.pos-n>1e4)return null;for(;n<t.pos;){let e=t.state.doc.lineAt(n),s=Math.min(t.pos,e.to);if(e.length){let n=r?r(e.from):-1,o=new nr(e.text,t.state.tabSize,t.unit,n<0?void 0:n);for(;o.pos<s-e.from;)fr(this.streamParser.token,o,i)}else this.streamParser.blankLine(i,t.unit);if(s==t.pos)break;n=e.to+1}let o=t.lineAt(t.pos);return r&&null==e&&sr.set(t.state,o.from),this.streamParser.indent(i,/^\s*(.*)/.exec(o.text)[1],t)}get allowsNesting(){return!1}}function lr(t,e,r,n,i){let s=r>=n&&r+e.length<=i&&e.prop(t.stateAfter);if(s)return{state:t.streamParser.copyState(s),pos:r+e.length};for(let s=e.children.length-1;s>=0;s--){let o=e.children[s],l=r+e.positions[s],a=o instanceof T&&l<i&&lr(t,o,l,n,i);if(a)return a}return null}function ar(t,e,r,n,i){if(i&&r<=0&&n>=e.length)return e;i||0!=r||e.type!=t.topNode||(i=!0);for(let s=e.children.length-1;s>=0;s--){let o,l=e.positions[s],a=e.children[s];if(l<n&&a instanceof T){if(!(o=ar(t,a,r-l,n-l,i)))break;return i?new T(e.type,e.children.slice(0,s).concat(o),e.positions.slice(0,s+1),l+o.length):o}}return null}class hr{constructor(t,e,r,n){this.lang=t,this.input=e,this.fragments=r,this.ranges=n,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=n[n.length-1].to;let i=Dt.get(),s=n[0].from,{state:o,tree:l}=function(t,e,r,n,i){for(let i of e){let e,s=i.from+(i.openStart?25:0),o=i.to-(i.openEnd?25:0),l=s<=r&&o>r&&lr(t,i.tree,0-i.offset,r,o);if(l&&l.pos<=n&&(e=ar(t,i.tree,r+i.offset,l.pos+i.offset,!1)))return{state:l.state,tree:e}}return{state:t.streamParser.startState(i?qt(i):4),tree:T.empty}}(t,r,s,this.to,null==i?void 0:i.state);this.state=o,this.parsedPos=this.chunkStart=s+l.length;for(let t=0;t<l.children.length;t++)this.chunks.push(l.children[t]),this.chunkPos.push(l.positions[t]);i&&this.parsedPos<i.viewport.from-1e5&&n.some(t=>t.from<=i.viewport.from&&t.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(qt(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let t=Dt.get(),e=null==this.stoppedAt?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(e,this.chunkStart+512);for(t&&(r=Math.min(r,t.viewport.to));this.parsedPos<r;)this.parseLine(t);return this.chunkStart<this.parsedPos&&this.finishChunk(),this.parsedPos>=e?this.finish():t&&this.parsedPos>=t.viewport.to?(t.skipUntilInView(this.parsedPos,e),this.finish()):null}stopAt(t){this.stoppedAt=t}lineAfter(t){let e=this.input.chunk(t);if(this.input.lineChunks)"\n"==e&&(e="");else{let t=e.indexOf("\n");t>-1&&(e=e.slice(0,t))}return t+e.length<=this.to?e:e.slice(0,this.to-t)}nextLine(){let t=this.parsedPos,e=this.lineAfter(t),r=t+e.length;for(let t=this.rangeIndex;;){let n=this.ranges[t].to;if(n>=r)break;if(e=e.slice(0,n-(r-e.length)),t++,t==this.ranges.length)break;let i=this.ranges[t].from,s=this.lineAfter(i);e+=s,r=i+s.length}return{line:e,end:r}}skipGapsTo(t,e,r){for(;;){let n=this.ranges[this.rangeIndex].to,i=t+e;if(r>0?n>i:n>=i)break;e+=this.ranges[++this.rangeIndex].from-n}return e}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(t,e,r,n){let i=4;if(this.ranges.length>1){e+=n=this.skipGapsTo(e,n,1);let t=this.chunk.length;r+=n=this.skipGapsTo(r,n,-1),i+=this.chunk.length-t}let s=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&4==i&&s>=0&&this.chunk[s]==t&&this.chunk[s+2]==e?this.chunk[s+2]=r:this.chunk.push(t,e,r,i),n}parseLine(t){let{line:e,end:r}=this.nextLine(),n=0,{streamParser:i}=this.lang,s=new nr(e,t?t.state.tabSize:4,t?qt(t.state):2);if(s.eol())i.blankLine(this.state,s.indentUnit);else for(;!s.eol();){let t=fr(i.token,s,this.state);if(t&&(n=this.emitToken(this.lang.tokenTable.resolve(t),this.parsedPos+s.start,this.parsedPos+s.pos,n)),s.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let t=T.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:dr,topID:0,maxBufferLength:512,reused:this.chunkReused});t=new T(t.type,t.children,t.positions,t.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(t),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new T(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}}function fr(t,e,r){e.start=e.pos;for(let n=0;n<10;n++){let n=t(e,r);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}const ur=Object.create(null),cr=[A.none],dr=new C(cr),pr=[],gr=Object.create(null),mr=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])mr[t]=yr(ur,e);class br{constructor(t){this.extra=t,this.table=Object.assign(Object.create(null),mr)}resolve(t){return t?this.table[t]||(this.table[t]=yr(this.extra,t)):0}}const kr=new br(ur);function xr(t,e){pr.indexOf(t)>-1||(pr.push(t),console.warn(e))}function yr(t,e){let r=[];for(let n of e.split(" ")){let e=[];for(let r of n.split(".")){let n=t[r]||wt[r];n?"function"==typeof n?e.length?e=e.map(n):xr(r,`Modifier ${r} used at start of tag`):e.length?xr(r,`Tag ${r} used as modifier`):e=Array.isArray(n)?n:[n]:xr(r,`Unknown highlighting tag ${r}`)}for(let t of e)r.push(t)}if(!r.length)return 0;let n=e.replace(/ /g,"_"),i=n+" "+r.map(t=>t.id),s=gr[i];if(s)return s.id;let o=gr[i]=A.define({id:cr.length,name:n,props:[et({[n]:r})]});return cr.push(o),o.id}function vr(t){return t.length<=4096&&/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/.test(t)}function wr(t){for(let e=t.iter();!e.next().done;)if(vr(e.value))return!0;return!1}const Sr=e.define({combine:t=>t.some(t=>t)});const Ar=h.fromClass(class{constructor(t){this.always=t.state.facet(Sr)||t.textDirection!=p.LTR||t.state.facet(f.perLineTextDirection),this.hasRTL=!this.always&&wr(t.state.doc),this.tree=Ot(t.state),this.decorations=this.always||this.hasRTL?Cr(t,this.tree,this.always):c.none}update(t){let e=t.state.facet(Sr)||t.view.textDirection!=p.LTR||t.state.facet(f.perLineTextDirection);if(e||this.hasRTL||!function(t){let e=!1;return t.iterChanges((t,r,n,i,s)=>{!e&&wr(s)&&(e=!0)}),e}(t.changes)||(this.hasRTL=!0),!e&&!this.hasRTL)return;let r=Ot(t.state);(e!=this.always||r!=this.tree||t.docChanged||t.viewportChanged)&&(this.tree=r,this.always=e,this.decorations=Cr(t.view,r,e))}},{provide:t=>{function e(e){var r,n;return null!==(n=null===(r=e.plugin(t))||void 0===r?void 0:r.decorations)&&void 0!==n?n:c.none}return[f.outerDecorations.of(e),l.lowest(f.bidiIsolatedRanges.of(e))]}});function Cr(t,e,r){let n=new s,i=t.visibleRanges;r||(i=function(t,e){let r=e.iter(),n=0,i=[],s=null;for(let{from:e,to:o}of t)if(!(s&&s.to>e&&(e=s.to,e>=o)))for(n+r.value.length<e&&(r.next(e-(n+r.value.length)),n=e);;){let t=n,e=n+r.value.length;if(!r.lineBreak&&vr(r.value)&&(s&&s.to>t-10?s.to=Math.min(o,e):i.push(s={from:t,to:Math.min(o,e)})),e>=o)break;n=e,r.next()}return i}(i,t.state.doc));for(let{from:t,to:r}of i)e.iterate({enter:t=>{let e=t.type.prop(v.isolate);e&&n.add(t.from,t.to,Nr[e])},from:t,to:r});return n.finish()}const Nr={rtl:c.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:p.RTL}),ltr:c.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:p.LTR}),auto:c.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Pr=Object.freeze({__proto__:null,DocInput:_t,HighlightStyle:Le,IndentContext:Jt,LRLanguage:Tt,Language:Pt,LanguageDescription:Ft,LanguageSupport:Ut,ParseContext:Dt,StreamLanguage:or,StringStream:nr,TreeIndentContext:Zt,bidiIsolates:function(t={}){let e=[Ar];return t.alwaysIsolate&&e.push(Sr.of(!0)),e},bracketMatching:Qe,bracketMatchingHandle:Xe,codeFolding:Pe,continuedIndent:function({except:t,units:e=1}={}){return r=>{let n=t&&t.test(r.textAfter);return r.baseIndent+(n?0:e*r.unit)}},defaultHighlightStyle:Fe,defineLanguageFacet:Ct,delimitedIndent:ee,ensureSyntaxTree:Bt,flatIndent:t=>t.baseIndent,foldAll:ve,foldCode:ke,foldEffect:fe,foldGutter:Me,foldInside:oe,foldKeymap:Ae,foldNodeProp:se,foldService:ie,foldState:de,foldable:ae,foldedRanges:function(t){return t.field(de,!1)||o.empty},forceParsing:function(t,e=t.viewport.to,r=100){let n=Bt(t.state,e,r);return n!=Ot(t.state)&&t.dispatch({}),!!n},getIndentUnit:qt,getIndentation:Gt,highlightingFor:function(t,e,r){let n=ze(t),i=null;if(n)for(let t of n)if(!t.scope||r&&t.scope(r)){let r=t.style(e);r&&(i=i?i+" "+r:r)}return i},indentNodeProp:Kt,indentOnInput:ne,indentRange:function(t,e,r){let n=Object.create(null),i=new Jt(t,{overrideIndentation:t=>{var e;return null!==(e=n[t])&&void 0!==e?e:-1}}),s=[];for(let o=e;o<=r;){let e=t.doc.lineAt(o);o=e.to+1;let r=Gt(i,e.from);if(null==r)continue;/\S/.test(e.text)||(r=0);let l=/^\s*/.exec(e.text)[0],a=Ht(t,r);l!=a&&(n[e.from]=r,s.push({from:e.from,to:e.from+l.length,insert:a}))}return t.changes(s)},indentService:Vt,indentString:Ht,indentUnit:$t,language:Wt,languageDataProp:At,matchBrackets:tr,sublanguageProp:Nt,syntaxHighlighting:je,syntaxParserRunning:function(t){var e;return(null===(e=t.plugin(jt))||void 0===e?void 0:e.isWorking())||!1},syntaxTree:Ot,syntaxTreeAvailable:function(t,e=t.doc.length){var r;return(null===(r=t.field(Pt.state,!1))||void 0===r?void 0:r.context.isDone(e))||!1},toggleFold:t=>{let e=[];for(let r of ce(t)){let n=ge(t.state,r.from,r.to);if(n)e.push(ue.of(n),ye(t,n,!1));else{let n=Se(t,r);n&&e.push(fe.of(n),ye(t,n))}}return e.length>0&&t.dispatch({effects:be(t.state,e)}),!!e.length},unfoldAll:we,unfoldCode:xe,unfoldEffect:ue});export{k as D,I,Tt as L,C as N,K as P,T,ne as a,je as b,Qe as c,Fe as d,Ae as e,Me as f,A as g,v as h,$t as i,et as j,Ut as k,Kt as l,se as m,ee as n,oe as o,G as p,Jt as q,Gt as r,Ot as s,wt as t,Ht as u,tr as v,qt as w,Pr as x};
|
|
2
|
-
//# sourceMappingURL=codemirror_language-C7NTiYFF.js.map
|