edytor 1.0.0-rc.3 → 2.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 +21 -39
- package/dist/block/block.svelte.d.ts +11 -84
- package/dist/block/block.svelte.js +30 -134
- 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 +11 -9
- package/dist/block/inlineBlock.svelte.js +18 -21
- 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 +25 -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/awarenessSelection.d.ts +22 -1
- package/dist/collaboration/awarenessSelection.js +42 -0
- 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 +42 -56
- package/dist/components/Block.svelte.d.ts +7 -5
- package/dist/components/Content.svelte +1 -5
- package/dist/components/Edytor.svelte +82 -99
- package/dist/components/Edytor.svelte.d.ts +16 -13
- package/dist/components/InlineBlock.svelte +1 -1
- 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 +18 -13
- package/dist/crdt/data.js +49 -71
- 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 +8 -5
- package/dist/crdt/doc/reads.js +49 -50
- 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 +32 -115
- package/dist/crdt/document.js +216 -302
- package/dist/crdt/edytor-doc.d.ts +689 -90
- package/dist/crdt/edytor-doc.js +74 -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 +32 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +8 -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/props.d.ts +32 -0
- package/dist/crdt/props.js +172 -0
- 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/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
- package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
- package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
- package/dist/dnd/placement.d.ts +200 -0
- package/dist/dnd/placement.js +426 -0
- 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 +46 -63
- package/dist/edytor.svelte.js +126 -181
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -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 +7 -1
- package/dist/events/onDrop.js +64 -78
- 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 +14 -1
- package/dist/events/onPaste.js +51 -76
- package/dist/index.d.ts +11 -15
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +83 -320
- package/dist/labels.js +181 -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 +21 -196
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
- package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
- 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 +130 -185
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +18 -16
- 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 +8 -38
- package/dist/plugins/code/CodePlugin.svelte +53 -56
- 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 -22
- package/dist/plugins/code/languages.js +39 -128
- package/dist/plugins/columns/ColumnResize.svelte +16 -27
- 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/gaps.d.ts +7 -5
- package/dist/plugins/columns/gaps.js +11 -6
- package/dist/plugins/columns/resize.svelte.d.ts +17 -54
- package/dist/plugins/columns/resize.svelte.js +80 -173
- 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 -172
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.css +7 -0
- 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/fileDrop.d.ts +28 -0
- package/dist/plugins/fileDrop.js +116 -0
- 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 +71 -151
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
- 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.css +17 -0
- 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 +30 -26
- package/dist/plugins/index.js +28 -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 +10 -9
- 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 +13 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -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 +45 -113
- package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -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 +200 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
- package/dist/plugins/media/UploadPreview.svelte +32 -0
- package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
- package/dist/plugins/media/VideoPlugin.svelte +14 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
- package/dist/plugins/media/empty.svelte.d.ts +47 -46
- package/dist/plugins/media/empty.svelte.js +67 -60
- package/dist/plugins/media/media.d.ts +97 -44
- package/dist/plugins/media/media.js +77 -99
- package/dist/plugins/media/upload.css +23 -0
- 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 +84 -126
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
- package/dist/plugins/mention/mention.css +6 -0
- 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 +154 -109
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
- package/dist/plugins/pageLink/pageLink.css +6 -0
- 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 +174 -183
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -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/richtext/richtext.css +6 -0
- 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 +340 -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 +55 -24
- package/dist/plugins/uploads.svelte.js +123 -50
- package/dist/plugins.d.ts +187 -66
- 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 +43 -39
- package/dist/session/attempt.js +62 -55
- package/dist/session/bindings.js +117 -145
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +208 -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 +16 -21
- package/dist/session/inputRules.d.ts +6 -3
- package/dist/session/inputRules.js +78 -83
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +43 -10
- package/dist/session/moves.js +101 -59
- package/dist/session/navigation.d.ts +10 -2
- package/dist/session/navigation.js +140 -172
- package/dist/session/ports.d.ts +2 -7
- package/dist/session/props.d.ts +25 -25
- package/dist/session/props.js +62 -159
- 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/uploads.d.ts +29 -0
- package/dist/session/uploads.js +10 -0
- 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 +272 -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/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
- /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
- /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
package/dist/crdt/edytor-doc.js
CHANGED
|
@@ -4,27 +4,30 @@
|
|
|
4
4
|
* This module binds the three proven engine layers over ONE Y.Doc into the
|
|
5
5
|
* single public surface the command layer and providers consume:
|
|
6
6
|
*
|
|
7
|
-
* - `placement/model.ts`
|
|
7
|
+
* - `placement/model.ts` — stable block registry + placement
|
|
8
8
|
* candidates; identity-preserving move/nest/split/merge.
|
|
9
|
-
* - `text/model.ts`
|
|
9
|
+
* - `text/model.ts` — stable backing texts delimited by stream
|
|
10
10
|
* boundaries + merge claims; split/merge never copy text.
|
|
11
|
-
* - `text/runs.ts` (`
|
|
11
|
+
* - `text/runs.ts` (`indexOf`) — the maintained run view: immutable run
|
|
12
12
|
* snapshots, structural sharing, the change report.
|
|
13
13
|
*
|
|
14
|
-
* This module is the wiring: `
|
|
14
|
+
* This module is the wiring: `docFacade` builds a facade's parts, each a
|
|
15
15
|
* module under `doc/` taking an explicit context — the parts before it —
|
|
16
|
-
* and assembles the facade object.
|
|
16
|
+
* and assembles the facade object. An editor's documents use it directly;
|
|
17
|
+
* the public binding (`bindDocModel`, `bindEdytorDoc`) adds the engine
|
|
18
|
+
* layers as objects (`model`, `text`, `runs`) and the room's tasks, so an
|
|
19
|
+
* editor's graph holds none of what only they reach.
|
|
17
20
|
*
|
|
18
21
|
* - `doc/gate.ts` — the schema manifest and gate (module-level);
|
|
19
22
|
* `doc/seed.ts` — the version record and the deterministic seed;
|
|
20
23
|
* `doc/types.ts` — the public types; `doc/plan.ts` — op results, a plan's
|
|
21
24
|
* effect, ingress normalization.
|
|
22
|
-
* - `doc/reads.ts` (`DocBase`: the doc, its engine
|
|
25
|
+
* - `doc/reads.ts` (`DocBase`: the doc, its engine, its index and
|
|
23
26
|
* roles) — the reads, roles and document order; `doc/capability.ts` —
|
|
24
27
|
* structural capability (`canPlace`, `fits`, `canMerge`, the island and
|
|
25
28
|
* void rules).
|
|
26
|
-
* - `doc/funnel.ts` — the write funnel (`write`, `apply`, attribution
|
|
27
|
-
*
|
|
29
|
+
* - `doc/funnel.ts` — the write funnel (`write`, `apply`, attribution);
|
|
30
|
+
* `doc/events.ts` — `onChange`; `doc/history.ts` —
|
|
28
31
|
* `createUndoManager`; `doc/anchors.ts` — caret anchors.
|
|
29
32
|
* - `doc/steps.ts` — the step writers every op composes (ranks, settle,
|
|
30
33
|
* emptying, dissolving); the prepared op families over them
|
|
@@ -45,20 +48,18 @@
|
|
|
45
48
|
*/
|
|
46
49
|
import { setMarkEdges } from './text/marks.js';
|
|
47
50
|
import { keepingReplaced } from './incarnations.js';
|
|
48
|
-
import {
|
|
49
|
-
import { bindModel } from './placement/model.js';
|
|
51
|
+
import { SCHEMA } from './schema.js';
|
|
52
|
+
import { bindModel, blockText, crdtId, listBlockIds, project, resolveBlock } from './placement/model.js';
|
|
50
53
|
import { bindText } from './text/model.js';
|
|
51
54
|
import { bindDeletes } from './text/deletes.js';
|
|
52
55
|
import { bindPurge, readHorizon } from './purge.js';
|
|
53
56
|
import { restoreDocument } from './restore.js';
|
|
54
|
-
import { bindRuns } from './text/runs.js';
|
|
55
|
-
import { bindNodes } from './nodes.js';
|
|
57
|
+
import { bindRuns, indexOf } from './text/runs.js';
|
|
56
58
|
import { bindBlockAttribution, blockAttributionOf } from './attribution/block.js';
|
|
57
59
|
import { rangeDeleteOps } from './rangeDelete.js';
|
|
58
60
|
import { flowOps } from './flow.js';
|
|
59
|
-
import { sanitizeSpec } from '../utils/json.js';
|
|
60
61
|
import { assertSchema, assertUsableDoc, checkSchema, isInitialized, META_KEY, registryEmpty, SCHEMA_NAME, SCHEMA_VERSION, SchemaMismatchError, schemaVersion } from './doc/gate.js';
|
|
61
|
-
import { bindSeed } from './doc/seed.js';
|
|
62
|
+
import { bindSeed, restore } from './doc/seed.js';
|
|
62
63
|
import { applied, ref } from './doc/plan.js';
|
|
63
64
|
import { docReads } from './doc/reads.js';
|
|
64
65
|
import { docCapability } from './doc/capability.js';
|
|
@@ -73,40 +74,25 @@ import { splitMergeOps } from './doc/split-merge.js';
|
|
|
73
74
|
import { deleteOps } from './doc/delete.js';
|
|
74
75
|
import { metaOps } from './doc/meta.js';
|
|
75
76
|
import { contentOps } from './doc/content.js';
|
|
76
|
-
import { tableOps } from './doc/table.js';
|
|
77
77
|
// ── schema manifest and gate (`doc/gate.ts`) ────────────────────────────
|
|
78
78
|
export { SCHEMA };
|
|
79
79
|
export { assertSchema, assertUsableDoc, checkSchema, isInitialized, META_KEY, registryEmpty, SCHEMA_NAME, SCHEMA_VERSION, SchemaMismatchError, schemaVersion };
|
|
80
80
|
export { UnsupportedDocError } from './doc/gate.js';
|
|
81
81
|
export { SEED_ORIGIN } from './doc/seed.js';
|
|
82
|
-
export { EdytorDocDisposedError
|
|
82
|
+
export { EdytorDocDisposedError } from './doc/funnel.js';
|
|
83
83
|
export { DEFAULT_HISTORY_LIMIT } from './doc/history.js';
|
|
84
84
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* never imports vendor `.js` (see `engine-api.ts`).
|
|
85
|
+
* The per-doc facade factory over the engine `Y` (the editor's documents
|
|
86
|
+
* use it directly; {@link bindDocModel} is the public binding around it).
|
|
88
87
|
*/
|
|
89
|
-
export const
|
|
90
|
-
// The doc's index (`text/runs.ts`) is the one owner of derived state:
|
|
91
|
-
// commands, runs, anchors, the change report and rendering read it.
|
|
92
|
-
const R = bindRuns(Y);
|
|
93
|
-
const M = bindModel(Y);
|
|
94
|
-
const T = bindText(Y);
|
|
88
|
+
export const docFacade = (Y, layers) => {
|
|
95
89
|
const D = bindDeletes(Y);
|
|
96
|
-
const P = bindPurge(Y);
|
|
97
|
-
/** Each history's release of all its steps (`releaseHistory`). */
|
|
98
|
-
const releasers = new WeakMap();
|
|
99
90
|
// Compact per-block attribution writes (`attribution/block.ts`).
|
|
100
91
|
// One bound instance per engine binding; its suppression memory is
|
|
101
92
|
// per-doc (WeakMap-keyed), so facades on the same doc share it.
|
|
102
93
|
const BA = bindBlockAttribution(Y);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// `assertSchema` are module-level (see above) — pure doc reads shared by
|
|
106
|
-
// providers and migration without re-binding.
|
|
107
|
-
const { restore, init, seed } = bindSeed(Y, M, BA);
|
|
108
|
-
// ── per-doc facade ──────────────────────────────────────────────────
|
|
109
|
-
const create = (doc, config = {}) => {
|
|
94
|
+
const { init, seed } = bindSeed(Y, BA);
|
|
95
|
+
return (doc, config = {}) => {
|
|
110
96
|
keepingReplaced(doc);
|
|
111
97
|
// Document-boundary check — foreign (v13-engine) and legacy-schema docs
|
|
112
98
|
// fail fast here rather than inside the runs view (see assertUsableDoc).
|
|
@@ -116,7 +102,7 @@ export const bindEdytorDoc = (Y) => {
|
|
|
116
102
|
const defaultType = config.defaultType ?? 'paragraph';
|
|
117
103
|
const defaultChildOf = config.defaultChildOf ?? (() => undefined);
|
|
118
104
|
const rendersContentOf = config.rendersContent ?? (() => true);
|
|
119
|
-
const runsView =
|
|
105
|
+
const runsView = indexOf(doc);
|
|
120
106
|
// The role table — the display and every guard below ask it.
|
|
121
107
|
// a void kind displays no children — the index sheds them into its
|
|
122
108
|
// slot at read time, so a child a peer nests or splits under a block
|
|
@@ -146,16 +132,11 @@ export const bindEdytorDoc = (Y) => {
|
|
|
146
132
|
if (config.roleOf)
|
|
147
133
|
runsView.roles(roles);
|
|
148
134
|
// The facade's parts, each over the ones before it (`doc/*`).
|
|
149
|
-
const base = { Y, doc,
|
|
135
|
+
const base = { Y, doc, runsView, roles, roleOf, rendersContentOf };
|
|
150
136
|
const reads = { ...base, ...docReads(base) };
|
|
151
137
|
const shape = { ...reads, ...docCapability(reads) };
|
|
152
|
-
const { blockJSON, view, blockTypeOf, blockDataOf, docData, dataItemIds, childrenIds, positionOf, pathOf, ancestorsOf, slotOf, isVoid, isIsland, isLines, islandOf, insideIsland, isLayout, isLayoutItem,
|
|
153
|
-
const { canPlace,
|
|
154
|
-
// Lineage ring watermark repair — concurrent partition appends can
|
|
155
|
-
// merge a ring past every writer's `depth`; this converges the
|
|
156
|
-
// stored ring back to the entries' own watermark after remote
|
|
157
|
-
// applies. Once per doc, doc-lifetime, no-op when nothing is over.
|
|
158
|
-
BA.attachRingTrim(doc);
|
|
138
|
+
const { blockJSON, view, blockTypeOf, blockDataOf, docData, dataItemIds, dataPreview, childrenIds, positionOf, pathOf, ancestorsOf, slotOf, isVoid, isIsland, isLines, islandOf, insideIsland, isLayout, isLayoutItem, order, compare, next, previous, displayLength, contentItems, hasBlock, live } = reads;
|
|
139
|
+
const { canPlace, fits, nestParent, canMerge, defaultChild } = shape;
|
|
159
140
|
const funnel = writeFunnel({ ...reads, BA, config });
|
|
160
141
|
const { write, apply } = funnel;
|
|
161
142
|
const events = docEvents({ runsView });
|
|
@@ -164,10 +145,10 @@ export const bindEdytorDoc = (Y) => {
|
|
|
164
145
|
funnel.dispose();
|
|
165
146
|
events.close();
|
|
166
147
|
};
|
|
167
|
-
const { createUndoManager } = docHistory({ ...base, ...funnel, D,
|
|
148
|
+
const { createUndoManager } = docHistory({ ...base, ...funnel, D, init });
|
|
168
149
|
const { anchorAt, followUndo, resolveAnchor } = docAnchors(reads);
|
|
169
150
|
const steps = { ...shape, ...planSteps(shape) };
|
|
170
|
-
const {
|
|
151
|
+
const { plan } = steps;
|
|
171
152
|
// The prepared op families (`OpsContext`: the reads, capability and step writers).
|
|
172
153
|
const { insertBlocks, moveBlocks, unNestBlocks, unNestBlock, landingOf, liftOut, duplicateBlock } = moveOps(steps);
|
|
173
154
|
const { besideAt, placeBeside, wrapInLayout } = layoutOps(steps);
|
|
@@ -175,65 +156,12 @@ export const bindEdytorDoc = (Y) => {
|
|
|
175
156
|
const { deleteBlocks, deleteBlock } = deleteOps(steps);
|
|
176
157
|
const { dataSteps, replaceData, setBlockType, patchData, setBlock } = metaOps(steps);
|
|
177
158
|
const { insertText, deleteText, formatRange, clearMarks, insertInline, removeInline } = contentOps(steps);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const context = {
|
|
181
|
-
ref,
|
|
182
|
-
refused: REFUSED,
|
|
183
|
-
plan,
|
|
184
|
-
order: () => view().order,
|
|
185
|
-
positionOf,
|
|
186
|
-
ancestorsOf: (id) => ancestorsOf(id),
|
|
187
|
-
childrenIds,
|
|
188
|
-
displayLength,
|
|
189
|
-
contentTarget,
|
|
190
|
-
rendersContent,
|
|
191
|
-
canMerge,
|
|
192
|
-
isIsland,
|
|
193
|
-
isLines,
|
|
194
|
-
defaultChild,
|
|
195
|
-
fitted,
|
|
196
|
-
move,
|
|
197
|
-
retype: (id, type) => attr(id, TYPE, type),
|
|
198
|
-
isContainer,
|
|
199
|
-
emptiable,
|
|
200
|
-
settle,
|
|
201
|
-
remove,
|
|
202
|
-
insertBlocks,
|
|
203
|
-
sanitize: sanitizeSpec,
|
|
204
|
-
collides: (specs) => M.collides(doc, specs),
|
|
205
|
-
isVoid,
|
|
206
|
-
roleOf: (kind) => ({
|
|
207
|
-
void: roles.childless(kind),
|
|
208
|
-
island: roles.island(kind),
|
|
209
|
-
rendersContent: roles.rendersContent(kind),
|
|
210
|
-
layout: roles.layout(kind)
|
|
211
|
-
}),
|
|
212
|
-
insideItem: (id) => insideItem(id),
|
|
213
|
-
tailOf: (id) => ({ type: kindToCopy(id), data: blockDataOf(id) }),
|
|
214
|
-
ranksFor,
|
|
215
|
-
insertRanks: (parent, index, count) => ranksFor(parent, index, count, [], true),
|
|
216
|
-
pieceRanks,
|
|
217
|
-
redata: (id, data) => dataSteps(id, replaceData(data)) ?? [],
|
|
218
|
-
deleteBlocks: (ids, filled) => deleteBlocks(ids, false, filled),
|
|
219
|
-
dissolving: (gone, leaving, writes) => dissolving(new Set(gone), leaving, writes),
|
|
220
|
-
tableOf: (id) => reads.tableOf(id),
|
|
221
|
-
isTableCell: (id) => reads.isTableCell(id),
|
|
222
|
-
tableKind: (kind) => roles.table(kind) !== undefined
|
|
223
|
-
? 'table'
|
|
224
|
-
: reads.isRowKind(kind)
|
|
225
|
-
? 'row'
|
|
226
|
-
: reads.isCellKind(kind)
|
|
227
|
-
? 'cell'
|
|
228
|
-
: undefined
|
|
229
|
-
};
|
|
159
|
+
/** What range deletion and flow placement compose: the step writers and the ops. */
|
|
160
|
+
const ops = { ...steps, insertBlocks, deleteBlocks, dataSteps, replaceData };
|
|
230
161
|
/** Every document op, prepared — `apply(prepare.op(…))` is the op. */
|
|
231
162
|
const prepare = {
|
|
232
163
|
insertBlocks,
|
|
233
|
-
insertBlock: (dest, spec) => insertBlocks(dest, [spec]),
|
|
234
164
|
moveBlocks,
|
|
235
|
-
/** Relocate `id` — identity preserved. */
|
|
236
|
-
moveBlock: (id, dest) => moveBlocks([id], dest),
|
|
237
165
|
/**
|
|
238
166
|
* Move `id` to the last position under `parent` — under a container
|
|
239
167
|
* it is no item of, under its last item (`nestParent`: Tab after a list).
|
|
@@ -255,25 +183,17 @@ export const bindEdytorDoc = (Y) => {
|
|
|
255
183
|
setBlock,
|
|
256
184
|
setBlockType,
|
|
257
185
|
patchData,
|
|
258
|
-
/** Replace a block's `data`: a patch of its root. */
|
|
259
|
-
setBlockData: (id, data) => patchData(id, [{ path: [], value: data }]),
|
|
260
186
|
duplicateBlock,
|
|
261
187
|
insertText,
|
|
262
188
|
deleteText,
|
|
263
189
|
formatRange,
|
|
264
|
-
setMark: (id, offset, length, name, value) => formatRange(id, offset, length, { [name]: value }),
|
|
265
|
-
unsetMark: (id, offset, length, name) => formatRange(id, offset, length, { [name]: null }),
|
|
266
190
|
clearMarks,
|
|
267
191
|
insertInline,
|
|
268
192
|
removeInline,
|
|
269
|
-
/** Replace an inline atom's `data`: a patch of its root. */
|
|
270
|
-
setInlineData: (id, inlineId, data) => patchData({ block: id, atom: inlineId }, [{ path: [], value: data }]),
|
|
271
193
|
/** Delete a block selection — one plan; only the members leave (`deleteBlocks` above). */
|
|
272
194
|
deleteBlocks: (ids) => deleteBlocks(ids),
|
|
273
|
-
|
|
274
|
-
...
|
|
275
|
-
...rangeDeleteOps(context),
|
|
276
|
-
...flowOps(context)
|
|
195
|
+
...rangeDeleteOps(ops),
|
|
196
|
+
...flowOps(ops)
|
|
277
197
|
};
|
|
278
198
|
/**
|
|
279
199
|
* Plans prepared at one version, as one plan (refused if any part is;
|
|
@@ -306,14 +226,6 @@ export const bindEdytorDoc = (Y) => {
|
|
|
306
226
|
// ── facade object ─────────────────────────────────────────────────
|
|
307
227
|
/** A read taking an id first: the id normalizes at ingress. */
|
|
308
228
|
const byRef = (f) => (id, ...rest) => f(ref(id), ...rest);
|
|
309
|
-
/**
|
|
310
|
-
* The typed-node surface (`document.block(id)` handles — see
|
|
311
|
-
* `nodes.ts`). Created lazily on first use; `bindNodes` caches one
|
|
312
|
-
* handle per block id, so repeated `facade.block(id)` calls return
|
|
313
|
-
* the same instance.
|
|
314
|
-
*/
|
|
315
|
-
let nodeApi;
|
|
316
|
-
const nodes = () => (nodeApi ??= bindNodes(facade));
|
|
317
229
|
const facade = {
|
|
318
230
|
// lifecycle
|
|
319
231
|
init: (opts) => write(() => init(doc, opts)),
|
|
@@ -332,16 +244,8 @@ export const bindEdytorDoc = (Y) => {
|
|
|
332
244
|
assertSchema: () => assertSchema(doc),
|
|
333
245
|
dispose,
|
|
334
246
|
createUndoManager,
|
|
335
|
-
/**
|
|
336
|
-
* Drop every step of a history `createUndoManager` made (undo and
|
|
337
|
-
* redo) and release what they kept for their undo, as the history
|
|
338
|
-
* limit does: the engine collects that content now, the doc's
|
|
339
|
-
* `gcFilter` still deciding. The room's validation history runs
|
|
340
|
-
* it after each frame.
|
|
341
|
-
*/
|
|
342
|
-
releaseHistory: (um) => releasers.get(um)?.(),
|
|
343
247
|
// reads — every id argument normalizes at ingress
|
|
344
|
-
project: () =>
|
|
248
|
+
project: () => project(doc),
|
|
345
249
|
toJSON,
|
|
346
250
|
blockJSON: byRef(blockJSON),
|
|
347
251
|
childrenIds: byRef(childrenIds),
|
|
@@ -352,20 +256,21 @@ export const bindEdytorDoc = (Y) => {
|
|
|
352
256
|
pathOf: byRef(pathOf),
|
|
353
257
|
parentOf: byRef((id) => positionOf(id)?.parent ?? null),
|
|
354
258
|
ancestorsOf: byRef((id) => ancestorsOf(id)),
|
|
355
|
-
listBlockIds: () =>
|
|
356
|
-
blockText: byRef((id) =>
|
|
259
|
+
listBlockIds: () => listBlockIds(doc),
|
|
260
|
+
blockText: byRef((id) => blockText(doc, id)),
|
|
357
261
|
blockTypeOf: byRef(blockTypeOf),
|
|
358
262
|
blockDataOf: byRef(blockDataOf),
|
|
359
263
|
docData,
|
|
360
264
|
dataItemIds,
|
|
265
|
+
dataPreview,
|
|
361
266
|
/**
|
|
362
267
|
* Compact per-block attribution (`{createdBy, contributors,
|
|
363
268
|
* lastChangedBy}`), or `undefined` for unauthored/system blocks.
|
|
364
269
|
* O(1) per call; live-replicated (remote values read the same).
|
|
365
270
|
*/
|
|
366
271
|
blockAttribution: byRef((id) => blockAttributionOf(doc, id)),
|
|
367
|
-
crdtId: byRef((id) =>
|
|
368
|
-
resolveBlock: byRef((id) =>
|
|
272
|
+
crdtId: byRef((id) => crdtId(doc, id)),
|
|
273
|
+
resolveBlock: byRef((id) => resolveBlock(doc, id)),
|
|
369
274
|
displayLength: byRef(displayLength),
|
|
370
275
|
contentItems: byRef(contentItems),
|
|
371
276
|
hasBlock: byRef(hasBlock),
|
|
@@ -433,10 +338,10 @@ export const bindEdytorDoc = (Y) => {
|
|
|
433
338
|
// that batch several ops into one undo step / one event)
|
|
434
339
|
transact: (fn, origin) => write(() => doc.transact(fn, origin)),
|
|
435
340
|
// escape hatch for the history and debugging — the bound engine layers.
|
|
436
|
-
model:
|
|
437
|
-
text:
|
|
341
|
+
model: layers.model,
|
|
342
|
+
text: layers.text,
|
|
438
343
|
runsView,
|
|
439
|
-
// ── model-state version
|
|
344
|
+
// ── model-state version ─────────────────────────────
|
|
440
345
|
/**
|
|
441
346
|
* The index version — bumps on every fold that changed derived
|
|
442
347
|
* state, mid-transaction writes included. Read surfaces that
|
|
@@ -445,18 +350,24 @@ export const bindEdytorDoc = (Y) => {
|
|
|
445
350
|
*/
|
|
446
351
|
get version() {
|
|
447
352
|
return runsView.version();
|
|
448
|
-
}
|
|
449
|
-
/**
|
|
450
|
-
* The typed handle over one document block — the domain command
|
|
451
|
-
* surface (see `nodes.ts` for the contract: display offsets,
|
|
452
|
-
* transaction-aware reads, dead-safe). Handles are cached per
|
|
453
|
-
* id; a handle for an absent id reports `exists`/`live`/`visible`
|
|
454
|
-
* false and refuses ops.
|
|
455
|
-
*/
|
|
456
|
-
block: (id) => nodes().block(ref(id))
|
|
353
|
+
}
|
|
457
354
|
};
|
|
458
355
|
return facade;
|
|
459
356
|
};
|
|
357
|
+
};
|
|
358
|
+
/**
|
|
359
|
+
* Bind the assembled model to a concrete engine surface. `Y` must be the
|
|
360
|
+
* vendored v14 module — injected so this file type-checks structurally and
|
|
361
|
+
* never imports vendor `.js` (see `engine-api.ts`). A document composes
|
|
362
|
+
* this binding; {@link bindEdytorDoc} adds the room's purge and restore.
|
|
363
|
+
*/
|
|
364
|
+
export const bindDocModel = (Y) => {
|
|
365
|
+
const M = bindModel(Y);
|
|
366
|
+
const T = bindText(Y);
|
|
367
|
+
const R = bindRuns(Y);
|
|
368
|
+
const D = bindDeletes(Y);
|
|
369
|
+
const { init, seed } = bindSeed(Y, bindBlockAttribution(Y));
|
|
370
|
+
const create = docFacade(Y, { model: M, text: T });
|
|
460
371
|
return {
|
|
461
372
|
/** The schema manifest constants table. */
|
|
462
373
|
SCHEMA,
|
|
@@ -491,12 +402,26 @@ export const bindEdytorDoc = (Y) => {
|
|
|
491
402
|
* what an editing replica keeps.
|
|
492
403
|
*/
|
|
493
404
|
keepCopies: (doc) => void D.scope(doc),
|
|
405
|
+
/** The bound engine layers (same instances the facades use). */
|
|
406
|
+
model: M,
|
|
407
|
+
text: T,
|
|
408
|
+
runs: R
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
/**
|
|
412
|
+
* {@link bindDocModel} with the room's tasks: only the public binding
|
|
413
|
+
* (`bindCrdt(Y).doc`) reaches them, so an editor's graph holds neither.
|
|
414
|
+
*/
|
|
415
|
+
export const bindEdytorDoc = (Y) => {
|
|
416
|
+
const { model, text, runs, ...binding } = bindDocModel(Y);
|
|
417
|
+
// The spread last: the declared type lists the binding first, as before.
|
|
418
|
+
return {
|
|
494
419
|
/**
|
|
495
420
|
* Purge from `doc` what was deleted before `horizon` (`room.purge.what`): real deletes, inside the caller's transaction,
|
|
496
421
|
* and the horizon record every history reads (`hist.purge.horizon`).
|
|
497
422
|
* The room's purge task runs it; `facade` is a facade over `doc`.
|
|
498
423
|
*/
|
|
499
|
-
purge:
|
|
424
|
+
purge: bindPurge(Y).purge,
|
|
500
425
|
/** The purge horizon `doc` holds, or `null`. */
|
|
501
426
|
horizonOf: (doc) => readHorizon(doc),
|
|
502
427
|
/**
|
|
@@ -504,9 +429,9 @@ export const bindEdytorDoc = (Y) => {
|
|
|
504
429
|
* registry holds and writing only what differs (`room.history.restore`), inside the caller's transaction.
|
|
505
430
|
*/
|
|
506
431
|
restoreTo: restoreDocument,
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
432
|
+
model,
|
|
433
|
+
text,
|
|
434
|
+
runs,
|
|
435
|
+
...binding
|
|
511
436
|
};
|
|
512
437
|
};
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
* Engine-facing types for the placement model.
|
|
3
3
|
*
|
|
4
4
|
* The vendored v14 engine is plain JSDoc-typed JS that is deliberately
|
|
5
|
-
* excluded from `tsconfig.json` type-checking.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* So the model works against the STRUCTURAL interfaces below — the exact
|
|
11
|
-
* subset of the v14 Node/Doc surface it uses — and receives the engine
|
|
12
|
-
* module by injection (`bindModel(Y)`). Only `engine.js` (declared by
|
|
13
|
-
* `engine.d.ts`) imports vendor `.js`, so `pnpm check` never traverses
|
|
5
|
+
* excluded from `tsconfig.json` type-checking. The model works against the
|
|
6
|
+
* STRUCTURAL interfaces below — the exact
|
|
7
|
+
* subset of the v14 Node/Doc surface it uses — and reads the engine
|
|
8
|
+
* through `engine.js` (its `Y`, declared by `engine.d.ts`), the only
|
|
9
|
+
* module that imports vendor `.js`, so `pnpm check` never traverses
|
|
14
10
|
* vendored sources.
|
|
15
11
|
*/
|
|
16
12
|
import type * as Y from './vendor/yjs/dts/index.js';
|
|
@@ -24,7 +20,8 @@ import type { Y as Engine } from './engine.js';
|
|
|
24
20
|
export type EngineApi = typeof Engine;
|
|
25
21
|
export type YDoc = InstanceType<typeof Y.Doc>;
|
|
26
22
|
export type YNode = InstanceType<typeof Y.Node>;
|
|
27
|
-
|
|
23
|
+
/** The document's undo manager (`doc/history.ts`). */
|
|
24
|
+
export type YUndoManager = import('./doc/history.js').UndoManager;
|
|
28
25
|
export type YTransaction = Y.Transaction;
|
|
29
26
|
export type YItem = Y.Item;
|
|
30
27
|
/** Engine item identity — used by `crdtId` (`client:clock`). */
|
|
@@ -53,23 +50,6 @@ export type EngineItemRef = {
|
|
|
53
50
|
export interface EngineTransaction {
|
|
54
51
|
changed?: Map<unknown, Set<string | null>>;
|
|
55
52
|
}
|
|
56
|
-
/**
|
|
57
|
-
* The deep-observer event surface (v14 `YEvent`, observed through
|
|
58
|
-
* `observeDeep` on an ancestor — in our schema, the registry root). The
|
|
59
|
-
* document index folds the event's `transaction.changed` at commit.
|
|
60
|
-
*/
|
|
61
|
-
export interface EngineDeepEvent {
|
|
62
|
-
readonly target: unknown;
|
|
63
|
-
readonly currentTarget: unknown;
|
|
64
|
-
readonly keysChanged?: ReadonlySet<string>;
|
|
65
|
-
readonly delta?: {
|
|
66
|
-
toJSON(): unknown;
|
|
67
|
-
};
|
|
68
|
-
readonly deltaDeep?: {
|
|
69
|
-
toJSON(): unknown;
|
|
70
|
-
};
|
|
71
|
-
readonly transaction?: unknown;
|
|
72
|
-
}
|
|
73
53
|
/**
|
|
74
54
|
* Structural minimum of the vendored `Y.Node` (v14) used by the placement
|
|
75
55
|
* model. A real `YNode` satisfies this at runtime; typed consumers cast once
|
|
@@ -89,27 +69,8 @@ export interface EngineNode {
|
|
|
89
69
|
deleteAttr(key: string): void;
|
|
90
70
|
forEachAttr(f: (value: unknown, key: string, node: EngineNode) => void): void;
|
|
91
71
|
attrKeys(): IterableIterator<string>;
|
|
92
|
-
insert(index: number, content: unknown
|
|
72
|
+
insert(index: number, content: unknown): void;
|
|
93
73
|
delete(index: number, length?: number): void;
|
|
94
|
-
format(index: number, length: number, formats: Record<string, unknown>): void;
|
|
95
|
-
get(index: number): unknown;
|
|
96
|
-
slice(start?: number, end?: number): unknown[];
|
|
97
|
-
toArray(): unknown[];
|
|
98
|
-
/** Maintained delta cache — `toJSON()` yields the serialized op list. */
|
|
99
|
-
readonly delta: {
|
|
100
|
-
toJSON(): {
|
|
101
|
-
children?: unknown[];
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
toDelta(opts?: {
|
|
105
|
-
deep?: boolean;
|
|
106
|
-
}): {
|
|
107
|
-
toJSON(): unknown;
|
|
108
|
-
};
|
|
109
|
-
/** Deep event channel — anchors/observers follow the node across moves. */
|
|
110
|
-
observeDeep(f: (event: EngineDeepEvent, transaction: unknown) => void): unknown;
|
|
111
|
-
unobserveDeep(f: (event: EngineDeepEvent, transaction: unknown) => void): void;
|
|
112
|
-
on(name: 'delta', f: (delta: unknown, origin: unknown) => void): void;
|
|
113
74
|
}
|
|
114
75
|
/** Structural minimum of the vendored `Y.Doc`. */
|
|
115
76
|
export interface EngineDoc {
|
|
@@ -130,6 +91,13 @@ export interface EngineDoc {
|
|
|
130
91
|
*/
|
|
131
92
|
on(name: 'update', f: (update: Uint8Array, origin: unknown, doc: EngineDoc, transaction: unknown) => void): void;
|
|
132
93
|
off(name: 'update', f: (update: Uint8Array, origin: unknown, doc: EngineDoc, transaction: unknown) => void): void;
|
|
94
|
+
/**
|
|
95
|
+
* Doc-level `commit` channel — fires once per
|
|
96
|
+
* transaction, before `afterTransaction`, with the transaction: the
|
|
97
|
+
* index folds it there.
|
|
98
|
+
*/
|
|
99
|
+
on(name: 'commit', f: (transaction: never) => void): void;
|
|
100
|
+
off(name: 'commit', f: (transaction: never) => void): void;
|
|
133
101
|
/** Doc destruction event — doc-scoped state must release on destroy. */
|
|
134
102
|
on(name: 'destroy', f: () => void): void;
|
|
135
103
|
off(name: 'destroy', f: () => void): void;
|
package/dist/crdt/engine.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import type * as V from './vendor/yjs/dts/index.js';
|
|
|
4
4
|
export type EngineSymbol =
|
|
5
5
|
| 'Doc'
|
|
6
6
|
| 'Node'
|
|
7
|
-
| 'UndoManager'
|
|
8
7
|
| 'Item'
|
|
9
8
|
| 'RangeCursor'
|
|
10
9
|
| 'transact'
|
|
@@ -13,33 +12,24 @@ export type EngineSymbol =
|
|
|
13
12
|
| 'encodeStateVector'
|
|
14
13
|
| 'decodeStateVector'
|
|
15
14
|
| 'decodeUpdate'
|
|
16
|
-
| '
|
|
17
|
-
| 'UpdateEncoderV1'
|
|
15
|
+
| 'UpdateEncoder'
|
|
18
16
|
| 'writeIdSet'
|
|
19
17
|
| 'mergeUpdates'
|
|
20
|
-
| 'applyUpdateV2'
|
|
21
|
-
| 'encodeStateAsUpdateV2'
|
|
22
|
-
| 'mergeUpdatesV2'
|
|
23
|
-
| 'convertUpdateFormatV2ToV1'
|
|
24
|
-
| 'UpdateDecoderV1'
|
|
25
|
-
| 'UpdateEncoderV2'
|
|
26
18
|
| 'Skip'
|
|
27
19
|
| 'findIndexSS'
|
|
28
20
|
| 'isKeptReplaced'
|
|
29
|
-
| '
|
|
30
|
-
| '
|
|
31
|
-
| 'createAbsolutePositionFromRelativePosition'
|
|
32
|
-
| 'relativePositionToJSON'
|
|
21
|
+
| 'idAtIndex'
|
|
22
|
+
| 'indexOfId'
|
|
33
23
|
| 'createIdSet'
|
|
34
24
|
| 'diffIdSet'
|
|
35
25
|
| 'insertIntoIdSet'
|
|
36
|
-
| 'createIdMap'
|
|
37
|
-
| 'insertIntoIdMap'
|
|
38
|
-
| 'createContentMap'
|
|
39
|
-
| 'decodeContentMap'
|
|
40
26
|
| 'iterateStructsByIdSet'
|
|
41
27
|
| 'getItemCleanStart'
|
|
42
28
|
| 'redoItem'
|
|
29
|
+
| 'keepItem'
|
|
30
|
+
| 'followRedone'
|
|
31
|
+
| 'isParentOf'
|
|
32
|
+
| 'mergeIdSets'
|
|
43
33
|
| 'ContentAny'
|
|
44
34
|
| 'createID';
|
|
45
35
|
|
package/dist/crdt/engine.js
CHANGED
|
@@ -15,7 +15,6 @@ import * as V from './vendor/yjs/src/index.js';
|
|
|
15
15
|
export const Y = {
|
|
16
16
|
Doc: V.Doc,
|
|
17
17
|
Node: V.Node,
|
|
18
|
-
UndoManager: V.UndoManager,
|
|
19
18
|
Item: V.Item,
|
|
20
19
|
RangeCursor: V.RangeCursor,
|
|
21
20
|
transact: V.transact,
|
|
@@ -24,38 +23,29 @@ export const Y = {
|
|
|
24
23
|
encodeStateVector: V.encodeStateVector,
|
|
25
24
|
decodeStateVector: V.decodeStateVector,
|
|
26
25
|
decodeUpdate: V.decodeUpdate,
|
|
27
|
-
// the engine's pending store is V2-encoded (admission of pending structs)
|
|
28
|
-
decodeUpdateV2: V.decodeUpdateV2,
|
|
29
26
|
// the store-before-ack body carries the acknowledged deletes (`sync.writeSaved`)
|
|
30
|
-
|
|
27
|
+
UpdateEncoder: V.UpdateEncoder,
|
|
31
28
|
writeIdSet: V.writeIdSet,
|
|
32
29
|
mergeUpdates: V.mergeUpdates,
|
|
33
|
-
// storage in the v2 (columnar) encoding: room rows and the IndexedDB store
|
|
34
|
-
applyUpdateV2: V.applyUpdateV2,
|
|
35
|
-
encodeStateAsUpdateV2: V.encodeStateAsUpdateV2,
|
|
36
|
-
mergeUpdatesV2: V.mergeUpdatesV2,
|
|
37
|
-
convertUpdateFormatV2ToV1: V.convertUpdateFormatV2ToV1,
|
|
38
|
-
UpdateDecoderV1: V.UpdateDecoderV1,
|
|
39
|
-
UpdateEncoderV2: V.UpdateEncoderV2,
|
|
40
30
|
Skip: V.Skip,
|
|
41
31
|
findIndexSS: V.findIndexSS,
|
|
42
32
|
// a concurrent creation of one block id keeps the losing node (fork patch YP14)
|
|
43
33
|
isKeptReplaced: V.isKeptReplaced,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
relativePositionToJSON: V.relativePositionToJSON,
|
|
34
|
+
// a position as an item id and back (fork patch YP19)
|
|
35
|
+
idAtIndex: V.idAtIndex,
|
|
36
|
+
indexOfId: V.indexOfId,
|
|
48
37
|
createIdSet: V.createIdSet,
|
|
49
38
|
diffIdSet: V.diffIdSet,
|
|
50
39
|
insertIntoIdSet: V.insertIntoIdSet,
|
|
51
|
-
createIdMap: V.createIdMap,
|
|
52
|
-
insertIntoIdMap: V.insertIntoIdMap,
|
|
53
|
-
createContentMap: V.createContentMap,
|
|
54
|
-
decodeContentMap: V.decodeContentMap,
|
|
55
40
|
// text delete marks (`text/deletes.ts`, fork patch YP11)
|
|
56
41
|
iterateStructsByIdSet: V.iterateStructsByIdSet,
|
|
57
42
|
getItemCleanStart: V.getItemCleanStart,
|
|
58
43
|
redoItem: V.redoItem,
|
|
44
|
+
// the document's undo manager (`doc/history.ts`, fork patch YP18)
|
|
45
|
+
keepItem: V.keepItem,
|
|
46
|
+
followRedone: V.followRedone,
|
|
47
|
+
isParentOf: V.isParentOf,
|
|
48
|
+
mergeIdSets: V.mergeIdSets,
|
|
59
49
|
// a folded delete record appended after the one it replaces
|
|
60
50
|
ContentAny: V.ContentAny,
|
|
61
51
|
createID: V.createID
|
package/dist/crdt/flow.d.ts
CHANGED
|
@@ -35,9 +35,13 @@
|
|
|
35
35
|
* other kind keeps its kind and data (a pasted image stays an image, a
|
|
36
36
|
* bulleted item in an `ordered-list` a bulleted item).
|
|
37
37
|
*/
|
|
38
|
-
import type { BlockId, BlockSpec, Destination
|
|
39
|
-
import type {
|
|
40
|
-
import type { DocPosition,
|
|
38
|
+
import type { BlockId, BlockSpec, Destination } from './placement/model.js';
|
|
39
|
+
import type { Prepared } from './edytor-doc.js';
|
|
40
|
+
import type { DocPosition, RangeView } from './rangeDelete.js';
|
|
41
|
+
import type { OpsContext } from './doc/steps.js';
|
|
42
|
+
import type { MoveOps } from './doc/moves.js';
|
|
43
|
+
import type { DeleteOps } from './doc/delete.js';
|
|
44
|
+
import type { MetaOps } from './doc/meta.js';
|
|
41
45
|
/** One line of a flow: a kinded block, or an inline run when it has no `type`. */
|
|
42
46
|
export type FlowLine = Omit<BlockSpec, 'type'> & {
|
|
43
47
|
type?: string;
|
|
@@ -68,40 +72,8 @@ export type FlowTarget = DocPosition | {
|
|
|
68
72
|
} | {
|
|
69
73
|
slot: Destination;
|
|
70
74
|
};
|
|
71
|
-
/** What flow placement
|
|
72
|
-
export type FlowContext =
|
|
73
|
-
defaultChild: (parent: BlockId | null) => string;
|
|
74
|
-
/** `kind`, or `parent`'s item where it does not fit there (the container rule). */
|
|
75
|
-
fitted: (parent: BlockId | null, kind: string | undefined) => string | undefined;
|
|
76
|
-
retype: (id: BlockId, type: string) => PlanStep[];
|
|
77
|
-
sanitize: (spec: BlockSpec) => BlockSpec;
|
|
78
|
-
collides: (specs: readonly BlockSpec[]) => boolean;
|
|
79
|
-
isVoid: (id: BlockId) => boolean;
|
|
80
|
-
/**
|
|
81
|
-
* A kind's display role: void, an island, whether it renders its own
|
|
82
|
-
* content, and a layout's item kind (`layout.*`).
|
|
83
|
-
*/
|
|
84
|
-
roleOf: (kind: string) => {
|
|
85
|
-
void: boolean;
|
|
86
|
-
island: boolean;
|
|
87
|
-
rendersContent: boolean;
|
|
88
|
-
layout?: string;
|
|
89
|
-
};
|
|
90
|
-
/** `id` is a layout item or sits inside one (no layout lands there). */
|
|
91
|
-
insideItem: (id: BlockId) => boolean;
|
|
92
|
-
/** What a kind is to the table rules: a table, a row or a cell kind (`table.*`). */
|
|
93
|
-
tableKind: (kind: string) => 'table' | 'row' | 'cell' | undefined;
|
|
94
|
-
tailOf: (id: BlockId) => SplitTail;
|
|
95
|
-
ranksFor: (parent: BlockId | null, index: number, count: number) => string[];
|
|
96
|
-
/** `ranksFor` for new blocks: after a block this client ranked, in its run there. */
|
|
97
|
-
insertRanks: (parent: BlockId | null, index: number, count: number) => string[];
|
|
98
|
-
/** Ranks for the `count` blocks a split of `id` at `at` puts after it, by that offset. */
|
|
99
|
-
pieceRanks: (id: BlockId, at: number, count: number) => string[];
|
|
100
|
-
redata: (id: BlockId, data: Record<string, unknown>) => PlanStep[];
|
|
101
|
-
/** `deleteBlocks`; `filled`: a parent the plan fills again, never emptied (`flow.slot`). */
|
|
102
|
-
deleteBlocks: (ids: readonly BlockId[], filled?: BlockId | null) => Prepared;
|
|
103
|
-
insertBlocks: (dest: Destination, specs: readonly BlockSpec[]) => Prepared;
|
|
104
|
-
};
|
|
75
|
+
/** What flow placement composes: the step writers and the ops it places and deletes with. */
|
|
76
|
+
export type FlowContext = OpsContext & Pick<MoveOps, 'insertBlocks'> & Pick<DeleteOps, 'deleteBlocks'> & Pick<MetaOps, 'dataSteps' | 'replaceData'>;
|
|
105
77
|
/**
|
|
106
78
|
* Where the caret ends a placed block: its own content's end when it shows a
|
|
107
79
|
* line (renders its content, no void; a toggle's header, never its body),
|