@dxos/ui-editor 0.10.0 → 0.11.1
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/chunk-diff.mjs +935 -0
- package/dist/lib/chunk-diff.mjs.map +1 -0
- package/dist/lib/headless.mjs +2 -0
- package/dist/lib/index.mjs +9937 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/types.mjs +18 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/types/src/extensions/{bookmarks.d.ts → behavior/bookmarks.d.ts} +3 -0
- package/dist/types/src/extensions/behavior/bookmarks.d.ts.map +1 -0
- package/dist/types/src/extensions/behavior/dnd.d.ts.map +1 -0
- package/dist/types/src/extensions/behavior/index.d.ts +6 -0
- package/dist/types/src/extensions/behavior/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{listener.d.ts → behavior/listener.d.ts} +3 -0
- package/dist/types/src/extensions/behavior/listener.d.ts.map +1 -0
- package/dist/types/src/extensions/{spacing.d.ts → behavior/spacing.d.ts} +3 -0
- package/dist/types/src/extensions/behavior/spacing.d.ts.map +1 -0
- package/dist/types/src/extensions/behavior/submit.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/automerge/automerge.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/automerge/automerge.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/cursor.d.ts +1 -1
- package/dist/types/src/extensions/collab/automerge/cursor.d.ts.map +1 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/defs.d.ts +3 -1
- package/dist/types/src/extensions/collab/automerge/defs.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/automerge/index.d.ts +3 -0
- package/dist/types/src/extensions/collab/automerge/index.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/automerge/sync.d.ts.map +1 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/update-automerge.d.ts +4 -0
- package/dist/types/src/extensions/collab/automerge/update-automerge.d.ts.map +1 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/update-codemirror.d.ts +4 -0
- package/dist/types/src/extensions/collab/automerge/update-codemirror.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/awareness/awareness-provider.d.ts.map +1 -0
- package/dist/types/src/extensions/{awareness → collab/awareness}/awareness.d.ts +4 -1
- package/dist/types/src/extensions/collab/awareness/awareness.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/awareness/index.d.ts.map +1 -0
- package/dist/types/src/extensions/collab/index.d.ts +3 -0
- package/dist/types/src/extensions/collab/index.d.ts.map +1 -0
- package/dist/types/src/extensions/completion/autocomplete.d.ts.map +1 -0
- package/dist/types/src/extensions/{autocomplete → completion}/index.d.ts +1 -0
- package/dist/types/src/extensions/completion/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{autocomplete → completion}/match.d.ts +2 -2
- package/dist/types/src/extensions/completion/match.d.ts.map +1 -0
- package/dist/types/src/extensions/{mention.d.ts → completion/mention.d.ts} +3 -0
- package/dist/types/src/extensions/completion/mention.d.ts.map +1 -0
- package/dist/types/src/extensions/completion/placeholder.d.ts.map +1 -0
- package/dist/types/src/extensions/{autocomplete → completion}/typeahead.d.ts +2 -2
- package/dist/types/src/extensions/completion/typeahead.d.ts.map +1 -0
- package/dist/types/src/extensions/{factories.d.ts → core/factories.d.ts} +23 -2
- package/dist/types/src/extensions/core/factories.d.ts.map +1 -0
- package/dist/types/src/extensions/core/factories.test.d.ts.map +1 -0
- package/dist/types/src/extensions/core/index.d.ts +3 -0
- package/dist/types/src/extensions/core/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{modes.d.ts → core/modes.d.ts} +3 -0
- package/dist/types/src/extensions/core/modes.d.ts.map +1 -0
- package/dist/types/src/extensions/{debug.d.ts → debug/debug.d.ts} +3 -0
- package/dist/types/src/extensions/debug/debug.d.ts.map +1 -0
- package/dist/types/src/extensions/debug/index.d.ts +2 -0
- package/dist/types/src/extensions/debug/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{annotations.d.ts → decoration/annotations.d.ts} +1 -1
- package/dist/types/src/extensions/decoration/annotations.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/assistant.d.ts +27 -0
- package/dist/types/src/extensions/decoration/assistant.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/fader.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/hashtag.d.ts +6 -0
- package/dist/types/src/extensions/decoration/hashtag.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/index.d.ts +8 -0
- package/dist/types/src/extensions/decoration/index.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/marker.d.ts.map +1 -0
- package/dist/types/src/extensions/{pos.d.ts → decoration/pos.d.ts} +40 -14
- package/dist/types/src/extensions/decoration/pos.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/pos.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{replacer.d.ts → decoration/replacer.d.ts} +8 -8
- package/dist/types/src/extensions/decoration/replacer.d.ts.map +1 -0
- package/dist/types/src/extensions/decoration/replacer.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{blast.d.ts → demo/blast.d.ts} +3 -0
- package/dist/types/src/extensions/demo/blast.d.ts.map +1 -0
- package/dist/types/src/extensions/demo/index.d.ts +3 -0
- package/dist/types/src/extensions/demo/index.d.ts.map +1 -0
- package/dist/types/src/extensions/demo/snippets.d.ts.map +1 -0
- package/dist/types/src/extensions/index.d.ts +10 -33
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/language/index.d.ts +5 -0
- package/dist/types/src/extensions/language/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/json/index.d.ts +2 -0
- package/dist/types/src/extensions/language/json/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/json/json.d.ts +12 -0
- package/dist/types/src/extensions/language/json/json.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/action.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/bundle.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/changes.d.ts +1 -1
- package/dist/types/src/extensions/language/markdown/changes.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/changes.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/debug.d.ts +3 -0
- package/dist/types/src/extensions/language/markdown/debug.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/decorate.d.ts +5 -1
- package/dist/types/src/extensions/language/markdown/decorate.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/formatting.d.ts +11 -2
- package/dist/types/src/extensions/language/markdown/formatting.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/formatting.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/highlight.d.ts +16 -12
- package/dist/types/src/extensions/language/markdown/highlight.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/image.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/image.test.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/link.d.ts +25 -0
- package/dist/types/src/extensions/language/markdown/link.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/link.test.d.ts +2 -0
- package/dist/types/src/extensions/language/markdown/link.test.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/parser.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/styles.d.ts +3 -0
- package/dist/types/src/extensions/language/markdown/styles.d.ts.map +1 -0
- package/dist/types/src/extensions/language/markdown/table.d.ts.map +1 -0
- package/dist/types/src/extensions/language/mermaid/index.d.ts +2 -0
- package/dist/types/src/extensions/language/mermaid/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/mermaid/mermaid.d.ts +18 -0
- package/dist/types/src/extensions/language/mermaid/mermaid.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/extended-markdown.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/extended-markdown.test.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/stub.d.ts +76 -0
- package/dist/types/src/extensions/language/xml/stub.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/widgets/anchor.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/widgets/index.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/xml-block-decoration.d.ts +48 -0
- package/dist/types/src/extensions/language/xml/xml-block-decoration.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/xml-formatting.d.ts.map +1 -0
- package/dist/types/src/extensions/{tags → language/xml}/xml-tags.d.ts +12 -1
- package/dist/types/src/extensions/language/xml/xml-tags.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/xml-tags.test.d.ts +2 -0
- package/dist/types/src/extensions/language/xml/xml-tags.test.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/xml-util.d.ts.map +1 -0
- package/dist/types/src/extensions/language/xml/xml-util.test.d.ts.map +1 -0
- package/dist/types/src/extensions/review/change-bar.d.ts +29 -0
- package/dist/types/src/extensions/review/change-bar.d.ts.map +1 -0
- package/dist/types/src/extensions/{comments.d.ts → review/comments.d.ts} +56 -38
- package/dist/types/src/extensions/review/comments.d.ts.map +1 -0
- package/dist/types/src/extensions/review/comments.test.d.ts +2 -0
- package/dist/types/src/extensions/review/comments.test.d.ts.map +1 -0
- package/dist/types/src/extensions/review/diff.d.ts +131 -0
- package/dist/types/src/extensions/review/diff.d.ts.map +1 -0
- package/dist/types/src/extensions/review/diff.test.d.ts +2 -0
- package/dist/types/src/extensions/review/diff.test.d.ts.map +1 -0
- package/dist/types/src/extensions/review/index.d.ts +7 -0
- package/dist/types/src/extensions/review/index.d.ts.map +1 -0
- package/dist/types/src/extensions/review/suggest.d.ts +89 -0
- package/dist/types/src/extensions/review/suggest.d.ts.map +1 -0
- package/dist/types/src/extensions/review/suggest.test.d.ts +2 -0
- package/dist/types/src/extensions/review/suggest.test.d.ts.map +1 -0
- package/dist/types/src/extensions/review/suggestions-overlay.d.ts +25 -0
- package/dist/types/src/extensions/review/suggestions-overlay.d.ts.map +1 -0
- package/dist/types/src/extensions/review/suggestions-overlay.test.d.ts +2 -0
- package/dist/types/src/extensions/review/suggestions-overlay.test.d.ts.map +1 -0
- package/dist/types/src/extensions/review/track-changes.d.ts +27 -0
- package/dist/types/src/extensions/review/track-changes.d.ts.map +1 -0
- package/dist/types/src/extensions/review/track-changes.test.d.ts +2 -0
- package/dist/types/src/extensions/review/track-changes.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{busy.d.ts → state/busy.d.ts} +1 -0
- package/dist/types/src/extensions/state/busy.d.ts.map +1 -0
- package/dist/types/src/extensions/{focus.d.ts → state/focus.d.ts} +4 -0
- package/dist/types/src/extensions/state/focus.d.ts.map +1 -0
- package/dist/types/src/extensions/state/index.d.ts +5 -0
- package/dist/types/src/extensions/state/index.d.ts.map +1 -0
- package/dist/types/src/extensions/state/modal.d.ts.map +1 -0
- package/dist/types/src/extensions/{selection.d.ts → state/selection.d.ts} +1 -1
- package/dist/types/src/extensions/state/selection.d.ts.map +1 -0
- package/dist/types/src/extensions/state/selection.test.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/index.d.ts +4 -0
- package/dist/types/src/extensions/streaming/index.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/pending/index.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/pending/pending-text-stream.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/pending/pending-text-stream.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{pending → streaming/pending}/pending-text.d.ts +1 -0
- package/dist/types/src/extensions/streaming/pending/pending-text.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/pending/pending-text.test.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/auto-scroll.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/crawler.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/index.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/scroll-past-end.d.ts +4 -0
- package/dist/types/src/extensions/streaming/scrolling/scroll-past-end.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/scrollbar-autohide.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/scrolling/scroller.d.ts.map +1 -0
- package/dist/types/src/extensions/{typewriter.d.ts → streaming/typewriter.d.ts} +12 -12
- package/dist/types/src/extensions/streaming/typewriter.d.ts.map +1 -0
- package/dist/types/src/extensions/streaming/typewriter.test.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/blocks.d.ts +52 -0
- package/dist/types/src/extensions/structure/blocks/blocks.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/blocks.test.d.ts +2 -0
- package/dist/types/src/extensions/structure/blocks/blocks.test.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/drag.d.ts +57 -0
- package/dist/types/src/extensions/structure/blocks/drag.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/index.d.ts +5 -0
- package/dist/types/src/extensions/structure/blocks/index.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/selection.d.ts +47 -0
- package/dist/types/src/extensions/structure/blocks/selection.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/selection.test.d.ts +2 -0
- package/dist/types/src/extensions/structure/blocks/selection.test.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/blocks/types.d.ts +17 -0
- package/dist/types/src/extensions/structure/blocks/types.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/folding/folding.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/folding/index.d.ts +3 -0
- package/dist/types/src/extensions/structure/folding/index.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/folding/turns.d.ts +55 -0
- package/dist/types/src/extensions/structure/folding/turns.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/folding/turns.test.d.ts +2 -0
- package/dist/types/src/extensions/structure/folding/turns.test.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/index.d.ts +4 -0
- package/dist/types/src/extensions/structure/index.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/commands.d.ts +31 -0
- package/dist/types/src/extensions/structure/outliner/commands.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/dnd.d.ts +43 -0
- package/dist/types/src/extensions/structure/outliner/dnd.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/dnd.test.d.ts +2 -0
- package/dist/types/src/extensions/structure/outliner/dnd.test.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/editor.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/editor.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/index.d.ts +1 -0
- package/dist/types/src/extensions/structure/outliner/index.d.ts.map +1 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/menu.d.ts +1 -0
- package/dist/types/src/extensions/structure/outliner/menu.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/outliner.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/outliner.test.d.ts.map +1 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/tree.d.ts +1 -1
- package/dist/types/src/extensions/structure/outliner/tree.d.ts.map +1 -0
- package/dist/types/src/extensions/structure/outliner/tree.test.d.ts.map +1 -0
- package/dist/types/src/headless.d.ts +4 -0
- package/dist/types/src/headless.d.ts.map +1 -0
- package/dist/types/src/styles/theme.d.ts +1 -1
- package/dist/types/src/styles/theme.d.ts.map +1 -1
- package/dist/types/src/util/util.d.ts +2 -0
- package/dist/types/src/util/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +48 -42
- package/src/defaults.ts +1 -1
- package/src/extensions/{bookmarks.ts → behavior/bookmarks.ts} +24 -14
- package/src/extensions/behavior/index.ts +9 -0
- package/src/extensions/{listener.ts → behavior/listener.ts} +4 -1
- package/src/extensions/{spacing.ts → behavior/spacing.ts} +8 -2
- package/src/extensions/{submit.ts → behavior/submit.ts} +2 -10
- package/src/extensions/{automerge → collab/automerge}/automerge.test.tsx +4 -4
- package/src/extensions/{automerge → collab/automerge}/automerge.ts +7 -4
- package/src/extensions/{automerge → collab/automerge}/cursor.ts +1 -1
- package/src/extensions/{automerge → collab/automerge}/defs.ts +4 -1
- package/src/extensions/{automerge → collab/automerge}/index.ts +1 -0
- package/src/extensions/{automerge → collab/automerge}/sync.ts +1 -2
- package/src/extensions/{automerge → collab/automerge}/update-automerge.ts +4 -0
- package/src/extensions/{automerge → collab/automerge}/update-codemirror.ts +5 -1
- package/src/extensions/{awareness → collab/awareness}/awareness-provider.ts +3 -4
- package/src/extensions/{awareness → collab/awareness}/awareness.ts +19 -16
- package/src/extensions/collab/index.ts +6 -0
- package/src/extensions/{autocomplete → completion}/autocomplete.ts +7 -5
- package/src/extensions/{autocomplete → completion}/index.ts +2 -1
- package/src/extensions/{autocomplete → completion}/match.ts +2 -2
- package/src/extensions/{mention.ts → completion/mention.ts} +3 -0
- package/src/extensions/{autocomplete → completion}/placeholder.ts +1 -1
- package/src/extensions/completion/typeahead.ts +97 -0
- package/src/extensions/{factories.ts → core/factories.ts} +35 -13
- package/src/extensions/core/index.ts +6 -0
- package/src/extensions/{modes.ts → core/modes.ts} +4 -1
- package/src/extensions/{debug.ts → debug/debug.ts} +3 -0
- package/src/extensions/debug/index.ts +5 -0
- package/src/extensions/{annotations.ts → decoration/annotations.ts} +12 -10
- package/src/extensions/decoration/assistant.ts +225 -0
- package/src/extensions/{fader.ts → decoration/fader.ts} +17 -19
- package/src/extensions/{hashtag.ts → decoration/hashtag.ts} +35 -28
- package/src/extensions/decoration/index.ts +11 -0
- package/src/extensions/{marker.ts → decoration/marker.ts} +18 -18
- package/src/extensions/{pos.test.ts → decoration/pos.test.ts} +57 -1
- package/src/extensions/{pos.ts → decoration/pos.ts} +165 -31
- package/src/extensions/{blast.ts → demo/blast.ts} +3 -0
- package/src/extensions/demo/index.ts +6 -0
- package/src/extensions/{snippets.ts → demo/snippets.ts} +5 -1
- package/src/extensions/index.ts +10 -33
- package/src/extensions/language/index.ts +8 -0
- package/src/extensions/language/json/index.ts +5 -0
- package/src/extensions/{json.ts → language/json/json.ts} +11 -6
- package/src/extensions/{markdown → language/markdown}/action.ts +1 -1
- package/src/extensions/{markdown → language/markdown}/bundle.ts +7 -1
- package/src/extensions/{markdown → language/markdown}/changes.test.ts +2 -2
- package/src/extensions/{markdown → language/markdown}/changes.ts +2 -2
- package/src/extensions/{markdown → language/markdown}/debug.ts +3 -0
- package/src/extensions/{markdown → language/markdown}/decorate.ts +96 -85
- package/src/extensions/{markdown → language/markdown}/formatting.test.ts +88 -1
- package/src/extensions/{markdown → language/markdown}/formatting.ts +193 -74
- package/src/extensions/{markdown → language/markdown}/highlight.ts +42 -41
- package/src/extensions/{markdown → language/markdown}/image.test.ts +1 -1
- package/src/extensions/{markdown → language/markdown}/image.ts +6 -6
- package/src/extensions/language/markdown/link.test.ts +58 -0
- package/src/extensions/language/markdown/link.ts +109 -0
- package/src/extensions/{markdown → language/markdown}/parser.test.ts +0 -28
- package/src/extensions/{markdown → language/markdown}/styles.ts +38 -7
- package/src/extensions/{markdown → language/markdown}/table.ts +5 -5
- package/src/extensions/language/mermaid/index.ts +5 -0
- package/src/extensions/language/mermaid/mermaid.ts +44 -0
- package/src/extensions/{tags → language/xml}/DESIGN.md +3 -3
- package/src/extensions/{tags → language/xml}/extended-markdown.test.ts +2 -1
- package/src/extensions/{tags → language/xml}/extended-markdown.ts +2 -4
- package/src/extensions/language/xml/stub.ts +233 -0
- package/src/extensions/language/xml/xml-block-decoration.ts +165 -0
- package/src/extensions/{tags → language/xml}/xml-formatting.ts +54 -38
- package/src/extensions/language/xml/xml-tags.test.ts +588 -0
- package/src/extensions/{tags → language/xml}/xml-tags.ts +165 -66
- package/src/extensions/{tags → language/xml}/xml-util.test.ts +2 -2
- package/src/extensions/review/change-bar.ts +94 -0
- package/src/extensions/review/comments.test.ts +72 -0
- package/src/extensions/{comments.ts → review/comments.ts} +395 -267
- package/src/extensions/review/diff.test.ts +405 -0
- package/src/extensions/review/diff.ts +502 -0
- package/src/extensions/review/index.ts +10 -0
- package/src/extensions/review/suggest.test.ts +170 -0
- package/src/extensions/review/suggest.ts +512 -0
- package/src/extensions/review/suggestions-overlay.test.ts +58 -0
- package/src/extensions/review/suggestions-overlay.ts +50 -0
- package/src/extensions/review/track-changes.test.ts +101 -0
- package/src/extensions/review/track-changes.ts +215 -0
- package/src/extensions/{busy.ts → state/busy.ts} +1 -0
- package/src/extensions/{focus.ts → state/focus.ts} +4 -0
- package/src/extensions/state/index.ts +8 -0
- package/src/extensions/{selection.ts → state/selection.ts} +3 -3
- package/src/extensions/streaming/index.ts +7 -0
- package/src/extensions/{pending → streaming/pending}/pending-text-stream.ts +10 -3
- package/src/extensions/{pending → streaming/pending}/pending-text.test.ts +1 -1
- package/src/extensions/{pending → streaming/pending}/pending-text.ts +20 -19
- package/src/extensions/{scrolling → streaming/scrolling}/auto-scroll.ts +9 -6
- package/src/extensions/{scrolling → streaming/scrolling}/scroll-past-end.ts +1 -0
- package/src/extensions/{scrolling → streaming/scrolling}/scrollbar-autohide.ts +13 -11
- package/src/extensions/{typewriter.ts → streaming/typewriter.ts} +46 -47
- package/src/extensions/structure/blocks/DESIGN.md +134 -0
- package/src/extensions/structure/blocks/blocks.test.ts +147 -0
- package/src/extensions/structure/blocks/blocks.ts +219 -0
- package/src/extensions/structure/blocks/drag.ts +996 -0
- package/src/extensions/structure/blocks/index.ts +8 -0
- package/src/extensions/structure/blocks/selection.test.ts +56 -0
- package/src/extensions/structure/blocks/selection.ts +279 -0
- package/src/extensions/structure/blocks/types.ts +22 -0
- package/src/extensions/{folding.ts → structure/folding/folding.ts} +12 -10
- package/src/extensions/structure/folding/index.ts +6 -0
- package/src/extensions/structure/folding/turns.test.ts +72 -0
- package/src/extensions/structure/folding/turns.ts +209 -0
- package/src/extensions/structure/index.ts +7 -0
- package/src/extensions/structure/outliner/DESIGN.md +183 -0
- package/src/extensions/structure/outliner/SPEC.mdl +305 -0
- package/src/extensions/{outliner → structure/outliner}/commands.ts +125 -42
- package/src/extensions/structure/outliner/dnd.test.ts +142 -0
- package/src/extensions/structure/outliner/dnd.ts +375 -0
- package/src/extensions/structure/outliner/editor.test.ts +85 -0
- package/src/extensions/{outliner → structure/outliner}/editor.ts +14 -9
- package/src/extensions/{outliner → structure/outliner}/index.ts +1 -0
- package/src/extensions/{outliner → structure/outliner}/menu.ts +48 -25
- package/src/extensions/structure/outliner/outliner.test.ts +193 -0
- package/src/extensions/structure/outliner/outliner.ts +183 -0
- package/src/extensions/{outliner → structure/outliner}/tree.test.ts +2 -2
- package/src/extensions/{outliner → structure/outliner}/tree.ts +1 -1
- package/src/headless.ts +13 -0
- package/src/styles/theme.ts +3 -1
- package/src/util/util.ts +3 -0
- package/dist/lib/browser/index.mjs +0 -9594
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/types/index.mjs +0 -33
- package/dist/lib/browser/types/index.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -9596
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/types/index.mjs +0 -35
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/types/src/extensions/annotations.d.ts.map +0 -1
- package/dist/types/src/extensions/autocomplete/autocomplete.d.ts.map +0 -1
- package/dist/types/src/extensions/autocomplete/index.d.ts.map +0 -1
- package/dist/types/src/extensions/autocomplete/match.d.ts.map +0 -1
- package/dist/types/src/extensions/autocomplete/placeholder.d.ts.map +0 -1
- package/dist/types/src/extensions/autocomplete/typeahead.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/automerge.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/automerge.test.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/cursor.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/defs.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/index.d.ts +0 -2
- package/dist/types/src/extensions/automerge/index.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/sync.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +0 -1
- package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +0 -1
- package/dist/types/src/extensions/awareness/awareness-provider.d.ts.map +0 -1
- package/dist/types/src/extensions/awareness/awareness.d.ts.map +0 -1
- package/dist/types/src/extensions/awareness/index.d.ts.map +0 -1
- package/dist/types/src/extensions/blast.d.ts.map +0 -1
- package/dist/types/src/extensions/blocks.d.ts +0 -2
- package/dist/types/src/extensions/blocks.d.ts.map +0 -1
- package/dist/types/src/extensions/bookmarks.d.ts.map +0 -1
- package/dist/types/src/extensions/busy.d.ts.map +0 -1
- package/dist/types/src/extensions/comments.d.ts.map +0 -1
- package/dist/types/src/extensions/debug.d.ts.map +0 -1
- package/dist/types/src/extensions/dnd.d.ts.map +0 -1
- package/dist/types/src/extensions/factories.d.ts.map +0 -1
- package/dist/types/src/extensions/factories.test.d.ts.map +0 -1
- package/dist/types/src/extensions/fader.d.ts.map +0 -1
- package/dist/types/src/extensions/focus.d.ts.map +0 -1
- package/dist/types/src/extensions/folding.d.ts.map +0 -1
- package/dist/types/src/extensions/hashtag.d.ts +0 -3
- package/dist/types/src/extensions/hashtag.d.ts.map +0 -1
- package/dist/types/src/extensions/json.d.ts +0 -7
- package/dist/types/src/extensions/json.d.ts.map +0 -1
- package/dist/types/src/extensions/listener.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/action.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/bundle.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/changes.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/changes.test.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/debug.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/decorate.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/formatting.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/formatting.test.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/highlight.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/image.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/image.test.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/index.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/link.d.ts +0 -7
- package/dist/types/src/extensions/markdown/link.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/parser.test.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/styles.d.ts.map +0 -1
- package/dist/types/src/extensions/markdown/table.d.ts.map +0 -1
- package/dist/types/src/extensions/marker.d.ts.map +0 -1
- package/dist/types/src/extensions/mention.d.ts.map +0 -1
- package/dist/types/src/extensions/modal.d.ts.map +0 -1
- package/dist/types/src/extensions/modes.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/commands.d.ts +0 -10
- package/dist/types/src/extensions/outliner/commands.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/editor.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/editor.test.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/index.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/menu.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/outliner.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/outliner.test.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/selection.d.ts +0 -12
- package/dist/types/src/extensions/outliner/selection.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/tree.d.ts.map +0 -1
- package/dist/types/src/extensions/outliner/tree.test.d.ts.map +0 -1
- package/dist/types/src/extensions/pending/index.d.ts.map +0 -1
- package/dist/types/src/extensions/pending/pending-text-stream.d.ts.map +0 -1
- package/dist/types/src/extensions/pending/pending-text-stream.test.d.ts.map +0 -1
- package/dist/types/src/extensions/pending/pending-text.d.ts.map +0 -1
- package/dist/types/src/extensions/pending/pending-text.test.d.ts.map +0 -1
- package/dist/types/src/extensions/pos.d.ts.map +0 -1
- package/dist/types/src/extensions/pos.test.d.ts.map +0 -1
- package/dist/types/src/extensions/replacer.d.ts.map +0 -1
- package/dist/types/src/extensions/replacer.test.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/auto-scroll.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/crawler.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/index.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/scroll-past-end.d.ts +0 -3
- package/dist/types/src/extensions/scrolling/scroll-past-end.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/scrollbar-autohide.d.ts.map +0 -1
- package/dist/types/src/extensions/scrolling/scroller.d.ts.map +0 -1
- package/dist/types/src/extensions/selection.d.ts.map +0 -1
- package/dist/types/src/extensions/selection.test.d.ts.map +0 -1
- package/dist/types/src/extensions/snippets.d.ts.map +0 -1
- package/dist/types/src/extensions/spacing.d.ts.map +0 -1
- package/dist/types/src/extensions/state.d.ts +0 -2
- package/dist/types/src/extensions/state.d.ts.map +0 -1
- package/dist/types/src/extensions/submit.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/extended-markdown.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/extended-markdown.test.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/index.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/stub.d.ts +0 -35
- package/dist/types/src/extensions/tags/stub.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/widgets/anchor.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/widgets/index.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/xml-block-decoration.d.ts +0 -31
- package/dist/types/src/extensions/tags/xml-block-decoration.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/xml-formatting.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/xml-tags.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/xml-util.d.ts.map +0 -1
- package/dist/types/src/extensions/tags/xml-util.test.d.ts.map +0 -1
- package/dist/types/src/extensions/typewriter.d.ts.map +0 -1
- package/dist/types/src/extensions/typewriter.test.d.ts.map +0 -1
- package/src/extensions/autocomplete/typeahead.ts +0 -87
- package/src/extensions/blocks.ts +0 -131
- package/src/extensions/markdown/link.ts +0 -49
- package/src/extensions/outliner/editor.test.ts +0 -33
- package/src/extensions/outliner/outliner.test.ts +0 -99
- package/src/extensions/outliner/outliner.ts +0 -166
- package/src/extensions/outliner/selection.ts +0 -50
- package/src/extensions/state.ts +0 -7
- package/src/extensions/tags/stub.ts +0 -80
- package/src/extensions/tags/xml-block-decoration.ts +0 -123
- package/dist/types/src/extensions/{dnd.d.ts → behavior/dnd.d.ts} +0 -0
- package/dist/types/src/extensions/{submit.d.ts → behavior/submit.d.ts} +0 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/automerge.d.ts +0 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/automerge.test.d.ts +0 -0
- package/dist/types/src/extensions/{automerge → collab/automerge}/sync.d.ts +0 -0
- package/dist/types/src/extensions/{awareness → collab/awareness}/awareness-provider.d.ts +0 -0
- package/dist/types/src/extensions/{awareness → collab/awareness}/index.d.ts +0 -0
- package/dist/types/src/extensions/{autocomplete → completion}/autocomplete.d.ts +0 -0
- package/dist/types/src/extensions/{autocomplete → completion}/placeholder.d.ts +0 -0
- package/dist/types/src/extensions/{factories.test.d.ts → core/factories.test.d.ts} +0 -0
- package/dist/types/src/extensions/{fader.d.ts → decoration/fader.d.ts} +0 -0
- package/dist/types/src/extensions/{marker.d.ts → decoration/marker.d.ts} +0 -0
- package/dist/types/src/extensions/{pos.test.d.ts → decoration/pos.test.d.ts} +0 -0
- package/dist/types/src/extensions/{replacer.test.d.ts → decoration/replacer.test.d.ts} +0 -0
- package/dist/types/src/extensions/{snippets.d.ts → demo/snippets.d.ts} +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/action.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/bundle.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/changes.test.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/formatting.test.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/image.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/image.test.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/index.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/parser.test.d.ts +0 -0
- package/dist/types/src/extensions/{markdown → language/markdown}/table.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/extended-markdown.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/extended-markdown.test.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/index.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/widgets/anchor.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/widgets/index.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/xml-formatting.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/xml-util.d.ts +0 -0
- package/dist/types/src/extensions/{tags → language/xml}/xml-util.test.d.ts +0 -0
- package/dist/types/src/extensions/{modal.d.ts → state/modal.d.ts} +0 -0
- package/dist/types/src/extensions/{selection.test.d.ts → state/selection.test.d.ts} +0 -0
- package/dist/types/src/extensions/{pending → streaming/pending}/index.d.ts +0 -0
- package/dist/types/src/extensions/{pending → streaming/pending}/pending-text-stream.d.ts +0 -0
- package/dist/types/src/extensions/{pending → streaming/pending}/pending-text-stream.test.d.ts +0 -0
- package/dist/types/src/extensions/{pending → streaming/pending}/pending-text.test.d.ts +0 -0
- package/dist/types/src/extensions/{scrolling → streaming/scrolling}/auto-scroll.d.ts +0 -0
- package/dist/types/src/extensions/{scrolling → streaming/scrolling}/crawler.d.ts +0 -0
- package/dist/types/src/extensions/{scrolling → streaming/scrolling}/index.d.ts +0 -0
- package/dist/types/src/extensions/{scrolling → streaming/scrolling}/scrollbar-autohide.d.ts +0 -0
- package/dist/types/src/extensions/{scrolling → streaming/scrolling}/scroller.d.ts +0 -0
- package/dist/types/src/extensions/{typewriter.test.d.ts → streaming/typewriter.test.d.ts} +0 -0
- package/dist/types/src/extensions/{folding.d.ts → structure/folding/folding.d.ts} +0 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/editor.d.ts +0 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/editor.test.d.ts +0 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/outliner.d.ts +0 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/outliner.test.d.ts +0 -0
- package/dist/types/src/extensions/{outliner → structure/outliner}/tree.test.d.ts +0 -0
- package/src/extensions/{dnd.ts → behavior/dnd.ts} +29 -29
- package/src/extensions/{awareness → collab/awareness}/index.ts +0 -0
- package/src/extensions/{factories.test.ts → core/factories.test.ts} +0 -0
- package/src/extensions/{replacer.test.ts → decoration/replacer.test.ts} +0 -0
- package/src/extensions/{replacer.ts → decoration/replacer.ts} +25 -25
- /package/src/extensions/{markdown → language/markdown}/index.ts +0 -0
- /package/src/extensions/{tags → language/xml}/index.ts +0 -0
- /package/src/extensions/{tags → language/xml}/testing/text.md +0 -0
- /package/src/extensions/{tags → language/xml}/testing/text.txt +0 -0
- /package/src/extensions/{tags → language/xml}/widgets/anchor.ts +0 -0
- /package/src/extensions/{tags → language/xml}/widgets/index.ts +0 -0
- /package/src/extensions/{tags → language/xml}/xml-util.ts +0 -0
- /package/src/extensions/{modal.ts → state/modal.ts} +0 -0
- /package/src/extensions/{selection.test.ts → state/selection.test.ts} +0 -0
- /package/src/extensions/{pending → streaming/pending}/index.ts +0 -0
- /package/src/extensions/{pending → streaming/pending}/pending-text-stream.test.ts +0 -0
- /package/src/extensions/{scrolling → streaming/scrolling}/crawler.ts +0 -0
- /package/src/extensions/{scrolling → streaming/scrolling}/index.ts +0 -0
- /package/src/extensions/{scrolling → streaming/scrolling}/scroller.ts +0 -0
- /package/src/extensions/{typewriter.test.ts → streaming/typewriter.test.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/ui-editor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Text editor components.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -16,14 +16,17 @@
|
|
|
16
16
|
".": {
|
|
17
17
|
"source": "./src/index.ts",
|
|
18
18
|
"types": "./dist/types/src/index.d.ts",
|
|
19
|
-
"
|
|
20
|
-
|
|
19
|
+
"import": "./dist/lib/index.mjs"
|
|
20
|
+
},
|
|
21
|
+
"./headless": {
|
|
22
|
+
"source": "./src/headless.ts",
|
|
23
|
+
"types": "./dist/types/src/headless.d.ts",
|
|
24
|
+
"import": "./dist/lib/headless.mjs"
|
|
21
25
|
},
|
|
22
26
|
"./types": {
|
|
23
27
|
"source": "./src/types/index.ts",
|
|
24
28
|
"types": "./dist/types/src/types/index.d.ts",
|
|
25
|
-
"
|
|
26
|
-
"node": "./dist/lib/node-esm/types/index.mjs"
|
|
29
|
+
"import": "./dist/lib/types.mjs"
|
|
27
30
|
}
|
|
28
31
|
},
|
|
29
32
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -33,21 +36,22 @@
|
|
|
33
36
|
],
|
|
34
37
|
"dependencies": {
|
|
35
38
|
"@automerge/automerge": "3.3.0-fragments.2",
|
|
36
|
-
"@codemirror/autocomplete": "^6.20.
|
|
37
|
-
"@codemirror/commands": "^6.10.
|
|
39
|
+
"@codemirror/autocomplete": "^6.20.3",
|
|
40
|
+
"@codemirror/commands": "^6.10.4",
|
|
38
41
|
"@codemirror/lang-html": "^6.4.11",
|
|
39
42
|
"@codemirror/lang-javascript": "^6.2.5",
|
|
40
43
|
"@codemirror/lang-json": "^6.0.2",
|
|
41
|
-
"@codemirror/lang-markdown": "6.5.
|
|
44
|
+
"@codemirror/lang-markdown": "6.5.1",
|
|
42
45
|
"@codemirror/lang-xml": "^6.1.0",
|
|
43
46
|
"@codemirror/lang-yaml": "^6.1.3",
|
|
44
|
-
"@codemirror/language": "^6.12.
|
|
47
|
+
"@codemirror/language": "^6.12.4",
|
|
45
48
|
"@codemirror/language-data": "^6.5.2",
|
|
46
49
|
"@codemirror/lint": "6.9.7",
|
|
47
|
-
"@codemirror/
|
|
48
|
-
"@codemirror/
|
|
50
|
+
"@codemirror/merge": "^6.12.2",
|
|
51
|
+
"@codemirror/search": "^6.7.1",
|
|
52
|
+
"@codemirror/state": "^6.7.1",
|
|
49
53
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
50
|
-
"@codemirror/view": "^6.43.
|
|
54
|
+
"@codemirror/view": "^6.43.6",
|
|
51
55
|
"@lezer/common": "^1.5.2",
|
|
52
56
|
"@lezer/generator": "^1.8.0",
|
|
53
57
|
"@lezer/highlight": "^1.2.3",
|
|
@@ -57,35 +61,37 @@
|
|
|
57
61
|
"@uiw/codemirror-theme-vscode": "^4.25.2",
|
|
58
62
|
"ajv": "^8.18.0",
|
|
59
63
|
"codemirror": "^6.0.2",
|
|
64
|
+
"codemirror-lang-mermaid": "^0.5.0",
|
|
65
|
+
"diff": "^8.0.3",
|
|
60
66
|
"lib0": "^0.2.65",
|
|
61
67
|
"lodash.defaultsdeep": "^4.6.1",
|
|
62
68
|
"lodash.merge": "^4.6.2",
|
|
63
69
|
"lodash.sortby": "^4.7.0",
|
|
64
70
|
"style-mod": "^4.1.0",
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/client": "0.
|
|
68
|
-
"@dxos/context": "0.
|
|
69
|
-
"@dxos/debug": "0.
|
|
70
|
-
"@dxos/display-name": "0.
|
|
71
|
-
"@dxos/echo
|
|
72
|
-
"@dxos/echo-client": "0.
|
|
73
|
-
"@dxos/
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/nlp": "0.
|
|
79
|
-
"@dxos/
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/ui-
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
71
|
+
"@dxos/app-graph": "0.11.1",
|
|
72
|
+
"@dxos/async": "0.11.1",
|
|
73
|
+
"@dxos/client": "0.11.1",
|
|
74
|
+
"@dxos/context": "0.11.1",
|
|
75
|
+
"@dxos/debug": "0.11.1",
|
|
76
|
+
"@dxos/display-name": "0.11.1",
|
|
77
|
+
"@dxos/echo": "0.11.1",
|
|
78
|
+
"@dxos/echo-client": "0.11.1",
|
|
79
|
+
"@dxos/echo-doc": "0.11.1",
|
|
80
|
+
"@dxos/invariant": "0.11.1",
|
|
81
|
+
"@dxos/keys": "0.11.1",
|
|
82
|
+
"@dxos/lit-ui": "0.11.1",
|
|
83
|
+
"@dxos/log": "0.11.1",
|
|
84
|
+
"@dxos/nlp": "0.11.1",
|
|
85
|
+
"@dxos/protocols": "0.11.1",
|
|
86
|
+
"@dxos/ui": "0.11.1",
|
|
87
|
+
"@dxos/ui-theme": "0.11.1",
|
|
88
|
+
"@dxos/ui-types": "0.11.1",
|
|
89
|
+
"@dxos/util": "0.11.1"
|
|
84
90
|
},
|
|
85
91
|
"devDependencies": {
|
|
86
92
|
"@automerge/automerge": "3.3.0-fragments.2",
|
|
87
|
-
"@automerge/automerge-repo": "2.6.0-subduction.
|
|
88
|
-
"@automerge/automerge-repo-network-broadcastchannel": "2.6.0-subduction.
|
|
93
|
+
"@automerge/automerge-repo": "2.6.0-subduction.40",
|
|
94
|
+
"@automerge/automerge-repo-network-broadcastchannel": "2.6.0-subduction.40",
|
|
89
95
|
"@effect/platform": "0.96.2",
|
|
90
96
|
"@types/chai": "^4.2.15",
|
|
91
97
|
"@types/chai-dom": "^1.11.0",
|
|
@@ -98,21 +104,21 @@
|
|
|
98
104
|
"happy-dom": "^20.0.0",
|
|
99
105
|
"jsdom": "^29.1.1",
|
|
100
106
|
"mocha": "^10.6.0",
|
|
101
|
-
"vite": "^8.
|
|
107
|
+
"vite": "^8.1.4",
|
|
102
108
|
"vite-plugin-top-level-await": "^1.6.0",
|
|
103
109
|
"vite-plugin-wasm": "^3.6.0",
|
|
104
|
-
"@dxos/
|
|
105
|
-
"@dxos/
|
|
106
|
-
"@dxos/
|
|
107
|
-
"@dxos/
|
|
108
|
-
"@dxos/
|
|
109
|
-
"@dxos/
|
|
110
|
-
"@dxos/
|
|
110
|
+
"@dxos/echo": "0.11.1",
|
|
111
|
+
"@dxos/keyboard": "0.11.1",
|
|
112
|
+
"@dxos/random": "0.11.1",
|
|
113
|
+
"@dxos/schema": "0.11.1",
|
|
114
|
+
"@dxos/storybook-utils": "0.11.1",
|
|
115
|
+
"@dxos/ui-theme": "0.11.1",
|
|
116
|
+
"@dxos/config": "0.11.1"
|
|
111
117
|
},
|
|
112
118
|
"peerDependencies": {
|
|
113
119
|
"@effect/platform": "0.96.2",
|
|
114
120
|
"effect": "3.21.4",
|
|
115
|
-
"@dxos/ui-theme": "0.
|
|
121
|
+
"@dxos/ui-theme": "^0.11.1"
|
|
116
122
|
},
|
|
117
123
|
"publishConfig": {
|
|
118
124
|
"access": "public"
|
package/src/defaults.ts
CHANGED
|
@@ -30,7 +30,7 @@ export const documentSlots: ThemeExtensionsOptions['slots'] = {
|
|
|
30
30
|
'dx-inline-size-container',
|
|
31
31
|
// Wider margin for web (vs. mobile).
|
|
32
32
|
'pointer-fine:max-w-[min(50rem,100%-4rem)] pointer-coarse:max-w-[min(50rem,100%-2rem)]',
|
|
33
|
-
'mx-auto! w-full',
|
|
33
|
+
'mx-auto! w-full py-3!',
|
|
34
34
|
),
|
|
35
35
|
},
|
|
36
36
|
};
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type Extension, Prec, StateEffect, StateField } from '@codemirror/state';
|
|
6
|
-
import { keymap } from '@codemirror/view';
|
|
7
|
-
|
|
8
|
-
import { log } from '@dxos/log';
|
|
5
|
+
import { EditorSelection, type Extension, Prec, StateEffect, StateField } from '@codemirror/state';
|
|
6
|
+
import { type EditorView, keymap } from '@codemirror/view';
|
|
9
7
|
|
|
10
8
|
type Bookmark = {
|
|
11
9
|
id: string;
|
|
@@ -17,6 +15,9 @@ export const addBookmark = StateEffect.define<Bookmark>();
|
|
|
17
15
|
export const removeBookmark = StateEffect.define<string>();
|
|
18
16
|
export const clearBookmarks = StateEffect.define<void>();
|
|
19
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Registers a bookmarks state field and Mod-Arrow navigation keys.
|
|
20
|
+
*/
|
|
20
21
|
export const bookmarks = (): Extension => {
|
|
21
22
|
return [
|
|
22
23
|
bookmarksField,
|
|
@@ -24,25 +25,34 @@ export const bookmarks = (): Extension => {
|
|
|
24
25
|
keymap.of([
|
|
25
26
|
{
|
|
26
27
|
key: 'Mod-ArrowUp',
|
|
27
|
-
run: (view) =>
|
|
28
|
-
const bookmarks = view.state.field(bookmarksField);
|
|
29
|
-
log('up', bookmarks);
|
|
30
|
-
return true;
|
|
31
|
-
},
|
|
28
|
+
run: (view) => navigateBookmark(view, 'up'),
|
|
32
29
|
},
|
|
33
30
|
{
|
|
34
31
|
key: 'Mod-ArrowDown',
|
|
35
|
-
run: (view) =>
|
|
36
|
-
const bookmarks = view.state.field(bookmarksField);
|
|
37
|
-
log('down', bookmarks);
|
|
38
|
-
return true;
|
|
39
|
-
},
|
|
32
|
+
run: (view) => navigateBookmark(view, 'down'),
|
|
40
33
|
},
|
|
41
34
|
]),
|
|
42
35
|
),
|
|
43
36
|
];
|
|
44
37
|
};
|
|
45
38
|
|
|
39
|
+
// Jump to the nearest bookmark before/after the caret. Declines the key (returns false) when there
|
|
40
|
+
// is none so it falls through to the default behavior rather than being silently swallowed.
|
|
41
|
+
const navigateBookmark = (view: EditorView, direction: 'up' | 'down'): boolean => {
|
|
42
|
+
const { bookmarks } = view.state.field(bookmarksField);
|
|
43
|
+
const pos = view.state.selection.main.head;
|
|
44
|
+
const target =
|
|
45
|
+
direction === 'up'
|
|
46
|
+
? [...bookmarks].reverse().find((bookmark) => bookmark.pos < pos)
|
|
47
|
+
: bookmarks.find((bookmark) => bookmark.pos > pos);
|
|
48
|
+
if (!target) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
view.dispatch({ selection: EditorSelection.cursor(target.pos), scrollIntoView: true });
|
|
53
|
+
return true;
|
|
54
|
+
};
|
|
55
|
+
|
|
46
56
|
type BookmarkFieldState = {
|
|
47
57
|
bookmarks: Bookmark[];
|
|
48
58
|
};
|
|
@@ -7,13 +7,16 @@ import { EditorView } from '@codemirror/view';
|
|
|
7
7
|
|
|
8
8
|
import { isNonNullable } from '@dxos/util';
|
|
9
9
|
|
|
10
|
-
import { documentId } from '
|
|
10
|
+
import { documentId } from '../state/selection';
|
|
11
11
|
|
|
12
12
|
export type ListenerOptions = {
|
|
13
13
|
onFocus?: (event: { id: string; focusing: boolean }) => void;
|
|
14
14
|
onChange?: (event: { id: string; text: string }) => void;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Fires callbacks on focus change and document change.
|
|
19
|
+
*/
|
|
17
20
|
export const listener = ({ onFocus, onChange }: ListenerOptions): Extension => {
|
|
18
21
|
return [
|
|
19
22
|
onFocus &&
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
import { Extension } from '@codemirror/state';
|
|
6
6
|
import { EditorView } from '@codemirror/view';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Adds vertical padding to each `.cm-line`.
|
|
10
|
+
*/
|
|
8
11
|
export function lineSpacing(verticalPadding = 2): Extension {
|
|
9
|
-
return
|
|
12
|
+
return lineSpacingTheme(verticalPadding);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const lineSpacingTheme = (verticalPadding: number): Extension =>
|
|
16
|
+
EditorView.theme({
|
|
10
17
|
'.cm-line': {
|
|
11
18
|
paddingTop: `${verticalPadding}px`,
|
|
12
19
|
paddingBottom: `${verticalPadding}px`,
|
|
13
20
|
},
|
|
14
21
|
});
|
|
15
|
-
}
|
|
@@ -43,16 +43,8 @@ export const submit = ({ fireIfEmpty = false, onSubmit }: SubmitOptions = {}): E
|
|
|
43
43
|
key: 'Shift-Enter',
|
|
44
44
|
preventDefault: true,
|
|
45
45
|
run: (view) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
from: view.state.selection.main.head,
|
|
49
|
-
insert: '\n',
|
|
50
|
-
},
|
|
51
|
-
selection: {
|
|
52
|
-
anchor: view.state.selection.main.head + 1,
|
|
53
|
-
head: view.state.selection.main.head + 1,
|
|
54
|
-
},
|
|
55
|
-
});
|
|
46
|
+
// Replace the selection (handles ranges and multiple cursors), not just the main head.
|
|
47
|
+
view.dispatch(view.state.replaceSelection('\n'));
|
|
56
48
|
return true;
|
|
57
49
|
},
|
|
58
50
|
},
|
|
@@ -35,11 +35,11 @@ const Test = ({ accessor }: { accessor: Doc.Accessor<TestType> }) => {
|
|
|
35
35
|
useEffect(() => {
|
|
36
36
|
const extensions = [
|
|
37
37
|
automerge(accessor),
|
|
38
|
-
EditorView.updateListener.of(() => {
|
|
39
|
-
if (view.state.doc.toString() === 'hello!') {
|
|
38
|
+
EditorView.updateListener.of((update) => {
|
|
39
|
+
if (update.view.state.doc.toString() === 'hello!') {
|
|
40
40
|
// Update editor.
|
|
41
|
-
view.dispatch({
|
|
42
|
-
changes: { from: view.state.doc.length - 1, insert: ' world' },
|
|
41
|
+
update.view.dispatch({
|
|
42
|
+
changes: { from: update.view.state.doc.length - 1, insert: ' world' },
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
}),
|
|
@@ -10,10 +10,9 @@ import { EditorView, ViewPlugin } from '@codemirror/view';
|
|
|
10
10
|
|
|
11
11
|
import { Doc } from '@dxos/echo-doc';
|
|
12
12
|
|
|
13
|
-
import { Cursor } from '
|
|
14
|
-
import { initialSync } from '../state';
|
|
13
|
+
import { Cursor } from '../../../util';
|
|
15
14
|
import { cursorConverter } from './cursor';
|
|
16
|
-
import { type State, isReconcile, reconcileAnnotation, updateHeadsEffect } from './defs';
|
|
15
|
+
import { type State, initialSync, isReconcile, reconcileAnnotation, updateHeadsEffect } from './defs';
|
|
17
16
|
import { Syncer } from './sync';
|
|
18
17
|
|
|
19
18
|
/**
|
|
@@ -71,7 +70,11 @@ export const automerge = (accessor: Doc.Accessor): Extension => {
|
|
|
71
70
|
constructor(private readonly _view: EditorView) {
|
|
72
71
|
accessor.handle.addListener('change', this._handleChange);
|
|
73
72
|
|
|
74
|
-
|
|
73
|
+
// Reconcile on attach: a compartment swap hands this extension a view whose content is the
|
|
74
|
+
// PREVIOUS document's. Deferred by a microtask only to escape the in-progress update cycle;
|
|
75
|
+
// rAF is not reliable for correctness (hidden/throttled frames never fire it), and until
|
|
76
|
+
// this replace runs every write maps view coordinates onto the wrong document.
|
|
77
|
+
queueMicrotask(() => {
|
|
75
78
|
const value = Doc.getValue<string>(accessor);
|
|
76
79
|
const current = this._view.state.doc.toString();
|
|
77
80
|
if (value !== current) {
|
|
@@ -6,7 +6,7 @@ import { fromCursor, toCursor } from '@dxos/echo-client';
|
|
|
6
6
|
import { Doc } from '@dxos/echo-doc';
|
|
7
7
|
import { log } from '@dxos/log';
|
|
8
8
|
|
|
9
|
-
import { type CursorConverter } from '
|
|
9
|
+
import { type CursorConverter } from '../../../util';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Maps between editor offsets and stable Automerge cursors for the text the {@link Doc.Accessor}
|
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
//
|
|
6
6
|
|
|
7
7
|
import { type Heads, type Prop } from '@automerge/automerge';
|
|
8
|
-
import { Annotation, type EditorState, StateEffect, type StateField,
|
|
8
|
+
import { Annotation, type EditorState, StateEffect, type StateField, Transaction } from '@codemirror/state';
|
|
9
|
+
|
|
10
|
+
/** Marks the transaction that performs the initial editor/document reconciliation. */
|
|
11
|
+
export const initialSync = Transaction.userEvent.of('initial.sync');
|
|
9
12
|
|
|
10
13
|
export type State = {
|
|
11
14
|
path: Prop[];
|
|
@@ -21,10 +21,9 @@ import { updateCodeMirror } from './update-codemirror';
|
|
|
21
21
|
export class Syncer {
|
|
22
22
|
private _pending = false;
|
|
23
23
|
|
|
24
|
-
// prettier-ignore
|
|
25
24
|
constructor(
|
|
26
25
|
private readonly _handle: Doc.Handle,
|
|
27
|
-
private readonly _state: StateField<State
|
|
26
|
+
private readonly _state: StateField<State>,
|
|
28
27
|
) {}
|
|
29
28
|
|
|
30
29
|
reconcile(view: EditorView, editor: boolean): void {
|
|
@@ -11,6 +11,10 @@ import { Doc } from '@dxos/echo-doc';
|
|
|
11
11
|
|
|
12
12
|
import { type State } from './defs';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Applies CodeMirror transactions to the Automerge document (via `changeAt` from the last synced
|
|
16
|
+
* heads) and returns the new heads, or undefined when there are no changes.
|
|
17
|
+
*/
|
|
14
18
|
export const updateAutomerge = (
|
|
15
19
|
field: StateField<State>,
|
|
16
20
|
handle: Doc.Handle,
|
|
@@ -17,6 +17,10 @@ import { type EditorView } from '@codemirror/view';
|
|
|
17
17
|
|
|
18
18
|
import { reconcileAnnotation } from './defs';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Applies Automerge patches to the CodeMirror view as changes, keeping the given selection mapped
|
|
22
|
+
* across them (marked with the reconcile annotation so the sync loop ignores the echoed transaction).
|
|
23
|
+
*/
|
|
20
24
|
export const updateCodeMirror = (view: EditorView, selection: EditorSelection, target: Prop[], patches: Patch[]) => {
|
|
21
25
|
for (const patch of patches) {
|
|
22
26
|
const changeSpec = handlePatch(patch, target, view.state);
|
|
@@ -90,7 +94,7 @@ const handlePut = (target: Prop[], patch: PutPatch, state: EditorState): Array<C
|
|
|
90
94
|
return []; // TODO(dmaretskyi): How to handle non-string values?
|
|
91
95
|
}
|
|
92
96
|
|
|
93
|
-
return [{ from: 0, to: length, insert: patch.value
|
|
97
|
+
return [{ from: 0, to: length, insert: patch.value }];
|
|
94
98
|
};
|
|
95
99
|
|
|
96
100
|
// If the path of the patch is of the form [path, <index>] then we know this is a path to a character
|
|
@@ -103,19 +103,18 @@ export class SpaceAwarenessProvider implements AwarenessProvider {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
update(position: AwarenessPosition | undefined): void {
|
|
106
|
-
invariant(this._postTask);
|
|
107
106
|
this._localState = {
|
|
108
107
|
peerId: this._peerId,
|
|
109
108
|
position,
|
|
110
109
|
info: this._info,
|
|
111
110
|
};
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
// Safe no-op if called before open() or during async teardown after close().
|
|
113
|
+
this._postTask?.schedule();
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
private _handleQueryMessage(): void {
|
|
117
|
-
|
|
118
|
-
this._postTask.schedule();
|
|
117
|
+
this._postTask?.schedule();
|
|
119
118
|
}
|
|
120
119
|
|
|
121
120
|
private _handlePostMessage(message: ProtocolMessage): void {
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import { Event } from '@dxos/async';
|
|
17
17
|
import { Context } from '@dxos/context';
|
|
18
18
|
|
|
19
|
-
import { Cursor, type CursorConverter, singleValueFacet } from '
|
|
19
|
+
import { Cursor, type CursorConverter, singleValueFacet } from '../../../util';
|
|
20
20
|
|
|
21
21
|
export interface AwarenessProvider {
|
|
22
22
|
remoteStateChange: Event<void>;
|
|
@@ -28,21 +28,6 @@ export interface AwarenessProvider {
|
|
|
28
28
|
update(position: AwarenessPosition | undefined): void;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
const dummyProvider: AwarenessProvider = {
|
|
32
|
-
remoteStateChange: new Event(),
|
|
33
|
-
|
|
34
|
-
open: () => {},
|
|
35
|
-
close: () => {},
|
|
36
|
-
|
|
37
|
-
getRemoteStates: () => [],
|
|
38
|
-
update: () => {},
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export const awarenessProvider = singleValueFacet<AwarenessProvider>(dummyProvider);
|
|
42
|
-
|
|
43
|
-
// TODO(dmaretskyi): Specify the users that actually changed. Currently, we recalculate positions for every user.
|
|
44
|
-
const RemoteSelectionChangedAnnotation = Annotation.define();
|
|
45
|
-
|
|
46
31
|
export type AwarenessPosition = {
|
|
47
32
|
anchor?: string;
|
|
48
33
|
head?: string;
|
|
@@ -73,6 +58,24 @@ export const awareness = (provider = dummyProvider): Extension => {
|
|
|
73
58
|
];
|
|
74
59
|
};
|
|
75
60
|
|
|
61
|
+
const dummyProvider: AwarenessProvider = {
|
|
62
|
+
remoteStateChange: new Event(),
|
|
63
|
+
|
|
64
|
+
open: () => {},
|
|
65
|
+
close: () => {},
|
|
66
|
+
|
|
67
|
+
getRemoteStates: () => [],
|
|
68
|
+
update: () => {},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Single-value facet supplying the AwarenessProvider consumed by the awareness extension.
|
|
73
|
+
*/
|
|
74
|
+
export const awarenessProvider = singleValueFacet<AwarenessProvider>(dummyProvider);
|
|
75
|
+
|
|
76
|
+
// TODO(dmaretskyi): Specify the users that actually changed. Currently, we recalculate positions for every user.
|
|
77
|
+
const RemoteSelectionChangedAnnotation = Annotation.define();
|
|
78
|
+
|
|
76
79
|
/**
|
|
77
80
|
* Generates selection decorations from remote peers.
|
|
78
81
|
*/
|
|
@@ -99,11 +99,7 @@ export const autocomplete = ({ onSuggest }: AutocompleteOptions = {}): Extension
|
|
|
99
99
|
|
|
100
100
|
return [
|
|
101
101
|
suggest,
|
|
102
|
-
|
|
103
|
-
'.cm-inline-suggestion': {
|
|
104
|
-
opacity: 0.4,
|
|
105
|
-
},
|
|
106
|
-
}),
|
|
102
|
+
styles,
|
|
107
103
|
|
|
108
104
|
Prec.highest(
|
|
109
105
|
keymap.of([
|
|
@@ -149,3 +145,9 @@ class InlineSuggestionWidget extends WidgetType {
|
|
|
149
145
|
return span;
|
|
150
146
|
}
|
|
151
147
|
}
|
|
148
|
+
|
|
149
|
+
const styles = EditorView.theme({
|
|
150
|
+
'.cm-inline-suggestion': {
|
|
151
|
+
opacity: 0.4,
|
|
152
|
+
},
|
|
153
|
+
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export type
|
|
5
|
+
export type CompletionContext = { line: string };
|
|
6
6
|
|
|
7
7
|
export type CompletionOptions = {
|
|
8
8
|
default?: string;
|
|
@@ -14,7 +14,7 @@ export type CompletionOptions = {
|
|
|
14
14
|
*/
|
|
15
15
|
export const staticCompletion =
|
|
16
16
|
(completions: string[], options: CompletionOptions = {}) =>
|
|
17
|
-
({ line }:
|
|
17
|
+
({ line }: CompletionContext) => {
|
|
18
18
|
if (line.length === 0 && options.default) {
|
|
19
19
|
return options.default;
|
|
20
20
|
}
|
|
@@ -13,6 +13,9 @@ export type MentionOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
// TODO(burdon): Can only have a single autocompletion. Merge configuration with autocomplete.
|
|
16
|
+
/**
|
|
17
|
+
* `@`-mention autocomplete completion source.
|
|
18
|
+
*/
|
|
16
19
|
export const mention = ({ debug, onSearch }: MentionOptions): Extension => {
|
|
17
20
|
return autocompletion({
|
|
18
21
|
// TODO(burdon): Not working.
|
|
@@ -7,7 +7,7 @@ import { type Extension } from '@codemirror/state';
|
|
|
7
7
|
import { Decoration, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';
|
|
8
8
|
|
|
9
9
|
import { clientRectsFor, flattenRect } from '../../util';
|
|
10
|
-
import { isBusy } from '../busy';
|
|
10
|
+
import { isBusy } from '../state/busy';
|
|
11
11
|
|
|
12
12
|
type Content = string | HTMLElement | ((view: EditorView) => HTMLElement);
|
|
13
13
|
|