@darajs/components 1.16.5 → 1.16.6-alpha.2

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 (69) hide show
  1. package/dist/dara_components-1.16.6a2-py3-none-any.whl +0 -0
  2. package/dist/index.css +120 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/smart/code-editor.d.ts.map +1 -1
  8. package/dist/smart/code-editor.js +27 -2
  9. package/dist/smart/code-editor.js.map +1 -1
  10. package/dist/smart/index.d.ts +1 -0
  11. package/dist/smart/index.d.ts.map +1 -1
  12. package/dist/smart/index.js +1 -0
  13. package/dist/smart/index.js.map +1 -1
  14. package/dist/smart/ui-code-editor/code-editor.d.ts +118 -0
  15. package/dist/smart/ui-code-editor/code-editor.d.ts.map +1 -0
  16. package/dist/smart/ui-code-editor/code-editor.js +357 -0
  17. package/dist/smart/ui-code-editor/code-editor.js.map +1 -0
  18. package/dist/smart/ui-code-editor/codemirror-context.d.ts +18 -0
  19. package/dist/smart/ui-code-editor/codemirror-context.d.ts.map +1 -0
  20. package/dist/smart/ui-code-editor/codemirror-context.js +10 -0
  21. package/dist/smart/ui-code-editor/codemirror-context.js.map +1 -0
  22. package/dist/smart/ui-code-editor/extensions/argument-hints.d.ts +21 -0
  23. package/dist/smart/ui-code-editor/extensions/argument-hints.d.ts.map +1 -0
  24. package/dist/smart/ui-code-editor/extensions/argument-hints.js +250 -0
  25. package/dist/smart/ui-code-editor/extensions/argument-hints.js.map +1 -0
  26. package/dist/smart/ui-code-editor/extensions/code-folding.d.ts +3 -0
  27. package/dist/smart/ui-code-editor/extensions/code-folding.d.ts.map +1 -0
  28. package/dist/smart/ui-code-editor/extensions/code-folding.js +69 -0
  29. package/dist/smart/ui-code-editor/extensions/code-folding.js.map +1 -0
  30. package/dist/smart/ui-code-editor/extensions/json.d.ts +16 -0
  31. package/dist/smart/ui-code-editor/extensions/json.d.ts.map +1 -0
  32. package/dist/smart/ui-code-editor/extensions/json.js +29 -0
  33. package/dist/smart/ui-code-editor/extensions/json.js.map +1 -0
  34. package/dist/smart/ui-code-editor/extensions/lsp-utils.d.ts +39 -0
  35. package/dist/smart/ui-code-editor/extensions/lsp-utils.d.ts.map +1 -0
  36. package/dist/smart/ui-code-editor/extensions/lsp-utils.js +299 -0
  37. package/dist/smart/ui-code-editor/extensions/lsp-utils.js.map +1 -0
  38. package/dist/smart/ui-code-editor/extensions/markdown.d.ts +13 -0
  39. package/dist/smart/ui-code-editor/extensions/markdown.d.ts.map +1 -0
  40. package/dist/smart/ui-code-editor/extensions/markdown.js +19 -0
  41. package/dist/smart/ui-code-editor/extensions/markdown.js.map +1 -0
  42. package/dist/smart/ui-code-editor/extensions/python.d.ts +15 -0
  43. package/dist/smart/ui-code-editor/extensions/python.d.ts.map +1 -0
  44. package/dist/smart/ui-code-editor/extensions/python.js +21 -0
  45. package/dist/smart/ui-code-editor/extensions/python.js.map +1 -0
  46. package/dist/smart/ui-code-editor/extensions/shared.d.ts +48 -0
  47. package/dist/smart/ui-code-editor/extensions/shared.d.ts.map +1 -0
  48. package/dist/smart/ui-code-editor/extensions/shared.js +166 -0
  49. package/dist/smart/ui-code-editor/extensions/shared.js.map +1 -0
  50. package/dist/smart/ui-code-editor/extensions/sql.d.ts +14 -0
  51. package/dist/smart/ui-code-editor/extensions/sql.d.ts.map +1 -0
  52. package/dist/smart/ui-code-editor/extensions/sql.js +23 -0
  53. package/dist/smart/ui-code-editor/extensions/sql.js.map +1 -0
  54. package/dist/smart/ui-code-editor/index.d.ts +25 -0
  55. package/dist/smart/ui-code-editor/index.d.ts.map +1 -0
  56. package/dist/smart/ui-code-editor/index.js +25 -0
  57. package/dist/smart/ui-code-editor/index.js.map +1 -0
  58. package/dist/smart/ui-code-editor/types.d.ts +65 -0
  59. package/dist/smart/ui-code-editor/types.d.ts.map +1 -0
  60. package/dist/smart/ui-code-editor/types.js +5 -0
  61. package/dist/smart/ui-code-editor/types.js.map +1 -0
  62. package/dist/smart/ui-code-editor/utils.d.ts +16 -0
  63. package/dist/smart/ui-code-editor/utils.d.ts.map +1 -0
  64. package/dist/smart/ui-code-editor/utils.js +33 -0
  65. package/dist/smart/ui-code-editor/utils.js.map +1 -0
  66. package/dist/umd/dara.components.umd.js +35001 -31083
  67. package/dist/umd/style.css +750 -1
  68. package/package.json +28 -15
  69. package/dist/dara_components-1.16.5-py3-none-any.whl +0 -0
@@ -0,0 +1,299 @@
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 { nanoid } from 'nanoid';
11
+ import { CompletionItemKind } from 'vscode-languageserver-types';
12
+ import { LSP_MESSAGE_KIND, isErrorResponse } from '../types';
13
+ const LSP_CODEMIRROR_TYPE_MAP = Object.fromEntries(Object.entries(CompletionItemKind).map(([key, value]) => [value, key]));
14
+ function lspCompletionToCodeMirror(completion) {
15
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
16
+ return {
17
+ label: completion.label,
18
+ detail: ((_b = (_a = completion === null || completion === void 0 ? void 0 : completion.labelDetails) === null || _a === void 0 ? void 0 : _a.detail) !== null && _b !== void 0 ? _b : '') + ((_d = (_c = completion === null || completion === void 0 ? void 0 : completion.labelDetails) === null || _c === void 0 ? void 0 : _c.description) !== null && _d !== void 0 ? _d : ''),
19
+ type: completion.kind ? (_e = LSP_CODEMIRROR_TYPE_MAP[completion.kind]) === null || _e === void 0 ? void 0 : _e.toLowerCase() : undefined,
20
+ apply: (_h = (_g = (_f = completion.textEdit) === null || _f === void 0 ? void 0 : _f.newText) !== null && _g !== void 0 ? _g : completion.insertText) !== null && _h !== void 0 ? _h : completion.label,
21
+ sortText: (_j = completion.sortText) !== null && _j !== void 0 ? _j : completion.label,
22
+ filterText: (_k = completion.filterText) !== null && _k !== void 0 ? _k : completion.label,
23
+ };
24
+ }
25
+ /**
26
+ * Convert a set of characters to a RegExp character set string.
27
+ * For word-like characters, \w is used instead of listing them all.
28
+ *
29
+ * @example
30
+ * // Only word characters
31
+ * toSet(new Set(['a', 'b', 'c', '1', '2', '3']))
32
+ * // Returns: '[\\w]'
33
+ *
34
+ * @example
35
+ * // Mix of word and non-word characters
36
+ * toSet(new Set(['a', 'b', '!', '@', '1', '2']))
37
+ * // Returns: '[\\w!@]'
38
+ *
39
+ * @example
40
+ * // Only non-word characters
41
+ * toSet(new Set(['!', '@', '#', '$']))
42
+ * // Returns: '[!@#$]'
43
+ *
44
+ * @example
45
+ * // Empty set
46
+ * toSet(new Set([]))
47
+ * // Returns: '[]'
48
+ *
49
+ * @example
50
+ * // Set with RegExp special characters
51
+ * toSet(new Set(['[', ']', '-', '^']))
52
+ * // Returns: '[\\[\\]\\-\\^]'
53
+ *
54
+ * @param chars - the set of characters to convert
55
+ * @returns the RegExp character set string
56
+ */
57
+ function toSet(chars) {
58
+ let preamble = '';
59
+ let flat = Array.from(chars).join('');
60
+ // Check if the set contains any word characters (\w in RegExp)
61
+ const words = /\w/.test(flat);
62
+ if (words) {
63
+ // If word characters are present, add \w to the preamble instead of the explicit set
64
+ // This represents all word characters in the set
65
+ preamble += '\\w';
66
+ flat = flat.replace(/\w/g, '');
67
+ }
68
+ // $& in the replacement string means "replace with the matched substring", used here to add an extra backslash
69
+ // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement
70
+ return `[${preamble}${flat.replace(/[^\w\s]/g, '\\$&')}]`;
71
+ }
72
+ /**
73
+ * Generate a RegExp pattern to match the prefix of a completion.
74
+ *
75
+ * Adapted from https://github.com/FurqanSoftware/codemirror-languageserver
76
+ *
77
+ * @param options - the list of completions
78
+ * @returns the RegExp pattern
79
+ */
80
+ function prefixMatch(options) {
81
+ // First character of each completion
82
+ const first = new Set();
83
+ // Rest of the characters of each completion
84
+ const rest = new Set();
85
+ for (const { apply } of options) {
86
+ const [initial, ...restStr] = apply;
87
+ first.add(initial);
88
+ for (const char of restStr) {
89
+ rest.add(char);
90
+ }
91
+ }
92
+ // Create a RegExp source string using the collected characters
93
+ // This pattern will match any number of characters from both sets
94
+ const source = `${toSet(first) + toSet(rest)}*$`;
95
+ return new RegExp(source);
96
+ }
97
+ /** The characters that trigger completion, i.e. if one of those is the last character in the line then completion is triggered */
98
+ const TRIGGER_CHARS = new Set(['.', '[', '"', "'"]);
99
+ /** The regex that matches prior characters that trigger completion */
100
+ const COMPLETION_REGEX = new RegExp(`[a-z_A-Z0-9${[...TRIGGER_CHARS].join('')}]+$`);
101
+ /** The minimum length of a word matching COMPLETION_REGEX to trigger completion */
102
+ const COMPLETION_MIN_LENGTH = 2;
103
+ /**
104
+ * Helper to get LSP completions
105
+ *
106
+ * @param client - the websocket client
107
+ * @param context - the completion context
108
+ * @param uri - the uri of the file
109
+ */
110
+ export function getLspCompletion(client, context, uri) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const linePosInfo = context.state.doc.lineAt(context.pos);
113
+ const ch = context.pos - linePosInfo.from;
114
+ const id = nanoid();
115
+ const lastChar = linePosInfo.text.charAt(ch - 1);
116
+ let canComplete = false;
117
+ // complete if a trigger char is the last one
118
+ if (TRIGGER_CHARS.has(lastChar)) {
119
+ canComplete = true;
120
+ }
121
+ else {
122
+ // only complete if user has typed a matching sequence of at least MIN_LENGTH
123
+ const wordMatch = linePosInfo.text.slice(0, ch).match(COMPLETION_REGEX);
124
+ canComplete = wordMatch !== null && wordMatch[0].length >= COMPLETION_MIN_LENGTH;
125
+ }
126
+ if (!canComplete) {
127
+ return null;
128
+ }
129
+ const msg = yield (client === null || client === void 0 ? void 0 : client.sendCustomMessage(LSP_MESSAGE_KIND, {
130
+ method: 'textDocument/completion',
131
+ id,
132
+ uri,
133
+ params: {
134
+ line: linePosInfo.number - 1,
135
+ character: ch,
136
+ },
137
+ }, true));
138
+ if (!msg) {
139
+ return null;
140
+ }
141
+ const data = msg.message.data;
142
+ if (isErrorResponse(data)) {
143
+ return null;
144
+ }
145
+ /**
146
+ * Whether all returned completions are files.
147
+ * This can occur in completions e.g. within open() or os.path.join()
148
+ */
149
+ let allFiles = true;
150
+ let options = data.items.map((item) => {
151
+ const completion = lspCompletionToCodeMirror(item);
152
+ if (completion.type !== 'file') {
153
+ allFiles = false;
154
+ }
155
+ return completion;
156
+ });
157
+ // build a regex to match the prefix of the completion
158
+ const match = prefixMatch(options);
159
+ // find the current word being typed
160
+ const token = context.matchBefore(match);
161
+ let from = context.pos;
162
+ // if the token is found
163
+ if (token) {
164
+ const word = token.text;
165
+ // if we're in file-matching mode
166
+ if (allFiles) {
167
+ // Find the position of the last path separator
168
+ const lastSeparatorIndex = Math.max(word.lastIndexOf('/'), word.lastIndexOf('\\'));
169
+ if (lastSeparatorIndex !== -1) {
170
+ // Adjust pos to the position after the last separator
171
+ from = token.from + lastSeparatorIndex + 1;
172
+ }
173
+ else {
174
+ // If no separator found, use the start of the token
175
+ from = token.from;
176
+ }
177
+ // Extract the last segment of the path for filtering
178
+ const lastSegment = word.slice(lastSeparatorIndex + 1).toLowerCase();
179
+ options = options
180
+ .filter(({ filterText }) => filterText.toLowerCase().includes(lastSegment))
181
+ .sort((a, b) => a.filterText.toLowerCase().indexOf(lastSegment) -
182
+ b.filterText.toLowerCase().indexOf(lastSegment));
183
+ }
184
+ else {
185
+ // update the from position to the start of the word
186
+ from = token.from;
187
+ const lowerWord = token.text.toLowerCase();
188
+ if (/^\w+$/.test(lowerWord)) {
189
+ options = options
190
+ .filter(({ filterText }) => filterText.toLowerCase().startsWith(lowerWord))
191
+ .sort(({ apply: a }, { apply: b }) => {
192
+ if (a.startsWith(token.text) && !b.startsWith(token.text)) {
193
+ return -1;
194
+ }
195
+ if (!a.startsWith(token.text) && b.startsWith(token.text)) {
196
+ return 1;
197
+ }
198
+ return 0;
199
+ });
200
+ }
201
+ }
202
+ }
203
+ return {
204
+ from,
205
+ options,
206
+ };
207
+ });
208
+ }
209
+ /**
210
+ * Helper to send hover request to backend
211
+ *
212
+ * @param client - the websocket client
213
+ * @param uri - the uri of the file
214
+ * @param line - the line number
215
+ * @param ch - the character number
216
+ */
217
+ export function getLspInspection(client, uri, line, ch) {
218
+ return __awaiter(this, void 0, void 0, function* () {
219
+ const id = nanoid();
220
+ const msg = yield (client === null || client === void 0 ? void 0 : client.sendCustomMessage(LSP_MESSAGE_KIND, {
221
+ method: 'textDocument/hover',
222
+ id,
223
+ uri,
224
+ params: {
225
+ line,
226
+ character: ch,
227
+ },
228
+ }, true));
229
+ if (!msg) {
230
+ return null;
231
+ }
232
+ const data = msg.message.data;
233
+ if (isErrorResponse(data)) {
234
+ return null;
235
+ }
236
+ return data;
237
+ });
238
+ }
239
+ /**
240
+ * Helper to get definition from LSP server
241
+ *
242
+ * @param client - the websocket client
243
+ * @param uri - the uri of the file
244
+ * @param line - the line number
245
+ * @param ch - the character number
246
+ */
247
+ export function getLspDefinition(client, uri, line, ch) {
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ const id = nanoid();
250
+ const msg = yield client.sendCustomMessage(LSP_MESSAGE_KIND, {
251
+ method: 'textDocument/definition',
252
+ id,
253
+ uri,
254
+ params: {
255
+ line,
256
+ character: ch,
257
+ },
258
+ }, true);
259
+ if (!msg) {
260
+ return null;
261
+ }
262
+ const data = msg.message.data;
263
+ if (isErrorResponse(data)) {
264
+ return null;
265
+ }
266
+ return data;
267
+ });
268
+ }
269
+ /**
270
+ * Helper function to get signature help from LSP server
271
+ *
272
+ * @param client - the websocket client
273
+ * @param uri - the uri of the file
274
+ * @param line - the line number
275
+ * @param ch - the character number
276
+ */
277
+ export function getLspSignatureHelp(client, uri, line, ch) {
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ const id = nanoid();
280
+ const msg = yield client.sendCustomMessage(LSP_MESSAGE_KIND, {
281
+ method: 'textDocument/signatureHelp',
282
+ id,
283
+ uri,
284
+ params: {
285
+ line,
286
+ character: ch,
287
+ },
288
+ }, true);
289
+ if (!msg) {
290
+ return null;
291
+ }
292
+ const data = msg.message.data;
293
+ if (isErrorResponse(data)) {
294
+ return null;
295
+ }
296
+ return data.signature;
297
+ });
298
+ }
299
+ //# sourceMappingURL=lsp-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-utils.js","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/lsp-utils.tsx"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAuB,kBAAkB,EAAsB,MAAM,6BAA6B,CAAC;AAU1G,OAAO,EAAiB,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE5E,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAC9C,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CACnC,CAAC;AAExC,SAAS,yBAAyB,CAAC,UAA0B;;IAKzD,OAAO;QACH,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,CAAC,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,0CAAE,MAAM,mCAAI,EAAE,CAAC,GAAG,CAAC,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,0CAAE,WAAW,mCAAI,EAAE,CAAC;QAChG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAA,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,0CAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3F,KAAK,EAAE,MAAA,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,OAAO,mCAAI,UAAU,CAAC,UAAU,mCAAI,UAAU,CAAC,KAAK;QAChF,QAAQ,EAAE,MAAA,UAAU,CAAC,QAAQ,mCAAI,UAAU,CAAC,KAAK;QACjD,UAAU,EAAE,MAAA,UAAU,CAAC,UAAU,mCAAI,UAAU,CAAC,KAAK;KACxD,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAS,KAAK,CAAC,KAAkB;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtC,+DAA+D;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9B,IAAI,KAAK,EAAE,CAAC;QACR,qFAAqF;QACrF,iDAAiD;QACjD,QAAQ,IAAI,KAAK,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,+GAA+G;IAC/G,8IAA8I;IAC9I,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,OAAqB;IACtC,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,4CAA4C;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,KAAe,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,kEAAkE;IAClE,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACjD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,kIAAkI;AAClI,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpD,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACpF,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,UAAgB,gBAAgB,CAClC,MAAgB,EAChB,OAA0B,EAC1B,GAAW;;QAEX,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE1D,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC;QAC1C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAEpB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAEjD,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,6CAA6C;QAC7C,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,WAAW,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,6EAA6E;YAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACxE,WAAW,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,qBAAqB,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,CACvC,gBAAgB,EAChB;YACI,MAAM,EAAE,yBAAyB;YACjC,EAAE;YACF,GAAG;YACH,MAAM,EAAE;gBACJ,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC5B,SAAS,EAAE,EAAE;aAChB;SACiB,EACtB,IAAI,CACP,CAAA,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAA6C,CAAC;QAEvE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED;;;WAGG;QACH,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAEnD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,QAAQ,GAAG,KAAK,CAAC;YACrB,CAAC;YAED,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,sDAAsD;QACtD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,oCAAoC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;QAEvB,wBAAwB;QACxB,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAExB,iCAAiC;YACjC,IAAI,QAAQ,EAAE,CAAC;gBACX,+CAA+C;gBAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEnF,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC5B,sDAAsD;oBACtD,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,kBAAkB,GAAG,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACJ,oDAAoD;oBACpD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBACtB,CAAC;gBAED,qDAAqD;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAErE,OAAO,GAAG,OAAO;qBACZ,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;qBAC1E,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC/C,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CACtD,CAAC;YACV,CAAC;iBAAM,CAAC;gBACJ,oDAAoD;gBACpD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAClB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAE3C,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1B,OAAO,GAAG,OAAO;yBACZ,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;yBAC1E,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;wBACjC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxD,OAAO,CAAC,CAAC,CAAC;wBACd,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxD,OAAO,CAAC,CAAC;wBACb,CAAC;wBACD,OAAO,CAAC,CAAC;oBACb,CAAC,CAAC,CAAC;gBACX,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO;YACH,IAAI;YACJ,OAAO;SACV,CAAC;IACN,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAgB,gBAAgB,CAClC,MAAgB,EAChB,GAAW,EACX,IAAY,EACZ,EAAU;;QAEV,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,CACvC,gBAAgB,EAChB;YACI,MAAM,EAAE,oBAAoB;YAC5B,EAAE;YACF,GAAG;YACH,MAAM,EAAE;gBACJ,IAAI;gBACJ,SAAS,EAAE,EAAE;aAChB;SACiB,EACtB,IAAI,CACP,CAAA,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAwC,CAAC;QAElE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAgB,gBAAgB,CAClC,MAAgB,EAChB,GAAW,EACX,IAAY,EACZ,EAAU;;QAEV,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CACtC,gBAAgB,EAChB;YACI,MAAM,EAAE,yBAAyB;YACjC,EAAE;YACF,GAAG;YACH,MAAM,EAAE;gBACJ,IAAI;gBACJ,SAAS,EAAE,EAAE;aAChB;SACU,EACf,IAAI,CACP,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAA6C,CAAC;QAEvE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAgB,mBAAmB,CACrC,MAAgB,EAChB,GAAW,EACX,IAAY,EACZ,EAAU;;QAEV,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CACtC,gBAAgB,EAChB;YACI,MAAM,EAAE,4BAA4B;YACpC,EAAE;YACF,GAAG;YACH,MAAM,EAAE;gBACJ,IAAI;gBACJ,SAAS,EAAE,EAAE;aAChB;SACU,EACf,IAAI,CACP,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAgD,CAAC;QAE1E,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { Extension } from '@codemirror/state';
2
+ /**
3
+ * Get the extensions for markdown
4
+ * Currently includes:
5
+ * - highlightActiveLine
6
+ * - highlightActiveLineGutter
7
+ * - markdownExtension
8
+ * - EditorView.lineWrapping
9
+ *
10
+ * @returns - an array of extensions for markdown
11
+ */
12
+ export declare const getMarkdownExtensions: () => Extension[];
13
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/markdown.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,QAAO,SAAS,EAKjD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { markdown as markdownExtension, markdownLanguage } from '@codemirror/lang-markdown';
2
+ import { EditorView, highlightActiveLine, highlightActiveLineGutter } from '@codemirror/view';
3
+ /**
4
+ * Get the extensions for markdown
5
+ * Currently includes:
6
+ * - highlightActiveLine
7
+ * - highlightActiveLineGutter
8
+ * - markdownExtension
9
+ * - EditorView.lineWrapping
10
+ *
11
+ * @returns - an array of extensions for markdown
12
+ */
13
+ export const getMarkdownExtensions = () => [
14
+ highlightActiveLine(),
15
+ highlightActiveLineGutter(),
16
+ EditorView.lineWrapping,
17
+ markdownExtension({ base: markdownLanguage }),
18
+ ];
19
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAgB,EAAE,CAAC;IACpD,mBAAmB,EAAE;IACrB,yBAAyB,EAAE;IAC3B,UAAU,CAAC,YAAY;IACvB,iBAAiB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;CAChD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Extension } from '@codemirror/state';
2
+ /**
3
+ * Get the extensions for Python
4
+ * Currently includes:
5
+ * - lineNumbers
6
+ * - python
7
+ * - pythonLanguage
8
+ * - bracketMatching
9
+ * - closeBrackets
10
+ * - codeFoldingExtensions
11
+ *
12
+ * @returns - an array of extensions for Python
13
+ */
14
+ export declare const getPythonExtensions: () => Extension[];
15
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/python.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,QAAO,SAAS,EAE/C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { closeBrackets } from '@codemirror/autocomplete';
2
+ import { python, pythonLanguage } from '@codemirror/lang-python';
3
+ import { bracketMatching } from '@codemirror/language';
4
+ import { lineNumbers } from '@codemirror/view';
5
+ import { codeFoldingExtensions } from './code-folding';
6
+ /**
7
+ * Get the extensions for Python
8
+ * Currently includes:
9
+ * - lineNumbers
10
+ * - python
11
+ * - pythonLanguage
12
+ * - bracketMatching
13
+ * - closeBrackets
14
+ * - codeFoldingExtensions
15
+ *
16
+ * @returns - an array of extensions for Python
17
+ */
18
+ export const getPythonExtensions = () => {
19
+ return [lineNumbers(), python(), pythonLanguage, bracketMatching(), closeBrackets(), codeFoldingExtensions()];
20
+ };
21
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/python.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAgB,EAAE;IACjD,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAClH,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { Extension } from '@codemirror/state';
2
+ import { EditorView } from '@codemirror/view';
3
+ export type LangsType = 'json' | 'markdown' | 'python';
4
+ export type NonPythonLangsType = Exclude<LangsType, 'python'>;
5
+ export type ThemeType = 'light' | 'dark';
6
+ /**
7
+ * Helper function to get a selection range matching the currently hovered element as well as the nodeType of that element.
8
+ *
9
+ * @param view - the editor view
10
+ * @param event - the mouse event triggering this query
11
+ * @returns - a tuple of [from: number, to: number, nodeType: strin]
12
+ */
13
+ export declare function getHoveredElement(view: EditorView, event: MouseEvent): [from: number, to: number, nodeType: string];
14
+ /**
15
+ * Extension to handle the logic for jumping to definition.
16
+ * Adds underline decorations to clickable elements and invokes provided callback on click.
17
+ *
18
+ * @param callback - the callback to handle the jump to definition
19
+ */
20
+ export declare function goToDefinitionExtension(callback: (ch: number, line: number) => void): Extension;
21
+ export declare const acceptCompletionKeymap: {
22
+ key: string;
23
+ run: (target: any) => boolean;
24
+ win: string;
25
+ };
26
+ /**
27
+ * Get the default codemirror editor extensions.
28
+ * Currently includes:
29
+ * - multiple selections
30
+ * - tab size of 4
31
+ * - indent unit of 4 spaces
32
+ * - rectangular selection
33
+ * - draw selection
34
+ * - crosshair cursor
35
+ * - default keymap
36
+ * - search keymap
37
+ * - indent with tab keymap
38
+ *
39
+ * @returns The default editor extensions
40
+ */
41
+ export declare const getDefaultExtensions: (themeType: ThemeType) => Extension[];
42
+ /**
43
+ * Format a file path into an LSP URI string.
44
+ * This is the format expected by the backend convention. Also supports a cell-based notebook
45
+ * system with a #cellId appended to the URI.
46
+ */
47
+ export declare function formatUri(filePath: string, cellId?: string): string;
48
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/shared.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAc,UAAU,EAAgE,MAAM,kBAAkB,CAAC;AAExH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CA2BnH;AAsCD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CA8B/F;AAED,eAAO,MAAM,sBAAsB;;kBAEjB,GAAG;;CAEpB,CAAC;AAaF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,cAAe,SAAS,KAAG,SAAS,EAcpE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnE"}
@@ -0,0 +1,166 @@
1
+ import { acceptCompletion } from '@codemirror/autocomplete';
2
+ import { defaultKeymap, indentWithTab, toggleComment } from '@codemirror/commands';
3
+ import { defaultHighlightStyle, indentUnit, syntaxHighlighting, syntaxTree } from '@codemirror/language';
4
+ import { highlightSelectionMatches, searchKeymap } from '@codemirror/search';
5
+ import { EditorState, Prec, StateEffect, StateField, findClusterBreak } from '@codemirror/state';
6
+ import { oneDarkHighlightStyle, oneDarkTheme } from '@codemirror/theme-one-dark';
7
+ import { Decoration, EditorView, crosshairCursor, drawSelection, keymap, rectangularSelection } from '@codemirror/view';
8
+ /**
9
+ * Helper function to get a selection range matching the currently hovered element as well as the nodeType of that element.
10
+ *
11
+ * @param view - the editor view
12
+ * @param event - the mouse event triggering this query
13
+ * @returns - a tuple of [from: number, to: number, nodeType: strin]
14
+ */
15
+ export function getHoveredElement(view, event) {
16
+ const position = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);
17
+ const line = view.state.doc.lineAt(position);
18
+ const linePos = position - line.from;
19
+ let to = findClusterBreak(line.text, linePos);
20
+ let from = findClusterBreak(line.text, linePos, false);
21
+ const categorize = view.state.charCategorizer(position);
22
+ const cat = categorize(line.text.slice(from, to));
23
+ while (from > 0) {
24
+ const prev = findClusterBreak(line.text, from, false);
25
+ if (categorize(line.text.slice(prev, from)) !== cat) {
26
+ break;
27
+ }
28
+ from = prev;
29
+ }
30
+ while (to < line.length) {
31
+ const next = findClusterBreak(line.text, to);
32
+ if (categorize(line.text.slice(to, next)) !== cat) {
33
+ break;
34
+ }
35
+ to = next;
36
+ }
37
+ const nodeType = syntaxTree(view.state).resolve(line.from + from).type.name;
38
+ return [line.from + from, line.from + to, nodeType];
39
+ }
40
+ // This whitelist represents the types of nodes that have a definition to jump to. It will likely need refining with
41
+ // time and a better lezer would make this much more robust.
42
+ const jumpToDefWhitelist = new Set(['ArgList', 'VariableName', 'AssignStatement', 'MemberExpression', 'ParamList']);
43
+ // The following StateEffects and StateField manage the presence of the plain underline decoration for hovering
44
+ // clickable elements
45
+ const addUnderline = StateEffect.define({
46
+ map: ({ from, to }, change) => ({ from: change.mapPos(from), to: change.mapPos(to) }),
47
+ });
48
+ const removeUnderline = StateEffect.define();
49
+ const underlineMark = Decoration.mark({ class: 'cm-underline' });
50
+ const underlineField = StateField.define({
51
+ create() {
52
+ return Decoration.none;
53
+ },
54
+ provide: (f) => EditorView.decorations.from(f),
55
+ update(underlines, tr) {
56
+ let mappedUnderlines = underlines.map(tr.changes);
57
+ for (const e of tr.effects) {
58
+ if (e.is(addUnderline)) {
59
+ mappedUnderlines = underlines.update({
60
+ add: [underlineMark.range(e.value.from, e.value.to)],
61
+ filter: (from, to) => from === e.value.from && to === e.value.to,
62
+ });
63
+ }
64
+ if (e.is(removeUnderline)) {
65
+ return Decoration.none;
66
+ }
67
+ }
68
+ return mappedUnderlines;
69
+ },
70
+ });
71
+ /**
72
+ * Extension to handle the logic for jumping to definition.
73
+ * Adds underline decorations to clickable elements and invokes provided callback on click.
74
+ *
75
+ * @param callback - the callback to handle the jump to definition
76
+ */
77
+ export function goToDefinitionExtension(callback) {
78
+ return [
79
+ EditorView.domEventHandlers({
80
+ mousemove: (event, view) => {
81
+ if (event.metaKey || event.ctrlKey) {
82
+ const [from, to, nodeType] = getHoveredElement(view, event);
83
+ if (jumpToDefWhitelist.has(nodeType)) {
84
+ const effects = [addUnderline.of({ from, to }), StateEffect.appendConfig.of([underlineField])];
85
+ view.dispatch({ effects });
86
+ }
87
+ else {
88
+ const effects = [removeUnderline.of(null), StateEffect.appendConfig.of([underlineField])];
89
+ view.dispatch({ effects });
90
+ }
91
+ }
92
+ else {
93
+ const effects = [removeUnderline.of(null), StateEffect.appendConfig.of([underlineField])];
94
+ view.dispatch({ effects });
95
+ }
96
+ },
97
+ }),
98
+ EditorView.mouseSelectionStyle.of((view, event) => {
99
+ if (event.metaKey || event.ctrlKey) {
100
+ const position = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);
101
+ const line = view.state.doc.lineAt(position);
102
+ const linePos = position - line.from;
103
+ callback(linePos - 1, line.number - 1);
104
+ }
105
+ return null;
106
+ }),
107
+ ];
108
+ }
109
+ export const acceptCompletionKeymap = {
110
+ key: 'Tab',
111
+ run: (target) => acceptCompletion(target),
112
+ win: 'Tab',
113
+ };
114
+ // Localization Overrides
115
+ const localizationKeymap = [
116
+ // Overrides for German Keyboards
117
+ {
118
+ key: 'Ctrl-Shift-7',
119
+ preventDefault: false,
120
+ run: toggleComment,
121
+ stopPropagation: false,
122
+ },
123
+ ];
124
+ /**
125
+ * Get the default codemirror editor extensions.
126
+ * Currently includes:
127
+ * - multiple selections
128
+ * - tab size of 4
129
+ * - indent unit of 4 spaces
130
+ * - rectangular selection
131
+ * - draw selection
132
+ * - crosshair cursor
133
+ * - default keymap
134
+ * - search keymap
135
+ * - indent with tab keymap
136
+ *
137
+ * @returns The default editor extensions
138
+ */
139
+ export const getDefaultExtensions = (themeType) => {
140
+ return [
141
+ EditorState.allowMultipleSelections.of(true),
142
+ EditorState.tabSize.of(4),
143
+ indentUnit.of(' '.repeat(4)),
144
+ rectangularSelection(),
145
+ drawSelection(),
146
+ crosshairCursor(),
147
+ highlightSelectionMatches(),
148
+ keymap.of([...defaultKeymap, ...searchKeymap, ...localizationKeymap, indentWithTab]),
149
+ Prec.highest(keymap.of([acceptCompletionKeymap])),
150
+ themeType === 'dark' ? oneDarkTheme : EditorView.baseTheme({}),
151
+ syntaxHighlighting(themeType === 'dark' ? oneDarkHighlightStyle : defaultHighlightStyle),
152
+ ];
153
+ };
154
+ /**
155
+ * Format a file path into an LSP URI string.
156
+ * This is the format expected by the backend convention. Also supports a cell-based notebook
157
+ * system with a #cellId appended to the URI.
158
+ */
159
+ export function formatUri(filePath, cellId) {
160
+ const base = `file:///${filePath}`;
161
+ if (cellId) {
162
+ return `${base}#${cellId}`;
163
+ }
164
+ return base;
165
+ }
166
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/shared.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Extension } from '@codemirror/state';
2
+ /**
3
+ * Get the extensions for SQL
4
+ * Currently includes:
5
+ * - lineNumbers
6
+ * - sql
7
+ * - StandardSQL
8
+ * - bracketMatching
9
+ * - closeBrackets
10
+ *
11
+ * @returns - an array of extensions for SQL
12
+ */
13
+ export declare const getSQLExtensions: () => Extension[];
14
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../../js/smart/ui-code-editor/extensions/sql.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,QAAO,SAAS,EAM5C,CAAC"}