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