@inkandswitch/patchwork-pkg-base 0.0.87 → 0.0.88
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/module-settings-url +1 -1
- package/package.json +1 -1
- package/packages/file/dist/assets/tsgo-worker-BDQ8_wHH.js +4 -0
- package/packages/file/dist/assets/tsgo-worker-BDQ8_wHH.js.map +4 -0
- package/packages/file/dist/assets/wasm_exec-pYYJXccF.js +440 -0
- package/packages/file/dist/assets/wasm_exec-pYYJXccF.js.map +1 -0
- package/packages/file/dist/index.js +1 -1
- package/packages/file/dist/{tool-NyxQ_6rU.js → tool-B3O4i8l2.js} +2721 -3005
- package/packages/file/dist/{tool-NyxQ_6rU.js.map → tool-B3O4i8l2.js.map} +1 -1
- package/packages/file/dist/typescript-language-server-oTU8pKzb.js +3408 -0
- package/packages/file/dist/typescript-language-server-oTU8pKzb.js.map +1 -0
- package/packages/file/package.json +3 -3
- package/plugin-registry-url +1 -1
- package/packages/file/dist/index-DnZIsnLn.js +0 -827
- package/packages/file/dist/index-DnZIsnLn.js.map +0 -1
- package/packages/file/dist/ts-env-DKYCX7_y.js +0 -67681
- package/packages/file/dist/ts-env-DKYCX7_y.js.map +0 -1
- package/packages/file/dist/typescript-BPnobwB5.js +0 -159802
- package/packages/file/dist/typescript-BPnobwB5.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DnZIsnLn.js","sources":["../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/sync/update.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/facet/tsFacet.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/sync/tsSync.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/sync/tsSyncWorker.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/symbols.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/icons.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/ensureAnchor.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/getLineAtPosition.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/matchBefore.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/getAutocompletion.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/tsAutocomplete.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/autocomplete/tsAutocompleteWorker.js","../node_modules/.pnpm/@codemirror+lint@6.9.7/node_modules/@codemirror/lint/dist/index.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/lint/utils.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/lint/getLints.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/lint/tsLinter.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/lint/tsLinterWorker.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/hover/getHover.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/hover/renderTooltip.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/hover/tsHover.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/hover/tsHoverWorker.js","../node_modules/.pnpm/@valtown+codemirror-ts@2.3.1_@codemirror+autocomplete@6.20.3_@codemirror+lint@6.9.7_@co_ee9f97af7b109f28c69fac811dced397/node_modules/@valtown/codemirror-ts/dist/esm/facet/tsFacetWorker.js"],"sourcesContent":["/**\n * In TypeScript, updates are not like PUTs, you\n * need to create a file before updating it.\n *\n * This method lets us treat the two as the same.\n */\nexport function createOrUpdateFile(env, path, code) {\n if (!env.getSourceFile(path)) {\n env.createFile(path, code);\n }\n else {\n env.updateFile(path, code);\n }\n}\n//# sourceMappingURL=update.js.map","import { combineConfig, Facet } from \"@codemirror/state\";\n/**\n * This is how the ts-related extensions are\n * configured: this facet sets the path of the file\n * and the environment to use, and the rest of\n * the extensions, like tsLint and tsAutocomplete,\n * pull those settings automatically from editor state.\n */\nexport const tsFacet = Facet.define({\n combine(configs) {\n return combineConfig(configs, {});\n },\n});\n//# sourceMappingURL=tsFacet.js.map","import { EditorView } from \"@codemirror/view\";\nimport { createOrUpdateFile } from \"./update.js\";\nimport { tsFacet } from \"../facet/tsFacet.js\";\n/**\n * Sync updates from CodeMirror to the TypeScript\n * virtual environment. Note that this updates a file - it isn't\n * responsible (yet) for deleting or renaming files if they\n * do get deleted or renamed.\n */\nexport function tsSync() {\n // TODO: this is a weak solution to the cold start problem.\n // If you boot up a CodeMirror instance, we want the initial\n // value to get loaded into CodeMirror. We do get a change event,\n // but it surprisingly doesn't have `docChanged: true` on it,\n // so this is a rough heuristic to just accept the first event\n // regardless of whether it looks significant.\n let first = true;\n return EditorView.updateListener.of((update) => {\n const config = update.view.state.facet(tsFacet);\n if (!config)\n return;\n if (!update.docChanged && !first)\n return;\n first = false;\n createOrUpdateFile(config.env, config.path, update.state.doc.toString() || ' ');\n });\n}\n//# sourceMappingURL=tsSync.js.map","import { EditorView } from \"@codemirror/view\";\nimport { tsFacetWorker } from \"../index.js\";\n/**\n * Sync updates from CodeMirror to the worker.\n */\nexport function tsSyncWorker() {\n // TODO: this is a weak solution to the cold start problem.\n // If you boot up a CodeMirror instance, we want the initial\n // value to get loaded into CodeMirror. We do get a change event,\n // but it surprisingly doesn't have `docChanged: true` on it,\n // so this is a rough heuristic to just accept the first event\n // regardless of whether it looks significant.\n let first = true;\n return EditorView.updateListener.of((update) => {\n const config = update.view.state.facet(tsFacetWorker);\n if (!config)\n return;\n if (!update.docChanged && !first)\n return;\n first = false;\n config.worker.updateFile({\n path: config.path,\n code: update.state.doc.toString(),\n });\n });\n}\n//# sourceMappingURL=tsSyncWorker.js.map","/**\n * TODO: honestly I don't know why this is here.\n */\nexport const AUTOCOMPLETION_SYMBOLS = [\n \"Object\",\n \"Function\",\n \"Array\",\n \"Number\",\n \"parseFloat\",\n \"parseInt\",\n \"Infinity\",\n \"NaN\",\n \"undefined\",\n \"Boolean\",\n \"String\",\n \"Symbol\",\n \"Date\",\n \"Promise\",\n \"RegExp\",\n \"Error\",\n \"JSON\",\n \"Math\",\n \"Intl\",\n \"ArrayBuffer\",\n \"Atomics\",\n \"Uint8Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Int16Array\",\n \"Uint32Array\",\n \"Int32Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Uint8ClampedArray\",\n \"BigUint64Array\",\n \"BigInt64Array\",\n \"DataView\",\n \"Map\",\n \"BigInt\",\n \"Set\",\n \"WeakMap\",\n \"WeakSet\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\",\n \"isFinite\",\n \"isNaN\",\n \"Deno\",\n \"Blob\",\n \"FormData\",\n \"Request\",\n \"Response\",\n \"TextDecoder\",\n \"TextEncoder\",\n \"URL\",\n \"URLPattern\",\n \"URLSearchParams\",\n \"atob\",\n \"btoa\",\n \"crypto\",\n \"fetch\",\n \"clearInterval\",\n \"clearTimeout\",\n \"performance\",\n \"setInterval\",\n \"setTimeout\",\n];\n//# sourceMappingURL=symbols.js.map","/**\n * There is some overlap between CodeMirror's\n * types and TypeScripts. This is all of the default\n * icons for CodeMirror: if TypeScript gives us one\n * of these, we pass it through.\n */\nexport const DEFAULT_CODEMIRROR_TYPE_ICONS = new Set([\n `class`,\n `constant`,\n `enum`,\n `function`,\n `interface`,\n `keyword`,\n `method`,\n `namespace`,\n `property`,\n `text`,\n `type`,\n `variable`,\n]);\n//# sourceMappingURL=icons.js.map","// From: https://github.com/codemirror/autocomplete/blob/53cc58393252659ac4a86162b40afef13eeb2241/src/completion.ts#L245\n// TODO: do we need this, or can use import it from codemirror?\nexport function ensureAnchor(expr, start) {\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, expr.flags ?? (expr.ignoreCase ? \"i\" : \"\"));\n}\n//# sourceMappingURL=ensureAnchor.js.map","/**\n * TODO: confirm that this is necessary; it may be possible\n * and more efficient to get the line from CodeMirror, though\n * that would mean it probably doesn't mix well with the approach\n * of persisting code in the TS enviroment.\n */\nexport function getLineAtPosition(code, position) {\n // lineStart is the index of line break or zero\n const from = code.lastIndexOf(\"\\n\", position - 1) + 1;\n let to = code.indexOf(\"\\n\", position);\n if (to === -1) {\n to = code.length;\n }\n const text = code.slice(from, to);\n return {\n from,\n to,\n text,\n };\n}\n//# sourceMappingURL=getLineAtPosition.js.map","import { ensureAnchor } from \"./ensureAnchor.js\";\nimport { getLineAtPosition } from \"./getLineAtPosition.js\";\n// From: https://github.com/codemirror/autocomplete/blob/53cc58393252659ac4a86162b40afef13eeb2241/src/completion.ts#L111\n// TODO: do we need to vendor this?\nexport function matchBefore(code, pos, expr) {\n const line = getLineAtPosition(code, pos);\n let start = Math.max(line.from, pos - 250);\n let str = line.text.slice(start - line.from, pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0\n ? null\n : { from: start + found, to: pos, text: str.slice(found) };\n}\n//# sourceMappingURL=matchBefore.js.map","import ts from \"typescript\";\nimport { AUTOCOMPLETION_SYMBOLS } from \"./symbols.js\";\nimport { DEFAULT_CODEMIRROR_TYPE_ICONS } from \"./icons.js\";\nimport { matchBefore } from \"./matchBefore.js\";\nconst TS_COMPLETE_BLOCKLIST = [\n ts.ScriptElementKind.warning,\n];\nexport async function getAutocompletion({ env, path, context, keepLegacyLimitationForAutocompletionSymbols = true, }) {\n const { pos, explicit } = context;\n const rawContents = env.getSourceFile(path)?.getFullText();\n if (!rawContents)\n return null;\n // If there's space behind the cursor, don't try and autocomplete.\n // https://codemirror.net/examples/autocompletion/\n let word = matchBefore(rawContents, pos, /\\w*/);\n if (!word?.text) {\n word = matchBefore(rawContents, pos, /\\./);\n }\n if (!word?.text && !explicit)\n return null;\n const completionInfo = env.languageService.getCompletionsAtPosition(path, pos, {}, {});\n // TODO: build ATA support for a 'loading' state\n // while types are being fetched\n if (!completionInfo)\n return null;\n const options = completionInfo.entries\n .filter((entry) => !TS_COMPLETE_BLOCKLIST.includes(entry.kind) &&\n (entry.sortText < \"15\" ||\n (completionInfo.optionalReplacementSpan?.length &&\n (!keepLegacyLimitationForAutocompletionSymbols || AUTOCOMPLETION_SYMBOLS.includes(entry.name)))))\n .map((entry) => {\n const boost = -Number(entry.sortText) || 0;\n let type = entry.kind ? String(entry.kind) : undefined;\n if (type === \"member\")\n type = \"property\";\n if (type && !DEFAULT_CODEMIRROR_TYPE_ICONS.has(type)) {\n type = undefined;\n }\n return {\n label: entry.name,\n type,\n boost,\n };\n });\n return {\n from: word ? (word.text === \".\" ? word.to : word.from) : pos,\n options,\n };\n}\n//# sourceMappingURL=getAutocompletion.js.map","import { getAutocompletion } from \"./getAutocompletion.js\";\nimport { tsFacet } from \"../facet/tsFacet.js\";\n/**\n * Create a `CompletionSource` that queries\n * the _on-thread_ TypeScript environments for autocompletions\n * at this character.\n */\nexport function tsAutocomplete() {\n return async (context) => {\n const config = context.state.facet(tsFacet);\n if (!config)\n return null;\n return getAutocompletion({\n ...config,\n context,\n });\n };\n}\n//# sourceMappingURL=tsAutocomplete.js.map","import { tsFacetWorker } from \"../index.js\";\n/**\n * Create a `CompletionSource` that queries\n * the TypeScript environment in a web worker.\n */\nexport function tsAutocompleteWorker() {\n return async (context) => {\n const config = context.state.facet(tsFacetWorker);\n if (!config)\n return null;\n return config.worker.getAutocompletion({\n path: config.path,\n // Reduce this object so that it's serializable.\n context: {\n pos: context.pos,\n explicit: context.explicit,\n },\n });\n };\n}\n//# sourceMappingURL=tsAutocompleteWorker.js.map","import { Decoration, showPanel, EditorView, ViewPlugin, gutter, showTooltip, hoverTooltip, getPanel, activateHover, 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 let scan = state.doc.iter(), scanPos = 0, docLen = state.doc.length;\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 if (from > docLen)\n break;\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 to = Math.min(to, docLen);\n let widget = false;\n if (active.some(d => d.from == from && (d.to == to || to == docLen))) {\n widget = from == to;\n if (!widget && to - from < 10) {\n let behind = from - (scanPos + scan.value.length);\n if (behind > 0) {\n scan.next(behind);\n scanPos = from;\n }\n for (let check = from;;) {\n if (check >= to) {\n widget = true;\n break;\n }\n if (!scan.lineBreak && scanPos + scan.value.length > check)\n break;\n check = scanPos + scan.value.length;\n scanPos += scan.value.length;\n scan.next();\n }\n }\n }\n let sev = maxSeverity(active);\n if (widget) {\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 if (pos == docLen)\n break;\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: true,\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 = findDiagnostic(field.diagnostics, null, sel.to + 1);\n if (!next) {\n next = findDiagnostic(field.diagnostics, null, 0);\n if (!next || 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 activateHover(view, next.from, 1, {\n tooltip: lintHover,\n until: tr => tr.docChanged || tr.newSelection.main.head < next.from || tr.newSelection.main.head > next.to\n });\n return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n var _a;\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 let from = prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, to = (_a = prevTo !== null && prevTo !== void 0 ? prevTo : lastTo) !== null && _a !== void 0 ? _a : from;\n view.dispatch({ selection: { anchor: from, head: to }, scrollIntoView: true });\n activateHover(view, from, 1, {\n tooltip: lintHover,\n until: tr => tr.docChanged || tr.newSelection.main.head < from || tr.newSelection.main.head > to\n });\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 {\n sources: input.map(i => i.source).filter(x => x != null),\n ...combineConfig(input.map(i => i.config), {\n delay: 750,\n markerFilter: null,\n tooltipFilter: null,\n needsRefresh: null,\n hideOn: () => null,\n }, {\n delay: Math.max,\n markerFilter: combineFilter,\n tooltipFilter: combineFilter,\n needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u),\n hideOn: (a, b) => !a ? b : !b ? a : (t, x, y) => a(t, x, y) || b(t, x, y),\n autoPanel: (a, b) => a || b\n })\n };\n }\n});\nfunction combineFilter(a, b) {\n return !a ? b : !b ? a : (d, s) => b(a(d, s), s);\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).\n\nNote that settings given here will apply to all linters active in\nthe editor. If `null` is given as source, this only configures the\nlint 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 let markClass = action.markClass ? \" \" + action.markClass : \"\";\n return elt(\"button\", {\n type: \"button\",\n class: \"cm-diagnosticAction\" + markClass,\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.ctrlKey || event.altKey || event.metaKey)\n return;\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(\"#f11\") },\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 \"&dark .cm-lintRange-active\": { backgroundColor: \"#86714a80\" },\n \"&dark .cm-panel.cm-panel-lint ul\": {\n \"& [aria-selected]\": {\n backgroundColor: \"#2e343e\",\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 : { ...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 lintHover = /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip });\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 lintHover,\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 ts from \"typescript\";\n/**\n * TypeScript has a set of diagnostic categories,\n * which maps roughly onto CodeMirror's categories.\n * Here, we do the mapping.\n */\nexport function tsCategoryToSeverity(diagnostic) {\n if (diagnostic.code === 7027) {\n // Unreachable code detected\n return \"warning\";\n }\n switch (diagnostic.category) {\n case ts.DiagnosticCategory.Error:\n return \"error\";\n case ts.DiagnosticCategory.Message:\n return \"info\";\n case ts.DiagnosticCategory.Warning:\n return \"warning\";\n case ts.DiagnosticCategory.Suggestion:\n return \"info\";\n }\n}\n/**\n * Not all TypeScript diagnostic relate to specific\n * ranges in source code: here we filter for those that\n * do.\n */\nexport function isDiagnosticWithLocation(diagnostic) {\n return !!(diagnostic.file &&\n typeof diagnostic.start === \"number\" &&\n typeof diagnostic.length === \"number\");\n}\n/**\n * Get the message for a diagnostic. TypeScript\n * is kind of weird: messageText might have the message,\n * or a pointer to the message. This follows the chain\n * to get a string, regardless of which case we're in.\n */\nexport function tsDiagnosticMessage(diagnostic) {\n if (typeof diagnostic.messageText === \"string\") {\n return diagnostic.messageText;\n }\n // TODO: go through linked list\n return diagnostic.messageText.messageText;\n}\n/**\n * TypeScript and CodeMirror have slightly different\n * ways of representing diagnostics. This converts\n * from one to the other.\n */\nexport function convertTSDiagnosticToCM(d) {\n // We add some code at the end of the document, but we can't have a\n // diagnostic in an invalid range\n const start = d.start;\n const message = tsDiagnosticMessage(d);\n return {\n from: start,\n to: start + d.length,\n message: message,\n severity: tsCategoryToSeverity(d),\n };\n}\n//# sourceMappingURL=utils.js.map","import { convertTSDiagnosticToCM, isDiagnosticWithLocation } from \"./utils.js\";\n/**\n * Lower-level interface to get semantic and syntactic\n * diagnostics from the TypeScript environment.\n *\n * This is used by tsLinter and tsLinterWorker,\n * but you can use it directly to power other UI.\n */\nexport function getLints({ env, path, diagnosticCodesToIgnore, }) {\n // Don't crash if the relevant file isn't created yet.\n const exists = env.getSourceFile(path);\n if (!exists)\n return [];\n const syntaticDiagnostics = env.languageService.getSyntacticDiagnostics(path);\n const semanticDiagnostics = env.languageService.getSemanticDiagnostics(path);\n const diagnostics = [...syntaticDiagnostics, ...semanticDiagnostics].filter((diagnostic) => isDiagnosticWithLocation(diagnostic) &&\n !diagnosticCodesToIgnore.includes(diagnostic.code));\n return diagnostics.map(convertTSDiagnosticToCM);\n}\n//# sourceMappingURL=getLints.js.map","import { linter } from \"@codemirror/lint\";\nimport { getLints } from \"./getLints.js\";\nimport { tsFacet } from \"../facet/tsFacet.js\";\n/**\n * Binds the TypeScript `lint()` method with TypeScript's\n * semantic and syntactic diagnostics. You can use\n * the `getLints` method for a lower-level interface\n * to the same data.\n */\nexport function tsLinter({ diagnosticCodesToIgnore, } = {}) {\n return linter(async (view) => {\n const config = view.state.facet(tsFacet);\n return config\n ? getLints({\n ...config,\n diagnosticCodesToIgnore: diagnosticCodesToIgnore || [],\n })\n : [];\n });\n}\n//# sourceMappingURL=tsLinter.js.map","import { linter } from \"@codemirror/lint\";\nimport { tsFacetWorker } from \"../index.js\";\n/**\n * Binds the TypeScript `lint()` method with TypeScript's\n * semantic and syntactic diagnostics. You can use\n * the `getLints` method for a lower-level interface\n * to the same data.\n */\nexport function tsLinterWorker({ diagnosticCodesToIgnore, } = {}) {\n return linter(async (view) => {\n const config = view.state.facet(tsFacetWorker);\n return config\n ? config.worker.getLints({\n path: config.path,\n diagnosticCodesToIgnore: diagnosticCodesToIgnore || [],\n })\n : [];\n });\n}\n//# sourceMappingURL=tsLinterWorker.js.map","export function getHover({ env, path, pos, }) {\n const sourcePos = pos;\n if (sourcePos === null)\n return null;\n const quickInfo = env.languageService.getQuickInfoAtPosition(path, sourcePos);\n if (!quickInfo)\n return null;\n const start = quickInfo.textSpan.start;\n const typeDef = env.languageService.getTypeDefinitionAtPosition(path, sourcePos) ??\n env.languageService.getDefinitionAtPosition(path, sourcePos);\n return {\n start,\n end: start + quickInfo.textSpan.length,\n typeDef,\n quickInfo,\n };\n}\n//# sourceMappingURL=getHover.js.map","/**\n * Default, barebones tooltip renderer. Generates\n * structure of a div, containing a series of\n * span elements with the typescript `kind` as\n * classes.\n */\nexport const defaultRenderer = (info) => {\n const div = document.createElement(\"div\");\n if (info.quickInfo?.displayParts) {\n for (let part of info.quickInfo.displayParts) {\n const span = div.appendChild(document.createElement(\"span\"));\n span.className = `quick-info-${part.kind}`;\n span.innerText = part.text;\n }\n }\n return { dom: div };\n};\n//# sourceMappingURL=renderTooltip.js.map","import { hoverTooltip } from \"@codemirror/view\";\nimport { getHover } from \"./getHover.js\";\nimport { defaultRenderer } from \"./renderTooltip.js\";\nimport { tsFacet } from \"../facet/tsFacet.js\";\n/**\n * This binds the CodeMirror `hoverTooltip` method\n * with a code that pulls types and documentation\n * from the TypeScript environment.\n */\nexport function tsHover({ renderTooltip = defaultRenderer, } = {}) {\n return hoverTooltip(async (view, pos) => {\n const config = view.state.facet(tsFacet);\n if (!config)\n return null;\n const hoverData = getHover({\n ...config,\n pos,\n });\n if (!hoverData)\n return null;\n return {\n pos: hoverData.start,\n end: hoverData.end,\n create: () => renderTooltip(hoverData, view),\n };\n });\n}\n//# sourceMappingURL=tsHover.js.map","import { hoverTooltip } from \"@codemirror/view\";\nimport { defaultRenderer } from \"./renderTooltip.js\";\nimport { tsFacetWorker } from \"../index.js\";\n/**\n * This binds the CodeMirror `hoverTooltip` method\n * with a code that pulls types and documentation\n * from the TypeScript environment.\n */\nexport function tsHoverWorker({ renderTooltip = defaultRenderer, } = {}) {\n return hoverTooltip(async (view, pos) => {\n const config = view.state.facet(tsFacetWorker);\n if (!config)\n return null;\n const hoverData = await config.worker.getHover({\n path: config.path,\n pos,\n });\n if (!hoverData)\n return null;\n return {\n pos: hoverData.start,\n end: hoverData.end,\n create: () => renderTooltip(hoverData, view),\n };\n });\n}\n//# sourceMappingURL=tsHoverWorker.js.map","import { combineConfig, Facet } from \"@codemirror/state\";\n/**\n * Use this facet if you intend to run your TypeScript\n * virtual environment within a web worker.\n *\n * This is how the ts-related extensions are\n * configured: this facet sets the path of the file\n * and the environment to use, and the rest of\n * the extensions, like tsLint and tsAutocomplete,\n * pull those settings automatically from editor state.\n */\nexport const tsFacetWorker = Facet.define({\n combine(configs) {\n return combineConfig(configs, {});\n },\n});\n//# sourceMappingURL=tsFacetWorker.js.map"],"names":["createOrUpdateFile","env","path","code","tsFacet","Facet","configs","combineConfig","tsSync","first","EditorView","update","config","tsSyncWorker","tsFacetWorker","AUTOCOMPLETION_SYMBOLS","DEFAULT_CODEMIRROR_TYPE_ICONS","ensureAnchor","expr","start","source","addEnd","getLineAtPosition","position","from","to","text","matchBefore","pos","line","str","found","TS_COMPLETE_BLOCKLIST","ts","getAutocompletion","context","keepLegacyLimitationForAutocompletionSymbols","explicit","rawContents","_a","word","completionInfo","options","entry","boost","type","tsAutocomplete","tsAutocompleteWorker","SelectedDiagnostic","diagnostic","LintState","diagnostics","panel","selected","state","diagnosticFilter","lintConfig","sorted","a","deco","RangeSetBuilder","active","scan","scanPos","docLen","i","next","p","d","widget","behind","check","sev","maxSeverity","Decoration","DiagnosticWidget","markClass","c","set","findDiagnostic","after","spec","hideTooltip","tr","tooltip","result","e","setDiagnosticsEffect","maybeEnableLint","effects","lintState","StateEffect","lintExtensions","setDiagnostics","togglePanel","movePanelSelection","StateField","value","mapped","selPos","effect","LintPanel","f","showPanel","val","s","activeMark","lintTooltip","view","side","end","diagnosticsTooltip","elt","renderDiagnostic","closeLintPanel","field","lintPlugin","ViewPlugin","delay","now","sources","batchResults","annotations","b","error","logException","promises","sink","collected","timeout","input","x","combineFilter","u","t","y","linter","assignKeys","actions","assigned","name","ch","inPanel","keys","action","fired","click","keyIndex","nameElt","WidgetType","other","PanelItem","onkeydown","event","onclick","needsSync","newSelectedItem","seen","_start","_end","item","j","sel","scaleY","domPos","rm","prev","selectedIndex","selection","svg","content","attrs","underline","color","baseTheme","severityWeight","weight","w","lintHover","hoverTooltip","tsCategoryToSeverity","isDiagnosticWithLocation","tsDiagnosticMessage","convertTSDiagnosticToCM","message","getLints","diagnosticCodesToIgnore","syntaticDiagnostics","semanticDiagnostics","tsLinter","tsLinterWorker","getHover","sourcePos","quickInfo","typeDef","defaultRenderer","info","div","part","span","tsHover","renderTooltip","hoverData","tsHoverWorker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}
|