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/doc/table.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { BlockId } from '../placement/model.js';
|
|
2
|
-
import type { DataPatch } from '../data.js';
|
|
3
|
-
import type { DataTarget, PlanStep, Prepared } from './types.js';
|
|
4
|
-
import type { OpsContext } from './steps.js';
|
|
5
|
-
/** One column of a table's `data.columns`. */
|
|
6
|
-
export type TableColumn = {
|
|
7
|
-
id: string;
|
|
8
|
-
width?: number;
|
|
9
|
-
};
|
|
10
|
-
/** The table ops of one facade, prepared. */
|
|
11
|
-
export declare const tableOps: (c: OpsContext & {
|
|
12
|
-
dataSteps: (target: DataTarget, patches: DataPatch[]) => PlanStep[] | null;
|
|
13
|
-
}) => {
|
|
14
|
-
insertTableRow: (table: BlockId, index: number) => Prepared;
|
|
15
|
-
deleteTableRows: (rows: readonly BlockId[]) => Prepared;
|
|
16
|
-
insertTableColumn: (table: BlockId, index: number, width?: number) => Prepared;
|
|
17
|
-
deleteTableColumn: (table: BlockId, column: string | number) => Prepared;
|
|
18
|
-
moveTableColumn: (table: BlockId, column: string | number, to: number) => Prepared;
|
|
19
|
-
moveTableRows: (rows: readonly BlockId[], to: number) => Prepared;
|
|
20
|
-
fillTableCell: (row: BlockId, column: string | number) => Prepared;
|
|
21
|
-
};
|
package/dist/crdt/doc/table.js
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Table ops (`table.*`): a table (a kind whose role says `table`) holds
|
|
3
|
-
* rows, a row cells, each cell names its column (`data.column`) and the
|
|
4
|
-
* table lists its columns in order (`data.columns`: `{ id, width? }`). The
|
|
5
|
-
* columns are data: inserting, deleting or moving one writes the table's
|
|
6
|
-
* `columns` array (and the cells of the rows it shows) in one plan, and
|
|
7
|
-
* the index shows every row's cells in that order (`table.columns`); a
|
|
8
|
-
* cell of no listed column does not display (`table.cell`), and the view
|
|
9
|
-
* pads a row that shows fewer cells than the table's columns
|
|
10
|
-
* (`table.pad`). Rows are blocks: a row moves among its table's rows by
|
|
11
|
-
* placement.
|
|
12
|
-
*/
|
|
13
|
-
import { id as newId } from '../../utils.js';
|
|
14
|
-
import { ref } from './plan.js';
|
|
15
|
-
/** The table ops of one facade, prepared. */
|
|
16
|
-
export const tableOps = (c) => {
|
|
17
|
-
const { roles, childrenIds, positionOf, live, isTable, isTableRow, rowKindOf, tableColumns, tableGrid, blockDataOf, dataItemIds, REFUSED, plan, ranksFor, move, remove, emptied, dataSteps } = c;
|
|
18
|
-
/** The cell kind of `table`'s rows. */
|
|
19
|
-
const cellKindOf = (table) => roles.defaultChild(rowKindOf(table));
|
|
20
|
-
const cellSpec = (table, column) => ({
|
|
21
|
-
id: newId('b'),
|
|
22
|
-
type: cellKindOf(table),
|
|
23
|
-
data: { column }
|
|
24
|
-
});
|
|
25
|
-
/**
|
|
26
|
-
* The table's columns and grid. A table listing none gets one column
|
|
27
|
-
* per column of its widest row, with ids from their positions (`c1`,
|
|
28
|
-
* `c2`, … as `tableBlock`'s), and `adopt` names each shown
|
|
29
|
-
* cell's column: two peers adopting one table write the same array
|
|
30
|
-
* items and the same cells' columns. The op then writes that array
|
|
31
|
-
* first, in its plan ({@link columnsSteps}).
|
|
32
|
-
*/
|
|
33
|
-
const adopted = (table) => {
|
|
34
|
-
const grid = tableGrid(table);
|
|
35
|
-
if (grid === null)
|
|
36
|
-
return null;
|
|
37
|
-
const listed = tableColumns(table);
|
|
38
|
-
if (listed !== null) {
|
|
39
|
-
const stored = blockDataOf(table)?.columns;
|
|
40
|
-
const raw = stored.map((col) => {
|
|
41
|
-
const id = col?.id;
|
|
42
|
-
return typeof id === 'string' ? id : null;
|
|
43
|
-
});
|
|
44
|
-
return { columns: listed, raw, adopt: [], first: [], grid };
|
|
45
|
-
}
|
|
46
|
-
const columns = grid.columns.map((_, i) => ({ id: `c${i + 1}` }));
|
|
47
|
-
const adopt = [];
|
|
48
|
-
for (const row of grid.rows)
|
|
49
|
-
row.cells.forEach((cell, i) => {
|
|
50
|
-
if (cell === null)
|
|
51
|
-
return;
|
|
52
|
-
const steps = dataSteps(cell, [{ path: ['column'], value: columns[i].id }]);
|
|
53
|
-
if (steps)
|
|
54
|
-
adopt.push(...steps);
|
|
55
|
-
});
|
|
56
|
-
return {
|
|
57
|
-
columns,
|
|
58
|
-
raw: columns.map((col) => col.id),
|
|
59
|
-
adopt,
|
|
60
|
-
first: [{ path: ['columns'], value: columns }],
|
|
61
|
-
grid: { columns: columns.map((col) => col.id), rows: grid.rows }
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
/** The adoption's steps, then `patches` of the table's `data.columns`. */
|
|
65
|
-
const columnsSteps = (table, a, patches = []) => {
|
|
66
|
-
const all = [...a.first, ...patches];
|
|
67
|
-
const steps = all.length === 0 ? [] : dataSteps(table, all);
|
|
68
|
-
return steps === null ? null : [...a.adopt, ...steps];
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* The position among the grid's columns of `column`: a position, or an
|
|
72
|
-
* id (a table listing no columns names them by position until it adopts
|
|
73
|
-
* them); `-1` when none.
|
|
74
|
-
*/
|
|
75
|
-
const positionIn = (a, listed, column) => {
|
|
76
|
-
const at = typeof column === 'number'
|
|
77
|
-
? column
|
|
78
|
-
: listed
|
|
79
|
-
? a.grid.columns.indexOf(column)
|
|
80
|
-
: Number(column);
|
|
81
|
-
return Number.isInteger(at) && at >= 0 && at < a.grid.columns.length ? at : -1;
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* The stored entry (its index in `data.columns`) the listed column at
|
|
85
|
-
* position `at` is: the first naming it; the array's length past them.
|
|
86
|
-
*/
|
|
87
|
-
const rawIndex = (a, at) => {
|
|
88
|
-
const id = a.columns[at]?.id;
|
|
89
|
-
const i = id === undefined ? -1 : a.raw.indexOf(id);
|
|
90
|
-
return i < 0 ? a.raw.length : i;
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Insert a row at `index` among `table`'s rows (`table.insert-row`): one
|
|
94
|
-
* empty cell per column, in one plan. An insert's rank (it extends this
|
|
95
|
-
* client's run, `order.insert.run`). `ids`: the new row.
|
|
96
|
-
*/
|
|
97
|
-
const insertTableRow = (table, index) => {
|
|
98
|
-
table = ref(table);
|
|
99
|
-
if (!isTable(table) || !live(table))
|
|
100
|
-
return REFUSED;
|
|
101
|
-
const a = adopted(table);
|
|
102
|
-
if (a === null)
|
|
103
|
-
return REFUSED;
|
|
104
|
-
const rows = childrenIds(table);
|
|
105
|
-
const at = Math.max(0, Math.min(Math.trunc(index) || 0, rows.length));
|
|
106
|
-
const row = {
|
|
107
|
-
id: newId('b'),
|
|
108
|
-
type: rowKindOf(table),
|
|
109
|
-
data: {},
|
|
110
|
-
children: a.columns.map((col) => cellSpec(table, col.id))
|
|
111
|
-
};
|
|
112
|
-
const ranks = ranksFor(table, at, 1, [], true);
|
|
113
|
-
const data = columnsSteps(table, a);
|
|
114
|
-
if (data === null)
|
|
115
|
-
return REFUSED;
|
|
116
|
-
return plan([row.id], [...data, { op: 'insertBlocks', parent: table, index: at, specs: [row], ranks }]);
|
|
117
|
-
};
|
|
118
|
-
/**
|
|
119
|
-
* Delete `rows` with their cells (`table.delete-row`): one plan; a table
|
|
120
|
-
* left with no row goes with them.
|
|
121
|
-
*/
|
|
122
|
-
const deleteTableRows = (rows) => {
|
|
123
|
-
const ids = [...new Set(rows.map(ref))];
|
|
124
|
-
if (ids.length === 0 || ids.some((id) => !live(id) || !isTableRow(id)))
|
|
125
|
-
return REFUSED;
|
|
126
|
-
return plan(ids, emptied(ids, ids.map((id) => remove(id))));
|
|
127
|
-
};
|
|
128
|
-
/**
|
|
129
|
-
* Insert a column at `index` among `table`'s listed columns
|
|
130
|
-
* (`table.insert-column`): a new id in `data.columns` and an empty cell
|
|
131
|
-
* for it in every row the table shows, in one plan. `width`: the new
|
|
132
|
-
* column's. `ids`: the table.
|
|
133
|
-
*/
|
|
134
|
-
const insertTableColumn = (table, index, width) => {
|
|
135
|
-
table = ref(table);
|
|
136
|
-
if (!isTable(table) || !live(table))
|
|
137
|
-
return REFUSED;
|
|
138
|
-
const a = adopted(table);
|
|
139
|
-
if (a === null)
|
|
140
|
-
return REFUSED;
|
|
141
|
-
const at = Math.max(0, Math.min(Math.trunc(index) || 0, a.columns.length));
|
|
142
|
-
const column = typeof width === 'number' && Number.isFinite(width) && width > 0
|
|
143
|
-
? { id: newId('c'), width }
|
|
144
|
-
: { id: newId('c') };
|
|
145
|
-
const data = columnsSteps(table, a, [
|
|
146
|
-
{ path: ['columns'], splice: [rawIndex(a, at), 0, column] }
|
|
147
|
-
]);
|
|
148
|
-
if (data === null)
|
|
149
|
-
return REFUSED;
|
|
150
|
-
const cells = a.grid.rows.map((row) => {
|
|
151
|
-
const kids = childrenIds(row.id);
|
|
152
|
-
const slot = Math.min(row.cells.slice(0, at).filter((x) => x !== null).length, kids.length);
|
|
153
|
-
return {
|
|
154
|
-
op: 'insertBlocks',
|
|
155
|
-
parent: row.id,
|
|
156
|
-
index: slot,
|
|
157
|
-
specs: [cellSpec(table, column.id)],
|
|
158
|
-
ranks: ranksFor(row.id, slot, 1)
|
|
159
|
-
};
|
|
160
|
-
});
|
|
161
|
-
return plan([table], [...data, ...cells]);
|
|
162
|
-
};
|
|
163
|
-
/**
|
|
164
|
-
* Delete a column (`table.delete-column`, by id or position among the
|
|
165
|
-
* grid's): it leaves `data.columns` (every entry naming it) and every
|
|
166
|
-
* shown cell of it is deleted, in one plan; a table left with no column
|
|
167
|
-
* goes with it. A column the table shows but no longer lists
|
|
168
|
-
* (`table.cell`) loses its cells. `ids`: the table.
|
|
169
|
-
*/
|
|
170
|
-
const deleteTableColumn = (table, column) => {
|
|
171
|
-
table = ref(table);
|
|
172
|
-
if (!isTable(table) || !live(table))
|
|
173
|
-
return REFUSED;
|
|
174
|
-
const listed = tableColumns(table) !== null;
|
|
175
|
-
const a = adopted(table);
|
|
176
|
-
if (a === null)
|
|
177
|
-
return REFUSED;
|
|
178
|
-
const at = positionIn(a, listed, column);
|
|
179
|
-
if (at < 0)
|
|
180
|
-
return REFUSED;
|
|
181
|
-
if (a.grid.columns.length === 1)
|
|
182
|
-
return plan([table], [remove(table)]);
|
|
183
|
-
const id = a.grid.columns[at];
|
|
184
|
-
const items = listed ? dataItemIds(table, ['columns']) : [];
|
|
185
|
-
const entries = listed
|
|
186
|
-
? a.raw.flatMap((c, i) => (c === id && items[i] ? [items[i]] : []))
|
|
187
|
-
: [];
|
|
188
|
-
const data = columnsSteps(table, a, listed
|
|
189
|
-
? entries.map((item) => ({ path: ['columns', item] }))
|
|
190
|
-
: [{ path: ['columns'], splice: [at, 1] }]);
|
|
191
|
-
if (data === null)
|
|
192
|
-
return REFUSED;
|
|
193
|
-
const gone = a.grid.rows.flatMap((row) => {
|
|
194
|
-
const cell = row.cells[at];
|
|
195
|
-
return cell === null || cell === undefined ? [] : [cell];
|
|
196
|
-
});
|
|
197
|
-
return plan([table], emptied(gone, [...data, ...gone.map((cell) => remove(cell))]));
|
|
198
|
-
};
|
|
199
|
-
/**
|
|
200
|
-
* Move a listed column to position `to` among them (`table.move-column`):
|
|
201
|
-
* one `order` patch of `data.columns`; no cell moves, every row shows its
|
|
202
|
-
* cells in the new order. `ids`: the table.
|
|
203
|
-
*/
|
|
204
|
-
const moveTableColumn = (table, column, to) => {
|
|
205
|
-
table = ref(table);
|
|
206
|
-
if (!isTable(table) || !live(table))
|
|
207
|
-
return REFUSED;
|
|
208
|
-
const listed = tableColumns(table) !== null;
|
|
209
|
-
const a = adopted(table);
|
|
210
|
-
if (a === null)
|
|
211
|
-
return REFUSED;
|
|
212
|
-
const from = positionIn(a, listed, column);
|
|
213
|
-
const dest = Math.trunc(to);
|
|
214
|
-
if (from < 0 || from >= a.columns.length || !(dest >= 0 && dest < a.columns.length))
|
|
215
|
-
return REFUSED;
|
|
216
|
-
if (from === dest) {
|
|
217
|
-
const same = columnsSteps(table, a);
|
|
218
|
-
return same === null ? REFUSED : plan([table], same);
|
|
219
|
-
}
|
|
220
|
-
const moved = a.columns.map((_, i) => i);
|
|
221
|
-
moved.splice(from, 1);
|
|
222
|
-
moved.splice(dest, 0, from);
|
|
223
|
-
// Over the stored entries: the listed ones in their new order, then the rest as they were.
|
|
224
|
-
const firsts = moved.map((i) => rawIndex(a, i));
|
|
225
|
-
const rest = a.raw.map((_, i) => i).filter((i) => !firsts.includes(i));
|
|
226
|
-
const data = columnsSteps(table, a, [{ path: ['columns'], order: [...firsts, ...rest] }]);
|
|
227
|
-
return data === null ? REFUSED : plan([table], data);
|
|
228
|
-
};
|
|
229
|
-
/**
|
|
230
|
-
* Move rows to position `to` among their table's rows
|
|
231
|
-
* (`table.move-row`): a move (plain ranks). Refused unless every one is
|
|
232
|
-
* a row of `table`. `ids`: the rows.
|
|
233
|
-
*/
|
|
234
|
-
const moveTableRows = (rows, to) => {
|
|
235
|
-
const ids = rows.map(ref);
|
|
236
|
-
const table = ids.length > 0 ? positionOf(ids[0])?.parent : null;
|
|
237
|
-
if (table == null || ids.some((id) => !isTableRow(id) || positionOf(id).parent !== table))
|
|
238
|
-
return REFUSED;
|
|
239
|
-
const at = Math.max(0, Math.min(Math.trunc(to) || 0, childrenIds(table).length));
|
|
240
|
-
return plan(ids, move(ids, table, at));
|
|
241
|
-
};
|
|
242
|
-
/**
|
|
243
|
-
* Create the cell `row` shows none of for `column` (an id, or a
|
|
244
|
-
* position among the grid's; `table.pad`: the first edit in a padded
|
|
245
|
-
* cell), empty, in one plan. A column the table shows but no longer
|
|
246
|
-
* lists (`table.cell`) is listed again, last. `ids`: the new cell.
|
|
247
|
-
*/
|
|
248
|
-
const fillTableCell = (row, column) => {
|
|
249
|
-
row = ref(row);
|
|
250
|
-
if (!isTableRow(row) || !live(row))
|
|
251
|
-
return REFUSED;
|
|
252
|
-
const table = positionOf(row).parent;
|
|
253
|
-
const listed = tableColumns(table) !== null;
|
|
254
|
-
const a = adopted(table);
|
|
255
|
-
if (a === null)
|
|
256
|
-
return REFUSED;
|
|
257
|
-
const at = positionIn(a, listed, column);
|
|
258
|
-
const shown = a.grid.rows.find((r) => r.id === row);
|
|
259
|
-
if (at < 0 || shown === undefined || shown.cells[at] !== null)
|
|
260
|
-
return REFUSED;
|
|
261
|
-
const kids = childrenIds(row);
|
|
262
|
-
const slot = Math.min(shown.cells.slice(0, at).filter((x) => x !== null).length, kids.length);
|
|
263
|
-
const id = a.grid.columns[at];
|
|
264
|
-
const spec = cellSpec(table, id);
|
|
265
|
-
const data = columnsSteps(table, a, at < a.columns.length ? [] : [{ path: ['columns'], splice: [a.raw.length, 0, { id }] }]);
|
|
266
|
-
if (data === null)
|
|
267
|
-
return REFUSED;
|
|
268
|
-
return plan([spec.id], [
|
|
269
|
-
...data,
|
|
270
|
-
{
|
|
271
|
-
op: 'insertBlocks',
|
|
272
|
-
parent: row,
|
|
273
|
-
index: slot,
|
|
274
|
-
specs: [spec],
|
|
275
|
-
ranks: ranksFor(row, slot, 1)
|
|
276
|
-
}
|
|
277
|
-
]);
|
|
278
|
-
};
|
|
279
|
-
return {
|
|
280
|
-
insertTableRow,
|
|
281
|
-
deleteTableRows,
|
|
282
|
-
insertTableColumn,
|
|
283
|
-
deleteTableColumn,
|
|
284
|
-
moveTableColumn,
|
|
285
|
-
moveTableRows,
|
|
286
|
-
fillTableCell
|
|
287
|
-
};
|
|
288
|
-
};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The generation cutover (schema generation 4 → 5, 0.1.0-next.25).
|
|
3
|
-
*
|
|
4
|
-
* Generation 5 changed the format of what a document stores: marks are
|
|
5
|
-
* paired operations (fork patch YP13), ranks are variable-length
|
|
6
|
-
* and a SyncStep2 is v2 on the wire. Bytes of generation 4 are never
|
|
7
|
-
* integrated beside generation 5's (every frame and container names its
|
|
8
|
-
* generation, `protocols/envelope.ts`): a container of generation 4 is
|
|
9
|
-
* READ — its records applied to a scratch document, no admission, no
|
|
10
|
-
* write — and its visible document taken as JSON, which generation 5
|
|
11
|
-
* seeds again (a deterministic seed: two replicas converting the same
|
|
12
|
-
* state write the same update). Reading needs no conversion of its own:
|
|
13
|
-
* generation 4's plain format items fold as upstream formats, its ranks
|
|
14
|
-
* order as strings, its delete records read as they are.
|
|
15
|
-
*
|
|
16
|
-
* What a conversion keeps: the visible document (blocks with their ids,
|
|
17
|
-
* kinds, data and content, marks, the document's data). What it does not:
|
|
18
|
-
* CRDT identity, history (undo), attribution, waiting deletes, and edits
|
|
19
|
-
* a replica never sent before the cutover.
|
|
20
|
-
*
|
|
21
|
-
* Worker-safe: the room converts its container at load.
|
|
22
|
-
*/
|
|
23
|
-
import type { EngineApi, YDoc } from '../engine-api.js';
|
|
24
|
-
import { type GenerationRecord } from '../protocols/envelope.js';
|
|
25
|
-
import type { DocumentSemanticsConfig } from '../document.js';
|
|
26
|
-
import type { JSONDoc } from '../../utils/json.js';
|
|
27
|
-
/** The schema generation this build converts from. */
|
|
28
|
-
export declare const PREVIOUS_SCHEMA = 4;
|
|
29
|
-
/** Whether container record `v` is generation 4's (`{engine, protocol, schema: 4}`). */
|
|
30
|
-
export declare const isPreviousGenerationRecord: (v: unknown) => v is GenerationRecord;
|
|
31
|
-
/** A facade that reads (`toJSON`) and is let go (`dispose`). */
|
|
32
|
-
type Reader = {
|
|
33
|
-
toJSON(): JSONDoc;
|
|
34
|
-
dispose(): void;
|
|
35
|
-
};
|
|
36
|
-
export declare const bindGenerations: (Y: EngineApi) => {
|
|
37
|
-
isPreviousGenerationRecord: (v: unknown) => v is GenerationRecord;
|
|
38
|
-
/**
|
|
39
|
-
* The visible document a state of generation 4 holds, as JSON: `updates`
|
|
40
|
-
* (v1 updates, or `{ v2 }` snapshots, in order) applied to a scratch
|
|
41
|
-
* document, read through `facadeOf` (a facade of this build, with the
|
|
42
|
-
* semantics the document is read with).
|
|
43
|
-
*/
|
|
44
|
-
previousJSON: (updates: ReadonlyArray<Uint8Array | {
|
|
45
|
-
v2: Uint8Array;
|
|
46
|
-
}>, facadeOf: (doc: YDoc) => Reader) => JSONDoc;
|
|
47
|
-
/**
|
|
48
|
-
* This generation's seed of `value` — the update a document seeds it
|
|
49
|
-
* with (deterministic: the same value writes the same update anywhere),
|
|
50
|
-
* read with `semantics`.
|
|
51
|
-
*/
|
|
52
|
-
seedOf: (value: JSONDoc, semantics?: DocumentSemanticsConfig) => Uint8Array;
|
|
53
|
-
/** {@link previousJSON} read with `semantics` (the bundled kinds' by default). */
|
|
54
|
-
previousJSONWith: (updates: ReadonlyArray<Uint8Array | {
|
|
55
|
-
v2: Uint8Array;
|
|
56
|
-
}>, semantics?: DocumentSemanticsConfig) => JSONDoc;
|
|
57
|
-
};
|
|
58
|
-
export {};
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { asEngineDoc } from '../structs.js';
|
|
2
|
-
import { bindEdytorDoc } from '../edytor-doc.js';
|
|
3
|
-
import { keepingReplaced } from '../incarnations.js';
|
|
4
|
-
import { PROTOCOL_VERSION } from '../protocols/envelope.js';
|
|
5
|
-
import { defaultSemantics, facadeConfigOf } from '../semantics.js';
|
|
6
|
-
/** The schema generation this build converts from. */
|
|
7
|
-
export const PREVIOUS_SCHEMA = 4;
|
|
8
|
-
/** Whether container record `v` is generation 4's (`{engine, protocol, schema: 4}`). */
|
|
9
|
-
export const isPreviousGenerationRecord = (v) => typeof v === 'object' &&
|
|
10
|
-
v !== null &&
|
|
11
|
-
v.engine === 'yjs-v14' &&
|
|
12
|
-
v.protocol === PROTOCOL_VERSION &&
|
|
13
|
-
v.schema === PREVIOUS_SCHEMA &&
|
|
14
|
-
[undefined, 'v1', 'v2'].includes(v.storage);
|
|
15
|
-
export const bindGenerations = (Y) => {
|
|
16
|
-
const docs = bindEdytorDoc(Y);
|
|
17
|
-
/** A facade reading with `semantics` (the bundled kinds' by default). */
|
|
18
|
-
const facadeWith = (semantics = defaultSemantics) => (doc) => docs.create(asEngineDoc(doc), facadeConfigOf(semantics));
|
|
19
|
-
const generations = {
|
|
20
|
-
isPreviousGenerationRecord,
|
|
21
|
-
/**
|
|
22
|
-
* The visible document a state of generation 4 holds, as JSON: `updates`
|
|
23
|
-
* (v1 updates, or `{ v2 }` snapshots, in order) applied to a scratch
|
|
24
|
-
* document, read through `facadeOf` (a facade of this build, with the
|
|
25
|
-
* semantics the document is read with).
|
|
26
|
-
*/
|
|
27
|
-
previousJSON: (updates, facadeOf) => {
|
|
28
|
-
const doc = keepingReplaced(new Y.Doc());
|
|
29
|
-
try {
|
|
30
|
-
Y.transact(doc, () => {
|
|
31
|
-
for (const u of updates)
|
|
32
|
-
if (u instanceof Uint8Array)
|
|
33
|
-
Y.applyUpdate(doc, u);
|
|
34
|
-
else
|
|
35
|
-
Y.applyUpdateV2(doc, u.v2);
|
|
36
|
-
});
|
|
37
|
-
const facade = facadeOf(doc);
|
|
38
|
-
try {
|
|
39
|
-
return facade.toJSON();
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
facade.dispose();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
finally {
|
|
46
|
-
doc.destroy();
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
/**
|
|
50
|
-
* This generation's seed of `value` — the update a document seeds it
|
|
51
|
-
* with (deterministic: the same value writes the same update anywhere),
|
|
52
|
-
* read with `semantics`.
|
|
53
|
-
*/
|
|
54
|
-
seedOf: (value, semantics) => {
|
|
55
|
-
const doc = keepingReplaced(new Y.Doc());
|
|
56
|
-
try {
|
|
57
|
-
const facade = facadeWith(semantics)(doc);
|
|
58
|
-
facade.seed(value.children, value.data);
|
|
59
|
-
facade.dispose();
|
|
60
|
-
return Y.encodeStateAsUpdate(doc);
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
doc.destroy();
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
/** {@link previousJSON} read with `semantics` (the bundled kinds' by default). */
|
|
67
|
-
previousJSONWith: (updates, semantics) => generations.previousJSON(updates, facadeWith(semantics))
|
|
68
|
-
};
|
|
69
|
-
return generations;
|
|
70
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Legacy (v13 Edytor) document reader.
|
|
3
|
-
*
|
|
4
|
-
* A v13 Edytor document is a `doc.getMap('content')` root whose attrs are
|
|
5
|
-
* `{id:'root', type:'root', data, children: Y.Array<YMap>, content:
|
|
6
|
-
* Y.Array<YText|YMap>}`; each block Y.Map carries `{type, id, data,
|
|
7
|
-
* children, content}`; content arrays mix `Y.Text` parts (marks = format
|
|
8
|
-
* attributes) and `Y.Map` inline atoms (`{id, type, data}`). A separate
|
|
9
|
-
* `doc.getText('INITIALIZED')` root marks initialization.
|
|
10
|
-
*
|
|
11
|
-
* When those v1 updates are applied to the vendored v14 engine, every legacy
|
|
12
|
-
* shared type decodes as a unified `Y.Node` with `_legacyTypeRef` recording
|
|
13
|
-
* the original class:
|
|
14
|
-
*
|
|
15
|
-
* | v13 type | `_legacyTypeRef` | read as |
|
|
16
|
-
* | --------- | ---------------- | -------------------------------- |
|
|
17
|
-
* | `Y.Array` | 0 | sequence children (`get`/`length`) |
|
|
18
|
-
* | `Y.Map` | 1 | attrs (`getAttr`/`attrKeys`) |
|
|
19
|
-
* | `Y.Text` | 2 | delta children: `{insert, format}` |
|
|
20
|
-
* | fragment | 4 | root shared types |
|
|
21
|
-
*
|
|
22
|
-
* Tombstoned content never appears — deleted blocks are absent from the
|
|
23
|
-
* children sequence, deleted/format-removed text is absent from the delta —
|
|
24
|
-
* so the materialized JSON is the logical doc exactly as a v13 reader saw
|
|
25
|
-
* it (the same contract the v13 fixtures pin).
|
|
26
|
-
*/
|
|
27
|
-
import type { EngineApi, EngineDoc } from '../engine-api.js';
|
|
28
|
-
import { type JSONDoc } from '../../utils/json.js';
|
|
29
|
-
/** v13 root key for the document tree. */
|
|
30
|
-
export declare const LEGACY_ROOT_KEY = "content";
|
|
31
|
-
/**
|
|
32
|
-
* Raised when legacy update rows carry structs whose CRDT dependencies are
|
|
33
|
-
* absent from the stored set — i.e. a peer's update never reached this
|
|
34
|
-
* browser's IndexedDB before cutover. Applying such rows leaves
|
|
35
|
-
* `store.pendingStructs`/`pendingDs` non-null and the materialized JSON
|
|
36
|
-
* would silently omit the un-integrated content, so the reader fails closed
|
|
37
|
-
* instead of producing a truncated document (gate-2 migration probe).
|
|
38
|
-
*/
|
|
39
|
-
export declare class PendingLegacyUpdatesError extends Error {
|
|
40
|
-
/** Clients whose structs are still missing (`client → clock` needed). */
|
|
41
|
-
readonly missing: ReadonlyMap<number, number>;
|
|
42
|
-
constructor(missing: ReadonlyMap<number, number>, hasPendingDs: boolean);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* True iff the doc carries the v13 Edytor schema: a `content` root whose
|
|
46
|
-
* `children` attr is a sequence node. Anything else (empty doc, v14 schema,
|
|
47
|
-
* foreign document) is rejected by the migration path — it is not a legacy
|
|
48
|
-
* document we know how to read.
|
|
49
|
-
*/
|
|
50
|
-
export declare const isLegacyDoc: (doc: EngineDoc) => boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Bind the legacy reader to the engine module. `readLegacyJSON(updates)`
|
|
53
|
-
* applies the stored v1 update rows to a scratch doc (in order — pending
|
|
54
|
-
* offline rows are simply later rows) and materializes the logical JSONDoc.
|
|
55
|
-
* The scratch doc is discarded; nothing is written back to any store.
|
|
56
|
-
*/
|
|
57
|
-
export declare const bindLegacyReader: (Y: EngineApi) => {
|
|
58
|
-
readLegacyJSON: (updates: Uint8Array[]) => JSONDoc;
|
|
59
|
-
readLegacyJSONFromDoc: (doc: EngineDoc) => JSONDoc;
|
|
60
|
-
isLegacyDoc: (doc: EngineDoc) => boolean;
|
|
61
|
-
};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { asEngineDoc } from '../structs.js';
|
|
2
|
-
import { cloneJson } from '../../utils/json.js';
|
|
3
|
-
// Legacy type refs (vendored `structs/Item.js` — not re-exported publicly).
|
|
4
|
-
const Y_ARRAY_REF = 0;
|
|
5
|
-
const Y_MAP_REF = 1;
|
|
6
|
-
const Y_TEXT_REF = 2;
|
|
7
|
-
/** v13 root key for the document tree. */
|
|
8
|
-
export const LEGACY_ROOT_KEY = 'content';
|
|
9
|
-
/**
|
|
10
|
-
* Raised when legacy update rows carry structs whose CRDT dependencies are
|
|
11
|
-
* absent from the stored set — i.e. a peer's update never reached this
|
|
12
|
-
* browser's IndexedDB before cutover. Applying such rows leaves
|
|
13
|
-
* `store.pendingStructs`/`pendingDs` non-null and the materialized JSON
|
|
14
|
-
* would silently omit the un-integrated content, so the reader fails closed
|
|
15
|
-
* instead of producing a truncated document (gate-2 migration probe).
|
|
16
|
-
*/
|
|
17
|
-
export class PendingLegacyUpdatesError extends Error {
|
|
18
|
-
/** Clients whose structs are still missing (`client → clock` needed). */
|
|
19
|
-
missing;
|
|
20
|
-
constructor(missing, hasPendingDs) {
|
|
21
|
-
const clients = [...missing.keys()].join(', ');
|
|
22
|
-
super(`Legacy update rows have unmet CRDT dependencies (pending structs` +
|
|
23
|
-
`${clients.length > 0 ? ` waiting on client(s) ${clients}` : ''}` +
|
|
24
|
-
`${hasPendingDs ? ', pending delete set' : ''}). ` +
|
|
25
|
-
`Materializing now would silently drop content that has not integrated.`);
|
|
26
|
-
this.name = 'PendingLegacyUpdatesError';
|
|
27
|
-
this.missing = missing;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* True iff the doc carries the v13 Edytor schema: a `content` root whose
|
|
32
|
-
* `children` attr is a sequence node. Anything else (empty doc, v14 schema,
|
|
33
|
-
* foreign document) is rejected by the migration path — it is not a legacy
|
|
34
|
-
* document we know how to read.
|
|
35
|
-
*/
|
|
36
|
-
export const isLegacyDoc = (doc) => {
|
|
37
|
-
const root = doc.get(LEGACY_ROOT_KEY);
|
|
38
|
-
const children = root.getAttr('children');
|
|
39
|
-
return children != null && children._legacyTypeRef === Y_ARRAY_REF;
|
|
40
|
-
};
|
|
41
|
-
const readText = (node) => {
|
|
42
|
-
const out = [];
|
|
43
|
-
const children = node.delta?.toJSON?.()?.children;
|
|
44
|
-
for (const op of children ?? []) {
|
|
45
|
-
if (typeof op?.insert !== 'string')
|
|
46
|
-
continue;
|
|
47
|
-
if (op.insert.length === 0)
|
|
48
|
-
continue;
|
|
49
|
-
const t = { text: op.insert };
|
|
50
|
-
if (op.format && Object.keys(op.format).length > 0) {
|
|
51
|
-
t.marks = { ...op.format };
|
|
52
|
-
}
|
|
53
|
-
out.push(t);
|
|
54
|
-
}
|
|
55
|
-
return out;
|
|
56
|
-
};
|
|
57
|
-
const readInline = (node) => {
|
|
58
|
-
const inline = { type: String(node.getAttr('type') ?? 'inline') };
|
|
59
|
-
const id = node.getAttr('id');
|
|
60
|
-
if (id !== undefined)
|
|
61
|
-
inline.id = String(id);
|
|
62
|
-
const data = node.getAttr('data');
|
|
63
|
-
if (data != null && typeof data === 'object') {
|
|
64
|
-
inline.data = cloneJson(data);
|
|
65
|
-
}
|
|
66
|
-
return inline;
|
|
67
|
-
};
|
|
68
|
-
const readBlock = (node) => {
|
|
69
|
-
const block = { type: String(node.getAttr('type') ?? 'paragraph') };
|
|
70
|
-
const id = node.getAttr('id');
|
|
71
|
-
if (id !== undefined)
|
|
72
|
-
block.id = String(id);
|
|
73
|
-
const data = node.getAttr('data');
|
|
74
|
-
if (data != null && typeof data === 'object') {
|
|
75
|
-
block.data = cloneJson(data);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
block.data = {};
|
|
79
|
-
}
|
|
80
|
-
const content = node.getAttr('content');
|
|
81
|
-
if (content != null && content._legacyTypeRef === Y_ARRAY_REF) {
|
|
82
|
-
const items = [];
|
|
83
|
-
for (let i = 0; i < content.length; i++) {
|
|
84
|
-
const part = content.get(i);
|
|
85
|
-
if (part._legacyTypeRef === Y_TEXT_REF) {
|
|
86
|
-
items.push(...readText(part));
|
|
87
|
-
}
|
|
88
|
-
else if (part._legacyTypeRef === Y_MAP_REF) {
|
|
89
|
-
items.push(readInline(part));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (items.length > 0)
|
|
93
|
-
block.content = items;
|
|
94
|
-
}
|
|
95
|
-
const children = node.getAttr('children');
|
|
96
|
-
if (children != null && children._legacyTypeRef === Y_ARRAY_REF && children.length > 0) {
|
|
97
|
-
const kids = [];
|
|
98
|
-
for (let i = 0; i < children.length; i++) {
|
|
99
|
-
kids.push(readBlock(children.get(i)));
|
|
100
|
-
}
|
|
101
|
-
block.children = kids;
|
|
102
|
-
}
|
|
103
|
-
return block;
|
|
104
|
-
};
|
|
105
|
-
/**
|
|
106
|
-
* Bind the legacy reader to the engine module. `readLegacyJSON(updates)`
|
|
107
|
-
* applies the stored v1 update rows to a scratch doc (in order — pending
|
|
108
|
-
* offline rows are simply later rows) and materializes the logical JSONDoc.
|
|
109
|
-
* The scratch doc is discarded; nothing is written back to any store.
|
|
110
|
-
*/
|
|
111
|
-
export const bindLegacyReader = (Y) => {
|
|
112
|
-
/**
|
|
113
|
-
* Materialize the logical JSON of a legacy v13 document from its stored
|
|
114
|
-
* update rows. Throws when the decoded doc is not the v13 Edytor schema.
|
|
115
|
-
*/
|
|
116
|
-
const readLegacyJSON = (updates) => {
|
|
117
|
-
const raw = new Y.Doc();
|
|
118
|
-
Y.transact(raw, () => {
|
|
119
|
-
for (const update of updates) {
|
|
120
|
-
Y.applyUpdate(raw, update);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
const doc = asEngineDoc(raw);
|
|
124
|
-
// Fail closed on un-integratable rows: pendingStructs/pendingDs are
|
|
125
|
-
// non-null while CRDT dependencies are missing — the materialized
|
|
126
|
-
// JSON would silently omit that content (gate-2 migration probe).
|
|
127
|
-
const pending = doc.store?.pendingStructs ?? null;
|
|
128
|
-
const pendingDs = doc.store?.pendingDs ?? null;
|
|
129
|
-
if (pending !== null || pendingDs !== null) {
|
|
130
|
-
throw new PendingLegacyUpdatesError(pending?.missing ?? new Map(), pendingDs !== null);
|
|
131
|
-
}
|
|
132
|
-
return readLegacyJSONFromDoc(doc);
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Materialize from an already-populated doc (e.g. one built by tests).
|
|
136
|
-
* Throws when the doc is not the v13 Edytor schema.
|
|
137
|
-
*/
|
|
138
|
-
const readLegacyJSONFromDoc = (doc) => {
|
|
139
|
-
if (!isLegacyDoc(doc)) {
|
|
140
|
-
throw new Error('Not a legacy v13 Edytor document: missing `content` root with a sequence `children` attribute.');
|
|
141
|
-
}
|
|
142
|
-
const root = doc.get(LEGACY_ROOT_KEY);
|
|
143
|
-
const children = root.getAttr('children');
|
|
144
|
-
const out = [];
|
|
145
|
-
for (let i = 0; i < children.length; i++) {
|
|
146
|
-
out.push(readBlock(children.get(i)));
|
|
147
|
-
}
|
|
148
|
-
return { children: out };
|
|
149
|
-
};
|
|
150
|
-
return { readLegacyJSON, readLegacyJSONFromDoc, isLegacyDoc };
|
|
151
|
-
};
|