@dxos/react-ui-editor 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
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 +304 -255
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/node-esm/index.mjs +304 -255
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs.map +2 -2
- package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
- package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
- package/dist/types/src/extensions/autocomplete.d.ts +1 -1
- package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
- package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
- package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
- package/dist/types/src/extensions/command/action.d.ts +1 -1
- package/dist/types/src/extensions/command/action.d.ts.map +1 -1
- package/dist/types/src/extensions/command/command-menu.d.ts +1 -1
- package/dist/types/src/extensions/command/command-menu.d.ts.map +1 -1
- package/dist/types/src/extensions/command/command.d.ts.map +1 -1
- package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
- 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/typeahead.d.ts.map +1 -1
- package/dist/types/src/extensions/command/useCommandMenu.d.ts +1 -1
- package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +1 -1
- package/dist/types/src/extensions/comments.d.ts +1 -1
- package/dist/types/src/extensions/comments.d.ts.map +1 -1
- package/dist/types/src/extensions/dnd.d.ts.map +1 -1
- package/dist/types/src/extensions/factories.d.ts +12 -11
- package/dist/types/src/extensions/factories.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
- package/dist/types/src/extensions/outliner/tree.d.ts +1 -1
- package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
- package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
- package/dist/types/src/stories/Command.stories.d.ts.map +1 -1
- package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
- package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
- package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
- package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +1 -0
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/dist/types/src/util/cursor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +40 -37
- package/src/components/Editor/Editor.tsx +1 -1
- package/src/components/EditorToolbar/EditorToolbar.tsx +1 -1
- package/src/components/EditorToolbar/blocks.ts +4 -3
- package/src/components/EditorToolbar/formatting.ts +3 -2
- package/src/components/EditorToolbar/headings.ts +2 -1
- package/src/components/EditorToolbar/lists.ts +3 -2
- package/src/components/EditorToolbar/util.ts +1 -1
- package/src/components/EditorToolbar/view-mode.ts +2 -1
- package/src/components/Popover/RefDropdownMenu.tsx +1 -1
- package/src/components/Popover/RefPopover.tsx +4 -4
- package/src/extensions/autocomplete.ts +3 -3
- package/src/extensions/automerge/automerge.stories.tsx +4 -4
- package/src/extensions/automerge/automerge.ts +4 -3
- package/src/extensions/automerge/defs.ts +1 -1
- package/src/extensions/automerge/sync.ts +1 -1
- package/src/extensions/automerge/update-automerge.ts +1 -1
- package/src/extensions/awareness/awareness.ts +2 -2
- package/src/extensions/command/action.ts +1 -1
- package/src/extensions/command/command-menu.ts +4 -3
- package/src/extensions/command/command.ts +3 -3
- package/src/extensions/command/hint.ts +2 -1
- package/src/extensions/command/placeholder.ts +1 -1
- package/src/extensions/command/state.ts +4 -3
- package/src/extensions/command/typeahead.ts +2 -2
- package/src/extensions/command/useCommandMenu.ts +2 -1
- package/src/extensions/comments.ts +7 -6
- package/src/extensions/dnd.ts +1 -1
- package/src/extensions/factories.ts +6 -5
- package/src/extensions/markdown/action.ts +2 -1
- package/src/extensions/markdown/bundle.ts +1 -1
- package/src/extensions/markdown/changes.ts +1 -1
- package/src/extensions/markdown/decorate.ts +7 -6
- package/src/extensions/markdown/formatting.test.ts +6 -6
- package/src/extensions/markdown/formatting.ts +3 -3
- package/src/extensions/markdown/highlight.ts +1 -1
- package/src/extensions/mention.ts +1 -1
- package/src/extensions/outliner/outliner.test.ts +3 -2
- package/src/extensions/outliner/outliner.ts +4 -3
- package/src/extensions/outliner/selection.ts +1 -1
- package/src/extensions/outliner/tree.test.ts +2 -1
- package/src/extensions/outliner/tree.ts +1 -1
- package/src/hooks/useTextEditor.ts +3 -3
- package/src/stories/Command.stories.tsx +6 -5
- package/src/stories/CommandMenu.stories.tsx +6 -5
- package/src/stories/Comments.stories.tsx +3 -2
- package/src/stories/EditorToolbar.stories.tsx +3 -3
- package/src/stories/Experimental.stories.tsx +4 -3
- package/src/stories/Markdown.stories.tsx +3 -2
- package/src/stories/Outliner.stories.tsx +4 -3
- package/src/stories/Preview.stories.tsx +22 -23
- package/src/stories/TextEditor.stories.tsx +15 -14
- package/src/stories/components/EditorStory.tsx +5 -5
- package/src/styles/theme.ts +7 -7
- package/src/testing/util.ts +2 -0
- package/src/util/cursor.ts +2 -1
@@ -70,9 +70,7 @@ var annotationMark = Decoration.mark({
|
|
70
70
|
var annotations = ({ match } = {}) => {
|
71
71
|
return [
|
72
72
|
ViewPlugin.fromClass(class {
|
73
|
-
|
74
|
-
this.decorations = Decoration.none;
|
75
|
-
}
|
73
|
+
decorations = Decoration.none;
|
76
74
|
update(update2) {
|
77
75
|
const builder = new RangeSetBuilder();
|
78
76
|
if (match) {
|
@@ -144,17 +142,174 @@ import { next as A3 } from "@automerge/automerge";
|
|
144
142
|
import { StateField } from "@codemirror/state";
|
145
143
|
import { EditorView as EditorView2, ViewPlugin as ViewPlugin2 } from "@codemirror/view";
|
146
144
|
|
147
|
-
// src/
|
145
|
+
// src/util/facet.ts
|
146
|
+
import { Facet } from "@codemirror/state";
|
147
|
+
var singleValueFacet = (defaultValue) => Facet.define({
|
148
|
+
// Called immediately.
|
149
|
+
combine: (providers) => {
|
150
|
+
return providers[0] ?? defaultValue;
|
151
|
+
}
|
152
|
+
});
|
153
|
+
|
154
|
+
// src/util/cursor.ts
|
155
|
+
var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
|
156
|
+
var defaultCursorConverter = {
|
157
|
+
toCursor: (position) => position.toString(),
|
158
|
+
fromCursor: (cursor) => parseInt(cursor)
|
159
|
+
};
|
160
|
+
var Cursor = class _Cursor {
|
161
|
+
static converter = singleValueFacet(defaultCursorConverter);
|
162
|
+
static getCursorFromRange = (state, range) => {
|
163
|
+
const cursorConverter2 = state.facet(_Cursor.converter);
|
164
|
+
const from = cursorConverter2.toCursor(range.from);
|
165
|
+
const to = cursorConverter2.toCursor(range.to, -1);
|
166
|
+
return [
|
167
|
+
from,
|
168
|
+
to
|
169
|
+
].join(":");
|
170
|
+
};
|
171
|
+
static getRangeFromCursor = (state, cursor) => {
|
172
|
+
const cursorConverter2 = state.facet(_Cursor.converter);
|
173
|
+
const parts = cursor.split(":");
|
174
|
+
const from = cursorConverter2.fromCursor(parts[0]);
|
175
|
+
const to = cursorConverter2.fromCursor(parts[1]);
|
176
|
+
return from !== void 0 && to !== void 0 ? {
|
177
|
+
from,
|
178
|
+
to
|
179
|
+
} : void 0;
|
180
|
+
};
|
181
|
+
};
|
182
|
+
|
183
|
+
// src/util/debug.ts
|
148
184
|
import { log } from "@dxos/log";
|
185
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/util/debug.ts";
|
186
|
+
var wrapWithCatch = (fn) => {
|
187
|
+
return (...args) => {
|
188
|
+
try {
|
189
|
+
return fn(...args);
|
190
|
+
} catch (err) {
|
191
|
+
log.catch(err, void 0, {
|
192
|
+
F: __dxlog_file,
|
193
|
+
L: 15,
|
194
|
+
S: void 0,
|
195
|
+
C: (f, a) => f(...a)
|
196
|
+
});
|
197
|
+
}
|
198
|
+
};
|
199
|
+
};
|
200
|
+
var callbackWrapper = (fn) => (...args) => {
|
201
|
+
try {
|
202
|
+
return fn(...args);
|
203
|
+
} catch (err) {
|
204
|
+
log.catch(err, void 0, {
|
205
|
+
F: __dxlog_file,
|
206
|
+
L: 29,
|
207
|
+
S: void 0,
|
208
|
+
C: (f, a) => f(...a)
|
209
|
+
});
|
210
|
+
}
|
211
|
+
};
|
212
|
+
var debugDispatcher = (trs, view) => {
|
213
|
+
logChanges(trs);
|
214
|
+
view.update(trs);
|
215
|
+
};
|
216
|
+
var logChanges = (trs) => {
|
217
|
+
const changes = trs.flatMap((tr) => {
|
218
|
+
if (tr.changes.empty) {
|
219
|
+
return void 0;
|
220
|
+
}
|
221
|
+
const changes2 = [];
|
222
|
+
tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => changes2.push(JSON.stringify({
|
223
|
+
fromA,
|
224
|
+
toA,
|
225
|
+
fromB,
|
226
|
+
toB,
|
227
|
+
inserted: inserted.toString()
|
228
|
+
})));
|
229
|
+
return changes2;
|
230
|
+
}).filter(Boolean);
|
231
|
+
if (changes.length) {
|
232
|
+
log("changes", {
|
233
|
+
changes
|
234
|
+
}, {
|
235
|
+
F: __dxlog_file,
|
236
|
+
L: 62,
|
237
|
+
S: void 0,
|
238
|
+
C: (f, a) => f(...a)
|
239
|
+
});
|
240
|
+
}
|
241
|
+
};
|
242
|
+
|
243
|
+
// src/util/dom.ts
|
244
|
+
var flattenRect = (rect, left) => {
|
245
|
+
const x = left ? rect.left : rect.right;
|
246
|
+
return {
|
247
|
+
left: x,
|
248
|
+
right: x,
|
249
|
+
top: rect.top,
|
250
|
+
bottom: rect.bottom
|
251
|
+
};
|
252
|
+
};
|
253
|
+
var scratchRange;
|
254
|
+
var textRange = (node, from, to = from) => {
|
255
|
+
const range = scratchRange || (scratchRange = document.createRange());
|
256
|
+
range.setEnd(node, to);
|
257
|
+
range.setStart(node, from);
|
258
|
+
return range;
|
259
|
+
};
|
260
|
+
var clientRectsFor = (dom) => {
|
261
|
+
if (dom.nodeType === 3) {
|
262
|
+
return textRange(dom, 0, dom.nodeValue.length).getClientRects();
|
263
|
+
} else if (dom.nodeType === 1) {
|
264
|
+
return dom.getClientRects();
|
265
|
+
} else {
|
266
|
+
return [];
|
267
|
+
}
|
268
|
+
};
|
269
|
+
var createElement = (tag, options, children) => {
|
270
|
+
const el = document.createElement(tag);
|
271
|
+
if (options?.className) {
|
272
|
+
el.className = options.className;
|
273
|
+
}
|
274
|
+
if (options?.text) {
|
275
|
+
el.textContent = options.text;
|
276
|
+
}
|
277
|
+
if (children) {
|
278
|
+
el.append(...Array.isArray(children) ? children : [
|
279
|
+
children
|
280
|
+
]);
|
281
|
+
}
|
282
|
+
return el;
|
283
|
+
};
|
284
|
+
|
285
|
+
// src/util/react.tsx
|
286
|
+
import React from "react";
|
287
|
+
import { createRoot } from "react-dom/client";
|
288
|
+
import { ThemeProvider, Tooltip } from "@dxos/react-ui";
|
289
|
+
import { defaultTx } from "@dxos/react-ui-theme";
|
290
|
+
var renderRoot = (root, node) => {
|
291
|
+
createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
|
292
|
+
tx: defaultTx
|
293
|
+
}, node));
|
294
|
+
return root;
|
295
|
+
};
|
296
|
+
var createRenderer = (Component) => (el, props) => {
|
297
|
+
renderRoot(el, /* @__PURE__ */ React.createElement(ThemeProvider, {
|
298
|
+
tx: defaultTx
|
299
|
+
}, /* @__PURE__ */ React.createElement(Tooltip.Provider, null, /* @__PURE__ */ React.createElement(Component, props))));
|
300
|
+
};
|
301
|
+
|
302
|
+
// src/extensions/automerge/cursor.ts
|
303
|
+
import { log as log2 } from "@dxos/log";
|
149
304
|
import { fromCursor, toCursor } from "@dxos/react-client/echo";
|
150
|
-
var
|
305
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/extensions/automerge/cursor.ts";
|
151
306
|
var cursorConverter = (accessor) => ({
|
152
307
|
toCursor: (pos, assoc) => {
|
153
308
|
try {
|
154
309
|
return toCursor(accessor, pos, assoc);
|
155
310
|
} catch (err) {
|
156
|
-
|
157
|
-
F:
|
311
|
+
log2.catch(err, void 0, {
|
312
|
+
F: __dxlog_file2,
|
158
313
|
L: 15,
|
159
314
|
S: void 0,
|
160
315
|
C: (f, a) => f(...a)
|
@@ -166,8 +321,8 @@ var cursorConverter = (accessor) => ({
|
|
166
321
|
try {
|
167
322
|
return fromCursor(accessor, cursor);
|
168
323
|
} catch (err) {
|
169
|
-
|
170
|
-
F:
|
324
|
+
log2.catch(err, void 0, {
|
325
|
+
F: __dxlog_file2,
|
171
326
|
L: 24,
|
172
327
|
S: void 0,
|
173
328
|
C: (f, a) => f(...a)
|
@@ -333,6 +488,9 @@ var charPath = (textPath, candidatePath) => {
|
|
333
488
|
|
334
489
|
// src/extensions/automerge/sync.ts
|
335
490
|
var Syncer = class {
|
491
|
+
_handle;
|
492
|
+
_state;
|
493
|
+
_pending;
|
336
494
|
// prettier-ignore
|
337
495
|
constructor(_handle, _state) {
|
338
496
|
this._handle = _handle;
|
@@ -375,169 +533,6 @@ var Syncer = class {
|
|
375
533
|
}
|
376
534
|
};
|
377
535
|
|
378
|
-
// src/util/facet.ts
|
379
|
-
import { Facet } from "@codemirror/state";
|
380
|
-
var singleValueFacet = (defaultValue) => Facet.define({
|
381
|
-
// Called immediately.
|
382
|
-
combine: (providers) => {
|
383
|
-
return providers[0] ?? defaultValue;
|
384
|
-
}
|
385
|
-
});
|
386
|
-
|
387
|
-
// src/util/cursor.ts
|
388
|
-
var overlap = (a, b) => a.from <= b.to && a.to >= b.from;
|
389
|
-
var defaultCursorConverter = {
|
390
|
-
toCursor: (position) => position.toString(),
|
391
|
-
fromCursor: (cursor) => parseInt(cursor)
|
392
|
-
};
|
393
|
-
var Cursor = class _Cursor {
|
394
|
-
static {
|
395
|
-
this.converter = singleValueFacet(defaultCursorConverter);
|
396
|
-
}
|
397
|
-
static {
|
398
|
-
this.getCursorFromRange = (state, range) => {
|
399
|
-
const cursorConverter2 = state.facet(_Cursor.converter);
|
400
|
-
const from = cursorConverter2.toCursor(range.from);
|
401
|
-
const to = cursorConverter2.toCursor(range.to, -1);
|
402
|
-
return [
|
403
|
-
from,
|
404
|
-
to
|
405
|
-
].join(":");
|
406
|
-
};
|
407
|
-
}
|
408
|
-
static {
|
409
|
-
this.getRangeFromCursor = (state, cursor) => {
|
410
|
-
const cursorConverter2 = state.facet(_Cursor.converter);
|
411
|
-
const parts = cursor.split(":");
|
412
|
-
const from = cursorConverter2.fromCursor(parts[0]);
|
413
|
-
const to = cursorConverter2.fromCursor(parts[1]);
|
414
|
-
return from !== void 0 && to !== void 0 ? {
|
415
|
-
from,
|
416
|
-
to
|
417
|
-
} : void 0;
|
418
|
-
};
|
419
|
-
}
|
420
|
-
};
|
421
|
-
|
422
|
-
// src/util/debug.ts
|
423
|
-
import { log as log2 } from "@dxos/log";
|
424
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/util/debug.ts";
|
425
|
-
var wrapWithCatch = (fn) => {
|
426
|
-
return (...args) => {
|
427
|
-
try {
|
428
|
-
return fn(...args);
|
429
|
-
} catch (err) {
|
430
|
-
log2.catch(err, void 0, {
|
431
|
-
F: __dxlog_file2,
|
432
|
-
L: 15,
|
433
|
-
S: void 0,
|
434
|
-
C: (f, a) => f(...a)
|
435
|
-
});
|
436
|
-
}
|
437
|
-
};
|
438
|
-
};
|
439
|
-
var callbackWrapper = (fn) => (...args) => {
|
440
|
-
try {
|
441
|
-
return fn(...args);
|
442
|
-
} catch (err) {
|
443
|
-
log2.catch(err, void 0, {
|
444
|
-
F: __dxlog_file2,
|
445
|
-
L: 29,
|
446
|
-
S: void 0,
|
447
|
-
C: (f, a) => f(...a)
|
448
|
-
});
|
449
|
-
}
|
450
|
-
};
|
451
|
-
var debugDispatcher = (trs, view) => {
|
452
|
-
logChanges(trs);
|
453
|
-
view.update(trs);
|
454
|
-
};
|
455
|
-
var logChanges = (trs) => {
|
456
|
-
const changes = trs.flatMap((tr) => {
|
457
|
-
if (tr.changes.empty) {
|
458
|
-
return void 0;
|
459
|
-
}
|
460
|
-
const changes2 = [];
|
461
|
-
tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => changes2.push(JSON.stringify({
|
462
|
-
fromA,
|
463
|
-
toA,
|
464
|
-
fromB,
|
465
|
-
toB,
|
466
|
-
inserted: inserted.toString()
|
467
|
-
})));
|
468
|
-
return changes2;
|
469
|
-
}).filter(Boolean);
|
470
|
-
if (changes.length) {
|
471
|
-
log2("changes", {
|
472
|
-
changes
|
473
|
-
}, {
|
474
|
-
F: __dxlog_file2,
|
475
|
-
L: 62,
|
476
|
-
S: void 0,
|
477
|
-
C: (f, a) => f(...a)
|
478
|
-
});
|
479
|
-
}
|
480
|
-
};
|
481
|
-
|
482
|
-
// src/util/dom.ts
|
483
|
-
var flattenRect = (rect, left) => {
|
484
|
-
const x = left ? rect.left : rect.right;
|
485
|
-
return {
|
486
|
-
left: x,
|
487
|
-
right: x,
|
488
|
-
top: rect.top,
|
489
|
-
bottom: rect.bottom
|
490
|
-
};
|
491
|
-
};
|
492
|
-
var scratchRange;
|
493
|
-
var textRange = (node, from, to = from) => {
|
494
|
-
const range = scratchRange || (scratchRange = document.createRange());
|
495
|
-
range.setEnd(node, to);
|
496
|
-
range.setStart(node, from);
|
497
|
-
return range;
|
498
|
-
};
|
499
|
-
var clientRectsFor = (dom) => {
|
500
|
-
if (dom.nodeType === 3) {
|
501
|
-
return textRange(dom, 0, dom.nodeValue.length).getClientRects();
|
502
|
-
} else if (dom.nodeType === 1) {
|
503
|
-
return dom.getClientRects();
|
504
|
-
} else {
|
505
|
-
return [];
|
506
|
-
}
|
507
|
-
};
|
508
|
-
var createElement = (tag, options, children) => {
|
509
|
-
const el = document.createElement(tag);
|
510
|
-
if (options?.className) {
|
511
|
-
el.className = options.className;
|
512
|
-
}
|
513
|
-
if (options?.text) {
|
514
|
-
el.textContent = options.text;
|
515
|
-
}
|
516
|
-
if (children) {
|
517
|
-
el.append(...Array.isArray(children) ? children : [
|
518
|
-
children
|
519
|
-
]);
|
520
|
-
}
|
521
|
-
return el;
|
522
|
-
};
|
523
|
-
|
524
|
-
// src/util/react.tsx
|
525
|
-
import React from "react";
|
526
|
-
import { createRoot } from "react-dom/client";
|
527
|
-
import { ThemeProvider, Tooltip } from "@dxos/react-ui";
|
528
|
-
import { defaultTx } from "@dxos/react-ui-theme";
|
529
|
-
var renderRoot = (root, node) => {
|
530
|
-
createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
|
531
|
-
tx: defaultTx
|
532
|
-
}, node));
|
533
|
-
return root;
|
534
|
-
};
|
535
|
-
var createRenderer = (Component) => (el, props) => {
|
536
|
-
renderRoot(el, /* @__PURE__ */ React.createElement(ThemeProvider, {
|
537
|
-
tx: defaultTx
|
538
|
-
}, /* @__PURE__ */ React.createElement(Tooltip.Provider, null, /* @__PURE__ */ React.createElement(Component, props))));
|
539
|
-
};
|
540
|
-
|
541
536
|
// src/extensions/automerge/automerge.ts
|
542
537
|
var automerge = (accessor) => {
|
543
538
|
const syncState = StateField.define({
|
@@ -576,6 +571,7 @@ var automerge = (accessor) => {
|
|
576
571
|
syncState,
|
577
572
|
// Reconcile external updates.
|
578
573
|
ViewPlugin2.fromClass(class {
|
574
|
+
_view;
|
579
575
|
constructor(_view) {
|
580
576
|
this._view = _view;
|
581
577
|
this._handleChange = () => {
|
@@ -586,6 +582,7 @@ var automerge = (accessor) => {
|
|
586
582
|
destroy() {
|
587
583
|
accessor.handle.removeListener("change", this._handleChange);
|
588
584
|
}
|
585
|
+
_handleChange;
|
589
586
|
}),
|
590
587
|
// Reconcile local updates.
|
591
588
|
EditorView2.updateListener.of(({ view, changes }) => {
|
@@ -624,12 +621,16 @@ var awareness = (provider = dummyProvider) => {
|
|
624
621
|
];
|
625
622
|
};
|
626
623
|
var RemoteSelectionsDecorator = class {
|
624
|
+
_ctx = new Context(void 0, {
|
625
|
+
F: __dxlog_file3,
|
626
|
+
L: 80
|
627
|
+
});
|
628
|
+
_cursorConverter;
|
629
|
+
_provider;
|
630
|
+
_lastAnchor;
|
631
|
+
_lastHead;
|
632
|
+
decorations = RangeSet.of([]);
|
627
633
|
constructor(view) {
|
628
|
-
this._ctx = new Context(void 0, {
|
629
|
-
F: __dxlog_file3,
|
630
|
-
L: 80
|
631
|
-
});
|
632
|
-
this.decorations = RangeSet.of([]);
|
633
634
|
this._cursorConverter = view.state.facet(Cursor.converter);
|
634
635
|
this._provider = view.state.facet(awarenessProvider);
|
635
636
|
this._provider.open();
|
@@ -737,6 +738,8 @@ var RemoteSelectionsDecorator = class {
|
|
737
738
|
}
|
738
739
|
};
|
739
740
|
var RemoteCaretWidget = class extends WidgetType {
|
741
|
+
_name;
|
742
|
+
_color;
|
740
743
|
constructor(_name, _color) {
|
741
744
|
super(), this._name = _name, this._color = _color;
|
742
745
|
}
|
@@ -836,9 +839,16 @@ import { log as log3 } from "@dxos/log";
|
|
836
839
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/extensions/awareness/awareness-provider.ts";
|
837
840
|
var DEBOUNCE_INTERVAL = 100;
|
838
841
|
var SpaceAwarenessProvider = class {
|
842
|
+
_remoteStates = /* @__PURE__ */ new Map();
|
843
|
+
_space;
|
844
|
+
_channel;
|
845
|
+
_peerId;
|
846
|
+
_info;
|
847
|
+
_ctx;
|
848
|
+
_postTask;
|
849
|
+
_localState;
|
850
|
+
remoteStateChange = new Event2();
|
839
851
|
constructor(params) {
|
840
|
-
this._remoteStates = /* @__PURE__ */ new Map();
|
841
|
-
this.remoteStateChange = new Event2();
|
842
852
|
this._space = params.space;
|
843
853
|
this._channel = params.channel;
|
844
854
|
this._peerId = params.peerId;
|
@@ -1034,6 +1044,18 @@ var blast = (options = defaultOptions) => {
|
|
1034
1044
|
];
|
1035
1045
|
};
|
1036
1046
|
var Blaster = class {
|
1047
|
+
_node;
|
1048
|
+
_options;
|
1049
|
+
_effect;
|
1050
|
+
_canvas;
|
1051
|
+
_ctx;
|
1052
|
+
_running;
|
1053
|
+
_lastTime;
|
1054
|
+
_shakeTime;
|
1055
|
+
_shakeTimeMax;
|
1056
|
+
_particles;
|
1057
|
+
_particlePointer;
|
1058
|
+
_lastPoint;
|
1037
1059
|
constructor(_node, _options) {
|
1038
1060
|
this._node = _node;
|
1039
1061
|
this._options = _options;
|
@@ -1138,6 +1160,8 @@ var Blaster = class {
|
|
1138
1160
|
this.drawParticles();
|
1139
1161
|
requestAnimationFrame(this.loop.bind(this));
|
1140
1162
|
}
|
1163
|
+
shake;
|
1164
|
+
spawn;
|
1141
1165
|
drawParticles() {
|
1142
1166
|
for (let i = this._particles.length; i--; i > 0) {
|
1143
1167
|
const particle = this._particles[i];
|
@@ -1152,6 +1176,7 @@ var Blaster = class {
|
|
1152
1176
|
}
|
1153
1177
|
};
|
1154
1178
|
var Effect = class {
|
1179
|
+
_options;
|
1155
1180
|
constructor(_options) {
|
1156
1181
|
this._options = _options;
|
1157
1182
|
}
|
@@ -1357,9 +1382,8 @@ import { RangeSetBuilder as RangeSetBuilder2 } from "@codemirror/state";
|
|
1357
1382
|
import { Decoration as Decoration3, EditorView as EditorView5, ViewPlugin as ViewPlugin4, WidgetType as WidgetType2 } from "@codemirror/view";
|
1358
1383
|
var hint = ({ delay = 3e3, onHint }) => {
|
1359
1384
|
return ViewPlugin4.fromClass(class {
|
1360
|
-
|
1361
|
-
|
1362
|
-
}
|
1385
|
+
decorations = Decoration3.none;
|
1386
|
+
timeout;
|
1363
1387
|
update(update2) {
|
1364
1388
|
if (this.timeout) {
|
1365
1389
|
clearTimeout(this.timeout);
|
@@ -1398,6 +1422,7 @@ var hint = ({ delay = 3e3, onHint }) => {
|
|
1398
1422
|
});
|
1399
1423
|
};
|
1400
1424
|
var Hint = class extends WidgetType2 {
|
1425
|
+
content;
|
1401
1426
|
constructor(content) {
|
1402
1427
|
super(), this.content = content;
|
1403
1428
|
}
|
@@ -1453,16 +1478,15 @@ var command = (options = {}) => {
|
|
1453
1478
|
};
|
1454
1479
|
|
1455
1480
|
// src/extensions/command/command-menu.ts
|
1456
|
-
import {
|
1457
|
-
import {
|
1481
|
+
import { Prec as Prec2, RangeSetBuilder as RangeSetBuilder3, StateEffect as StateEffect3, StateField as StateField3 } from "@codemirror/state";
|
1482
|
+
import { Decoration as Decoration5, EditorView as EditorView8, ViewPlugin as ViewPlugin6, keymap as keymap4 } from "@codemirror/view";
|
1458
1483
|
|
1459
1484
|
// src/extensions/command/placeholder.ts
|
1460
|
-
import { Decoration as Decoration4, EditorView as EditorView7,
|
1485
|
+
import { Decoration as Decoration4, EditorView as EditorView7, ViewPlugin as ViewPlugin5, WidgetType as WidgetType3 } from "@codemirror/view";
|
1461
1486
|
var placeholder = ({ delay = 3e3, content }) => {
|
1462
1487
|
const plugin = ViewPlugin5.fromClass(class {
|
1463
|
-
|
1464
|
-
|
1465
|
-
}
|
1488
|
+
decorations = Decoration4.none;
|
1489
|
+
timeout;
|
1466
1490
|
update(update2) {
|
1467
1491
|
if (this.timeout) {
|
1468
1492
|
window.clearTimeout(this.timeout);
|
@@ -1504,6 +1528,7 @@ var placeholder = ({ delay = 3e3, content }) => {
|
|
1504
1528
|
] : plugin;
|
1505
1529
|
};
|
1506
1530
|
var Placeholder = class extends WidgetType3 {
|
1531
|
+
content;
|
1507
1532
|
constructor(content) {
|
1508
1533
|
super(), this.content = content;
|
1509
1534
|
}
|
@@ -1541,6 +1566,8 @@ var Placeholder = class extends WidgetType3 {
|
|
1541
1566
|
// src/extensions/command/command-menu.ts
|
1542
1567
|
var commandMenu = (options) => {
|
1543
1568
|
const commandMenuPlugin = ViewPlugin6.fromClass(class {
|
1569
|
+
view;
|
1570
|
+
decorations;
|
1544
1571
|
constructor(view) {
|
1545
1572
|
this.view = view;
|
1546
1573
|
this.decorations = Decoration5.none;
|
@@ -1700,6 +1727,10 @@ import { EditorView as EditorView9, ViewPlugin as ViewPlugin7 } from "@codemirro
|
|
1700
1727
|
import { addEventListener } from "@dxos/async";
|
1701
1728
|
var floatingMenu = (options = {}) => [
|
1702
1729
|
ViewPlugin7.fromClass(class {
|
1730
|
+
view;
|
1731
|
+
tag;
|
1732
|
+
rafId;
|
1733
|
+
cleanup;
|
1703
1734
|
constructor(view) {
|
1704
1735
|
this.view = view;
|
1705
1736
|
const container = view.scrollDOM;
|
@@ -1786,7 +1817,7 @@ var floatingMenu = (options = {}) => [
|
|
1786
1817
|
|
1787
1818
|
// src/extensions/command/typeahead.ts
|
1788
1819
|
import { EditorSelection, Prec as Prec3, RangeSetBuilder as RangeSetBuilder4 } from "@codemirror/state";
|
1789
|
-
import { Decoration as Decoration6,
|
1820
|
+
import { Decoration as Decoration6, ViewPlugin as ViewPlugin8, keymap as keymap5 } from "@codemirror/view";
|
1790
1821
|
var typeahead = ({ onComplete } = {}) => {
|
1791
1822
|
let hint2;
|
1792
1823
|
const complete = (view) => {
|
@@ -1808,9 +1839,7 @@ var typeahead = ({ onComplete } = {}) => {
|
|
1808
1839
|
};
|
1809
1840
|
return [
|
1810
1841
|
ViewPlugin8.fromClass(class {
|
1811
|
-
|
1812
|
-
this.decorations = Decoration6.none;
|
1813
|
-
}
|
1842
|
+
decorations = Decoration6.none;
|
1814
1843
|
update(update2) {
|
1815
1844
|
const builder = new RangeSetBuilder4();
|
1816
1845
|
const selection = update2.view.state.selection.main;
|
@@ -1973,7 +2002,7 @@ var useCommandMenu = ({ viewRef, trigger, placeholder: placeholder3, getMenu })
|
|
1973
2002
|
// src/extensions/comments.ts
|
1974
2003
|
import { invertedEffects } from "@codemirror/commands";
|
1975
2004
|
import { StateEffect as StateEffect4, StateField as StateField4 } from "@codemirror/state";
|
1976
|
-
import {
|
2005
|
+
import { Decoration as Decoration7, EditorView as EditorView11, ViewPlugin as ViewPlugin9, hoverTooltip, keymap as keymap7 } from "@codemirror/view";
|
1977
2006
|
import sortBy from "lodash.sortby";
|
1978
2007
|
import { useEffect } from "react";
|
1979
2008
|
import { debounce as debounce2 } from "@dxos/async";
|
@@ -2145,7 +2174,7 @@ var commentsDecorations = EditorView11.decorations.compute([
|
|
2145
2174
|
if (!range) {
|
2146
2175
|
log4.warn("Invalid range:", range, {
|
2147
2176
|
F: __dxlog_file7,
|
2148
|
-
L:
|
2177
|
+
L: 136,
|
2149
2178
|
S: void 0,
|
2150
2179
|
C: (f, a) => f(...a)
|
2151
2180
|
});
|
@@ -2460,10 +2489,8 @@ var scrollThreadIntoView = (view, id, center = true) => {
|
|
2460
2489
|
}
|
2461
2490
|
};
|
2462
2491
|
var ExternalCommentSync = class {
|
2492
|
+
unsubscribe;
|
2463
2493
|
constructor(view, id, subscribe, getComments) {
|
2464
|
-
this.destroy = () => {
|
2465
|
-
this.unsubscribe();
|
2466
|
-
};
|
2467
2494
|
const updateComments = () => {
|
2468
2495
|
const comments2 = getComments();
|
2469
2496
|
if (id === view.state.facet(documentId)) {
|
@@ -2477,6 +2504,9 @@ var ExternalCommentSync = class {
|
|
2477
2504
|
};
|
2478
2505
|
this.unsubscribe = subscribe(updateComments);
|
2479
2506
|
}
|
2507
|
+
destroy = () => {
|
2508
|
+
this.unsubscribe();
|
2509
|
+
};
|
2480
2510
|
};
|
2481
2511
|
var createExternalCommentSync = (id, subscribe, getComments) => ViewPlugin9.fromClass(class {
|
2482
2512
|
constructor(view) {
|
@@ -2512,7 +2542,7 @@ var debugNodeLogger = (log9 = console.log) => {
|
|
2512
2542
|
};
|
2513
2543
|
|
2514
2544
|
// src/extensions/dnd.ts
|
2515
|
-
import {
|
2545
|
+
import { EditorView as EditorView12, dropCursor } from "@codemirror/view";
|
2516
2546
|
var styles3 = EditorView12.theme({
|
2517
2547
|
".cm-dropCursor": {
|
2518
2548
|
borderLeft: "2px solid var(--dx-accentText)",
|
@@ -2561,39 +2591,8 @@ import { generateName } from "@dxos/display-name";
|
|
2561
2591
|
import { log as log5 } from "@dxos/log";
|
2562
2592
|
import { hexToHue, isNotFalsy as isNotFalsy2 } from "@dxos/util";
|
2563
2593
|
|
2564
|
-
// src/extensions/focus.ts
|
2565
|
-
import { StateEffect as StateEffect5, StateField as StateField6 } from "@codemirror/state";
|
2566
|
-
import { EditorView as EditorView13 } from "@codemirror/view";
|
2567
|
-
var focusEffect = StateEffect5.define();
|
2568
|
-
var focusField = StateField6.define({
|
2569
|
-
create: () => false,
|
2570
|
-
update: (value, tr) => {
|
2571
|
-
for (const effect of tr.effects) {
|
2572
|
-
if (effect.is(focusEffect)) {
|
2573
|
-
return effect.value;
|
2574
|
-
}
|
2575
|
-
}
|
2576
|
-
return value;
|
2577
|
-
}
|
2578
|
-
});
|
2579
|
-
var focus = [
|
2580
|
-
focusField,
|
2581
|
-
EditorView13.domEventHandlers({
|
2582
|
-
focus: (event, view) => {
|
2583
|
-
setTimeout(() => view.dispatch({
|
2584
|
-
effects: focusEffect.of(true)
|
2585
|
-
}));
|
2586
|
-
},
|
2587
|
-
blur: (event, view) => {
|
2588
|
-
setTimeout(() => view.dispatch({
|
2589
|
-
effects: focusEffect.of(false)
|
2590
|
-
}));
|
2591
|
-
}
|
2592
|
-
})
|
2593
|
-
];
|
2594
|
-
|
2595
2594
|
// src/defaults.ts
|
2596
|
-
import { EditorView as
|
2595
|
+
import { EditorView as EditorView13 } from "@codemirror/view";
|
2597
2596
|
import { mx as mx2 } from "@dxos/react-ui-theme";
|
2598
2597
|
|
2599
2598
|
// src/styles/markdown.ts
|
@@ -2660,18 +2659,17 @@ var defaultTheme = {
|
|
2660
2659
|
".cm-gutter": {},
|
2661
2660
|
".cm-gutter.cm-lineNumbers": {
|
2662
2661
|
paddingRight: "4px",
|
2663
|
-
borderRight: "1px solid var(--dx-
|
2662
|
+
borderRight: "1px solid var(--dx-subduedSeparator)"
|
2664
2663
|
},
|
2665
2664
|
".cm-gutter.cm-lineNumbers .cm-gutterElement": {
|
2666
|
-
minWidth: "40px"
|
2667
|
-
alignContent: "center"
|
2665
|
+
minWidth: "40px"
|
2668
2666
|
},
|
2669
2667
|
/**
|
2670
|
-
* Height is set to match the corresponding line.
|
2668
|
+
* Height is set to match the corresponding line (which may have wrapped).
|
2671
2669
|
*/
|
2672
2670
|
".cm-gutterElement": {
|
2673
|
-
|
2674
|
-
|
2671
|
+
fontSize: "12px",
|
2672
|
+
lineHeight: "24px"
|
2675
2673
|
},
|
2676
2674
|
/**
|
2677
2675
|
* Line.
|
@@ -2731,7 +2729,7 @@ var defaultTheme = {
|
|
2731
2729
|
* Tooltip.
|
2732
2730
|
*/
|
2733
2731
|
".cm-tooltip": {
|
2734
|
-
background: "var(--dx-
|
2732
|
+
background: "var(--dx-modalSurface)"
|
2735
2733
|
},
|
2736
2734
|
".cm-tooltip-below": {},
|
2737
2735
|
/**
|
@@ -2751,7 +2749,8 @@ var defaultTheme = {
|
|
2751
2749
|
padding: "4px"
|
2752
2750
|
},
|
2753
2751
|
".cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]": {
|
2754
|
-
background: "var(--dx-
|
2752
|
+
background: "var(--dx-accentSurface)",
|
2753
|
+
color: "var(--dx-accentSurfaceText)"
|
2755
2754
|
},
|
2756
2755
|
".cm-tooltip.cm-tooltip-autocomplete > ul > completion-section": {
|
2757
2756
|
paddingLeft: "4px !important",
|
@@ -2805,7 +2804,7 @@ var defaultTheme = {
|
|
2805
2804
|
outline: "1px solid transparent"
|
2806
2805
|
},
|
2807
2806
|
".cm-panel input, .cm-panel button": {
|
2808
|
-
backgroundColor: "var(--dx-
|
2807
|
+
backgroundColor: "var(--dx-inputSurface)"
|
2809
2808
|
},
|
2810
2809
|
".cm-panel input:focus, .cm-panel button:focus": {
|
2811
2810
|
outline: "1px solid var(--dx-neutralFocusIndicator)"
|
@@ -2847,13 +2846,13 @@ var editorSlots = {
|
|
2847
2846
|
className: editorWidth
|
2848
2847
|
}
|
2849
2848
|
};
|
2850
|
-
var editorGutter =
|
2849
|
+
var editorGutter = EditorView13.theme({
|
2851
2850
|
".cm-gutters": {
|
2852
2851
|
background: "var(--dx-baseSurface)",
|
2853
2852
|
paddingRight: "1rem"
|
2854
2853
|
}
|
2855
2854
|
});
|
2856
|
-
var editorMonospace =
|
2855
|
+
var editorMonospace = EditorView13.theme({
|
2857
2856
|
".cm-content": {
|
2858
2857
|
fontFamily: fontMono
|
2859
2858
|
}
|
@@ -2861,6 +2860,37 @@ var editorMonospace = EditorView14.theme({
|
|
2861
2860
|
var editorWithToolbarLayout = "grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden";
|
2862
2861
|
var stackItemContentEditorClassNames = (role) => mx2("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");
|
2863
2862
|
|
2863
|
+
// src/extensions/focus.ts
|
2864
|
+
import { StateEffect as StateEffect5, StateField as StateField6 } from "@codemirror/state";
|
2865
|
+
import { EditorView as EditorView14 } from "@codemirror/view";
|
2866
|
+
var focusEffect = StateEffect5.define();
|
2867
|
+
var focusField = StateField6.define({
|
2868
|
+
create: () => false,
|
2869
|
+
update: (value, tr) => {
|
2870
|
+
for (const effect of tr.effects) {
|
2871
|
+
if (effect.is(focusEffect)) {
|
2872
|
+
return effect.value;
|
2873
|
+
}
|
2874
|
+
}
|
2875
|
+
return value;
|
2876
|
+
}
|
2877
|
+
});
|
2878
|
+
var focus = [
|
2879
|
+
focusField,
|
2880
|
+
EditorView14.domEventHandlers({
|
2881
|
+
focus: (event, view) => {
|
2882
|
+
setTimeout(() => view.dispatch({
|
2883
|
+
effects: focusEffect.of(true)
|
2884
|
+
}));
|
2885
|
+
},
|
2886
|
+
blur: (event, view) => {
|
2887
|
+
setTimeout(() => view.dispatch({
|
2888
|
+
effects: focusEffect.of(false)
|
2889
|
+
}));
|
2890
|
+
}
|
2891
|
+
})
|
2892
|
+
];
|
2893
|
+
|
2864
2894
|
// src/extensions/factories.ts
|
2865
2895
|
var __dxlog_file8 = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/extensions/factories.ts";
|
2866
2896
|
var preventNewline = EditorState.transactionFilter.of((tr) => tr.newDoc.lines > 1 ? [] : tr);
|
@@ -2873,7 +2903,7 @@ var defaultBasicOptions = {
|
|
2873
2903
|
history: true,
|
2874
2904
|
keymap: "standard",
|
2875
2905
|
lineWrapping: true,
|
2876
|
-
search:
|
2906
|
+
search: false
|
2877
2907
|
};
|
2878
2908
|
var keymaps = {
|
2879
2909
|
// https://codemirror.net/docs/ref/#commands.standardKeymap
|
@@ -2888,7 +2918,7 @@ var createBasicExtensions = (_props) => {
|
|
2888
2918
|
EditorView15.exceptionSink.of((err) => {
|
2889
2919
|
log5.catch(err, void 0, {
|
2890
2920
|
F: __dxlog_file8,
|
2891
|
-
L:
|
2921
|
+
L: 101,
|
2892
2922
|
S: void 0,
|
2893
2923
|
C: (f, a) => f(...a)
|
2894
2924
|
});
|
@@ -3038,6 +3068,7 @@ var folding = (_props = {}) => [
|
|
3038
3068
|
import { Decoration as Decoration8, EditorView as EditorView17, MatchDecorator, ViewPlugin as ViewPlugin11, WidgetType as WidgetType4 } from "@codemirror/view";
|
3039
3069
|
import { getHashColor, mx as mx3 } from "@dxos/react-ui-theme";
|
3040
3070
|
var TagWidget = class extends WidgetType4 {
|
3071
|
+
_text;
|
3041
3072
|
constructor(_text) {
|
3042
3073
|
super(), this._text = _text;
|
3043
3074
|
}
|
@@ -3056,6 +3087,7 @@ var tagMatcher = new MatchDecorator({
|
|
3056
3087
|
});
|
3057
3088
|
var hashtag = () => [
|
3058
3089
|
ViewPlugin11.fromClass(class {
|
3090
|
+
tags;
|
3059
3091
|
constructor(view) {
|
3060
3092
|
this.tags = tagMatcher.createDeco(view);
|
3061
3093
|
}
|
@@ -4296,7 +4328,7 @@ var processEditorPayload = (view, { type, data }) => {
|
|
4296
4328
|
// src/extensions/markdown/bundle.ts
|
4297
4329
|
import { completionKeymap as completionKeymap2 } from "@codemirror/autocomplete";
|
4298
4330
|
import { defaultKeymap as defaultKeymap2, indentWithTab as indentWithTab2 } from "@codemirror/commands";
|
4299
|
-
import { markdownLanguage as markdownLanguage3
|
4331
|
+
import { markdown, markdownLanguage as markdownLanguage3 } from "@codemirror/lang-markdown";
|
4300
4332
|
import { syntaxHighlighting as syntaxHighlighting2 } from "@codemirror/language";
|
4301
4333
|
import { languages } from "@codemirror/language-data";
|
4302
4334
|
import { keymap as keymap10 } from "@codemirror/view";
|
@@ -4305,7 +4337,7 @@ import { isNotFalsy as isNotFalsy3 } from "@dxos/util";
|
|
4305
4337
|
// src/extensions/markdown/highlight.ts
|
4306
4338
|
import { markdownLanguage as markdownLanguage2 } from "@codemirror/lang-markdown";
|
4307
4339
|
import { HighlightStyle } from "@codemirror/language";
|
4308
|
-
import {
|
4340
|
+
import { Tag, styleTags, tags } from "@lezer/highlight";
|
4309
4341
|
import { Table } from "@lezer/markdown";
|
4310
4342
|
var markdownTags = {
|
4311
4343
|
Blockquote: Tag.define(),
|
@@ -4546,7 +4578,7 @@ var convertTreeToJson = (state) => {
|
|
4546
4578
|
// src/extensions/markdown/decorate.ts
|
4547
4579
|
import { syntaxTree as syntaxTree7 } from "@codemirror/language";
|
4548
4580
|
import { RangeSetBuilder as RangeSetBuilder6, StateEffect as StateEffect6 } from "@codemirror/state";
|
4549
|
-
import {
|
4581
|
+
import { Decoration as Decoration11, EditorView as EditorView23, ViewPlugin as ViewPlugin13, WidgetType as WidgetType7 } from "@codemirror/view";
|
4550
4582
|
import { invariant as invariant4 } from "@dxos/invariant";
|
4551
4583
|
import { mx as mx4 } from "@dxos/react-ui-theme";
|
4552
4584
|
|
@@ -4764,6 +4796,7 @@ var preloadImage = (url) => {
|
|
4764
4796
|
}
|
4765
4797
|
};
|
4766
4798
|
var ImageWidget = class extends WidgetType5 {
|
4799
|
+
_url;
|
4767
4800
|
constructor(_url) {
|
4768
4801
|
super(), this._url = _url;
|
4769
4802
|
}
|
@@ -4972,6 +5005,7 @@ var update = (state, _options) => {
|
|
4972
5005
|
return builder.finish();
|
4973
5006
|
};
|
4974
5007
|
var TableWidget = class extends WidgetType6 {
|
5008
|
+
_table;
|
4975
5009
|
constructor(_table) {
|
4976
5010
|
super(), this._table = _table;
|
4977
5011
|
}
|
@@ -5020,6 +5054,8 @@ var HorizontalRuleWidget = class extends WidgetType7 {
|
|
5020
5054
|
}
|
5021
5055
|
};
|
5022
5056
|
var LinkButton = class extends WidgetType7 {
|
5057
|
+
url;
|
5058
|
+
render;
|
5023
5059
|
constructor(url, render) {
|
5024
5060
|
super(), this.url = url, this.render = render;
|
5025
5061
|
}
|
@@ -5036,6 +5072,7 @@ var LinkButton = class extends WidgetType7 {
|
|
5036
5072
|
}
|
5037
5073
|
};
|
5038
5074
|
var CheckboxWidget = class extends WidgetType7 {
|
5075
|
+
_checked;
|
5039
5076
|
constructor(_checked) {
|
5040
5077
|
super(), this._checked = _checked;
|
5041
5078
|
}
|
@@ -5080,6 +5117,8 @@ var CheckboxWidget = class extends WidgetType7 {
|
|
5080
5117
|
}
|
5081
5118
|
};
|
5082
5119
|
var TextWidget = class extends WidgetType7 {
|
5120
|
+
text;
|
5121
|
+
className;
|
5083
5122
|
constructor(text, className) {
|
5084
5123
|
super(), this.text = text, this.className = className;
|
5085
5124
|
}
|
@@ -5137,7 +5176,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5137
5176
|
const getHeaderLevels = (node, level) => {
|
5138
5177
|
invariant4(level > 0, void 0, {
|
5139
5178
|
F: __dxlog_file9,
|
5140
|
-
L:
|
5179
|
+
L: 180,
|
5141
5180
|
S: void 0,
|
5142
5181
|
A: [
|
5143
5182
|
"level > 0",
|
@@ -5176,7 +5215,7 @@ var buildDecorations2 = (view, options, focus2) => {
|
|
5176
5215
|
const getCurrentListLevel = () => {
|
5177
5216
|
invariant4(listLevels.length, void 0, {
|
5178
5217
|
F: __dxlog_file9,
|
5179
|
-
L:
|
5218
|
+
L: 202,
|
5180
5219
|
S: void 0,
|
5181
5220
|
A: [
|
5182
5221
|
"listLevels.length",
|
@@ -5416,6 +5455,9 @@ var forceUpdate = StateEffect6.define();
|
|
5416
5455
|
var decorateMarkdown = (options = {}) => {
|
5417
5456
|
return [
|
5418
5457
|
ViewPlugin13.fromClass(class {
|
5458
|
+
deco;
|
5459
|
+
atomicDeco;
|
5460
|
+
pendingUpdate;
|
5419
5461
|
constructor(view) {
|
5420
5462
|
({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations2(view, options, view.hasFocus));
|
5421
5463
|
}
|
@@ -5598,11 +5640,14 @@ var itemToJSON = ({ type, index, level, lineRange, contentRange, children }) =>
|
|
5598
5640
|
};
|
5599
5641
|
};
|
5600
5642
|
var Tree = class {
|
5643
|
+
type = "root";
|
5644
|
+
index = -1;
|
5645
|
+
level = -1;
|
5646
|
+
node;
|
5647
|
+
lineRange;
|
5648
|
+
contentRange;
|
5649
|
+
children = [];
|
5601
5650
|
constructor(node) {
|
5602
|
-
this.type = "root";
|
5603
|
-
this.index = -1;
|
5604
|
-
this.level = -1;
|
5605
|
-
this.children = [];
|
5606
5651
|
this.node = node;
|
5607
5652
|
this.lineRange = {
|
5608
5653
|
from: node.from,
|
@@ -6363,8 +6408,8 @@ var outliner = (options = {}) => [
|
|
6363
6408
|
];
|
6364
6409
|
var decorations = () => [
|
6365
6410
|
ViewPlugin15.fromClass(class {
|
6411
|
+
decorations = Decoration12.none;
|
6366
6412
|
constructor(view) {
|
6367
|
-
this.decorations = Decoration12.none;
|
6368
6413
|
this.updateDecorations(view.state, view);
|
6369
6414
|
}
|
6370
6415
|
update(update2) {
|
@@ -6501,6 +6546,8 @@ var buildDecorations3 = (state, options) => {
|
|
6501
6546
|
return builder.finish();
|
6502
6547
|
};
|
6503
6548
|
var PreviewInlineWidget = class extends WidgetType8 {
|
6549
|
+
_options;
|
6550
|
+
_link;
|
6504
6551
|
constructor(_options, _link) {
|
6505
6552
|
super(), this._options = _options, this._link = _link;
|
6506
6553
|
}
|
@@ -6518,6 +6565,8 @@ var PreviewInlineWidget = class extends WidgetType8 {
|
|
6518
6565
|
}
|
6519
6566
|
};
|
6520
6567
|
var PreviewBlockWidget = class extends WidgetType8 {
|
6568
|
+
_options;
|
6569
|
+
_link;
|
6521
6570
|
constructor(_options, _link) {
|
6522
6571
|
super(), this._options = _options, this._link = _link;
|
6523
6572
|
}
|
@@ -7465,7 +7514,7 @@ var linkSlashCommands = {
|
|
7465
7514
|
// src/components/Popover/RefPopover.tsx
|
7466
7515
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
7467
7516
|
import { createContext } from "@radix-ui/react-context";
|
7468
|
-
import React6, {
|
7517
|
+
import React6, { forwardRef as forwardRef2, useCallback as useCallback5, useEffect as useEffect4, useRef as useRef4, useState as useState3 } from "react";
|
7469
7518
|
import { addEventListener as addEventListener2 } from "@dxos/async";
|
7470
7519
|
import { Popover as Popover2 } from "@dxos/react-ui";
|
7471
7520
|
var customEventOptions = {
|
@@ -7549,7 +7598,7 @@ var PreviewProvider = ({ children, onLookup }) => {
|
|
7549
7598
|
// src/components/Popover/RefDropdownMenu.tsx
|
7550
7599
|
import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
|
7551
7600
|
import { createContext as createContext2 } from "@radix-ui/react-context";
|
7552
|
-
import React7, {
|
7601
|
+
import React7, { useCallback as useCallback6, useEffect as useEffect5, useRef as useRef5, useState as useState4 } from "react";
|
7553
7602
|
import { addEventListener as addEventListener3 } from "@dxos/async";
|
7554
7603
|
import { DropdownMenu } from "@dxos/react-ui";
|
7555
7604
|
var customEventOptions2 = {
|