@matdata/yasqe 5.20.3 → 6.1.0

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +76 -59
  3. package/build/prefixes.json +2169 -2115
  4. package/build/ts/grammar/tokenizer.d.ts +9 -3
  5. package/build/ts/grammar/tokenizer.js +34 -6
  6. package/build/ts/grammar/tokenizer.js.map +1 -1
  7. package/build/ts/src/autocompleters/index.d.ts +4 -2
  8. package/build/ts/src/autocompleters/index.js +9 -33
  9. package/build/ts/src/autocompleters/index.js.map +1 -1
  10. package/build/ts/src/autocompleters/variables.js +17 -19
  11. package/build/ts/src/autocompleters/variables.js.map +1 -1
  12. package/build/ts/src/defaults.d.ts +17 -53
  13. package/build/ts/src/defaults.js +2 -5
  14. package/build/ts/src/defaults.js.map +1 -1
  15. package/build/ts/src/editor/autocompletion.d.ts +32 -0
  16. package/build/ts/src/editor/autocompletion.js +94 -0
  17. package/build/ts/src/editor/autocompletion.js.map +1 -0
  18. package/build/ts/src/editor/doc.d.ts +32 -0
  19. package/build/ts/src/editor/doc.js +121 -0
  20. package/build/ts/src/editor/doc.js.map +1 -0
  21. package/build/ts/src/editor/facade.d.ts +94 -0
  22. package/build/ts/src/editor/facade.js +392 -0
  23. package/build/ts/src/editor/facade.js.map +1 -0
  24. package/build/ts/src/editor/folding.d.ts +16 -0
  25. package/build/ts/src/editor/folding.js +190 -0
  26. package/build/ts/src/editor/folding.js.map +1 -0
  27. package/build/ts/src/editor/gutters.d.ts +8 -0
  28. package/build/ts/src/editor/gutters.js +113 -0
  29. package/build/ts/src/editor/gutters.js.map +1 -0
  30. package/build/ts/src/editor/keymap.d.ts +11 -0
  31. package/build/ts/src/editor/keymap.js +88 -0
  32. package/build/ts/src/editor/keymap.js.map +1 -0
  33. package/build/ts/src/editor/language.d.ts +11 -0
  34. package/build/ts/src/editor/language.js +19 -0
  35. package/build/ts/src/editor/language.js.map +1 -0
  36. package/build/ts/src/editor/tokenizerRunner.d.ts +37 -0
  37. package/build/ts/src/editor/tokenizerRunner.js +115 -0
  38. package/build/ts/src/editor/tokenizerRunner.js.map +1 -0
  39. package/build/ts/src/index.d.ts +49 -100
  40. package/build/ts/src/index.js +179 -100
  41. package/build/ts/src/index.js.map +1 -1
  42. package/build/ts/src/prefixes.json +2191 -2137
  43. package/build/ts/src/tooltip.js +9 -6
  44. package/build/ts/src/tooltip.js.map +1 -1
  45. package/build/yasqe.min.css +1 -1
  46. package/build/yasqe.min.css.map +3 -3
  47. package/build/yasqe.min.js +76 -91
  48. package/build/yasqe.min.js.map +4 -4
  49. package/grammar/tokenizer.ts +62 -8
  50. package/package.json +11 -6
  51. package/src/autocompleters/index.ts +24 -53
  52. package/src/autocompleters/show-hint.scss +17 -9
  53. package/src/autocompleters/variables.ts +20 -24
  54. package/src/defaults.ts +2 -6
  55. package/src/editor/autocompletion.ts +147 -0
  56. package/src/editor/doc.ts +151 -0
  57. package/src/editor/facade.ts +558 -0
  58. package/src/editor/folding.ts +225 -0
  59. package/src/editor/gutters.ts +152 -0
  60. package/src/editor/keymap.ts +133 -0
  61. package/src/editor/language.ts +47 -0
  62. package/src/editor/tokenizerRunner.ts +198 -0
  63. package/src/index.ts +193 -127
  64. package/src/prefixes.json +2169 -2115
  65. package/src/scss/buttons.scss +4 -2
  66. package/src/scss/codemirrorMods.scss +107 -11
  67. package/src/scss/yasqe.scss +4 -2
  68. package/src/tooltip.ts +16 -13
  69. package/build/ts/src/CodeMirror.d.ts +0 -30
  70. package/build/ts/src/CodeMirror.js +0 -20
  71. package/build/ts/src/CodeMirror.js.map +0 -1
  72. package/build/ts/src/prefixFold.d.ts +0 -8
  73. package/build/ts/src/prefixFold.js +0 -87
  74. package/build/ts/src/prefixFold.js.map +0 -1
  75. package/src/CodeMirror.ts +0 -54
  76. package/src/prefixFold.ts +0 -94
@@ -0,0 +1,392 @@
1
+ import { Compartment, EditorState, StateEffect, StateField } from "@codemirror/state";
2
+ import { EditorView, Decoration, lineNumbers as lineNumbersExt, drawSelection, highlightActiveLine, highlightActiveLineGutter, rectangularSelection, crosshairCursor, dropCursor, } from "@codemirror/view";
3
+ import { history, indentMore, indentLess, selectAll, deleteLine, undo, redo } from "@codemirror/commands";
4
+ import { bracketMatching, indentUnit as indentUnitFacet, getIndentation, indentString } from "@codemirror/language";
5
+ import { closeBrackets } from "@codemirror/autocomplete";
6
+ import { highlightSelectionMatches } from "@codemirror/search";
7
+ import { sparql } from "./language";
8
+ import { sparqlFolding, foldAt, toggleFoldAt } from "./folding";
9
+ import { markerGutters, setGutterMarker, clearGutter } from "./gutters";
10
+ import { TokenizerRunner } from "./tokenizerRunner";
11
+ import { extraKeysExtension, tabKeymap, defaultKeymaps } from "./keymap";
12
+ import { sparqlAutocompletion } from "./autocompletion";
13
+ import { DocFacade, posToOffset, offsetToPos } from "./doc";
14
+ const THEME_CLASS_PREFIX = "cm-s-";
15
+ function themeClassExtension(theme) {
16
+ const classes = ["CodeMirror"];
17
+ if (theme) {
18
+ for (const t of theme.split(/\s+/)) {
19
+ if (t)
20
+ classes.push(THEME_CLASS_PREFIX + t);
21
+ }
22
+ }
23
+ return EditorView.editorAttributes.of({ class: classes.join(" ") });
24
+ }
25
+ const syntaxErrorTokenMark = Decoration.mark({ class: "cm-syntax-error-token" });
26
+ const setSyntaxErrorHighlightEffect = StateEffect.define();
27
+ const syntaxErrorHighlightField = StateField.define({
28
+ create() {
29
+ return Decoration.none;
30
+ },
31
+ update(deco, tr) {
32
+ deco = deco.map(tr.changes);
33
+ for (const effect of tr.effects) {
34
+ if (!effect.is(setSyntaxErrorHighlightEffect))
35
+ continue;
36
+ const range = effect.value;
37
+ if (!range || range.to <= range.from) {
38
+ deco = Decoration.none;
39
+ }
40
+ else {
41
+ deco = Decoration.set([syntaxErrorTokenMark.range(range.from, range.to)]);
42
+ }
43
+ }
44
+ return deco;
45
+ },
46
+ provide: (field) => EditorView.decorations.from(field),
47
+ });
48
+ export class EditorFacade {
49
+ constructor(parent, options) {
50
+ this.eventHandlers = {};
51
+ this.customOptions = {};
52
+ this.compartments = {
53
+ theme: new Compartment(),
54
+ readOnly: new Compartment(),
55
+ lineNumbers: new Compartment(),
56
+ lineWrapping: new Compartment(),
57
+ tabSize: new Compartment(),
58
+ indentUnit: new Compartment(),
59
+ extraKeys: new Compartment(),
60
+ tabMode: new Compartment(),
61
+ matchBrackets: new Compartment(),
62
+ highlightSelectionMatches: new Compartment(),
63
+ autoCloseBrackets: new Compartment(),
64
+ };
65
+ this.editorOptions = Object.assign({}, options);
66
+ this.runner = new TokenizerRunner({ tabSize: options.tabSize, indentUnit: options.indentUnit });
67
+ const host = {
68
+ getHintFn: () => this.getHintFn(),
69
+ onShown: (dom) => this.emit("autocompletionShown", dom),
70
+ onClose: () => this.emit("autocompletionClose"),
71
+ };
72
+ const state = EditorState.create({
73
+ doc: options.value || "",
74
+ extensions: [
75
+ sparql(),
76
+ sparqlFolding(this.runner),
77
+ markerGutters(),
78
+ syntaxErrorHighlightField,
79
+ this.compartments.lineNumbers.of(options.lineNumbers === false ? [] : [lineNumbersExt(), highlightActiveLineGutter()]),
80
+ this.compartments.lineWrapping.of(options.lineWrapping === false ? [] : EditorView.lineWrapping),
81
+ this.compartments.readOnly.of([
82
+ EditorState.readOnly.of(!!options.readOnly),
83
+ EditorView.editable.of(!options.readOnly),
84
+ ]),
85
+ this.compartments.tabSize.of(EditorState.tabSize.of(options.tabSize || 4)),
86
+ this.compartments.indentUnit.of(indentUnitFacet.of(indentUnitString(options))),
87
+ this.compartments.theme.of(themeClassExtension(options.theme)),
88
+ this.compartments.matchBrackets.of(options.matchBrackets === false ? [] : bracketMatching()),
89
+ this.compartments.highlightSelectionMatches.of(options.highlightSelectionMatches ? highlightSelectionMatches() : []),
90
+ this.compartments.autoCloseBrackets.of(options.autoCloseBrackets ? closeBrackets() : []),
91
+ history(),
92
+ drawSelection(),
93
+ dropCursor(),
94
+ rectangularSelection(),
95
+ crosshairCursor(),
96
+ highlightActiveLine(),
97
+ EditorState.allowMultipleSelections.of(true),
98
+ sparqlAutocompletion(host),
99
+ this.compartments.extraKeys.of(extraKeysExtension(options.extraKeys, () => this)),
100
+ this.compartments.tabMode.of(tabKeymap(options.tabMode)),
101
+ defaultKeymaps(),
102
+ EditorView.updateListener.of((update) => this.handleUpdate(update)),
103
+ EditorView.domEventHandlers({
104
+ blur: () => {
105
+ this.emit("blur");
106
+ },
107
+ focus: () => {
108
+ this.emit("focus");
109
+ },
110
+ }),
111
+ ],
112
+ });
113
+ this.view = new EditorView({ state, parent });
114
+ this.view.dom.CodeMirror = this;
115
+ this.doc = new DocFacade(this.view);
116
+ this.customOptions.theme = options.theme;
117
+ if (options.mode)
118
+ this.customOptions.mode = options.mode;
119
+ }
120
+ handleUpdate(update) {
121
+ if (update.docChanged) {
122
+ let fromLine = Number.MAX_SAFE_INTEGER;
123
+ update.changes.iterChangedRanges((fromA) => {
124
+ const line = update.startState.doc.lineAt(fromA).number - 1;
125
+ if (line < fromLine)
126
+ fromLine = line;
127
+ });
128
+ this.runner.invalidate(fromLine === Number.MAX_SAFE_INTEGER ? 0 : fromLine);
129
+ this.emit("change", { origin: "input" });
130
+ this.emit("changes");
131
+ }
132
+ if (update.selectionSet || update.docChanged) {
133
+ this.emit("cursorActivity");
134
+ }
135
+ }
136
+ on(eventName, handler) {
137
+ if (!this.eventHandlers[eventName])
138
+ this.eventHandlers[eventName] = [];
139
+ this.eventHandlers[eventName].push(handler);
140
+ }
141
+ off(eventName, handler) {
142
+ const handlers = this.eventHandlers[eventName];
143
+ if (!handlers)
144
+ return;
145
+ this.eventHandlers[eventName] = handlers.filter((h) => h !== handler);
146
+ }
147
+ emit(eventName, ...data) {
148
+ const handlers = this.eventHandlers[eventName];
149
+ if (!handlers || !handlers.length)
150
+ return;
151
+ for (const handler of handlers.slice()) {
152
+ handler(this, ...data);
153
+ }
154
+ }
155
+ getDoc() {
156
+ return this.doc;
157
+ }
158
+ getValue() {
159
+ return this.doc.getValue();
160
+ }
161
+ setValue(value) {
162
+ this.doc.setValue(value);
163
+ }
164
+ getLine(line) {
165
+ return this.doc.getLine(line);
166
+ }
167
+ lineCount() {
168
+ return this.doc.lineCount();
169
+ }
170
+ lastLine() {
171
+ return this.doc.lastLine();
172
+ }
173
+ getCursor(start) {
174
+ return this.doc.getCursor(start);
175
+ }
176
+ setCursor(pos, ch) {
177
+ this.doc.setCursor(pos, ch);
178
+ }
179
+ setSelection(anchor, head) {
180
+ this.doc.setSelection(anchor, head);
181
+ }
182
+ somethingSelected() {
183
+ return this.doc.somethingSelected();
184
+ }
185
+ getSelection() {
186
+ return this.doc.getSelection();
187
+ }
188
+ replaceSelection(text, collapse) {
189
+ this.doc.replaceSelection(text, collapse);
190
+ }
191
+ getRange(from, to) {
192
+ return this.doc.getRange(from, to);
193
+ }
194
+ replaceRange(text, from, to) {
195
+ this.doc.replaceRange(text, from, to);
196
+ }
197
+ indexFromPos(pos) {
198
+ return this.doc.indexFromPos(pos);
199
+ }
200
+ posFromIndex(index) {
201
+ return this.doc.posFromIndex(index);
202
+ }
203
+ operation(fn) {
204
+ return fn();
205
+ }
206
+ getTokenAt(pos, precise = false) {
207
+ return this.runner.getTokenAt(this.view.state.doc, pos, precise);
208
+ }
209
+ getTokenTypeAt(pos) {
210
+ return this.runner.getTokenTypeAt(this.view.state.doc, pos);
211
+ }
212
+ getOption(name) {
213
+ if (name in this.customOptions)
214
+ return this.customOptions[name];
215
+ return this.editorOptions[name];
216
+ }
217
+ setOption(name, value) {
218
+ this.editorOptions[name] = value;
219
+ switch (name) {
220
+ case "theme":
221
+ this.setTheme(value);
222
+ break;
223
+ case "readOnly": {
224
+ const readOnly = !!value && value !== "nocursor" ? true : !!value;
225
+ this.view.dispatch({
226
+ effects: this.compartments.readOnly.reconfigure([
227
+ EditorState.readOnly.of(readOnly),
228
+ EditorView.editable.of(!readOnly),
229
+ ]),
230
+ });
231
+ break;
232
+ }
233
+ case "lineNumbers":
234
+ this.view.dispatch({
235
+ effects: this.compartments.lineNumbers.reconfigure(value ? [lineNumbersExt(), highlightActiveLineGutter()] : []),
236
+ });
237
+ break;
238
+ case "lineWrapping":
239
+ this.view.dispatch({
240
+ effects: this.compartments.lineWrapping.reconfigure(value ? EditorView.lineWrapping : []),
241
+ });
242
+ break;
243
+ case "tabSize":
244
+ this.view.dispatch({ effects: this.compartments.tabSize.reconfigure(EditorState.tabSize.of(value || 4)) });
245
+ break;
246
+ case "indentUnit":
247
+ case "indentWithTabs":
248
+ this.view.dispatch({
249
+ effects: this.compartments.indentUnit.reconfigure(indentUnitFacet.of(indentUnitString(this.editorOptions))),
250
+ });
251
+ break;
252
+ case "extraKeys":
253
+ this.view.dispatch({
254
+ effects: this.compartments.extraKeys.reconfigure(extraKeysExtension(value, () => this)),
255
+ });
256
+ break;
257
+ case "tabMode":
258
+ this.view.dispatch({ effects: this.compartments.tabMode.reconfigure(tabKeymap(value)) });
259
+ break;
260
+ case "matchBrackets":
261
+ this.view.dispatch({ effects: this.compartments.matchBrackets.reconfigure(value ? bracketMatching() : []) });
262
+ break;
263
+ case "highlightSelectionMatches":
264
+ this.view.dispatch({
265
+ effects: this.compartments.highlightSelectionMatches.reconfigure(value ? highlightSelectionMatches() : []),
266
+ });
267
+ break;
268
+ case "autoCloseBrackets":
269
+ this.view.dispatch({ effects: this.compartments.autoCloseBrackets.reconfigure(value ? closeBrackets() : []) });
270
+ break;
271
+ default:
272
+ this.customOptions[name] = value;
273
+ }
274
+ }
275
+ setTheme(theme) {
276
+ this.view.dispatch({ effects: this.compartments.theme.reconfigure(themeClassExtension(theme)) });
277
+ this.customOptions.theme = theme;
278
+ }
279
+ setGutterMarker(line, gutterName, element) {
280
+ setGutterMarker(this.view, line, gutterName, element);
281
+ }
282
+ clearGutter(gutterName) {
283
+ clearGutter(this.view, gutterName);
284
+ }
285
+ setSyntaxErrorHighlight(from, to) {
286
+ const fromOffset = posToOffset(this.view.state.doc, from);
287
+ const toOffset = posToOffset(this.view.state.doc, to);
288
+ this.view.dispatch({ effects: setSyntaxErrorHighlightEffect.of({ from: fromOffset, to: toOffset }) });
289
+ }
290
+ clearSyntaxErrorHighlight() {
291
+ this.view.dispatch({ effects: setSyntaxErrorHighlightEffect.of(null) });
292
+ }
293
+ execCommand(command) {
294
+ switch (command) {
295
+ case "selectAll":
296
+ selectAll(this.view);
297
+ break;
298
+ case "indentMore":
299
+ indentMore(this.view);
300
+ break;
301
+ case "indentLess":
302
+ indentLess(this.view);
303
+ break;
304
+ case "deleteLine":
305
+ deleteLine(this.view);
306
+ break;
307
+ case "undo":
308
+ undo(this.view);
309
+ break;
310
+ case "redo":
311
+ redo(this.view);
312
+ break;
313
+ default:
314
+ console.warn(`Unknown editor command: ${command}`);
315
+ }
316
+ }
317
+ indentLine(lineNumber) {
318
+ var _a;
319
+ const line = this.view.state.doc.line(lineNumber + 1);
320
+ const indentation = getIndentation(this.view.state, line.from);
321
+ if (indentation === null)
322
+ return;
323
+ const currentWs = ((_a = /^\s*/.exec(line.text)) === null || _a === void 0 ? void 0 : _a[0]) || "";
324
+ const newWs = indentString(this.view.state, indentation);
325
+ if (currentWs === newWs)
326
+ return;
327
+ this.view.dispatch({ changes: { from: line.from, to: line.from + currentWs.length, insert: newWs } });
328
+ }
329
+ foldCode(line) {
330
+ const pos = typeof line === "number" ? { line, ch: 0 } : line;
331
+ foldAt(this.view, posToOffset(this.view.state.doc, pos));
332
+ }
333
+ toggleFold(line) {
334
+ const pos = typeof line === "number" ? { line, ch: 0 } : line;
335
+ toggleFoldAt(this.view, posToOffset(this.view.state.doc, pos));
336
+ }
337
+ getWrapperElement() {
338
+ return this.view.dom;
339
+ }
340
+ getInputField() {
341
+ return this.view.contentDOM;
342
+ }
343
+ getScrollerElement() {
344
+ return this.view.scrollDOM;
345
+ }
346
+ focus() {
347
+ this.view.focus();
348
+ }
349
+ hasFocus() {
350
+ return this.view.hasFocus;
351
+ }
352
+ refresh() {
353
+ this.view.requestMeasure();
354
+ }
355
+ setSize(width, height) {
356
+ const toCss = (v) => (typeof v === "number" ? `${v}px` : v);
357
+ if (width !== null && width !== undefined)
358
+ this.view.dom.style.width = toCss(width);
359
+ if (height !== null && height !== undefined)
360
+ this.view.dom.style.height = toCss(height);
361
+ this.view.requestMeasure();
362
+ }
363
+ cursorCoords(where) {
364
+ const pos = where && typeof where === "object"
365
+ ? posToOffset(this.view.state.doc, where)
366
+ : where === false
367
+ ? this.view.state.selection.main.anchor
368
+ : this.view.state.selection.main.head;
369
+ const rect = this.view.coordsAtPos(pos);
370
+ if (!rect) {
371
+ const domRect = this.view.dom.getBoundingClientRect();
372
+ return { left: domRect.left, top: domRect.top, bottom: domRect.top };
373
+ }
374
+ return { left: rect.left, top: rect.top, bottom: rect.bottom };
375
+ }
376
+ coordsChar(coords) {
377
+ const offset = this.view.posAtCoords({ x: coords.left, y: coords.top });
378
+ return offsetToPos(this.view.state.doc, offset === null ? this.view.state.doc.length : offset);
379
+ }
380
+ addExtension(extension) {
381
+ this.view.dispatch({ effects: StateEffect.appendConfig.of(extension) });
382
+ }
383
+ destroyEditor() {
384
+ this.view.destroy();
385
+ }
386
+ }
387
+ function indentUnitString(options) {
388
+ if (options.indentWithTabs)
389
+ return "\t";
390
+ return " ".repeat(options.indentUnit || 2);
391
+ }
392
+ //# sourceMappingURL=facade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../../../../../packages/yasqe/src/editor/facade.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAa,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EACL,UAAU,EAEV,UAAU,EAEV,WAAW,IAAI,cAAc,EAC7B,aAAa,EACb,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,UAAU,IAAI,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAc,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,eAAe,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,cAAc,EAAa,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAA8B,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAuC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAOnC,SAAS,mBAAmB,CAAC,KAAyB;IACpD,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;AACjF,MAAM,6BAA6B,GAAG,WAAW,CAAC,MAAM,EAAuC,CAAC;AAChG,MAAM,yBAAyB,GAAG,UAAU,CAAC,MAAM,CAAgB;IACjE,MAAM;QACJ,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,EAAE;QACb,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC;gBAAE,SAAS;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,OAAgB,YAAY;IA0BhC,YAAY,MAAmB,EAAE,OAAsB;QArBtC,kBAAa,GAAwC,EAAE,CAAC;QACxD,kBAAa,GAA2B,EAAE,CAAC;QAE3C,iBAAY,GAAG;YAC9B,KAAK,EAAE,IAAI,WAAW,EAAE;YACxB,QAAQ,EAAE,IAAI,WAAW,EAAE;YAC3B,WAAW,EAAE,IAAI,WAAW,EAAE;YAC9B,YAAY,EAAE,IAAI,WAAW,EAAE;YAC/B,OAAO,EAAE,IAAI,WAAW,EAAE;YAC1B,UAAU,EAAE,IAAI,WAAW,EAAE;YAC7B,SAAS,EAAE,IAAI,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI,WAAW,EAAE;YAC1B,aAAa,EAAE,IAAI,WAAW,EAAE;YAChC,yBAAyB,EAAE,IAAI,WAAW,EAAE;YAC5C,iBAAiB,EAAE,IAAI,WAAW,EAAE;SACrC,CAAC;QAOA,IAAI,CAAC,aAAa,qBAAQ,OAAO,CAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAuB;YAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACjC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC;YACvD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;SAChD,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;YAC/B,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YACxB,UAAU,EAAE;gBACV,MAAM,EAAE;gBACR,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC1B,aAAa,EAAE;gBACf,yBAAyB;gBACzB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAC9B,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,yBAAyB,EAAE,CAAC,CACrF;gBACD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;gBAChG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAC3C,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;iBAC1C,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBAC1E,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9D,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;gBAC5F,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,CAC5C,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CACrE;gBACD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxF,OAAO,EAAE;gBACT,aAAa,EAAE;gBACf,UAAU,EAAE;gBACZ,oBAAoB,EAAE;gBACtB,eAAe,EAAE;gBACjB,mBAAmB,EAAE;gBACrB,WAAW,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC5C,oBAAoB,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,cAAc,EAAE;gBAChB,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnE,UAAU,CAAC,gBAAgB,CAAC;oBAC1B,IAAI,EAAE,GAAG,EAAE;wBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;oBACD,KAAK,EAAE,GAAG,EAAE;wBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;iBACF,CAAC;aACH;SACF,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,GAAW,CAAC,UAAU,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D,CAAC;IAKO,YAAY,CAAC,MAAkB;QACrC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5D,IAAI,IAAI,GAAG,QAAQ;oBAAE,QAAQ,GAAG,IAAI,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAMM,EAAE,CAAC,SAAiB,EAAE,OAAqB;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,GAAG,CAAC,SAAiB,EAAE,OAAqB;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IACxE,CAAC;IAGM,IAAI,CAAC,SAAiB,EAAE,GAAG,IAAW;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO;QAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAMM,MAAM;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC3B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAEM,SAAS,CAAC,KAA2D;QAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,SAAS,CAAC,GAAsB,EAAE,EAAW;QAClD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAEM,YAAY,CAAC,MAAgB,EAAE,IAAe;QACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IACjC,CAAC;IAEM,gBAAgB,CAAC,IAAY,EAAE,QAAqC;QACzE,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEM,QAAQ,CAAC,IAAc,EAAE,EAAY;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,YAAY,CAAC,IAAY,EAAE,IAAc,EAAE,EAAa;QAC7D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,GAAa;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAMM,SAAS,CAAI,EAAW;QAC7B,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAMM,UAAU,CAAC,GAAa,EAAE,OAAO,GAAG,KAAK;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,cAAc,CAAC,GAAa;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;IAMM,SAAS,CAAC,IAAY;QAC3B,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChE,OAAQ,IAAI,CAAC,aAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,SAAS,CAAC,IAAY,EAAE,KAAU;QACtC,IAAI,CAAC,aAAqB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC1C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAC9C,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;wBACjC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;qBAClC,CAAC;iBACH,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,CAChD,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC7D;iBACF,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1F,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3G,MAAM;YACR,KAAK,YAAY,CAAC;YAClB,KAAK,gBAAgB;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;iBAC5G,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;iBACxF,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzF,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7G,MAAM;YACR,KAAK,2BAA2B;gBAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3G,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,mBAAmB;gBACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/G,MAAM;YACR;gBACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAAyB;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;IACnC,CAAC;IAMM,eAAe,CAAC,IAAY,EAAE,UAAsB,EAAE,OAA2B;QACtF,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAEM,WAAW,CAAC,UAAsB;QACvC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAGM,uBAAuB,CAAC,IAAc,EAAE,EAAY;QACzD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,6BAA6B,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IAGM,yBAAyB;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,6BAA6B,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAMM,WAAW,CAAC,OAAe;QAChC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,WAAW;gBACd,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,YAAY;gBACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,YAAY;gBACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,YAAY;gBACf,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM;YACR;gBAEE,OAAO,CAAC,IAAI,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAMM,UAAU,CAAC,UAAkB;;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO;QACjC,MAAM,SAAS,GAAG,CAAA,MAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,KAAK;YAAE,OAAO;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IAGM,QAAQ,CAAC,IAAuB;QACrC,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAGM,UAAU,CAAC,IAAuB;QACvC,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IAMM,iBAAiB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,KAA6B,EAAE,MAA8B;QAC1E,MAAM,KAAK,GAAG,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC7B,CAAC;IAGM,YAAY,CAAC,KAA0B;QAC5C,MAAM,GAAG,GACP,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAChC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;YACzC,CAAC,CAAC,KAAK,KAAK,KAAK;gBACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;gBACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IAGM,UAAU,CAAC,MAAqC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjG,CAAC;IAGM,YAAY,CAAC,SAAoB;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAGM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAGD,SAAS,gBAAgB,CAAC,OAAsB;IAC9C,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Extension, Text } from "@codemirror/state";
2
+ import { EditorView } from "@codemirror/view";
3
+ import { TokenizerRunner } from "./tokenizerRunner";
4
+ export interface FoldRange {
5
+ from: number;
6
+ to: number;
7
+ }
8
+ export declare function braceFoldRange(runner: TokenizerRunner, doc: Text, line: number): FoldRange | undefined;
9
+ export declare function findFirstPrefix(runner: TokenizerRunner, doc: Text, line: number, startFromCharIndex?: number): number | undefined;
10
+ export declare function findFirstPrefixLine(runner: TokenizerRunner, doc: Text): number | undefined;
11
+ export declare function prefixFoldRange(runner: TokenizerRunner, doc: Text, line: number): FoldRange | undefined;
12
+ export declare function foldRangeForLine(runner: TokenizerRunner, doc: Text, line: number): FoldRange | undefined;
13
+ export declare function sparqlFolding(runner: TokenizerRunner): Extension;
14
+ export declare function toggleFoldAt(view: EditorView, pos: number): void;
15
+ export declare function foldAt(view: EditorView, pos: number): void;
16
+ export declare function unfoldAt(view: EditorView, pos: number): void;
@@ -0,0 +1,190 @@
1
+ import { foldService, foldGutter, foldEffect, unfoldEffect, foldedRanges, foldable } from "@codemirror/language";
2
+ const PREFIX_KEYWORD = "PREFIX ";
3
+ function tokenTypeAt(runner, doc, pos) {
4
+ return runner.getTokenAt(doc, pos).type;
5
+ }
6
+ function isBracketToken(type) {
7
+ return !!type && (type === "punc" || type.split(/\s+/).some((t) => t === "punc" || t.startsWith("bracket")));
8
+ }
9
+ export function braceFoldRange(runner, doc, line) {
10
+ const lineText = doc.line(line + 1).text;
11
+ const pairs = { "{": "}", "[": "]", "(": ")" };
12
+ let startCh = -1;
13
+ let open = "";
14
+ for (let ch = lineText.length - 1; ch >= 0; ch--) {
15
+ const c = lineText[ch];
16
+ if (pairs[c] && isBracketToken(tokenTypeAt(runner, doc, { line, ch: ch + 1 }))) {
17
+ startCh = ch;
18
+ open = c;
19
+ break;
20
+ }
21
+ }
22
+ if (startCh < 0)
23
+ return;
24
+ const close = pairs[open];
25
+ let depth = 1;
26
+ const lastLine = doc.lines - 1;
27
+ for (let l = line; l <= lastLine; l++) {
28
+ const text = doc.line(l + 1).text;
29
+ let ch = l === line ? startCh + 1 : 0;
30
+ for (; ch < text.length; ch++) {
31
+ const c = text[ch];
32
+ if (c !== open && c !== close)
33
+ continue;
34
+ if (!isBracketToken(tokenTypeAt(runner, doc, { line: l, ch: ch + 1 })))
35
+ continue;
36
+ if (c === open)
37
+ depth++;
38
+ else if (--depth === 0) {
39
+ if (l === line)
40
+ return;
41
+ return { from: doc.line(line + 1).from + startCh + 1, to: doc.line(l + 1).from + ch };
42
+ }
43
+ }
44
+ }
45
+ return;
46
+ }
47
+ export function findFirstPrefix(runner, doc, line, startFromCharIndex = 0) {
48
+ const lineText = doc.line(line + 1).text;
49
+ if (!lineText)
50
+ return undefined;
51
+ const charIndex = lineText.toUpperCase().indexOf(PREFIX_KEYWORD, startFromCharIndex);
52
+ if (charIndex >= 0 && tokenTypeAt(runner, doc, { line, ch: charIndex + 1 }) === "keyword") {
53
+ return charIndex;
54
+ }
55
+ return undefined;
56
+ }
57
+ export function findFirstPrefixLine(runner, doc) {
58
+ for (let i = 0; i < doc.lines; i++) {
59
+ const firstPrefix = findFirstPrefix(runner, doc, i);
60
+ if (firstPrefix !== undefined && firstPrefix >= 0)
61
+ return i;
62
+ }
63
+ return undefined;
64
+ }
65
+ export function prefixFoldRange(runner, doc, line) {
66
+ for (let i = line - 1; i >= 0; i--) {
67
+ if (doc
68
+ .line(i + 1)
69
+ .text.toUpperCase()
70
+ .indexOf(PREFIX_KEYWORD) >= 0)
71
+ return;
72
+ }
73
+ const prefixStart = findFirstPrefix(runner, doc, line);
74
+ if (prefixStart === undefined)
75
+ return;
76
+ const getNextNonWsToken = (l, ch) => {
77
+ let token = runner.getTokenAt(doc, { line: l, ch });
78
+ if (token.end < ch)
79
+ return undefined;
80
+ while (token.type === "ws") {
81
+ const next = runner.getTokenAt(doc, { line: l, ch: token.end + 1 });
82
+ if (next.end < token.end + 1)
83
+ return undefined;
84
+ token = next;
85
+ }
86
+ return token;
87
+ };
88
+ const getLastPrefixPos = (l, ch) => {
89
+ const keyword = runner.getTokenAt(doc, { line: l, ch: ch + 1 });
90
+ if (keyword.type !== "keyword")
91
+ return -1;
92
+ const shortname = getNextNonWsToken(l, keyword.end + 1);
93
+ if (!shortname || shortname.type !== "string-2")
94
+ return -1;
95
+ const uri = getNextNonWsToken(l, shortname.end + 1);
96
+ if (!uri || uri.type !== "variable-3")
97
+ return -1;
98
+ return uri.end;
99
+ };
100
+ let prefixEndChar = getLastPrefixPos(line, prefixStart);
101
+ let prefixEndLine = line;
102
+ let stopAtNextLine = false;
103
+ for (let i = line; i < doc.lines; i++) {
104
+ if (stopAtNextLine)
105
+ break;
106
+ const text = doc.line(i + 1).text;
107
+ let pos = i === line ? prefixStart + 1 : 0;
108
+ for (;;) {
109
+ if (!stopAtNextLine && text.indexOf("{") >= 0)
110
+ stopAtNextLine = true;
111
+ const nextPrefixDeclaration = text.toUpperCase().indexOf(PREFIX_KEYWORD, pos);
112
+ if (nextPrefixDeclaration < 0)
113
+ break;
114
+ const endCh = getLastPrefixPos(i, nextPrefixDeclaration);
115
+ if (endCh > 0) {
116
+ prefixEndChar = endCh;
117
+ prefixEndLine = i;
118
+ pos = prefixEndChar;
119
+ }
120
+ pos++;
121
+ }
122
+ }
123
+ if (prefixEndChar < 0)
124
+ return;
125
+ const from = doc.line(line + 1).from + prefixStart + PREFIX_KEYWORD.length;
126
+ const to = doc.line(prefixEndLine + 1).from + prefixEndChar;
127
+ if (to <= from)
128
+ return;
129
+ return { from, to };
130
+ }
131
+ export function foldRangeForLine(runner, doc, line) {
132
+ return braceFoldRange(runner, doc, line) || prefixFoldRange(runner, doc, line);
133
+ }
134
+ export function sparqlFolding(runner) {
135
+ return [
136
+ foldService.of((state, lineStart) => {
137
+ const line = state.doc.lineAt(lineStart).number - 1;
138
+ return foldRangeForLine(runner, state.doc, line) || null;
139
+ }),
140
+ foldGutter({
141
+ markerDOM(open) {
142
+ const el = document.createElement("span");
143
+ el.className = `cm-foldMarker CodeMirror-foldgutter-${open ? "open" : "folded"}`;
144
+ el.title = open ? "Fold" : "Unfold";
145
+ return el;
146
+ },
147
+ }),
148
+ ];
149
+ }
150
+ export function toggleFoldAt(view, pos) {
151
+ const line = view.state.doc.lineAt(pos);
152
+ let unfolded = false;
153
+ foldedRanges(view.state).between(line.from, line.to, (from, to) => {
154
+ if (from >= line.from && from <= line.to) {
155
+ view.dispatch({ effects: unfoldEffect.of({ from, to }) });
156
+ unfolded = true;
157
+ return false;
158
+ }
159
+ return;
160
+ });
161
+ if (unfolded)
162
+ return;
163
+ const range = foldable(view.state, line.from, line.to);
164
+ if (range)
165
+ view.dispatch({ effects: foldEffect.of(range) });
166
+ }
167
+ export function foldAt(view, pos) {
168
+ const line = view.state.doc.lineAt(pos);
169
+ let alreadyFolded = false;
170
+ foldedRanges(view.state).between(line.from, line.to, () => {
171
+ alreadyFolded = true;
172
+ return false;
173
+ });
174
+ if (alreadyFolded)
175
+ return;
176
+ const range = foldable(view.state, line.from, line.to);
177
+ if (range)
178
+ view.dispatch({ effects: foldEffect.of(range) });
179
+ }
180
+ export function unfoldAt(view, pos) {
181
+ const line = view.state.doc.lineAt(pos);
182
+ const effects = [];
183
+ foldedRanges(view.state).between(line.from, line.to, (from, to) => {
184
+ if (from >= line.from && from <= line.to)
185
+ effects.push(unfoldEffect.of({ from, to }));
186
+ });
187
+ if (effects.length)
188
+ view.dispatch({ effects });
189
+ }
190
+ //# sourceMappingURL=folding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folding.js","sourceRoot":"","sources":["../../../../../../packages/yasqe/src/editor/folding.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQjH,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,SAAS,WAAW,CAAC,MAAuB,EAAE,GAAS,EAAE,GAAa;IACpE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAOD,SAAS,cAAc,CAAC,IAAmB;IACzC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/G,CAAC;AAMD,MAAM,UAAU,cAAc,CAAC,MAAuB,EAAE,GAAS,EAAE,IAAY;IAC7E,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,MAAM,KAAK,GAA+B,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3E,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/E,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,CAAC;YACT,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAG1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK;gBAAE,SAAS;YACxC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAAE,SAAS;YACjF,IAAI,CAAC,KAAK,IAAI;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,IAAI;oBAAE,OAAO;gBACvB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC;AAGD,MAAM,UAAU,eAAe,CAC7B,MAAuB,EACvB,GAAS,EACT,IAAY,EACZ,kBAAkB,GAAG,CAAC;IAEtB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACrF,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAGD,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,GAAS;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,GAAS,EAAE,IAAY;IAE9E,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IACE,GAAG;aACA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;aACX,IAAI,CAAC,WAAW,EAAE;aAClB,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;YAE/B,OAAO;IACX,CAAC;IACD,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO;IAEtC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,EAAE;QAClD,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC/C,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAE,EAAU,EAAU,EAAE;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,cAAc;YAAE,MAAM;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,SAAS,CAAC;YACR,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,cAAc,GAAG,IAAI,CAAC;YACrE,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAC9E,IAAI,qBAAqB,GAAG,CAAC;gBAAE,MAAM;YACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACzD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,aAAa,GAAG,KAAK,CAAC;gBACtB,aAAa,GAAG,CAAC,CAAC;gBAClB,GAAG,GAAG,aAAa,CAAC;YACtB,CAAC;YACD,GAAG,EAAE,CAAC;QACR,CAAC;IACH,CAAC;IACD,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAC3E,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5D,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO;IACvB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,MAAuB,EAAE,GAAS,EAAE,IAAY;IAC/E,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,OAAO;QACL,WAAW,CAAC,EAAE,CAAC,CAAC,KAAkB,EAAE,SAAiB,EAAE,EAAE;YACvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;QAC3D,CAAC,CAAC;QACF,UAAU,CAAC;YACT,SAAS,CAAC,IAAI;gBACZ,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,EAAE,CAAC,SAAS,GAAG,uCAAuC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjF,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpC,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,GAAW;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QAChE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO;IACT,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK;QAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,IAAgB,EAAE,GAAW;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;QACxD,aAAa,GAAG,IAAI,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,aAAa;QAAE,OAAO;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK;QAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAGD,MAAM,UAAU,QAAQ,CAAC,IAAgB,EAAE,GAAW;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;QAChE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { EditorState, Extension } from "@codemirror/state";
2
+ import { EditorView } from "@codemirror/view";
3
+ export type GutterName = "gutterErrorBar" | "gutterConstructWarning";
4
+ export declare const GUTTER_NAMES: GutterName[];
5
+ export declare function markerGutters(): Extension;
6
+ export declare function setGutterMarker(view: EditorView, line: number, name: GutterName, element: HTMLElement | null): void;
7
+ export declare function clearGutter(view: EditorView, name: GutterName): void;
8
+ export declare function getGutterMarkers(state: EditorState, name: GutterName): Map<number, HTMLElement>;