@matdata/yasqe 5.20.2 → 6.0.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 +2210 -2150
  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 +2306 -2237
  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 +2210 -2150
  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,94 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { EditorView } from "@codemirror/view";
11
+ import { autocompletion, completionStatus, completionKeymap, startCompletion, closeCompletion, } from "@codemirror/autocomplete";
12
+ import { keymap } from "@codemirror/view";
13
+ import { Prec } from "@codemirror/state";
14
+ import { posToOffset, offsetToPos } from "./doc";
15
+ export { posToOffset, offsetToPos };
16
+ function hintToCompletion(hint) {
17
+ return {
18
+ label: hint.displayText || hint.text,
19
+ type: hint.className,
20
+ apply: (view, _completion, from, to) => {
21
+ const doc = view.state.doc;
22
+ const replaceFrom = hint.from ? posToOffset(doc, hint.from) : from;
23
+ const replaceTo = hint.to ? posToOffset(doc, hint.to) : to;
24
+ const start = Math.min(replaceFrom, replaceTo);
25
+ const end = Math.max(replaceFrom, replaceTo);
26
+ view.dispatch({
27
+ changes: { from: start, to: end, insert: hint.text },
28
+ selection: { anchor: start + hint.text.length },
29
+ userEvent: "input.complete",
30
+ });
31
+ },
32
+ };
33
+ }
34
+ export function hintListToCompletionResult(hintList, doc) {
35
+ if (!hintList || !hintList.list || hintList.list.length === 0)
36
+ return null;
37
+ const from = posToOffset(doc, hintList.from);
38
+ const to = posToOffset(doc, hintList.to);
39
+ return {
40
+ from: Math.min(from, to),
41
+ to: Math.max(from, to),
42
+ options: hintList.list.map(hintToCompletion),
43
+ filter: false,
44
+ };
45
+ }
46
+ function createCompletionSource(host) {
47
+ return (context) => __awaiter(this, void 0, void 0, function* () {
48
+ const hintFn = host.getHintFn();
49
+ if (!hintFn)
50
+ return null;
51
+ const result = yield hintFn();
52
+ if (!result || context.aborted)
53
+ return null;
54
+ return hintListToCompletionResult(result, context.state.doc);
55
+ });
56
+ }
57
+ export function sparqlAutocompletion(host) {
58
+ const statusListener = EditorView.updateListener.of((update) => {
59
+ var _a, _b;
60
+ const before = completionStatus(update.startState);
61
+ const after = completionStatus(update.state);
62
+ if (before === null && after !== null) {
63
+ (_a = host.onShown) === null || _a === void 0 ? void 0 : _a.call(host, update.view.dom.querySelector(".cm-tooltip-autocomplete"));
64
+ }
65
+ else if (before !== null && after === null) {
66
+ (_b = host.onClose) === null || _b === void 0 ? void 0 : _b.call(host);
67
+ }
68
+ });
69
+ return [
70
+ autocompletion({
71
+ override: [createCompletionSource(host)],
72
+ activateOnTyping: false,
73
+ closeOnBlur: true,
74
+ defaultKeymap: false,
75
+ icons: false,
76
+ maxRenderedOptions: 100000,
77
+ interactionDelay: 0,
78
+ tooltipClass: () => "CodeMirror-hints",
79
+ optionClass: (completion) => (completion.type ? completion.type : ""),
80
+ }),
81
+ Prec.highest(keymap.of(completionKeymap.filter((binding) => binding.key !== "Ctrl-Space"))),
82
+ statusListener,
83
+ ];
84
+ }
85
+ export function isCompletionActive(state) {
86
+ return completionStatus(state) !== null;
87
+ }
88
+ export function openCompletion(view) {
89
+ return startCompletion(view);
90
+ }
91
+ export function hideCompletion(view) {
92
+ return closeCompletion(view);
93
+ }
94
+ //# sourceMappingURL=autocompletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocompletion.js","sourceRoot":"","sources":["../../../../../../packages/yasqe/src/editor/autocompletion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Text } from "@codemirror/state";
2
+ import { EditorView } from "@codemirror/view";
3
+ import { Position } from "./tokenizerRunner";
4
+ export declare function posToOffset(doc: Text, pos: Position): number;
5
+ export declare function offsetToPos(doc: Text, offset: number): Position;
6
+ export interface Selection {
7
+ anchor: Position;
8
+ head: Position;
9
+ }
10
+ export declare class DocFacade {
11
+ private view;
12
+ constructor(view: EditorView);
13
+ private get doc();
14
+ getValue(separator?: string): string;
15
+ setValue(value: string): void;
16
+ getLine(n: number): string;
17
+ lineCount(): number;
18
+ firstLine(): number;
19
+ lastLine(): number;
20
+ indexFromPos(pos: Position): number;
21
+ posFromIndex(index: number): Position;
22
+ getCursor(start?: "from" | "to" | "head" | "anchor" | "start" | "end"): Position;
23
+ setCursor(pos: Position | number, ch?: number): void;
24
+ setSelection(anchor: Position, head?: Position): void;
25
+ listSelections(): Selection[];
26
+ somethingSelected(): boolean;
27
+ getSelection(lineSep?: string): string;
28
+ replaceSelection(text: string, collapse?: "around" | "start" | "end"): void;
29
+ getRange(from: Position, to: Position): string;
30
+ replaceRange(text: string, from: Position, to?: Position): void;
31
+ selectAll(): void;
32
+ }
@@ -0,0 +1,121 @@
1
+ import { EditorSelection } from "@codemirror/state";
2
+ export function posToOffset(doc, pos) {
3
+ if (pos.line < 0)
4
+ return 0;
5
+ if (pos.line >= doc.lines)
6
+ return doc.length;
7
+ const line = doc.line(pos.line + 1);
8
+ return line.from + Math.max(0, Math.min(pos.ch, line.length));
9
+ }
10
+ export function offsetToPos(doc, offset) {
11
+ const clamped = Math.max(0, Math.min(offset, doc.length));
12
+ const line = doc.lineAt(clamped);
13
+ return { line: line.number - 1, ch: clamped - line.from };
14
+ }
15
+ export class DocFacade {
16
+ constructor(view) {
17
+ this.view = view;
18
+ }
19
+ get doc() {
20
+ return this.view.state.doc;
21
+ }
22
+ getValue(separator = "\n") {
23
+ return separator === "\n" ? this.doc.toString() : this.doc.toJSON().join(separator);
24
+ }
25
+ setValue(value) {
26
+ this.view.dispatch({
27
+ changes: { from: 0, to: this.doc.length, insert: value },
28
+ });
29
+ }
30
+ getLine(n) {
31
+ if (n < 0 || n >= this.doc.lines)
32
+ return "";
33
+ return this.doc.line(n + 1).text;
34
+ }
35
+ lineCount() {
36
+ return this.doc.lines;
37
+ }
38
+ firstLine() {
39
+ return 0;
40
+ }
41
+ lastLine() {
42
+ return this.doc.lines - 1;
43
+ }
44
+ indexFromPos(pos) {
45
+ return posToOffset(this.doc, pos);
46
+ }
47
+ posFromIndex(index) {
48
+ return offsetToPos(this.doc, index);
49
+ }
50
+ getCursor(start) {
51
+ const range = this.view.state.selection.main;
52
+ let offset;
53
+ switch (start) {
54
+ case "from":
55
+ case "start":
56
+ offset = range.from;
57
+ break;
58
+ case "to":
59
+ case "end":
60
+ offset = range.to;
61
+ break;
62
+ case "anchor":
63
+ offset = range.anchor;
64
+ break;
65
+ case "head":
66
+ default:
67
+ offset = range.head;
68
+ }
69
+ return offsetToPos(this.doc, offset);
70
+ }
71
+ setCursor(pos, ch) {
72
+ const position = typeof pos === "number" ? { line: pos, ch: ch !== null && ch !== void 0 ? ch : 0 } : pos;
73
+ const offset = posToOffset(this.doc, position);
74
+ this.view.dispatch({ selection: { anchor: offset }, scrollIntoView: true });
75
+ }
76
+ setSelection(anchor, head) {
77
+ const a = posToOffset(this.doc, anchor);
78
+ const h = head ? posToOffset(this.doc, head) : a;
79
+ this.view.dispatch({ selection: { anchor: a, head: h }, scrollIntoView: true });
80
+ }
81
+ listSelections() {
82
+ return this.view.state.selection.ranges.map((r) => ({
83
+ anchor: offsetToPos(this.doc, r.anchor),
84
+ head: offsetToPos(this.doc, r.head),
85
+ }));
86
+ }
87
+ somethingSelected() {
88
+ return this.view.state.selection.ranges.some((r) => !r.empty);
89
+ }
90
+ getSelection(lineSep = "\n") {
91
+ return this.view.state.selection.ranges
92
+ .filter((r) => !r.empty)
93
+ .map((r) => this.doc.sliceString(r.from, r.to))
94
+ .join(lineSep);
95
+ }
96
+ replaceSelection(text, collapse = "end") {
97
+ this.view.dispatch(this.view.state.changeByRange((range) => {
98
+ const end = range.from + text.length;
99
+ let sel;
100
+ if (collapse === "around")
101
+ sel = EditorSelection.range(range.from, end);
102
+ else if (collapse === "start")
103
+ sel = EditorSelection.cursor(range.from);
104
+ else
105
+ sel = EditorSelection.cursor(end);
106
+ return { changes: { from: range.from, to: range.to, insert: text }, range: sel };
107
+ }));
108
+ }
109
+ getRange(from, to) {
110
+ return this.doc.sliceString(posToOffset(this.doc, from), posToOffset(this.doc, to));
111
+ }
112
+ replaceRange(text, from, to) {
113
+ const f = posToOffset(this.doc, from);
114
+ const t = to ? posToOffset(this.doc, to) : f;
115
+ this.view.dispatch({ changes: { from: Math.min(f, t), to: Math.max(f, t), insert: text } });
116
+ }
117
+ selectAll() {
118
+ this.view.dispatch({ selection: { anchor: 0, head: this.doc.length } });
119
+ }
120
+ }
121
+ //# sourceMappingURL=doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../../../../../packages/yasqe/src/editor/doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { Extension } from "@codemirror/state";
2
+ import { EditorView } from "@codemirror/view";
3
+ import { GutterName } from "./gutters";
4
+ import { TokenizerRunner, Token, Position } from "./tokenizerRunner";
5
+ import { ExtraKeys } from "./keymap";
6
+ import { HintFn } from "./autocompletion";
7
+ import { DocFacade } from "./doc";
8
+ export interface EditorOptions {
9
+ mode?: string;
10
+ value?: string;
11
+ lineNumbers?: boolean;
12
+ lineWrapping?: boolean;
13
+ readOnly?: boolean;
14
+ tabSize?: number;
15
+ indentUnit?: number;
16
+ indentWithTabs?: boolean;
17
+ theme?: string;
18
+ extraKeys?: ExtraKeys<any>;
19
+ tabMode?: string;
20
+ foldGutter?: boolean | object;
21
+ gutters?: string[];
22
+ matchBrackets?: boolean;
23
+ highlightSelectionMatches?: boolean | object;
24
+ autoCloseBrackets?: boolean;
25
+ fixedGutter?: boolean;
26
+ placeholder?: string;
27
+ autofocus?: boolean;
28
+ viewportMargin?: number;
29
+ }
30
+ export type EventHandler = (...args: any[]) => void;
31
+ export interface CursorCoords {
32
+ left: number;
33
+ top: number;
34
+ bottom: number;
35
+ }
36
+ export declare abstract class EditorFacade {
37
+ readonly view: EditorView;
38
+ readonly runner: TokenizerRunner;
39
+ protected readonly editorOptions: EditorOptions;
40
+ private readonly doc;
41
+ private readonly eventHandlers;
42
+ private readonly customOptions;
43
+ private readonly compartments;
44
+ constructor(parent: HTMLElement, options: EditorOptions);
45
+ protected abstract getHintFn(): HintFn | undefined;
46
+ private handleUpdate;
47
+ on(eventName: string, handler: EventHandler): void;
48
+ off(eventName: string, handler: EventHandler): void;
49
+ emit(eventName: string, ...data: any[]): void;
50
+ getDoc(): DocFacade;
51
+ getValue(): string;
52
+ setValue(value: string): void;
53
+ getLine(line: number): string;
54
+ lineCount(): number;
55
+ lastLine(): number;
56
+ getCursor(start?: "from" | "to" | "head" | "anchor" | "start" | "end"): Position;
57
+ setCursor(pos: Position | number, ch?: number): void;
58
+ setSelection(anchor: Position, head?: Position): void;
59
+ somethingSelected(): boolean;
60
+ getSelection(): string;
61
+ replaceSelection(text: string, collapse?: "around" | "start" | "end"): void;
62
+ getRange(from: Position, to: Position): string;
63
+ replaceRange(text: string, from: Position, to?: Position): void;
64
+ indexFromPos(pos: Position): number;
65
+ posFromIndex(index: number): Position;
66
+ operation<T>(fn: () => T): T;
67
+ getTokenAt(pos: Position, precise?: boolean): Token;
68
+ getTokenTypeAt(pos: Position): string | null;
69
+ getOption(name: string): any;
70
+ setOption(name: string, value: any): void;
71
+ private setTheme;
72
+ setGutterMarker(line: number, gutterName: GutterName, element: HTMLElement | null): void;
73
+ clearGutter(gutterName: GutterName): void;
74
+ setSyntaxErrorHighlight(from: Position, to: Position): void;
75
+ clearSyntaxErrorHighlight(): void;
76
+ execCommand(command: string): void;
77
+ indentLine(lineNumber: number): void;
78
+ foldCode(line: number | Position): void;
79
+ toggleFold(line: number | Position): void;
80
+ getWrapperElement(): HTMLElement;
81
+ getInputField(): HTMLElement;
82
+ getScrollerElement(): HTMLElement;
83
+ focus(): void;
84
+ hasFocus(): boolean;
85
+ refresh(): void;
86
+ setSize(width: number | string | null, height: number | string | null): void;
87
+ cursorCoords(where?: Position | boolean): CursorCoords;
88
+ coordsChar(coords: {
89
+ left: number;
90
+ top: number;
91
+ }): Position;
92
+ addExtension(extension: Extension): void;
93
+ destroyEditor(): void;
94
+ }