@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.
Files changed (122) hide show
  1. package/dist/lib/browser/index.mjs +304 -255
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/testing/index.mjs.map +2 -2
  5. package/dist/lib/node-esm/index.mjs +304 -255
  6. package/dist/lib/node-esm/index.mjs.map +4 -4
  7. package/dist/lib/node-esm/meta.json +1 -1
  8. package/dist/lib/node-esm/testing/index.mjs.map +2 -2
  9. package/dist/types/src/components/Editor/Editor.d.ts.map +1 -1
  10. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  11. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  12. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  13. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  14. package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
  15. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +1 -1
  16. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  17. package/dist/types/src/extensions/autocomplete.d.ts +1 -1
  18. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
  19. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  20. package/dist/types/src/extensions/automerge/automerge.stories.d.ts.map +1 -1
  21. package/dist/types/src/extensions/automerge/defs.d.ts +1 -1
  22. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  23. package/dist/types/src/extensions/automerge/sync.d.ts.map +1 -1
  24. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  25. package/dist/types/src/extensions/command/action.d.ts +1 -1
  26. package/dist/types/src/extensions/command/action.d.ts.map +1 -1
  27. package/dist/types/src/extensions/command/command-menu.d.ts +1 -1
  28. package/dist/types/src/extensions/command/command-menu.d.ts.map +1 -1
  29. package/dist/types/src/extensions/command/command.d.ts.map +1 -1
  30. package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
  31. package/dist/types/src/extensions/command/state.d.ts +1 -1
  32. package/dist/types/src/extensions/command/state.d.ts.map +1 -1
  33. package/dist/types/src/extensions/command/typeahead.d.ts.map +1 -1
  34. package/dist/types/src/extensions/command/useCommandMenu.d.ts +1 -1
  35. package/dist/types/src/extensions/command/useCommandMenu.d.ts.map +1 -1
  36. package/dist/types/src/extensions/comments.d.ts +1 -1
  37. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  38. package/dist/types/src/extensions/dnd.d.ts.map +1 -1
  39. package/dist/types/src/extensions/factories.d.ts +12 -11
  40. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  41. package/dist/types/src/extensions/markdown/action.d.ts.map +1 -1
  42. package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
  43. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  44. package/dist/types/src/extensions/markdown/formatting.d.ts +1 -1
  45. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  46. package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +1 -1
  47. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  48. package/dist/types/src/extensions/outliner/outliner.d.ts.map +1 -1
  49. package/dist/types/src/extensions/outliner/selection.d.ts.map +1 -1
  50. package/dist/types/src/extensions/outliner/tree.d.ts +1 -1
  51. package/dist/types/src/extensions/outliner/tree.d.ts.map +1 -1
  52. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  53. package/dist/types/src/stories/Command.stories.d.ts.map +1 -1
  54. package/dist/types/src/stories/CommandMenu.stories.d.ts.map +1 -1
  55. package/dist/types/src/stories/Comments.stories.d.ts.map +1 -1
  56. package/dist/types/src/stories/EditorToolbar.stories.d.ts.map +1 -1
  57. package/dist/types/src/stories/Experimental.stories.d.ts.map +1 -1
  58. package/dist/types/src/stories/Markdown.stories.d.ts.map +1 -1
  59. package/dist/types/src/stories/Outliner.stories.d.ts.map +1 -1
  60. package/dist/types/src/stories/Preview.stories.d.ts.map +1 -1
  61. package/dist/types/src/stories/TextEditor.stories.d.ts.map +1 -1
  62. package/dist/types/src/stories/components/EditorStory.d.ts.map +1 -1
  63. package/dist/types/src/testing/util.d.ts +1 -0
  64. package/dist/types/src/testing/util.d.ts.map +1 -1
  65. package/dist/types/src/util/cursor.d.ts.map +1 -1
  66. package/dist/types/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +40 -37
  68. package/src/components/Editor/Editor.tsx +1 -1
  69. package/src/components/EditorToolbar/EditorToolbar.tsx +1 -1
  70. package/src/components/EditorToolbar/blocks.ts +4 -3
  71. package/src/components/EditorToolbar/formatting.ts +3 -2
  72. package/src/components/EditorToolbar/headings.ts +2 -1
  73. package/src/components/EditorToolbar/lists.ts +3 -2
  74. package/src/components/EditorToolbar/util.ts +1 -1
  75. package/src/components/EditorToolbar/view-mode.ts +2 -1
  76. package/src/components/Popover/RefDropdownMenu.tsx +1 -1
  77. package/src/components/Popover/RefPopover.tsx +4 -4
  78. package/src/extensions/autocomplete.ts +3 -3
  79. package/src/extensions/automerge/automerge.stories.tsx +4 -4
  80. package/src/extensions/automerge/automerge.ts +4 -3
  81. package/src/extensions/automerge/defs.ts +1 -1
  82. package/src/extensions/automerge/sync.ts +1 -1
  83. package/src/extensions/automerge/update-automerge.ts +1 -1
  84. package/src/extensions/awareness/awareness.ts +2 -2
  85. package/src/extensions/command/action.ts +1 -1
  86. package/src/extensions/command/command-menu.ts +4 -3
  87. package/src/extensions/command/command.ts +3 -3
  88. package/src/extensions/command/hint.ts +2 -1
  89. package/src/extensions/command/placeholder.ts +1 -1
  90. package/src/extensions/command/state.ts +4 -3
  91. package/src/extensions/command/typeahead.ts +2 -2
  92. package/src/extensions/command/useCommandMenu.ts +2 -1
  93. package/src/extensions/comments.ts +7 -6
  94. package/src/extensions/dnd.ts +1 -1
  95. package/src/extensions/factories.ts +6 -5
  96. package/src/extensions/markdown/action.ts +2 -1
  97. package/src/extensions/markdown/bundle.ts +1 -1
  98. package/src/extensions/markdown/changes.ts +1 -1
  99. package/src/extensions/markdown/decorate.ts +7 -6
  100. package/src/extensions/markdown/formatting.test.ts +6 -6
  101. package/src/extensions/markdown/formatting.ts +3 -3
  102. package/src/extensions/markdown/highlight.ts +1 -1
  103. package/src/extensions/mention.ts +1 -1
  104. package/src/extensions/outliner/outliner.test.ts +3 -2
  105. package/src/extensions/outliner/outliner.ts +4 -3
  106. package/src/extensions/outliner/selection.ts +1 -1
  107. package/src/extensions/outliner/tree.test.ts +2 -1
  108. package/src/extensions/outliner/tree.ts +1 -1
  109. package/src/hooks/useTextEditor.ts +3 -3
  110. package/src/stories/Command.stories.tsx +6 -5
  111. package/src/stories/CommandMenu.stories.tsx +6 -5
  112. package/src/stories/Comments.stories.tsx +3 -2
  113. package/src/stories/EditorToolbar.stories.tsx +3 -3
  114. package/src/stories/Experimental.stories.tsx +4 -3
  115. package/src/stories/Markdown.stories.tsx +3 -2
  116. package/src/stories/Outliner.stories.tsx +4 -3
  117. package/src/stories/Preview.stories.tsx +22 -23
  118. package/src/stories/TextEditor.stories.tsx +15 -14
  119. package/src/stories/components/EditorStory.tsx +5 -5
  120. package/src/styles/theme.ts +7 -7
  121. package/src/testing/util.ts +2 -0
  122. 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
- constructor() {
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/extensions/automerge/cursor.ts
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 __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-editor/src/extensions/automerge/cursor.ts";
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
- log.catch(err, void 0, {
157
- F: __dxlog_file,
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
- log.catch(err, void 0, {
170
- F: __dxlog_file,
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
- constructor() {
1361
- this.decorations = Decoration3.none;
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 { RangeSetBuilder as RangeSetBuilder3, StateField as StateField3, StateEffect as StateEffect3, Prec as Prec2 } from "@codemirror/state";
1457
- import { EditorView as EditorView8, ViewPlugin as ViewPlugin6, Decoration as Decoration5, keymap as keymap4 } from "@codemirror/view";
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, WidgetType as WidgetType3, ViewPlugin as ViewPlugin5 } from "@codemirror/view";
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
- constructor() {
1464
- this.decorations = Decoration4.none;
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, keymap as keymap5, ViewPlugin as ViewPlugin8 } from "@codemirror/view";
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
- constructor() {
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 { hoverTooltip, keymap as keymap7, Decoration as Decoration7, EditorView as EditorView11, ViewPlugin as ViewPlugin9 } from "@codemirror/view";
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: 135,
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 { dropCursor, EditorView as EditorView12 } from "@codemirror/view";
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 EditorView14 } from "@codemirror/view";
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-separator)"
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
- alignItems: "center",
2674
- fontSize: "12px"
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-baseSurface)"
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-hoverSurface)"
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-input)"
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 = EditorView14.theme({
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 = EditorView14.theme({
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: true
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: 100,
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, markdown } from "@codemirror/lang-markdown";
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 { tags, styleTags, Tag } from "@lezer/highlight";
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 { EditorView as EditorView23, Decoration as Decoration11, WidgetType as WidgetType7, ViewPlugin as ViewPlugin13 } from "@codemirror/view";
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: 179,
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: 201,
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, { useRef as useRef4, useState as useState3, useEffect as useEffect4, useCallback as useCallback5, forwardRef as forwardRef2 } from "react";
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, { useRef as useRef5, useState as useState4, useEffect as useEffect5, useCallback as useCallback6 } from "react";
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 = {