@dxos/react-ui-editor 0.8.2-main.f11618f → 0.8.2-staging.7ac8446
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 +371 -499
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +379 -515
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +371 -499
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/{stories/InputMode.stories.d.ts → InputMode.stories.d.ts} +1 -1
- package/dist/types/src/InputMode.stories.d.ts.map +1 -0
- package/dist/types/src/{stories/TextEditorBasic.stories.d.ts → TextEditor.stories.d.ts} +35 -2
- package/dist/types/src/TextEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/EditorToolbar/util.d.ts +3 -3
- package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/{view-mode.d.ts → viewMode.d.ts} +1 -1
- package/dist/types/src/components/EditorToolbar/viewMode.d.ts.map +1 -0
- 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/command.d.ts +10 -5
- package/dist/types/src/extensions/command/command.d.ts.map +1 -1
- package/dist/types/src/extensions/command/hint.d.ts +2 -4
- package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
- package/dist/types/src/extensions/command/index.d.ts +0 -1
- package/dist/types/src/extensions/command/index.d.ts.map +1 -1
- package/dist/types/src/extensions/command/menu.d.ts +2 -7
- package/dist/types/src/extensions/command/menu.d.ts.map +1 -1
- package/dist/types/src/extensions/command/preview.d.ts +12 -0
- package/dist/types/src/extensions/command/preview.d.ts.map +1 -0
- package/dist/types/src/extensions/command/state.d.ts +11 -9
- package/dist/types/src/extensions/command/state.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts +7 -9
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +0 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts +1 -4
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts +2 -2
- package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/link.d.ts +1 -4
- package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
- package/dist/types/src/fragments.d.ts +3 -0
- package/dist/types/src/fragments.d.ts.map +1 -0
- package/dist/types/src/hooks/useTextEditor.d.ts +1 -2
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +0 -5
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util/react.d.ts +1 -6
- package/dist/types/src/util/react.d.ts.map +1 -1
- package/package.json +27 -33
- package/src/{stories/InputMode.stories.tsx → InputMode.stories.tsx} +4 -4
- package/src/TextEditor.stories.tsx +856 -0
- package/src/components/EditorToolbar/EditorToolbar.tsx +2 -2
- package/src/components/EditorToolbar/util.ts +3 -3
- package/src/defaults.ts +3 -5
- package/src/extensions/automerge/automerge.stories.tsx +11 -3
- package/src/extensions/command/command.ts +27 -9
- package/src/extensions/command/hint.ts +30 -33
- package/src/extensions/command/index.ts +0 -1
- package/src/extensions/command/menu.ts +8 -11
- package/src/extensions/command/preview.ts +79 -0
- package/src/extensions/command/state.ts +61 -41
- package/src/extensions/comments.ts +9 -9
- package/src/extensions/folding.tsx +1 -1
- package/src/extensions/index.ts +0 -1
- package/src/extensions/markdown/decorate.ts +3 -4
- package/src/extensions/markdown/formatting.ts +2 -2
- package/src/extensions/markdown/image.ts +11 -12
- package/src/extensions/markdown/link.ts +24 -33
- package/src/fragments.ts +19 -0
- package/src/hooks/useTextEditor.ts +3 -4
- package/src/types.ts +0 -7
- package/src/util/react.tsx +2 -20
- package/dist/lib/browser/testing/index.mjs +0 -67
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node/testing/index.cjs +0 -101
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node-esm/testing/index.mjs +0 -69
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +0 -1
- package/dist/types/src/extensions/command/action.d.ts +0 -17
- package/dist/types/src/extensions/command/action.d.ts.map +0 -1
- package/dist/types/src/extensions/preview/index.d.ts +0 -2
- package/dist/types/src/extensions/preview/index.d.ts.map +0 -1
- package/dist/types/src/extensions/preview/preview.d.ts +0 -39
- package/dist/types/src/extensions/preview/preview.d.ts.map +0 -1
- package/dist/types/src/stories/InputMode.stories.d.ts.map +0 -1
- package/dist/types/src/stories/TextEditorBasic.stories.d.ts.map +0 -1
- package/dist/types/src/stories/TextEditorComments.stories.d.ts +0 -13
- package/dist/types/src/stories/TextEditorComments.stories.d.ts.map +0 -1
- package/dist/types/src/stories/TextEditorPreview.stories.d.ts +0 -13
- package/dist/types/src/stories/TextEditorPreview.stories.d.ts.map +0 -1
- package/dist/types/src/stories/TextEditorSpecial.stories.d.ts +0 -19
- package/dist/types/src/stories/TextEditorSpecial.stories.d.ts.map +0 -1
- package/dist/types/src/stories/story-utils.d.ts +0 -53
- package/dist/types/src/stories/story-utils.d.ts.map +0 -1
- package/dist/types/src/testing/RefPopover.d.ts +0 -21
- package/dist/types/src/testing/RefPopover.d.ts.map +0 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +0 -1
- package/src/extensions/command/action.ts +0 -49
- package/src/extensions/preview/index.ts +0 -5
- package/src/extensions/preview/preview.ts +0 -271
- package/src/stories/TextEditorBasic.stories.tsx +0 -289
- package/src/stories/TextEditorComments.stories.tsx +0 -99
- package/src/stories/TextEditorPreview.stories.tsx +0 -239
- package/src/stories/TextEditorSpecial.stories.tsx +0 -107
- package/src/stories/story-utils.tsx +0 -329
- package/src/testing/RefPopover.tsx +0 -74
- package/src/testing/index.ts +0 -5
- /package/src/components/EditorToolbar/{view-mode.ts → viewMode.ts} +0 -0
package/dist/lib/node/index.cjs
CHANGED
@@ -55,10 +55,7 @@ __export(node_exports, {
|
|
55
55
|
blast: () => blast,
|
56
56
|
callbackWrapper: () => callbackWrapper,
|
57
57
|
clientRectsFor: () => clientRectsFor,
|
58
|
-
closeCommand: () => closeCommand,
|
59
|
-
closeEffect: () => closeEffect,
|
60
58
|
command: () => command,
|
61
|
-
commandKeyBindings: () => commandKeyBindings,
|
62
59
|
comments: () => comments,
|
63
60
|
commentsState: () => commentsState,
|
64
61
|
convertTreeToJson: () => convertTreeToJson,
|
@@ -72,7 +69,6 @@ __export(node_exports, {
|
|
72
69
|
createElement: () => createElement,
|
73
70
|
createExternalCommentSync: () => createExternalCommentSync,
|
74
71
|
createMarkdownExtensions: () => createMarkdownExtensions,
|
75
|
-
createRenderer: () => createRenderer,
|
76
72
|
createThemeExtensions: () => createThemeExtensions,
|
77
73
|
debugDispatcher: () => debugDispatcher,
|
78
74
|
debugNodeLogger: () => debugNodeLogger,
|
@@ -86,7 +82,6 @@ __export(node_exports, {
|
|
86
82
|
editorGutter: () => editorGutter,
|
87
83
|
editorInputMode: () => editorInputMode,
|
88
84
|
editorMonospace: () => editorMonospace,
|
89
|
-
editorWidth: () => editorWidth,
|
90
85
|
editorWithToolbarLayout: () => editorWithToolbarLayout,
|
91
86
|
flattenRect: () => flattenRect,
|
92
87
|
focus: () => focus,
|
@@ -105,11 +100,8 @@ __export(node_exports, {
|
|
105
100
|
markdownTags: () => markdownTags,
|
106
101
|
markdownTagsExtensions: () => markdownTagsExtensions,
|
107
102
|
mention: () => mention,
|
108
|
-
openCommand: () => openCommand,
|
109
|
-
openEffect: () => openEffect,
|
110
103
|
overlap: () => overlap,
|
111
104
|
preventNewline: () => preventNewline,
|
112
|
-
preview: () => preview,
|
113
105
|
processEditorPayload: () => processEditorPayload,
|
114
106
|
removeBlockquote: () => removeBlockquote,
|
115
107
|
removeCodeblock: () => removeCodeblock,
|
@@ -127,7 +119,7 @@ __export(node_exports, {
|
|
127
119
|
setStyle: () => setStyle,
|
128
120
|
singleValueFacet: () => singleValueFacet,
|
129
121
|
stackItemContentEditorClassNames: () => stackItemContentEditorClassNames,
|
130
|
-
stackItemContentToolbarClassNames: () =>
|
122
|
+
stackItemContentToolbarClassNames: () => stackItemContentToolbarClassNames2,
|
131
123
|
table: () => table,
|
132
124
|
tags: () => import_highlight.tags,
|
133
125
|
textRange: () => textRange,
|
@@ -162,11 +154,12 @@ var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
162
154
|
var import_react2 = require("react");
|
163
155
|
var import_live_object = require("@dxos/live-object");
|
164
156
|
var import_react_ui_menu2 = require("@dxos/react-ui-menu");
|
165
|
-
var import_view2 = require("@codemirror/view");
|
166
157
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
158
|
+
var import_view2 = require("@codemirror/view");
|
167
159
|
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
168
|
-
var import_lodash = __toESM(require("lodash.get"));
|
169
160
|
var import_react_ui_theme4 = require("@dxos/react-ui-theme");
|
161
|
+
var import_lodash = __toESM(require("lodash.get"));
|
162
|
+
var import_react_ui_theme5 = require("@dxos/react-ui-theme");
|
170
163
|
var import_state2 = require("@codemirror/state");
|
171
164
|
var import_view3 = require("@codemirror/view");
|
172
165
|
var import_util = require("@dxos/util");
|
@@ -175,7 +168,7 @@ var import_log = require("@dxos/log");
|
|
175
168
|
var import_react3 = __toESM(require("react"));
|
176
169
|
var import_client = require("react-dom/client");
|
177
170
|
var import_react_ui2 = require("@dxos/react-ui");
|
178
|
-
var
|
171
|
+
var import_react_ui_theme6 = require("@dxos/react-ui-theme");
|
179
172
|
var import_autocomplete = require("@codemirror/autocomplete");
|
180
173
|
var import_lang_markdown = require("@codemirror/lang-markdown");
|
181
174
|
var import_view4 = require("@codemirror/view");
|
@@ -199,97 +192,95 @@ var import_log3 = require("@dxos/log");
|
|
199
192
|
var import_view7 = require("@codemirror/view");
|
200
193
|
var import_lodash2 = __toESM(require("lodash.defaultsdeep"));
|
201
194
|
var import_invariant2 = require("@dxos/invariant");
|
202
|
-
var import_state8 = require("@codemirror/state");
|
203
|
-
var import_state9 = require("@codemirror/state");
|
204
195
|
var import_view8 = require("@codemirror/view");
|
196
|
+
var import_state8 = require("@codemirror/state");
|
205
197
|
var import_view9 = require("@codemirror/view");
|
206
|
-
var
|
198
|
+
var import_state9 = require("@codemirror/state");
|
207
199
|
var import_view10 = require("@codemirror/view");
|
208
200
|
var import_view11 = require("@codemirror/view");
|
201
|
+
var import_language = require("@codemirror/language");
|
202
|
+
var import_state10 = require("@codemirror/state");
|
203
|
+
var import_view12 = require("@codemirror/view");
|
209
204
|
var import_commands = require("@codemirror/commands");
|
210
205
|
var import_state11 = require("@codemirror/state");
|
211
|
-
var
|
206
|
+
var import_view13 = require("@codemirror/view");
|
212
207
|
var import_lodash3 = __toESM(require("lodash.sortby"));
|
213
208
|
var import_react4 = require("react");
|
214
209
|
var import_async3 = require("@dxos/async");
|
215
210
|
var import_log4 = require("@dxos/log");
|
216
211
|
var import_util2 = require("@dxos/util");
|
217
212
|
var import_state12 = require("@codemirror/state");
|
218
|
-
var
|
213
|
+
var import_view14 = require("@codemirror/view");
|
219
214
|
var import_async4 = require("@dxos/async");
|
220
215
|
var import_invariant3 = require("@dxos/invariant");
|
221
216
|
var import_util3 = require("@dxos/util");
|
222
|
-
var
|
217
|
+
var import_language2 = require("@codemirror/language");
|
223
218
|
var import_state13 = require("@codemirror/state");
|
224
|
-
var
|
219
|
+
var import_view15 = require("@codemirror/view");
|
225
220
|
var import_autocomplete2 = require("@codemirror/autocomplete");
|
226
221
|
var import_commands2 = require("@codemirror/commands");
|
227
|
-
var
|
222
|
+
var import_language3 = require("@codemirror/language");
|
228
223
|
var import_search = require("@codemirror/search");
|
229
224
|
var import_state14 = require("@codemirror/state");
|
230
225
|
var import_theme_one_dark = require("@codemirror/theme-one-dark");
|
231
|
-
var
|
226
|
+
var import_view16 = require("@codemirror/view");
|
232
227
|
var import_lodash4 = __toESM(require("lodash.defaultsdeep"));
|
233
228
|
var import_lodash5 = __toESM(require("lodash.merge"));
|
234
229
|
var import_display_name = require("@dxos/display-name");
|
235
230
|
var import_log5 = require("@dxos/log");
|
236
231
|
var import_util4 = require("@dxos/util");
|
237
232
|
var import_state15 = require("@codemirror/state");
|
238
|
-
var import_view16 = require("@codemirror/view");
|
239
|
-
var import_language3 = require("@codemirror/language");
|
240
233
|
var import_view17 = require("@codemirror/view");
|
234
|
+
var import_language4 = require("@codemirror/language");
|
235
|
+
var import_view18 = require("@codemirror/view");
|
241
236
|
var import_react5 = __toESM(require("react"));
|
242
237
|
var import_react_ui3 = require("@dxos/react-ui");
|
243
|
-
var
|
238
|
+
var import_view19 = require("@codemirror/view");
|
244
239
|
var import_autocomplete3 = require("@codemirror/autocomplete");
|
245
|
-
var
|
240
|
+
var import_language5 = require("@codemirror/language");
|
246
241
|
var import_state16 = require("@codemirror/state");
|
247
|
-
var
|
242
|
+
var import_view20 = require("@codemirror/view");
|
248
243
|
var import_react6 = require("react");
|
249
244
|
var import_autocomplete4 = require("@codemirror/autocomplete");
|
250
245
|
var import_commands3 = require("@codemirror/commands");
|
251
246
|
var import_lang_markdown2 = require("@codemirror/lang-markdown");
|
252
|
-
var
|
247
|
+
var import_language6 = require("@codemirror/language");
|
253
248
|
var import_language_data = require("@codemirror/language-data");
|
254
249
|
var import_lint = require("@codemirror/lint");
|
255
|
-
var
|
250
|
+
var import_view21 = require("@codemirror/view");
|
256
251
|
var import_lang_markdown3 = require("@codemirror/lang-markdown");
|
257
|
-
var
|
252
|
+
var import_language7 = require("@codemirror/language");
|
258
253
|
var import_highlight2 = require("@lezer/highlight");
|
259
254
|
var import_markdown = require("@lezer/markdown");
|
260
|
-
var import_language7 = require("@codemirror/language");
|
261
|
-
var import_state17 = require("@codemirror/state");
|
262
255
|
var import_language8 = require("@codemirror/language");
|
263
|
-
var
|
264
|
-
var import_view21 = require("@codemirror/view");
|
265
|
-
var import_invariant4 = require("@dxos/invariant");
|
266
|
-
var import_react_ui_theme6 = require("@dxos/react-ui-theme");
|
256
|
+
var import_state17 = require("@codemirror/state");
|
267
257
|
var import_language9 = require("@codemirror/language");
|
268
|
-
var
|
258
|
+
var import_state18 = require("@codemirror/state");
|
269
259
|
var import_view22 = require("@codemirror/view");
|
260
|
+
var import_invariant4 = require("@dxos/invariant");
|
261
|
+
var import_react_ui_theme7 = require("@dxos/react-ui-theme");
|
270
262
|
var import_language10 = require("@codemirror/language");
|
271
|
-
var
|
263
|
+
var import_state19 = require("@codemirror/state");
|
272
264
|
var import_view23 = require("@codemirror/view");
|
273
|
-
var import_view24 = require("@codemirror/view");
|
274
265
|
var import_language11 = require("@codemirror/language");
|
275
|
-
var
|
266
|
+
var import_state20 = require("@codemirror/state");
|
267
|
+
var import_view24 = require("@codemirror/view");
|
276
268
|
var import_view25 = require("@codemirror/view");
|
277
269
|
var import_language12 = require("@codemirror/language");
|
270
|
+
var import_state21 = require("@codemirror/state");
|
278
271
|
var import_view26 = require("@codemirror/view");
|
279
|
-
var
|
272
|
+
var import_language13 = require("@codemirror/language");
|
273
|
+
var import_view27 = require("@codemirror/view");
|
274
|
+
var import_react_ui_theme8 = require("@dxos/react-ui-theme");
|
280
275
|
var import_autocomplete5 = require("@codemirror/autocomplete");
|
281
276
|
var import_log6 = require("@dxos/log");
|
282
|
-
var
|
277
|
+
var import_view28 = require("@codemirror/view");
|
283
278
|
var import_codemirror_vim = require("@replit/codemirror-vim");
|
284
279
|
var import_codemirror_vscode_keymap = require("@replit/codemirror-vscode-keymap");
|
285
280
|
var import_echo_schema = require("@dxos/echo-schema");
|
286
|
-
var import_dx_ref_tag = require("@dxos/lit-ui/dx-ref-tag.pcss");
|
287
|
-
var import_language13 = require("@codemirror/language");
|
288
|
-
var import_state22 = require("@codemirror/state");
|
289
|
-
var import_view28 = require("@codemirror/view");
|
290
281
|
var import_view29 = require("@codemirror/view");
|
291
282
|
var import_react7 = require("react");
|
292
|
-
var
|
283
|
+
var import_state22 = require("@codemirror/state");
|
293
284
|
var import_view30 = require("@codemirror/view");
|
294
285
|
var import_react_tabster = require("@fluentui/react-tabster");
|
295
286
|
var import_react8 = require("react");
|
@@ -329,7 +320,7 @@ var translations_default = [
|
|
329
320
|
}
|
330
321
|
];
|
331
322
|
var useEditorToolbarState = (initialState = {}) => {
|
332
|
-
return (0, import_react2.useMemo)(() => (0, import_live_object.
|
323
|
+
return (0, import_react2.useMemo)(() => (0, import_live_object.create)(initialState), []);
|
333
324
|
};
|
334
325
|
var createEditorAction = (payload, icon, label = [
|
335
326
|
`${payload.type} label`,
|
@@ -577,6 +568,88 @@ var createViewMode = (state) => {
|
|
577
568
|
]
|
578
569
|
};
|
579
570
|
};
|
571
|
+
var stackItemContentToolbarClassNames = (role) => (0, import_react_ui_theme2.mx)("attention-surface is-full border-be !border-separator", role === "section" && "sticky block-start-0 z-[1] -mbe-px min-is-0");
|
572
|
+
var createToolbar = ({ state, customActions, ...features }) => {
|
573
|
+
const nodes = [];
|
574
|
+
const edges = [];
|
575
|
+
if (features.headings ?? true) {
|
576
|
+
const headings2 = createHeadings(state);
|
577
|
+
nodes.push(...headings2.nodes);
|
578
|
+
edges.push(...headings2.edges);
|
579
|
+
}
|
580
|
+
if (features.formatting ?? true) {
|
581
|
+
const formatting = createFormatting(state);
|
582
|
+
nodes.push(...formatting.nodes);
|
583
|
+
edges.push(...formatting.edges);
|
584
|
+
}
|
585
|
+
if (features.lists ?? true) {
|
586
|
+
const lists = createLists(state);
|
587
|
+
nodes.push(...lists.nodes);
|
588
|
+
edges.push(...lists.edges);
|
589
|
+
}
|
590
|
+
if (features.blocks ?? true) {
|
591
|
+
const blocks = createBlocks(state);
|
592
|
+
nodes.push(...blocks.nodes);
|
593
|
+
edges.push(...blocks.edges);
|
594
|
+
}
|
595
|
+
if (customActions) {
|
596
|
+
const custom = customActions();
|
597
|
+
nodes.push(...custom.nodes);
|
598
|
+
edges.push(...custom.edges);
|
599
|
+
}
|
600
|
+
const editorToolbarGap = (0, import_react_ui_menu.createGapSeparator)();
|
601
|
+
nodes.push(...editorToolbarGap.nodes);
|
602
|
+
edges.push(...editorToolbarGap.edges);
|
603
|
+
if (features.comment ?? true) {
|
604
|
+
const comment = createComment(state);
|
605
|
+
nodes.push(...comment.nodes);
|
606
|
+
edges.push(...comment.edges);
|
607
|
+
}
|
608
|
+
if (features.search ?? true) {
|
609
|
+
nodes.push(editorToolbarSearch);
|
610
|
+
edges.push({
|
611
|
+
source: "root",
|
612
|
+
target: editorToolbarSearch.id
|
613
|
+
});
|
614
|
+
}
|
615
|
+
if (features.viewMode ?? true) {
|
616
|
+
const viewMode = createViewMode(state);
|
617
|
+
nodes.push(...viewMode.nodes);
|
618
|
+
edges.push(...viewMode.edges);
|
619
|
+
}
|
620
|
+
return {
|
621
|
+
nodes,
|
622
|
+
edges
|
623
|
+
};
|
624
|
+
};
|
625
|
+
var useEditorToolbarActionGraph = ({ onAction, ...props }) => {
|
626
|
+
const menuCreator = (0, import_react.useCallback)(() => createToolbar(props), [
|
627
|
+
props
|
628
|
+
]);
|
629
|
+
const { resolveGroupItems } = (0, import_react_ui_menu.useMenuActions)(menuCreator);
|
630
|
+
return {
|
631
|
+
resolveGroupItems,
|
632
|
+
onAction
|
633
|
+
};
|
634
|
+
};
|
635
|
+
var EditorToolbar = ({ classNames, attendableId, role, ...props }) => {
|
636
|
+
const menuProps = useEditorToolbarActionGraph(props);
|
637
|
+
return /* @__PURE__ */ import_react.default.createElement("div", {
|
638
|
+
role: "none",
|
639
|
+
className: stackItemContentToolbarClassNames(role)
|
640
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ElevationProvider, {
|
641
|
+
elevation: role === "section" ? "positioned" : "base"
|
642
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.MenuProvider, {
|
643
|
+
...menuProps,
|
644
|
+
attendableId
|
645
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.ToolbarMenu, {
|
646
|
+
classNames: [
|
647
|
+
import_react_ui_theme.textBlockWidth,
|
648
|
+
"!bg-transparent",
|
649
|
+
classNames
|
650
|
+
]
|
651
|
+
}))));
|
652
|
+
};
|
580
653
|
var headings = {
|
581
654
|
1: "text-4xl",
|
582
655
|
2: "text-3xl",
|
@@ -590,11 +663,11 @@ var theme = {
|
|
590
663
|
codeMark: "font-mono text-primary-500",
|
591
664
|
mark: "opacity-50",
|
592
665
|
heading: (level) => {
|
593
|
-
return (0,
|
666
|
+
return (0, import_react_ui_theme4.mx)(headings[level], "dark:text-primary-400");
|
594
667
|
}
|
595
668
|
};
|
596
669
|
var getToken = (path, defaultValue) => {
|
597
|
-
const value = (0, import_lodash.default)(
|
670
|
+
const value = (0, import_lodash.default)(import_react_ui_theme5.tokens, path, defaultValue);
|
598
671
|
return value?.toString() ?? "";
|
599
672
|
};
|
600
673
|
var fontBody = getToken("fontFamily.body");
|
@@ -801,9 +874,8 @@ var defaultTheme = {
|
|
801
874
|
}
|
802
875
|
};
|
803
876
|
var margin = "!mt-[1rem]";
|
804
|
-
var
|
805
|
-
var
|
806
|
-
var editorFullWidth = (0, import_react_ui_theme2.mx)(margin);
|
877
|
+
var editorContent = (0, import_react_ui_theme3.mx)(margin, "!mli-auto w-full max-w-[min(50rem,100%-4rem)]");
|
878
|
+
var editorFullWidth = (0, import_react_ui_theme3.mx)(margin);
|
807
879
|
var editorGutter = import_view2.EditorView.theme({
|
808
880
|
// Match margin from content.
|
809
881
|
// Gutter = 2rem + 1rem margin.
|
@@ -818,89 +890,8 @@ var editorMonospace = import_view2.EditorView.theme({
|
|
818
890
|
}
|
819
891
|
});
|
820
892
|
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
821
|
-
var stackItemContentEditorClassNames = (role) => (0,
|
822
|
-
var
|
823
|
-
var createToolbar = ({ state, customActions, ...features }) => {
|
824
|
-
const nodes = [];
|
825
|
-
const edges = [];
|
826
|
-
if (features.headings ?? true) {
|
827
|
-
const headings2 = createHeadings(state);
|
828
|
-
nodes.push(...headings2.nodes);
|
829
|
-
edges.push(...headings2.edges);
|
830
|
-
}
|
831
|
-
if (features.formatting ?? true) {
|
832
|
-
const formatting = createFormatting(state);
|
833
|
-
nodes.push(...formatting.nodes);
|
834
|
-
edges.push(...formatting.edges);
|
835
|
-
}
|
836
|
-
if (features.lists ?? true) {
|
837
|
-
const lists = createLists(state);
|
838
|
-
nodes.push(...lists.nodes);
|
839
|
-
edges.push(...lists.edges);
|
840
|
-
}
|
841
|
-
if (features.blocks ?? true) {
|
842
|
-
const blocks = createBlocks(state);
|
843
|
-
nodes.push(...blocks.nodes);
|
844
|
-
edges.push(...blocks.edges);
|
845
|
-
}
|
846
|
-
if (customActions) {
|
847
|
-
const custom = customActions();
|
848
|
-
nodes.push(...custom.nodes);
|
849
|
-
edges.push(...custom.edges);
|
850
|
-
}
|
851
|
-
const editorToolbarGap = (0, import_react_ui_menu.createGapSeparator)();
|
852
|
-
nodes.push(...editorToolbarGap.nodes);
|
853
|
-
edges.push(...editorToolbarGap.edges);
|
854
|
-
if (features.comment ?? true) {
|
855
|
-
const comment = createComment(state);
|
856
|
-
nodes.push(...comment.nodes);
|
857
|
-
edges.push(...comment.edges);
|
858
|
-
}
|
859
|
-
if (features.search ?? true) {
|
860
|
-
nodes.push(editorToolbarSearch);
|
861
|
-
edges.push({
|
862
|
-
source: "root",
|
863
|
-
target: editorToolbarSearch.id
|
864
|
-
});
|
865
|
-
}
|
866
|
-
if (features.viewMode ?? true) {
|
867
|
-
const viewMode = createViewMode(state);
|
868
|
-
nodes.push(...viewMode.nodes);
|
869
|
-
edges.push(...viewMode.edges);
|
870
|
-
}
|
871
|
-
return {
|
872
|
-
nodes,
|
873
|
-
edges
|
874
|
-
};
|
875
|
-
};
|
876
|
-
var useEditorToolbarActionGraph = ({ onAction, ...props }) => {
|
877
|
-
const menuCreator = (0, import_react.useCallback)(() => createToolbar(props), [
|
878
|
-
props
|
879
|
-
]);
|
880
|
-
const { resolveGroupItems } = (0, import_react_ui_menu.useMenuActions)(menuCreator);
|
881
|
-
return {
|
882
|
-
resolveGroupItems,
|
883
|
-
onAction
|
884
|
-
};
|
885
|
-
};
|
886
|
-
var EditorToolbar = ({ classNames, attendableId, role, ...props }) => {
|
887
|
-
const menuProps = useEditorToolbarActionGraph(props);
|
888
|
-
return /* @__PURE__ */ import_react.default.createElement("div", {
|
889
|
-
role: "none",
|
890
|
-
className: stackItemContentToolbarClassNames(role)
|
891
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ElevationProvider, {
|
892
|
-
elevation: role === "section" ? "positioned" : "base"
|
893
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.MenuProvider, {
|
894
|
-
...menuProps,
|
895
|
-
attendableId
|
896
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_menu.ToolbarMenu, {
|
897
|
-
classNames: [
|
898
|
-
import_react_ui_theme.textBlockWidth,
|
899
|
-
"!bg-transparent",
|
900
|
-
classNames
|
901
|
-
]
|
902
|
-
}))));
|
903
|
-
};
|
893
|
+
var stackItemContentEditorClassNames = (role) => (0, import_react_ui_theme3.mx)("attention-surface dx-focus-ring-inset data-[toolbar=disabled]:pbs-2", role === "section" ? "[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24" : "min-bs-0");
|
894
|
+
var stackItemContentToolbarClassNames2 = (role) => (0, import_react_ui_theme3.mx)("attention-surface is-full border-be !border-separator", role === "section" && "sticky block-start-0 z-[1] -mbe-px min-is-0");
|
904
895
|
var singleValueFacet = (defaultValue) => import_state3.Facet.define({
|
905
896
|
// Called immediately.
|
906
897
|
combine: (providers) => {
|
@@ -1036,15 +1027,10 @@ var createElement = (tag, options, children) => {
|
|
1036
1027
|
};
|
1037
1028
|
var renderRoot = (root, node) => {
|
1038
1029
|
(0, import_client.createRoot)(root).render(/* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ThemeProvider, {
|
1039
|
-
tx:
|
1030
|
+
tx: import_react_ui_theme6.defaultTx
|
1040
1031
|
}, node));
|
1041
1032
|
return root;
|
1042
1033
|
};
|
1043
|
-
var createRenderer = (Component) => (el, props) => {
|
1044
|
-
renderRoot(el, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ThemeProvider, {
|
1045
|
-
tx: import_react_ui_theme5.defaultTx
|
1046
|
-
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Provider, null, /* @__PURE__ */ import_react3.default.createElement(Component, props))));
|
1047
|
-
};
|
1048
1034
|
var annotationMark = import_view3.Decoration.mark({
|
1049
1035
|
class: "cm-annotation"
|
1050
1036
|
});
|
@@ -2046,8 +2032,8 @@ var commandState = import_state9.StateField.define({
|
|
2046
2032
|
if (effect.is(closeEffect)) {
|
2047
2033
|
return {};
|
2048
2034
|
}
|
2049
|
-
|
2050
|
-
|
2035
|
+
if (effect.is(openEffect)) {
|
2036
|
+
const options = tr.state.facet(commandConfig);
|
2051
2037
|
const { pos, fullWidth } = effect.value;
|
2052
2038
|
const tooltip = {
|
2053
2039
|
pos,
|
@@ -2055,39 +2041,34 @@ var commandState = import_state9.StateField.define({
|
|
2055
2041
|
arrow: false,
|
2056
2042
|
strictSide: true,
|
2057
2043
|
create: (view) => {
|
2058
|
-
const
|
2044
|
+
const dom = document.createElement("div");
|
2059
2045
|
const tooltipView = {
|
2060
|
-
dom
|
2046
|
+
dom,
|
2061
2047
|
mount: (view2) => {
|
2062
2048
|
if (fullWidth) {
|
2063
|
-
const parent =
|
2049
|
+
const parent = dom.parentElement;
|
2064
2050
|
const { paddingLeft, paddingRight } = window.getComputedStyle(parent);
|
2065
2051
|
const widthWithoutPadding = parent.clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);
|
2066
|
-
|
2052
|
+
dom.style.width = `${widthWithoutPadding}px`;
|
2067
2053
|
}
|
2068
|
-
|
2069
|
-
|
2054
|
+
options.onRenderDialog(dom, (action) => {
|
2055
|
+
view2.dispatch({
|
2056
|
+
effects: closeEffect.of(null)
|
2057
|
+
});
|
2058
|
+
if (action?.insert?.length) {
|
2059
|
+
const text = action.insert + "\n";
|
2070
2060
|
view2.dispatch({
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
|
2075
|
-
|
2076
|
-
|
2077
|
-
changes: {
|
2078
|
-
from: pos,
|
2079
|
-
insert: text
|
2080
|
-
},
|
2081
|
-
selection: {
|
2082
|
-
anchor: pos + text.length
|
2083
|
-
}
|
2084
|
-
});
|
2085
|
-
break;
|
2061
|
+
changes: {
|
2062
|
+
from: pos,
|
2063
|
+
insert: text
|
2064
|
+
},
|
2065
|
+
selection: {
|
2066
|
+
anchor: pos + text.length
|
2086
2067
|
}
|
2087
|
-
}
|
2088
|
-
requestAnimationFrame(() => view2.focus());
|
2068
|
+
});
|
2089
2069
|
}
|
2090
|
-
|
2070
|
+
requestAnimationFrame(() => view2.focus());
|
2071
|
+
});
|
2091
2072
|
}
|
2092
2073
|
};
|
2093
2074
|
return tooltipView;
|
@@ -2101,11 +2082,11 @@ var commandState = import_state9.StateField.define({
|
|
2101
2082
|
return state;
|
2102
2083
|
},
|
2103
2084
|
provide: (field) => [
|
2104
|
-
|
2085
|
+
import_view10.showTooltip.from(field, (value) => value.tooltip ?? null)
|
2105
2086
|
]
|
2106
2087
|
});
|
2107
|
-
var openEffect =
|
2108
|
-
var closeEffect =
|
2088
|
+
var openEffect = import_state9.StateEffect.define();
|
2089
|
+
var closeEffect = import_state9.StateEffect.define();
|
2109
2090
|
var openCommand = (view) => {
|
2110
2091
|
if (view.state.field(commandState, false)) {
|
2111
2092
|
const selection = view.state.selection.main;
|
@@ -2141,33 +2122,7 @@ var commandKeyBindings = [
|
|
2141
2122
|
run: closeCommand
|
2142
2123
|
}
|
2143
2124
|
];
|
2144
|
-
var
|
2145
|
-
constructor() {
|
2146
|
-
this.deco = import_view10.Decoration.none;
|
2147
|
-
}
|
2148
|
-
update(update2) {
|
2149
|
-
const builder = new import_state10.RangeSetBuilder();
|
2150
|
-
const cState = update2.view.state.field(commandState, false);
|
2151
|
-
if (!cState?.tooltip) {
|
2152
|
-
const selection = update2.view.state.selection.main;
|
2153
|
-
const line = update2.view.state.doc.lineAt(selection.from);
|
2154
|
-
if (selection.from === selection.to && line.from === line.to) {
|
2155
|
-
const hint = onHint();
|
2156
|
-
if (hint) {
|
2157
|
-
builder.add(selection.from, selection.to, import_view10.Decoration.widget({
|
2158
|
-
widget: new CommandHint(hint)
|
2159
|
-
}));
|
2160
|
-
}
|
2161
|
-
}
|
2162
|
-
}
|
2163
|
-
this.deco = builder.finish();
|
2164
|
-
}
|
2165
|
-
}, {
|
2166
|
-
provide: (plugin) => [
|
2167
|
-
import_view10.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view10.Decoration.none)
|
2168
|
-
]
|
2169
|
-
});
|
2170
|
-
var CommandHint = class extends import_view10.WidgetType {
|
2125
|
+
var CommandHint = class extends import_view9.WidgetType {
|
2171
2126
|
constructor(content) {
|
2172
2127
|
super();
|
2173
2128
|
this.content = content;
|
@@ -2206,6 +2161,32 @@ var CommandHint = class extends import_view10.WidgetType {
|
|
2206
2161
|
return false;
|
2207
2162
|
}
|
2208
2163
|
};
|
2164
|
+
var hintViewPlugin = ({ onHint }) => import_view9.ViewPlugin.fromClass(class {
|
2165
|
+
constructor() {
|
2166
|
+
this.deco = import_view9.Decoration.none;
|
2167
|
+
}
|
2168
|
+
update(update2) {
|
2169
|
+
const builder = new import_state8.RangeSetBuilder();
|
2170
|
+
const cState = update2.view.state.field(commandState, false);
|
2171
|
+
if (!cState?.tooltip) {
|
2172
|
+
const selection = update2.view.state.selection.main;
|
2173
|
+
const line = update2.view.state.doc.lineAt(selection.from);
|
2174
|
+
if (selection.from === selection.to && line.from === line.to) {
|
2175
|
+
const hint = onHint();
|
2176
|
+
if (hint) {
|
2177
|
+
builder.add(selection.from, selection.to, import_view9.Decoration.widget({
|
2178
|
+
widget: new CommandHint(hint)
|
2179
|
+
}));
|
2180
|
+
}
|
2181
|
+
}
|
2182
|
+
}
|
2183
|
+
this.deco = builder.finish();
|
2184
|
+
}
|
2185
|
+
}, {
|
2186
|
+
provide: (plugin) => [
|
2187
|
+
import_view9.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view9.Decoration.none)
|
2188
|
+
]
|
2189
|
+
});
|
2209
2190
|
var floatingMenu = (options) => import_view11.ViewPlugin.fromClass(class {
|
2210
2191
|
constructor(view) {
|
2211
2192
|
this.rafId = null;
|
@@ -2218,11 +2199,11 @@ var floatingMenu = (options) => import_view11.ViewPlugin.fromClass(class {
|
|
2218
2199
|
this.button.style.position = "absolute";
|
2219
2200
|
this.button.style.zIndex = "10";
|
2220
2201
|
this.button.style.display = "none";
|
2221
|
-
options.
|
2222
|
-
|
2223
|
-
}
|
2202
|
+
options.onRenderMenu(this.button, () => {
|
2203
|
+
openCommand(view);
|
2204
|
+
});
|
2224
2205
|
container.appendChild(this.button);
|
2225
|
-
container.addEventListener("scroll", this.scheduleUpdate
|
2206
|
+
container.addEventListener("scroll", this.scheduleUpdate);
|
2226
2207
|
this.scheduleUpdate();
|
2227
2208
|
}
|
2228
2209
|
update(update2) {
|
@@ -2238,7 +2219,7 @@ var floatingMenu = (options) => import_view11.ViewPlugin.fromClass(class {
|
|
2238
2219
|
if (this.rafId != null) {
|
2239
2220
|
cancelAnimationFrame(this.rafId);
|
2240
2221
|
}
|
2241
|
-
this.rafId = requestAnimationFrame(this.updateButtonPosition
|
2222
|
+
this.rafId = requestAnimationFrame(() => this.updateButtonPosition());
|
2242
2223
|
}
|
2243
2224
|
updateButtonPosition() {
|
2244
2225
|
const pos = this.view.state.selection.main.head;
|
@@ -2267,23 +2248,77 @@ var floatingMenu = (options) => import_view11.ViewPlugin.fromClass(class {
|
|
2267
2248
|
}
|
2268
2249
|
}
|
2269
2250
|
});
|
2270
|
-
var
|
2251
|
+
var preview = (options) => {
|
2252
|
+
return [
|
2253
|
+
import_state10.StateField.define({
|
2254
|
+
create: (state) => buildDecorations(state, options),
|
2255
|
+
update: (_, tr) => buildDecorations(tr.state, options),
|
2256
|
+
// TODO(burdon): Make atomic.
|
2257
|
+
provide: (field) => import_view12.EditorView.decorations.from(field)
|
2258
|
+
})
|
2259
|
+
];
|
2260
|
+
};
|
2261
|
+
var buildDecorations = (state, options) => {
|
2262
|
+
const builder = new import_state10.RangeSetBuilder();
|
2263
|
+
(0, import_language.syntaxTree)(state).iterate({
|
2264
|
+
enter: (node) => {
|
2265
|
+
if (node.name === "Link") {
|
2266
|
+
const urlNode = node.node.getChild("URL");
|
2267
|
+
if (urlNode) {
|
2268
|
+
const text = state.sliceDoc(node.from + 1, urlNode.from - 2);
|
2269
|
+
const url = state.sliceDoc(urlNode.from, urlNode.to);
|
2270
|
+
builder.add(node.from, node.to, import_view12.Decoration.replace({
|
2271
|
+
block: true,
|
2272
|
+
widget: new PreviewWidget(options.onRenderPreview, url, text)
|
2273
|
+
}));
|
2274
|
+
}
|
2275
|
+
}
|
2276
|
+
}
|
2277
|
+
});
|
2278
|
+
return builder.finish();
|
2279
|
+
};
|
2280
|
+
var PreviewWidget = class extends import_view12.WidgetType {
|
2281
|
+
constructor(_onRenderPreview, _url, _text) {
|
2282
|
+
super();
|
2283
|
+
this._onRenderPreview = _onRenderPreview;
|
2284
|
+
this._url = _url;
|
2285
|
+
this._text = _text;
|
2286
|
+
}
|
2287
|
+
eq(other) {
|
2288
|
+
return this._url === other._url;
|
2289
|
+
}
|
2290
|
+
toDOM(view) {
|
2291
|
+
const root = document.createElement("div");
|
2292
|
+
root.classList.add("cm-preview");
|
2293
|
+
this._onRenderPreview(root, {
|
2294
|
+
url: this._url,
|
2295
|
+
text: this._text
|
2296
|
+
});
|
2297
|
+
return root;
|
2298
|
+
}
|
2299
|
+
};
|
2300
|
+
var command = (options) => {
|
2271
2301
|
return [
|
2272
|
-
import_view9.keymap.of(commandKeyBindings),
|
2273
2302
|
commandConfig.of(options),
|
2274
2303
|
commandState,
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2279
|
-
|
2280
|
-
}) : [],
|
2281
|
-
import_view9.EditorView.focusChangeEffect.of((_, focusing) => {
|
2304
|
+
import_view8.keymap.of(commandKeyBindings),
|
2305
|
+
preview(options),
|
2306
|
+
floatingMenu(options),
|
2307
|
+
hintViewPlugin(options),
|
2308
|
+
import_view8.EditorView.focusChangeEffect.of((_, focusing) => {
|
2282
2309
|
return focusing ? closeEffect.of(null) : null;
|
2283
2310
|
}),
|
2284
|
-
|
2311
|
+
import_view8.EditorView.theme({
|
2285
2312
|
".cm-tooltip": {
|
2286
2313
|
background: "transparent"
|
2314
|
+
},
|
2315
|
+
".cm-preview": {
|
2316
|
+
marginLeft: "-1rem",
|
2317
|
+
marginRight: "-1rem",
|
2318
|
+
padding: "1rem",
|
2319
|
+
borderRadius: "1rem",
|
2320
|
+
background: "var(--dx-modalSurface)",
|
2321
|
+
border: "1px solid var(--dx-separator)"
|
2287
2322
|
}
|
2288
2323
|
})
|
2289
2324
|
];
|
@@ -2295,7 +2330,7 @@ var createEditorStateTransaction = ({ scrollTo, selection }) => {
|
|
2295
2330
|
return {
|
2296
2331
|
selection,
|
2297
2332
|
scrollIntoView: !scrollTo,
|
2298
|
-
effects: scrollTo ?
|
2333
|
+
effects: scrollTo ? import_view14.EditorView.scrollIntoView(scrollTo, {
|
2299
2334
|
yMargin: 96
|
2300
2335
|
}) : void 0,
|
2301
2336
|
annotations: import_state12.Transaction.userEvent.of(stateRestoreAnnotation)
|
@@ -2337,7 +2372,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2337
2372
|
// setStateDebounced(id, {});
|
2338
2373
|
// },
|
2339
2374
|
// }),
|
2340
|
-
|
2375
|
+
import_view14.EditorView.updateListener.of(({ view, transactions }) => {
|
2341
2376
|
const id = view.state.facet(documentId);
|
2342
2377
|
if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {
|
2343
2378
|
return;
|
@@ -2360,7 +2395,7 @@ var selectionState = ({ getState, setState } = {}) => {
|
|
2360
2395
|
}
|
2361
2396
|
}
|
2362
2397
|
}),
|
2363
|
-
getState &&
|
2398
|
+
getState && import_view14.keymap.of([
|
2364
2399
|
{
|
2365
2400
|
key: "ctrl-r",
|
2366
2401
|
run: (view) => {
|
@@ -2416,7 +2451,7 @@ var commentsState = import_state11.StateField.define({
|
|
2416
2451
|
return value;
|
2417
2452
|
}
|
2418
2453
|
});
|
2419
|
-
var styles3 =
|
2454
|
+
var styles3 = import_view13.EditorView.theme({
|
2420
2455
|
".cm-comment, .cm-comment-current": {
|
2421
2456
|
margin: "0 -3px",
|
2422
2457
|
padding: "3px",
|
@@ -2429,14 +2464,14 @@ var styles3 = import_view12.EditorView.theme({
|
|
2429
2464
|
textDecoration: "underline"
|
2430
2465
|
}
|
2431
2466
|
});
|
2432
|
-
var createCommentMark = (id, isCurrent) =>
|
2467
|
+
var createCommentMark = (id, isCurrent) => import_view13.Decoration.mark({
|
2433
2468
|
class: isCurrent ? "cm-comment-current" : "cm-comment",
|
2434
2469
|
attributes: {
|
2435
2470
|
"data-testid": "cm-comment",
|
2436
2471
|
"data-comment-id": id
|
2437
2472
|
}
|
2438
2473
|
});
|
2439
|
-
var commentsDecorations =
|
2474
|
+
var commentsDecorations = import_view13.EditorView.decorations.compute([
|
2440
2475
|
commentsState
|
2441
2476
|
], (state) => {
|
2442
2477
|
const { selection: { current }, comments: comments2 } = state.field(commentsState);
|
@@ -2456,10 +2491,10 @@ var commentsDecorations = import_view12.EditorView.decorations.compute([
|
|
2456
2491
|
const mark = createCommentMark(comment.comment.id, comment.comment.id === current);
|
2457
2492
|
return mark.range(range.from, range.to);
|
2458
2493
|
}).filter(import_util2.isNonNullable);
|
2459
|
-
return
|
2494
|
+
return import_view13.Decoration.set(decorations);
|
2460
2495
|
});
|
2461
2496
|
var commentClickedEffect = import_state11.StateEffect.define();
|
2462
|
-
var handleCommentClick =
|
2497
|
+
var handleCommentClick = import_view13.EditorView.domEventHandlers({
|
2463
2498
|
click: (event, view) => {
|
2464
2499
|
let target = event.target;
|
2465
2500
|
const editorRoot = view.dom;
|
@@ -2498,7 +2533,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2498
2533
|
}
|
2499
2534
|
};
|
2500
2535
|
return [
|
2501
|
-
|
2536
|
+
import_view13.EditorView.domEventHandlers({
|
2502
2537
|
cut: handleTrack,
|
2503
2538
|
copy: handleTrack
|
2504
2539
|
}),
|
@@ -2520,7 +2555,7 @@ var trackPastedComments = (onUpdate) => {
|
|
2520
2555
|
return effects;
|
2521
2556
|
}),
|
2522
2557
|
// Handle paste or the undo of comment deletion.
|
2523
|
-
|
2558
|
+
import_view13.EditorView.updateListener.of((update2) => {
|
2524
2559
|
const restore = [];
|
2525
2560
|
for (let i = 0; i < update2.transactions.length; i++) {
|
2526
2561
|
const tr = update2.transactions[i];
|
@@ -2621,7 +2656,7 @@ var comments = (options = {}) => {
|
|
2621
2656
|
//
|
2622
2657
|
// Keymap.
|
2623
2658
|
//
|
2624
|
-
options.onCreate &&
|
2659
|
+
options.onCreate && import_view13.keymap.of([
|
2625
2660
|
{
|
2626
2661
|
key: shortcut,
|
2627
2662
|
run: callbackWrapper(createComment2)
|
@@ -2631,7 +2666,7 @@ var comments = (options = {}) => {
|
|
2631
2666
|
// Hover tooltip (for key shortcut hints, etc.)
|
2632
2667
|
// TODO(burdon): Factor out to generic hints extension for current selection/line.
|
2633
2668
|
//
|
2634
|
-
options.
|
2669
|
+
options.onHover && (0, import_view13.hoverTooltip)((view, pos) => {
|
2635
2670
|
const selection = view.state.selection.main;
|
2636
2671
|
if (selection && pos >= selection.from && pos <= selection.to) {
|
2637
2672
|
return {
|
@@ -2640,9 +2675,7 @@ var comments = (options = {}) => {
|
|
2640
2675
|
above: true,
|
2641
2676
|
create: () => {
|
2642
2677
|
const el = document.createElement("div");
|
2643
|
-
options.
|
2644
|
-
shortcut
|
2645
|
-
}, view);
|
2678
|
+
options.onHover(el, shortcut);
|
2646
2679
|
return {
|
2647
2680
|
dom: el,
|
2648
2681
|
offset: {
|
@@ -2662,7 +2695,7 @@ var comments = (options = {}) => {
|
|
2662
2695
|
//
|
2663
2696
|
// Track deleted ranges and update ranges for decorations.
|
2664
2697
|
//
|
2665
|
-
|
2698
|
+
import_view13.EditorView.updateListener.of(({ view, state, changes }) => {
|
2666
2699
|
let mod = false;
|
2667
2700
|
const { comments: comments2, ...value } = state.field(commentsState);
|
2668
2701
|
changes.iterChanges((from, to, from2, to2) => {
|
@@ -2694,7 +2727,7 @@ var comments = (options = {}) => {
|
|
2694
2727
|
//
|
2695
2728
|
// Track selection/proximity.
|
2696
2729
|
//
|
2697
|
-
|
2730
|
+
import_view13.EditorView.updateListener.of(({ view, state }) => {
|
2698
2731
|
let min = Infinity;
|
2699
2732
|
const { selection: { current, closest }, comments: comments2 } = state.field(commentsState);
|
2700
2733
|
const { head } = state.selection.main;
|
@@ -2748,7 +2781,7 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2748
2781
|
anchor: range.from
|
2749
2782
|
} : void 0,
|
2750
2783
|
effects: [
|
2751
|
-
needsScroll ?
|
2784
|
+
needsScroll ? import_view13.EditorView.scrollIntoView(range.from, center ? {
|
2752
2785
|
y: "center"
|
2753
2786
|
} : void 0) : [],
|
2754
2787
|
needsSelectionUpdate ? setSelection.of({
|
@@ -2794,13 +2827,13 @@ var ExternalCommentSync = class {
|
|
2794
2827
|
this.unsubscribe = subscribe(updateComments);
|
2795
2828
|
}
|
2796
2829
|
};
|
2797
|
-
var createExternalCommentSync = (id, subscribe, getComments) =>
|
2830
|
+
var createExternalCommentSync = (id, subscribe, getComments) => import_view13.ViewPlugin.fromClass(class {
|
2798
2831
|
constructor(view) {
|
2799
2832
|
return new ExternalCommentSync(view, id, subscribe, getComments);
|
2800
2833
|
}
|
2801
2834
|
});
|
2802
2835
|
var useCommentState = (state) => {
|
2803
|
-
return (0, import_react4.useMemo)(() =>
|
2836
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2804
2837
|
if (update2.docChanged || update2.selectionSet) {
|
2805
2838
|
state.comment = selectionOverlapsComment(update2.state);
|
2806
2839
|
state.selection = hasActiveSelection(update2.state);
|
@@ -2824,7 +2857,7 @@ var useComments = (view, id, comments2) => {
|
|
2824
2857
|
});
|
2825
2858
|
};
|
2826
2859
|
var useCommentClickListener = (onCommentClick) => {
|
2827
|
-
return (0, import_react4.useMemo)(() =>
|
2860
|
+
return (0, import_react4.useMemo)(() => import_view13.EditorView.updateListener.of((update2) => {
|
2828
2861
|
update2.transactions.forEach((transaction) => {
|
2829
2862
|
transaction.effects.forEach((effect) => {
|
2830
2863
|
if (effect.is(commentClickedEffect)) {
|
@@ -2837,7 +2870,7 @@ var useCommentClickListener = (onCommentClick) => {
|
|
2837
2870
|
]);
|
2838
2871
|
};
|
2839
2872
|
var debugNodeLogger = (log8 = console.log) => {
|
2840
|
-
const logTokens = (state) => (0,
|
2873
|
+
const logTokens = (state) => (0, import_language2.syntaxTree)(state).iterate({
|
2841
2874
|
enter: (node) => log8(node.type)
|
2842
2875
|
});
|
2843
2876
|
return import_state13.StateField.define({
|
@@ -2845,7 +2878,7 @@ var debugNodeLogger = (log8 = console.log) => {
|
|
2845
2878
|
update: (_, tr) => logTokens(tr.state)
|
2846
2879
|
});
|
2847
2880
|
};
|
2848
|
-
var styles4 =
|
2881
|
+
var styles4 = import_view15.EditorView.theme({
|
2849
2882
|
".cm-dropCursor": {
|
2850
2883
|
borderLeft: "2px solid var(--dx-accentText)",
|
2851
2884
|
color: "var(--dx-accentText)",
|
@@ -2858,8 +2891,8 @@ var styles4 = import_view14.EditorView.theme({
|
|
2858
2891
|
var dropFile = (options = {}) => {
|
2859
2892
|
return [
|
2860
2893
|
styles4,
|
2861
|
-
(0,
|
2862
|
-
|
2894
|
+
(0, import_view15.dropCursor)(),
|
2895
|
+
import_view15.EditorView.domEventHandlers({
|
2863
2896
|
drop: (event, view) => {
|
2864
2897
|
event.preventDefault();
|
2865
2898
|
const files = event.dataTransfer?.files;
|
@@ -2892,7 +2925,7 @@ var focusField = import_state15.StateField.define({
|
|
2892
2925
|
});
|
2893
2926
|
var focus = [
|
2894
2927
|
focusField,
|
2895
|
-
|
2928
|
+
import_view17.EditorView.domEventHandlers({
|
2896
2929
|
focus: (event, view) => {
|
2897
2930
|
setTimeout(() => view.dispatch({
|
2898
2931
|
effects: focusEffect.of(true)
|
@@ -2928,7 +2961,7 @@ var createBasicExtensions = (_props) => {
|
|
2928
2961
|
const props = (0, import_lodash4.default)({}, _props, defaultBasicOptions);
|
2929
2962
|
return [
|
2930
2963
|
// NOTE: Doesn't catch errors in keymap functions.
|
2931
|
-
|
2964
|
+
import_view16.EditorView.exceptionSink.of((err) => {
|
2932
2965
|
import_log5.log.catch(err, void 0, {
|
2933
2966
|
F: __dxlog_file8,
|
2934
2967
|
L: 96,
|
@@ -2937,24 +2970,24 @@ var createBasicExtensions = (_props) => {
|
|
2937
2970
|
});
|
2938
2971
|
}),
|
2939
2972
|
props.allowMultipleSelections && import_state14.EditorState.allowMultipleSelections.of(true),
|
2940
|
-
props.bracketMatching && (0,
|
2973
|
+
props.bracketMatching && (0, import_language3.bracketMatching)(),
|
2941
2974
|
props.closeBrackets && (0, import_autocomplete2.closeBrackets)(),
|
2942
|
-
props.dropCursor && (0,
|
2943
|
-
props.drawSelection && (0,
|
2975
|
+
props.dropCursor && (0, import_view16.dropCursor)(),
|
2976
|
+
props.drawSelection && (0, import_view16.drawSelection)({
|
2944
2977
|
cursorBlinkRate: 1200
|
2945
2978
|
}),
|
2946
|
-
props.editable !== void 0 &&
|
2979
|
+
props.editable !== void 0 && import_view16.EditorView.editable.of(props.editable),
|
2947
2980
|
props.focus && focus,
|
2948
|
-
props.highlightActiveLine && (0,
|
2981
|
+
props.highlightActiveLine && (0, import_view16.highlightActiveLine)(),
|
2949
2982
|
props.history && (0, import_commands2.history)(),
|
2950
|
-
props.lineNumbers && (0,
|
2951
|
-
props.lineWrapping &&
|
2952
|
-
props.placeholder && (0,
|
2983
|
+
props.lineNumbers && (0, import_view16.lineNumbers)(),
|
2984
|
+
props.lineWrapping && import_view16.EditorView.lineWrapping,
|
2985
|
+
props.placeholder && (0, import_view16.placeholder)(props.placeholder),
|
2953
2986
|
props.readOnly !== void 0 && import_state14.EditorState.readOnly.of(props.readOnly),
|
2954
|
-
props.scrollPastEnd && (0,
|
2987
|
+
props.scrollPastEnd && (0, import_view16.scrollPastEnd)(),
|
2955
2988
|
props.tabSize && import_state14.EditorState.tabSize.of(props.tabSize),
|
2956
2989
|
// https://codemirror.net/docs/ref/#view.KeyBinding
|
2957
|
-
|
2990
|
+
import_view16.keymap.of([
|
2958
2991
|
...(props.keymap && keymaps[props.keymap]) ?? [],
|
2959
2992
|
// NOTE: Tabs are also configured by markdown extension.
|
2960
2993
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
@@ -2985,14 +3018,14 @@ var defaultThemeSlots = {
|
|
2985
3018
|
var createThemeExtensions = ({ themeMode, styles: styles5, syntaxHighlighting: _syntaxHighlighting, slots: _slots } = {}) => {
|
2986
3019
|
const slots = (0, import_lodash4.default)({}, _slots, defaultThemeSlots);
|
2987
3020
|
return [
|
2988
|
-
|
2989
|
-
|
3021
|
+
import_view16.EditorView.darkTheme.of(themeMode === "dark"),
|
3022
|
+
import_view16.EditorView.baseTheme(styles5 ? (0, import_lodash5.default)({}, defaultTheme, styles5) : defaultTheme),
|
2990
3023
|
// https://github.com/codemirror/theme-one-dark
|
2991
|
-
_syntaxHighlighting && (themeMode === "dark" ? (0,
|
2992
|
-
slots.editor?.className &&
|
3024
|
+
_syntaxHighlighting && (themeMode === "dark" ? (0, import_language3.syntaxHighlighting)(import_theme_one_dark.oneDarkHighlightStyle) : (0, import_language3.syntaxHighlighting)(import_language3.defaultHighlightStyle)),
|
3025
|
+
slots.editor?.className && import_view16.EditorView.editorAttributes.of({
|
2993
3026
|
class: slots.editor.className
|
2994
3027
|
}),
|
2995
|
-
slots.content?.className &&
|
3028
|
+
slots.content?.className && import_view16.EditorView.contentAttributes.of({
|
2996
3029
|
class: slots.content.className
|
2997
3030
|
})
|
2998
3031
|
].filter(import_util4.isNotFalsy);
|
@@ -3019,18 +3052,18 @@ var createDataExtensions = ({ id, text, space, identity }) => {
|
|
3019
3052
|
return extensions;
|
3020
3053
|
};
|
3021
3054
|
var folding = (_props = {}) => [
|
3022
|
-
(0,
|
3055
|
+
(0, import_language4.codeFolding)({
|
3023
3056
|
placeholderDOM: () => {
|
3024
3057
|
return document.createElement("span");
|
3025
3058
|
}
|
3026
3059
|
}),
|
3027
|
-
(0,
|
3060
|
+
(0, import_language4.foldGutter)({
|
3028
3061
|
markerDOM: (open) => {
|
3029
3062
|
const el = createElement("div", {
|
3030
3063
|
className: "flex h-full items-center"
|
3031
3064
|
});
|
3032
3065
|
return renderRoot(el, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Icon, {
|
3033
|
-
icon: "ph--caret-right--
|
3066
|
+
icon: "ph--caret-right--regular",
|
3034
3067
|
size: 3,
|
3035
3068
|
classNames: [
|
3036
3069
|
"mx-3 cursor-pointer",
|
@@ -3039,7 +3072,7 @@ var folding = (_props = {}) => [
|
|
3039
3072
|
}));
|
3040
3073
|
}
|
3041
3074
|
}),
|
3042
|
-
|
3075
|
+
import_view18.EditorView.theme({
|
3043
3076
|
".cm-foldGutter": {
|
3044
3077
|
opacity: 0.3,
|
3045
3078
|
transition: "opacity 0.3s",
|
@@ -3052,11 +3085,11 @@ var folding = (_props = {}) => [
|
|
3052
3085
|
];
|
3053
3086
|
var listener = ({ onFocus, onChange }) => {
|
3054
3087
|
const extensions = [];
|
3055
|
-
onFocus && extensions.push(
|
3088
|
+
onFocus && extensions.push(import_view19.EditorView.focusChangeEffect.of((_, focusing) => {
|
3056
3089
|
onFocus(focusing);
|
3057
3090
|
return null;
|
3058
3091
|
}));
|
3059
|
-
onChange && extensions.push(
|
3092
|
+
onChange && extensions.push(import_view19.EditorView.updateListener.of((update2) => {
|
3060
3093
|
onChange(update2.state.doc.toString(), update2.state.facet(documentId));
|
3061
3094
|
}));
|
3062
3095
|
return extensions;
|
@@ -3082,7 +3115,7 @@ var setHeading = (level) => {
|
|
3082
3115
|
let prevBlock = -1;
|
3083
3116
|
for (const range of ranges) {
|
3084
3117
|
let sawBlock = false;
|
3085
|
-
(0,
|
3118
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3086
3119
|
from: range.from,
|
3087
3120
|
to: range.to,
|
3088
3121
|
enter: (node) => {
|
@@ -3191,7 +3224,7 @@ var setStyle = (type, enable) => {
|
|
3191
3224
|
let startCovered = false;
|
3192
3225
|
let endCovered = false;
|
3193
3226
|
let { from, to } = range;
|
3194
|
-
(0,
|
3227
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3195
3228
|
from,
|
3196
3229
|
to,
|
3197
3230
|
enter: (node) => {
|
@@ -3394,7 +3427,7 @@ var insertTable = (view) => {
|
|
3394
3427
|
snippets.table(view, null, from, from);
|
3395
3428
|
};
|
3396
3429
|
var removeLinkInner = (from, to, changes, state) => {
|
3397
|
-
(0,
|
3430
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3398
3431
|
from,
|
3399
3432
|
to,
|
3400
3433
|
enter: (node) => {
|
@@ -3439,7 +3472,7 @@ var addLink = ({ url, image: image2 } = {}) => {
|
|
3439
3472
|
let { from, to } = range;
|
3440
3473
|
const cutStyles = [];
|
3441
3474
|
let okay = null;
|
3442
|
-
(0,
|
3475
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3443
3476
|
from,
|
3444
3477
|
to,
|
3445
3478
|
enter: (node) => {
|
@@ -3534,7 +3567,7 @@ var addList = (type) => {
|
|
3534
3567
|
let parentColumn = null;
|
3535
3568
|
const blocks = [];
|
3536
3569
|
for (const { from, to } of state.selection.ranges) {
|
3537
|
-
(0,
|
3570
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3538
3571
|
from,
|
3539
3572
|
to,
|
3540
3573
|
enter: (node) => {
|
@@ -3669,7 +3702,7 @@ var removeList = (type) => {
|
|
3669
3702
|
const stack = [];
|
3670
3703
|
const targetNodeType = type === 0 ? "OrderedList" : type === 1 ? "BulletList" : "TaskList";
|
3671
3704
|
for (const { from, to } of state.selection.ranges) {
|
3672
|
-
(0,
|
3705
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3673
3706
|
from,
|
3674
3707
|
to,
|
3675
3708
|
enter: (node) => {
|
@@ -3756,7 +3789,7 @@ var setBlockquote = (enable) => {
|
|
3756
3789
|
let lastBlock = -1;
|
3757
3790
|
for (const { from, to } of state.selection.ranges) {
|
3758
3791
|
const sawBlock = false;
|
3759
|
-
(0,
|
3792
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3760
3793
|
from,
|
3761
3794
|
to,
|
3762
3795
|
enter: (node) => {
|
@@ -3846,7 +3879,7 @@ var addCodeblock = (target) => {
|
|
3846
3879
|
for (const { from, to } of selection.ranges) {
|
3847
3880
|
let blockFrom = from;
|
3848
3881
|
let blockTo = to;
|
3849
|
-
(0,
|
3882
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3850
3883
|
from,
|
3851
3884
|
to,
|
3852
3885
|
enter: (node) => {
|
@@ -3897,7 +3930,7 @@ var removeCodeblock = ({ state, dispatch }) => {
|
|
3897
3930
|
let lastBlock = -1;
|
3898
3931
|
const changes = [];
|
3899
3932
|
for (const { from, to } of state.selection.ranges) {
|
3900
|
-
(0,
|
3933
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
3901
3934
|
from,
|
3902
3935
|
to,
|
3903
3936
|
enter: (node) => {
|
@@ -3947,7 +3980,7 @@ var toggleCodeblock = (target) => {
|
|
3947
3980
|
};
|
3948
3981
|
var formattingKeymap = (_options = {}) => {
|
3949
3982
|
return [
|
3950
|
-
|
3983
|
+
import_view20.keymap.of([
|
3951
3984
|
{
|
3952
3985
|
key: "meta-b",
|
3953
3986
|
run: toggleStrong
|
@@ -4059,7 +4092,7 @@ var getFormatting = (state) => {
|
|
4059
4092
|
}
|
4060
4093
|
}
|
4061
4094
|
}
|
4062
|
-
(0,
|
4095
|
+
(0, import_language5.syntaxTree)(state).iterate({
|
4063
4096
|
from: range.from,
|
4064
4097
|
to: range.to,
|
4065
4098
|
enter: (node) => {
|
@@ -4148,7 +4181,7 @@ var getFormatting = (state) => {
|
|
4148
4181
|
};
|
4149
4182
|
};
|
4150
4183
|
var useFormattingState = (state) => {
|
4151
|
-
return (0, import_react6.useMemo)(() =>
|
4184
|
+
return (0, import_react6.useMemo)(() => import_view20.EditorView.updateListener.of((update2) => {
|
4152
4185
|
if (update2.docChanged || update2.selectionSet) {
|
4153
4186
|
Object.entries(getFormatting(update2.state)).forEach(([key, active]) => {
|
4154
4187
|
state[key] = active;
|
@@ -4235,7 +4268,7 @@ var markdownTagsExtensions = [
|
|
4235
4268
|
}
|
4236
4269
|
];
|
4237
4270
|
var markdownHighlightStyle = (_options = {}) => {
|
4238
|
-
return
|
4271
|
+
return import_language7.HighlightStyle.define([
|
4239
4272
|
{
|
4240
4273
|
tag: [
|
4241
4274
|
import_highlight2.tags.keyword,
|
@@ -4399,8 +4432,8 @@ var createMarkdownExtensions = ({ themeMode } = {}) => {
|
|
4399
4432
|
]
|
4400
4433
|
}),
|
4401
4434
|
// Custom styles.
|
4402
|
-
(0,
|
4403
|
-
|
4435
|
+
(0, import_language6.syntaxHighlighting)(markdownHighlightStyle()),
|
4436
|
+
import_view21.keymap.of([
|
4404
4437
|
// https://codemirror.net/docs/ref/#commands.indentWithTab
|
4405
4438
|
import_commands3.indentWithTab,
|
4406
4439
|
// https://codemirror.net/docs/ref/#commands.defaultKeymap
|
@@ -4431,12 +4464,12 @@ var convertTreeToJson = (state) => {
|
|
4431
4464
|
}
|
4432
4465
|
return node;
|
4433
4466
|
};
|
4434
|
-
return treeToJson((0,
|
4467
|
+
return treeToJson((0, import_language8.syntaxTree)(state).cursor());
|
4435
4468
|
};
|
4436
4469
|
var adjustChanges = () => {
|
4437
|
-
return
|
4470
|
+
return import_view23.ViewPlugin.fromClass(class {
|
4438
4471
|
update(update2) {
|
4439
|
-
const tree = (0,
|
4472
|
+
const tree = (0, import_language10.syntaxTree)(update2.state);
|
4440
4473
|
const adjustments = [];
|
4441
4474
|
for (const tr of update2.transactions) {
|
4442
4475
|
const event = tr.annotation(import_state19.Transaction.userEvent);
|
@@ -4576,7 +4609,7 @@ var image = (_options = {}) => {
|
|
4576
4609
|
return [
|
4577
4610
|
import_state20.StateField.define({
|
4578
4611
|
create: (state) => {
|
4579
|
-
return
|
4612
|
+
return import_view24.Decoration.set(buildDecorations2(0, state.doc.length, state));
|
4580
4613
|
},
|
4581
4614
|
update: (value, tr) => {
|
4582
4615
|
if (!tr.docChanged && !tr.selection) {
|
@@ -4596,17 +4629,25 @@ var image = (_options = {}) => {
|
|
4596
4629
|
filterFrom: from,
|
4597
4630
|
filterTo: to,
|
4598
4631
|
filter: () => false,
|
4599
|
-
add:
|
4632
|
+
add: buildDecorations2(from, to, tr.state)
|
4600
4633
|
});
|
4601
4634
|
},
|
4602
|
-
provide: (field) =>
|
4635
|
+
provide: (field) => import_view24.EditorView.decorations.from(field)
|
4603
4636
|
})
|
4604
4637
|
];
|
4605
4638
|
};
|
4606
|
-
var
|
4639
|
+
var preloaded = /* @__PURE__ */ new Set();
|
4640
|
+
var preloadImage = (url) => {
|
4641
|
+
if (!preloaded.has(url)) {
|
4642
|
+
const img = document.createElement("img");
|
4643
|
+
img.src = url;
|
4644
|
+
preloaded.add(url);
|
4645
|
+
}
|
4646
|
+
};
|
4647
|
+
var buildDecorations2 = (from, to, state) => {
|
4607
4648
|
const decorations = [];
|
4608
4649
|
const cursor = state.selection.main.head;
|
4609
|
-
(0,
|
4650
|
+
(0, import_language11.syntaxTree)(state).iterate({
|
4610
4651
|
enter: (node) => {
|
4611
4652
|
if (node.name === "Image") {
|
4612
4653
|
const urlNode = node.node.getChild("URL");
|
@@ -4617,7 +4658,7 @@ var buildDecorations = (from, to, state) => {
|
|
4617
4658
|
return;
|
4618
4659
|
}
|
4619
4660
|
preloadImage(url);
|
4620
|
-
decorations.push(
|
4661
|
+
decorations.push(import_view24.Decoration.replace({
|
4621
4662
|
block: true,
|
4622
4663
|
widget: new ImageWidget(url)
|
4623
4664
|
}).range(hide2 ? node.from : node.to, node.to));
|
@@ -4629,15 +4670,7 @@ var buildDecorations = (from, to, state) => {
|
|
4629
4670
|
});
|
4630
4671
|
return decorations;
|
4631
4672
|
};
|
4632
|
-
var
|
4633
|
-
var preloadImage = (url) => {
|
4634
|
-
if (!preloaded.has(url)) {
|
4635
|
-
const img = document.createElement("img");
|
4636
|
-
img.src = url;
|
4637
|
-
preloaded.add(url);
|
4638
|
-
}
|
4639
|
-
};
|
4640
|
-
var ImageWidget = class extends import_view23.WidgetType {
|
4673
|
+
var ImageWidget = class extends import_view24.WidgetType {
|
4641
4674
|
constructor(_url) {
|
4642
4675
|
super();
|
4643
4676
|
this._url = _url;
|
@@ -4659,7 +4692,7 @@ var ImageWidget = class extends import_view23.WidgetType {
|
|
4659
4692
|
};
|
4660
4693
|
var bulletListIndentationWidth = 24;
|
4661
4694
|
var orderedListIndentationWidth = 36;
|
4662
|
-
var formattingStyles =
|
4695
|
+
var formattingStyles = import_view25.EditorView.theme({
|
4663
4696
|
/**
|
4664
4697
|
* Horizontal rule.
|
4665
4698
|
*/
|
@@ -4780,7 +4813,7 @@ var table = (options = {}) => {
|
|
4780
4813
|
return import_state21.StateField.define({
|
4781
4814
|
create: (state) => update(state, options),
|
4782
4815
|
update: (_, tr) => update(tr.state, options),
|
4783
|
-
provide: (field) =>
|
4816
|
+
provide: (field) => import_view26.EditorView.decorations.from(field)
|
4784
4817
|
});
|
4785
4818
|
};
|
4786
4819
|
var update = (state, _options) => {
|
@@ -4792,7 +4825,7 @@ var update = (state, _options) => {
|
|
4792
4825
|
const table2 = getTable();
|
4793
4826
|
return table2.rows?.[table2.rows.length - 1];
|
4794
4827
|
};
|
4795
|
-
(0,
|
4828
|
+
(0, import_language12.syntaxTree)(state).iterate({
|
4796
4829
|
enter: (node) => {
|
4797
4830
|
switch (node.name) {
|
4798
4831
|
case "Table": {
|
@@ -4825,19 +4858,19 @@ var update = (state, _options) => {
|
|
4825
4858
|
tables.forEach((table2) => {
|
4826
4859
|
const replace = state.readOnly || cursor < table2.from || cursor > table2.to;
|
4827
4860
|
if (replace) {
|
4828
|
-
builder.add(table2.from, table2.to,
|
4861
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.replace({
|
4829
4862
|
block: true,
|
4830
4863
|
widget: new TableWidget(table2)
|
4831
4864
|
}));
|
4832
4865
|
} else {
|
4833
|
-
builder.add(table2.from, table2.to,
|
4866
|
+
builder.add(table2.from, table2.to, import_view26.Decoration.mark({
|
4834
4867
|
class: "cm-table"
|
4835
4868
|
}));
|
4836
4869
|
}
|
4837
4870
|
});
|
4838
4871
|
return builder.finish();
|
4839
4872
|
};
|
4840
|
-
var TableWidget = class extends
|
4873
|
+
var TableWidget = class extends import_view26.WidgetType {
|
4841
4874
|
constructor(_table) {
|
4842
4875
|
super();
|
4843
4876
|
this._table = _table;
|
@@ -4877,14 +4910,14 @@ var Unicode = {
|
|
4877
4910
|
bulletSmall: "\u2219",
|
4878
4911
|
bulletSquare: "\u2B1D"
|
4879
4912
|
};
|
4880
|
-
var HorizontalRuleWidget = class extends
|
4913
|
+
var HorizontalRuleWidget = class extends import_view22.WidgetType {
|
4881
4914
|
toDOM() {
|
4882
4915
|
const el = document.createElement("span");
|
4883
4916
|
el.className = "cm-hr";
|
4884
4917
|
return el;
|
4885
4918
|
}
|
4886
4919
|
};
|
4887
|
-
var LinkButton = class extends
|
4920
|
+
var LinkButton = class extends import_view22.WidgetType {
|
4888
4921
|
constructor(url, render) {
|
4889
4922
|
super();
|
4890
4923
|
this.url = url;
|
@@ -4896,13 +4929,11 @@ var LinkButton = class extends import_view21.WidgetType {
|
|
4896
4929
|
// TODO(burdon): Create icon and link directly without react?
|
4897
4930
|
toDOM(view) {
|
4898
4931
|
const el = document.createElement("span");
|
4899
|
-
this.render(el,
|
4900
|
-
url: this.url
|
4901
|
-
}, view);
|
4932
|
+
this.render(el, this.url);
|
4902
4933
|
return el;
|
4903
4934
|
}
|
4904
4935
|
};
|
4905
|
-
var CheckboxWidget = class extends
|
4936
|
+
var CheckboxWidget = class extends import_view22.WidgetType {
|
4906
4937
|
constructor(_checked) {
|
4907
4938
|
super();
|
4908
4939
|
this._checked = _checked;
|
@@ -4947,7 +4978,7 @@ var CheckboxWidget = class extends import_view21.WidgetType {
|
|
4947
4978
|
return false;
|
4948
4979
|
}
|
4949
4980
|
};
|
4950
|
-
var TextWidget = class extends
|
4981
|
+
var TextWidget = class extends import_view22.WidgetType {
|
4951
4982
|
constructor(text, className) {
|
4952
4983
|
super();
|
4953
4984
|
this.text = text;
|
@@ -4962,29 +4993,29 @@ var TextWidget = class extends import_view21.WidgetType {
|
|
4962
4993
|
return el;
|
4963
4994
|
}
|
4964
4995
|
};
|
4965
|
-
var hide =
|
4966
|
-
var blockQuote =
|
4967
|
-
class: (0,
|
4996
|
+
var hide = import_view22.Decoration.replace({});
|
4997
|
+
var blockQuote = import_view22.Decoration.line({
|
4998
|
+
class: (0, import_react_ui_theme7.mx)("cm-blockquote")
|
4968
4999
|
});
|
4969
|
-
var fencedCodeLine =
|
4970
|
-
class: (0,
|
5000
|
+
var fencedCodeLine = import_view22.Decoration.line({
|
5001
|
+
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line")
|
4971
5002
|
});
|
4972
|
-
var fencedCodeLineFirst =
|
4973
|
-
class: (0,
|
5003
|
+
var fencedCodeLineFirst = import_view22.Decoration.line({
|
5004
|
+
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-first")
|
4974
5005
|
});
|
4975
|
-
var fencedCodeLineLast =
|
4976
|
-
class: (0,
|
5006
|
+
var fencedCodeLineLast = import_view22.Decoration.line({
|
5007
|
+
class: (0, import_react_ui_theme7.mx)("cm-code cm-codeblock-line", "cm-codeblock-last")
|
4977
5008
|
});
|
4978
5009
|
var commentBlockLine = fencedCodeLine;
|
4979
5010
|
var commentBlockLineFirst = fencedCodeLineFirst;
|
4980
5011
|
var commentBlockLineLast = fencedCodeLineLast;
|
4981
|
-
var horizontalRule =
|
5012
|
+
var horizontalRule = import_view22.Decoration.replace({
|
4982
5013
|
widget: new HorizontalRuleWidget()
|
4983
5014
|
});
|
4984
|
-
var checkedTask =
|
5015
|
+
var checkedTask = import_view22.Decoration.replace({
|
4985
5016
|
widget: new CheckboxWidget(true)
|
4986
5017
|
});
|
4987
|
-
var uncheckedTask =
|
5018
|
+
var uncheckedTask = import_view22.Decoration.replace({
|
4988
5019
|
widget: new CheckboxWidget(false)
|
4989
5020
|
});
|
4990
5021
|
var editingRange = (state, range, focus2) => {
|
@@ -4999,7 +5030,7 @@ var autoHideTags = /* @__PURE__ */ new Set([
|
|
4999
5030
|
"SubscriptMark",
|
5000
5031
|
"SuperscriptMark"
|
5001
5032
|
]);
|
5002
|
-
var
|
5033
|
+
var buildDecorations3 = (view, options, focus2) => {
|
5003
5034
|
const deco = new import_state18.RangeSetBuilder();
|
5004
5035
|
const atomicDeco = new import_state18.RangeSetBuilder();
|
5005
5036
|
const { state } = view;
|
@@ -5007,7 +5038,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5007
5038
|
const getHeaderLevels = (node, level) => {
|
5008
5039
|
(0, import_invariant4.invariant)(level > 0, void 0, {
|
5009
5040
|
F: __dxlog_file9,
|
5010
|
-
L:
|
5041
|
+
L: 178,
|
5011
5042
|
S: void 0,
|
5012
5043
|
A: [
|
5013
5044
|
"level > 0",
|
@@ -5046,7 +5077,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5046
5077
|
const getCurrentListLevel = () => {
|
5047
5078
|
(0, import_invariant4.invariant)(listLevels.length, void 0, {
|
5048
5079
|
F: __dxlog_file9,
|
5049
|
-
L:
|
5080
|
+
L: 200,
|
5050
5081
|
S: void 0,
|
5051
5082
|
A: [
|
5052
5083
|
"listLevels.length",
|
@@ -5088,7 +5119,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5088
5119
|
} else {
|
5089
5120
|
const num = headers.slice(from - 1).map((level2) => level2?.number ?? 0).join(".") + " ";
|
5090
5121
|
if (num.length) {
|
5091
|
-
atomicDeco.add(mark.from, mark.from + len,
|
5122
|
+
atomicDeco.add(mark.from, mark.from + len, import_view22.Decoration.replace({
|
5092
5123
|
widget: new TextWidget(num, theme.heading(level))
|
5093
5124
|
}));
|
5094
5125
|
}
|
@@ -5113,7 +5144,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5113
5144
|
if (node.from === line.to - 1) {
|
5114
5145
|
return false;
|
5115
5146
|
}
|
5116
|
-
deco.add(line.from, line.from,
|
5147
|
+
deco.add(line.from, line.from, import_view22.Decoration.line({
|
5117
5148
|
class: "cm-list-item",
|
5118
5149
|
attributes: {
|
5119
5150
|
style: `padding-left: ${offset}px; text-indent: -${width}px;`
|
@@ -5130,7 +5161,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5130
5161
|
const label = list.type === "OrderedList" ? `${++list.number}.` : Unicode.bulletSmall;
|
5131
5162
|
const line = state.doc.lineAt(node.from);
|
5132
5163
|
const to = state.doc.sliceString(node.to, node.to + 1) === " " ? node.to + 1 : node.to;
|
5133
|
-
atomicDeco.add(line.from, to,
|
5164
|
+
atomicDeco.add(line.from, to, import_view22.Decoration.replace({
|
5134
5165
|
widget: new TextWidget(label, list.type === "OrderedList" ? "cm-list-mark cm-list-mark-ordered" : "cm-list-mark cm-list-mark-bullet")
|
5135
5166
|
}));
|
5136
5167
|
break;
|
@@ -5217,7 +5248,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5217
5248
|
if (!editing) {
|
5218
5249
|
atomicDeco.add(node.from, marks[0].to, hide);
|
5219
5250
|
}
|
5220
|
-
deco.add(marks[0].to, marks[1].from,
|
5251
|
+
deco.add(marks[0].to, marks[1].from, import_view22.Decoration.mark({
|
5221
5252
|
tagName: "a",
|
5222
5253
|
attributes: {
|
5223
5254
|
class: "cm-link",
|
@@ -5227,7 +5258,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5227
5258
|
}
|
5228
5259
|
}));
|
5229
5260
|
if (!editing) {
|
5230
|
-
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ?
|
5261
|
+
atomicDeco.add(marks[1].from, node.to, options.renderLinkButton ? import_view22.Decoration.replace({
|
5231
5262
|
widget: new LinkButton(url, options.renderLinkButton)
|
5232
5263
|
}) : hide);
|
5233
5264
|
}
|
@@ -5261,7 +5292,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5261
5292
|
}
|
5262
5293
|
}
|
5263
5294
|
};
|
5264
|
-
const tree = (0,
|
5295
|
+
const tree = (0, import_language9.syntaxTree)(state);
|
5265
5296
|
if (options.numberedHeadings?.from === void 0) {
|
5266
5297
|
for (const { from, to } of view.visibleRanges) {
|
5267
5298
|
tree.iterate({
|
@@ -5285,13 +5316,13 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5285
5316
|
var forceUpdate = import_state18.StateEffect.define();
|
5286
5317
|
var decorateMarkdown = (options = {}) => {
|
5287
5318
|
return [
|
5288
|
-
|
5319
|
+
import_view22.ViewPlugin.fromClass(class {
|
5289
5320
|
constructor(view) {
|
5290
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5321
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(view, options, view.hasFocus));
|
5291
5322
|
}
|
5292
5323
|
update(update2) {
|
5293
5324
|
if (update2.docChanged || update2.viewportChanged || update2.focusChanged || update2.transactions.some((tr) => tr.effects.some((effect) => effect.is(forceUpdate))) || update2.selectionSet && !options.selectionChangeDelay) {
|
5294
|
-
({ deco: this.deco, atomicDeco: this.atomicDeco } =
|
5325
|
+
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations3(update2.view, options, update2.view.hasFocus));
|
5295
5326
|
this.clearUpdate();
|
5296
5327
|
} else if (update2.selectionSet) {
|
5297
5328
|
this.scheduleUpdate(update2.view);
|
@@ -5317,9 +5348,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5317
5348
|
}
|
5318
5349
|
}, {
|
5319
5350
|
provide: (plugin) => [
|
5320
|
-
|
5321
|
-
|
5322
|
-
|
5351
|
+
import_view22.EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view22.Decoration.none),
|
5352
|
+
import_view22.EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? import_view22.Decoration.none),
|
5353
|
+
import_view22.EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? import_view22.Decoration.none)
|
5323
5354
|
]
|
5324
5355
|
}),
|
5325
5356
|
image(),
|
@@ -5328,9 +5359,9 @@ var decorateMarkdown = (options = {}) => {
|
|
5328
5359
|
formattingStyles
|
5329
5360
|
];
|
5330
5361
|
};
|
5331
|
-
var linkTooltip = (
|
5332
|
-
return (0,
|
5333
|
-
const syntax = (0,
|
5362
|
+
var linkTooltip = (render) => {
|
5363
|
+
return (0, import_view27.hoverTooltip)((view, pos, side) => {
|
5364
|
+
const syntax = (0, import_language13.syntaxTree)(view.state).resolveInner(pos, side);
|
5334
5365
|
let link = null;
|
5335
5366
|
for (let i = 0, node = syntax; !link && node && i < 5; node = node.parent, i++) {
|
5336
5367
|
link = node.name === "Link" ? node : null;
|
@@ -5343,14 +5374,11 @@ var linkTooltip = (renderTooltip) => {
|
|
5343
5374
|
return {
|
5344
5375
|
pos: link.from,
|
5345
5376
|
end: link.to,
|
5346
|
-
|
5347
|
-
// above: true,
|
5377
|
+
above: true,
|
5348
5378
|
create: () => {
|
5349
5379
|
const el = document.createElement("div");
|
5350
|
-
el.className = (0,
|
5351
|
-
|
5352
|
-
url: urlText
|
5353
|
-
}, view);
|
5380
|
+
el.className = (0, import_react_ui_theme8.tooltipContent)({}, "pli-2 plb-1");
|
5381
|
+
render(el, urlText);
|
5354
5382
|
return {
|
5355
5383
|
dom: el,
|
5356
5384
|
offset: {
|
@@ -5360,9 +5388,6 @@ var linkTooltip = (renderTooltip) => {
|
|
5360
5388
|
};
|
5361
5389
|
}
|
5362
5390
|
};
|
5363
|
-
}, {
|
5364
|
-
// NOTE: 0 = default of 300ms.
|
5365
|
-
hoverTime: 1
|
5366
5391
|
});
|
5367
5392
|
};
|
5368
5393
|
var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/extensions/mention.ts";
|
@@ -5419,7 +5444,7 @@ var InputModeExtensions = {
|
|
5419
5444
|
editorInputMode.of({
|
5420
5445
|
type: "vscode"
|
5421
5446
|
}),
|
5422
|
-
|
5447
|
+
import_view28.keymap.of(import_codemirror_vscode_keymap.vscodeKeymap)
|
5423
5448
|
],
|
5424
5449
|
vim: [
|
5425
5450
|
// https://github.com/replit/codemirror-vim
|
@@ -5428,7 +5453,7 @@ var InputModeExtensions = {
|
|
5428
5453
|
type: "vim",
|
5429
5454
|
noTabster: true
|
5430
5455
|
}),
|
5431
|
-
|
5456
|
+
import_view28.keymap.of([
|
5432
5457
|
{
|
5433
5458
|
key: "Alt-Escape",
|
5434
5459
|
run: (view) => {
|
@@ -5439,159 +5464,6 @@ var InputModeExtensions = {
|
|
5439
5464
|
])
|
5440
5465
|
]
|
5441
5466
|
};
|
5442
|
-
var preview = (options = {}) => {
|
5443
|
-
return [
|
5444
|
-
// NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:
|
5445
|
-
// "Block decorations may not be specified via plugins"
|
5446
|
-
import_state22.StateField.define({
|
5447
|
-
create: (state) => buildDecorations3(state, options),
|
5448
|
-
update: (_, tr) => buildDecorations3(tr.state, options),
|
5449
|
-
provide: (field) => [
|
5450
|
-
import_view28.EditorView.decorations.from(field),
|
5451
|
-
import_view28.EditorView.atomicRanges.of((view) => view.state.field(field))
|
5452
|
-
]
|
5453
|
-
}),
|
5454
|
-
import_view28.EditorView.theme({
|
5455
|
-
".cm-preview-block": {
|
5456
|
-
marginLeft: "-1rem",
|
5457
|
-
marginRight: "-1rem",
|
5458
|
-
padding: "1rem",
|
5459
|
-
borderRadius: "0.5rem",
|
5460
|
-
background: "var(--dx-modalSurface)",
|
5461
|
-
border: "1px solid var(--dx-separator)"
|
5462
|
-
}
|
5463
|
-
})
|
5464
|
-
];
|
5465
|
-
};
|
5466
|
-
var getLinkRef = (state, node) => {
|
5467
|
-
const mark = node.getChild("LinkMark");
|
5468
|
-
const label = node.getChild("LinkLabel");
|
5469
|
-
if (mark && label) {
|
5470
|
-
const ref = state.sliceDoc(label.from + 1, label.to - 1);
|
5471
|
-
return {
|
5472
|
-
suggest: ref.startsWith("?"),
|
5473
|
-
block: state.sliceDoc(mark.from, mark.from + 1) === "!",
|
5474
|
-
label: state.sliceDoc(mark.to, label.from - 1),
|
5475
|
-
ref: ref.startsWith("?") ? ref.slice(1) : ref
|
5476
|
-
};
|
5477
|
-
}
|
5478
|
-
};
|
5479
|
-
var buildDecorations3 = (state, options) => {
|
5480
|
-
const builder = new import_state22.RangeSetBuilder();
|
5481
|
-
(0, import_language13.syntaxTree)(state).iterate({
|
5482
|
-
enter: (node) => {
|
5483
|
-
switch (node.name) {
|
5484
|
-
//
|
5485
|
-
// Decoration.
|
5486
|
-
// [Label][dxn:echo:123]
|
5487
|
-
//
|
5488
|
-
case "Link": {
|
5489
|
-
const link = getLinkRef(state, node.node);
|
5490
|
-
if (link) {
|
5491
|
-
builder.add(node.from, node.to, import_view28.Decoration.replace({
|
5492
|
-
widget: new PreviewInlineWidget(options, link)
|
5493
|
-
}));
|
5494
|
-
}
|
5495
|
-
break;
|
5496
|
-
}
|
5497
|
-
//
|
5498
|
-
// Block widget.
|
5499
|
-
// ![Label][dxn:echo:123]
|
5500
|
-
//
|
5501
|
-
case "Image": {
|
5502
|
-
const link = getLinkRef(state, node.node);
|
5503
|
-
if (options.renderBlock && link) {
|
5504
|
-
builder.add(node.from, node.to, import_view28.Decoration.replace({
|
5505
|
-
block: true,
|
5506
|
-
// atomic: true,
|
5507
|
-
widget: new PreviewBlockWidget(options, link)
|
5508
|
-
}));
|
5509
|
-
}
|
5510
|
-
break;
|
5511
|
-
}
|
5512
|
-
}
|
5513
|
-
}
|
5514
|
-
});
|
5515
|
-
return builder.finish();
|
5516
|
-
};
|
5517
|
-
var PreviewInlineWidget = class extends import_view28.WidgetType {
|
5518
|
-
constructor(_options, _link) {
|
5519
|
-
super();
|
5520
|
-
this._options = _options;
|
5521
|
-
this._link = _link;
|
5522
|
-
}
|
5523
|
-
// override ignoreEvent() {
|
5524
|
-
// return false;
|
5525
|
-
// }
|
5526
|
-
eq(other) {
|
5527
|
-
return this._link.ref === other._link.ref && this._link.label === other._link.label;
|
5528
|
-
}
|
5529
|
-
toDOM(view) {
|
5530
|
-
const root = document.createElement("dx-ref-tag");
|
5531
|
-
root.textContent = this._link.label;
|
5532
|
-
root.setAttribute("ref", this._link.ref);
|
5533
|
-
return root;
|
5534
|
-
}
|
5535
|
-
};
|
5536
|
-
var PreviewBlockWidget = class extends import_view28.WidgetType {
|
5537
|
-
constructor(_options, _link) {
|
5538
|
-
super();
|
5539
|
-
this._options = _options;
|
5540
|
-
this._link = _link;
|
5541
|
-
}
|
5542
|
-
// override ignoreEvent() {
|
5543
|
-
// return true;
|
5544
|
-
// }
|
5545
|
-
eq(other) {
|
5546
|
-
return this._link.ref === other._link.ref;
|
5547
|
-
}
|
5548
|
-
toDOM(view) {
|
5549
|
-
const root = document.createElement("div");
|
5550
|
-
root.classList.add("cm-preview-block");
|
5551
|
-
const handleAction = (action) => {
|
5552
|
-
const pos = view.posAtDOM(root);
|
5553
|
-
const node = (0, import_language13.syntaxTree)(view.state).resolve(pos + 1).node.parent;
|
5554
|
-
if (!node) {
|
5555
|
-
return;
|
5556
|
-
}
|
5557
|
-
const link = getLinkRef(view.state, node);
|
5558
|
-
if (link?.ref !== action.link.ref) {
|
5559
|
-
return;
|
5560
|
-
}
|
5561
|
-
switch (action.type) {
|
5562
|
-
// TODO(burdon): Should we dispatch to the view or mutate the document? (i.e., handle externally?)
|
5563
|
-
// Insert ref text.
|
5564
|
-
case "insert": {
|
5565
|
-
view.dispatch({
|
5566
|
-
changes: {
|
5567
|
-
from: node.from,
|
5568
|
-
to: node.to,
|
5569
|
-
insert: action.target.text
|
5570
|
-
}
|
5571
|
-
});
|
5572
|
-
break;
|
5573
|
-
}
|
5574
|
-
// Remove ref.
|
5575
|
-
case "delete": {
|
5576
|
-
view.dispatch({
|
5577
|
-
changes: {
|
5578
|
-
from: node.from,
|
5579
|
-
to: node.to
|
5580
|
-
}
|
5581
|
-
});
|
5582
|
-
break;
|
5583
|
-
}
|
5584
|
-
}
|
5585
|
-
};
|
5586
|
-
this._options.renderBlock(root, {
|
5587
|
-
readonly: view.state.readOnly,
|
5588
|
-
link: this._link,
|
5589
|
-
onAction: handleAction,
|
5590
|
-
onLookup: this._options.onLookup
|
5591
|
-
}, view);
|
5592
|
-
return root;
|
5593
|
-
}
|
5594
|
-
};
|
5595
5467
|
var defaultItems = [
|
5596
5468
|
"hello world!",
|
5597
5469
|
"this is a test.",
|
@@ -5654,7 +5526,7 @@ var useActionHandler = (view) => {
|
|
5654
5526
|
var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-editor/src/hooks/useTextEditor.ts";
|
5655
5527
|
var instanceCount = 0;
|
5656
5528
|
var useTextEditor = (props = {}, deps = []) => {
|
5657
|
-
const { id,
|
5529
|
+
const { id, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } = (0, import_react8.useMemo)(() => (0, import_util5.getProviderValue)(props), deps ?? []);
|
5658
5530
|
const [instanceId] = (0, import_react8.useState)(() => `text-editor-${++instanceCount}`);
|
5659
5531
|
const [view, setView] = (0, import_react8.useState)();
|
5660
5532
|
const parentRef = (0, import_react8.useRef)(null);
|
@@ -5667,7 +5539,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5667
5539
|
doc: initialValue?.length ?? 0
|
5668
5540
|
}, {
|
5669
5541
|
F: __dxlog_file11,
|
5670
|
-
L:
|
5542
|
+
L: 75,
|
5671
5543
|
S: void 0,
|
5672
5544
|
C: (f, a) => f(...a)
|
5673
5545
|
});
|
@@ -5683,8 +5555,8 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5683
5555
|
anchor
|
5684
5556
|
};
|
5685
5557
|
}
|
5686
|
-
const state =
|
5687
|
-
doc:
|
5558
|
+
const state = import_state22.EditorState.create({
|
5559
|
+
doc: initialValue,
|
5688
5560
|
// selection: initialSelection,
|
5689
5561
|
extensions: [
|
5690
5562
|
id && documentId.of(id),
|
@@ -5693,7 +5565,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5693
5565
|
import_view30.EditorView.exceptionSink.of((err) => {
|
5694
5566
|
import_log7.log.catch(err, void 0, {
|
5695
5567
|
F: __dxlog_file11,
|
5696
|
-
L:
|
5568
|
+
L: 97,
|
5697
5569
|
S: void 0,
|
5698
5570
|
C: (f, a) => f(...a)
|
5699
5571
|
});
|
@@ -5725,7 +5597,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5725
5597
|
id
|
5726
5598
|
}, {
|
5727
5599
|
F: __dxlog_file11,
|
5728
|
-
L:
|
5600
|
+
L: 134,
|
5729
5601
|
S: void 0,
|
5730
5602
|
C: (f, a) => f(...a)
|
5731
5603
|
});
|
@@ -5742,7 +5614,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5742
5614
|
selection
|
5743
5615
|
}, {
|
5744
5616
|
F: __dxlog_file11,
|
5745
|
-
L:
|
5617
|
+
L: 143,
|
5746
5618
|
S: void 0,
|
5747
5619
|
C: (f, a) => f(...a)
|
5748
5620
|
});
|
@@ -5825,10 +5697,7 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5825
5697
|
blast,
|
5826
5698
|
callbackWrapper,
|
5827
5699
|
clientRectsFor,
|
5828
|
-
closeCommand,
|
5829
|
-
closeEffect,
|
5830
5700
|
command,
|
5831
|
-
commandKeyBindings,
|
5832
5701
|
comments,
|
5833
5702
|
commentsState,
|
5834
5703
|
convertTreeToJson,
|
@@ -5842,7 +5711,6 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5842
5711
|
createElement,
|
5843
5712
|
createExternalCommentSync,
|
5844
5713
|
createMarkdownExtensions,
|
5845
|
-
createRenderer,
|
5846
5714
|
createThemeExtensions,
|
5847
5715
|
debugDispatcher,
|
5848
5716
|
debugNodeLogger,
|
@@ -5856,7 +5724,6 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5856
5724
|
editorGutter,
|
5857
5725
|
editorInputMode,
|
5858
5726
|
editorMonospace,
|
5859
|
-
editorWidth,
|
5860
5727
|
editorWithToolbarLayout,
|
5861
5728
|
flattenRect,
|
5862
5729
|
focus,
|
@@ -5875,11 +5742,8 @@ var useTextEditor = (props = {}, deps = []) => {
|
|
5875
5742
|
markdownTags,
|
5876
5743
|
markdownTagsExtensions,
|
5877
5744
|
mention,
|
5878
|
-
openCommand,
|
5879
|
-
openEffect,
|
5880
5745
|
overlap,
|
5881
5746
|
preventNewline,
|
5882
|
-
preview,
|
5883
5747
|
processEditorPayload,
|
5884
5748
|
removeBlockquote,
|
5885
5749
|
removeCodeblock,
|