edytor 1.0.0-rc.3 → 1.0.0
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/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +27 -137
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.js +7 -7
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +4 -17
- package/dist/cloudflare/DocumentRoom.js +3 -5
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +19 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +3 -32
- package/dist/cloudflare/room/storage.js +33 -108
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +39 -55
- package/dist/components/Block.svelte.d.ts +7 -5
- package/dist/components/Content.svelte +1 -5
- package/dist/components/Edytor.svelte +53 -96
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +2 -5
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +8 -13
- package/dist/crdt/data.js +30 -70
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/dnd/autoScroll.js +1 -2
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +34 -64
- package/dist/edytor.svelte.js +116 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +185 -181
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +1 -1
- package/dist/events/onDrop.js +27 -69
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +45 -67
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -14
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +81 -320
- package/dist/labels.js +180 -408
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +39 -94
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +190 -247
- package/dist/plugins/blockHandles/BlockHandles.svelte +27 -17
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +129 -185
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +18 -16
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +2 -1
- package/dist/plugins/blockHandles/geometry.js +6 -6
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +45 -38
- package/dist/plugins/chrome.js +59 -36
- package/dist/plugins/code/CodeHeader.svelte +3 -35
- package/dist/plugins/code/CodePlugin.svelte +50 -53
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +16 -125
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
- package/dist/plugins/code/code.css +5 -117
- package/dist/plugins/code/header.svelte.d.ts +2 -11
- package/dist/plugins/code/header.svelte.js +11 -38
- package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
- package/dist/plugins/code/languageMenu.svelte.js +30 -160
- package/dist/plugins/code/languages.d.ts +9 -19
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
- package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +16 -130
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
- package/dist/plugins/equation/EquationPlugin.svelte +109 -165
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +2 -2
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +37 -24
- package/dist/plugins/equation/equation.svelte.js +20 -94
- package/dist/plugins/equation/katex.js +6 -9
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +6 -167
- package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
- package/dist/plugins/image/ImagePlugin.svelte +45 -134
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -42
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -36
- package/dist/plugins/image/controls.svelte.js +43 -212
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +31 -26
- package/dist/plugins/index.js +29 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
- package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
- package/dist/plugins/marquee/marquee.js +4 -21
- package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
- package/dist/plugins/marquee/marqueePlugin.js +16 -15
- package/dist/plugins/media/AudioPlugin.svelte +3 -90
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
- package/dist/plugins/media/EmbedPlugin.svelte +82 -86
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -113
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +51 -90
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -99
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +36 -44
- package/dist/plugins/media/empty.svelte.js +41 -45
- package/dist/plugins/media/media.d.ts +90 -44
- package/dist/plugins/media/media.js +77 -99
- package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
- package/dist/plugins/media/urlPaste.svelte.js +32 -102
- package/dist/plugins/mention/MentionPlugin.svelte +42 -123
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +6 -25
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +47 -107
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +6 -25
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +13 -20
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +161 -177
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +33 -34
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.js +2 -2
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
- package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +40 -124
- package/dist/plugins/table/TablePlugin.svelte +106 -168
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +38 -141
- package/dist/plugins/table/chrome.svelte.js +339 -589
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +16 -152
- package/dist/plugins/table/table.d.ts +15 -14
- package/dist/plugins/table/table.js +22 -16
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
- package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
- package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +154 -59
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +8 -10
- package/dist/selection/pointer.svelte.js +32 -73
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +224 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +3 -8
- package/dist/selection/visibility.js +7 -5
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -55
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +3 -2
- package/dist/session/navigation.js +127 -168
- package/dist/session/ports.d.ts +2 -7
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +5 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +42 -47
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +2 -2
- package/dist/surface/lines.js +1 -1
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +52 -72
- package/dist/surface/overlay.d.ts +41 -3
- package/dist/surface/overlay.js +92 -37
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +263 -106
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -554
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -61
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -93
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
- package/dist/plugins/image/empty.svelte.d.ts +0 -56
- package/dist/plugins/image/empty.svelte.js +0 -83
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
- package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/labels.d.ts +0 -9
- package/dist/plugins/richtext/labels.js +0 -7
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/table/dragPreview.d.ts +0 -29
- package/dist/plugins/table/dragPreview.js +0 -103
- package/dist/plugins/toolbar/LinkCard.svelte +0 -122
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
- package/dist/plugins/toolbar/Toolbar.svelte +0 -349
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { PreviewCell } from '../surface/cells.js';
|
|
2
2
|
import { Suggestion } from '../session/suggestions.svelte.js';
|
|
3
|
+
/**
|
|
4
|
+
* A child in the flow: a block's id, a block suggestion's preview in the
|
|
5
|
+
* flow among its siblings (in place of a block), or a suggestion's own
|
|
6
|
+
* block, rendered from its preview cell, never registered (`Suggestion`).
|
|
7
|
+
*/
|
|
8
|
+
export type Kid = string | Suggestion | PreviewCell;
|
|
3
9
|
type $$ComponentProps = {
|
|
4
|
-
|
|
5
|
-
/** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
|
|
6
|
-
preview?: PreviewCell;
|
|
7
|
-
/** A block suggestion's preview in the flow among its siblings, in place of a block. */
|
|
8
|
-
suggestion?: Suggestion;
|
|
10
|
+
kid: Kid;
|
|
9
11
|
};
|
|
10
12
|
declare const Block: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
13
|
type Block = ReturnType<typeof Block>;
|
|
@@ -51,11 +51,7 @@
|
|
|
51
51
|
/** Segments are keyed causally (the preceding atom's id, or `start`), never by ordinal. */
|
|
52
52
|
const keyOf = (part: Part) => (part.kind === 'text' ? `s:${part.key}:${epoch}` : `a:${part.id}`);
|
|
53
53
|
|
|
54
|
-
const view = (segment: Segment) =>
|
|
55
|
-
edytor.pin.render(id, segment.key) ?? {
|
|
56
|
-
deltas: segmentDeltas(cell!, segment, transform),
|
|
57
|
-
empty: segment.text === ''
|
|
58
|
-
};
|
|
54
|
+
const view = (segment: Segment) => edytor.pin.shown(cell!, segment, transform);
|
|
59
55
|
|
|
60
56
|
/** A suggestion's text after this block's (`end`): its first block's content. */
|
|
61
57
|
const ghosts = $derived(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// `EdytorClass` alias: the emitted `.svelte.d.ts` also declares `Edytor`
|
|
3
3
|
// (the component + its bindable instance type) — an unaliased import
|
|
4
4
|
// collides there (TS2440 for bundler-resolution consumers).
|
|
5
|
-
import { Edytor as EdytorClass, useEdytor
|
|
5
|
+
import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
|
|
6
6
|
import {
|
|
7
7
|
SyncRefusedError,
|
|
8
8
|
type Awareness,
|
|
@@ -19,43 +19,28 @@
|
|
|
19
19
|
} from '../collaboration/awarenessSelection.js';
|
|
20
20
|
import { createIndexeddbSync, createWebsocketSync } from '../collaboration/providers.js';
|
|
21
21
|
export { EdytorClass as EdytorContext, useEdytor };
|
|
22
|
-
import type {
|
|
22
|
+
import type { Plugin } from '../plugins.js';
|
|
23
|
+
import { brandOf } from '../plugins/brand.js';
|
|
23
24
|
import type { PartialLabels } from '../labels.js';
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
type BlockHandlesOptions
|
|
29
|
-
} from '../plugins/blockHandles/blockHandlesPlugin.js';
|
|
30
|
-
import { isRichTextPlugin, richTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
|
|
31
|
-
import { arrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
|
|
32
|
-
import { imagePlugin, isImagePlugin } from '../plugins/image/ImagePlugin.svelte';
|
|
33
|
-
import {
|
|
34
|
-
isSuggestionsPlugin,
|
|
35
|
-
suggestionsPlugin
|
|
36
|
-
} from '../plugins/suggestions/suggestionsPlugin.js';
|
|
25
|
+
import { createRichTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
|
|
26
|
+
import { createArrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
|
|
27
|
+
import { createImagePlugin } from '../plugins/image/ImagePlugin.svelte';
|
|
28
|
+
import { createSuggestionsPlugin } from '../plugins/suggestions/suggestionsPlugin.js';
|
|
37
29
|
|
|
38
30
|
/**
|
|
39
|
-
* The plugins every view has unless it lists
|
|
31
|
+
* The plugins every view has unless it lists one of their kind (or sets
|
|
40
32
|
* `defaultPlugins={false}`), after the app's so its kinds and keys win:
|
|
41
33
|
* block moves, the suggestion UI, the image kind, then rich text.
|
|
42
34
|
*/
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
...(plugins.some(isRichTextPlugin) ? [] : [richTextPlugin])
|
|
35
|
+
const DEFAULTS = [
|
|
36
|
+
createArrowMovePlugin(),
|
|
37
|
+
createSuggestionsPlugin(),
|
|
38
|
+
createImagePlugin(),
|
|
39
|
+
createRichTextPlugin()
|
|
49
40
|
];
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*/
|
|
54
|
-
const withHandles = (plugins: Plugin[] | undefined, handles: boolean | BlockHandlesOptions) => {
|
|
55
|
-
const others = plugins?.filter((plugin) => !isBlockHandlesPlugin(plugin));
|
|
56
|
-
if (handles === false) return others;
|
|
57
|
-
if (typeof handles === 'object') return [createBlockHandlesPlugin(handles), ...(others ?? [])];
|
|
58
|
-
return plugins?.some(isBlockHandlesPlugin) ? plugins : [blockHandlesPlugin, ...(plugins ?? [])];
|
|
41
|
+
const withDefaults = (plugins: Plugin[] = []): Plugin[] => {
|
|
42
|
+
const listed = new Set(plugins.map(brandOf));
|
|
43
|
+
return [...plugins, ...DEFAULTS.filter((plugin) => !listed.has(brandOf(plugin)))];
|
|
59
44
|
};
|
|
60
45
|
/**
|
|
61
46
|
* The sync of a room id no dial can carry (`validRoomId`): no socket, the
|
|
@@ -80,10 +65,8 @@
|
|
|
80
65
|
children: []
|
|
81
66
|
};
|
|
82
67
|
|
|
83
|
-
export type EdytorProps =
|
|
68
|
+
export type EdytorProps = {
|
|
84
69
|
plugins?: Plugin[];
|
|
85
|
-
/** Show built-in block handles, with optional pointer dragging and activation callback. */
|
|
86
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
87
70
|
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
88
71
|
defaultPlugins?: boolean;
|
|
89
72
|
class?: string;
|
|
@@ -100,7 +83,7 @@
|
|
|
100
83
|
document?: EdytorDocument;
|
|
101
84
|
doc?: YDoc;
|
|
102
85
|
awareness?: Awareness;
|
|
103
|
-
/** The local author (id, name, color) of the document this view owns:
|
|
86
|
+
/** The local author (id, name, color) of the document this view owns: attribution and presence. */
|
|
104
87
|
actor?: DocumentActor;
|
|
105
88
|
/**
|
|
106
89
|
* What this view shares of its selection with peers (`share`: `'caret'`,
|
|
@@ -125,13 +108,12 @@
|
|
|
125
108
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
126
109
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
127
110
|
value?: JSONDoc;
|
|
128
|
-
placeholder?: Placeholder;
|
|
129
111
|
/**
|
|
130
|
-
* The words the
|
|
131
|
-
*
|
|
132
|
-
*
|
|
112
|
+
* The words the package shows and says in this view, over the English
|
|
113
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
114
|
+
* the commands' slash `keywords` by id. Read once.
|
|
133
115
|
*/
|
|
134
|
-
labels?: PartialLabels
|
|
116
|
+
labels?: PartialLabels;
|
|
135
117
|
translate?: 'yes' | 'no';
|
|
136
118
|
spellcheck?: boolean;
|
|
137
119
|
autocorrect?: 'on' | 'off';
|
|
@@ -195,7 +177,6 @@
|
|
|
195
177
|
|
|
196
178
|
let {
|
|
197
179
|
plugins: userPlugins,
|
|
198
|
-
blockHandles,
|
|
199
180
|
defaultPlugins = true,
|
|
200
181
|
class: className,
|
|
201
182
|
'aria-label': ariaLabel,
|
|
@@ -223,7 +204,6 @@
|
|
|
223
204
|
onChange,
|
|
224
205
|
onDocChange,
|
|
225
206
|
onSelectionChange,
|
|
226
|
-
placeholder,
|
|
227
207
|
labels,
|
|
228
208
|
translate = 'no',
|
|
229
209
|
spellcheck = true,
|
|
@@ -231,17 +211,12 @@
|
|
|
231
211
|
autocomplete = 'off',
|
|
232
212
|
autocapitalize = 'none',
|
|
233
213
|
inputmode,
|
|
234
|
-
enterkeyhint
|
|
235
|
-
...snippets
|
|
214
|
+
enterkeyhint
|
|
236
215
|
}: EdytorProps = $props();
|
|
237
216
|
|
|
238
217
|
const initialEdytorOptions = untrack(() => ({
|
|
239
|
-
snippets,
|
|
240
218
|
readonly,
|
|
241
|
-
plugins:
|
|
242
|
-
defaultPlugins ? withDefaults(userPlugins) : userPlugins,
|
|
243
|
-
blockHandles ?? true
|
|
244
|
-
),
|
|
219
|
+
plugins: defaultPlugins ? withDefaults(userPlugins) : userPlugins,
|
|
245
220
|
document: edytorDocument,
|
|
246
221
|
doc,
|
|
247
222
|
awareness,
|
|
@@ -253,7 +228,6 @@
|
|
|
253
228
|
onDocChange,
|
|
254
229
|
sync: !!sync || room !== undefined,
|
|
255
230
|
value,
|
|
256
|
-
placeholder,
|
|
257
231
|
labels
|
|
258
232
|
}));
|
|
259
233
|
|
|
@@ -354,25 +328,13 @@
|
|
|
354
328
|
$effect(edytor.surface.post);
|
|
355
329
|
$effect(edytor.projector.post);
|
|
356
330
|
|
|
357
|
-
const browserMutationGuardAttributes = $derived({
|
|
358
|
-
spellcheck,
|
|
359
|
-
autocorrect,
|
|
360
|
-
autocomplete,
|
|
361
|
-
autocapitalize,
|
|
362
|
-
inputmode,
|
|
363
|
-
enterkeyhint
|
|
364
|
-
});
|
|
365
|
-
|
|
366
331
|
/**
|
|
367
|
-
* The root's browser
|
|
368
|
-
*
|
|
369
|
-
*
|
|
332
|
+
* The root's browser hints, several of them unknown to Svelte's element
|
|
333
|
+
* types; one left unset is absent (a guessed default would override the
|
|
334
|
+
* browser's own choice).
|
|
370
335
|
*/
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
attributes: typeof browserMutationGuardAttributes
|
|
374
|
-
) => {
|
|
375
|
-
const apply = (next: typeof attributes) => {
|
|
336
|
+
const browserAttributes = (node: HTMLElement, attributes: Record<string, unknown>) => {
|
|
337
|
+
const apply = (next: Record<string, unknown>) => {
|
|
376
338
|
for (const [name, value] of Object.entries(next))
|
|
377
339
|
if (value === undefined) node.removeAttribute(name);
|
|
378
340
|
else node.setAttribute(name, String(value));
|
|
@@ -380,28 +342,25 @@
|
|
|
380
342
|
apply(attributes);
|
|
381
343
|
return { update: apply };
|
|
382
344
|
};
|
|
383
|
-
|
|
384
|
-
const nonNativeEditableBlockChromeSelection = (node: HTMLElement) => {
|
|
385
|
-
const { selection } = edytor;
|
|
386
|
-
// `selectstart` is the only event fired before a drag-selection
|
|
387
|
-
// begins — the guard keeps one from starting on non-editable
|
|
388
|
-
// chrome (markers, void/island chrome, plugin UI). A press on that
|
|
389
|
-
// chrome is the press's (`events/onFocus.ts`).
|
|
390
|
-
node.addEventListener('selectstart', selection.pointer.onSelectStart);
|
|
391
|
-
return {
|
|
392
|
-
destroy: () => node.removeEventListener('selectstart', selection.pointer.onSelectStart)
|
|
393
|
-
};
|
|
394
|
-
};
|
|
395
345
|
</script>
|
|
396
346
|
|
|
397
347
|
{#if edytor.synced}
|
|
398
348
|
<!-- The editing host is focusable (contenteditable): no tabindex of its own. -->
|
|
399
349
|
<!-- svelte-ignore a11y_aria_activedescendant_has_tabindex -->
|
|
350
|
+
<!-- `selectstart`, fired before a drag-selection begins, keeps one from starting on
|
|
351
|
+
non-editable chrome (a press there is the press's: `events/onFocus.ts`). -->
|
|
400
352
|
<div
|
|
401
353
|
class={className}
|
|
402
354
|
use:edytor.attach
|
|
403
|
-
|
|
404
|
-
use:
|
|
355
|
+
onselectstart={edytor.selection.pointer.onSelectStart}
|
|
356
|
+
use:browserAttributes={{
|
|
357
|
+
spellcheck,
|
|
358
|
+
autocorrect,
|
|
359
|
+
autocomplete,
|
|
360
|
+
autocapitalize,
|
|
361
|
+
inputmode,
|
|
362
|
+
enterkeyhint
|
|
363
|
+
}}
|
|
405
364
|
data-edytor
|
|
406
365
|
data-edytor-selection={edytor.selection.value.kind === 'blocks' ? 'blocks' : undefined}
|
|
407
366
|
contenteditable={!readonly}
|
|
@@ -419,8 +378,7 @@
|
|
|
419
378
|
{translate}
|
|
420
379
|
>
|
|
421
380
|
{#each edytor.suggestions.around(edytor.cells?.rootIds ?? []) as kid (kid)}<Block
|
|
422
|
-
|
|
423
|
-
suggestion={typeof kid === 'string' ? undefined : kid}
|
|
381
|
+
{kid}
|
|
424
382
|
/>{/each}<span
|
|
425
383
|
data-edytor-render-anchor
|
|
426
384
|
contenteditable="false"
|
|
@@ -433,19 +391,18 @@
|
|
|
433
391
|
<!-- The room's JSON, read-only, while this view's document hydrates. -->
|
|
434
392
|
<div data-edytor-snapshot style="display: contents">
|
|
435
393
|
<Snapshot
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
{...snippets}
|
|
394
|
+
{...{
|
|
395
|
+
value: snapshot,
|
|
396
|
+
readonly: true,
|
|
397
|
+
plugins: userPlugins,
|
|
398
|
+
defaultPlugins,
|
|
399
|
+
class: className,
|
|
400
|
+
labels,
|
|
401
|
+
'aria-label': ariaLabel,
|
|
402
|
+
'aria-labelledby': ariaLabelledby,
|
|
403
|
+
'aria-describedby': ariaDescribedby,
|
|
404
|
+
id
|
|
405
|
+
}}
|
|
449
406
|
/>
|
|
450
407
|
</div>
|
|
451
408
|
{/if}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import { Edytor as EdytorClass, useEdytor
|
|
1
|
+
import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
|
|
2
2
|
import { SyncRefusedError, type Awareness, type DocChange, type DocumentActor, type EdytorDocument, type YDoc } from '../crdt/index.js';
|
|
3
3
|
import type { EdytorSync, WebsocketSyncOptions } from '../collaboration/index.js';
|
|
4
4
|
import { type PresenceOptions } from '../collaboration/awarenessSelection.js';
|
|
5
5
|
export { EdytorClass as EdytorContext, useEdytor };
|
|
6
|
-
import type {
|
|
6
|
+
import type { Plugin } from '../plugins.js';
|
|
7
7
|
import type { PartialLabels } from '../labels.js';
|
|
8
|
-
|
|
9
|
-
export type EdytorProps = Snippets & {
|
|
8
|
+
export type EdytorProps = {
|
|
10
9
|
plugins?: Plugin[];
|
|
11
|
-
/** Show built-in block handles, with optional pointer dragging and activation callback. */
|
|
12
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
13
10
|
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
14
11
|
defaultPlugins?: boolean;
|
|
15
12
|
class?: string;
|
|
@@ -26,7 +23,7 @@ export type EdytorProps = Snippets & {
|
|
|
26
23
|
document?: EdytorDocument;
|
|
27
24
|
doc?: YDoc;
|
|
28
25
|
awareness?: Awareness;
|
|
29
|
-
/** The local author (id, name, color) of the document this view owns:
|
|
26
|
+
/** The local author (id, name, color) of the document this view owns: attribution and presence. */
|
|
30
27
|
actor?: DocumentActor;
|
|
31
28
|
/**
|
|
32
29
|
* What this view shares of its selection with peers (`share`: `'caret'`,
|
|
@@ -51,13 +48,12 @@ export type EdytorProps = Snippets & {
|
|
|
51
48
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
52
49
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
53
50
|
value?: JSONDoc;
|
|
54
|
-
placeholder?: Placeholder;
|
|
55
51
|
/**
|
|
56
|
-
* The words the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
52
|
+
* The words the package shows and says in this view, over the English
|
|
53
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
54
|
+
* the commands' slash `keywords` by id. Read once.
|
|
59
55
|
*/
|
|
60
|
-
labels?: PartialLabels
|
|
56
|
+
labels?: PartialLabels;
|
|
61
57
|
translate?: 'yes' | 'no';
|
|
62
58
|
spellcheck?: boolean;
|
|
63
59
|
autocorrect?: 'on' | 'off';
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { PresencePoint } from '../collaboration/awarenessSelection.js';
|
|
3
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
4
|
+
|
|
5
|
+
/** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
|
|
6
|
+
export type MarkedRange = { start: PresencePoint; end: PresencePoint; current?: boolean };
|
|
7
|
+
|
|
8
|
+
/** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
|
|
9
|
+
export const runOf = (
|
|
10
|
+
edytor: Edytor,
|
|
11
|
+
id: string,
|
|
12
|
+
offset: number,
|
|
13
|
+
length: number,
|
|
14
|
+
current?: boolean
|
|
15
|
+
): MarkedRange[] => {
|
|
16
|
+
const block = edytor.idToBlock.get(id);
|
|
17
|
+
const [start, end] = [block?.textAtOffset(offset), block?.textAtOffset(offset + length)];
|
|
18
|
+
return start && end ? [{ start, end, current }] : [];
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import { onMount } from 'svelte';
|
|
24
|
+
import { rangeRects, type RemoteSelectionRect } from '../collaboration/remoteSelection.js';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Runs of text marked in the overlay (never inside the host), one
|
|
28
|
+
* rectangle per line box, measured once per frame: the find matches, the
|
|
29
|
+
* text a `replace` suggestion removes, the comment being written. Each
|
|
30
|
+
* rectangle carries `data-edytor-<name>` (`data-current` on the current
|
|
31
|
+
* run's); the layer is `z`.
|
|
32
|
+
*/
|
|
33
|
+
let {
|
|
34
|
+
edytor,
|
|
35
|
+
name,
|
|
36
|
+
z,
|
|
37
|
+
ranges
|
|
38
|
+
}: { edytor: Edytor; name: string; z: number; ranges: () => MarkedRange[] } = $props();
|
|
39
|
+
|
|
40
|
+
let rects: (RemoteSelectionRect & { current?: boolean })[] = $state([]);
|
|
41
|
+
|
|
42
|
+
onMount(() =>
|
|
43
|
+
edytor.overlay.add((origin) => {
|
|
44
|
+
const next = ranges().flatMap(({ start, end, current }) =>
|
|
45
|
+
rangeRects(edytor, start, end, origin).map((rect) => ({ ...rect, current }))
|
|
46
|
+
);
|
|
47
|
+
if (next.length || rects.length) return () => (rects = next);
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
// What the runs read changed: the overlay measures again.
|
|
51
|
+
$effect(() => {
|
|
52
|
+
void ranges();
|
|
53
|
+
edytor.overlay.invalidate();
|
|
54
|
+
});
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<div data-edytor-ranges={name} contenteditable="false" aria-hidden="true" style:z-index={z}>
|
|
58
|
+
{#each rects as rect, index (index)}
|
|
59
|
+
<span
|
|
60
|
+
{...{ [`data-edytor-${name}`]: '' }}
|
|
61
|
+
data-current={rect.current || undefined}
|
|
62
|
+
style:left={`${rect.left}px`}
|
|
63
|
+
style:top={`${rect.top}px`}
|
|
64
|
+
style:width={`${rect.width}px`}
|
|
65
|
+
style:height={`${rect.height}px`}
|
|
66
|
+
></span>
|
|
67
|
+
{/each}
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<style>
|
|
71
|
+
[data-edytor-ranges] {
|
|
72
|
+
position: absolute;
|
|
73
|
+
left: 0;
|
|
74
|
+
top: 0;
|
|
75
|
+
pointer-events: none;
|
|
76
|
+
}
|
|
77
|
+
[data-edytor-ranges] > span {
|
|
78
|
+
position: absolute;
|
|
79
|
+
}
|
|
80
|
+
:global([data-edytor-find-match]) {
|
|
81
|
+
border-radius: 2px;
|
|
82
|
+
background: var(--edytor-find-match, rgb(255 212 0 / 0.3));
|
|
83
|
+
mix-blend-mode: multiply;
|
|
84
|
+
}
|
|
85
|
+
:global([data-edytor-find-match][data-current]) {
|
|
86
|
+
background: var(--edytor-find-current, rgb(255 166 0 / 0.55));
|
|
87
|
+
}
|
|
88
|
+
:global([data-edytor-suggestion-range]) {
|
|
89
|
+
background: var(--edytor-suggestion-removed, rgb(235 87 87 / 0.18));
|
|
90
|
+
border-bottom: 1px solid var(--edytor-suggestion-removed-line, rgb(235 87 87 / 0.6));
|
|
91
|
+
}
|
|
92
|
+
:global([data-edytor-comment-draft]) {
|
|
93
|
+
background: var(--edytor-comment-active, rgb(255 212 0 / 0.42));
|
|
94
|
+
mix-blend-mode: multiply;
|
|
95
|
+
}
|
|
96
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PresencePoint } from '../collaboration/awarenessSelection.js';
|
|
2
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
3
|
+
/** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
|
|
4
|
+
export type MarkedRange = {
|
|
5
|
+
start: PresencePoint;
|
|
6
|
+
end: PresencePoint;
|
|
7
|
+
current?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
|
|
10
|
+
export declare const runOf: (edytor: Edytor, id: string, offset: number, length: number, current?: boolean) => MarkedRange[];
|
|
11
|
+
type $$ComponentProps = {
|
|
12
|
+
edytor: Edytor;
|
|
13
|
+
name: string;
|
|
14
|
+
z: number;
|
|
15
|
+
ranges: () => MarkedRange[];
|
|
16
|
+
};
|
|
17
|
+
declare const Ranges: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
18
|
+
type Ranges = ReturnType<typeof Ranges>;
|
|
19
|
+
export default Ranges;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import type { Edytor } from '../edytor.svelte.js';
|
|
4
4
|
import type { Suggestion } from '../session/suggestions.svelte.js';
|
|
5
5
|
import { previewCells } from '../surface/cells.js';
|
|
6
|
+
import { editorEnglish, labelsOf } from '../labels.js';
|
|
6
7
|
import Block from './Block.svelte';
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -28,12 +29,12 @@
|
|
|
28
29
|
data-edytor-suggestion={suggestion.id}
|
|
29
30
|
data-status={suggestion.status}
|
|
30
31
|
contenteditable="false"
|
|
31
|
-
aria-label={suggestion.label ?? edytor.
|
|
32
|
+
aria-label={suggestion.label ?? labelsOf(edytor, 'editor', editorEnglish).suggestion}
|
|
32
33
|
role="group"
|
|
33
34
|
use:edytor.surface.preview={suggestion.id}
|
|
34
35
|
onmousedown={cancel}
|
|
35
36
|
>
|
|
36
|
-
{#each cells as cell (cell.id)}<Block
|
|
37
|
+
{#each cells as cell (cell.id)}<Block kid={cell} />{/each}
|
|
37
38
|
</div>
|
|
38
39
|
|
|
39
40
|
<style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { getContext } from 'svelte';
|
|
3
3
|
import type { Edytor } from '../edytor.svelte.js';
|
|
4
|
-
import type
|
|
4
|
+
import { rendersMark, type RenderDelta } from '../surface/cells.js';
|
|
5
5
|
import { Text } from '../text/text.svelte.js';
|
|
6
6
|
import Mark, { customAt } from './Mark.svelte';
|
|
7
7
|
import CustomMark from './CustomMark.svelte';
|
|
@@ -61,10 +61,7 @@
|
|
|
61
61
|
|
|
62
62
|
/** A delta's marks this view renders (an unknown mark renders its text only). */
|
|
63
63
|
const rendered = (delta: RenderDelta): RenderDelta => {
|
|
64
|
-
const known = delta.marks.filter(([name]) =>
|
|
65
|
-
const definition = edytor.marks.get(name);
|
|
66
|
-
return Boolean(definition?.snippet || definition?.tag);
|
|
67
|
-
});
|
|
64
|
+
const known = delta.marks.filter(([name]) => rendersMark(edytor.marks, name));
|
|
68
65
|
return known.length === delta.marks.length ? delta : { text: delta.text, marks: known };
|
|
69
66
|
};
|
|
70
67
|
const shown = $derived(empty ? FILLER : deltas);
|
package/dist/crdt/admission.d.ts
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* gate here, in the same order, with the same refusal semantics:
|
|
6
6
|
*
|
|
7
7
|
* 1. **`assertUsableDoc`** — is this a v14 engine doc at all
|
|
8
|
-
* ({@link UnsupportedDocError} `'foreign'`)
|
|
9
|
-
* layout that must be migrated rather than adopted (`'legacy'`)?
|
|
8
|
+
* ({@link UnsupportedDocError} `'foreign'`)?
|
|
10
9
|
* 2. **`assertSchema`** — does the committed schema manifest allow
|
|
11
10
|
* this build to own the doc ({@link SchemaMismatchError}:
|
|
12
11
|
* `'unversioned'` content with no version stamp, `'unsupported'`
|
|
@@ -43,8 +42,6 @@
|
|
|
43
42
|
* from the engine's pending store pending store discarded; a
|
|
44
43
|
* stamp that got in anyway (raw
|
|
45
44
|
* apply) makes the doc read-only
|
|
46
|
-
* v13 migration `bindLegacyReader` gate → rebuild via legacy DB byte-identical; no
|
|
47
|
-
* document-level `init` → `loadDocument` v14 generation activated
|
|
48
45
|
*
|
|
49
46
|
* TWO LAYERS. The transport layer (`providers/*`, `protocols/*`) proves
|
|
50
47
|
* the generation of every frame and container and refuses updates that
|
|
@@ -108,8 +105,6 @@ export declare class UndecodableUpdateError extends Error {
|
|
|
108
105
|
* - {@link UnsupportedDocError} `'foreign'` — not a v14 engine doc
|
|
109
106
|
* (foreign roots/engines may still attach *content* later; this is
|
|
110
107
|
* about doc shape);
|
|
111
|
-
* - {@link UnsupportedDocError} `'legacy'` — v13-era layout present;
|
|
112
|
-
* route through `crdt/migration` instead of attaching;
|
|
113
108
|
* - {@link SchemaMismatchError} `'unversioned' | 'unsupported' |
|
|
114
109
|
* 'foreign'` — a schema claim this build cannot own.
|
|
115
110
|
*
|
|
@@ -137,9 +132,7 @@ export declare const bindAdmission: (Y: EngineApi) => {
|
|
|
137
132
|
* Throws {@link UndecodableUpdateError} for payloads that fail to
|
|
138
133
|
* decode/integrate at all, then the usual typed refusals.
|
|
139
134
|
*/
|
|
140
|
-
admitUpdate: (update: Uint8Array | ReadonlyArray<Uint8Array
|
|
141
|
-
v2: Uint8Array;
|
|
142
|
-
}>, docName?: string, options?: {
|
|
135
|
+
admitUpdate: (update: Uint8Array | ReadonlyArray<Uint8Array>, docName?: string, options?: {
|
|
143
136
|
/** Prepare the scratch doc before anything is applied (e.g. its `gcFilter`). */
|
|
144
137
|
prepare?: (doc: YDoc) => void;
|
|
145
138
|
}) => YDoc;
|
package/dist/crdt/admission.js
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* gate here, in the same order, with the same refusal semantics:
|
|
6
6
|
*
|
|
7
7
|
* 1. **`assertUsableDoc`** — is this a v14 engine doc at all
|
|
8
|
-
* ({@link UnsupportedDocError} `'foreign'`)
|
|
9
|
-
* layout that must be migrated rather than adopted (`'legacy'`)?
|
|
8
|
+
* ({@link UnsupportedDocError} `'foreign'`)?
|
|
10
9
|
* 2. **`assertSchema`** — does the committed schema manifest allow
|
|
11
10
|
* this build to own the doc ({@link SchemaMismatchError}:
|
|
12
11
|
* `'unversioned'` content with no version stamp, `'unsupported'`
|
|
@@ -43,8 +42,6 @@
|
|
|
43
42
|
* from the engine's pending store pending store discarded; a
|
|
44
43
|
* stamp that got in anyway (raw
|
|
45
44
|
* apply) makes the doc read-only
|
|
46
|
-
* v13 migration `bindLegacyReader` gate → rebuild via legacy DB byte-identical; no
|
|
47
|
-
* document-level `init` → `loadDocument` v14 generation activated
|
|
48
45
|
*
|
|
49
46
|
* TWO LAYERS. The transport layer (`providers/*`, `protocols/*`) proves
|
|
50
47
|
* the generation of every frame and container and refuses updates that
|
|
@@ -92,8 +89,6 @@ export class UndecodableUpdateError extends Error {
|
|
|
92
89
|
* - {@link UnsupportedDocError} `'foreign'` — not a v14 engine doc
|
|
93
90
|
* (foreign roots/engines may still attach *content* later; this is
|
|
94
91
|
* about doc shape);
|
|
95
|
-
* - {@link UnsupportedDocError} `'legacy'` — v13-era layout present;
|
|
96
|
-
* route through `crdt/migration` instead of attaching;
|
|
97
92
|
* - {@link SchemaMismatchError} `'unversioned' | 'unsupported' |
|
|
98
93
|
* 'foreign'` — a schema claim this build cannot own.
|
|
99
94
|
*
|
|
@@ -138,10 +133,9 @@ export const bindAdmission = (Y) => ({
|
|
|
138
133
|
admitUpdate: (update, docName = 'loaded document', options = {}) => {
|
|
139
134
|
const doc = keepingReplaced(new Y.Doc());
|
|
140
135
|
options.prepare?.(doc);
|
|
141
|
-
const apply = (part) =>
|
|
136
|
+
const apply = (part) => Y.applyUpdate(doc, part);
|
|
142
137
|
try {
|
|
143
|
-
// Several updates
|
|
144
|
-
// transaction, with no merge pass.
|
|
138
|
+
// Several updates are applied in one transaction, with no merge pass.
|
|
145
139
|
if (update instanceof Uint8Array)
|
|
146
140
|
apply(update);
|
|
147
141
|
else
|