@dxos/react-ui-editor 0.8.3-main.672df60 → 0.8.3-main.7f5a14c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +868 -260
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +911 -297
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +868 -260
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/EditorToolbar/util.d.ts +2 -2
- package/dist/types/src/components/Popover/CommandMenu.d.ts +34 -0
- package/dist/types/src/components/Popover/CommandMenu.d.ts.map +1 -0
- package/dist/types/src/components/Popover/RefPopover.d.ts +19 -6
- package/dist/types/src/components/Popover/RefPopover.d.ts.map +1 -1
- package/dist/types/src/components/Popover/index.d.ts +1 -0
- package/dist/types/src/components/Popover/index.d.ts.map +1 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/command/menu.d.ts +40 -0
- package/dist/types/src/extensions/command/menu.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts +1 -0
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +1 -0
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/placeholder.d.ts +4 -0
- package/dist/types/src/extensions/placeholder.d.ts.map +1 -0
- package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts +8 -9
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/stories/CommandMenu.stories.d.ts +12 -0
- package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -0
- package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
- package/package.json +31 -28
- package/src/components/Popover/CommandMenu.tsx +279 -0
- package/src/components/Popover/RefPopover.tsx +44 -22
- package/src/components/Popover/index.ts +1 -0
- package/src/defaults.ts +1 -0
- package/src/extensions/command/menu.ts +306 -4
- package/src/extensions/factories.ts +4 -1
- package/src/extensions/index.ts +1 -0
- package/src/extensions/outliner/outliner.ts +0 -3
- package/src/extensions/placeholder.ts +82 -0
- package/src/extensions/preview/preview.ts +3 -6
- package/src/hooks/useTextEditor.ts +11 -12
- package/src/stories/CommandMenu.stories.tsx +143 -0
- package/src/stories/Preview.stories.tsx +32 -30
package/dist/lib/node/index.cjs
CHANGED
@@ -28,6 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
29
|
var node_exports = {};
|
30
30
|
__export(node_exports, {
|
31
|
+
CommandMenu: () => CommandMenu,
|
31
32
|
Cursor: () => Cursor,
|
32
33
|
EditorInputMode: () => EditorInputMode,
|
33
34
|
EditorInputModes: () => EditorInputModes,
|
@@ -39,6 +40,7 @@ __export(node_exports, {
|
|
39
40
|
Inline: () => Inline,
|
40
41
|
InputModeExtensions: () => InputModeExtensions,
|
41
42
|
List: () => List,
|
43
|
+
PreviewProvider: () => PreviewProvider,
|
42
44
|
RefDropdownMenu: () => RefDropdownMenu,
|
43
45
|
RefPopover: () => RefPopover,
|
44
46
|
RemoteSelectionsDecorator: () => RemoteSelectionsDecorator,
|
@@ -62,11 +64,14 @@ __export(node_exports, {
|
|
62
64
|
closeEffect: () => closeEffect,
|
63
65
|
command: () => command,
|
64
66
|
commandKeyBindings: () => commandKeyBindings,
|
67
|
+
commandMenu: () => commandMenu,
|
68
|
+
commandRangeEffect: () => commandRangeEffect,
|
65
69
|
commands: () => commands,
|
66
70
|
commentClickedEffect: () => commentClickedEffect,
|
67
71
|
comments: () => comments,
|
68
72
|
commentsState: () => commentsState,
|
69
73
|
convertTreeToJson: () => convertTreeToJson,
|
74
|
+
coreSlashCommands: () => coreSlashCommands,
|
70
75
|
createBasicExtensions: () => createBasicExtensions,
|
71
76
|
createComment: () => createComment,
|
72
77
|
createDataExtensions: () => createDataExtensions,
|
@@ -94,6 +99,7 @@ __export(node_exports, {
|
|
94
99
|
editorSlots: () => editorSlots,
|
95
100
|
editorWidth: () => editorWidth,
|
96
101
|
editorWithToolbarLayout: () => editorWithToolbarLayout,
|
102
|
+
filterItems: () => filterItems,
|
97
103
|
flattenRect: () => flattenRect,
|
98
104
|
floatingMenu: () => floatingMenu,
|
99
105
|
focus: () => focus,
|
@@ -102,15 +108,21 @@ __export(node_exports, {
|
|
102
108
|
formattingEquals: () => formattingEquals,
|
103
109
|
formattingKeymap: () => formattingKeymap,
|
104
110
|
getFormatting: () => getFormatting,
|
111
|
+
getItem: () => getItem,
|
105
112
|
getListItemContent: () => getListItemContent,
|
113
|
+
getNextItem: () => getNextItem,
|
114
|
+
getPreviousItem: () => getPreviousItem,
|
106
115
|
getRange: () => getRange,
|
107
116
|
hashtag: () => hashtag,
|
108
117
|
image: () => image,
|
109
118
|
indentItemLess: () => indentItemLess,
|
110
119
|
indentItemMore: () => indentItemMore,
|
120
|
+
insertAtCursor: () => insertAtCursor,
|
121
|
+
insertAtLineStart: () => insertAtLineStart,
|
111
122
|
insertTable: () => insertTable,
|
112
123
|
itemToJSON: () => itemToJSON,
|
113
124
|
keymap: () => import_view.keymap,
|
125
|
+
linkSlashCommands: () => linkSlashCommands,
|
114
126
|
linkTooltip: () => linkTooltip,
|
115
127
|
listItemToString: () => listItemToString,
|
116
128
|
listener: () => listener,
|
@@ -122,6 +134,7 @@ __export(node_exports, {
|
|
122
134
|
mention: () => mention,
|
123
135
|
moveItemDown: () => moveItemDown,
|
124
136
|
moveItemUp: () => moveItemUp,
|
137
|
+
multilinePlaceholder: () => multilinePlaceholder,
|
125
138
|
openCommand: () => openCommand,
|
126
139
|
openEffect: () => openEffect,
|
127
140
|
outliner: () => outliner,
|
@@ -164,6 +177,7 @@ __export(node_exports, {
|
|
164
177
|
treeFacet: () => treeFacet,
|
165
178
|
typeahead: () => typeahead,
|
166
179
|
typewriter: () => typewriter,
|
180
|
+
useCommandMenu: () => useCommandMenu,
|
167
181
|
useComments: () => useComments,
|
168
182
|
useEditorToolbarState: () => useEditorToolbarState,
|
169
183
|
useFormattingState: () => useFormattingState,
|
@@ -224,133 +238,139 @@ var import_view7 = require("@codemirror/view");
|
|
224
238
|
var import_view8 = require("@codemirror/view");
|
225
239
|
var import_state10 = require("@codemirror/state");
|
226
240
|
var import_view9 = require("@codemirror/view");
|
241
|
+
var import_state11 = require("@codemirror/state");
|
227
242
|
var import_view10 = require("@codemirror/view");
|
243
|
+
var import_react4 = require("react");
|
228
244
|
var import_async3 = require("@dxos/async");
|
229
|
-
var import_state11 = require("@codemirror/state");
|
230
245
|
var import_view11 = require("@codemirror/view");
|
231
|
-
var import_commands = require("@codemirror/commands");
|
232
246
|
var import_state12 = require("@codemirror/state");
|
233
247
|
var import_view12 = require("@codemirror/view");
|
248
|
+
var import_commands = require("@codemirror/commands");
|
249
|
+
var import_state13 = require("@codemirror/state");
|
250
|
+
var import_view13 = require("@codemirror/view");
|
234
251
|
var import_lodash2 = __toESM(require("lodash.sortby"));
|
235
|
-
var
|
252
|
+
var import_react5 = require("react");
|
236
253
|
var import_async4 = require("@dxos/async");
|
237
254
|
var import_log4 = require("@dxos/log");
|
238
255
|
var import_util = require("@dxos/util");
|
239
|
-
var
|
240
|
-
var
|
256
|
+
var import_state14 = require("@codemirror/state");
|
257
|
+
var import_view14 = require("@codemirror/view");
|
241
258
|
var import_async5 = require("@dxos/async");
|
242
259
|
var import_invariant3 = require("@dxos/invariant");
|
243
260
|
var import_util2 = require("@dxos/util");
|
244
261
|
var import_language = require("@codemirror/language");
|
245
|
-
var
|
246
|
-
var
|
262
|
+
var import_state15 = require("@codemirror/state");
|
263
|
+
var import_view15 = require("@codemirror/view");
|
247
264
|
var import_autocomplete2 = require("@codemirror/autocomplete");
|
248
265
|
var import_commands2 = require("@codemirror/commands");
|
249
266
|
var import_language2 = require("@codemirror/language");
|
250
267
|
var import_search = require("@codemirror/search");
|
251
|
-
var
|
268
|
+
var import_state16 = require("@codemirror/state");
|
252
269
|
var import_theme_one_dark = require("@codemirror/theme-one-dark");
|
253
|
-
var
|
270
|
+
var import_view16 = require("@codemirror/view");
|
254
271
|
var import_lodash3 = __toESM(require("lodash.defaultsdeep"));
|
255
272
|
var import_lodash4 = __toESM(require("lodash.merge"));
|
256
273
|
var import_display_name = require("@dxos/display-name");
|
257
274
|
var import_log5 = require("@dxos/log");
|
258
275
|
var import_util3 = require("@dxos/util");
|
259
|
-
var
|
260
|
-
var
|
276
|
+
var import_state17 = require("@codemirror/state");
|
277
|
+
var import_view17 = require("@codemirror/view");
|
278
|
+
var import_view18 = require("@codemirror/view");
|
261
279
|
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
262
280
|
var import_react_ui_theme4 = require("@dxos/react-ui-theme");
|
281
|
+
var import_react_ui_theme5 = require("@dxos/react-ui-theme");
|
263
282
|
var import_util4 = require("@dxos/util");
|
264
283
|
var import_language3 = require("@codemirror/language");
|
265
|
-
var
|
266
|
-
var
|
284
|
+
var import_view19 = require("@codemirror/view");
|
285
|
+
var import_react6 = __toESM(require("react"));
|
267
286
|
var import_react_ui3 = require("@dxos/react-ui");
|
268
|
-
var
|
269
|
-
var
|
287
|
+
var import_view20 = require("@codemirror/view");
|
288
|
+
var import_react_ui_theme6 = require("@dxos/react-ui-theme");
|
270
289
|
var import_lang_json = require("@codemirror/lang-json");
|
271
290
|
var import_lint = require("@codemirror/lint");
|
272
291
|
var import_ajv = __toESM(require("ajv"));
|
273
|
-
var
|
292
|
+
var import_view21 = require("@codemirror/view");
|
274
293
|
var import_autocomplete3 = require("@codemirror/autocomplete");
|
275
294
|
var import_language4 = require("@codemirror/language");
|
276
|
-
var
|
277
|
-
var
|
278
|
-
var
|
295
|
+
var import_state18 = require("@codemirror/state");
|
296
|
+
var import_view22 = require("@codemirror/view");
|
297
|
+
var import_react7 = require("react");
|
279
298
|
var import_autocomplete4 = require("@codemirror/autocomplete");
|
280
299
|
var import_commands3 = require("@codemirror/commands");
|
281
300
|
var import_lang_markdown2 = require("@codemirror/lang-markdown");
|
282
301
|
var import_language5 = require("@codemirror/language");
|
283
302
|
var import_language_data = require("@codemirror/language-data");
|
284
303
|
var import_lint2 = require("@codemirror/lint");
|
285
|
-
var
|
304
|
+
var import_view23 = require("@codemirror/view");
|
286
305
|
var import_util5 = require("@dxos/util");
|
287
306
|
var import_lang_markdown3 = require("@codemirror/lang-markdown");
|
288
307
|
var import_language6 = require("@codemirror/language");
|
289
308
|
var import_highlight2 = require("@lezer/highlight");
|
290
309
|
var import_markdown = require("@lezer/markdown");
|
291
310
|
var import_language7 = require("@codemirror/language");
|
292
|
-
var import_state18 = require("@codemirror/state");
|
293
|
-
var import_language8 = require("@codemirror/language");
|
294
311
|
var import_state19 = require("@codemirror/state");
|
295
|
-
var
|
312
|
+
var import_language8 = require("@codemirror/language");
|
313
|
+
var import_state20 = require("@codemirror/state");
|
314
|
+
var import_view24 = require("@codemirror/view");
|
296
315
|
var import_invariant4 = require("@dxos/invariant");
|
297
|
-
var
|
316
|
+
var import_react_ui_theme7 = require("@dxos/react-ui-theme");
|
298
317
|
var import_language9 = require("@codemirror/language");
|
299
|
-
var import_state20 = require("@codemirror/state");
|
300
|
-
var import_view23 = require("@codemirror/view");
|
301
|
-
var import_language10 = require("@codemirror/language");
|
302
318
|
var import_state21 = require("@codemirror/state");
|
303
|
-
var import_view24 = require("@codemirror/view");
|
304
319
|
var import_view25 = require("@codemirror/view");
|
305
|
-
var
|
320
|
+
var import_language10 = require("@codemirror/language");
|
306
321
|
var import_state22 = require("@codemirror/state");
|
307
322
|
var import_view26 = require("@codemirror/view");
|
308
|
-
var import_language12 = require("@codemirror/language");
|
309
323
|
var import_view27 = require("@codemirror/view");
|
310
|
-
var
|
324
|
+
var import_language11 = require("@codemirror/language");
|
325
|
+
var import_state23 = require("@codemirror/state");
|
326
|
+
var import_view28 = require("@codemirror/view");
|
327
|
+
var import_language12 = require("@codemirror/language");
|
328
|
+
var import_view29 = require("@codemirror/view");
|
329
|
+
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
311
330
|
var import_autocomplete5 = require("@codemirror/autocomplete");
|
312
331
|
var import_log6 = require("@dxos/log");
|
313
|
-
var
|
332
|
+
var import_view30 = require("@codemirror/view");
|
314
333
|
var import_codemirror_vim = require("@replit/codemirror-vim");
|
315
334
|
var import_codemirror_vscode_keymap = require("@replit/codemirror-vscode-keymap");
|
316
335
|
var import_effect = require("effect");
|
317
336
|
var import_commands4 = require("@codemirror/commands");
|
318
337
|
var import_language13 = require("@codemirror/language");
|
319
|
-
var import_state23 = require("@codemirror/state");
|
320
|
-
var import_view29 = require("@codemirror/view");
|
321
338
|
var import_state24 = require("@codemirror/state");
|
322
|
-
var
|
339
|
+
var import_view31 = require("@codemirror/view");
|
323
340
|
var import_state25 = require("@codemirror/state");
|
341
|
+
var import_language14 = require("@codemirror/language");
|
324
342
|
var import_state26 = require("@codemirror/state");
|
325
|
-
var import_invariant5 = require("@dxos/invariant");
|
326
343
|
var import_state27 = require("@codemirror/state");
|
327
|
-
var
|
328
|
-
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
344
|
+
var import_invariant5 = require("@dxos/invariant");
|
329
345
|
var import_state28 = require("@codemirror/state");
|
330
|
-
var
|
346
|
+
var import_view32 = require("@codemirror/view");
|
347
|
+
var import_react_ui_theme9 = require("@dxos/react-ui-theme");
|
348
|
+
var import_state29 = require("@codemirror/state");
|
349
|
+
var import_view33 = require("@codemirror/view");
|
331
350
|
var import_log7 = require("@dxos/log");
|
332
351
|
var import_dx_ref_tag = require("@dxos/lit-ui/dx-ref-tag.pcss");
|
333
352
|
var import_language15 = require("@codemirror/language");
|
334
|
-
var
|
335
|
-
var import_view32 = require("@codemirror/view");
|
336
|
-
var import_view33 = require("@codemirror/view");
|
337
|
-
var import_search2 = require("@codemirror/search");
|
353
|
+
var import_state30 = require("@codemirror/state");
|
338
354
|
var import_view34 = require("@codemirror/view");
|
339
|
-
var
|
355
|
+
var import_view35 = require("@codemirror/view");
|
356
|
+
var import_search2 = require("@codemirror/search");
|
340
357
|
var import_tracking2 = require("@preact-signals/safe-react/tracking");
|
341
|
-
var
|
342
|
-
var import_react7 = __toESM(require("react"));
|
343
|
-
var import_async6 = require("@dxos/async");
|
358
|
+
var import_react8 = __toESM(require("react"));
|
344
359
|
var import_react_ui4 = require("@dxos/react-ui");
|
345
360
|
var import_tracking3 = require("@preact-signals/safe-react/tracking");
|
361
|
+
var import_react_context = require("@radix-ui/react-context");
|
362
|
+
var import_react9 = __toESM(require("react"));
|
363
|
+
var import_async6 = require("@dxos/async");
|
364
|
+
var import_react_ui5 = require("@dxos/react-ui");
|
365
|
+
var import_tracking4 = require("@preact-signals/safe-react/tracking");
|
346
366
|
var import_react_context2 = require("@radix-ui/react-context");
|
347
|
-
var
|
367
|
+
var import_react10 = __toESM(require("react"));
|
348
368
|
var import_async7 = require("@dxos/async");
|
349
|
-
var
|
350
|
-
var
|
351
|
-
var
|
369
|
+
var import_react_ui6 = require("@dxos/react-ui");
|
370
|
+
var import_state31 = require("@codemirror/state");
|
371
|
+
var import_view36 = require("@codemirror/view");
|
352
372
|
var import_react_tabster = require("@fluentui/react-tabster");
|
353
|
-
var
|
373
|
+
var import_react11 = require("react");
|
354
374
|
var import_log8 = require("@dxos/log");
|
355
375
|
var import_util6 = require("@dxos/util");
|
356
376
|
var translationKey = "react-ui-editor";
|
@@ -1705,6 +1725,69 @@ var command = (options = {}) => {
|
|
1705
1725
|
})
|
1706
1726
|
];
|
1707
1727
|
};
|
1728
|
+
var Placeholder = class extends import_view11.WidgetType {
|
1729
|
+
constructor(content) {
|
1730
|
+
super(), this.content = content;
|
1731
|
+
}
|
1732
|
+
toDOM(view) {
|
1733
|
+
const wrap = document.createElement("span");
|
1734
|
+
wrap.className = "cm-placeholder";
|
1735
|
+
wrap.style.pointerEvents = "none";
|
1736
|
+
wrap.appendChild(typeof this.content === "string" ? document.createTextNode(this.content) : typeof this.content === "function" ? this.content(view) : this.content.cloneNode(true));
|
1737
|
+
wrap.setAttribute("aria-hidden", "true");
|
1738
|
+
return wrap;
|
1739
|
+
}
|
1740
|
+
coordsAt(dom) {
|
1741
|
+
const rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];
|
1742
|
+
if (!rects.length) {
|
1743
|
+
return null;
|
1744
|
+
}
|
1745
|
+
const style = window.getComputedStyle(dom.parentNode);
|
1746
|
+
const rect = flattenRect(rects[0], style.direction !== "rtl");
|
1747
|
+
const lineHeight = parseInt(style.lineHeight);
|
1748
|
+
if (rect.bottom - rect.top > lineHeight * 1.5) {
|
1749
|
+
return {
|
1750
|
+
left: rect.left,
|
1751
|
+
right: rect.right,
|
1752
|
+
top: rect.top,
|
1753
|
+
bottom: rect.top + lineHeight
|
1754
|
+
};
|
1755
|
+
}
|
1756
|
+
return rect;
|
1757
|
+
}
|
1758
|
+
ignoreEvent() {
|
1759
|
+
return false;
|
1760
|
+
}
|
1761
|
+
};
|
1762
|
+
function multilinePlaceholder(content) {
|
1763
|
+
const plugin = import_view11.ViewPlugin.fromClass(class {
|
1764
|
+
constructor(view) {
|
1765
|
+
this.view = view;
|
1766
|
+
}
|
1767
|
+
get decorations() {
|
1768
|
+
const activeLine = this.view.state.doc.lineAt(this.view.state.selection.main.head);
|
1769
|
+
const isEmpty = activeLine.text.trim() === "";
|
1770
|
+
if (!isEmpty || !content) {
|
1771
|
+
return import_view11.Decoration.none;
|
1772
|
+
}
|
1773
|
+
const lineStart = activeLine.from;
|
1774
|
+
return import_view11.Decoration.set([
|
1775
|
+
import_view11.Decoration.widget({
|
1776
|
+
widget: new Placeholder(content),
|
1777
|
+
side: 1
|
1778
|
+
}).range(lineStart)
|
1779
|
+
]);
|
1780
|
+
}
|
1781
|
+
}, {
|
1782
|
+
decorations: (v) => v.decorations
|
1783
|
+
});
|
1784
|
+
return typeof content === "string" ? [
|
1785
|
+
plugin,
|
1786
|
+
import_view11.EditorView.contentAttributes.of({
|
1787
|
+
"aria-placeholder": content
|
1788
|
+
})
|
1789
|
+
] : plugin;
|
1790
|
+
}
|
1708
1791
|
var floatingMenu = (options = {}) => [
|
1709
1792
|
import_view10.ViewPlugin.fromClass(class {
|
1710
1793
|
constructor(view) {
|
@@ -1781,9 +1864,6 @@ var floatingMenu = (options = {}) => [
|
|
1781
1864
|
"[data-has-focus] & .cm-ref-tag": {
|
1782
1865
|
opacity: "1"
|
1783
1866
|
},
|
1784
|
-
"[data-is-attention-source] & .cm-ref-tag": {
|
1785
|
-
opacity: "1"
|
1786
|
-
},
|
1787
1867
|
".cm-ref-tag button": {
|
1788
1868
|
display: "grid",
|
1789
1869
|
alignItems: "center",
|
@@ -1793,6 +1873,255 @@ var floatingMenu = (options = {}) => [
|
|
1793
1873
|
}
|
1794
1874
|
})
|
1795
1875
|
];
|
1876
|
+
var commandRangeEffect = import_state11.StateEffect.define();
|
1877
|
+
var commandMenuState = import_state11.StateField.define({
|
1878
|
+
create: () => null,
|
1879
|
+
update: (value, tr) => {
|
1880
|
+
let newValue = value;
|
1881
|
+
for (const effect of tr.effects) {
|
1882
|
+
if (effect.is(commandRangeEffect)) {
|
1883
|
+
newValue = effect.value;
|
1884
|
+
}
|
1885
|
+
}
|
1886
|
+
return newValue;
|
1887
|
+
}
|
1888
|
+
});
|
1889
|
+
var commandMenu = (options) => {
|
1890
|
+
const commandMenuPlugin = import_view10.ViewPlugin.fromClass(class {
|
1891
|
+
constructor(view) {
|
1892
|
+
this.view = view;
|
1893
|
+
this.decorations = import_view10.Decoration.none;
|
1894
|
+
}
|
1895
|
+
// TODO(wittjosiah): The decorations are repainted on every update, this occasionally causes menu to flicker.
|
1896
|
+
update(update2) {
|
1897
|
+
const builder = new import_state11.RangeSetBuilder();
|
1898
|
+
const selection = update2.view.state.selection.main;
|
1899
|
+
const { range: activeRange, trigger } = update2.view.state.field(commandMenuState) ?? {};
|
1900
|
+
const shouldShowWidget = activeRange && selection.head >= activeRange.from && selection.head <= activeRange.to;
|
1901
|
+
if (shouldShowWidget) {
|
1902
|
+
builder.add(activeRange.from, activeRange.to, import_view10.Decoration.mark({
|
1903
|
+
tagName: "dx-ref-tag",
|
1904
|
+
class: "cm-ref-tag",
|
1905
|
+
attributes: {
|
1906
|
+
"data-auto-trigger": "true",
|
1907
|
+
"data-trigger": trigger
|
1908
|
+
}
|
1909
|
+
}));
|
1910
|
+
}
|
1911
|
+
const activeRangeChanged = update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(commandRangeEffect)));
|
1912
|
+
if (activeRange && activeRangeChanged && trigger) {
|
1913
|
+
const content = update2.view.state.sliceDoc(activeRange.from + 1, activeRange.to);
|
1914
|
+
options.onTextChange?.(trigger, content);
|
1915
|
+
}
|
1916
|
+
this.decorations = builder.finish();
|
1917
|
+
}
|
1918
|
+
}, {
|
1919
|
+
decorations: (v) => v.decorations
|
1920
|
+
});
|
1921
|
+
const triggers = Array.isArray(options.trigger) ? options.trigger : [
|
1922
|
+
options.trigger
|
1923
|
+
];
|
1924
|
+
const commandKeymap = import_view10.keymap.of([
|
1925
|
+
...triggers.map((trigger) => ({
|
1926
|
+
key: trigger,
|
1927
|
+
run: (view) => {
|
1928
|
+
const selection = view.state.selection.main;
|
1929
|
+
const line = view.state.doc.lineAt(selection.head);
|
1930
|
+
const shouldTrigger = line.text.trim() === "" || selection.head === line.from || selection.head > line.from && line.text[selection.head - line.from - 1] === " ";
|
1931
|
+
if (shouldTrigger) {
|
1932
|
+
view.dispatch({
|
1933
|
+
changes: {
|
1934
|
+
from: selection.head,
|
1935
|
+
insert: trigger
|
1936
|
+
},
|
1937
|
+
selection: {
|
1938
|
+
anchor: selection.head + 1,
|
1939
|
+
head: selection.head + 1
|
1940
|
+
},
|
1941
|
+
effects: commandRangeEffect.of({
|
1942
|
+
trigger,
|
1943
|
+
range: {
|
1944
|
+
from: selection.head,
|
1945
|
+
to: selection.head + 1
|
1946
|
+
}
|
1947
|
+
})
|
1948
|
+
});
|
1949
|
+
return true;
|
1950
|
+
}
|
1951
|
+
return false;
|
1952
|
+
}
|
1953
|
+
})),
|
1954
|
+
{
|
1955
|
+
key: "Enter",
|
1956
|
+
run: (view) => {
|
1957
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1958
|
+
if (activeRange) {
|
1959
|
+
view.dispatch({
|
1960
|
+
changes: {
|
1961
|
+
from: activeRange.from,
|
1962
|
+
to: activeRange.to,
|
1963
|
+
insert: ""
|
1964
|
+
}
|
1965
|
+
});
|
1966
|
+
options.onEnter?.();
|
1967
|
+
return true;
|
1968
|
+
}
|
1969
|
+
return false;
|
1970
|
+
}
|
1971
|
+
},
|
1972
|
+
{
|
1973
|
+
key: "ArrowDown",
|
1974
|
+
run: (view) => {
|
1975
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1976
|
+
if (activeRange) {
|
1977
|
+
options.onArrowDown?.();
|
1978
|
+
return true;
|
1979
|
+
}
|
1980
|
+
return false;
|
1981
|
+
}
|
1982
|
+
},
|
1983
|
+
{
|
1984
|
+
key: "ArrowUp",
|
1985
|
+
run: (view) => {
|
1986
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1987
|
+
if (activeRange) {
|
1988
|
+
options.onArrowUp?.();
|
1989
|
+
return true;
|
1990
|
+
}
|
1991
|
+
return false;
|
1992
|
+
}
|
1993
|
+
}
|
1994
|
+
]);
|
1995
|
+
const updateListener = import_view10.EditorView.updateListener.of((update2) => {
|
1996
|
+
const { trigger, range: activeRange } = update2.view.state.field(commandMenuState) ?? {};
|
1997
|
+
if (!activeRange || !trigger) {
|
1998
|
+
return;
|
1999
|
+
}
|
2000
|
+
const selection = update2.view.state.selection.main;
|
2001
|
+
const firstChar = update2.view.state.doc.sliceString(activeRange.from, activeRange.from + 1);
|
2002
|
+
const shouldRemove = firstChar !== trigger || // Trigger deleted.
|
2003
|
+
selection.head < activeRange.from || // Cursor moved before the range.
|
2004
|
+
selection.head > activeRange.to + 1;
|
2005
|
+
const nextRange = shouldRemove ? null : update2.docChanged ? {
|
2006
|
+
from: activeRange.from,
|
2007
|
+
to: selection.head
|
2008
|
+
} : activeRange;
|
2009
|
+
if (nextRange !== activeRange) {
|
2010
|
+
update2.view.dispatch({
|
2011
|
+
effects: commandRangeEffect.of(nextRange ? {
|
2012
|
+
trigger,
|
2013
|
+
range: nextRange
|
2014
|
+
} : null)
|
2015
|
+
});
|
2016
|
+
}
|
2017
|
+
if (shouldRemove) {
|
2018
|
+
options.onDeactivate?.();
|
2019
|
+
}
|
2020
|
+
});
|
2021
|
+
return [
|
2022
|
+
multilinePlaceholder(options.placeholder ?? `Press '${Array.isArray(options.trigger) ? options.trigger[0] : options.trigger}' for commands`),
|
2023
|
+
import_state11.Prec.highest(commandKeymap),
|
2024
|
+
updateListener,
|
2025
|
+
commandMenuState,
|
2026
|
+
commandMenuPlugin
|
2027
|
+
];
|
2028
|
+
};
|
2029
|
+
var useCommandMenu = ({ viewRef, trigger, placeholder: placeholder2, getGroups }) => {
|
2030
|
+
const triggerRef = (0, import_react4.useRef)(null);
|
2031
|
+
const currentRef = (0, import_react4.useRef)(null);
|
2032
|
+
const groupsRef = (0, import_react4.useRef)([]);
|
2033
|
+
const [currentItem, setCurrentItem] = (0, import_react4.useState)();
|
2034
|
+
const [open, setOpen] = (0, import_react4.useState)(false);
|
2035
|
+
const [_, update2] = (0, import_react4.useState)({});
|
2036
|
+
const handleOpenChange = (0, import_react4.useCallback)(async (open2, trigger2) => {
|
2037
|
+
if (open2 && trigger2) {
|
2038
|
+
groupsRef.current = await getGroups(trigger2);
|
2039
|
+
}
|
2040
|
+
setOpen(open2);
|
2041
|
+
if (!open2) {
|
2042
|
+
triggerRef.current = null;
|
2043
|
+
setCurrentItem(void 0);
|
2044
|
+
viewRef.current?.dispatch({
|
2045
|
+
effects: [
|
2046
|
+
commandRangeEffect.of(null)
|
2047
|
+
]
|
2048
|
+
});
|
2049
|
+
}
|
2050
|
+
}, [
|
2051
|
+
getGroups
|
2052
|
+
]);
|
2053
|
+
const handleActivate = (0, import_react4.useCallback)(async (event) => {
|
2054
|
+
const item = getItem(groupsRef.current, currentItem);
|
2055
|
+
if (item) {
|
2056
|
+
currentRef.current = item;
|
2057
|
+
}
|
2058
|
+
triggerRef.current = event.trigger;
|
2059
|
+
const triggerKey = event.trigger.getAttribute("data-trigger");
|
2060
|
+
if (!open && triggerKey) {
|
2061
|
+
await handleOpenChange(true, triggerKey);
|
2062
|
+
}
|
2063
|
+
}, [
|
2064
|
+
open,
|
2065
|
+
handleOpenChange
|
2066
|
+
]);
|
2067
|
+
const handleSelect = (0, import_react4.useCallback)((item) => {
|
2068
|
+
const view = viewRef.current;
|
2069
|
+
if (!view) {
|
2070
|
+
return;
|
2071
|
+
}
|
2072
|
+
const selection = view.state.selection.main;
|
2073
|
+
void item.onSelect?.(view, selection.head);
|
2074
|
+
}, []);
|
2075
|
+
const serializedTrigger = Array.isArray(trigger) ? trigger.join(",") : trigger;
|
2076
|
+
const _commandMenu = (0, import_react4.useMemo)(() => commandMenu({
|
2077
|
+
trigger,
|
2078
|
+
placeholder: placeholder2,
|
2079
|
+
onArrowDown: () => {
|
2080
|
+
setCurrentItem((currentItem2) => {
|
2081
|
+
const next = getNextItem(groupsRef.current, currentItem2);
|
2082
|
+
currentRef.current = next;
|
2083
|
+
return next.id;
|
2084
|
+
});
|
2085
|
+
},
|
2086
|
+
onArrowUp: () => {
|
2087
|
+
setCurrentItem((currentItem2) => {
|
2088
|
+
const previous = getPreviousItem(groupsRef.current, currentItem2);
|
2089
|
+
currentRef.current = previous;
|
2090
|
+
return previous.id;
|
2091
|
+
});
|
2092
|
+
},
|
2093
|
+
onDeactivate: () => handleOpenChange(false),
|
2094
|
+
onEnter: () => {
|
2095
|
+
if (currentRef.current) {
|
2096
|
+
handleSelect(currentRef.current);
|
2097
|
+
}
|
2098
|
+
},
|
2099
|
+
onTextChange: async (trigger2, text) => {
|
2100
|
+
groupsRef.current = await getGroups(trigger2, text);
|
2101
|
+
const firstItem = groupsRef.current.filter((group) => group.items.length > 0)[0]?.items[0];
|
2102
|
+
if (firstItem) {
|
2103
|
+
setCurrentItem(firstItem.id);
|
2104
|
+
currentRef.current = firstItem;
|
2105
|
+
}
|
2106
|
+
update2({});
|
2107
|
+
}
|
2108
|
+
}), [
|
2109
|
+
handleOpenChange,
|
2110
|
+
getGroups,
|
2111
|
+
serializedTrigger,
|
2112
|
+
placeholder2
|
2113
|
+
]);
|
2114
|
+
return {
|
2115
|
+
commandMenu: _commandMenu,
|
2116
|
+
currentItem,
|
2117
|
+
groupsRef,
|
2118
|
+
ref: triggerRef,
|
2119
|
+
open,
|
2120
|
+
onActivate: handleActivate,
|
2121
|
+
onOpenChange: setOpen,
|
2122
|
+
onSelect: handleSelect
|
2123
|
+
};
|
2124
|
+
};
|
1796
2125
|
var typeahead = ({ onComplete } = {}) => {
|
1797
2126
|
let hint;
|
1798
2127
|
const complete = (view) => {
|
@@ -1808,17 +2137,17 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1808
2137
|
insert: hint
|
1809
2138
|
}
|
1810
2139
|
],
|
1811
|
-
selection:
|
2140
|
+
selection: import_state12.EditorSelection.cursor(selection.from + hint.length)
|
1812
2141
|
});
|
1813
2142
|
return true;
|
1814
2143
|
};
|
1815
2144
|
return [
|
1816
|
-
|
2145
|
+
import_view12.ViewPlugin.fromClass(class {
|
1817
2146
|
constructor() {
|
1818
|
-
this.decorations =
|
2147
|
+
this.decorations = import_view12.Decoration.none;
|
1819
2148
|
}
|
1820
2149
|
update(update2) {
|
1821
|
-
const builder = new
|
2150
|
+
const builder = new import_state12.RangeSetBuilder();
|
1822
2151
|
const selection = update2.view.state.selection.main;
|
1823
2152
|
const line = update2.view.state.doc.lineAt(selection.from);
|
1824
2153
|
if (selection.from === selection.to && selection.from === line.to) {
|
@@ -1827,7 +2156,7 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1827
2156
|
line: str
|
1828
2157
|
});
|
1829
2158
|
if (hint) {
|
1830
|
-
builder.add(selection.from, selection.to,
|
2159
|
+
builder.add(selection.from, selection.to, import_view12.Decoration.widget({
|
1831
2160
|
widget: new Hint(hint)
|
1832
2161
|
}));
|
1833
2162
|
}
|
@@ -1838,7 +2167,7 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1838
2167
|
decorations: (v) => v.decorations
|
1839
2168
|
}),
|
1840
2169
|
// Keys.
|
1841
|
-
|
2170
|
+
import_state12.Prec.highest(import_view12.keymap.of([
|
1842
2171
|
{
|
1843
2172
|
key: "Tab",
|
1844
2173
|
preventDefault: true,
|
@@ -1879,10 +2208,10 @@ var createEditorStateTransaction = ({ scrollTo, selection }) => {
|
|
1879
2208
|
return {
|
1880
2209
|
selection,
|
1881
2210
|
scrollIntoView: !scrollTo,
|
1882
|
-
effects: scrollTo ?
|
2211
|
+
effects: scrollTo ? import_view14.EditorView.scrollIntoView(scrollTo, {
|
1883
2212
|
yMargin: 96
|
1884
2213
|
}) : void 0,
|
1885
|
-
annotations:
|
2214
|
+
annotations: import_state14.Transaction.userEvent.of(stateRestoreAnnotation)
|
1886
2215
|
};
|
1887
2216
|
};
|
1888
2217
|
var createEditorStateStore = (keyPrefix) => ({
|
@@ -1921,7 +2250,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1921
2250
|
// setStateDebounced(id, {});
|
1922
2251
|
// },
|
1923
2252
|
// }),
|
1924
|
-
|
2253
|
+
import_view14.EditorView.updateListener.of(({ view, transactions }) => {
|
1925
2254
|
const id = view.state.facet(documentId);
|
1926
2255
|
if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
|
1927
2256
|
return;
|
@@ -1944,7 +2273,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1944
2273
|
}
|
1945
2274
|
}
|
1946
2275
|
}),
|
1947
|
-
getState &&
|
2276
|
+
getState && import_view14.keymap.of([
|
1948
2277
|
{
|
1949
2278
|
key: "ctrl-r",
|
1950
2279
|
run: (view) => {
|
@@ -1959,10 +2288,10 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1959
2288
|
].filter(import_util2.isNotFalsy);
|
1960
2289
|
};
|
1961
2290
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/comments.ts";
|
1962
|
-
var setComments =
|
1963
|
-
var setSelection =
|
1964
|
-
var setCommentState =
|
1965
|
-
var commentsState =
|
2291
|
+
var setComments = import_state13.StateEffect.define();
|
2292
|
+
var setSelection = import_state13.StateEffect.define();
|
2293
|
+
var setCommentState = import_state13.StateEffect.define();
|
2294
|
+
var commentsState = import_state13.StateField.define({
|
1966
2295
|
create: (state) => ({
|
1967
2296
|
id: state.facet(documentId),
|
1968
2297
|
comments: [],
|
@@ -2000,7 +2329,7 @@ var commentsState = import_state12.StateField.define({
|
|
2000
2329
|
return value;
|
2001
2330
|
}
|
2002
2331
|
});
|
2003
|
-
var styles2 =
|
2332
|
+
var styles2 = import_view13.EditorView.theme({
|
2004
2333
|
".cm-comment, .cm-comment-current": {
|
2005
2334
|
margin: "0 -3px",
|
2006
2335
|
padding: "3px",
|
@@ -2013,14 +2342,14 @@ var styles2 = import_view12.EditorView.theme({
|
|
2013
2342
|
textDecoration: "underline"
|
2014
2343
|
}
|
2015
2344
|
});
|
2016
|
-
var createCommentMark = (id, isCurrent) =>
|
2345
|
+
var createCommentMark = (id, isCurrent) => import_view13.Decoration.mark({
|
2017
2346
|
class: isCurrent ? "cm-comment-current" : "cm-comment",
|
2018
2347
|
attributes: {
|
2019
2348
|
"data-testid": "cm-comment",
|
2020
2349
|
"data-comment-id": id
|
2021
2350
|
}
|
2022
2351
|
});
|
2023
|
-
var commentsDecorations =
|
2352
|
+
var commentsDecorations = import_view13.EditorView.decorations.compute([
|
2024
2353
|
commentsState
|
2025
2354
|
], (state) => {
|
2026
2355
|
const { selection: { current }, comments: comments2 } = state.field(commentsState);
|
@@ -2040,10 +2369,10 @@ var commentsDecorations = import_view12.EditorView.decorations.compute([
|
|
2040
2369
|
const mark = createCommentMark(comment.comment.id, comment.comment.id === current);
|
2041
2370
|
return mark.range(range.from, range.to);
|
2042
2371
|
}).filter(import_util.isNonNullable);
|
2043
|
-
return
|
2372
|
+
return import_view13.Decoration.set(decorations2);
|
2044
2373
|
});
|
2045
|
-
var commentClickedEffect =
|
2046
|
-
var handleCommentClick =
|
2374
|
+
var commentClickedEffect = import_state13.StateEffect.define();
|
2375
|
+
var handleCommentClick = import_view13.EditorView.domEventHandlers({
|
2047
2376
|
click: (event, view) => {
|
2048
2377
|
let target = event.target;
|
2049
2378
|
const editorRoot = view.dom;
|
@@ -2082,7 +2411,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2082
2411
|
}
|
2083
2412
|
};
|
2084
2413
|
return [
|
2085
|
-
|
2414
|
+
import_view13.EditorView.domEventHandlers({
|
2086
2415
|
cut: handleTrack,
|
2087
2416
|
copy: handleTrack
|
2088
2417
|
}),
|
@@ -2104,7 +2433,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2104
2433
|
return effects;
|
2105
2434
|
}),
|
2106
2435
|
// Handle paste or the undo of comment deletion.
|
2107
|
-
|
2436
|
+
import_view13.EditorView.updateListener.of((update2) => {
|
2108
2437
|
const restore = [];
|
2109
2438
|
for (let i = 0; i < update2.transactions.length; i++) {
|
2110
2439
|
const tr = update2.transactions[i];
|
@@ -2160,7 +2489,7 @@ var mapTrackedComment = (comment, changes) => ({
|
|
2160
2489
|
from: changes.mapPos(comment.from, 1),
|
2161
2490
|
to: changes.mapPos(comment.to, 1)
|
2162
2491
|
});
|
2163
|
-
var restoreCommentEffect =
|
2492
|
+
var restoreCommentEffect = import_state13.StateEffect.define({
|
2164
2493
|
map: mapTrackedComment
|
2165
2494
|
});
|
2166
2495
|
var createComment = (view) => {
|
@@ -2205,7 +2534,7 @@ var comments = (options = {}) => {
|
|
2205
2534
|
//
|
2206
2535
|
// Keymap.
|
2207
2536
|
//
|
2208
|
-
options.onCreate &&
|
2537
|
+
options.onCreate && import_view13.keymap.of([
|
2209
2538
|
{
|
2210
2539
|
key: shortcut,
|
2211
2540
|
run: callbackWrapper(createComment)
|
@@ -2215,7 +2544,7 @@ var comments = (options = {}) => {
|
|
2215
2544
|
// Hover tooltip (for key shortcut hints, etc.)
|
2216
2545
|
// TODO(burdon): Factor out to generic hints extension for current selection/line.
|
2217
2546
|
//
|
2218
|
-
options.renderTooltip && (0,
|
2547
|
+
options.renderTooltip && (0, import_view13.hoverTooltip)((view, pos) => {
|
2219
2548
|
const selection = view.state.selection.main;
|
2220
2549
|
if (selection && pos >= selection.from && pos <= selection.to) {
|
2221
2550
|
return {
|
@@ -2246,7 +2575,7 @@ var comments = (options = {}) => {
|
|
2246
2575
|
//
|
2247
2576
|
// Track deleted ranges and update ranges for decorations.
|
2248
2577
|
//
|
2249
|
-
|
2578
|
+
import_view13.EditorView.updateListener.of(({ view, state, changes }) => {
|
2250
2579
|
let mod = false;
|
2251
2580
|
const { comments: comments2, ...value } = state.field(commentsState);
|
2252
2581
|
changes.iterChanges((from, to, from2, to2) => {
|
@@ -2278,7 +2607,7 @@ var comments = (options = {}) => {
|
|
2278
2607
|
//
|
2279
2608
|
// Track selection/proximity.
|
2280
2609
|
//
|
2281
|
-
|
2610
|
+
import_view13.EditorView.updateListener.of(({ view, state }) => {
|
2282
2611
|
let min = Infinity;
|
2283
2612
|
const { selection: { current, closest }, comments: comments2 } = state.field(commentsState);
|
2284
2613
|
const { head } = state.selection.main;
|
@@ -2332,7 +2661,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2332
2661
|
anchor: range.from
|
2333
2662
|
} : void 0,
|
2334
2663
|
effects: [
|
2335
|
-
needsScroll ?
|
2664
|
+
needsScroll ? import_view13.EditorView.scrollIntoView(range.from, center ? {
|
2336
2665
|
y: "center"
|
2337
2666
|
} : void 0) : [],
|
2338
2667
|
needsSelectionUpdate ? setSelection.of({
|
@@ -2362,13 +2691,13 @@ var ExternalCommentSync = class {
|
|
2362
2691
|
this.unsubscribe = subscribe(updateComments);
|
2363
2692
|
}
|
2364
2693
|
};
|
2365
|
-
var createExternalCommentSync = (id, subscribe, getComments) =>
|
2694
|
+
var createExternalCommentSync = (id, subscribe, getComments) => import_view13.ViewPlugin.fromClass(class {
|
2366
2695
|
constructor(view) {
|
2367
2696
|
return new ExternalCommentSync(view, id, subscribe, getComments);
|
2368
2697
|
}
|
2369
2698
|
});
|
2370
2699
|
var useComments = (view, id, comments2) => {
|
2371
|
-
(0,
|
2700
|
+
(0, import_react5.useEffect)(() => {
|
2372
2701
|
if (view) {
|
2373
2702
|
if (id === view.state.facet(documentId)) {
|
2374
2703
|
view.dispatch({
|
@@ -2385,12 +2714,12 @@ var debugNodeLogger = (log9 = console.log) => {
|
|
2385
2714
|
const logTokens = (state) => (0, import_language.syntaxTree)(state).iterate({
|
2386
2715
|
enter: (node) => log9(node.type)
|
2387
2716
|
});
|
2388
|
-
return
|
2717
|
+
return import_state15.StateField.define({
|
2389
2718
|
create: (state) => logTokens(state),
|
2390
2719
|
update: (_, tr) => logTokens(tr.state)
|
2391
2720
|
});
|
2392
2721
|
};
|
2393
|
-
var styles3 =
|
2722
|
+
var styles3 = import_view15.EditorView.theme({
|
2394
2723
|
".cm-dropCursor": {
|
2395
2724
|
borderLeft: "2px solid var(--dx-accentText)",
|
2396
2725
|
color: "var(--dx-accentText)",
|
@@ -2403,8 +2732,8 @@ var styles3 = import_view14.EditorView.theme({
|
|
2403
2732
|
var dropFile = (options = {}) => {
|
2404
2733
|
return [
|
2405
2734
|
styles3,
|
2406
|
-
(0,
|
2407
|
-
|
2735
|
+
(0, import_view15.dropCursor)(),
|
2736
|
+
import_view15.EditorView.domEventHandlers({
|
2408
2737
|
drop: (event, view) => {
|
2409
2738
|
event.preventDefault();
|
2410
2739
|
const files = event.dataTransfer?.files;
|
@@ -2423,8 +2752,8 @@ var dropFile = (options = {}) => {
|
|
2423
2752
|
})
|
2424
2753
|
];
|
2425
2754
|
};
|
2426
|
-
var focusEffect =
|
2427
|
-
var focusField =
|
2755
|
+
var focusEffect = import_state17.StateEffect.define();
|
2756
|
+
var focusField = import_state17.StateField.define({
|
2428
2757
|
create: () => false,
|
2429
2758
|
update: (value, tr) => {
|
2430
2759
|
for (const effect of tr.effects) {
|
@@ -2437,7 +2766,7 @@ var focusField = import_state16.StateField.define({
|
|
2437
2766
|
});
|
2438
2767
|
var focus = [
|
2439
2768
|
focusField,
|
2440
|
-
|
2769
|
+
import_view17.EditorView.domEventHandlers({
|
2441
2770
|
focus: (event, view) => {
|
2442
2771
|
setTimeout(() => view.dispatch({
|
2443
2772
|
effects: focusEffect.of(true)
|
@@ -2463,11 +2792,11 @@ var theme = {
|
|
2463
2792
|
codeMark: "font-mono text-primary-500",
|
2464
2793
|
mark: "opacity-50",
|
2465
2794
|
heading: (level) => {
|
2466
|
-
return (0,
|
2795
|
+
return (0, import_react_ui_theme4.mx)(headings[level], "dark:text-primary-400");
|
2467
2796
|
}
|
2468
2797
|
};
|
2469
2798
|
var getToken = (path, defaultValue) => {
|
2470
|
-
const value = (0, import_util4.get)(
|
2799
|
+
const value = (0, import_util4.get)(import_react_ui_theme5.tokens, path, defaultValue);
|
2471
2800
|
return value?.toString() ?? "";
|
2472
2801
|
};
|
2473
2802
|
var fontBody = getToken("fontFamily.body");
|
@@ -2682,8 +3011,31 @@ var defaultTheme = {
|
|
2682
3011
|
borderTop: "1px solid var(--dx-separator)"
|
2683
3012
|
}
|
2684
3013
|
};
|
3014
|
+
var editorWidth = "!mli-auto is-full max-is-[min(50rem,100%-4rem)]";
|
3015
|
+
var editorSlots = {
|
3016
|
+
scroll: {
|
3017
|
+
className: "pbs-2"
|
3018
|
+
},
|
3019
|
+
content: {
|
3020
|
+
className: editorWidth
|
3021
|
+
}
|
3022
|
+
};
|
3023
|
+
var editorGutter = import_view18.EditorView.theme({
|
3024
|
+
".cm-gutters": {
|
3025
|
+
background: "var(--dx-baseSurface)",
|
3026
|
+
paddingRight: "1rem"
|
3027
|
+
}
|
3028
|
+
});
|
3029
|
+
var editorMonospace = import_view18.EditorView.theme({
|
3030
|
+
".cm-content": {
|
3031
|
+
fontFamily: fontMono
|
3032
|
+
}
|
3033
|
+
});
|
3034
|
+
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
3035
|
+
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme3.mx)("attention-surface dx-focus-ring-inset data-[toolbar=disabled]:pbs-2", role === "section" ? "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24" : "min-bs-0");
|
3036
|
+
var stackItemContentToolbarClassNames = (role) => (0, import_react_ui_theme3.mx)("relative z-[1] flex is-full bg-toolbarSurface border-be border-subduedSeparator", role === "section" && "sticky block-start-0 -mbe-px min-is-0");
|
2685
3037
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/factories.ts";
|
2686
|
-
var preventNewline =
|
3038
|
+
var preventNewline = import_state16.EditorState.transactionFilter.of((tr) => tr.newDoc.lines > 1 ? [] : tr);
|
2687
3039
|
var defaultBasicOptions = {
|
2688
3040
|
allowMultipleSelections: true,
|
2689
3041
|
bracketMatching: true,
|
@@ -2705,33 +3057,37 @@ var createBasicExtensions = (_props) => {
|
|
2705
3057
|
const props = (0, import_lodash3.default)({}, _props, defaultBasicOptions);
|
2706
3058
|
return [
|
2707
3059
|
// NOTE: Doesn't catch errors in keymap functions.
|
2708
|
-
|
3060
|
+
import_view16.EditorView.exceptionSink.of((err) => {
|
2709
3061
|
import_log5.log.catch(err, void 0, {
|
2710
3062
|
F: __dxlog_file8,
|
2711
|
-
L:
|
3063
|
+
L: 100,
|
2712
3064
|
S: void 0,
|
2713
3065
|
C: (f, a) => f(...a)
|
2714
3066
|
});
|
2715
3067
|
}),
|
2716
|
-
props.allowMultipleSelections &&
|
3068
|
+
props.allowMultipleSelections && import_state16.EditorState.allowMultipleSelections.of(true),
|
2717
3069
|
props.bracketMatching && (0, import_language2.bracketMatching)(),
|
2718
3070
|
props.closeBrackets && (0, import_autocomplete2.closeBrackets)(),
|
2719
|
-
props.dropCursor && (0,
|
2720
|
-
props.drawSelection && (0,
|
3071
|
+
props.dropCursor && (0, import_view16.dropCursor)(),
|
3072
|
+
props.drawSelection && (0, import_view16.drawSelection)({
|
2721
3073
|
cursorBlinkRate: 1200
|
2722
3074
|
}),
|
2723
|
-
props.editable !== void 0 &&
|
3075
|
+
props.editable !== void 0 && import_view16.EditorView.editable.of(props.editable),
|
2724
3076
|
props.focus && focus,
|
2725
|
-
props.highlightActiveLine && (0,
|
3077
|
+
props.highlightActiveLine && (0, import_view16.highlightActiveLine)(),
|
2726
3078
|
props.history && (0, import_commands2.history)(),
|
2727
|
-
props.lineNumbers &&
|
2728
|
-
|
2729
|
-
|
2730
|
-
|
2731
|
-
props.
|
2732
|
-
props.
|
3079
|
+
props.lineNumbers && [
|
3080
|
+
(0, import_view16.lineNumbers)(),
|
3081
|
+
editorGutter
|
3082
|
+
],
|
3083
|
+
props.lineWrapping && import_view16.EditorView.lineWrapping,
|
3084
|
+
props.monospace && editorMonospace,
|
3085
|
+
props.placeholder && (0, import_view16.placeholder)(props.placeholder),
|
3086
|
+
props.readOnly !== void 0 && import_state16.EditorState.readOnly.of(props.readOnly),
|
3087
|
+
props.scrollPastEnd && (0, import_view16.scrollPastEnd)(),
|
3088
|
+
props.tabSize && import_state16.EditorState.tabSize.of(props.tabSize),
|
2733
3089
|
// https://codemirror.net/docs/ref/#view.KeyBinding
|
2734
|
-
|
3090
|
+
import_view16.keymap.of([
|
2735
3091
|
...(props.keymap && keymaps[props.keymap]) ?? [],
|
2736
3092
|
// NOTE: Tabs are also configured by markdown extension.
|
2737
3093
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
@@ -2762,17 +3118,17 @@ var defaultThemeSlots = {
|
|
2762
3118
|
var createThemeExtensions = ({ themeMode, styles: styles4, syntaxHighlighting: _syntaxHighlighting, slots: _slots } = {}) => {
|
2763
3119
|
const slots = (0, import_lodash3.default)({}, _slots, defaultThemeSlots);
|
2764
3120
|
return [
|
2765
|
-
|
2766
|
-
|
3121
|
+
import_view16.EditorView.darkTheme.of(themeMode === "dark"),
|
3122
|
+
import_view16.EditorView.baseTheme(styles4 ? (0, import_lodash4.default)({}, defaultTheme, styles4) : defaultTheme),
|
2767
3123
|
// https://github.com/codemirror/theme-one-dark
|
2768
3124
|
_syntaxHighlighting && (themeMode === "dark" ? (0, import_language2.syntaxHighlighting)(import_theme_one_dark.oneDarkHighlightStyle) : (0, import_language2.syntaxHighlighting)(import_language2.defaultHighlightStyle)),
|
2769
|
-
slots.editor?.className &&
|
3125
|
+
slots.editor?.className && import_view16.EditorView.editorAttributes.of({
|
2770
3126
|
class: slots.editor.className
|
2771
3127
|
}),
|
2772
|
-
slots.content?.className &&
|
3128
|
+
slots.content?.className && import_view16.EditorView.contentAttributes.of({
|
2773
3129
|
class: slots.content.className
|
2774
3130
|
}),
|
2775
|
-
slots.scroll?.className &&
|
3131
|
+
slots.scroll?.className && import_view16.ViewPlugin.fromClass(class {
|
2776
3132
|
constructor(view) {
|
2777
3133
|
view.scrollDOM.classList.add(slots.scroll.className);
|
2778
3134
|
}
|
@@ -2811,7 +3167,7 @@ var folding = (_props = {}) => [
|
|
2811
3167
|
const el = createElement("div", {
|
2812
3168
|
className: "flex h-full items-center"
|
2813
3169
|
});
|
2814
|
-
return renderRoot(el, /* @__PURE__ */
|
3170
|
+
return renderRoot(el, /* @__PURE__ */ import_react6.default.createElement(import_react_ui3.Icon, {
|
2815
3171
|
icon: "ph--caret-right--bold",
|
2816
3172
|
size: 3,
|
2817
3173
|
classNames: [
|
@@ -2821,7 +3177,7 @@ var folding = (_props = {}) => [
|
|
2821
3177
|
}));
|
2822
3178
|
}
|
2823
3179
|
}),
|
2824
|
-
|
3180
|
+
import_view19.EditorView.theme({
|
2825
3181
|
".cm-foldGutter": {
|
2826
3182
|
opacity: 0.3,
|
2827
3183
|
transition: "opacity 0.3s",
|
@@ -2832,25 +3188,25 @@ var folding = (_props = {}) => [
|
|
2832
3188
|
}
|
2833
3189
|
})
|
2834
3190
|
];
|
2835
|
-
var TagWidget = class extends
|
3191
|
+
var TagWidget = class extends import_view20.WidgetType {
|
2836
3192
|
constructor(_text) {
|
2837
3193
|
super(), this._text = _text;
|
2838
3194
|
}
|
2839
3195
|
toDOM() {
|
2840
3196
|
const span = document.createElement("span");
|
2841
|
-
span.className = (0,
|
3197
|
+
span.className = (0, import_react_ui_theme6.mx)("cm-tag", (0, import_react_ui_theme6.getHashColor)(this._text).tag);
|
2842
3198
|
span.textContent = this._text;
|
2843
3199
|
return span;
|
2844
3200
|
}
|
2845
3201
|
};
|
2846
|
-
var tagMatcher = new
|
3202
|
+
var tagMatcher = new import_view20.MatchDecorator({
|
2847
3203
|
regexp: /#(\w+)\W/g,
|
2848
|
-
decoration: (match) =>
|
3204
|
+
decoration: (match) => import_view20.Decoration.replace({
|
2849
3205
|
widget: new TagWidget(match[1])
|
2850
3206
|
})
|
2851
3207
|
});
|
2852
3208
|
var hashtag = () => [
|
2853
|
-
|
3209
|
+
import_view20.ViewPlugin.fromClass(class {
|
2854
3210
|
constructor(view) {
|
2855
3211
|
this.tags = tagMatcher.createDeco(view);
|
2856
3212
|
}
|
@@ -2859,11 +3215,11 @@ var hashtag = () => [
|
|
2859
3215
|
}
|
2860
3216
|
}, {
|
2861
3217
|
decorations: (instance) => instance.tags,
|
2862
|
-
provide: (plugin) =>
|
2863
|
-
return view.plugin(plugin)?.tags ||
|
3218
|
+
provide: (plugin) => import_view20.EditorView.atomicRanges.of((view) => {
|
3219
|
+
return view.plugin(plugin)?.tags || import_view20.Decoration.none;
|
2864
3220
|
})
|
2865
3221
|
}),
|
2866
|
-
|
3222
|
+
import_view20.EditorView.theme({
|
2867
3223
|
".cm-tag": {
|
2868
3224
|
borderRadius: "4px",
|
2869
3225
|
marginRight: "6px",
|
@@ -2913,11 +3269,11 @@ var schemaLinter = (validate) => (view) => {
|
|
2913
3269
|
};
|
2914
3270
|
var listener = ({ onFocus, onChange }) => {
|
2915
3271
|
const extensions = [];
|
2916
|
-
onFocus && extensions.push(
|
3272
|
+
onFocus && extensions.push(import_view21.EditorView.focusChangeEffect.of((_, focusing) => {
|
2917
3273
|
onFocus(focusing);
|
2918
3274
|
return null;
|
2919
3275
|
}));
|
2920
|
-
onChange && extensions.push(
|
3276
|
+
onChange && extensions.push(import_view21.EditorView.updateListener.of((update2) => {
|
2921
3277
|
onChange(update2.state.doc.toString(), update2.state.facet(documentId));
|
2922
3278
|
}));
|
2923
3279
|
return extensions;
|
@@ -3040,7 +3396,7 @@ var setStyle = (type, enable) => {
|
|
3040
3396
|
to: range.head + found + marker.length
|
3041
3397
|
}
|
3042
3398
|
],
|
3043
|
-
range:
|
3399
|
+
range: import_state18.EditorSelection.cursor(range.from - marker.length)
|
3044
3400
|
};
|
3045
3401
|
}
|
3046
3402
|
}
|
@@ -3168,13 +3524,13 @@ var setStyle = (type, enable) => {
|
|
3168
3524
|
from: range.head,
|
3169
3525
|
insert: marker + marker
|
3170
3526
|
},
|
3171
|
-
range:
|
3527
|
+
range: import_state18.EditorSelection.cursor(range.head + marker.length)
|
3172
3528
|
};
|
3173
3529
|
}
|
3174
3530
|
const changeSet = state.changes(changes2.concat(changesAtEnd));
|
3175
3531
|
return {
|
3176
3532
|
changes: changeSet,
|
3177
|
-
range: range.empty && !changeSet.empty ?
|
3533
|
+
range: range.empty && !changeSet.empty ? import_state18.EditorSelection.cursor(range.head + marker.length) : import_state18.EditorSelection.range(changeSet.mapPos(range.from, 1), changeSet.mapPos(range.to, -1))
|
3178
3534
|
};
|
3179
3535
|
});
|
3180
3536
|
dispatch(state.update(changes, {
|
@@ -3374,7 +3730,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3374
3730
|
const changeSet = state.changes(changes2.concat(changesAfter));
|
3375
3731
|
return {
|
3376
3732
|
changes: changeSet,
|
3377
|
-
range:
|
3733
|
+
range: import_state18.EditorSelection.cursor(changeSet.mapPos(to, 1) - cursorOffset - (url ? url.length + 2 : 0))
|
3378
3734
|
};
|
3379
3735
|
});
|
3380
3736
|
if (changes.changes.empty) {
|
@@ -3808,7 +4164,7 @@ var toggleCodeblock = (target) => {
|
|
3808
4164
|
};
|
3809
4165
|
var formattingKeymap = (_options = {}) => {
|
3810
4166
|
return [
|
3811
|
-
|
4167
|
+
import_view22.keymap.of([
|
3812
4168
|
{
|
3813
4169
|
key: "meta-b",
|
3814
4170
|
run: toggleStrong
|
@@ -4009,7 +4365,7 @@ var getFormatting = (state) => {
|
|
4009
4365
|
};
|
4010
4366
|
};
|
4011
4367
|
var useFormattingState = (state) => {
|
4012
|
-
return (0,
|
4368
|
+
return (0, import_react7.useMemo)(() => import_view22.EditorView.updateListener.of((update2) => {
|
4013
4369
|
if (update2.docChanged || update2.selectionSet) {
|
4014
4370
|
Object.entries(getFormatting(update2.state)).forEach(([key, active]) => {
|
4015
4371
|
state[key] = active;
|
@@ -4261,7 +4617,7 @@ var createMarkdownExtensions = (options = {}) => {
|
|
4261
4617
|
}),
|
4262
4618
|
// Custom styles.
|
4263
4619
|
(0, import_language5.syntaxHighlighting)(markdownHighlightStyle()),
|
4264
|
-
|
4620
|
+
import_view23.keymap.of([
|
4265
4621
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
4266
4622
|
options.indentWithTab !== false && import_commands3.indentWithTab,
|
4267
4623
|
// https://codemirror.net/docs/ref/#commands.defaultKeymap
|
@@ -4271,7 +4627,7 @@ var createMarkdownExtensions = (options = {}) => {
|
|
4271
4627
|
].filter(import_util5.isNotFalsy))
|
4272
4628
|
];
|
4273
4629
|
};
|
4274
|
-
var debugTree = (cb) =>
|
4630
|
+
var debugTree = (cb) => import_state19.StateField.define({
|
4275
4631
|
create: (state) => cb(convertTreeToJson(state)),
|
4276
4632
|
update: (value, tr) => cb(convertTreeToJson(tr.state))
|
4277
4633
|
});
|
@@ -4295,12 +4651,12 @@ var convertTreeToJson = (state) => {
|
|
4295
4651
|
return treeToJson((0, import_language7.syntaxTree)(state).cursor());
|
4296
4652
|
};
|
4297
4653
|
var adjustChanges = () => {
|
4298
|
-
return
|
4654
|
+
return import_view25.ViewPlugin.fromClass(class {
|
4299
4655
|
update(update2) {
|
4300
4656
|
const tree = (0, import_language9.syntaxTree)(update2.state);
|
4301
4657
|
const adjustments = [];
|
4302
4658
|
for (const tr of update2.transactions) {
|
4303
|
-
const event = tr.annotation(
|
4659
|
+
const event = tr.annotation(import_state21.Transaction.userEvent);
|
4304
4660
|
switch (event) {
|
4305
4661
|
//
|
4306
4662
|
// Enter
|
@@ -4435,9 +4791,9 @@ var getValidUrl = (str) => {
|
|
4435
4791
|
};
|
4436
4792
|
var image = (_options = {}) => {
|
4437
4793
|
return [
|
4438
|
-
|
4794
|
+
import_state22.StateField.define({
|
4439
4795
|
create: (state) => {
|
4440
|
-
return
|
4796
|
+
return import_view26.Decoration.set(buildDecorations(0, state.doc.length, state));
|
4441
4797
|
},
|
4442
4798
|
update: (value, tr) => {
|
4443
4799
|
if (!tr.docChanged && !tr.selection) {
|
@@ -4460,7 +4816,7 @@ var image = (_options = {}) => {
|
|
4460
4816
|
add: buildDecorations(from, to, tr.state)
|
4461
4817
|
});
|
4462
4818
|
},
|
4463
|
-
provide: (field) =>
|
4819
|
+
provide: (field) => import_view26.EditorView.decorations.from(field)
|
4464
4820
|
})
|
4465
4821
|
];
|
4466
4822
|
};
|
@@ -4478,7 +4834,7 @@ var buildDecorations = (from, to, state) => {
|
|
4478
4834
|
return;
|
4479
4835
|
}
|
4480
4836
|
preloadImage(url);
|
4481
|
-
decorations2.push(
|
4837
|
+
decorations2.push(import_view26.Decoration.replace({
|
4482
4838
|
block: true,
|
4483
4839
|
widget: new ImageWidget(url)
|
4484
4840
|
}).range(hide2 ? node.from : node.to, node.to));
|
@@ -4498,7 +4854,7 @@ var preloadImage = (url) => {
|
|
4498
4854
|
preloaded.add(url);
|
4499
4855
|
}
|
4500
4856
|
};
|
4501
|
-
var ImageWidget = class extends
|
4857
|
+
var ImageWidget = class extends import_view26.WidgetType {
|
4502
4858
|
constructor(_url) {
|
4503
4859
|
super(), this._url = _url;
|
4504
4860
|
}
|
@@ -4519,7 +4875,7 @@ var ImageWidget = class extends import_view24.WidgetType {
|
|
4519
4875
|
};
|
4520
4876
|
var bulletListIndentationWidth = 24;
|
4521
4877
|
var orderedListIndentationWidth = 36;
|
4522
|
-
var formattingStyles =
|
4878
|
+
var formattingStyles = import_view27.EditorView.theme({
|
4523
4879
|
/**
|
4524
4880
|
* Horizontal rule.
|
4525
4881
|
*/
|
@@ -4638,14 +4994,14 @@ var formattingStyles = import_view25.EditorView.theme({
|
|
4638
4994
|
}
|
4639
4995
|
});
|
4640
4996
|
var table = (options = {}) => {
|
4641
|
-
return
|
4997
|
+
return import_state23.StateField.define({
|
4642
4998
|
create: (state) => update(state, options),
|
4643
4999
|
update: (_, tr) => update(tr.state, options),
|
4644
|
-
provide: (field) =>
|
5000
|
+
provide: (field) => import_view28.EditorView.decorations.from(field)
|
4645
5001
|
});
|
4646
5002
|
};
|
4647
5003
|
var update = (state, _options) => {
|
4648
|
-
const builder = new
|
5004
|
+
const builder = new import_state23.RangeSetBuilder();
|
4649
5005
|
const cursor = state.selection.main.head;
|
4650
5006
|
const tables = [];
|
4651
5007
|
const getTable = () => tables[tables.length - 1];
|
@@ -4686,19 +5042,19 @@ var update = (state, _options) => {
|
|
4686
5042
|
tables.forEach((table2) => {
|
4687
5043
|
const replace = state.readOnly || cursor < table2.from || cursor > table2.to;
|
4688
5044
|
if (replace) {
|
4689
|
-
builder.add(table2.from, table2.to,
|
5045
|
+
builder.add(table2.from, table2.to, import_view28.Decoration.replace({
|
4690
5046
|
block: true,
|
4691
5047
|
widget: new TableWidget(table2)
|
4692
5048
|
}));
|
4693
5049
|
} else {
|
4694
|
-
builder.add(table2.from, table2.to,
|
5050
|
+
builder.add(table2.from, table2.to, import_view28.Decoration.mark({
|
4695
5051
|
class: "cm-table"
|
4696
5052
|
}));
|
4697
5053
|
}
|
4698
5054
|
});
|
4699
5055
|
return builder.finish();
|
4700
5056
|
};
|
4701
|
-
var TableWidget = class extends
|
5057
|
+
var TableWidget = class extends import_view28.WidgetType {
|
4702
5058
|
constructor(_table) {
|
4703
5059
|
super(), this._table = _table;
|
4704
5060
|
}
|
@@ -4737,14 +5093,14 @@ var Unicode = {
|
|
4737
5093
|
bulletSmall: "\u2219",
|
4738
5094
|
bulletSquare: "\u2B1D"
|
4739
5095
|
};
|
4740
|
-
var HorizontalRuleWidget = class extends
|
5096
|
+
var HorizontalRuleWidget = class extends import_view24.WidgetType {
|
4741
5097
|
toDOM() {
|
4742
5098
|
const el = document.createElement("span");
|
4743
5099
|
el.className = "cm-hr";
|
4744
5100
|
return el;
|
4745
5101
|
}
|
4746
5102
|
};
|
4747
|
-
var LinkButton = class extends
|
5103
|
+
var LinkButton = class extends import_view24.WidgetType {
|
4748
5104
|
constructor(url, render) {
|
4749
5105
|
super(), this.url = url, this.render = render;
|
4750
5106
|
}
|
@@ -4760,7 +5116,7 @@ var LinkButton = class extends import_view22.WidgetType {
|
|
4760
5116
|
return el;
|
4761
5117
|
}
|
4762
5118
|
};
|
4763
|
-
var CheckboxWidget = class extends
|
5119
|
+
var CheckboxWidget = class extends import_view24.WidgetType {
|
4764
5120
|
constructor(_checked) {
|
4765
5121
|
super(), this._checked = _checked;
|
4766
5122
|
}
|
@@ -4804,7 +5160,7 @@ var CheckboxWidget = class extends import_view22.WidgetType {
|
|
4804
5160
|
return false;
|
4805
5161
|
}
|
4806
5162
|
};
|
4807
|
-
var TextWidget = class extends
|
5163
|
+
var TextWidget = class extends import_view24.WidgetType {
|
4808
5164
|
constructor(text, className) {
|
4809
5165
|
super(), this.text = text, this.className = className;
|
4810
5166
|
}
|
@@ -4817,29 +5173,29 @@ var TextWidget = class extends import_view22.WidgetType {
|
|
4817
5173
|
return el;
|
4818
5174
|
}
|
4819
5175
|
};
|
4820
|
-
var hide =
|
4821
|
-
var blockQuote =
|
5176
|
+
var hide = import_view24.Decoration.replace({});
|
5177
|
+
var blockQuote = import_view24.Decoration.line({
|
4822
5178
|
class: "cm-blockquote"
|
4823
5179
|
});
|
4824
|
-
var fencedCodeLine =
|
5180
|
+
var fencedCodeLine = import_view24.Decoration.line({
|
4825
5181
|
class: "cm-code cm-codeblock-line"
|
4826
5182
|
});
|
4827
|
-
var fencedCodeLineFirst =
|
4828
|
-
class: (0,
|
5183
|
+
var fencedCodeLineFirst = import_view24.Decoration.line({
|
5184
|
+
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-start")
|
4829
5185
|
});
|
4830
|
-
var fencedCodeLineLast =
|
4831
|
-
class: (0,
|
5186
|
+
var fencedCodeLineLast = import_view24.Decoration.line({
|
5187
|
+
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-end")
|
4832
5188
|
});
|
4833
5189
|
var commentBlockLine = fencedCodeLine;
|
4834
5190
|
var commentBlockLineFirst = fencedCodeLineFirst;
|
4835
5191
|
var commentBlockLineLast = fencedCodeLineLast;
|
4836
|
-
var horizontalRule =
|
5192
|
+
var horizontalRule = import_view24.Decoration.replace({
|
4837
5193
|
widget: new HorizontalRuleWidget()
|
4838
5194
|
});
|
4839
|
-
var checkedTask =
|
5195
|
+
var checkedTask = import_view24.Decoration.replace({
|
4840
5196
|
widget: new CheckboxWidget(true)
|
4841
5197
|
});
|
4842
|
-
var uncheckedTask =
|
5198
|
+
var uncheckedTask = import_view24.Decoration.replace({
|
4843
5199
|
widget: new CheckboxWidget(false)
|
4844
5200
|
});
|
4845
5201
|
var editingRange = (state, range, focus2) => {
|
@@ -4855,8 +5211,8 @@ var autoHideTags = /* @__PURE__ */ new Set([
|
|
4855
5211
|
"SuperscriptMark"
|
4856
5212
|
]);
|
4857
5213
|
var buildDecorations2 = (view, options, focus2) => {
|
4858
|
-
const deco = new
|
4859
|
-
const atomicDeco = new
|
5214
|
+
const deco = new import_state20.RangeSetBuilder();
|
5215
|
+
const atomicDeco = new import_state20.RangeSetBuilder();
|
4860
5216
|
const { state } = view;
|
4861
5217
|
const headerLevels = [];
|
4862
5218
|
const getHeaderLevels = (node, level) => {
|
@@ -4943,7 +5299,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4943
5299
|
} else {
|
4944
5300
|
const num = headers.slice(from - 1).map((level2) => level2?.number ?? 0).join(".") + " ";
|
4945
5301
|
if (num.length) {
|
4946
|
-
atomicDeco.add(mark.from, mark.from + len,
|
5302
|
+
atomicDeco.add(mark.from, mark.from + len, import_view24.Decoration.replace({
|
4947
5303
|
widget: new TextWidget(num, theme.heading(level))
|
4948
5304
|
}));
|
4949
5305
|
}
|
@@ -4968,7 +5324,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4968
5324
|
if (node.from === line.to - 1) {
|
4969
5325
|
return false;
|
4970
5326
|
}
|
4971
|
-
deco.add(line.from, line.from,
|
5327
|
+
deco.add(line.from, line.from, import_view24.Decoration.line({
|
4972
5328
|
class: "cm-list-item",
|
4973
5329
|
attributes: {
|
4974
5330
|
style: `padding-left: ${offset}px; text-indent: -${width}px;`
|
@@ -4985,7 +5341,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4985
5341
|
const label = list.type === "OrderedList" ? `${++list.number}.` : Unicode.bulletSmall;
|
4986
5342
|
const line = state.doc.lineAt(node.from);
|
4987
5343
|
const to = state.doc.sliceString(node.to, node.to + 1) === " " ? node.to + 1 : node.to;
|
4988
|
-
atomicDeco.add(line.from, to,
|
5344
|
+
atomicDeco.add(line.from, to, import_view24.Decoration.replace({
|
4989
5345
|
widget: new TextWidget(label, list.type === "OrderedList" ? "cm-list-mark cm-list-mark-ordered" : "cm-list-mark cm-list-mark-bullet")
|
4990
5346
|
}));
|
4991
5347
|
break;
|
@@ -5072,7 +5428,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5072
5428
|
if (!editing) {
|
5073
5429
|
atomicDeco.add(node.from, marks[0].to, hide);
|
5074
5430
|
}
|
5075
|
-
deco.add(marks[0].to, marks[1].from,
|
5431
|
+
deco.add(marks[0].to, marks[1].from, import_view24.Decoration.mark({
|
5076
5432
|
tagName: "a",
|
5077
5433
|
attributes: {
|
5078
5434
|
class: "cm-link",
|
@@ -5082,7 +5438,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5082
5438
|
}
|
5083
5439
|
}));
|
5084
5440
|
if (!editing) {
|
5085
|
-
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ?
|
5441
|
+
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ? import_view24.Decoration.replace({
|
5086
5442
|
widget: new LinkButton(url, options.renderLinkButton)
|
5087
5443
|
}) : hide);
|
5088
5444
|
}
|
@@ -5137,10 +5493,10 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5137
5493
|
atomicDeco: atomicDeco.finish()
|
5138
5494
|
};
|
5139
5495
|
};
|
5140
|
-
var forceUpdate =
|
5496
|
+
var forceUpdate = import_state20.StateEffect.define();
|
5141
5497
|
var decorateMarkdown = (options = {}) => {
|
5142
5498
|
return [
|
5143
|
-
|
5499
|
+
import_view24.ViewPlugin.fromClass(class {
|
5144
5500
|
constructor(view) {
|
5145
5501
|
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations2(view, options, view.hasFocus));
|
5146
5502
|
}
|
@@ -5172,9 +5528,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5172
5528
|
}
|
5173
5529
|
}, {
|
5174
5530
|
provide: (plugin) => [
|
5175
|
-
|
5176
|
-
|
5177
|
-
|
5531
|
+
import_view24.EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view24.Decoration.none),
|
5532
|
+
import_view24.EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view24.Decoration.none),
|
5533
|
+
import_view24.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view24.Decoration.none)
|
5178
5534
|
]
|
5179
5535
|
}),
|
5180
5536
|
image(),
|
@@ -5184,7 +5540,7 @@ var decorateMarkdown = (options = {}) => {
|
|
5184
5540
|
];
|
5185
5541
|
};
|
5186
5542
|
var linkTooltip = (renderTooltip) => {
|
5187
|
-
return (0,
|
5543
|
+
return (0, import_view29.hoverTooltip)((view, pos, side) => {
|
5188
5544
|
const syntax = (0, import_language12.syntaxTree)(view.state).resolveInner(pos, side);
|
5189
5545
|
let link = null;
|
5190
5546
|
for (let i = 0, node = syntax; !link && node && i < 5; node = node.parent, i++) {
|
@@ -5202,7 +5558,7 @@ var linkTooltip = (renderTooltip) => {
|
|
5202
5558
|
// above: true,
|
5203
5559
|
create: () => {
|
5204
5560
|
const el = document.createElement("div");
|
5205
|
-
el.className = (0,
|
5561
|
+
el.className = (0, import_react_ui_theme8.tooltipContent)({});
|
5206
5562
|
renderTooltip(el, {
|
5207
5563
|
url: urlText
|
5208
5564
|
}, view);
|
@@ -5274,7 +5630,7 @@ var InputModeExtensions = {
|
|
5274
5630
|
editorInputMode.of({
|
5275
5631
|
type: "vscode"
|
5276
5632
|
}),
|
5277
|
-
|
5633
|
+
import_view30.keymap.of(import_codemirror_vscode_keymap.vscodeKeymap)
|
5278
5634
|
],
|
5279
5635
|
vim: [
|
5280
5636
|
// https://github.com/replit/codemirror-vim
|
@@ -5283,7 +5639,7 @@ var InputModeExtensions = {
|
|
5283
5639
|
type: "vim",
|
5284
5640
|
noTabster: true
|
5285
5641
|
}),
|
5286
|
-
|
5642
|
+
import_view30.keymap.of([
|
5287
5643
|
{
|
5288
5644
|
key: "Alt-Escape",
|
5289
5645
|
run: (view) => {
|
@@ -5423,7 +5779,7 @@ var format = (value) => JSON.stringify(value, (key, value2) => {
|
|
5423
5779
|
}
|
5424
5780
|
return value2;
|
5425
5781
|
}).replaceAll('"', "");
|
5426
|
-
var treeFacet =
|
5782
|
+
var treeFacet = import_state27.Facet.define({
|
5427
5783
|
combine: (values) => values[0]
|
5428
5784
|
});
|
5429
5785
|
var outlinerTree = (options = {}) => {
|
@@ -5572,7 +5928,7 @@ var outlinerTree = (options = {}) => {
|
|
5572
5928
|
return tree;
|
5573
5929
|
};
|
5574
5930
|
return [
|
5575
|
-
|
5931
|
+
import_state26.StateField.define({
|
5576
5932
|
create: (state) => {
|
5577
5933
|
return buildTree(state);
|
5578
5934
|
},
|
@@ -5588,10 +5944,10 @@ var outlinerTree = (options = {}) => {
|
|
5588
5944
|
};
|
5589
5945
|
var getSelection = (state) => state.selection.main;
|
5590
5946
|
var selectionEquals = (a, b) => a.length === b.length && a.every((i) => b.includes(i));
|
5591
|
-
var selectionFacet =
|
5947
|
+
var selectionFacet = import_state25.Facet.define({
|
5592
5948
|
combine: (values) => values[0]
|
5593
5949
|
});
|
5594
|
-
var selectionCompartment = new
|
5950
|
+
var selectionCompartment = new import_state25.Compartment();
|
5595
5951
|
var selectNone = (view) => {
|
5596
5952
|
view.dispatch({
|
5597
5953
|
effects: selectionCompartment.reconfigure(selectionFacet.of([]))
|
@@ -5672,7 +6028,7 @@ var moveItemDown = (view) => {
|
|
5672
6028
|
];
|
5673
6029
|
view.dispatch({
|
5674
6030
|
changes,
|
5675
|
-
selection:
|
6031
|
+
selection: import_state24.EditorSelection.cursor(pos + nextContent.length + 1),
|
5676
6032
|
scrollIntoView: true
|
5677
6033
|
});
|
5678
6034
|
}
|
@@ -5700,7 +6056,7 @@ var moveItemUp = (view) => {
|
|
5700
6056
|
];
|
5701
6057
|
view.dispatch({
|
5702
6058
|
changes,
|
5703
|
-
selection:
|
6059
|
+
selection: import_state24.EditorSelection.cursor(pos - prevContent.length - 1),
|
5704
6060
|
scrollIntoView: true
|
5705
6061
|
});
|
5706
6062
|
}
|
@@ -5712,7 +6068,7 @@ var deleteItem = (view) => {
|
|
5712
6068
|
const current = tree.find(pos);
|
5713
6069
|
if (current) {
|
5714
6070
|
view.dispatch({
|
5715
|
-
selection:
|
6071
|
+
selection: import_state24.EditorSelection.cursor(current.lineRange.from),
|
5716
6072
|
changes: [
|
5717
6073
|
{
|
5718
6074
|
from: current.lineRange.from,
|
@@ -5742,7 +6098,7 @@ var toggleTask = (view) => {
|
|
5742
6098
|
}
|
5743
6099
|
return true;
|
5744
6100
|
};
|
5745
|
-
var commands = () =>
|
6101
|
+
var commands = () => import_view31.keymap.of([
|
5746
6102
|
//
|
5747
6103
|
// Indentation.
|
5748
6104
|
//
|
@@ -5768,7 +6124,7 @@ var commands = () => import_view29.keymap.of([
|
|
5768
6124
|
insert
|
5769
6125
|
}
|
5770
6126
|
],
|
5771
|
-
selection:
|
6127
|
+
selection: import_state24.EditorSelection.cursor(pos + insert.length)
|
5772
6128
|
});
|
5773
6129
|
return true;
|
5774
6130
|
}
|
@@ -5786,7 +6142,7 @@ var commands = () => import_view29.keymap.of([
|
|
5786
6142
|
const next = tree.next(item);
|
5787
6143
|
if (next) {
|
5788
6144
|
view.dispatch({
|
5789
|
-
selection:
|
6145
|
+
selection: import_state24.EditorSelection.cursor(next.contentRange.from)
|
5790
6146
|
});
|
5791
6147
|
return true;
|
5792
6148
|
}
|
@@ -5849,7 +6205,7 @@ var commands = () => import_view29.keymap.of([
|
|
5849
6205
|
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/outliner/editor.ts";
|
5850
6206
|
var LIST_ITEM_REGEX = /^\s*- (\[ \]|\[x\])? /;
|
5851
6207
|
var initialize = () => {
|
5852
|
-
return
|
6208
|
+
return import_view33.ViewPlugin.fromClass(class {
|
5853
6209
|
constructor(view) {
|
5854
6210
|
const first = view.state.doc.lineAt(0);
|
5855
6211
|
const text = view.state.sliceDoc(first.from, first.to);
|
@@ -5865,7 +6221,7 @@ var initialize = () => {
|
|
5865
6221
|
insert
|
5866
6222
|
}
|
5867
6223
|
],
|
5868
|
-
selection:
|
6224
|
+
selection: import_state29.EditorSelection.cursor(insert.length)
|
5869
6225
|
});
|
5870
6226
|
});
|
5871
6227
|
}
|
@@ -5874,7 +6230,7 @@ var initialize = () => {
|
|
5874
6230
|
};
|
5875
6231
|
var editor = () => [
|
5876
6232
|
initialize(),
|
5877
|
-
|
6233
|
+
import_state29.EditorState.transactionFilter.of((tr) => {
|
5878
6234
|
const tree = tr.state.facet(treeFacet);
|
5879
6235
|
if (!tr.docChanged) {
|
5880
6236
|
const current = getSelection(tr.state).from;
|
@@ -5889,20 +6245,20 @@ var editor = () => [
|
|
5889
6245
|
if (!prevItem) {
|
5890
6246
|
return [
|
5891
6247
|
{
|
5892
|
-
selection:
|
6248
|
+
selection: import_state29.EditorSelection.cursor(currentItem.contentRange.from)
|
5893
6249
|
}
|
5894
6250
|
];
|
5895
6251
|
} else {
|
5896
6252
|
if (currentItem.index < prevItem.index) {
|
5897
6253
|
return [
|
5898
6254
|
{
|
5899
|
-
selection:
|
6255
|
+
selection: import_state29.EditorSelection.cursor(currentItem.contentRange.to)
|
5900
6256
|
}
|
5901
6257
|
];
|
5902
6258
|
} else if (currentItem.index > prevItem.index) {
|
5903
6259
|
return [
|
5904
6260
|
{
|
5905
|
-
selection:
|
6261
|
+
selection: import_state29.EditorSelection.cursor(currentItem.contentRange.from)
|
5906
6262
|
}
|
5907
6263
|
];
|
5908
6264
|
} else {
|
@@ -5912,14 +6268,14 @@ var editor = () => [
|
|
5912
6268
|
} else {
|
5913
6269
|
return [
|
5914
6270
|
{
|
5915
|
-
selection:
|
6271
|
+
selection: import_state29.EditorSelection.cursor(currentItem.lineRange.from - 1)
|
5916
6272
|
}
|
5917
6273
|
];
|
5918
6274
|
}
|
5919
6275
|
} else {
|
5920
6276
|
return [
|
5921
6277
|
{
|
5922
|
-
selection:
|
6278
|
+
selection: import_state29.EditorSelection.cursor(currentItem.contentRange.to)
|
5923
6279
|
}
|
5924
6280
|
];
|
5925
6281
|
}
|
@@ -6032,7 +6388,7 @@ var editor = () => [
|
|
6032
6388
|
];
|
6033
6389
|
var outliner = (options = {}) => [
|
6034
6390
|
// Commands.
|
6035
|
-
|
6391
|
+
import_state28.Prec.highest(commands()),
|
6036
6392
|
// Selection.
|
6037
6393
|
selectionCompartment.of(selectionFacet.of([])),
|
6038
6394
|
// State.
|
@@ -6048,14 +6404,14 @@ var outliner = (options = {}) => [
|
|
6048
6404
|
listPaddingLeft: 8
|
6049
6405
|
}),
|
6050
6406
|
// Researve space for menu.
|
6051
|
-
|
6407
|
+
import_view32.EditorView.contentAttributes.of({
|
6052
6408
|
class: "is-full !mr-[3rem]"
|
6053
6409
|
})
|
6054
6410
|
];
|
6055
6411
|
var decorations = () => [
|
6056
|
-
|
6412
|
+
import_view32.ViewPlugin.fromClass(class {
|
6057
6413
|
constructor(view) {
|
6058
|
-
this.decorations =
|
6414
|
+
this.decorations = import_view32.Decoration.none;
|
6059
6415
|
this.updateDecorations(view.state, view);
|
6060
6416
|
}
|
6061
6417
|
update(update2) {
|
@@ -6077,18 +6433,18 @@ var decorations = () => [
|
|
6077
6433
|
const lineFrom = doc.lineAt(item.contentRange.from);
|
6078
6434
|
const lineTo = doc.lineAt(item.contentRange.to);
|
6079
6435
|
const isSelected = selection.includes(item.index) || item === current;
|
6080
|
-
decorations2.push(
|
6081
|
-
class: (0,
|
6436
|
+
decorations2.push(import_view32.Decoration.line({
|
6437
|
+
class: (0, import_react_ui_theme9.mx)("cm-list-item", lineFrom.number === line.number && "cm-list-item-start", lineTo.number === line.number && "cm-list-item-end", isSelected && (hasFocus ? "cm-list-item-focused" : "cm-list-item-selected"))
|
6082
6438
|
}).range(line.from, line.from));
|
6083
6439
|
}
|
6084
6440
|
}
|
6085
|
-
this.decorations =
|
6441
|
+
this.decorations = import_view32.Decoration.set(decorations2);
|
6086
6442
|
}
|
6087
6443
|
}, {
|
6088
6444
|
decorations: (v) => v.decorations
|
6089
6445
|
}),
|
6090
6446
|
// Theme.
|
6091
|
-
|
6447
|
+
import_view32.EditorView.theme(Object.assign({
|
6092
6448
|
".cm-list-item": {
|
6093
6449
|
borderLeftWidth: "1px",
|
6094
6450
|
borderRightWidth: "1px",
|
@@ -6117,9 +6473,6 @@ var decorations = () => [
|
|
6117
6473
|
},
|
6118
6474
|
"[data-has-focus] & .cm-list-item-selected": {
|
6119
6475
|
borderColor: "var(--dx-separator)"
|
6120
|
-
},
|
6121
|
-
"[data-is-attention-source] & .cm-list-item-selected": {
|
6122
|
-
borderColor: "var(--dx-separator)"
|
6123
6476
|
}
|
6124
6477
|
}))
|
6125
6478
|
];
|
@@ -6127,22 +6480,19 @@ var preview = (options = {}) => {
|
|
6127
6480
|
return [
|
6128
6481
|
// NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:
|
6129
6482
|
// "Block decorations may not be specified via plugins"
|
6130
|
-
|
6483
|
+
import_state30.StateField.define({
|
6131
6484
|
create: (state) => buildDecorations3(state, options),
|
6132
6485
|
update: (_, tr) => buildDecorations3(tr.state, options),
|
6133
6486
|
provide: (field) => [
|
6134
|
-
|
6135
|
-
|
6487
|
+
import_view34.EditorView.decorations.from(field),
|
6488
|
+
import_view34.EditorView.atomicRanges.of((view) => view.state.field(field))
|
6136
6489
|
]
|
6137
6490
|
}),
|
6138
|
-
|
6491
|
+
import_view34.EditorView.theme({
|
6139
6492
|
".cm-preview-block": {
|
6140
|
-
|
6141
|
-
|
6142
|
-
|
6143
|
-
borderRadius: "0.5rem",
|
6144
|
-
background: "var(--dx-modalSurface)",
|
6145
|
-
border: "1px solid var(--dx-separator)"
|
6493
|
+
"--dx-card-spacing-inline": "var(--dx-trimMd)",
|
6494
|
+
"--dx-card-spacing-block": "var(--dx-trimMd)",
|
6495
|
+
marginInline: "calc(-1*var(--dx-trimMd))"
|
6146
6496
|
}
|
6147
6497
|
})
|
6148
6498
|
];
|
@@ -6161,7 +6511,7 @@ var getLinkRef = (state, node) => {
|
|
6161
6511
|
}
|
6162
6512
|
};
|
6163
6513
|
var buildDecorations3 = (state, options) => {
|
6164
|
-
const builder = new
|
6514
|
+
const builder = new import_state30.RangeSetBuilder();
|
6165
6515
|
(0, import_language15.syntaxTree)(state).iterate({
|
6166
6516
|
enter: (node) => {
|
6167
6517
|
switch (node.name) {
|
@@ -6172,7 +6522,7 @@ var buildDecorations3 = (state, options) => {
|
|
6172
6522
|
case "Link": {
|
6173
6523
|
const link = getLinkRef(state, node.node);
|
6174
6524
|
if (link) {
|
6175
|
-
builder.add(node.from, node.to,
|
6525
|
+
builder.add(node.from, node.to, import_view34.Decoration.replace({
|
6176
6526
|
widget: new PreviewInlineWidget(options, link)
|
6177
6527
|
}));
|
6178
6528
|
}
|
@@ -6185,7 +6535,7 @@ var buildDecorations3 = (state, options) => {
|
|
6185
6535
|
case "Image": {
|
6186
6536
|
const link = getLinkRef(state, node.node);
|
6187
6537
|
if (options.renderBlock && link) {
|
6188
|
-
builder.add(node.from, node.to,
|
6538
|
+
builder.add(node.from, node.to, import_view34.Decoration.replace({
|
6189
6539
|
block: true,
|
6190
6540
|
// atomic: true,
|
6191
6541
|
widget: new PreviewBlockWidget(options, link)
|
@@ -6198,7 +6548,7 @@ var buildDecorations3 = (state, options) => {
|
|
6198
6548
|
});
|
6199
6549
|
return builder.finish();
|
6200
6550
|
};
|
6201
|
-
var PreviewInlineWidget = class extends
|
6551
|
+
var PreviewInlineWidget = class extends import_view34.WidgetType {
|
6202
6552
|
constructor(_options, _link) {
|
6203
6553
|
super(), this._options = _options, this._link = _link;
|
6204
6554
|
}
|
@@ -6215,7 +6565,7 @@ var PreviewInlineWidget = class extends import_view32.WidgetType {
|
|
6215
6565
|
return root;
|
6216
6566
|
}
|
6217
6567
|
};
|
6218
|
-
var PreviewBlockWidget = class extends
|
6568
|
+
var PreviewBlockWidget = class extends import_view34.WidgetType {
|
6219
6569
|
constructor(_options, _link) {
|
6220
6570
|
super(), this._options = _options, this._link = _link;
|
6221
6571
|
}
|
@@ -6281,7 +6631,7 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
6281
6631
|
let t;
|
6282
6632
|
let idx = 0;
|
6283
6633
|
return [
|
6284
|
-
|
6634
|
+
import_view35.keymap.of([
|
6285
6635
|
{
|
6286
6636
|
// Reset.
|
6287
6637
|
key: "alt-meta-'",
|
@@ -6608,28 +6958,6 @@ var createViewMode = (state, onViewModeChange) => {
|
|
6608
6958
|
]
|
6609
6959
|
};
|
6610
6960
|
};
|
6611
|
-
var editorWidth = "!mli-auto is-full max-is-[min(50rem,100%-4rem)]";
|
6612
|
-
var editorSlots = {
|
6613
|
-
scroll: {
|
6614
|
-
className: "pbs-2"
|
6615
|
-
},
|
6616
|
-
content: {
|
6617
|
-
className: editorWidth
|
6618
|
-
}
|
6619
|
-
};
|
6620
|
-
var editorGutter = import_view34.EditorView.theme({
|
6621
|
-
".cm-gutters": {
|
6622
|
-
paddingRight: "1rem"
|
6623
|
-
}
|
6624
|
-
});
|
6625
|
-
var editorMonospace = import_view34.EditorView.theme({
|
6626
|
-
".cm-content": {
|
6627
|
-
fontFamily: fontMono
|
6628
|
-
}
|
6629
|
-
});
|
6630
|
-
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
6631
|
-
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme9.mx)("attention-surface dx-focus-ring-inset data-[toolbar=disabled]:pbs-2", role === "section" ? "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24" : "min-bs-0");
|
6632
|
-
var stackItemContentToolbarClassNames = (role) => (0, import_react_ui_theme9.mx)("relative z-[1] flex is-full bg-toolbarSurface border-be border-subduedSeparator", role === "section" && "sticky block-start-0 -mbe-px min-is-0");
|
6633
6961
|
var createToolbar = ({ getView, state, customActions, ...features }) => {
|
6634
6962
|
return import_rx_react.Rx.make((get2) => {
|
6635
6963
|
const nodes = [];
|
@@ -6731,20 +7059,304 @@ var EditorToolbar = /* @__PURE__ */ (0, import_react.memo)(({ classNames, attend
|
|
6731
7059
|
_effect.f();
|
6732
7060
|
}
|
6733
7061
|
});
|
7062
|
+
var CommandMenu = ({ groups, currentItem, onSelect }) => {
|
7063
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7064
|
+
try {
|
7065
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7066
|
+
const groupsWithItems = groups.filter((group) => group.items.length > 0);
|
7067
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Portal, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Content, {
|
7068
|
+
align: "start",
|
7069
|
+
onOpenAutoFocus: (event) => event.preventDefault(),
|
7070
|
+
classNames: tx("menu.content", "menu--exotic-unfocusable", {
|
7071
|
+
elevation: "positioned"
|
7072
|
+
}, [
|
7073
|
+
"max-h-[300px] overflow-y-auto"
|
7074
|
+
])
|
7075
|
+
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Viewport, {
|
7076
|
+
classNames: tx("menu.viewport", "menu__viewport--exotic-unfocusable", {})
|
7077
|
+
}, /* @__PURE__ */ import_react8.default.createElement("ul", null, groupsWithItems.map((group, index) => /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, {
|
7078
|
+
key: group.id
|
7079
|
+
}, /* @__PURE__ */ import_react8.default.createElement(CommandGroup, {
|
7080
|
+
group,
|
7081
|
+
currentItem,
|
7082
|
+
onSelect
|
7083
|
+
}), index < groupsWithItems.length - 1 && /* @__PURE__ */ import_react8.default.createElement("div", {
|
7084
|
+
className: tx("menu.separator", "menu__item", {})
|
7085
|
+
})))))));
|
7086
|
+
} finally {
|
7087
|
+
_effect.f();
|
7088
|
+
}
|
7089
|
+
};
|
7090
|
+
var CommandGroup = ({ group, currentItem, onSelect }) => {
|
7091
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7092
|
+
try {
|
7093
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7094
|
+
const { t } = (0, import_react_ui4.useTranslation)();
|
7095
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, group.label && /* @__PURE__ */ import_react8.default.createElement("div", {
|
7096
|
+
className: tx("menu.groupLabel", "menu__group__label", {})
|
7097
|
+
}, /* @__PURE__ */ import_react8.default.createElement("span", null, (0, import_react_ui4.toLocalizedString)(group.label, t))), group.items.map((item) => /* @__PURE__ */ import_react8.default.createElement(CommandItem, {
|
7098
|
+
key: item.id,
|
7099
|
+
item,
|
7100
|
+
current: currentItem === item.id,
|
7101
|
+
onSelect
|
7102
|
+
})));
|
7103
|
+
} finally {
|
7104
|
+
_effect.f();
|
7105
|
+
}
|
7106
|
+
};
|
7107
|
+
var CommandItem = ({ item, current, onSelect }) => {
|
7108
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7109
|
+
try {
|
7110
|
+
const ref = (0, import_react8.useRef)(null);
|
7111
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7112
|
+
const { t } = (0, import_react_ui4.useTranslation)();
|
7113
|
+
const handleSelect = (0, import_react8.useCallback)(() => onSelect(item), [
|
7114
|
+
item,
|
7115
|
+
onSelect
|
7116
|
+
]);
|
7117
|
+
(0, import_react8.useEffect)(() => {
|
7118
|
+
if (current && ref.current) {
|
7119
|
+
ref.current.scrollIntoView({
|
7120
|
+
behavior: "smooth",
|
7121
|
+
block: "nearest"
|
7122
|
+
});
|
7123
|
+
}
|
7124
|
+
}, [
|
7125
|
+
current
|
7126
|
+
]);
|
7127
|
+
return /* @__PURE__ */ import_react8.default.createElement("li", {
|
7128
|
+
ref,
|
7129
|
+
className: tx("menu.item", "menu__item--exotic-unfocusable", {}, [
|
7130
|
+
current && "bg-hoverSurface"
|
7131
|
+
]),
|
7132
|
+
onClick: handleSelect
|
7133
|
+
}, item.icon && /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Icon, {
|
7134
|
+
icon: item.icon,
|
7135
|
+
size: 5
|
7136
|
+
}), /* @__PURE__ */ import_react8.default.createElement("span", {
|
7137
|
+
className: "grow truncate"
|
7138
|
+
}, (0, import_react_ui4.toLocalizedString)(item.label, t)));
|
7139
|
+
} finally {
|
7140
|
+
_effect.f();
|
7141
|
+
}
|
7142
|
+
};
|
7143
|
+
var getItem = (groups, id) => {
|
7144
|
+
return groups.flatMap((group) => group.items).find((item) => item.id === id);
|
7145
|
+
};
|
7146
|
+
var getNextItem = (groups, id) => {
|
7147
|
+
const items = groups.flatMap((group) => group.items);
|
7148
|
+
const index = items.findIndex((item) => item.id === id);
|
7149
|
+
return items[(index + 1) % items.length];
|
7150
|
+
};
|
7151
|
+
var getPreviousItem = (groups, id) => {
|
7152
|
+
const items = groups.flatMap((group) => group.items);
|
7153
|
+
const index = items.findIndex((item) => item.id === id);
|
7154
|
+
return items[(index - 1 + items.length) % items.length];
|
7155
|
+
};
|
7156
|
+
var filterItems = (groups, filter) => {
|
7157
|
+
return groups.map((group) => ({
|
7158
|
+
...group,
|
7159
|
+
items: group.items.filter(filter)
|
7160
|
+
}));
|
7161
|
+
};
|
7162
|
+
var insertAtCursor = (view, head, insert) => {
|
7163
|
+
view.dispatch({
|
7164
|
+
changes: {
|
7165
|
+
from: head,
|
7166
|
+
to: head,
|
7167
|
+
insert
|
7168
|
+
},
|
7169
|
+
selection: {
|
7170
|
+
anchor: head + insert.length,
|
7171
|
+
head: head + insert.length
|
7172
|
+
}
|
7173
|
+
});
|
7174
|
+
};
|
7175
|
+
var insertAtLineStart = (view, head, insert) => {
|
7176
|
+
const line = view.state.doc.lineAt(head);
|
7177
|
+
if (line.from === head) {
|
7178
|
+
insertAtCursor(view, head, insert);
|
7179
|
+
} else {
|
7180
|
+
insert = "\n" + insert;
|
7181
|
+
view.dispatch({
|
7182
|
+
changes: {
|
7183
|
+
from: line.to,
|
7184
|
+
to: line.to,
|
7185
|
+
insert
|
7186
|
+
},
|
7187
|
+
selection: {
|
7188
|
+
anchor: line.to + insert.length,
|
7189
|
+
head: line.to + insert.length
|
7190
|
+
}
|
7191
|
+
});
|
7192
|
+
}
|
7193
|
+
};
|
7194
|
+
var coreSlashCommands = {
|
7195
|
+
id: "markdown",
|
7196
|
+
label: "Markdown",
|
7197
|
+
items: [
|
7198
|
+
{
|
7199
|
+
id: "heading-1",
|
7200
|
+
label: "Heading 1",
|
7201
|
+
icon: "ph--text-h-one--regular",
|
7202
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "# ")
|
7203
|
+
},
|
7204
|
+
{
|
7205
|
+
id: "heading-2",
|
7206
|
+
label: "Heading 2",
|
7207
|
+
icon: "ph--text-h-two--regular",
|
7208
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "## ")
|
7209
|
+
},
|
7210
|
+
{
|
7211
|
+
id: "heading-3",
|
7212
|
+
label: "Heading 3",
|
7213
|
+
icon: "ph--text-h-three--regular",
|
7214
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "### ")
|
7215
|
+
},
|
7216
|
+
{
|
7217
|
+
id: "heading-4",
|
7218
|
+
label: "Heading 4",
|
7219
|
+
icon: "ph--text-h-four--regular",
|
7220
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "#### ")
|
7221
|
+
},
|
7222
|
+
{
|
7223
|
+
id: "heading-5",
|
7224
|
+
label: "Heading 5",
|
7225
|
+
icon: "ph--text-h-five--regular",
|
7226
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "##### ")
|
7227
|
+
},
|
7228
|
+
{
|
7229
|
+
id: "heading-6",
|
7230
|
+
label: "Heading 6",
|
7231
|
+
icon: "ph--text-h-six--regular",
|
7232
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "###### ")
|
7233
|
+
},
|
7234
|
+
{
|
7235
|
+
id: "bullet-list",
|
7236
|
+
label: "Bullet List",
|
7237
|
+
icon: "ph--list-bullets--regular",
|
7238
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "- ")
|
7239
|
+
},
|
7240
|
+
{
|
7241
|
+
id: "numbered-list",
|
7242
|
+
label: "Numbered List",
|
7243
|
+
icon: "ph--list-numbers--regular",
|
7244
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "1. ")
|
7245
|
+
},
|
7246
|
+
{
|
7247
|
+
id: "task-list",
|
7248
|
+
label: "Task List",
|
7249
|
+
icon: "ph--list-checks--regular",
|
7250
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "- [ ] ")
|
7251
|
+
},
|
7252
|
+
{
|
7253
|
+
id: "quote",
|
7254
|
+
label: "Quote",
|
7255
|
+
icon: "ph--quotes--regular",
|
7256
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "> ")
|
7257
|
+
},
|
7258
|
+
{
|
7259
|
+
id: "code-block",
|
7260
|
+
label: "Code Block",
|
7261
|
+
icon: "ph--code-block--regular",
|
7262
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "```\n\n```")
|
7263
|
+
},
|
7264
|
+
{
|
7265
|
+
id: "table",
|
7266
|
+
label: "Table",
|
7267
|
+
icon: "ph--table--regular",
|
7268
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "| | | |\n|---|---|---|\n| | | |")
|
7269
|
+
}
|
7270
|
+
]
|
7271
|
+
};
|
7272
|
+
var linkSlashCommands = {
|
7273
|
+
id: "link",
|
7274
|
+
label: "Link",
|
7275
|
+
items: [
|
7276
|
+
{
|
7277
|
+
id: "inline-link",
|
7278
|
+
label: "Inline link",
|
7279
|
+
icon: "ph--link--regular",
|
7280
|
+
onSelect: (view, head) => view.dispatch({
|
7281
|
+
changes: {
|
7282
|
+
from: head,
|
7283
|
+
insert: "@"
|
7284
|
+
},
|
7285
|
+
selection: {
|
7286
|
+
anchor: head + 1,
|
7287
|
+
head: head + 1
|
7288
|
+
},
|
7289
|
+
effects: commandRangeEffect.of({
|
7290
|
+
trigger: "@",
|
7291
|
+
range: {
|
7292
|
+
from: head,
|
7293
|
+
to: head + 1
|
7294
|
+
}
|
7295
|
+
})
|
7296
|
+
})
|
7297
|
+
},
|
7298
|
+
{
|
7299
|
+
id: "block-embed",
|
7300
|
+
label: "Block embed",
|
7301
|
+
icon: "ph--lego--regular",
|
7302
|
+
onSelect: (view, head) => view.dispatch({
|
7303
|
+
changes: {
|
7304
|
+
from: head,
|
7305
|
+
insert: "@@"
|
7306
|
+
},
|
7307
|
+
selection: {
|
7308
|
+
anchor: head + 2,
|
7309
|
+
head: head + 2
|
7310
|
+
},
|
7311
|
+
effects: commandRangeEffect.of({
|
7312
|
+
trigger: "@",
|
7313
|
+
range: {
|
7314
|
+
from: head,
|
7315
|
+
to: head + 2
|
7316
|
+
}
|
7317
|
+
})
|
7318
|
+
})
|
7319
|
+
}
|
7320
|
+
]
|
7321
|
+
};
|
6734
7322
|
var customEventOptions = {
|
6735
7323
|
capture: true,
|
6736
7324
|
passive: false
|
6737
7325
|
};
|
7326
|
+
var RefPopover = /* @__PURE__ */ (0, import_react9.forwardRef)(({ children, open, onOpenChange, modal, onActivate }, ref) => {
|
7327
|
+
var _effect = (0, import_tracking3.useSignals)();
|
7328
|
+
try {
|
7329
|
+
const [rootRef, setRootRef] = (0, import_react9.useState)(null);
|
7330
|
+
(0, import_react9.useEffect)(() => {
|
7331
|
+
return rootRef && onActivate ? (0, import_async6.addEventListener)(rootRef, "dx-ref-tag-activate", onActivate, customEventOptions) : void 0;
|
7332
|
+
}, [
|
7333
|
+
rootRef,
|
7334
|
+
onActivate
|
7335
|
+
]);
|
7336
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_react_ui5.Popover.Root, {
|
7337
|
+
open,
|
7338
|
+
onOpenChange,
|
7339
|
+
modal
|
7340
|
+
}, /* @__PURE__ */ import_react9.default.createElement(import_react_ui5.Popover.VirtualTrigger, {
|
7341
|
+
virtualRef: ref
|
7342
|
+
}), /* @__PURE__ */ import_react9.default.createElement("div", {
|
7343
|
+
role: "none",
|
7344
|
+
className: "contents",
|
7345
|
+
ref: setRootRef
|
7346
|
+
}, children));
|
7347
|
+
} finally {
|
7348
|
+
_effect.f();
|
7349
|
+
}
|
7350
|
+
});
|
6738
7351
|
var REF_POPOVER = "RefPopover";
|
6739
7352
|
var [RefPopoverContextProvider, useRefPopover] = (0, import_react_context.createContext)(REF_POPOVER, {});
|
6740
|
-
var
|
6741
|
-
var _effect = (0,
|
7353
|
+
var PreviewProvider = ({ children, onLookup }) => {
|
7354
|
+
var _effect = (0, import_tracking3.useSignals)();
|
6742
7355
|
try {
|
6743
|
-
const trigger = (0,
|
6744
|
-
const [value, setValue] = (0,
|
6745
|
-
const [
|
6746
|
-
const
|
6747
|
-
const handleDxRefTagActivate = (0, import_react7.useCallback)((event) => {
|
7356
|
+
const trigger = (0, import_react9.useRef)(null);
|
7357
|
+
const [value, setValue] = (0, import_react9.useState)({});
|
7358
|
+
const [open, setOpen] = (0, import_react9.useState)(false);
|
7359
|
+
const handleDxRefTagActivate = (0, import_react9.useCallback)((event) => {
|
6748
7360
|
const { refId, label, trigger: dxTrigger } = event;
|
6749
7361
|
setValue((value2) => ({
|
6750
7362
|
...value2,
|
@@ -6767,32 +7379,20 @@ var RefPopoverProvider = ({ children, onLookup }) => {
|
|
6767
7379
|
}, [
|
6768
7380
|
onLookup
|
6769
7381
|
]);
|
6770
|
-
|
6771
|
-
return rootRef ? (0, import_async6.addEventListener)(rootRef, "dx-ref-tag-activate", handleDxRefTagActivate, customEventOptions) : void 0;
|
6772
|
-
}, [
|
6773
|
-
rootRef
|
6774
|
-
]);
|
6775
|
-
return /* @__PURE__ */ import_react7.default.createElement(RefPopoverContextProvider, {
|
7382
|
+
return /* @__PURE__ */ import_react9.default.createElement(RefPopoverContextProvider, {
|
6776
7383
|
pending: value.pending,
|
6777
7384
|
link: value.link,
|
6778
7385
|
target: value.target
|
6779
|
-
}, /* @__PURE__ */
|
7386
|
+
}, /* @__PURE__ */ import_react9.default.createElement(RefPopover, {
|
7387
|
+
ref: trigger,
|
6780
7388
|
open,
|
6781
|
-
onOpenChange: setOpen
|
6782
|
-
|
6783
|
-
|
6784
|
-
}), /* @__PURE__ */ import_react7.default.createElement("div", {
|
6785
|
-
role: "none",
|
6786
|
-
className: "contents",
|
6787
|
-
ref: setRootRef
|
6788
|
-
}, children)));
|
7389
|
+
onOpenChange: setOpen,
|
7390
|
+
onActivate: handleDxRefTagActivate
|
7391
|
+
}, children));
|
6789
7392
|
} finally {
|
6790
7393
|
_effect.f();
|
6791
7394
|
}
|
6792
7395
|
};
|
6793
|
-
var RefPopover = {
|
6794
|
-
Provider: RefPopoverProvider
|
6795
|
-
};
|
6796
7396
|
var customEventOptions2 = {
|
6797
7397
|
capture: true,
|
6798
7398
|
passive: false
|
@@ -6800,13 +7400,13 @@ var customEventOptions2 = {
|
|
6800
7400
|
var REF_DROPDOWN_MENU = "RefDropdownMenu";
|
6801
7401
|
var [RefDropdownMenuContextProvider, useRefDropdownMenu] = (0, import_react_context2.createContext)(REF_DROPDOWN_MENU, {});
|
6802
7402
|
var RefDropdownMenuProvider = ({ children, onLookup }) => {
|
6803
|
-
var _effect = (0,
|
7403
|
+
var _effect = (0, import_tracking4.useSignals)();
|
6804
7404
|
try {
|
6805
|
-
const trigger = (0,
|
6806
|
-
const [value, setValue] = (0,
|
6807
|
-
const [rootRef, setRootRef] = (0,
|
6808
|
-
const [open, setOpen] = (0,
|
6809
|
-
const handleDxRefTagActivate = (0,
|
7405
|
+
const trigger = (0, import_react10.useRef)(null);
|
7406
|
+
const [value, setValue] = (0, import_react10.useState)({});
|
7407
|
+
const [rootRef, setRootRef] = (0, import_react10.useState)(null);
|
7408
|
+
const [open, setOpen] = (0, import_react10.useState)(false);
|
7409
|
+
const handleDxRefTagActivate = (0, import_react10.useCallback)((event) => {
|
6810
7410
|
const { refId, label, trigger: dxTrigger } = event;
|
6811
7411
|
setValue((value2) => ({
|
6812
7412
|
...value2,
|
@@ -6829,21 +7429,21 @@ var RefDropdownMenuProvider = ({ children, onLookup }) => {
|
|
6829
7429
|
}, [
|
6830
7430
|
onLookup
|
6831
7431
|
]);
|
6832
|
-
(0,
|
7432
|
+
(0, import_react10.useEffect)(() => {
|
6833
7433
|
return rootRef ? (0, import_async7.addEventListener)(rootRef, "dx-ref-tag-activate", handleDxRefTagActivate, customEventOptions2) : void 0;
|
6834
7434
|
}, [
|
6835
7435
|
rootRef
|
6836
7436
|
]);
|
6837
|
-
return /* @__PURE__ */
|
7437
|
+
return /* @__PURE__ */ import_react10.default.createElement(RefDropdownMenuContextProvider, {
|
6838
7438
|
pending: value.pending,
|
6839
7439
|
link: value.link,
|
6840
7440
|
target: value.target
|
6841
|
-
}, /* @__PURE__ */
|
7441
|
+
}, /* @__PURE__ */ import_react10.default.createElement(import_react_ui6.DropdownMenu.Root, {
|
6842
7442
|
open,
|
6843
7443
|
onOpenChange: setOpen
|
6844
|
-
}, /* @__PURE__ */
|
7444
|
+
}, /* @__PURE__ */ import_react10.default.createElement(import_react_ui6.DropdownMenu.VirtualTrigger, {
|
6845
7445
|
virtualRef: trigger
|
6846
|
-
}), /* @__PURE__ */
|
7446
|
+
}), /* @__PURE__ */ import_react10.default.createElement("div", {
|
6847
7447
|
role: "none",
|
6848
7448
|
className: "contents",
|
6849
7449
|
ref: setRootRef
|
@@ -6858,11 +7458,11 @@ var RefDropdownMenu = {
|
|
6858
7458
|
var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/hooks/useTextEditor.ts";
|
6859
7459
|
var instanceCount = 0;
|
6860
7460
|
var useTextEditor = (props = {}, deps = []) => {
|
6861
|
-
const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = (0,
|
6862
|
-
const [instanceId] = (0,
|
6863
|
-
const [view, setView] = (0,
|
6864
|
-
const parentRef = (0,
|
6865
|
-
(0,
|
7461
|
+
const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = (0, import_react11.useMemo)(() => (0, import_util6.getProviderValue)(props), deps ?? []);
|
7462
|
+
const [instanceId] = (0, import_react11.useState)(() => `text-editor-${++instanceCount}`);
|
7463
|
+
const [view, setView] = (0, import_react11.useState)();
|
7464
|
+
const parentRef = (0, import_react11.useRef)(null);
|
7465
|
+
(0, import_react11.useEffect)(() => {
|
6866
7466
|
let view2;
|
6867
7467
|
if (parentRef.current) {
|
6868
7468
|
(0, import_log8.log)("create", {
|
@@ -6871,7 +7471,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6871
7471
|
doc: initialValue?.length ?? 0
|
6872
7472
|
}, {
|
6873
7473
|
F: __dxlog_file13,
|
6874
|
-
L:
|
7474
|
+
L: 75,
|
6875
7475
|
S: void 0,
|
6876
7476
|
C: (f, a) => f(...a)
|
6877
7477
|
});
|
@@ -6887,27 +7487,27 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6887
7487
|
anchor
|
6888
7488
|
};
|
6889
7489
|
}
|
6890
|
-
const state =
|
7490
|
+
const state = import_state31.EditorState.create({
|
6891
7491
|
doc: doc ?? initialValue,
|
6892
7492
|
// selection: initialSelection,
|
6893
7493
|
extensions: [
|
6894
7494
|
id && documentId.of(id),
|
6895
7495
|
extensions,
|
6896
7496
|
// NOTE: This doesn't catch errors in keymap functions.
|
6897
|
-
|
7497
|
+
import_view36.EditorView.exceptionSink.of((err) => {
|
6898
7498
|
import_log8.log.catch(err, void 0, {
|
6899
7499
|
F: __dxlog_file13,
|
6900
|
-
L:
|
7500
|
+
L: 97,
|
6901
7501
|
S: void 0,
|
6902
7502
|
C: (f, a) => f(...a)
|
6903
7503
|
});
|
6904
7504
|
})
|
6905
7505
|
].filter(import_util6.isNotFalsy)
|
6906
7506
|
});
|
6907
|
-
view2 = new
|
7507
|
+
view2 = new import_view36.EditorView({
|
6908
7508
|
parent: parentRef.current,
|
6909
7509
|
state,
|
6910
|
-
scrollTo: scrollTo ?
|
7510
|
+
scrollTo: scrollTo ? import_view36.EditorView.scrollIntoView(scrollTo, {
|
6911
7511
|
yMargin: 96
|
6912
7512
|
}) : void 0,
|
6913
7513
|
dispatchTransactions: debug ? debugDispatcher : void 0
|
@@ -6929,14 +7529,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6929
7529
|
id
|
6930
7530
|
}, {
|
6931
7531
|
F: __dxlog_file13,
|
6932
|
-
L:
|
7532
|
+
L: 134,
|
6933
7533
|
S: void 0,
|
6934
7534
|
C: (f, a) => f(...a)
|
6935
7535
|
});
|
6936
7536
|
view2?.destroy();
|
6937
7537
|
};
|
6938
7538
|
}, deps);
|
6939
|
-
(0,
|
7539
|
+
(0, import_react11.useEffect)(() => {
|
6940
7540
|
if (view) {
|
6941
7541
|
if (scrollTo || selection) {
|
6942
7542
|
if (selection && selection.anchor > view.state.doc.length) {
|
@@ -6946,7 +7546,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6946
7546
|
selection
|
6947
7547
|
}, {
|
6948
7548
|
F: __dxlog_file13,
|
6949
|
-
L:
|
7549
|
+
L: 143,
|
6950
7550
|
S: void 0,
|
6951
7551
|
C: (f, a) => f(...a)
|
6952
7552
|
});
|
@@ -6963,7 +7563,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6963
7563
|
scrollTo,
|
6964
7564
|
selection
|
6965
7565
|
]);
|
6966
|
-
(0,
|
7566
|
+
(0, import_react11.useEffect)(() => {
|
6967
7567
|
if (view && autoFocus) {
|
6968
7568
|
view.focus();
|
6969
7569
|
}
|
@@ -6977,7 +7577,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6977
7577
|
Escape: view?.state.facet(editorInputMode).noTabster
|
6978
7578
|
}
|
6979
7579
|
});
|
6980
|
-
const handleKeyUp = (0,
|
7580
|
+
const handleKeyUp = (0, import_react11.useCallback)((event) => {
|
6981
7581
|
const { key, target, currentTarget } = event;
|
6982
7582
|
if (target === currentTarget) {
|
6983
7583
|
switch (key) {
|
@@ -7002,6 +7602,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7002
7602
|
};
|
7003
7603
|
// Annotate the CommonJS export names for ESM import in node:
|
7004
7604
|
0 && (module.exports = {
|
7605
|
+
CommandMenu,
|
7005
7606
|
Cursor,
|
7006
7607
|
EditorInputMode,
|
7007
7608
|
EditorInputModes,
|
@@ -7013,6 +7614,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7013
7614
|
Inline,
|
7014
7615
|
InputModeExtensions,
|
7015
7616
|
List,
|
7617
|
+
PreviewProvider,
|
7016
7618
|
RefDropdownMenu,
|
7017
7619
|
RefPopover,
|
7018
7620
|
RemoteSelectionsDecorator,
|
@@ -7036,11 +7638,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7036
7638
|
closeEffect,
|
7037
7639
|
command,
|
7038
7640
|
commandKeyBindings,
|
7641
|
+
commandMenu,
|
7642
|
+
commandRangeEffect,
|
7039
7643
|
commands,
|
7040
7644
|
commentClickedEffect,
|
7041
7645
|
comments,
|
7042
7646
|
commentsState,
|
7043
7647
|
convertTreeToJson,
|
7648
|
+
coreSlashCommands,
|
7044
7649
|
createBasicExtensions,
|
7045
7650
|
createComment,
|
7046
7651
|
createDataExtensions,
|
@@ -7068,6 +7673,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7068
7673
|
editorSlots,
|
7069
7674
|
editorWidth,
|
7070
7675
|
editorWithToolbarLayout,
|
7676
|
+
filterItems,
|
7071
7677
|
flattenRect,
|
7072
7678
|
floatingMenu,
|
7073
7679
|
focus,
|
@@ -7076,15 +7682,21 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7076
7682
|
formattingEquals,
|
7077
7683
|
formattingKeymap,
|
7078
7684
|
getFormatting,
|
7685
|
+
getItem,
|
7079
7686
|
getListItemContent,
|
7687
|
+
getNextItem,
|
7688
|
+
getPreviousItem,
|
7080
7689
|
getRange,
|
7081
7690
|
hashtag,
|
7082
7691
|
image,
|
7083
7692
|
indentItemLess,
|
7084
7693
|
indentItemMore,
|
7694
|
+
insertAtCursor,
|
7695
|
+
insertAtLineStart,
|
7085
7696
|
insertTable,
|
7086
7697
|
itemToJSON,
|
7087
7698
|
keymap,
|
7699
|
+
linkSlashCommands,
|
7088
7700
|
linkTooltip,
|
7089
7701
|
listItemToString,
|
7090
7702
|
listener,
|
@@ -7096,6 +7708,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7096
7708
|
mention,
|
7097
7709
|
moveItemDown,
|
7098
7710
|
moveItemUp,
|
7711
|
+
multilinePlaceholder,
|
7099
7712
|
openCommand,
|
7100
7713
|
openEffect,
|
7101
7714
|
outliner,
|
@@ -7138,6 +7751,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7138
7751
|
treeFacet,
|
7139
7752
|
typeahead,
|
7140
7753
|
typewriter,
|
7754
|
+
useCommandMenu,
|
7141
7755
|
useComments,
|
7142
7756
|
useEditorToolbarState,
|
7143
7757
|
useFormattingState,
|