@dxos/react-ui-editor 0.8.3-main.672df60 → 0.8.3-staging.0fa589b
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 +981 -377
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +1025 -420
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +981 -377
- 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/EditorToolbar.d.ts.map +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/RefDropdownMenu.d.ts.map +1 -1
- 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 +0 -1
- package/dist/types/src/defaults.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/command/action.d.ts.map +1 -1
- package/dist/types/src/extensions/command/command-menu.d.ts +20 -0
- package/dist/types/src/extensions/command/command-menu.d.ts.map +1 -0
- package/dist/types/src/extensions/command/command.d.ts.map +1 -1
- package/dist/types/src/extensions/command/{menu.d.ts → floating-menu.d.ts} +1 -1
- package/dist/types/src/extensions/command/floating-menu.d.ts.map +1 -0
- package/dist/types/src/extensions/command/hint.d.ts +5 -2
- package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
- package/dist/types/src/extensions/command/index.d.ts +3 -1
- package/dist/types/src/extensions/command/index.d.ts.map +1 -1
- package/dist/types/src/extensions/command/placeholder.d.ts +10 -0
- package/dist/types/src/extensions/command/placeholder.d.ts.map +1 -0
- package/dist/types/src/extensions/command/state.d.ts +1 -1
- package/dist/types/src/extensions/command/state.d.ts.map +1 -1
- package/dist/types/src/extensions/command/useCommandMenu.d.ts +26 -0
- package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +1 -0
- 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/markdown/bundle.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
- package/dist/types/src/extensions/preview/preview.d.ts +12 -19
- 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 +13 -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/dist/types/src/util/dom.d.ts +5 -0
- package/dist/types/src/util/dom.d.ts.map +1 -1
- package/dist/types/src/util/react.d.ts +2 -4
- package/dist/types/src/util/react.d.ts.map +1 -1
- package/package.json +31 -28
- package/src/components/EditorToolbar/EditorToolbar.tsx +5 -9
- package/src/components/Popover/CommandMenu.tsx +279 -0
- package/src/components/Popover/RefDropdownMenu.tsx +5 -3
- package/src/components/Popover/RefPopover.tsx +46 -22
- package/src/components/Popover/index.ts +1 -0
- package/src/defaults.ts +1 -6
- package/src/extensions/automerge/automerge.stories.tsx +5 -5
- package/src/extensions/command/action.ts +9 -2
- package/src/extensions/command/command-menu.ts +210 -0
- package/src/extensions/command/command.ts +8 -8
- package/src/extensions/command/{menu.ts → floating-menu.ts} +0 -4
- package/src/extensions/command/hint.ts +29 -9
- package/src/extensions/command/index.ts +3 -1
- package/src/extensions/command/placeholder.ts +113 -0
- package/src/extensions/command/state.ts +1 -2
- package/src/extensions/command/useCommandMenu.ts +118 -0
- package/src/extensions/factories.ts +4 -1
- package/src/extensions/markdown/bundle.ts +0 -2
- package/src/extensions/outliner/outliner.ts +0 -3
- package/src/extensions/outliner/tree.test.ts +13 -10
- package/src/extensions/outliner/tree.ts +5 -3
- package/src/extensions/preview/preview.ts +11 -89
- package/src/hooks/useTextEditor.ts +11 -12
- package/src/stories/Command.stories.tsx +1 -1
- package/src/stories/CommandMenu.stories.tsx +159 -0
- package/src/stories/Preview.stories.tsx +157 -78
- package/src/stories/components/util.tsx +2 -2
- package/src/util/dom.ts +20 -0
- package/src/util/react.tsx +3 -20
- package/dist/types/src/extensions/command/menu.d.ts.map +0 -1
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,22 @@ __export(node_exports, {
|
|
102
108
|
formattingEquals: () => formattingEquals,
|
103
109
|
formattingKeymap: () => formattingKeymap,
|
104
110
|
getFormatting: () => getFormatting,
|
111
|
+
getItem: () => getItem,
|
112
|
+
getLinkRef: () => getLinkRef,
|
105
113
|
getListItemContent: () => getListItemContent,
|
114
|
+
getNextItem: () => getNextItem,
|
115
|
+
getPreviousItem: () => getPreviousItem,
|
106
116
|
getRange: () => getRange,
|
107
117
|
hashtag: () => hashtag,
|
108
118
|
image: () => image,
|
109
119
|
indentItemLess: () => indentItemLess,
|
110
120
|
indentItemMore: () => indentItemMore,
|
121
|
+
insertAtCursor: () => insertAtCursor,
|
122
|
+
insertAtLineStart: () => insertAtLineStart,
|
111
123
|
insertTable: () => insertTable,
|
112
124
|
itemToJSON: () => itemToJSON,
|
113
125
|
keymap: () => import_view.keymap,
|
126
|
+
linkSlashCommands: () => linkSlashCommands,
|
114
127
|
linkTooltip: () => linkTooltip,
|
115
128
|
listItemToString: () => listItemToString,
|
116
129
|
listener: () => listener,
|
@@ -145,7 +158,6 @@ __export(node_exports, {
|
|
145
158
|
setStyle: () => setStyle,
|
146
159
|
singleValueFacet: () => singleValueFacet,
|
147
160
|
stackItemContentEditorClassNames: () => stackItemContentEditorClassNames,
|
148
|
-
stackItemContentToolbarClassNames: () => stackItemContentToolbarClassNames,
|
149
161
|
staticCompletion: () => staticCompletion,
|
150
162
|
table: () => table,
|
151
163
|
tags: () => import_highlight.tags,
|
@@ -164,6 +176,7 @@ __export(node_exports, {
|
|
164
176
|
treeFacet: () => treeFacet,
|
165
177
|
typeahead: () => typeahead,
|
166
178
|
typewriter: () => typewriter,
|
179
|
+
useCommandMenu: () => useCommandMenu,
|
167
180
|
useComments: () => useComments,
|
168
181
|
useEditorToolbarState: () => useEditorToolbarState,
|
169
182
|
useFormattingState: () => useFormattingState,
|
@@ -183,7 +196,6 @@ var import_react = __toESM(require("react"));
|
|
183
196
|
var import_app_graph = require("@dxos/app-graph");
|
184
197
|
var import_react_ui = require("@dxos/react-ui");
|
185
198
|
var import_react_ui_menu = require("@dxos/react-ui-menu");
|
186
|
-
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
187
199
|
var import_react2 = require("react");
|
188
200
|
var import_live_object = require("@dxos/live-object");
|
189
201
|
var import_react_ui_menu2 = require("@dxos/react-ui-menu");
|
@@ -206,7 +218,7 @@ var import_log2 = require("@dxos/log");
|
|
206
218
|
var import_react3 = __toESM(require("react"));
|
207
219
|
var import_client = require("react-dom/client");
|
208
220
|
var import_react_ui2 = require("@dxos/react-ui");
|
209
|
-
var
|
221
|
+
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
210
222
|
var import_state7 = require("@codemirror/state");
|
211
223
|
var import_view5 = require("@codemirror/view");
|
212
224
|
var import_async = require("@dxos/async");
|
@@ -221,138 +233,146 @@ var import_invariant2 = require("@dxos/invariant");
|
|
221
233
|
var import_state8 = require("@codemirror/state");
|
222
234
|
var import_state9 = require("@codemirror/state");
|
223
235
|
var import_view7 = require("@codemirror/view");
|
224
|
-
var import_view8 = require("@codemirror/view");
|
225
236
|
var import_state10 = require("@codemirror/state");
|
237
|
+
var import_view8 = require("@codemirror/view");
|
238
|
+
var import_util = require("@dxos/util");
|
239
|
+
var import_state11 = require("@codemirror/state");
|
226
240
|
var import_view9 = require("@codemirror/view");
|
241
|
+
var import_state12 = require("@codemirror/state");
|
227
242
|
var import_view10 = require("@codemirror/view");
|
228
|
-
var import_async3 = require("@dxos/async");
|
229
|
-
var import_state11 = require("@codemirror/state");
|
230
243
|
var import_view11 = require("@codemirror/view");
|
231
|
-
var import_commands = require("@codemirror/commands");
|
232
|
-
var import_state12 = require("@codemirror/state");
|
233
244
|
var import_view12 = require("@codemirror/view");
|
234
|
-
var
|
245
|
+
var import_async3 = require("@dxos/async");
|
235
246
|
var import_react4 = require("react");
|
236
|
-
var import_async4 = require("@dxos/async");
|
237
|
-
var import_log4 = require("@dxos/log");
|
238
|
-
var import_util = require("@dxos/util");
|
239
247
|
var import_state13 = require("@codemirror/state");
|
240
248
|
var import_view13 = require("@codemirror/view");
|
249
|
+
var import_commands = require("@codemirror/commands");
|
250
|
+
var import_state14 = require("@codemirror/state");
|
251
|
+
var import_view14 = require("@codemirror/view");
|
252
|
+
var import_lodash2 = __toESM(require("lodash.sortby"));
|
253
|
+
var import_react5 = require("react");
|
254
|
+
var import_async4 = require("@dxos/async");
|
255
|
+
var import_log4 = require("@dxos/log");
|
256
|
+
var import_util2 = require("@dxos/util");
|
257
|
+
var import_state15 = require("@codemirror/state");
|
258
|
+
var import_view15 = require("@codemirror/view");
|
241
259
|
var import_async5 = require("@dxos/async");
|
242
260
|
var import_invariant3 = require("@dxos/invariant");
|
243
|
-
var
|
261
|
+
var import_util3 = require("@dxos/util");
|
244
262
|
var import_language = require("@codemirror/language");
|
245
|
-
var
|
246
|
-
var
|
263
|
+
var import_state16 = require("@codemirror/state");
|
264
|
+
var import_view16 = require("@codemirror/view");
|
247
265
|
var import_autocomplete2 = require("@codemirror/autocomplete");
|
248
266
|
var import_commands2 = require("@codemirror/commands");
|
249
267
|
var import_language2 = require("@codemirror/language");
|
250
268
|
var import_search = require("@codemirror/search");
|
251
|
-
var
|
269
|
+
var import_state17 = require("@codemirror/state");
|
252
270
|
var import_theme_one_dark = require("@codemirror/theme-one-dark");
|
253
|
-
var
|
271
|
+
var import_view17 = require("@codemirror/view");
|
254
272
|
var import_lodash3 = __toESM(require("lodash.defaultsdeep"));
|
255
273
|
var import_lodash4 = __toESM(require("lodash.merge"));
|
256
274
|
var import_display_name = require("@dxos/display-name");
|
257
275
|
var import_log5 = require("@dxos/log");
|
258
|
-
var
|
259
|
-
var
|
260
|
-
var
|
276
|
+
var import_util4 = require("@dxos/util");
|
277
|
+
var import_state18 = require("@codemirror/state");
|
278
|
+
var import_view18 = require("@codemirror/view");
|
279
|
+
var import_view19 = require("@codemirror/view");
|
280
|
+
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
261
281
|
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
262
282
|
var import_react_ui_theme4 = require("@dxos/react-ui-theme");
|
263
|
-
var
|
283
|
+
var import_util5 = require("@dxos/util");
|
264
284
|
var import_language3 = require("@codemirror/language");
|
265
|
-
var
|
266
|
-
var
|
285
|
+
var import_view20 = require("@codemirror/view");
|
286
|
+
var import_react6 = __toESM(require("react"));
|
267
287
|
var import_react_ui3 = require("@dxos/react-ui");
|
268
|
-
var
|
288
|
+
var import_view21 = require("@codemirror/view");
|
269
289
|
var import_react_ui_theme5 = require("@dxos/react-ui-theme");
|
270
290
|
var import_lang_json = require("@codemirror/lang-json");
|
271
291
|
var import_lint = require("@codemirror/lint");
|
272
292
|
var import_ajv = __toESM(require("ajv"));
|
273
|
-
var
|
293
|
+
var import_view22 = require("@codemirror/view");
|
274
294
|
var import_autocomplete3 = require("@codemirror/autocomplete");
|
275
295
|
var import_language4 = require("@codemirror/language");
|
276
|
-
var
|
277
|
-
var
|
278
|
-
var
|
296
|
+
var import_state19 = require("@codemirror/state");
|
297
|
+
var import_view23 = require("@codemirror/view");
|
298
|
+
var import_react7 = require("react");
|
279
299
|
var import_autocomplete4 = require("@codemirror/autocomplete");
|
280
300
|
var import_commands3 = require("@codemirror/commands");
|
281
301
|
var import_lang_markdown2 = require("@codemirror/lang-markdown");
|
282
302
|
var import_language5 = require("@codemirror/language");
|
283
303
|
var import_language_data = require("@codemirror/language-data");
|
284
|
-
var
|
285
|
-
var
|
286
|
-
var import_util5 = require("@dxos/util");
|
304
|
+
var import_view24 = require("@codemirror/view");
|
305
|
+
var import_util6 = 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
|
311
|
+
var import_state20 = require("@codemirror/state");
|
293
312
|
var import_language8 = require("@codemirror/language");
|
294
|
-
var
|
295
|
-
var
|
313
|
+
var import_state21 = require("@codemirror/state");
|
314
|
+
var import_view25 = require("@codemirror/view");
|
296
315
|
var import_invariant4 = require("@dxos/invariant");
|
297
316
|
var import_react_ui_theme6 = 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
|
-
var import_state21 = require("@codemirror/state");
|
303
|
-
var import_view24 = require("@codemirror/view");
|
304
|
-
var import_view25 = require("@codemirror/view");
|
305
|
-
var import_language11 = require("@codemirror/language");
|
306
318
|
var import_state22 = require("@codemirror/state");
|
307
319
|
var import_view26 = require("@codemirror/view");
|
308
|
-
var
|
320
|
+
var import_language10 = require("@codemirror/language");
|
321
|
+
var import_state23 = require("@codemirror/state");
|
309
322
|
var import_view27 = require("@codemirror/view");
|
323
|
+
var import_view28 = require("@codemirror/view");
|
324
|
+
var import_language11 = require("@codemirror/language");
|
325
|
+
var import_state24 = require("@codemirror/state");
|
326
|
+
var import_view29 = require("@codemirror/view");
|
327
|
+
var import_language12 = require("@codemirror/language");
|
328
|
+
var import_view30 = require("@codemirror/view");
|
310
329
|
var import_react_ui_theme7 = 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_view31 = 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
|
-
var import_state24 = require("@codemirror/state");
|
322
|
-
var import_language14 = require("@codemirror/language");
|
323
338
|
var import_state25 = require("@codemirror/state");
|
339
|
+
var import_view32 = require("@codemirror/view");
|
324
340
|
var import_state26 = require("@codemirror/state");
|
325
|
-
var
|
341
|
+
var import_language14 = require("@codemirror/language");
|
326
342
|
var import_state27 = require("@codemirror/state");
|
327
|
-
var import_view30 = require("@codemirror/view");
|
328
|
-
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
329
343
|
var import_state28 = require("@codemirror/state");
|
330
|
-
var
|
344
|
+
var import_invariant5 = require("@dxos/invariant");
|
345
|
+
var import_state29 = require("@codemirror/state");
|
346
|
+
var import_view33 = require("@codemirror/view");
|
347
|
+
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
348
|
+
var import_state30 = require("@codemirror/state");
|
349
|
+
var import_view34 = 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
|
336
|
-
var
|
353
|
+
var import_state31 = require("@codemirror/state");
|
354
|
+
var import_view35 = require("@codemirror/view");
|
355
|
+
var import_view36 = require("@codemirror/view");
|
337
356
|
var import_search2 = require("@codemirror/search");
|
338
|
-
var import_view34 = require("@codemirror/view");
|
339
|
-
var import_react_ui_theme9 = require("@dxos/react-ui-theme");
|
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_state32 = require("@codemirror/state");
|
371
|
+
var import_view37 = 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
|
-
var
|
375
|
+
var import_util7 = require("@dxos/util");
|
356
376
|
var translationKey = "react-ui-editor";
|
357
377
|
var translations_default = [
|
358
378
|
{
|
@@ -814,6 +834,9 @@ var createElement = (tag, options, children) => {
|
|
814
834
|
if (options?.className) {
|
815
835
|
el.className = options.className;
|
816
836
|
}
|
837
|
+
if (options?.text) {
|
838
|
+
el.textContent = options.text;
|
839
|
+
}
|
817
840
|
if (children) {
|
818
841
|
el.append(...Array.isArray(children) ? children : [
|
819
842
|
children
|
@@ -823,13 +846,13 @@ var createElement = (tag, options, children) => {
|
|
823
846
|
};
|
824
847
|
var renderRoot = (root, node) => {
|
825
848
|
(0, import_client.createRoot)(root).render(/* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ThemeProvider, {
|
826
|
-
tx:
|
849
|
+
tx: import_react_ui_theme.defaultTx
|
827
850
|
}, node));
|
828
851
|
return root;
|
829
852
|
};
|
830
853
|
var createRenderer = (Component) => (el, props) => {
|
831
854
|
renderRoot(el, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ThemeProvider, {
|
832
|
-
tx:
|
855
|
+
tx: import_react_ui_theme.defaultTx
|
833
856
|
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Provider, null, /* @__PURE__ */ import_react3.default.createElement(Component, props))));
|
834
857
|
};
|
835
858
|
var automerge = (accessor) => {
|
@@ -1616,6 +1639,7 @@ var closeCommand = (view) => {
|
|
1616
1639
|
var commandKeyBindings = [
|
1617
1640
|
{
|
1618
1641
|
key: "/",
|
1642
|
+
preventDefault: true,
|
1619
1643
|
run: openCommand
|
1620
1644
|
},
|
1621
1645
|
{
|
@@ -1623,32 +1647,48 @@ var commandKeyBindings = [
|
|
1623
1647
|
run: closeCommand
|
1624
1648
|
}
|
1625
1649
|
];
|
1626
|
-
var
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1650
|
+
var hint = ({ delay = 3e3, onHint }) => {
|
1651
|
+
return import_view9.ViewPlugin.fromClass(class {
|
1652
|
+
constructor() {
|
1653
|
+
this.decorations = import_view9.Decoration.none;
|
1654
|
+
}
|
1655
|
+
update(update2) {
|
1656
|
+
if (this.timeout) {
|
1657
|
+
clearTimeout(this.timeout);
|
1658
|
+
this.timeout = void 0;
|
1659
|
+
}
|
1660
|
+
const builder = new import_state11.RangeSetBuilder();
|
1661
|
+
const cState = update2.view.state.field(commandState, false);
|
1662
|
+
if (!cState?.tooltip) {
|
1663
|
+
const selection = update2.view.state.selection.main;
|
1664
|
+
const line = update2.view.state.doc.lineAt(selection.from);
|
1665
|
+
if (selection.from === selection.to && line.from === line.to) {
|
1666
|
+
this.timeout = setTimeout(() => {
|
1667
|
+
const hint2 = onHint?.();
|
1668
|
+
if (hint2) {
|
1669
|
+
const builder2 = new import_state11.RangeSetBuilder();
|
1670
|
+
builder2.add(selection.from, selection.to, import_view9.Decoration.widget({
|
1671
|
+
widget: new Hint(hint2)
|
1672
|
+
}));
|
1673
|
+
this.decorations = builder2.finish();
|
1674
|
+
update2.view.update([]);
|
1675
|
+
}
|
1676
|
+
}, delay);
|
1642
1677
|
}
|
1643
1678
|
}
|
1679
|
+
this.decorations = builder.finish();
|
1644
1680
|
}
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
|
1681
|
+
destroy() {
|
1682
|
+
if (this.timeout) {
|
1683
|
+
clearTimeout(this.timeout);
|
1684
|
+
}
|
1685
|
+
}
|
1686
|
+
}, {
|
1687
|
+
provide: (plugin) => [
|
1688
|
+
import_view9.EditorView.decorations.of((view) => view.plugin(plugin)?.decorations ?? import_view9.Decoration.none)
|
1689
|
+
]
|
1690
|
+
});
|
1691
|
+
};
|
1652
1692
|
var Hint = class extends import_view9.WidgetType {
|
1653
1693
|
constructor(content) {
|
1654
1694
|
super(), this.content = content;
|
@@ -1689,24 +1729,254 @@ var Hint = class extends import_view9.WidgetType {
|
|
1689
1729
|
};
|
1690
1730
|
var command = (options = {}) => {
|
1691
1731
|
return [
|
1692
|
-
import_view8.keymap.of(commandKeyBindings),
|
1732
|
+
import_state10.Prec.highest(import_view8.keymap.of(commandKeyBindings)),
|
1693
1733
|
commandConfig.of(options),
|
1694
1734
|
commandState,
|
1695
|
-
options.onHint
|
1696
|
-
|
1697
|
-
}) : [],
|
1698
|
-
import_view8.EditorView.focusChangeEffect.of((_, focusing) => {
|
1699
|
-
return focusing ? closeEffect.of(null) : null;
|
1700
|
-
}),
|
1735
|
+
options.onHint && hint(options),
|
1736
|
+
import_view8.EditorView.focusChangeEffect.of((_, focusing) => focusing ? closeEffect.of(null) : null),
|
1701
1737
|
import_view8.EditorView.theme({
|
1702
1738
|
".cm-tooltip": {
|
1703
1739
|
background: "transparent"
|
1704
1740
|
}
|
1705
1741
|
})
|
1742
|
+
].filter(import_util.isNonNullable);
|
1743
|
+
};
|
1744
|
+
var placeholder = ({ delay = 3e3, content }) => {
|
1745
|
+
const plugin = import_view11.ViewPlugin.fromClass(class {
|
1746
|
+
constructor() {
|
1747
|
+
this.decorations = import_view11.Decoration.none;
|
1748
|
+
}
|
1749
|
+
update(update2) {
|
1750
|
+
if (this.timeout) {
|
1751
|
+
window.clearTimeout(this.timeout);
|
1752
|
+
this.timeout = void 0;
|
1753
|
+
}
|
1754
|
+
const activeLine = update2.view.state.doc.lineAt(update2.view.state.selection.main.head);
|
1755
|
+
const isEmpty = activeLine.text.trim() === "";
|
1756
|
+
if (isEmpty) {
|
1757
|
+
const lineStart = activeLine.from;
|
1758
|
+
this.timeout = setTimeout(() => {
|
1759
|
+
this.decorations = import_view11.Decoration.set([
|
1760
|
+
import_view11.Decoration.widget({
|
1761
|
+
widget: new Placeholder(content),
|
1762
|
+
side: 1
|
1763
|
+
}).range(lineStart)
|
1764
|
+
]);
|
1765
|
+
update2.view.update([]);
|
1766
|
+
}, delay);
|
1767
|
+
}
|
1768
|
+
this.decorations = import_view11.Decoration.none;
|
1769
|
+
}
|
1770
|
+
destroy() {
|
1771
|
+
if (this.timeout) {
|
1772
|
+
clearTimeout(this.timeout);
|
1773
|
+
}
|
1774
|
+
}
|
1775
|
+
}, {
|
1776
|
+
provide: (plugin2) => {
|
1777
|
+
return [
|
1778
|
+
import_view11.EditorView.decorations.of((view) => view.plugin(plugin2)?.decorations ?? import_view11.Decoration.none)
|
1779
|
+
];
|
1780
|
+
}
|
1781
|
+
});
|
1782
|
+
return typeof content === "string" ? [
|
1783
|
+
plugin,
|
1784
|
+
import_view11.EditorView.contentAttributes.of({
|
1785
|
+
"aria-placeholder": content
|
1786
|
+
})
|
1787
|
+
] : plugin;
|
1788
|
+
};
|
1789
|
+
var Placeholder = class extends import_view11.WidgetType {
|
1790
|
+
constructor(content) {
|
1791
|
+
super(), this.content = content;
|
1792
|
+
}
|
1793
|
+
toDOM(view) {
|
1794
|
+
const wrap = document.createElement("span");
|
1795
|
+
wrap.className = "cm-placeholder";
|
1796
|
+
wrap.style.pointerEvents = "none";
|
1797
|
+
wrap.appendChild(typeof this.content === "string" ? document.createTextNode(this.content) : typeof this.content === "function" ? this.content(view) : this.content.cloneNode(true));
|
1798
|
+
wrap.setAttribute("aria-hidden", "true");
|
1799
|
+
return wrap;
|
1800
|
+
}
|
1801
|
+
coordsAt(dom) {
|
1802
|
+
const rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];
|
1803
|
+
if (!rects.length) {
|
1804
|
+
return null;
|
1805
|
+
}
|
1806
|
+
const style = window.getComputedStyle(dom.parentNode);
|
1807
|
+
const rect = flattenRect(rects[0], style.direction !== "rtl");
|
1808
|
+
const lineHeight = parseInt(style.lineHeight);
|
1809
|
+
if (rect.bottom - rect.top > lineHeight * 1.5) {
|
1810
|
+
return {
|
1811
|
+
left: rect.left,
|
1812
|
+
right: rect.right,
|
1813
|
+
top: rect.top,
|
1814
|
+
bottom: rect.top + lineHeight
|
1815
|
+
};
|
1816
|
+
}
|
1817
|
+
return rect;
|
1818
|
+
}
|
1819
|
+
ignoreEvent() {
|
1820
|
+
return false;
|
1821
|
+
}
|
1822
|
+
};
|
1823
|
+
var commandMenu = (options) => {
|
1824
|
+
const commandMenuPlugin = import_view10.ViewPlugin.fromClass(class {
|
1825
|
+
constructor(view) {
|
1826
|
+
this.view = view;
|
1827
|
+
this.decorations = import_view10.Decoration.none;
|
1828
|
+
}
|
1829
|
+
// TODO(wittjosiah): The decorations are repainted on every update, this occasionally causes menu to flicker.
|
1830
|
+
update(update2) {
|
1831
|
+
const builder = new import_state12.RangeSetBuilder();
|
1832
|
+
const selection = update2.view.state.selection.main;
|
1833
|
+
const { range: activeRange, trigger } = update2.view.state.field(commandMenuState) ?? {};
|
1834
|
+
const shouldShowWidget = activeRange && selection.head >= activeRange.from && selection.head <= activeRange.to;
|
1835
|
+
if (shouldShowWidget) {
|
1836
|
+
builder.add(activeRange.from, activeRange.to, import_view10.Decoration.mark({
|
1837
|
+
tagName: "dx-ref-tag",
|
1838
|
+
class: "cm-ref-tag",
|
1839
|
+
attributes: {
|
1840
|
+
"data-auto-trigger": "true",
|
1841
|
+
"data-trigger": trigger
|
1842
|
+
}
|
1843
|
+
}));
|
1844
|
+
}
|
1845
|
+
const activeRangeChanged = update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(commandRangeEffect)));
|
1846
|
+
if (activeRange && activeRangeChanged && trigger) {
|
1847
|
+
const content = update2.view.state.sliceDoc(activeRange.from + 1, activeRange.to);
|
1848
|
+
options.onTextChange?.(trigger, content);
|
1849
|
+
}
|
1850
|
+
this.decorations = builder.finish();
|
1851
|
+
}
|
1852
|
+
}, {
|
1853
|
+
decorations: (v) => v.decorations
|
1854
|
+
});
|
1855
|
+
const triggers = Array.isArray(options.trigger) ? options.trigger : [
|
1856
|
+
options.trigger
|
1857
|
+
];
|
1858
|
+
const commandKeymap = import_view10.keymap.of([
|
1859
|
+
...triggers.map((trigger) => ({
|
1860
|
+
key: trigger,
|
1861
|
+
preventDefault: true,
|
1862
|
+
run: (view) => {
|
1863
|
+
const selection = view.state.selection.main;
|
1864
|
+
const line = view.state.doc.lineAt(selection.head);
|
1865
|
+
if (line.text.trim() === "" || selection.head === line.from || selection.head > line.from && line.text[selection.head - line.from - 1] === " ") {
|
1866
|
+
view.dispatch({
|
1867
|
+
changes: {
|
1868
|
+
from: selection.head,
|
1869
|
+
insert: trigger
|
1870
|
+
},
|
1871
|
+
selection: {
|
1872
|
+
anchor: selection.head + 1,
|
1873
|
+
head: selection.head + 1
|
1874
|
+
},
|
1875
|
+
effects: commandRangeEffect.of({
|
1876
|
+
trigger,
|
1877
|
+
range: {
|
1878
|
+
from: selection.head,
|
1879
|
+
to: selection.head + 1
|
1880
|
+
}
|
1881
|
+
})
|
1882
|
+
});
|
1883
|
+
return true;
|
1884
|
+
}
|
1885
|
+
return false;
|
1886
|
+
}
|
1887
|
+
})),
|
1888
|
+
{
|
1889
|
+
key: "Enter",
|
1890
|
+
run: (view) => {
|
1891
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1892
|
+
if (activeRange) {
|
1893
|
+
view.dispatch({
|
1894
|
+
changes: {
|
1895
|
+
from: activeRange.from,
|
1896
|
+
to: activeRange.to,
|
1897
|
+
insert: ""
|
1898
|
+
}
|
1899
|
+
});
|
1900
|
+
options.onEnter?.();
|
1901
|
+
return true;
|
1902
|
+
}
|
1903
|
+
return false;
|
1904
|
+
}
|
1905
|
+
},
|
1906
|
+
{
|
1907
|
+
key: "ArrowDown",
|
1908
|
+
run: (view) => {
|
1909
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1910
|
+
if (activeRange) {
|
1911
|
+
options.onArrowDown?.();
|
1912
|
+
return true;
|
1913
|
+
}
|
1914
|
+
return false;
|
1915
|
+
}
|
1916
|
+
},
|
1917
|
+
{
|
1918
|
+
key: "ArrowUp",
|
1919
|
+
run: (view) => {
|
1920
|
+
const activeRange = view.state.field(commandMenuState)?.range;
|
1921
|
+
if (activeRange) {
|
1922
|
+
options.onArrowUp?.();
|
1923
|
+
return true;
|
1924
|
+
}
|
1925
|
+
return false;
|
1926
|
+
}
|
1927
|
+
}
|
1928
|
+
]);
|
1929
|
+
const updateListener = import_view10.EditorView.updateListener.of((update2) => {
|
1930
|
+
const { trigger, range: activeRange } = update2.view.state.field(commandMenuState) ?? {};
|
1931
|
+
if (!activeRange || !trigger) {
|
1932
|
+
return;
|
1933
|
+
}
|
1934
|
+
const selection = update2.view.state.selection.main;
|
1935
|
+
const firstChar = update2.view.state.doc.sliceString(activeRange.from, activeRange.from + 1);
|
1936
|
+
const shouldRemove = firstChar !== trigger || // Trigger deleted.
|
1937
|
+
selection.head < activeRange.from || // Cursor moved before the range.
|
1938
|
+
selection.head > activeRange.to + 1;
|
1939
|
+
const nextRange = shouldRemove ? null : update2.docChanged ? {
|
1940
|
+
from: activeRange.from,
|
1941
|
+
to: selection.head
|
1942
|
+
} : activeRange;
|
1943
|
+
if (nextRange !== activeRange) {
|
1944
|
+
update2.view.dispatch({
|
1945
|
+
effects: commandRangeEffect.of(nextRange ? {
|
1946
|
+
trigger,
|
1947
|
+
range: nextRange
|
1948
|
+
} : null)
|
1949
|
+
});
|
1950
|
+
}
|
1951
|
+
if (shouldRemove) {
|
1952
|
+
options.onClose?.();
|
1953
|
+
}
|
1954
|
+
});
|
1955
|
+
return [
|
1956
|
+
import_state12.Prec.highest(commandKeymap),
|
1957
|
+
placeholder(Object.assign({
|
1958
|
+
content: `Press '${Array.isArray(options.trigger) ? options.trigger[0] : options.trigger}' for commands`
|
1959
|
+
}, options.placeholder)),
|
1960
|
+
updateListener,
|
1961
|
+
commandMenuState,
|
1962
|
+
commandMenuPlugin
|
1706
1963
|
];
|
1707
1964
|
};
|
1965
|
+
var commandRangeEffect = import_state12.StateEffect.define();
|
1966
|
+
var commandMenuState = import_state12.StateField.define({
|
1967
|
+
create: () => null,
|
1968
|
+
update: (value, tr) => {
|
1969
|
+
let newValue = value;
|
1970
|
+
for (const effect of tr.effects) {
|
1971
|
+
if (effect.is(commandRangeEffect)) {
|
1972
|
+
newValue = effect.value;
|
1973
|
+
}
|
1974
|
+
}
|
1975
|
+
return newValue;
|
1976
|
+
}
|
1977
|
+
});
|
1708
1978
|
var floatingMenu = (options = {}) => [
|
1709
|
-
|
1979
|
+
import_view12.ViewPlugin.fromClass(class {
|
1710
1980
|
constructor(view) {
|
1711
1981
|
this.view = view;
|
1712
1982
|
const container = view.scrollDOM;
|
@@ -1771,7 +2041,7 @@ var floatingMenu = (options = {}) => [
|
|
1771
2041
|
this.rafId = requestAnimationFrame(this.updateButtonPosition.bind(this));
|
1772
2042
|
}
|
1773
2043
|
}),
|
1774
|
-
|
2044
|
+
import_view12.EditorView.theme({
|
1775
2045
|
".cm-ref-tag": {
|
1776
2046
|
position: "fixed",
|
1777
2047
|
padding: "0",
|
@@ -1781,9 +2051,6 @@ var floatingMenu = (options = {}) => [
|
|
1781
2051
|
"[data-has-focus] & .cm-ref-tag": {
|
1782
2052
|
opacity: "1"
|
1783
2053
|
},
|
1784
|
-
"[data-is-attention-source] & .cm-ref-tag": {
|
1785
|
-
opacity: "1"
|
1786
|
-
},
|
1787
2054
|
".cm-ref-tag button": {
|
1788
2055
|
display: "grid",
|
1789
2056
|
alignItems: "center",
|
@@ -1793,10 +2060,108 @@ var floatingMenu = (options = {}) => [
|
|
1793
2060
|
}
|
1794
2061
|
})
|
1795
2062
|
];
|
2063
|
+
var useCommandMenu = ({ viewRef, trigger, placeholder: placeholder3, getMenu }) => {
|
2064
|
+
const triggerRef = (0, import_react4.useRef)(null);
|
2065
|
+
const currentRef = (0, import_react4.useRef)(null);
|
2066
|
+
const groupsRef = (0, import_react4.useRef)([]);
|
2067
|
+
const [currentItem, setCurrentItem] = (0, import_react4.useState)();
|
2068
|
+
const [open, setOpen] = (0, import_react4.useState)(false);
|
2069
|
+
const [_, refresh] = (0, import_react4.useState)({});
|
2070
|
+
const handleOpenChange = (0, import_react4.useCallback)(async (open2, trigger2) => {
|
2071
|
+
if (open2 && trigger2) {
|
2072
|
+
groupsRef.current = await getMenu(trigger2);
|
2073
|
+
}
|
2074
|
+
setOpen(open2);
|
2075
|
+
if (!open2) {
|
2076
|
+
triggerRef.current = null;
|
2077
|
+
setCurrentItem(void 0);
|
2078
|
+
viewRef.current?.dispatch({
|
2079
|
+
effects: [
|
2080
|
+
commandRangeEffect.of(null)
|
2081
|
+
]
|
2082
|
+
});
|
2083
|
+
}
|
2084
|
+
}, [
|
2085
|
+
getMenu
|
2086
|
+
]);
|
2087
|
+
const handleActivate = (0, import_react4.useCallback)(async (event) => {
|
2088
|
+
const item = getItem(groupsRef.current, currentItem);
|
2089
|
+
if (item) {
|
2090
|
+
currentRef.current = item;
|
2091
|
+
}
|
2092
|
+
triggerRef.current = event.trigger;
|
2093
|
+
const triggerKey = event.trigger.getAttribute("data-trigger");
|
2094
|
+
if (!open && triggerKey) {
|
2095
|
+
await handleOpenChange(true, triggerKey);
|
2096
|
+
}
|
2097
|
+
}, [
|
2098
|
+
open,
|
2099
|
+
handleOpenChange
|
2100
|
+
]);
|
2101
|
+
const handleSelect = (0, import_react4.useCallback)((item) => {
|
2102
|
+
const view = viewRef.current;
|
2103
|
+
if (!view) {
|
2104
|
+
return;
|
2105
|
+
}
|
2106
|
+
const selection = view.state.selection.main;
|
2107
|
+
void item.onSelect?.(view, selection.head);
|
2108
|
+
}, []);
|
2109
|
+
const serializedTrigger = Array.isArray(trigger) ? trigger.join(",") : trigger;
|
2110
|
+
const _commandMenu = (0, import_react4.useMemo)(() => {
|
2111
|
+
return commandMenu({
|
2112
|
+
trigger,
|
2113
|
+
placeholder: placeholder3,
|
2114
|
+
onClose: () => handleOpenChange(false),
|
2115
|
+
onArrowDown: () => {
|
2116
|
+
setCurrentItem((currentItem2) => {
|
2117
|
+
const next = getNextItem(groupsRef.current, currentItem2);
|
2118
|
+
currentRef.current = next;
|
2119
|
+
return next.id;
|
2120
|
+
});
|
2121
|
+
},
|
2122
|
+
onArrowUp: () => {
|
2123
|
+
setCurrentItem((currentItem2) => {
|
2124
|
+
const previous = getPreviousItem(groupsRef.current, currentItem2);
|
2125
|
+
currentRef.current = previous;
|
2126
|
+
return previous.id;
|
2127
|
+
});
|
2128
|
+
},
|
2129
|
+
onEnter: () => {
|
2130
|
+
if (currentRef.current) {
|
2131
|
+
handleSelect(currentRef.current);
|
2132
|
+
}
|
2133
|
+
},
|
2134
|
+
onTextChange: async (trigger2, text) => {
|
2135
|
+
groupsRef.current = await getMenu(trigger2, text);
|
2136
|
+
const firstItem = groupsRef.current.filter((group) => group.items.length > 0)[0]?.items[0];
|
2137
|
+
if (firstItem) {
|
2138
|
+
setCurrentItem(firstItem.id);
|
2139
|
+
currentRef.current = firstItem;
|
2140
|
+
}
|
2141
|
+
refresh({});
|
2142
|
+
}
|
2143
|
+
});
|
2144
|
+
}, [
|
2145
|
+
handleOpenChange,
|
2146
|
+
getMenu,
|
2147
|
+
serializedTrigger,
|
2148
|
+
placeholder3
|
2149
|
+
]);
|
2150
|
+
return {
|
2151
|
+
commandMenu: _commandMenu,
|
2152
|
+
currentItem,
|
2153
|
+
groupsRef,
|
2154
|
+
ref: triggerRef,
|
2155
|
+
open,
|
2156
|
+
onActivate: handleActivate,
|
2157
|
+
onOpenChange: setOpen,
|
2158
|
+
onSelect: handleSelect
|
2159
|
+
};
|
2160
|
+
};
|
1796
2161
|
var typeahead = ({ onComplete } = {}) => {
|
1797
|
-
let
|
2162
|
+
let hint2;
|
1798
2163
|
const complete = (view) => {
|
1799
|
-
if (!
|
2164
|
+
if (!hint2) {
|
1800
2165
|
return false;
|
1801
2166
|
}
|
1802
2167
|
const selection = view.state.selection.main;
|
@@ -1805,30 +2170,30 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1805
2170
|
{
|
1806
2171
|
from: selection.from,
|
1807
2172
|
to: selection.to,
|
1808
|
-
insert:
|
2173
|
+
insert: hint2
|
1809
2174
|
}
|
1810
2175
|
],
|
1811
|
-
selection:
|
2176
|
+
selection: import_state13.EditorSelection.cursor(selection.from + hint2.length)
|
1812
2177
|
});
|
1813
2178
|
return true;
|
1814
2179
|
};
|
1815
2180
|
return [
|
1816
|
-
|
2181
|
+
import_view13.ViewPlugin.fromClass(class {
|
1817
2182
|
constructor() {
|
1818
|
-
this.decorations =
|
2183
|
+
this.decorations = import_view13.Decoration.none;
|
1819
2184
|
}
|
1820
2185
|
update(update2) {
|
1821
|
-
const builder = new
|
2186
|
+
const builder = new import_state13.RangeSetBuilder();
|
1822
2187
|
const selection = update2.view.state.selection.main;
|
1823
2188
|
const line = update2.view.state.doc.lineAt(selection.from);
|
1824
2189
|
if (selection.from === selection.to && selection.from === line.to) {
|
1825
2190
|
const str = update2.state.sliceDoc(line.from, selection.from);
|
1826
|
-
|
2191
|
+
hint2 = onComplete?.({
|
1827
2192
|
line: str
|
1828
2193
|
});
|
1829
|
-
if (
|
1830
|
-
builder.add(selection.from, selection.to,
|
1831
|
-
widget: new Hint(
|
2194
|
+
if (hint2) {
|
2195
|
+
builder.add(selection.from, selection.to, import_view13.Decoration.widget({
|
2196
|
+
widget: new Hint(hint2)
|
1832
2197
|
}));
|
1833
2198
|
}
|
1834
2199
|
}
|
@@ -1838,7 +2203,7 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1838
2203
|
decorations: (v) => v.decorations
|
1839
2204
|
}),
|
1840
2205
|
// Keys.
|
1841
|
-
|
2206
|
+
import_state13.Prec.highest(import_view13.keymap.of([
|
1842
2207
|
{
|
1843
2208
|
key: "Tab",
|
1844
2209
|
preventDefault: true,
|
@@ -1879,10 +2244,10 @@ var createEditorStateTransaction = ({ scrollTo, selection }) => {
|
|
1879
2244
|
return {
|
1880
2245
|
selection,
|
1881
2246
|
scrollIntoView: !scrollTo,
|
1882
|
-
effects: scrollTo ?
|
2247
|
+
effects: scrollTo ? import_view15.EditorView.scrollIntoView(scrollTo, {
|
1883
2248
|
yMargin: 96
|
1884
2249
|
}) : void 0,
|
1885
|
-
annotations:
|
2250
|
+
annotations: import_state15.Transaction.userEvent.of(stateRestoreAnnotation)
|
1886
2251
|
};
|
1887
2252
|
};
|
1888
2253
|
var createEditorStateStore = (keyPrefix) => ({
|
@@ -1921,7 +2286,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1921
2286
|
// setStateDebounced(id, {});
|
1922
2287
|
// },
|
1923
2288
|
// }),
|
1924
|
-
|
2289
|
+
import_view15.EditorView.updateListener.of(({ view, transactions }) => {
|
1925
2290
|
const id = view.state.facet(documentId);
|
1926
2291
|
if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
|
1927
2292
|
return;
|
@@ -1944,7 +2309,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1944
2309
|
}
|
1945
2310
|
}
|
1946
2311
|
}),
|
1947
|
-
getState &&
|
2312
|
+
getState && import_view15.keymap.of([
|
1948
2313
|
{
|
1949
2314
|
key: "ctrl-r",
|
1950
2315
|
run: (view) => {
|
@@ -1956,13 +2321,13 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
1956
2321
|
}
|
1957
2322
|
}
|
1958
2323
|
])
|
1959
|
-
].filter(
|
2324
|
+
].filter(import_util3.isNotFalsy);
|
1960
2325
|
};
|
1961
2326
|
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 =
|
2327
|
+
var setComments = import_state14.StateEffect.define();
|
2328
|
+
var setSelection = import_state14.StateEffect.define();
|
2329
|
+
var setCommentState = import_state14.StateEffect.define();
|
2330
|
+
var commentsState = import_state14.StateField.define({
|
1966
2331
|
create: (state) => ({
|
1967
2332
|
id: state.facet(documentId),
|
1968
2333
|
comments: [],
|
@@ -1987,7 +2352,7 @@ var commentsState = import_state12.StateField.define({
|
|
1987
2352
|
comment,
|
1988
2353
|
range
|
1989
2354
|
};
|
1990
|
-
}).filter(
|
2355
|
+
}).filter(import_util2.isNonNullable);
|
1991
2356
|
return {
|
1992
2357
|
...value,
|
1993
2358
|
comments: commentStates
|
@@ -2000,7 +2365,7 @@ var commentsState = import_state12.StateField.define({
|
|
2000
2365
|
return value;
|
2001
2366
|
}
|
2002
2367
|
});
|
2003
|
-
var styles2 =
|
2368
|
+
var styles2 = import_view14.EditorView.theme({
|
2004
2369
|
".cm-comment, .cm-comment-current": {
|
2005
2370
|
margin: "0 -3px",
|
2006
2371
|
padding: "3px",
|
@@ -2013,14 +2378,14 @@ var styles2 = import_view12.EditorView.theme({
|
|
2013
2378
|
textDecoration: "underline"
|
2014
2379
|
}
|
2015
2380
|
});
|
2016
|
-
var createCommentMark = (id, isCurrent) =>
|
2381
|
+
var createCommentMark = (id, isCurrent) => import_view14.Decoration.mark({
|
2017
2382
|
class: isCurrent ? "cm-comment-current" : "cm-comment",
|
2018
2383
|
attributes: {
|
2019
2384
|
"data-testid": "cm-comment",
|
2020
2385
|
"data-comment-id": id
|
2021
2386
|
}
|
2022
2387
|
});
|
2023
|
-
var commentsDecorations =
|
2388
|
+
var commentsDecorations = import_view14.EditorView.decorations.compute([
|
2024
2389
|
commentsState
|
2025
2390
|
], (state) => {
|
2026
2391
|
const { selection: { current }, comments: comments2 } = state.field(commentsState);
|
@@ -2039,11 +2404,11 @@ var commentsDecorations = import_view12.EditorView.decorations.compute([
|
|
2039
2404
|
}
|
2040
2405
|
const mark = createCommentMark(comment.comment.id, comment.comment.id === current);
|
2041
2406
|
return mark.range(range.from, range.to);
|
2042
|
-
}).filter(
|
2043
|
-
return
|
2407
|
+
}).filter(import_util2.isNonNullable);
|
2408
|
+
return import_view14.Decoration.set(decorations2);
|
2044
2409
|
});
|
2045
|
-
var commentClickedEffect =
|
2046
|
-
var handleCommentClick =
|
2410
|
+
var commentClickedEffect = import_state14.StateEffect.define();
|
2411
|
+
var handleCommentClick = import_view14.EditorView.domEventHandlers({
|
2047
2412
|
click: (event, view) => {
|
2048
2413
|
let target = event.target;
|
2049
2414
|
const editorRoot = view.dom;
|
@@ -2082,7 +2447,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2082
2447
|
}
|
2083
2448
|
};
|
2084
2449
|
return [
|
2085
|
-
|
2450
|
+
import_view14.EditorView.domEventHandlers({
|
2086
2451
|
cut: handleTrack,
|
2087
2452
|
copy: handleTrack
|
2088
2453
|
}),
|
@@ -2104,7 +2469,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2104
2469
|
return effects;
|
2105
2470
|
}),
|
2106
2471
|
// Handle paste or the undo of comment deletion.
|
2107
|
-
|
2472
|
+
import_view14.EditorView.updateListener.of((update2) => {
|
2108
2473
|
const restore = [];
|
2109
2474
|
for (let i = 0; i < update2.transactions.length; i++) {
|
2110
2475
|
const tr = update2.transactions[i];
|
@@ -2160,7 +2525,7 @@ var mapTrackedComment = (comment, changes) => ({
|
|
2160
2525
|
from: changes.mapPos(comment.from, 1),
|
2161
2526
|
to: changes.mapPos(comment.to, 1)
|
2162
2527
|
});
|
2163
|
-
var restoreCommentEffect =
|
2528
|
+
var restoreCommentEffect = import_state14.StateEffect.define({
|
2164
2529
|
map: mapTrackedComment
|
2165
2530
|
});
|
2166
2531
|
var createComment = (view) => {
|
@@ -2205,7 +2570,7 @@ var comments = (options = {}) => {
|
|
2205
2570
|
//
|
2206
2571
|
// Keymap.
|
2207
2572
|
//
|
2208
|
-
options.onCreate &&
|
2573
|
+
options.onCreate && import_view14.keymap.of([
|
2209
2574
|
{
|
2210
2575
|
key: shortcut,
|
2211
2576
|
run: callbackWrapper(createComment)
|
@@ -2215,7 +2580,7 @@ var comments = (options = {}) => {
|
|
2215
2580
|
// Hover tooltip (for key shortcut hints, etc.)
|
2216
2581
|
// TODO(burdon): Factor out to generic hints extension for current selection/line.
|
2217
2582
|
//
|
2218
|
-
options.renderTooltip && (0,
|
2583
|
+
options.renderTooltip && (0, import_view14.hoverTooltip)((view, pos) => {
|
2219
2584
|
const selection = view.state.selection.main;
|
2220
2585
|
if (selection && pos >= selection.from && pos <= selection.to) {
|
2221
2586
|
return {
|
@@ -2246,7 +2611,7 @@ var comments = (options = {}) => {
|
|
2246
2611
|
//
|
2247
2612
|
// Track deleted ranges and update ranges for decorations.
|
2248
2613
|
//
|
2249
|
-
|
2614
|
+
import_view14.EditorView.updateListener.of(({ view, state, changes }) => {
|
2250
2615
|
let mod = false;
|
2251
2616
|
const { comments: comments2, ...value } = state.field(commentsState);
|
2252
2617
|
changes.iterChanges((from, to, from2, to2) => {
|
@@ -2278,7 +2643,7 @@ var comments = (options = {}) => {
|
|
2278
2643
|
//
|
2279
2644
|
// Track selection/proximity.
|
2280
2645
|
//
|
2281
|
-
|
2646
|
+
import_view14.EditorView.updateListener.of(({ view, state }) => {
|
2282
2647
|
let min = Infinity;
|
2283
2648
|
const { selection: { current, closest }, comments: comments2 } = state.field(commentsState);
|
2284
2649
|
const { head } = state.selection.main;
|
@@ -2312,7 +2677,7 @@ var comments = (options = {}) => {
|
|
2312
2677
|
}
|
2313
2678
|
}),
|
2314
2679
|
options.onUpdate && trackPastedComments(options.onUpdate)
|
2315
|
-
].filter(
|
2680
|
+
].filter(import_util2.isNonNullable);
|
2316
2681
|
};
|
2317
2682
|
var scrollThreadIntoView = (view, id, center = true) => {
|
2318
2683
|
const comment = view.state.field(commentsState).comments.find((range2) => range2.comment.id === id);
|
@@ -2332,7 +2697,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2332
2697
|
anchor: range.from
|
2333
2698
|
} : void 0,
|
2334
2699
|
effects: [
|
2335
|
-
needsScroll ?
|
2700
|
+
needsScroll ? import_view14.EditorView.scrollIntoView(range.from, center ? {
|
2336
2701
|
y: "center"
|
2337
2702
|
} : void 0) : [],
|
2338
2703
|
needsSelectionUpdate ? setSelection.of({
|
@@ -2362,13 +2727,13 @@ var ExternalCommentSync = class {
|
|
2362
2727
|
this.unsubscribe = subscribe(updateComments);
|
2363
2728
|
}
|
2364
2729
|
};
|
2365
|
-
var createExternalCommentSync = (id, subscribe, getComments) =>
|
2730
|
+
var createExternalCommentSync = (id, subscribe, getComments) => import_view14.ViewPlugin.fromClass(class {
|
2366
2731
|
constructor(view) {
|
2367
2732
|
return new ExternalCommentSync(view, id, subscribe, getComments);
|
2368
2733
|
}
|
2369
2734
|
});
|
2370
2735
|
var useComments = (view, id, comments2) => {
|
2371
|
-
(0,
|
2736
|
+
(0, import_react5.useEffect)(() => {
|
2372
2737
|
if (view) {
|
2373
2738
|
if (id === view.state.facet(documentId)) {
|
2374
2739
|
view.dispatch({
|
@@ -2385,12 +2750,12 @@ var debugNodeLogger = (log9 = console.log) => {
|
|
2385
2750
|
const logTokens = (state) => (0, import_language.syntaxTree)(state).iterate({
|
2386
2751
|
enter: (node) => log9(node.type)
|
2387
2752
|
});
|
2388
|
-
return
|
2753
|
+
return import_state16.StateField.define({
|
2389
2754
|
create: (state) => logTokens(state),
|
2390
2755
|
update: (_, tr) => logTokens(tr.state)
|
2391
2756
|
});
|
2392
2757
|
};
|
2393
|
-
var styles3 =
|
2758
|
+
var styles3 = import_view16.EditorView.theme({
|
2394
2759
|
".cm-dropCursor": {
|
2395
2760
|
borderLeft: "2px solid var(--dx-accentText)",
|
2396
2761
|
color: "var(--dx-accentText)",
|
@@ -2403,8 +2768,8 @@ var styles3 = import_view14.EditorView.theme({
|
|
2403
2768
|
var dropFile = (options = {}) => {
|
2404
2769
|
return [
|
2405
2770
|
styles3,
|
2406
|
-
(0,
|
2407
|
-
|
2771
|
+
(0, import_view16.dropCursor)(),
|
2772
|
+
import_view16.EditorView.domEventHandlers({
|
2408
2773
|
drop: (event, view) => {
|
2409
2774
|
event.preventDefault();
|
2410
2775
|
const files = event.dataTransfer?.files;
|
@@ -2423,8 +2788,8 @@ var dropFile = (options = {}) => {
|
|
2423
2788
|
})
|
2424
2789
|
];
|
2425
2790
|
};
|
2426
|
-
var focusEffect =
|
2427
|
-
var focusField =
|
2791
|
+
var focusEffect = import_state18.StateEffect.define();
|
2792
|
+
var focusField = import_state18.StateField.define({
|
2428
2793
|
create: () => false,
|
2429
2794
|
update: (value, tr) => {
|
2430
2795
|
for (const effect of tr.effects) {
|
@@ -2437,7 +2802,7 @@ var focusField = import_state16.StateField.define({
|
|
2437
2802
|
});
|
2438
2803
|
var focus = [
|
2439
2804
|
focusField,
|
2440
|
-
|
2805
|
+
import_view18.EditorView.domEventHandlers({
|
2441
2806
|
focus: (event, view) => {
|
2442
2807
|
setTimeout(() => view.dispatch({
|
2443
2808
|
effects: focusEffect.of(true)
|
@@ -2467,7 +2832,7 @@ var theme = {
|
|
2467
2832
|
}
|
2468
2833
|
};
|
2469
2834
|
var getToken = (path, defaultValue) => {
|
2470
|
-
const value = (0,
|
2835
|
+
const value = (0, import_util5.get)(import_react_ui_theme4.tokens, path, defaultValue);
|
2471
2836
|
return value?.toString() ?? "";
|
2472
2837
|
};
|
2473
2838
|
var fontBody = getToken("fontFamily.body");
|
@@ -2682,8 +3047,30 @@ var defaultTheme = {
|
|
2682
3047
|
borderTop: "1px solid var(--dx-separator)"
|
2683
3048
|
}
|
2684
3049
|
};
|
3050
|
+
var editorWidth = "!mli-auto is-full max-is-[min(50rem,100%-4rem)]";
|
3051
|
+
var editorSlots = {
|
3052
|
+
scroll: {
|
3053
|
+
className: "pbs-2"
|
3054
|
+
},
|
3055
|
+
content: {
|
3056
|
+
className: editorWidth
|
3057
|
+
}
|
3058
|
+
};
|
3059
|
+
var editorGutter = import_view19.EditorView.theme({
|
3060
|
+
".cm-gutters": {
|
3061
|
+
background: "var(--dx-baseSurface)",
|
3062
|
+
paddingRight: "1rem"
|
3063
|
+
}
|
3064
|
+
});
|
3065
|
+
var editorMonospace = import_view19.EditorView.theme({
|
3066
|
+
".cm-content": {
|
3067
|
+
fontFamily: fontMono
|
3068
|
+
}
|
3069
|
+
});
|
3070
|
+
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
3071
|
+
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme2.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");
|
2685
3072
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/factories.ts";
|
2686
|
-
var preventNewline =
|
3073
|
+
var preventNewline = import_state17.EditorState.transactionFilter.of((tr) => tr.newDoc.lines > 1 ? [] : tr);
|
2687
3074
|
var defaultBasicOptions = {
|
2688
3075
|
allowMultipleSelections: true,
|
2689
3076
|
bracketMatching: true,
|
@@ -2705,33 +3092,37 @@ var createBasicExtensions = (_props) => {
|
|
2705
3092
|
const props = (0, import_lodash3.default)({}, _props, defaultBasicOptions);
|
2706
3093
|
return [
|
2707
3094
|
// NOTE: Doesn't catch errors in keymap functions.
|
2708
|
-
|
3095
|
+
import_view17.EditorView.exceptionSink.of((err) => {
|
2709
3096
|
import_log5.log.catch(err, void 0, {
|
2710
3097
|
F: __dxlog_file8,
|
2711
|
-
L:
|
3098
|
+
L: 100,
|
2712
3099
|
S: void 0,
|
2713
3100
|
C: (f, a) => f(...a)
|
2714
3101
|
});
|
2715
3102
|
}),
|
2716
|
-
props.allowMultipleSelections &&
|
3103
|
+
props.allowMultipleSelections && import_state17.EditorState.allowMultipleSelections.of(true),
|
2717
3104
|
props.bracketMatching && (0, import_language2.bracketMatching)(),
|
2718
3105
|
props.closeBrackets && (0, import_autocomplete2.closeBrackets)(),
|
2719
|
-
props.dropCursor && (0,
|
2720
|
-
props.drawSelection && (0,
|
3106
|
+
props.dropCursor && (0, import_view17.dropCursor)(),
|
3107
|
+
props.drawSelection && (0, import_view17.drawSelection)({
|
2721
3108
|
cursorBlinkRate: 1200
|
2722
3109
|
}),
|
2723
|
-
props.editable !== void 0 &&
|
3110
|
+
props.editable !== void 0 && import_view17.EditorView.editable.of(props.editable),
|
2724
3111
|
props.focus && focus,
|
2725
|
-
props.highlightActiveLine && (0,
|
3112
|
+
props.highlightActiveLine && (0, import_view17.highlightActiveLine)(),
|
2726
3113
|
props.history && (0, import_commands2.history)(),
|
2727
|
-
props.lineNumbers &&
|
2728
|
-
|
2729
|
-
|
2730
|
-
|
2731
|
-
props.
|
2732
|
-
props.
|
3114
|
+
props.lineNumbers && [
|
3115
|
+
(0, import_view17.lineNumbers)(),
|
3116
|
+
editorGutter
|
3117
|
+
],
|
3118
|
+
props.lineWrapping && import_view17.EditorView.lineWrapping,
|
3119
|
+
props.monospace && editorMonospace,
|
3120
|
+
props.placeholder && (0, import_view17.placeholder)(props.placeholder),
|
3121
|
+
props.readOnly !== void 0 && import_state17.EditorState.readOnly.of(props.readOnly),
|
3122
|
+
props.scrollPastEnd && (0, import_view17.scrollPastEnd)(),
|
3123
|
+
props.tabSize && import_state17.EditorState.tabSize.of(props.tabSize),
|
2733
3124
|
// https://codemirror.net/docs/ref/#view.KeyBinding
|
2734
|
-
|
3125
|
+
import_view17.keymap.of([
|
2735
3126
|
...(props.keymap && keymaps[props.keymap]) ?? [],
|
2736
3127
|
// NOTE: Tabs are also configured by markdown extension.
|
2737
3128
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
@@ -2751,8 +3142,8 @@ var createBasicExtensions = (_props) => {
|
|
2751
3142
|
preventDefault: true,
|
2752
3143
|
run: () => true
|
2753
3144
|
}
|
2754
|
-
].filter(
|
2755
|
-
].filter(
|
3145
|
+
].filter(import_util4.isNotFalsy))
|
3146
|
+
].filter(import_util4.isNotFalsy);
|
2756
3147
|
};
|
2757
3148
|
var defaultThemeSlots = {
|
2758
3149
|
editor: {
|
@@ -2762,22 +3153,22 @@ var defaultThemeSlots = {
|
|
2762
3153
|
var createThemeExtensions = ({ themeMode, styles: styles4, syntaxHighlighting: _syntaxHighlighting, slots: _slots } = {}) => {
|
2763
3154
|
const slots = (0, import_lodash3.default)({}, _slots, defaultThemeSlots);
|
2764
3155
|
return [
|
2765
|
-
|
2766
|
-
|
3156
|
+
import_view17.EditorView.darkTheme.of(themeMode === "dark"),
|
3157
|
+
import_view17.EditorView.baseTheme(styles4 ? (0, import_lodash4.default)({}, defaultTheme, styles4) : defaultTheme),
|
2767
3158
|
// https://github.com/codemirror/theme-one-dark
|
2768
3159
|
_syntaxHighlighting && (themeMode === "dark" ? (0, import_language2.syntaxHighlighting)(import_theme_one_dark.oneDarkHighlightStyle) : (0, import_language2.syntaxHighlighting)(import_language2.defaultHighlightStyle)),
|
2769
|
-
slots.editor?.className &&
|
3160
|
+
slots.editor?.className && import_view17.EditorView.editorAttributes.of({
|
2770
3161
|
class: slots.editor.className
|
2771
3162
|
}),
|
2772
|
-
slots.content?.className &&
|
3163
|
+
slots.content?.className && import_view17.EditorView.contentAttributes.of({
|
2773
3164
|
class: slots.content.className
|
2774
3165
|
}),
|
2775
|
-
slots.scroll?.className &&
|
3166
|
+
slots.scroll?.className && import_view17.ViewPlugin.fromClass(class {
|
2776
3167
|
constructor(view) {
|
2777
3168
|
view.scrollDOM.classList.add(slots.scroll.className);
|
2778
3169
|
}
|
2779
3170
|
})
|
2780
|
-
].filter(
|
3171
|
+
].filter(import_util4.isNotFalsy);
|
2781
3172
|
};
|
2782
3173
|
var createDataExtensions = ({ id, text, space, identity }) => {
|
2783
3174
|
const extensions = [];
|
@@ -2786,7 +3177,7 @@ var createDataExtensions = ({ id, text, space, identity }) => {
|
|
2786
3177
|
}
|
2787
3178
|
if (space && identity) {
|
2788
3179
|
const peerId = identity?.identityKey.toHex();
|
2789
|
-
const hue = identity?.profile?.data?.hue ?? (0,
|
3180
|
+
const hue = identity?.profile?.data?.hue ?? (0, import_util4.hexToHue)(peerId ?? "0");
|
2790
3181
|
extensions.push(awareness(new SpaceAwarenessProvider({
|
2791
3182
|
space,
|
2792
3183
|
channel: `awareness.${id}`,
|
@@ -2811,7 +3202,7 @@ var folding = (_props = {}) => [
|
|
2811
3202
|
const el = createElement("div", {
|
2812
3203
|
className: "flex h-full items-center"
|
2813
3204
|
});
|
2814
|
-
return renderRoot(el, /* @__PURE__ */
|
3205
|
+
return renderRoot(el, /* @__PURE__ */ import_react6.default.createElement(import_react_ui3.Icon, {
|
2815
3206
|
icon: "ph--caret-right--bold",
|
2816
3207
|
size: 3,
|
2817
3208
|
classNames: [
|
@@ -2821,7 +3212,7 @@ var folding = (_props = {}) => [
|
|
2821
3212
|
}));
|
2822
3213
|
}
|
2823
3214
|
}),
|
2824
|
-
|
3215
|
+
import_view20.EditorView.theme({
|
2825
3216
|
".cm-foldGutter": {
|
2826
3217
|
opacity: 0.3,
|
2827
3218
|
transition: "opacity 0.3s",
|
@@ -2832,7 +3223,7 @@ var folding = (_props = {}) => [
|
|
2832
3223
|
}
|
2833
3224
|
})
|
2834
3225
|
];
|
2835
|
-
var TagWidget = class extends
|
3226
|
+
var TagWidget = class extends import_view21.WidgetType {
|
2836
3227
|
constructor(_text) {
|
2837
3228
|
super(), this._text = _text;
|
2838
3229
|
}
|
@@ -2843,14 +3234,14 @@ var TagWidget = class extends import_view18.WidgetType {
|
|
2843
3234
|
return span;
|
2844
3235
|
}
|
2845
3236
|
};
|
2846
|
-
var tagMatcher = new
|
3237
|
+
var tagMatcher = new import_view21.MatchDecorator({
|
2847
3238
|
regexp: /#(\w+)\W/g,
|
2848
|
-
decoration: (match) =>
|
3239
|
+
decoration: (match) => import_view21.Decoration.replace({
|
2849
3240
|
widget: new TagWidget(match[1])
|
2850
3241
|
})
|
2851
3242
|
});
|
2852
3243
|
var hashtag = () => [
|
2853
|
-
|
3244
|
+
import_view21.ViewPlugin.fromClass(class {
|
2854
3245
|
constructor(view) {
|
2855
3246
|
this.tags = tagMatcher.createDeco(view);
|
2856
3247
|
}
|
@@ -2859,11 +3250,11 @@ var hashtag = () => [
|
|
2859
3250
|
}
|
2860
3251
|
}, {
|
2861
3252
|
decorations: (instance) => instance.tags,
|
2862
|
-
provide: (plugin) =>
|
2863
|
-
return view.plugin(plugin)?.tags ||
|
3253
|
+
provide: (plugin) => import_view21.EditorView.atomicRanges.of((view) => {
|
3254
|
+
return view.plugin(plugin)?.tags || import_view21.Decoration.none;
|
2864
3255
|
})
|
2865
3256
|
}),
|
2866
|
-
|
3257
|
+
import_view21.EditorView.theme({
|
2867
3258
|
".cm-tag": {
|
2868
3259
|
borderRadius: "4px",
|
2869
3260
|
marginRight: "6px",
|
@@ -2913,11 +3304,11 @@ var schemaLinter = (validate) => (view) => {
|
|
2913
3304
|
};
|
2914
3305
|
var listener = ({ onFocus, onChange }) => {
|
2915
3306
|
const extensions = [];
|
2916
|
-
onFocus && extensions.push(
|
3307
|
+
onFocus && extensions.push(import_view22.EditorView.focusChangeEffect.of((_, focusing) => {
|
2917
3308
|
onFocus(focusing);
|
2918
3309
|
return null;
|
2919
3310
|
}));
|
2920
|
-
onChange && extensions.push(
|
3311
|
+
onChange && extensions.push(import_view22.EditorView.updateListener.of((update2) => {
|
2921
3312
|
onChange(update2.state.doc.toString(), update2.state.facet(documentId));
|
2922
3313
|
}));
|
2923
3314
|
return extensions;
|
@@ -3040,7 +3431,7 @@ var setStyle = (type, enable) => {
|
|
3040
3431
|
to: range.head + found + marker.length
|
3041
3432
|
}
|
3042
3433
|
],
|
3043
|
-
range:
|
3434
|
+
range: import_state19.EditorSelection.cursor(range.from - marker.length)
|
3044
3435
|
};
|
3045
3436
|
}
|
3046
3437
|
}
|
@@ -3168,13 +3559,13 @@ var setStyle = (type, enable) => {
|
|
3168
3559
|
from: range.head,
|
3169
3560
|
insert: marker + marker
|
3170
3561
|
},
|
3171
|
-
range:
|
3562
|
+
range: import_state19.EditorSelection.cursor(range.head + marker.length)
|
3172
3563
|
};
|
3173
3564
|
}
|
3174
3565
|
const changeSet = state.changes(changes2.concat(changesAtEnd));
|
3175
3566
|
return {
|
3176
3567
|
changes: changeSet,
|
3177
|
-
range: range.empty && !changeSet.empty ?
|
3568
|
+
range: range.empty && !changeSet.empty ? import_state19.EditorSelection.cursor(range.head + marker.length) : import_state19.EditorSelection.range(changeSet.mapPos(range.from, 1), changeSet.mapPos(range.to, -1))
|
3178
3569
|
};
|
3179
3570
|
});
|
3180
3571
|
dispatch(state.update(changes, {
|
@@ -3374,7 +3765,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3374
3765
|
const changeSet = state.changes(changes2.concat(changesAfter));
|
3375
3766
|
return {
|
3376
3767
|
changes: changeSet,
|
3377
|
-
range:
|
3768
|
+
range: import_state19.EditorSelection.cursor(changeSet.mapPos(to, 1) - cursorOffset - (url ? url.length + 2 : 0))
|
3378
3769
|
};
|
3379
3770
|
});
|
3380
3771
|
if (changes.changes.empty) {
|
@@ -3808,7 +4199,7 @@ var toggleCodeblock = (target) => {
|
|
3808
4199
|
};
|
3809
4200
|
var formattingKeymap = (_options = {}) => {
|
3810
4201
|
return [
|
3811
|
-
|
4202
|
+
import_view23.keymap.of([
|
3812
4203
|
{
|
3813
4204
|
key: "meta-b",
|
3814
4205
|
run: toggleStrong
|
@@ -4009,7 +4400,7 @@ var getFormatting = (state) => {
|
|
4009
4400
|
};
|
4010
4401
|
};
|
4011
4402
|
var useFormattingState = (state) => {
|
4012
|
-
return (0,
|
4403
|
+
return (0, import_react7.useMemo)(() => import_view23.EditorView.updateListener.of((update2) => {
|
4013
4404
|
if (update2.docChanged || update2.selectionSet) {
|
4014
4405
|
Object.entries(getFormatting(update2.state)).forEach(([key, active]) => {
|
4015
4406
|
state[key] = active;
|
@@ -4261,17 +4652,16 @@ var createMarkdownExtensions = (options = {}) => {
|
|
4261
4652
|
}),
|
4262
4653
|
// Custom styles.
|
4263
4654
|
(0, import_language5.syntaxHighlighting)(markdownHighlightStyle()),
|
4264
|
-
|
4655
|
+
import_view24.keymap.of([
|
4265
4656
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
4266
4657
|
options.indentWithTab !== false && import_commands3.indentWithTab,
|
4267
4658
|
// https://codemirror.net/docs/ref/#commands.defaultKeymap
|
4268
4659
|
...import_commands3.defaultKeymap,
|
4269
|
-
...import_autocomplete4.completionKeymap
|
4270
|
-
|
4271
|
-
].filter(import_util5.isNotFalsy))
|
4660
|
+
...import_autocomplete4.completionKeymap
|
4661
|
+
].filter(import_util6.isNotFalsy))
|
4272
4662
|
];
|
4273
4663
|
};
|
4274
|
-
var debugTree = (cb) =>
|
4664
|
+
var debugTree = (cb) => import_state20.StateField.define({
|
4275
4665
|
create: (state) => cb(convertTreeToJson(state)),
|
4276
4666
|
update: (value, tr) => cb(convertTreeToJson(tr.state))
|
4277
4667
|
});
|
@@ -4295,12 +4685,12 @@ var convertTreeToJson = (state) => {
|
|
4295
4685
|
return treeToJson((0, import_language7.syntaxTree)(state).cursor());
|
4296
4686
|
};
|
4297
4687
|
var adjustChanges = () => {
|
4298
|
-
return
|
4688
|
+
return import_view26.ViewPlugin.fromClass(class {
|
4299
4689
|
update(update2) {
|
4300
4690
|
const tree = (0, import_language9.syntaxTree)(update2.state);
|
4301
4691
|
const adjustments = [];
|
4302
4692
|
for (const tr of update2.transactions) {
|
4303
|
-
const event = tr.annotation(
|
4693
|
+
const event = tr.annotation(import_state22.Transaction.userEvent);
|
4304
4694
|
switch (event) {
|
4305
4695
|
//
|
4306
4696
|
// Enter
|
@@ -4435,9 +4825,9 @@ var getValidUrl = (str) => {
|
|
4435
4825
|
};
|
4436
4826
|
var image = (_options = {}) => {
|
4437
4827
|
return [
|
4438
|
-
|
4828
|
+
import_state23.StateField.define({
|
4439
4829
|
create: (state) => {
|
4440
|
-
return
|
4830
|
+
return import_view27.Decoration.set(buildDecorations(0, state.doc.length, state));
|
4441
4831
|
},
|
4442
4832
|
update: (value, tr) => {
|
4443
4833
|
if (!tr.docChanged && !tr.selection) {
|
@@ -4460,7 +4850,7 @@ var image = (_options = {}) => {
|
|
4460
4850
|
add: buildDecorations(from, to, tr.state)
|
4461
4851
|
});
|
4462
4852
|
},
|
4463
|
-
provide: (field) =>
|
4853
|
+
provide: (field) => import_view27.EditorView.decorations.from(field)
|
4464
4854
|
})
|
4465
4855
|
];
|
4466
4856
|
};
|
@@ -4478,7 +4868,7 @@ var buildDecorations = (from, to, state) => {
|
|
4478
4868
|
return;
|
4479
4869
|
}
|
4480
4870
|
preloadImage(url);
|
4481
|
-
decorations2.push(
|
4871
|
+
decorations2.push(import_view27.Decoration.replace({
|
4482
4872
|
block: true,
|
4483
4873
|
widget: new ImageWidget(url)
|
4484
4874
|
}).range(hide2 ? node.from : node.to, node.to));
|
@@ -4498,7 +4888,7 @@ var preloadImage = (url) => {
|
|
4498
4888
|
preloaded.add(url);
|
4499
4889
|
}
|
4500
4890
|
};
|
4501
|
-
var ImageWidget = class extends
|
4891
|
+
var ImageWidget = class extends import_view27.WidgetType {
|
4502
4892
|
constructor(_url) {
|
4503
4893
|
super(), this._url = _url;
|
4504
4894
|
}
|
@@ -4519,7 +4909,7 @@ var ImageWidget = class extends import_view24.WidgetType {
|
|
4519
4909
|
};
|
4520
4910
|
var bulletListIndentationWidth = 24;
|
4521
4911
|
var orderedListIndentationWidth = 36;
|
4522
|
-
var formattingStyles =
|
4912
|
+
var formattingStyles = import_view28.EditorView.theme({
|
4523
4913
|
/**
|
4524
4914
|
* Horizontal rule.
|
4525
4915
|
*/
|
@@ -4638,14 +5028,14 @@ var formattingStyles = import_view25.EditorView.theme({
|
|
4638
5028
|
}
|
4639
5029
|
});
|
4640
5030
|
var table = (options = {}) => {
|
4641
|
-
return
|
5031
|
+
return import_state24.StateField.define({
|
4642
5032
|
create: (state) => update(state, options),
|
4643
5033
|
update: (_, tr) => update(tr.state, options),
|
4644
|
-
provide: (field) =>
|
5034
|
+
provide: (field) => import_view29.EditorView.decorations.from(field)
|
4645
5035
|
});
|
4646
5036
|
};
|
4647
5037
|
var update = (state, _options) => {
|
4648
|
-
const builder = new
|
5038
|
+
const builder = new import_state24.RangeSetBuilder();
|
4649
5039
|
const cursor = state.selection.main.head;
|
4650
5040
|
const tables = [];
|
4651
5041
|
const getTable = () => tables[tables.length - 1];
|
@@ -4686,19 +5076,19 @@ var update = (state, _options) => {
|
|
4686
5076
|
tables.forEach((table2) => {
|
4687
5077
|
const replace = state.readOnly || cursor < table2.from || cursor > table2.to;
|
4688
5078
|
if (replace) {
|
4689
|
-
builder.add(table2.from, table2.to,
|
5079
|
+
builder.add(table2.from, table2.to, import_view29.Decoration.replace({
|
4690
5080
|
block: true,
|
4691
5081
|
widget: new TableWidget(table2)
|
4692
5082
|
}));
|
4693
5083
|
} else {
|
4694
|
-
builder.add(table2.from, table2.to,
|
5084
|
+
builder.add(table2.from, table2.to, import_view29.Decoration.mark({
|
4695
5085
|
class: "cm-table"
|
4696
5086
|
}));
|
4697
5087
|
}
|
4698
5088
|
});
|
4699
5089
|
return builder.finish();
|
4700
5090
|
};
|
4701
|
-
var TableWidget = class extends
|
5091
|
+
var TableWidget = class extends import_view29.WidgetType {
|
4702
5092
|
constructor(_table) {
|
4703
5093
|
super(), this._table = _table;
|
4704
5094
|
}
|
@@ -4737,14 +5127,14 @@ var Unicode = {
|
|
4737
5127
|
bulletSmall: "\u2219",
|
4738
5128
|
bulletSquare: "\u2B1D"
|
4739
5129
|
};
|
4740
|
-
var HorizontalRuleWidget = class extends
|
5130
|
+
var HorizontalRuleWidget = class extends import_view25.WidgetType {
|
4741
5131
|
toDOM() {
|
4742
5132
|
const el = document.createElement("span");
|
4743
5133
|
el.className = "cm-hr";
|
4744
5134
|
return el;
|
4745
5135
|
}
|
4746
5136
|
};
|
4747
|
-
var LinkButton = class extends
|
5137
|
+
var LinkButton = class extends import_view25.WidgetType {
|
4748
5138
|
constructor(url, render) {
|
4749
5139
|
super(), this.url = url, this.render = render;
|
4750
5140
|
}
|
@@ -4760,7 +5150,7 @@ var LinkButton = class extends import_view22.WidgetType {
|
|
4760
5150
|
return el;
|
4761
5151
|
}
|
4762
5152
|
};
|
4763
|
-
var CheckboxWidget = class extends
|
5153
|
+
var CheckboxWidget = class extends import_view25.WidgetType {
|
4764
5154
|
constructor(_checked) {
|
4765
5155
|
super(), this._checked = _checked;
|
4766
5156
|
}
|
@@ -4804,7 +5194,7 @@ var CheckboxWidget = class extends import_view22.WidgetType {
|
|
4804
5194
|
return false;
|
4805
5195
|
}
|
4806
5196
|
};
|
4807
|
-
var TextWidget = class extends
|
5197
|
+
var TextWidget = class extends import_view25.WidgetType {
|
4808
5198
|
constructor(text, className) {
|
4809
5199
|
super(), this.text = text, this.className = className;
|
4810
5200
|
}
|
@@ -4817,29 +5207,29 @@ var TextWidget = class extends import_view22.WidgetType {
|
|
4817
5207
|
return el;
|
4818
5208
|
}
|
4819
5209
|
};
|
4820
|
-
var hide =
|
4821
|
-
var blockQuote =
|
5210
|
+
var hide = import_view25.Decoration.replace({});
|
5211
|
+
var blockQuote = import_view25.Decoration.line({
|
4822
5212
|
class: "cm-blockquote"
|
4823
5213
|
});
|
4824
|
-
var fencedCodeLine =
|
5214
|
+
var fencedCodeLine = import_view25.Decoration.line({
|
4825
5215
|
class: "cm-code cm-codeblock-line"
|
4826
5216
|
});
|
4827
|
-
var fencedCodeLineFirst =
|
5217
|
+
var fencedCodeLineFirst = import_view25.Decoration.line({
|
4828
5218
|
class: (0, import_react_ui_theme6.mx)("cm-code cm-codeblock-line", "cm-codeblock-start")
|
4829
5219
|
});
|
4830
|
-
var fencedCodeLineLast =
|
5220
|
+
var fencedCodeLineLast = import_view25.Decoration.line({
|
4831
5221
|
class: (0, import_react_ui_theme6.mx)("cm-code cm-codeblock-line", "cm-codeblock-end")
|
4832
5222
|
});
|
4833
5223
|
var commentBlockLine = fencedCodeLine;
|
4834
5224
|
var commentBlockLineFirst = fencedCodeLineFirst;
|
4835
5225
|
var commentBlockLineLast = fencedCodeLineLast;
|
4836
|
-
var horizontalRule =
|
5226
|
+
var horizontalRule = import_view25.Decoration.replace({
|
4837
5227
|
widget: new HorizontalRuleWidget()
|
4838
5228
|
});
|
4839
|
-
var checkedTask =
|
5229
|
+
var checkedTask = import_view25.Decoration.replace({
|
4840
5230
|
widget: new CheckboxWidget(true)
|
4841
5231
|
});
|
4842
|
-
var uncheckedTask =
|
5232
|
+
var uncheckedTask = import_view25.Decoration.replace({
|
4843
5233
|
widget: new CheckboxWidget(false)
|
4844
5234
|
});
|
4845
5235
|
var editingRange = (state, range, focus2) => {
|
@@ -4855,8 +5245,8 @@ var autoHideTags = /* @__PURE__ */ new Set([
|
|
4855
5245
|
"SuperscriptMark"
|
4856
5246
|
]);
|
4857
5247
|
var buildDecorations2 = (view, options, focus2) => {
|
4858
|
-
const deco = new
|
4859
|
-
const atomicDeco = new
|
5248
|
+
const deco = new import_state21.RangeSetBuilder();
|
5249
|
+
const atomicDeco = new import_state21.RangeSetBuilder();
|
4860
5250
|
const { state } = view;
|
4861
5251
|
const headerLevels = [];
|
4862
5252
|
const getHeaderLevels = (node, level) => {
|
@@ -4943,7 +5333,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4943
5333
|
} else {
|
4944
5334
|
const num = headers.slice(from - 1).map((level2) => level2?.number ?? 0).join(".") + " ";
|
4945
5335
|
if (num.length) {
|
4946
|
-
atomicDeco.add(mark.from, mark.from + len,
|
5336
|
+
atomicDeco.add(mark.from, mark.from + len, import_view25.Decoration.replace({
|
4947
5337
|
widget: new TextWidget(num, theme.heading(level))
|
4948
5338
|
}));
|
4949
5339
|
}
|
@@ -4968,7 +5358,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4968
5358
|
if (node.from === line.to - 1) {
|
4969
5359
|
return false;
|
4970
5360
|
}
|
4971
|
-
deco.add(line.from, line.from,
|
5361
|
+
deco.add(line.from, line.from, import_view25.Decoration.line({
|
4972
5362
|
class: "cm-list-item",
|
4973
5363
|
attributes: {
|
4974
5364
|
style: `padding-left: ${offset}px; text-indent: -${width}px;`
|
@@ -4985,7 +5375,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
4985
5375
|
const label = list.type === "OrderedList" ? `${++list.number}.` : Unicode.bulletSmall;
|
4986
5376
|
const line = state.doc.lineAt(node.from);
|
4987
5377
|
const to = state.doc.sliceString(node.to, node.to + 1) === " " ? node.to + 1 : node.to;
|
4988
|
-
atomicDeco.add(line.from, to,
|
5378
|
+
atomicDeco.add(line.from, to, import_view25.Decoration.replace({
|
4989
5379
|
widget: new TextWidget(label, list.type === "OrderedList" ? "cm-list-mark cm-list-mark-ordered" : "cm-list-mark cm-list-mark-bullet")
|
4990
5380
|
}));
|
4991
5381
|
break;
|
@@ -5072,7 +5462,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5072
5462
|
if (!editing) {
|
5073
5463
|
atomicDeco.add(node.from, marks[0].to, hide);
|
5074
5464
|
}
|
5075
|
-
deco.add(marks[0].to, marks[1].from,
|
5465
|
+
deco.add(marks[0].to, marks[1].from, import_view25.Decoration.mark({
|
5076
5466
|
tagName: "a",
|
5077
5467
|
attributes: {
|
5078
5468
|
class: "cm-link",
|
@@ -5082,7 +5472,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5082
5472
|
}
|
5083
5473
|
}));
|
5084
5474
|
if (!editing) {
|
5085
|
-
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ?
|
5475
|
+
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ? import_view25.Decoration.replace({
|
5086
5476
|
widget: new LinkButton(url, options.renderLinkButton)
|
5087
5477
|
}) : hide);
|
5088
5478
|
}
|
@@ -5137,10 +5527,10 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5137
5527
|
atomicDeco: atomicDeco.finish()
|
5138
5528
|
};
|
5139
5529
|
};
|
5140
|
-
var forceUpdate =
|
5530
|
+
var forceUpdate = import_state21.StateEffect.define();
|
5141
5531
|
var decorateMarkdown = (options = {}) => {
|
5142
5532
|
return [
|
5143
|
-
|
5533
|
+
import_view25.ViewPlugin.fromClass(class {
|
5144
5534
|
constructor(view) {
|
5145
5535
|
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations2(view, options, view.hasFocus));
|
5146
5536
|
}
|
@@ -5172,9 +5562,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5172
5562
|
}
|
5173
5563
|
}, {
|
5174
5564
|
provide: (plugin) => [
|
5175
|
-
|
5176
|
-
|
5177
|
-
|
5565
|
+
import_view25.EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view25.Decoration.none),
|
5566
|
+
import_view25.EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view25.Decoration.none),
|
5567
|
+
import_view25.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view25.Decoration.none)
|
5178
5568
|
]
|
5179
5569
|
}),
|
5180
5570
|
image(),
|
@@ -5184,7 +5574,7 @@ var decorateMarkdown = (options = {}) => {
|
|
5184
5574
|
];
|
5185
5575
|
};
|
5186
5576
|
var linkTooltip = (renderTooltip) => {
|
5187
|
-
return (0,
|
5577
|
+
return (0, import_view30.hoverTooltip)((view, pos, side) => {
|
5188
5578
|
const syntax = (0, import_language12.syntaxTree)(view.state).resolveInner(pos, side);
|
5189
5579
|
let link = null;
|
5190
5580
|
for (let i = 0, node = syntax; !link && node && i < 5; node = node.parent, i++) {
|
@@ -5274,7 +5664,7 @@ var InputModeExtensions = {
|
|
5274
5664
|
editorInputMode.of({
|
5275
5665
|
type: "vscode"
|
5276
5666
|
}),
|
5277
|
-
|
5667
|
+
import_view31.keymap.of(import_codemirror_vscode_keymap.vscodeKeymap)
|
5278
5668
|
],
|
5279
5669
|
vim: [
|
5280
5670
|
// https://github.com/replit/codemirror-vim
|
@@ -5283,7 +5673,7 @@ var InputModeExtensions = {
|
|
5283
5673
|
type: "vim",
|
5284
5674
|
noTabster: true
|
5285
5675
|
}),
|
5286
|
-
|
5676
|
+
import_view31.keymap.of([
|
5287
5677
|
{
|
5288
5678
|
key: "Alt-Escape",
|
5289
5679
|
run: (view) => {
|
@@ -5389,6 +5779,7 @@ var traverse = (root, cb) => {
|
|
5389
5779
|
return value;
|
5390
5780
|
}
|
5391
5781
|
}
|
5782
|
+
return void 0;
|
5392
5783
|
};
|
5393
5784
|
return t(root, root.type === "root" ? -1 : 0);
|
5394
5785
|
};
|
@@ -5423,7 +5814,7 @@ var format = (value) => JSON.stringify(value, (key, value2) => {
|
|
5423
5814
|
}
|
5424
5815
|
return value2;
|
5425
5816
|
}).replaceAll('"', "");
|
5426
|
-
var treeFacet =
|
5817
|
+
var treeFacet = import_state28.Facet.define({
|
5427
5818
|
combine: (values) => values[0]
|
5428
5819
|
});
|
5429
5820
|
var outlinerTree = (options = {}) => {
|
@@ -5446,7 +5837,7 @@ var outlinerTree = (options = {}) => {
|
|
5446
5837
|
case "BulletList": {
|
5447
5838
|
(0, import_invariant5.invariant)(current, void 0, {
|
5448
5839
|
F: __dxlog_file11,
|
5449
|
-
L:
|
5840
|
+
L: 219,
|
5450
5841
|
S: void 0,
|
5451
5842
|
A: [
|
5452
5843
|
"current",
|
@@ -5463,7 +5854,7 @@ var outlinerTree = (options = {}) => {
|
|
5463
5854
|
case "ListItem": {
|
5464
5855
|
(0, import_invariant5.invariant)(parent, void 0, {
|
5465
5856
|
F: __dxlog_file11,
|
5466
|
-
L:
|
5857
|
+
L: 228,
|
5467
5858
|
S: void 0,
|
5468
5859
|
A: [
|
5469
5860
|
"parent",
|
@@ -5505,7 +5896,7 @@ var outlinerTree = (options = {}) => {
|
|
5505
5896
|
case "ListMark": {
|
5506
5897
|
(0, import_invariant5.invariant)(current, void 0, {
|
5507
5898
|
F: __dxlog_file11,
|
5508
|
-
L:
|
5899
|
+
L: 272,
|
5509
5900
|
S: void 0,
|
5510
5901
|
A: [
|
5511
5902
|
"current",
|
@@ -5519,7 +5910,7 @@ var outlinerTree = (options = {}) => {
|
|
5519
5910
|
case "Task": {
|
5520
5911
|
(0, import_invariant5.invariant)(current, void 0, {
|
5521
5912
|
F: __dxlog_file11,
|
5522
|
-
L:
|
5913
|
+
L: 278,
|
5523
5914
|
S: void 0,
|
5524
5915
|
A: [
|
5525
5916
|
"current",
|
@@ -5532,7 +5923,7 @@ var outlinerTree = (options = {}) => {
|
|
5532
5923
|
case "TaskMarker": {
|
5533
5924
|
(0, import_invariant5.invariant)(current, void 0, {
|
5534
5925
|
F: __dxlog_file11,
|
5535
|
-
L:
|
5926
|
+
L: 283,
|
5536
5927
|
S: void 0,
|
5537
5928
|
A: [
|
5538
5929
|
"current",
|
@@ -5548,7 +5939,7 @@ var outlinerTree = (options = {}) => {
|
|
5548
5939
|
if (node.name === "BulletList") {
|
5549
5940
|
(0, import_invariant5.invariant)(parent, void 0, {
|
5550
5941
|
F: __dxlog_file11,
|
5551
|
-
L:
|
5942
|
+
L: 291,
|
5552
5943
|
S: void 0,
|
5553
5944
|
A: [
|
5554
5945
|
"parent",
|
@@ -5562,7 +5953,7 @@ var outlinerTree = (options = {}) => {
|
|
5562
5953
|
});
|
5563
5954
|
(0, import_invariant5.invariant)(tree, void 0, {
|
5564
5955
|
F: __dxlog_file11,
|
5565
|
-
L:
|
5956
|
+
L: 298,
|
5566
5957
|
S: void 0,
|
5567
5958
|
A: [
|
5568
5959
|
"tree",
|
@@ -5572,7 +5963,7 @@ var outlinerTree = (options = {}) => {
|
|
5572
5963
|
return tree;
|
5573
5964
|
};
|
5574
5965
|
return [
|
5575
|
-
|
5966
|
+
import_state27.StateField.define({
|
5576
5967
|
create: (state) => {
|
5577
5968
|
return buildTree(state);
|
5578
5969
|
},
|
@@ -5588,10 +5979,10 @@ var outlinerTree = (options = {}) => {
|
|
5588
5979
|
};
|
5589
5980
|
var getSelection = (state) => state.selection.main;
|
5590
5981
|
var selectionEquals = (a, b) => a.length === b.length && a.every((i) => b.includes(i));
|
5591
|
-
var selectionFacet =
|
5982
|
+
var selectionFacet = import_state26.Facet.define({
|
5592
5983
|
combine: (values) => values[0]
|
5593
5984
|
});
|
5594
|
-
var selectionCompartment = new
|
5985
|
+
var selectionCompartment = new import_state26.Compartment();
|
5595
5986
|
var selectNone = (view) => {
|
5596
5987
|
view.dispatch({
|
5597
5988
|
effects: selectionCompartment.reconfigure(selectionFacet.of([]))
|
@@ -5672,7 +6063,7 @@ var moveItemDown = (view) => {
|
|
5672
6063
|
];
|
5673
6064
|
view.dispatch({
|
5674
6065
|
changes,
|
5675
|
-
selection:
|
6066
|
+
selection: import_state25.EditorSelection.cursor(pos + nextContent.length + 1),
|
5676
6067
|
scrollIntoView: true
|
5677
6068
|
});
|
5678
6069
|
}
|
@@ -5700,7 +6091,7 @@ var moveItemUp = (view) => {
|
|
5700
6091
|
];
|
5701
6092
|
view.dispatch({
|
5702
6093
|
changes,
|
5703
|
-
selection:
|
6094
|
+
selection: import_state25.EditorSelection.cursor(pos - prevContent.length - 1),
|
5704
6095
|
scrollIntoView: true
|
5705
6096
|
});
|
5706
6097
|
}
|
@@ -5712,7 +6103,7 @@ var deleteItem = (view) => {
|
|
5712
6103
|
const current = tree.find(pos);
|
5713
6104
|
if (current) {
|
5714
6105
|
view.dispatch({
|
5715
|
-
selection:
|
6106
|
+
selection: import_state25.EditorSelection.cursor(current.lineRange.from),
|
5716
6107
|
changes: [
|
5717
6108
|
{
|
5718
6109
|
from: current.lineRange.from,
|
@@ -5742,7 +6133,7 @@ var toggleTask = (view) => {
|
|
5742
6133
|
}
|
5743
6134
|
return true;
|
5744
6135
|
};
|
5745
|
-
var commands = () =>
|
6136
|
+
var commands = () => import_view32.keymap.of([
|
5746
6137
|
//
|
5747
6138
|
// Indentation.
|
5748
6139
|
//
|
@@ -5768,7 +6159,7 @@ var commands = () => import_view29.keymap.of([
|
|
5768
6159
|
insert
|
5769
6160
|
}
|
5770
6161
|
],
|
5771
|
-
selection:
|
6162
|
+
selection: import_state25.EditorSelection.cursor(pos + insert.length)
|
5772
6163
|
});
|
5773
6164
|
return true;
|
5774
6165
|
}
|
@@ -5786,7 +6177,7 @@ var commands = () => import_view29.keymap.of([
|
|
5786
6177
|
const next = tree.next(item);
|
5787
6178
|
if (next) {
|
5788
6179
|
view.dispatch({
|
5789
|
-
selection:
|
6180
|
+
selection: import_state25.EditorSelection.cursor(next.contentRange.from)
|
5790
6181
|
});
|
5791
6182
|
return true;
|
5792
6183
|
}
|
@@ -5849,7 +6240,7 @@ var commands = () => import_view29.keymap.of([
|
|
5849
6240
|
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/outliner/editor.ts";
|
5850
6241
|
var LIST_ITEM_REGEX = /^\s*- (\[ \]|\[x\])? /;
|
5851
6242
|
var initialize = () => {
|
5852
|
-
return
|
6243
|
+
return import_view34.ViewPlugin.fromClass(class {
|
5853
6244
|
constructor(view) {
|
5854
6245
|
const first = view.state.doc.lineAt(0);
|
5855
6246
|
const text = view.state.sliceDoc(first.from, first.to);
|
@@ -5865,7 +6256,7 @@ var initialize = () => {
|
|
5865
6256
|
insert
|
5866
6257
|
}
|
5867
6258
|
],
|
5868
|
-
selection:
|
6259
|
+
selection: import_state30.EditorSelection.cursor(insert.length)
|
5869
6260
|
});
|
5870
6261
|
});
|
5871
6262
|
}
|
@@ -5874,7 +6265,7 @@ var initialize = () => {
|
|
5874
6265
|
};
|
5875
6266
|
var editor = () => [
|
5876
6267
|
initialize(),
|
5877
|
-
|
6268
|
+
import_state30.EditorState.transactionFilter.of((tr) => {
|
5878
6269
|
const tree = tr.state.facet(treeFacet);
|
5879
6270
|
if (!tr.docChanged) {
|
5880
6271
|
const current = getSelection(tr.state).from;
|
@@ -5889,20 +6280,20 @@ var editor = () => [
|
|
5889
6280
|
if (!prevItem) {
|
5890
6281
|
return [
|
5891
6282
|
{
|
5892
|
-
selection:
|
6283
|
+
selection: import_state30.EditorSelection.cursor(currentItem.contentRange.from)
|
5893
6284
|
}
|
5894
6285
|
];
|
5895
6286
|
} else {
|
5896
6287
|
if (currentItem.index < prevItem.index) {
|
5897
6288
|
return [
|
5898
6289
|
{
|
5899
|
-
selection:
|
6290
|
+
selection: import_state30.EditorSelection.cursor(currentItem.contentRange.to)
|
5900
6291
|
}
|
5901
6292
|
];
|
5902
6293
|
} else if (currentItem.index > prevItem.index) {
|
5903
6294
|
return [
|
5904
6295
|
{
|
5905
|
-
selection:
|
6296
|
+
selection: import_state30.EditorSelection.cursor(currentItem.contentRange.from)
|
5906
6297
|
}
|
5907
6298
|
];
|
5908
6299
|
} else {
|
@@ -5912,14 +6303,14 @@ var editor = () => [
|
|
5912
6303
|
} else {
|
5913
6304
|
return [
|
5914
6305
|
{
|
5915
|
-
selection:
|
6306
|
+
selection: import_state30.EditorSelection.cursor(currentItem.lineRange.from - 1)
|
5916
6307
|
}
|
5917
6308
|
];
|
5918
6309
|
}
|
5919
6310
|
} else {
|
5920
6311
|
return [
|
5921
6312
|
{
|
5922
|
-
selection:
|
6313
|
+
selection: import_state30.EditorSelection.cursor(currentItem.contentRange.to)
|
5923
6314
|
}
|
5924
6315
|
];
|
5925
6316
|
}
|
@@ -6032,7 +6423,7 @@ var editor = () => [
|
|
6032
6423
|
];
|
6033
6424
|
var outliner = (options = {}) => [
|
6034
6425
|
// Commands.
|
6035
|
-
|
6426
|
+
import_state29.Prec.highest(commands()),
|
6036
6427
|
// Selection.
|
6037
6428
|
selectionCompartment.of(selectionFacet.of([])),
|
6038
6429
|
// State.
|
@@ -6048,14 +6439,14 @@ var outliner = (options = {}) => [
|
|
6048
6439
|
listPaddingLeft: 8
|
6049
6440
|
}),
|
6050
6441
|
// Researve space for menu.
|
6051
|
-
|
6442
|
+
import_view33.EditorView.contentAttributes.of({
|
6052
6443
|
class: "is-full !mr-[3rem]"
|
6053
6444
|
})
|
6054
6445
|
];
|
6055
6446
|
var decorations = () => [
|
6056
|
-
|
6447
|
+
import_view33.ViewPlugin.fromClass(class {
|
6057
6448
|
constructor(view) {
|
6058
|
-
this.decorations =
|
6449
|
+
this.decorations = import_view33.Decoration.none;
|
6059
6450
|
this.updateDecorations(view.state, view);
|
6060
6451
|
}
|
6061
6452
|
update(update2) {
|
@@ -6077,18 +6468,18 @@ var decorations = () => [
|
|
6077
6468
|
const lineFrom = doc.lineAt(item.contentRange.from);
|
6078
6469
|
const lineTo = doc.lineAt(item.contentRange.to);
|
6079
6470
|
const isSelected = selection.includes(item.index) || item === current;
|
6080
|
-
decorations2.push(
|
6471
|
+
decorations2.push(import_view33.Decoration.line({
|
6081
6472
|
class: (0, import_react_ui_theme8.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
6473
|
}).range(line.from, line.from));
|
6083
6474
|
}
|
6084
6475
|
}
|
6085
|
-
this.decorations =
|
6476
|
+
this.decorations = import_view33.Decoration.set(decorations2);
|
6086
6477
|
}
|
6087
6478
|
}, {
|
6088
6479
|
decorations: (v) => v.decorations
|
6089
6480
|
}),
|
6090
6481
|
// Theme.
|
6091
|
-
|
6482
|
+
import_view33.EditorView.theme(Object.assign({
|
6092
6483
|
".cm-list-item": {
|
6093
6484
|
borderLeftWidth: "1px",
|
6094
6485
|
borderRightWidth: "1px",
|
@@ -6117,9 +6508,6 @@ var decorations = () => [
|
|
6117
6508
|
},
|
6118
6509
|
"[data-has-focus] & .cm-list-item-selected": {
|
6119
6510
|
borderColor: "var(--dx-separator)"
|
6120
|
-
},
|
6121
|
-
"[data-is-attention-source] & .cm-list-item-selected": {
|
6122
|
-
borderColor: "var(--dx-separator)"
|
6123
6511
|
}
|
6124
6512
|
}))
|
6125
6513
|
];
|
@@ -6127,23 +6515,13 @@ var preview = (options = {}) => {
|
|
6127
6515
|
return [
|
6128
6516
|
// NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:
|
6129
6517
|
// "Block decorations may not be specified via plugins"
|
6130
|
-
|
6518
|
+
import_state31.StateField.define({
|
6131
6519
|
create: (state) => buildDecorations3(state, options),
|
6132
6520
|
update: (_, tr) => buildDecorations3(tr.state, options),
|
6133
6521
|
provide: (field) => [
|
6134
|
-
|
6135
|
-
|
6522
|
+
import_view35.EditorView.decorations.from(field),
|
6523
|
+
import_view35.EditorView.atomicRanges.of((view) => view.state.field(field))
|
6136
6524
|
]
|
6137
|
-
}),
|
6138
|
-
import_view32.EditorView.theme({
|
6139
|
-
".cm-preview-block": {
|
6140
|
-
marginLeft: "-1rem",
|
6141
|
-
marginRight: "-1rem",
|
6142
|
-
padding: "1rem",
|
6143
|
-
borderRadius: "0.5rem",
|
6144
|
-
background: "var(--dx-modalSurface)",
|
6145
|
-
border: "1px solid var(--dx-separator)"
|
6146
|
-
}
|
6147
6525
|
})
|
6148
6526
|
];
|
6149
6527
|
};
|
@@ -6161,7 +6539,7 @@ var getLinkRef = (state, node) => {
|
|
6161
6539
|
}
|
6162
6540
|
};
|
6163
6541
|
var buildDecorations3 = (state, options) => {
|
6164
|
-
const builder = new
|
6542
|
+
const builder = new import_state31.RangeSetBuilder();
|
6165
6543
|
(0, import_language15.syntaxTree)(state).iterate({
|
6166
6544
|
enter: (node) => {
|
6167
6545
|
switch (node.name) {
|
@@ -6172,7 +6550,7 @@ var buildDecorations3 = (state, options) => {
|
|
6172
6550
|
case "Link": {
|
6173
6551
|
const link = getLinkRef(state, node.node);
|
6174
6552
|
if (link) {
|
6175
|
-
builder.add(node.from, node.to,
|
6553
|
+
builder.add(node.from, node.to, import_view35.Decoration.replace({
|
6176
6554
|
widget: new PreviewInlineWidget(options, link)
|
6177
6555
|
}));
|
6178
6556
|
}
|
@@ -6184,8 +6562,8 @@ var buildDecorations3 = (state, options) => {
|
|
6184
6562
|
//
|
6185
6563
|
case "Image": {
|
6186
6564
|
const link = getLinkRef(state, node.node);
|
6187
|
-
if (options.
|
6188
|
-
builder.add(node.from, node.to,
|
6565
|
+
if (options.addBlockContainer && options.removeBlockContainer && link) {
|
6566
|
+
builder.add(node.from, node.to, import_view35.Decoration.replace({
|
6189
6567
|
block: true,
|
6190
6568
|
// atomic: true,
|
6191
6569
|
widget: new PreviewBlockWidget(options, link)
|
@@ -6198,7 +6576,7 @@ var buildDecorations3 = (state, options) => {
|
|
6198
6576
|
});
|
6199
6577
|
return builder.finish();
|
6200
6578
|
};
|
6201
|
-
var PreviewInlineWidget = class extends
|
6579
|
+
var PreviewInlineWidget = class extends import_view35.WidgetType {
|
6202
6580
|
constructor(_options, _link) {
|
6203
6581
|
super(), this._options = _options, this._link = _link;
|
6204
6582
|
}
|
@@ -6215,7 +6593,7 @@ var PreviewInlineWidget = class extends import_view32.WidgetType {
|
|
6215
6593
|
return root;
|
6216
6594
|
}
|
6217
6595
|
};
|
6218
|
-
var PreviewBlockWidget = class extends
|
6596
|
+
var PreviewBlockWidget = class extends import_view35.WidgetType {
|
6219
6597
|
constructor(_options, _link) {
|
6220
6598
|
super(), this._options = _options, this._link = _link;
|
6221
6599
|
}
|
@@ -6227,50 +6605,13 @@ var PreviewBlockWidget = class extends import_view32.WidgetType {
|
|
6227
6605
|
}
|
6228
6606
|
toDOM(view) {
|
6229
6607
|
const root = document.createElement("div");
|
6230
|
-
root.classList.add("cm-preview-block");
|
6231
|
-
|
6232
|
-
const pos = view.posAtDOM(root);
|
6233
|
-
const node = (0, import_language15.syntaxTree)(view.state).resolve(pos + 1).node.parent;
|
6234
|
-
if (!node) {
|
6235
|
-
return;
|
6236
|
-
}
|
6237
|
-
const link = getLinkRef(view.state, node);
|
6238
|
-
if (link?.ref !== action.link.ref) {
|
6239
|
-
return;
|
6240
|
-
}
|
6241
|
-
switch (action.type) {
|
6242
|
-
// TODO(burdon): Should we dispatch to the view or mutate the document? (i.e., handle externally?)
|
6243
|
-
// Insert ref text.
|
6244
|
-
case "insert": {
|
6245
|
-
view.dispatch({
|
6246
|
-
changes: {
|
6247
|
-
from: node.from,
|
6248
|
-
to: node.to,
|
6249
|
-
insert: action.target.text
|
6250
|
-
}
|
6251
|
-
});
|
6252
|
-
break;
|
6253
|
-
}
|
6254
|
-
// Remove ref.
|
6255
|
-
case "delete": {
|
6256
|
-
view.dispatch({
|
6257
|
-
changes: {
|
6258
|
-
from: node.from,
|
6259
|
-
to: node.to
|
6260
|
-
}
|
6261
|
-
});
|
6262
|
-
break;
|
6263
|
-
}
|
6264
|
-
}
|
6265
|
-
};
|
6266
|
-
this._options.renderBlock(root, {
|
6267
|
-
readonly: view.state.readOnly,
|
6268
|
-
link: this._link,
|
6269
|
-
onAction: handleAction,
|
6270
|
-
onLookup: this._options.onLookup
|
6271
|
-
}, view);
|
6608
|
+
root.classList.add("cm-preview-block", "density-coarse");
|
6609
|
+
this._options.addBlockContainer?.(this._link, root);
|
6272
6610
|
return root;
|
6273
6611
|
}
|
6612
|
+
destroy() {
|
6613
|
+
this._options.removeBlockContainer?.(this._link);
|
6614
|
+
}
|
6274
6615
|
};
|
6275
6616
|
var defaultItems = [
|
6276
6617
|
"hello world!",
|
@@ -6281,7 +6622,7 @@ var typewriter = ({ delay = 75, items = defaultItems } = {}) => {
|
|
6281
6622
|
let t;
|
6282
6623
|
let idx = 0;
|
6283
6624
|
return [
|
6284
|
-
|
6625
|
+
import_view36.keymap.of([
|
6285
6626
|
{
|
6286
6627
|
// Reset.
|
6287
6628
|
key: "alt-meta-'",
|
@@ -6608,28 +6949,6 @@ var createViewMode = (state, onViewModeChange) => {
|
|
6608
6949
|
]
|
6609
6950
|
};
|
6610
6951
|
};
|
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
6952
|
var createToolbar = ({ getView, state, customActions, ...features }) => {
|
6634
6953
|
return import_rx_react.Rx.make((get2) => {
|
6635
6954
|
const nodes = [];
|
@@ -6713,38 +7032,320 @@ var EditorToolbar = /* @__PURE__ */ (0, import_react.memo)(({ classNames, attend
|
|
6713
7032
|
var _effect = (0, import_tracking.useSignals)();
|
6714
7033
|
try {
|
6715
7034
|
const menuProps = useEditorToolbarActionGraph(props);
|
6716
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
6717
|
-
role: "none",
|
6718
|
-
className: stackItemContentToolbarClassNames(role)
|
6719
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ElevationProvider, {
|
7035
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui.ElevationProvider, {
|
6720
7036
|
elevation: role === "section" ? "positioned" : "base"
|
6721
7037
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.MenuProvider, {
|
6722
7038
|
...menuProps,
|
6723
7039
|
attendableId
|
6724
7040
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.ToolbarMenu, {
|
6725
|
-
classNames
|
6726
|
-
|
6727
|
-
|
6728
|
-
]
|
6729
|
-
}))));
|
7041
|
+
classNames,
|
7042
|
+
textBlockWidth: true
|
7043
|
+
})));
|
6730
7044
|
} finally {
|
6731
7045
|
_effect.f();
|
6732
7046
|
}
|
6733
7047
|
});
|
7048
|
+
var CommandMenu = ({ groups, currentItem, onSelect }) => {
|
7049
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7050
|
+
try {
|
7051
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7052
|
+
const groupsWithItems = groups.filter((group) => group.items.length > 0);
|
7053
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Portal, null, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Content, {
|
7054
|
+
align: "start",
|
7055
|
+
onOpenAutoFocus: (event) => event.preventDefault(),
|
7056
|
+
classNames: tx("menu.content", "menu--exotic-unfocusable", {
|
7057
|
+
elevation: "positioned"
|
7058
|
+
}, [
|
7059
|
+
"max-h-[300px] overflow-y-auto"
|
7060
|
+
])
|
7061
|
+
}, /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Popover.Viewport, {
|
7062
|
+
classNames: tx("menu.viewport", "menu__viewport--exotic-unfocusable", {})
|
7063
|
+
}, /* @__PURE__ */ import_react8.default.createElement("ul", null, groupsWithItems.map((group, index) => /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, {
|
7064
|
+
key: group.id
|
7065
|
+
}, /* @__PURE__ */ import_react8.default.createElement(CommandGroup, {
|
7066
|
+
group,
|
7067
|
+
currentItem,
|
7068
|
+
onSelect
|
7069
|
+
}), index < groupsWithItems.length - 1 && /* @__PURE__ */ import_react8.default.createElement("div", {
|
7070
|
+
className: tx("menu.separator", "menu__item", {})
|
7071
|
+
})))))));
|
7072
|
+
} finally {
|
7073
|
+
_effect.f();
|
7074
|
+
}
|
7075
|
+
};
|
7076
|
+
var CommandGroup = ({ group, currentItem, onSelect }) => {
|
7077
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7078
|
+
try {
|
7079
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7080
|
+
const { t } = (0, import_react_ui4.useTranslation)();
|
7081
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, group.label && /* @__PURE__ */ import_react8.default.createElement("div", {
|
7082
|
+
className: tx("menu.groupLabel", "menu__group__label", {})
|
7083
|
+
}, /* @__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, {
|
7084
|
+
key: item.id,
|
7085
|
+
item,
|
7086
|
+
current: currentItem === item.id,
|
7087
|
+
onSelect
|
7088
|
+
})));
|
7089
|
+
} finally {
|
7090
|
+
_effect.f();
|
7091
|
+
}
|
7092
|
+
};
|
7093
|
+
var CommandItem = ({ item, current, onSelect }) => {
|
7094
|
+
var _effect = (0, import_tracking2.useSignals)();
|
7095
|
+
try {
|
7096
|
+
const ref = (0, import_react8.useRef)(null);
|
7097
|
+
const { tx } = (0, import_react_ui4.useThemeContext)();
|
7098
|
+
const { t } = (0, import_react_ui4.useTranslation)();
|
7099
|
+
const handleSelect = (0, import_react8.useCallback)(() => onSelect(item), [
|
7100
|
+
item,
|
7101
|
+
onSelect
|
7102
|
+
]);
|
7103
|
+
(0, import_react8.useEffect)(() => {
|
7104
|
+
if (current && ref.current) {
|
7105
|
+
ref.current.scrollIntoView({
|
7106
|
+
behavior: "smooth",
|
7107
|
+
block: "nearest"
|
7108
|
+
});
|
7109
|
+
}
|
7110
|
+
}, [
|
7111
|
+
current
|
7112
|
+
]);
|
7113
|
+
return /* @__PURE__ */ import_react8.default.createElement("li", {
|
7114
|
+
ref,
|
7115
|
+
className: tx("menu.item", "menu__item--exotic-unfocusable", {}, [
|
7116
|
+
current && "bg-hoverSurface"
|
7117
|
+
]),
|
7118
|
+
onClick: handleSelect
|
7119
|
+
}, item.icon && /* @__PURE__ */ import_react8.default.createElement(import_react_ui4.Icon, {
|
7120
|
+
icon: item.icon,
|
7121
|
+
size: 5
|
7122
|
+
}), /* @__PURE__ */ import_react8.default.createElement("span", {
|
7123
|
+
className: "grow truncate"
|
7124
|
+
}, (0, import_react_ui4.toLocalizedString)(item.label, t)));
|
7125
|
+
} finally {
|
7126
|
+
_effect.f();
|
7127
|
+
}
|
7128
|
+
};
|
7129
|
+
var getItem = (groups, id) => {
|
7130
|
+
return groups.flatMap((group) => group.items).find((item) => item.id === id);
|
7131
|
+
};
|
7132
|
+
var getNextItem = (groups, id) => {
|
7133
|
+
const items = groups.flatMap((group) => group.items);
|
7134
|
+
const index = items.findIndex((item) => item.id === id);
|
7135
|
+
return items[(index + 1) % items.length];
|
7136
|
+
};
|
7137
|
+
var getPreviousItem = (groups, id) => {
|
7138
|
+
const items = groups.flatMap((group) => group.items);
|
7139
|
+
const index = items.findIndex((item) => item.id === id);
|
7140
|
+
return items[(index - 1 + items.length) % items.length];
|
7141
|
+
};
|
7142
|
+
var filterItems = (groups, filter) => {
|
7143
|
+
return groups.map((group) => ({
|
7144
|
+
...group,
|
7145
|
+
items: group.items.filter(filter)
|
7146
|
+
}));
|
7147
|
+
};
|
7148
|
+
var insertAtCursor = (view, head, insert) => {
|
7149
|
+
view.dispatch({
|
7150
|
+
changes: {
|
7151
|
+
from: head,
|
7152
|
+
to: head,
|
7153
|
+
insert
|
7154
|
+
},
|
7155
|
+
selection: {
|
7156
|
+
anchor: head + insert.length,
|
7157
|
+
head: head + insert.length
|
7158
|
+
}
|
7159
|
+
});
|
7160
|
+
};
|
7161
|
+
var insertAtLineStart = (view, head, insert) => {
|
7162
|
+
const line = view.state.doc.lineAt(head);
|
7163
|
+
if (line.from === head) {
|
7164
|
+
insertAtCursor(view, head, insert);
|
7165
|
+
} else {
|
7166
|
+
insert = "\n" + insert;
|
7167
|
+
view.dispatch({
|
7168
|
+
changes: {
|
7169
|
+
from: line.to,
|
7170
|
+
to: line.to,
|
7171
|
+
insert
|
7172
|
+
},
|
7173
|
+
selection: {
|
7174
|
+
anchor: line.to + insert.length,
|
7175
|
+
head: line.to + insert.length
|
7176
|
+
}
|
7177
|
+
});
|
7178
|
+
}
|
7179
|
+
};
|
7180
|
+
var coreSlashCommands = {
|
7181
|
+
id: "markdown",
|
7182
|
+
label: "Markdown",
|
7183
|
+
items: [
|
7184
|
+
{
|
7185
|
+
id: "heading-1",
|
7186
|
+
label: "Heading 1",
|
7187
|
+
icon: "ph--text-h-one--regular",
|
7188
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "# ")
|
7189
|
+
},
|
7190
|
+
{
|
7191
|
+
id: "heading-2",
|
7192
|
+
label: "Heading 2",
|
7193
|
+
icon: "ph--text-h-two--regular",
|
7194
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "## ")
|
7195
|
+
},
|
7196
|
+
{
|
7197
|
+
id: "heading-3",
|
7198
|
+
label: "Heading 3",
|
7199
|
+
icon: "ph--text-h-three--regular",
|
7200
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "### ")
|
7201
|
+
},
|
7202
|
+
{
|
7203
|
+
id: "heading-4",
|
7204
|
+
label: "Heading 4",
|
7205
|
+
icon: "ph--text-h-four--regular",
|
7206
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "#### ")
|
7207
|
+
},
|
7208
|
+
{
|
7209
|
+
id: "heading-5",
|
7210
|
+
label: "Heading 5",
|
7211
|
+
icon: "ph--text-h-five--regular",
|
7212
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "##### ")
|
7213
|
+
},
|
7214
|
+
{
|
7215
|
+
id: "heading-6",
|
7216
|
+
label: "Heading 6",
|
7217
|
+
icon: "ph--text-h-six--regular",
|
7218
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "###### ")
|
7219
|
+
},
|
7220
|
+
{
|
7221
|
+
id: "bullet-list",
|
7222
|
+
label: "Bullet List",
|
7223
|
+
icon: "ph--list-bullets--regular",
|
7224
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "- ")
|
7225
|
+
},
|
7226
|
+
{
|
7227
|
+
id: "numbered-list",
|
7228
|
+
label: "Numbered List",
|
7229
|
+
icon: "ph--list-numbers--regular",
|
7230
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "1. ")
|
7231
|
+
},
|
7232
|
+
{
|
7233
|
+
id: "task-list",
|
7234
|
+
label: "Task List",
|
7235
|
+
icon: "ph--list-checks--regular",
|
7236
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "- [ ] ")
|
7237
|
+
},
|
7238
|
+
{
|
7239
|
+
id: "quote",
|
7240
|
+
label: "Quote",
|
7241
|
+
icon: "ph--quotes--regular",
|
7242
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "> ")
|
7243
|
+
},
|
7244
|
+
{
|
7245
|
+
id: "code-block",
|
7246
|
+
label: "Code Block",
|
7247
|
+
icon: "ph--code-block--regular",
|
7248
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "```\n\n```")
|
7249
|
+
},
|
7250
|
+
{
|
7251
|
+
id: "table",
|
7252
|
+
label: "Table",
|
7253
|
+
icon: "ph--table--regular",
|
7254
|
+
onSelect: (view, head) => insertAtLineStart(view, head, "| | | |\n|---|---|---|\n| | | |")
|
7255
|
+
}
|
7256
|
+
]
|
7257
|
+
};
|
7258
|
+
var linkSlashCommands = {
|
7259
|
+
id: "link",
|
7260
|
+
label: "Link",
|
7261
|
+
items: [
|
7262
|
+
{
|
7263
|
+
id: "inline-link",
|
7264
|
+
label: "Inline link",
|
7265
|
+
icon: "ph--link--regular",
|
7266
|
+
onSelect: (view, head) => view.dispatch({
|
7267
|
+
changes: {
|
7268
|
+
from: head,
|
7269
|
+
insert: "@"
|
7270
|
+
},
|
7271
|
+
selection: {
|
7272
|
+
anchor: head + 1,
|
7273
|
+
head: head + 1
|
7274
|
+
},
|
7275
|
+
effects: commandRangeEffect.of({
|
7276
|
+
trigger: "@",
|
7277
|
+
range: {
|
7278
|
+
from: head,
|
7279
|
+
to: head + 1
|
7280
|
+
}
|
7281
|
+
})
|
7282
|
+
})
|
7283
|
+
},
|
7284
|
+
{
|
7285
|
+
id: "block-embed",
|
7286
|
+
label: "Block embed",
|
7287
|
+
icon: "ph--lego--regular",
|
7288
|
+
onSelect: (view, head) => view.dispatch({
|
7289
|
+
changes: {
|
7290
|
+
from: head,
|
7291
|
+
insert: "@@"
|
7292
|
+
},
|
7293
|
+
selection: {
|
7294
|
+
anchor: head + 2,
|
7295
|
+
head: head + 2
|
7296
|
+
},
|
7297
|
+
effects: commandRangeEffect.of({
|
7298
|
+
trigger: "@",
|
7299
|
+
range: {
|
7300
|
+
from: head,
|
7301
|
+
to: head + 2
|
7302
|
+
}
|
7303
|
+
})
|
7304
|
+
})
|
7305
|
+
}
|
7306
|
+
]
|
7307
|
+
};
|
6734
7308
|
var customEventOptions = {
|
6735
7309
|
capture: true,
|
6736
7310
|
passive: false
|
6737
7311
|
};
|
7312
|
+
var RefPopover = /* @__PURE__ */ (0, import_react9.forwardRef)(({ children, open, onOpenChange, modal, onActivate }, ref) => {
|
7313
|
+
var _effect = (0, import_tracking3.useSignals)();
|
7314
|
+
try {
|
7315
|
+
const [rootRef, setRootRef] = (0, import_react9.useState)(null);
|
7316
|
+
(0, import_react9.useEffect)(() => {
|
7317
|
+
if (!rootRef || !onActivate) {
|
7318
|
+
return;
|
7319
|
+
}
|
7320
|
+
return (0, import_async6.addEventListener)(rootRef, "dx-ref-tag-activate", onActivate, customEventOptions);
|
7321
|
+
}, [
|
7322
|
+
rootRef,
|
7323
|
+
onActivate
|
7324
|
+
]);
|
7325
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_react_ui5.Popover.Root, {
|
7326
|
+
open,
|
7327
|
+
onOpenChange,
|
7328
|
+
modal
|
7329
|
+
}, /* @__PURE__ */ import_react9.default.createElement(import_react_ui5.Popover.VirtualTrigger, {
|
7330
|
+
virtualRef: ref
|
7331
|
+
}), /* @__PURE__ */ import_react9.default.createElement("div", {
|
7332
|
+
role: "none",
|
7333
|
+
className: "contents",
|
7334
|
+
ref: setRootRef
|
7335
|
+
}, children));
|
7336
|
+
} finally {
|
7337
|
+
_effect.f();
|
7338
|
+
}
|
7339
|
+
});
|
6738
7340
|
var REF_POPOVER = "RefPopover";
|
6739
7341
|
var [RefPopoverContextProvider, useRefPopover] = (0, import_react_context.createContext)(REF_POPOVER, {});
|
6740
|
-
var
|
6741
|
-
var _effect = (0,
|
7342
|
+
var PreviewProvider = ({ children, onLookup }) => {
|
7343
|
+
var _effect = (0, import_tracking3.useSignals)();
|
6742
7344
|
try {
|
6743
|
-
const trigger = (0,
|
6744
|
-
const [value, setValue] = (0,
|
6745
|
-
const [
|
6746
|
-
const
|
6747
|
-
const handleDxRefTagActivate = (0, import_react7.useCallback)((event) => {
|
7345
|
+
const trigger = (0, import_react9.useRef)(null);
|
7346
|
+
const [value, setValue] = (0, import_react9.useState)({});
|
7347
|
+
const [open, setOpen] = (0, import_react9.useState)(false);
|
7348
|
+
const handleDxRefTagActivate = (0, import_react9.useCallback)((event) => {
|
6748
7349
|
const { refId, label, trigger: dxTrigger } = event;
|
6749
7350
|
setValue((value2) => ({
|
6750
7351
|
...value2,
|
@@ -6767,32 +7368,20 @@ var RefPopoverProvider = ({ children, onLookup }) => {
|
|
6767
7368
|
}, [
|
6768
7369
|
onLookup
|
6769
7370
|
]);
|
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, {
|
7371
|
+
return /* @__PURE__ */ import_react9.default.createElement(RefPopoverContextProvider, {
|
6776
7372
|
pending: value.pending,
|
6777
7373
|
link: value.link,
|
6778
7374
|
target: value.target
|
6779
|
-
}, /* @__PURE__ */
|
7375
|
+
}, /* @__PURE__ */ import_react9.default.createElement(RefPopover, {
|
7376
|
+
ref: trigger,
|
6780
7377
|
open,
|
6781
|
-
onOpenChange: setOpen
|
6782
|
-
|
6783
|
-
|
6784
|
-
}), /* @__PURE__ */ import_react7.default.createElement("div", {
|
6785
|
-
role: "none",
|
6786
|
-
className: "contents",
|
6787
|
-
ref: setRootRef
|
6788
|
-
}, children)));
|
7378
|
+
onOpenChange: setOpen,
|
7379
|
+
onActivate: handleDxRefTagActivate
|
7380
|
+
}, children));
|
6789
7381
|
} finally {
|
6790
7382
|
_effect.f();
|
6791
7383
|
}
|
6792
7384
|
};
|
6793
|
-
var RefPopover = {
|
6794
|
-
Provider: RefPopoverProvider
|
6795
|
-
};
|
6796
7385
|
var customEventOptions2 = {
|
6797
7386
|
capture: true,
|
6798
7387
|
passive: false
|
@@ -6800,13 +7389,13 @@ var customEventOptions2 = {
|
|
6800
7389
|
var REF_DROPDOWN_MENU = "RefDropdownMenu";
|
6801
7390
|
var [RefDropdownMenuContextProvider, useRefDropdownMenu] = (0, import_react_context2.createContext)(REF_DROPDOWN_MENU, {});
|
6802
7391
|
var RefDropdownMenuProvider = ({ children, onLookup }) => {
|
6803
|
-
var _effect = (0,
|
7392
|
+
var _effect = (0, import_tracking4.useSignals)();
|
6804
7393
|
try {
|
6805
|
-
const trigger = (0,
|
6806
|
-
const [value, setValue] = (0,
|
6807
|
-
const [rootRef, setRootRef] = (0,
|
6808
|
-
const [open, setOpen] = (0,
|
6809
|
-
const handleDxRefTagActivate = (0,
|
7394
|
+
const trigger = (0, import_react10.useRef)(null);
|
7395
|
+
const [value, setValue] = (0, import_react10.useState)({});
|
7396
|
+
const [rootRef, setRootRef] = (0, import_react10.useState)(null);
|
7397
|
+
const [open, setOpen] = (0, import_react10.useState)(false);
|
7398
|
+
const handleDxRefTagActivate = (0, import_react10.useCallback)((event) => {
|
6810
7399
|
const { refId, label, trigger: dxTrigger } = event;
|
6811
7400
|
setValue((value2) => ({
|
6812
7401
|
...value2,
|
@@ -6829,21 +7418,24 @@ var RefDropdownMenuProvider = ({ children, onLookup }) => {
|
|
6829
7418
|
}, [
|
6830
7419
|
onLookup
|
6831
7420
|
]);
|
6832
|
-
(0,
|
6833
|
-
|
7421
|
+
(0, import_react10.useEffect)(() => {
|
7422
|
+
if (!rootRef) {
|
7423
|
+
return;
|
7424
|
+
}
|
7425
|
+
return (0, import_async7.addEventListener)(rootRef, "dx-ref-tag-activate", handleDxRefTagActivate, customEventOptions2);
|
6834
7426
|
}, [
|
6835
7427
|
rootRef
|
6836
7428
|
]);
|
6837
|
-
return /* @__PURE__ */
|
7429
|
+
return /* @__PURE__ */ import_react10.default.createElement(RefDropdownMenuContextProvider, {
|
6838
7430
|
pending: value.pending,
|
6839
7431
|
link: value.link,
|
6840
7432
|
target: value.target
|
6841
|
-
}, /* @__PURE__ */
|
7433
|
+
}, /* @__PURE__ */ import_react10.default.createElement(import_react_ui6.DropdownMenu.Root, {
|
6842
7434
|
open,
|
6843
7435
|
onOpenChange: setOpen
|
6844
|
-
}, /* @__PURE__ */
|
7436
|
+
}, /* @__PURE__ */ import_react10.default.createElement(import_react_ui6.DropdownMenu.VirtualTrigger, {
|
6845
7437
|
virtualRef: trigger
|
6846
|
-
}), /* @__PURE__ */
|
7438
|
+
}), /* @__PURE__ */ import_react10.default.createElement("div", {
|
6847
7439
|
role: "none",
|
6848
7440
|
className: "contents",
|
6849
7441
|
ref: setRootRef
|
@@ -6858,11 +7450,11 @@ var RefDropdownMenu = {
|
|
6858
7450
|
var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/hooks/useTextEditor.ts";
|
6859
7451
|
var instanceCount = 0;
|
6860
7452
|
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,
|
7453
|
+
const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = (0, import_react11.useMemo)(() => (0, import_util7.getProviderValue)(props), deps ?? []);
|
7454
|
+
const [instanceId] = (0, import_react11.useState)(() => `text-editor-${++instanceCount}`);
|
7455
|
+
const [view, setView] = (0, import_react11.useState)();
|
7456
|
+
const parentRef = (0, import_react11.useRef)(null);
|
7457
|
+
(0, import_react11.useEffect)(() => {
|
6866
7458
|
let view2;
|
6867
7459
|
if (parentRef.current) {
|
6868
7460
|
(0, import_log8.log)("create", {
|
@@ -6871,7 +7463,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6871
7463
|
doc: initialValue?.length ?? 0
|
6872
7464
|
}, {
|
6873
7465
|
F: __dxlog_file13,
|
6874
|
-
L:
|
7466
|
+
L: 75,
|
6875
7467
|
S: void 0,
|
6876
7468
|
C: (f, a) => f(...a)
|
6877
7469
|
});
|
@@ -6887,27 +7479,27 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6887
7479
|
anchor
|
6888
7480
|
};
|
6889
7481
|
}
|
6890
|
-
const state =
|
7482
|
+
const state = import_state32.EditorState.create({
|
6891
7483
|
doc: doc ?? initialValue,
|
6892
7484
|
// selection: initialSelection,
|
6893
7485
|
extensions: [
|
6894
7486
|
id && documentId.of(id),
|
6895
7487
|
extensions,
|
6896
7488
|
// NOTE: This doesn't catch errors in keymap functions.
|
6897
|
-
|
7489
|
+
import_view37.EditorView.exceptionSink.of((err) => {
|
6898
7490
|
import_log8.log.catch(err, void 0, {
|
6899
7491
|
F: __dxlog_file13,
|
6900
|
-
L:
|
7492
|
+
L: 97,
|
6901
7493
|
S: void 0,
|
6902
7494
|
C: (f, a) => f(...a)
|
6903
7495
|
});
|
6904
7496
|
})
|
6905
|
-
].filter(
|
7497
|
+
].filter(import_util7.isNotFalsy)
|
6906
7498
|
});
|
6907
|
-
view2 = new
|
7499
|
+
view2 = new import_view37.EditorView({
|
6908
7500
|
parent: parentRef.current,
|
6909
7501
|
state,
|
6910
|
-
scrollTo: scrollTo ?
|
7502
|
+
scrollTo: scrollTo ? import_view37.EditorView.scrollIntoView(scrollTo, {
|
6911
7503
|
yMargin: 96
|
6912
7504
|
}) : void 0,
|
6913
7505
|
dispatchTransactions: debug ? debugDispatcher : void 0
|
@@ -6929,14 +7521,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6929
7521
|
id
|
6930
7522
|
}, {
|
6931
7523
|
F: __dxlog_file13,
|
6932
|
-
L:
|
7524
|
+
L: 134,
|
6933
7525
|
S: void 0,
|
6934
7526
|
C: (f, a) => f(...a)
|
6935
7527
|
});
|
6936
7528
|
view2?.destroy();
|
6937
7529
|
};
|
6938
7530
|
}, deps);
|
6939
|
-
(0,
|
7531
|
+
(0, import_react11.useEffect)(() => {
|
6940
7532
|
if (view) {
|
6941
7533
|
if (scrollTo || selection) {
|
6942
7534
|
if (selection && selection.anchor > view.state.doc.length) {
|
@@ -6946,7 +7538,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6946
7538
|
selection
|
6947
7539
|
}, {
|
6948
7540
|
F: __dxlog_file13,
|
6949
|
-
L:
|
7541
|
+
L: 143,
|
6950
7542
|
S: void 0,
|
6951
7543
|
C: (f, a) => f(...a)
|
6952
7544
|
});
|
@@ -6963,7 +7555,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6963
7555
|
scrollTo,
|
6964
7556
|
selection
|
6965
7557
|
]);
|
6966
|
-
(0,
|
7558
|
+
(0, import_react11.useEffect)(() => {
|
6967
7559
|
if (view && autoFocus) {
|
6968
7560
|
view.focus();
|
6969
7561
|
}
|
@@ -6977,7 +7569,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
6977
7569
|
Escape: view?.state.facet(editorInputMode).noTabster
|
6978
7570
|
}
|
6979
7571
|
});
|
6980
|
-
const handleKeyUp = (0,
|
7572
|
+
const handleKeyUp = (0, import_react11.useCallback)((event) => {
|
6981
7573
|
const { key, target, currentTarget } = event;
|
6982
7574
|
if (target === currentTarget) {
|
6983
7575
|
switch (key) {
|
@@ -7002,6 +7594,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7002
7594
|
};
|
7003
7595
|
// Annotate the CommonJS export names for ESM import in node:
|
7004
7596
|
0 && (module.exports = {
|
7597
|
+
CommandMenu,
|
7005
7598
|
Cursor,
|
7006
7599
|
EditorInputMode,
|
7007
7600
|
EditorInputModes,
|
@@ -7013,6 +7606,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7013
7606
|
Inline,
|
7014
7607
|
InputModeExtensions,
|
7015
7608
|
List,
|
7609
|
+
PreviewProvider,
|
7016
7610
|
RefDropdownMenu,
|
7017
7611
|
RefPopover,
|
7018
7612
|
RemoteSelectionsDecorator,
|
@@ -7036,11 +7630,14 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7036
7630
|
closeEffect,
|
7037
7631
|
command,
|
7038
7632
|
commandKeyBindings,
|
7633
|
+
commandMenu,
|
7634
|
+
commandRangeEffect,
|
7039
7635
|
commands,
|
7040
7636
|
commentClickedEffect,
|
7041
7637
|
comments,
|
7042
7638
|
commentsState,
|
7043
7639
|
convertTreeToJson,
|
7640
|
+
coreSlashCommands,
|
7044
7641
|
createBasicExtensions,
|
7045
7642
|
createComment,
|
7046
7643
|
createDataExtensions,
|
@@ -7068,6 +7665,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7068
7665
|
editorSlots,
|
7069
7666
|
editorWidth,
|
7070
7667
|
editorWithToolbarLayout,
|
7668
|
+
filterItems,
|
7071
7669
|
flattenRect,
|
7072
7670
|
floatingMenu,
|
7073
7671
|
focus,
|
@@ -7076,15 +7674,22 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7076
7674
|
formattingEquals,
|
7077
7675
|
formattingKeymap,
|
7078
7676
|
getFormatting,
|
7677
|
+
getItem,
|
7678
|
+
getLinkRef,
|
7079
7679
|
getListItemContent,
|
7680
|
+
getNextItem,
|
7681
|
+
getPreviousItem,
|
7080
7682
|
getRange,
|
7081
7683
|
hashtag,
|
7082
7684
|
image,
|
7083
7685
|
indentItemLess,
|
7084
7686
|
indentItemMore,
|
7687
|
+
insertAtCursor,
|
7688
|
+
insertAtLineStart,
|
7085
7689
|
insertTable,
|
7086
7690
|
itemToJSON,
|
7087
7691
|
keymap,
|
7692
|
+
linkSlashCommands,
|
7088
7693
|
linkTooltip,
|
7089
7694
|
listItemToString,
|
7090
7695
|
listener,
|
@@ -7119,7 +7724,6 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7119
7724
|
setStyle,
|
7120
7725
|
singleValueFacet,
|
7121
7726
|
stackItemContentEditorClassNames,
|
7122
|
-
stackItemContentToolbarClassNames,
|
7123
7727
|
staticCompletion,
|
7124
7728
|
table,
|
7125
7729
|
tags,
|
@@ -7138,6 +7742,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
7138
7742
|
treeFacet,
|
7139
7743
|
typeahead,
|
7140
7744
|
typewriter,
|
7745
|
+
useCommandMenu,
|
7141
7746
|
useComments,
|
7142
7747
|
useEditorToolbarState,
|
7143
7748
|
useFormattingState,
|