@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
@@ -69,9 +69,7 @@ var annotationMark = Decoration.mark({
|
|
69
69
|
var annotations = ({ match } = {}) => {
|
70
70
|
return [
|
71
71
|
ViewPlugin.fromClass(class {
|
72
|
-
|
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/
|
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
|
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
|
-
|
156
|
-
F:
|
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
|
-
|
169
|
-
F:
|
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
|
-
|
1360
|
-
|
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 {
|
1456
|
-
import {
|
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,
|
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
|
-
|
1463
|
-
|
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,
|
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
|
-
|
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 {
|
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:
|
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 {
|
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
|
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-
|
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
|
-
|
2673
|
-
|
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-
|
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-
|
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-
|
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 =
|
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 =
|
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:
|
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:
|
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
|
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 {
|
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 {
|
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:
|
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:
|
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, {
|
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, {
|
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 = {
|