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/schema.js
CHANGED
|
@@ -43,7 +43,7 @@ export const INLINE_NODE = 'inline';
|
|
|
43
43
|
/** Attr keys on a block node (`SCHEMA.blockAttrs`). */
|
|
44
44
|
export const ID = 'id';
|
|
45
45
|
export const TYPE = 'type';
|
|
46
|
-
/** A block's or atom's whole data
|
|
46
|
+
/** A block's or atom's whole data, as documents before 0.1.0-next.6 stored it: no longer read; the room's purge deletes it. */
|
|
47
47
|
export const DATA = 'data';
|
|
48
48
|
/** A data leaf: `d/` and its path, RFC 6901 escaped (`crdt/data.ts`). */
|
|
49
49
|
export const DATA_LEAF_PREFIX = 'd/';
|
|
@@ -80,10 +80,9 @@ export const AT = 'at';
|
|
|
80
80
|
export const REC_PREFIX = 'b/';
|
|
81
81
|
/** The schema generation stamped on the `meta` root (`v`) and its manifest name (`schema`). */
|
|
82
82
|
export const SCHEMA = {
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
version: 5,
|
|
83
|
+
// 6: one update encoding (the columnar one) on the wire and in storage;
|
|
84
|
+
// a container or frame of an earlier generation is refused.
|
|
85
|
+
version: 6,
|
|
87
86
|
name: 'edytor-doc',
|
|
88
87
|
roots: { registry: REGISTRY_KEY, meta: META_ROOT_KEY },
|
|
89
88
|
metaAttrs: { version: 'v', schema: 'schema' }
|
package/dist/crdt/semantics.d.ts
CHANGED
|
@@ -53,16 +53,12 @@ export type NormalizedRole = {
|
|
|
53
53
|
};
|
|
54
54
|
/** `role` as {@link NormalizedRole}: the one form two declarations compare in. */
|
|
55
55
|
export declare const normalizeRole: (role: BlockRole | undefined) => NormalizedRole;
|
|
56
|
-
/** `
|
|
56
|
+
/** `createRichTextPlugin()`'s structural rows (its other kinds are plain). */
|
|
57
57
|
export declare const richTextKinds: {
|
|
58
58
|
divider: {
|
|
59
59
|
void: true;
|
|
60
60
|
rendersContent: false;
|
|
61
61
|
};
|
|
62
|
-
horizontalRule: {
|
|
63
|
-
void: true;
|
|
64
|
-
rendersContent: false;
|
|
65
|
-
};
|
|
66
62
|
'ordered-list': {
|
|
67
63
|
rendersContent: false;
|
|
68
64
|
defaultChild: string;
|
|
@@ -73,7 +69,7 @@ export declare const richTextKinds: {
|
|
|
73
69
|
};
|
|
74
70
|
};
|
|
75
71
|
/**
|
|
76
|
-
* `
|
|
72
|
+
* `createRichTextPlugin()`'s mark edges: where a concurrent insert at each end
|
|
77
73
|
* of a mark lands. A link grows at its start only (typing after it
|
|
78
74
|
* stays out of it unless from inside the anchor); the others are inclusive.
|
|
79
75
|
*/
|
|
@@ -92,7 +88,7 @@ export declare const commentMarks: {
|
|
|
92
88
|
edge: "exclusive";
|
|
93
89
|
};
|
|
94
90
|
};
|
|
95
|
-
/** `
|
|
91
|
+
/** `createCodePlugin()`'s structural rows: the code block is an island of `codeLine`s (`lines`). */
|
|
96
92
|
export declare const codeKinds: {
|
|
97
93
|
code: {
|
|
98
94
|
island: true;
|
|
@@ -101,15 +97,15 @@ export declare const codeKinds: {
|
|
|
101
97
|
defaultChild: string;
|
|
102
98
|
};
|
|
103
99
|
};
|
|
104
|
-
/** `
|
|
100
|
+
/** `createImagePlugin()`'s structural rows: void, its only text is the caption. */
|
|
105
101
|
export declare const imageKinds: {
|
|
106
102
|
image: {
|
|
107
103
|
void: true;
|
|
108
104
|
};
|
|
109
105
|
};
|
|
110
106
|
/**
|
|
111
|
-
* The media plugins' structural rows (`
|
|
112
|
-
* `
|
|
107
|
+
* The media plugins' structural rows (`createEmbedPlugin()`, `createBookmarkPlugin()`,
|
|
108
|
+
* `createFilePlugin()`, `createVideoPlugin()`, `createAudioPlugin()`): void like the image, their
|
|
113
109
|
* only text is the caption.
|
|
114
110
|
*/
|
|
115
111
|
export declare const mediaKinds: {
|
|
@@ -249,7 +245,7 @@ export declare const semanticsDigest: (config: DocumentSemanticsConfig) => Recor
|
|
|
249
245
|
* names counts when it has facts. Anything but a digest compares nothing.
|
|
250
246
|
*/
|
|
251
247
|
export declare const semanticsMismatch: (ours: Record<string, string>, theirs: unknown) => string[];
|
|
252
|
-
/** `
|
|
248
|
+
/** `createRichTextPlugin()`'s block roles and mark edges, for `createDocument({ semantics })` and the room. */
|
|
253
249
|
export declare const richTextSemantics: {
|
|
254
250
|
roles: Record<string, BlockRole>;
|
|
255
251
|
rendersContent: Record<string, boolean>;
|
|
@@ -259,13 +255,13 @@ export declare const richTextSemantics: {
|
|
|
259
255
|
edge: MarkEdge;
|
|
260
256
|
}>;
|
|
261
257
|
};
|
|
262
|
-
/** `
|
|
258
|
+
/** `createCodePlugin()`'s block roles. */
|
|
263
259
|
export declare const codeSemantics: {
|
|
264
260
|
roles: Record<string, BlockRole>;
|
|
265
261
|
rendersContent: Record<string, boolean>;
|
|
266
262
|
defaultChild: Record<string, string>;
|
|
267
263
|
};
|
|
268
|
-
/** `
|
|
264
|
+
/** `createImagePlugin()`'s block roles. */
|
|
269
265
|
export declare const imageSemantics: {
|
|
270
266
|
roles: Record<string, BlockRole>;
|
|
271
267
|
rendersContent: Record<string, boolean>;
|
|
@@ -327,8 +323,7 @@ export declare const defaultSemantics: {
|
|
|
327
323
|
};
|
|
328
324
|
/**
|
|
329
325
|
* The facade configuration (`EdytorDocConfig`) a document with no view
|
|
330
|
-
* reads `semantics` with — the room's,
|
|
331
|
-
* (`migration/generation.ts`): roles, default children, content-less kinds
|
|
326
|
+
* reads `semantics` with — the room's: roles, default children, content-less kinds
|
|
332
327
|
* and mark edges, each answered only for a kind the tables name.
|
|
333
328
|
*/
|
|
334
329
|
export declare const facadeConfigOf: (semantics: DocumentSemanticsConfig) => {
|
package/dist/crdt/semantics.js
CHANGED
|
@@ -48,15 +48,14 @@ const frozen = (value) => {
|
|
|
48
48
|
}
|
|
49
49
|
return value;
|
|
50
50
|
};
|
|
51
|
-
/** `
|
|
51
|
+
/** `createRichTextPlugin()`'s structural rows (its other kinds are plain). */
|
|
52
52
|
export const richTextKinds = frozen({
|
|
53
53
|
divider: { void: true, rendersContent: false },
|
|
54
|
-
horizontalRule: { void: true, rendersContent: false },
|
|
55
54
|
'ordered-list': { rendersContent: false, defaultChild: 'list-item' },
|
|
56
55
|
'unordered-list': { rendersContent: false, defaultChild: 'list-item' }
|
|
57
56
|
});
|
|
58
57
|
/**
|
|
59
|
-
* `
|
|
58
|
+
* `createRichTextPlugin()`'s mark edges: where a concurrent insert at each end
|
|
60
59
|
* of a mark lands. A link grows at its start only (typing after it
|
|
61
60
|
* stays out of it unless from inside the anchor); the others are inclusive.
|
|
62
61
|
*/
|
|
@@ -71,15 +70,15 @@ export const richTextMarks = frozen({
|
|
|
71
70
|
export const commentMarks = frozen({
|
|
72
71
|
comment: { edge: 'exclusive' }
|
|
73
72
|
});
|
|
74
|
-
/** `
|
|
73
|
+
/** `createCodePlugin()`'s structural rows: the code block is an island of `codeLine`s (`lines`). */
|
|
75
74
|
export const codeKinds = frozen({
|
|
76
75
|
code: { island: true, lines: true, rendersContent: false, defaultChild: 'codeLine' }
|
|
77
76
|
});
|
|
78
|
-
/** `
|
|
77
|
+
/** `createImagePlugin()`'s structural rows: void, its only text is the caption. */
|
|
79
78
|
export const imageKinds = frozen({ image: { void: true } });
|
|
80
79
|
/**
|
|
81
|
-
* The media plugins' structural rows (`
|
|
82
|
-
* `
|
|
80
|
+
* The media plugins' structural rows (`createEmbedPlugin()`, `createBookmarkPlugin()`,
|
|
81
|
+
* `createFilePlugin()`, `createVideoPlugin()`, `createAudioPlugin()`): void like the image, their
|
|
83
82
|
* only text is the caption.
|
|
84
83
|
*/
|
|
85
84
|
export const mediaKinds = frozen({
|
|
@@ -143,6 +142,7 @@ export const tableKinds = frozen({
|
|
|
143
142
|
* `table`, `atomic`, `rendersContent`, `defaultChild`), and a bare snippet is a
|
|
144
143
|
* plain kind. To add kinds to a bundled config, use {@link mergeSemantics}.
|
|
145
144
|
*/
|
|
145
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
146
146
|
export const semanticsOf = (...tables) => {
|
|
147
147
|
const semantics = {
|
|
148
148
|
roles: {},
|
|
@@ -264,25 +264,27 @@ export const semanticsMismatch = (ours, theirs) => {
|
|
|
264
264
|
.sort();
|
|
265
265
|
};
|
|
266
266
|
/** `config` with a mark-edge table, frozen. */
|
|
267
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
267
268
|
const withMarks = (config, marks) => frozen(Object.assign({}, config, { marks }));
|
|
268
|
-
/** `
|
|
269
|
-
export const richTextSemantics = withMarks(
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
269
|
+
/** `createRichTextPlugin()`'s block roles and mark edges, for `createDocument({ semantics })` and the room. */
|
|
270
|
+
export const richTextSemantics = /* @__PURE__ */ withMarks(
|
|
271
|
+
/* @__PURE__ */ semanticsOf(richTextKinds), richTextMarks);
|
|
272
|
+
/** `createCodePlugin()`'s block roles. */
|
|
273
|
+
export const codeSemantics = /* @__PURE__ */ semanticsOf(codeKinds);
|
|
274
|
+
/** `createImagePlugin()`'s block roles. */
|
|
275
|
+
export const imageSemantics = /* @__PURE__ */ semanticsOf(imageKinds);
|
|
274
276
|
/** The media plugins' block roles (embed, bookmark, file, video, audio). */
|
|
275
|
-
export const mediaSemantics = semanticsOf(mediaKinds);
|
|
277
|
+
export const mediaSemantics = /* @__PURE__ */ semanticsOf(mediaKinds);
|
|
276
278
|
/** The columns plugin's block roles (a layout of columns). */
|
|
277
|
-
export const layoutSemantics = semanticsOf(layoutKinds);
|
|
279
|
+
export const layoutSemantics = /* @__PURE__ */ semanticsOf(layoutKinds);
|
|
278
280
|
/** The page plugin's block role (a link to another document). */
|
|
279
|
-
export const pageSemantics = semanticsOf(pageKinds);
|
|
281
|
+
export const pageSemantics = /* @__PURE__ */ semanticsOf(pageKinds);
|
|
280
282
|
/** The table of contents plugin's block role. */
|
|
281
|
-
export const tocSemantics = semanticsOf(tocKinds);
|
|
283
|
+
export const tocSemantics = /* @__PURE__ */ semanticsOf(tocKinds);
|
|
282
284
|
/** The table plugin's block roles (a table of rows of cells). */
|
|
283
|
-
export const tableSemantics = semanticsOf(tableKinds);
|
|
285
|
+
export const tableSemantics = /* @__PURE__ */ semanticsOf(tableKinds);
|
|
284
286
|
/** The equation plugin's block role. */
|
|
285
|
-
export const equationSemantics = semanticsOf(equationKinds);
|
|
287
|
+
export const equationSemantics = /* @__PURE__ */ semanticsOf(equationKinds);
|
|
286
288
|
/**
|
|
287
289
|
* The rich-text, code, image, media, columns, page, table of contents,
|
|
288
290
|
* table and equation plugins' block roles together (and the rich-text and
|
|
@@ -295,8 +297,7 @@ export const equationSemantics = semanticsOf(equationKinds);
|
|
|
295
297
|
export const defaultSemantics = withMarks(semanticsOf(richTextKinds, codeKinds, imageKinds, mediaKinds, layoutKinds, pageKinds, tocKinds, tableKinds, equationKinds), { ...richTextMarks, ...commentMarks });
|
|
296
298
|
/**
|
|
297
299
|
* The facade configuration (`EdytorDocConfig`) a document with no view
|
|
298
|
-
* reads `semantics` with — the room's,
|
|
299
|
-
* (`migration/generation.ts`): roles, default children, content-less kinds
|
|
300
|
+
* reads `semantics` with — the room's: roles, default children, content-less kinds
|
|
300
301
|
* and mark edges, each answered only for a kind the tables name.
|
|
301
302
|
*/
|
|
302
303
|
export const facadeConfigOf = (semantics) => {
|
package/dist/crdt/storage.d.ts
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The storage codec — what the room's rows and the IndexedDB store
|
|
3
|
-
* hold
|
|
4
|
-
* that
|
|
5
|
-
* and
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* itself whether it is compressed. Worker-safe: no timers, every
|
|
10
|
-
* platform API feature-detected.
|
|
3
|
+
* hold: updates in the engine's one encoding, snapshots gzip-compressed
|
|
4
|
+
* when that makes them smaller (`CompressionStream`, in every supported
|
|
5
|
+
* browser, Node and Workers). A compressed record starts with gzip's magic
|
|
6
|
+
* `1f 8b`, which no update does (its first byte is the encoder's feature
|
|
7
|
+
* flag, `00`), so a record says itself whether it is compressed.
|
|
8
|
+
* Worker-safe: no timers.
|
|
11
9
|
*/
|
|
12
10
|
/** Whether `bytes` are gzip (its magic `1f 8b`). */
|
|
13
11
|
export declare const isGzip: (bytes: Uint8Array) => boolean;
|
|
14
|
-
/** Whether this platform compresses (`CompressionStream`). */
|
|
15
|
-
export declare const canCompress: () => boolean;
|
|
16
|
-
/** `bytes` gzip-compressed, or `null` where the platform has no `CompressionStream`. */
|
|
17
|
-
export declare const gzip: (bytes: Uint8Array) => Promise<Uint8Array | null>;
|
|
18
12
|
/** `bytes` as stored: inflated when gzip, else as they are. */
|
|
19
13
|
export declare const gunzip: (bytes: Uint8Array) => Promise<Uint8Array>;
|
|
20
|
-
/** `bytes` compressed when that makes them smaller
|
|
14
|
+
/** `bytes` compressed when that makes them smaller, else as they are. */
|
|
21
15
|
export declare const packed: (bytes: Uint8Array) => Promise<Uint8Array>;
|
package/dist/crdt/storage.js
CHANGED
|
@@ -1,37 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The storage codec — what the room's rows and the IndexedDB store
|
|
3
|
-
* hold
|
|
4
|
-
* that
|
|
5
|
-
* and
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* itself whether it is compressed. Worker-safe: no timers, every
|
|
10
|
-
* platform API feature-detected.
|
|
3
|
+
* hold: updates in the engine's one encoding, snapshots gzip-compressed
|
|
4
|
+
* when that makes them smaller (`CompressionStream`, in every supported
|
|
5
|
+
* browser, Node and Workers). A compressed record starts with gzip's magic
|
|
6
|
+
* `1f 8b`, which no update does (its first byte is the encoder's feature
|
|
7
|
+
* flag, `00`), so a record says itself whether it is compressed.
|
|
8
|
+
* Worker-safe: no timers.
|
|
11
9
|
*/
|
|
12
10
|
/** Whether `bytes` are gzip (its magic `1f 8b`). */
|
|
13
11
|
export const isGzip = (bytes) => bytes.length >= 2 && bytes[0] === 0x1f && bytes[1] === 0x8b;
|
|
14
|
-
const platform = globalThis;
|
|
15
12
|
/** Run `bytes` through a (de)compression stream. */
|
|
16
13
|
const through = async (bytes, transform) => {
|
|
17
14
|
const stream = new Response(bytes).body.pipeThrough(transform);
|
|
18
15
|
return new Uint8Array(await new Response(stream).arrayBuffer());
|
|
19
16
|
};
|
|
20
|
-
/** Whether this platform compresses (`CompressionStream`). */
|
|
21
|
-
export const canCompress = () => typeof platform.CompressionStream === 'function';
|
|
22
|
-
/** `bytes` gzip-compressed, or `null` where the platform has no `CompressionStream`. */
|
|
23
|
-
export const gzip = async (bytes) => platform.CompressionStream ? through(bytes, new platform.CompressionStream('gzip')) : null;
|
|
24
17
|
/** `bytes` as stored: inflated when gzip, else as they are. */
|
|
25
|
-
export const gunzip = async (bytes) =>
|
|
26
|
-
|
|
27
|
-
return bytes;
|
|
28
|
-
if (!platform.DecompressionStream) {
|
|
29
|
-
throw new Error('a compressed record needs DecompressionStream, which this platform lacks');
|
|
30
|
-
}
|
|
31
|
-
return through(bytes, new platform.DecompressionStream('gzip'));
|
|
32
|
-
};
|
|
33
|
-
/** `bytes` compressed when that makes them smaller (and the platform can), else as they are. */
|
|
18
|
+
export const gunzip = async (bytes) => isGzip(bytes) ? through(bytes, new DecompressionStream('gzip')) : bytes;
|
|
19
|
+
/** `bytes` compressed when that makes them smaller, else as they are. */
|
|
34
20
|
export const packed = async (bytes) => {
|
|
35
|
-
const out = await
|
|
36
|
-
return out
|
|
21
|
+
const out = await through(bytes, new CompressionStream('gzip'));
|
|
22
|
+
return out.length < bytes.length ? out : bytes;
|
|
37
23
|
};
|
package/dist/crdt/structs.d.ts
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vendor internals — the ONE place Edytor code reaches into the engine's
|
|
3
|
-
* private state (the struct store, a node's attr items and first item,
|
|
4
|
-
* the doc's collection settings and transaction events) and calls the
|
|
5
|
-
* engine's internal functions with Edytor's structural views of its
|
|
6
|
-
* objects. Centralizing these keeps the blast radius of a vendored engine
|
|
7
|
-
* upgrade in one module: when an internal is renamed or reshaped, the
|
|
8
|
-
* accessors below are the lines to change, and the fail-fast checks break
|
|
9
|
-
* loudly at upgrade time instead of silently disabling run invalidation or
|
|
10
|
-
* history lineage (the old optional-chained reads turned a rename into a
|
|
11
|
-
* silent no-op).
|
|
12
|
-
*
|
|
13
|
-
* The model works against structural types (`EngineDoc`, `EngineNode`,
|
|
14
|
-
* `StoreStruct`, `IdSetLike`: the subset it reads) while the engine's
|
|
15
|
-
* generated declarations (`vendor/yjs/dts`) type its classes; a real engine
|
|
16
|
-
* object satisfies the structural view at runtime. Each accessor states
|
|
17
|
-
* that correspondence once, so a call site needs no cast.
|
|
18
|
-
*
|
|
19
|
-
* The engine surface is injected (`Y: EngineApi`) like every other bound
|
|
20
|
-
* module — this file never imports vendor `.js`.
|
|
21
|
-
*/
|
|
22
1
|
import type { EngineApi, EngineDoc, EngineNode, YDoc, YNode, YUndoManager } from './engine-api.js';
|
|
23
2
|
/**
|
|
24
3
|
* Structural shape of one store struct (Item | GC | Skip) — the subset
|
|
@@ -62,9 +41,9 @@ export type IdSetLike = {
|
|
|
62
41
|
};
|
|
63
42
|
/**
|
|
64
43
|
* The doc's struct store — vendor-internal (`doc.store.clients`).
|
|
65
|
-
* FAIL-FAST: a missing store means the doc is not a
|
|
66
|
-
* (or the vendored layout changed) — either way the only
|
|
67
|
-
* is a descriptive throw, never a silent fallback.
|
|
44
|
+
* FAIL-FAST in development: a missing store means the doc is not a
|
|
45
|
+
* vendored-engine doc (or the vendored layout changed) — either way the only
|
|
46
|
+
* honest response is a descriptive throw, never a silent fallback.
|
|
68
47
|
*/
|
|
69
48
|
export declare const clientsOf: (doc: EngineDoc) => Map<number, StoreStruct[]>;
|
|
70
49
|
/**
|
|
@@ -75,25 +54,17 @@ export declare const clientsOf: (doc: EngineDoc) => Map<number, StoreStruct[]>;
|
|
|
75
54
|
*/
|
|
76
55
|
export declare const structAt: (Y: EngineApi, structs: readonly StoreStruct[], clock: number) => StoreStruct | null;
|
|
77
56
|
/**
|
|
78
|
-
* Walk every struct an IdSet covers,
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* splits.
|
|
82
|
-
*
|
|
83
|
-
* `fn` returning `false` halts the walk early (caller-side short-circuit).
|
|
57
|
+
* Walk every struct an IdSet covers, in (client, clock) order: `fn(struct,
|
|
58
|
+
* from, to)` gets the struct and the clock range `[from, to)` of it the set
|
|
59
|
+
* covers (a struct can reach past a range a diff of two id sets cut). The
|
|
60
|
+
* walk never splits a struct; `fn` returning `false` halts it.
|
|
84
61
|
*
|
|
85
62
|
* Returns `false` when coverage was INCOMPLETE — a client's struct list
|
|
86
63
|
* was missing or a range start could not be located — so the caller can
|
|
87
64
|
* fall back to an all-consumers/opaque answer instead of trusting a
|
|
88
65
|
* partial walk. `clientsOf` throws first when the store itself is absent.
|
|
89
66
|
*/
|
|
90
|
-
export declare const
|
|
91
|
-
/**
|
|
92
|
-
* {@link walkIdSetStructs}, clipped: `fn(struct, from, to)` gets the clock
|
|
93
|
-
* range `[from, to)` of the struct the id set covers (a struct can reach past
|
|
94
|
-
* a range a diff of two id sets cut).
|
|
95
|
-
*/
|
|
96
|
-
export declare const walkIdSetRanges: (Y: EngineApi, doc: EngineDoc, idSet: IdSetLike, fn: (struct: StoreStruct, from: number, to: number) => void) => boolean;
|
|
67
|
+
export declare const walkIdSet: (Y: EngineApi, doc: EngineDoc, idSet: IdSetLike, fn: (struct: StoreStruct, from: number, to: number) => boolean | void) => boolean;
|
|
97
68
|
/**
|
|
98
69
|
* The id the local `redone` chain leads `id` to: the copy an undo or redo
|
|
99
70
|
* on THIS replica re-created of a deleted item (redo copies chain), or `id`
|
|
@@ -143,8 +114,8 @@ export declare const asYNode: (node: EngineNode) => YNode;
|
|
|
143
114
|
/** A new detached node of the engine, through the structural view. */
|
|
144
115
|
export declare const newNode: (Y: EngineApi, name: string) => EngineNode;
|
|
145
116
|
/**
|
|
146
|
-
* A
|
|
147
|
-
*
|
|
117
|
+
* A bounded read cursor on `node` (the fork's `RangeCursor`), in the
|
|
118
|
+
* caller's view of a cursor.
|
|
148
119
|
*/
|
|
149
120
|
export declare const rangeCursorOf: <C>(Y: EngineApi, node: EngineNode) => C;
|
|
150
121
|
/**
|
|
@@ -159,11 +130,6 @@ export declare const firstItem: <I = StoreStruct>(node: EngineNode | YNode) => I
|
|
|
159
130
|
export declare const sequenceLength: (node: EngineNode | YNode) => number;
|
|
160
131
|
/** The item a node is the value of (`_item`), in the caller's view. */
|
|
161
132
|
export declare const itemOf: <I = StoreStruct>(node: EngineNode) => I | null;
|
|
162
|
-
/**
|
|
163
|
-
* Run `f` with `node`'s renderer (vendor `_renderer`) set aside: a write
|
|
164
|
-
* addresses live-content space, whatever renderer a reader installed.
|
|
165
|
-
*/
|
|
166
|
-
export declare const withoutRenderer: <T>(node: EngineNode, f: () => T) => T;
|
|
167
133
|
/** The struct store's reads edytor makes (vendor `doc.store`). */
|
|
168
134
|
export type StoreLike = {
|
|
169
135
|
clients: Map<number, StoreStruct[]>;
|
|
@@ -195,6 +161,14 @@ export declare const collectNow: (item: object, tr: unknown) => void;
|
|
|
195
161
|
* `afterTransaction`), with the caller's view of a transaction.
|
|
196
162
|
*/
|
|
197
163
|
export declare const onTransaction: <T>(doc: EngineDoc | YDoc, event: "beforeTransaction" | "afterTransaction", f: (tr: T) => void) => void;
|
|
164
|
+
/**
|
|
165
|
+
* Whether a transaction changed one of `nodes` or a node under one: its
|
|
166
|
+
* `changed` types and their ancestors (what a deep observer of `nodes`
|
|
167
|
+
* would have heard; the engine has none, fork patch YP19).
|
|
168
|
+
*/
|
|
169
|
+
export declare const changedUnder: (tr: {
|
|
170
|
+
changed: Map<unknown, unknown>;
|
|
171
|
+
}, nodes: readonly unknown[]) => boolean;
|
|
198
172
|
/** The steps of a history's undo stack (or its redo stack), in the caller's view. */
|
|
199
173
|
export declare const stepsOf: <S>(stack: YUndoManager["undoStack"]) => S[];
|
|
200
174
|
/** An engine id set as the model reads and writes it. */
|
|
@@ -218,10 +192,31 @@ export declare const engineOps: (Y: EngineApi) => {
|
|
|
218
192
|
/** The item starting at `client:clock`, split there, inside `tr`. */
|
|
219
193
|
cleanStart: <I = StoreStruct>(tr: unknown, client: number, clock: number) => I;
|
|
220
194
|
/**
|
|
221
|
-
* Re-create deleted `item`
|
|
222
|
-
*
|
|
195
|
+
* Re-create deleted `item` (`redoItem`, fork patch YP18): its copy, or
|
|
196
|
+
* `null` when it cannot come back. `items` are re-created with it (a
|
|
197
|
+
* parent among them first); an attr does not come back over a later
|
|
198
|
+
* write unless `skipped` (the step's inserts) or `deletedByHistory`
|
|
199
|
+
* holds that write.
|
|
223
200
|
*/
|
|
224
|
-
redo: <I = StoreStruct>(tr: unknown, item: I, items: Set<I>,
|
|
201
|
+
redo: <I = StoreStruct>(tr: unknown, item: I, items: Set<I>, skipped?: IdSetLike, deletedByHistory?: (id: {
|
|
202
|
+
client: number;
|
|
203
|
+
clock: number;
|
|
204
|
+
}) => boolean) => I | null;
|
|
205
|
+
/** Merge id sets into a new one. */
|
|
206
|
+
merge: (sets: IdSetLike[]) => IdSetOf;
|
|
207
|
+
/** Whether a store struct is an item (not a GC or a Skip). */
|
|
208
|
+
isItem: (struct: unknown) => struct is StoreStruct;
|
|
209
|
+
/** Whether `item` sits in `node`'s subtree. */
|
|
210
|
+
inside: (node: EngineNode, item: StoreStruct) => boolean;
|
|
211
|
+
/** Keep `item` (and its parents) from collection (`keepItem`). */
|
|
212
|
+
keep: (item: StoreStruct) => void;
|
|
213
|
+
/** The newest copy a local undo or redo made of `item` (its `redone` chain), split there, inside `tr`. */
|
|
214
|
+
latest: (tr: unknown, item: StoreStruct) => StoreStruct;
|
|
215
|
+
/** Delete `item` inside `tr`. */
|
|
216
|
+
remove: (tr: unknown, item: StoreStruct) => void;
|
|
217
|
+
/** Listen to a doc event (vendor `on`/`off`), with the caller's view of its arguments. */
|
|
218
|
+
on: (doc: EngineDoc, event: string, f: (...args: never[]) => void) => void;
|
|
219
|
+
off: (doc: EngineDoc, event: string, f: (...args: never[]) => void) => void;
|
|
225
220
|
/**
|
|
226
221
|
* Integrate a new item holding `content` right after `left` (its
|
|
227
222
|
* origin: `left`'s last id) in `parent`, written by `client` at
|
package/dist/crdt/structs.js
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendor internals — the ONE place Edytor code reaches into the engine's
|
|
3
|
+
* private state (the struct store, a node's attr items and first item,
|
|
4
|
+
* the doc's collection settings and transaction events) and calls the
|
|
5
|
+
* engine's internal functions with Edytor's structural views of its
|
|
6
|
+
* objects. Centralizing these keeps the blast radius of a vendored engine
|
|
7
|
+
* upgrade in one module: when an internal is renamed or reshaped, the
|
|
8
|
+
* accessors below are the lines to change, and the fail-fast checks break
|
|
9
|
+
* loudly at upgrade time instead of silently disabling run invalidation or
|
|
10
|
+
* history lineage (the old optional-chained reads turned a rename into a
|
|
11
|
+
* silent no-op).
|
|
12
|
+
*
|
|
13
|
+
* The model works against structural types (`EngineDoc`, `EngineNode`,
|
|
14
|
+
* `StoreStruct`, `IdSetLike`: the subset it reads) while the engine's
|
|
15
|
+
* generated declarations (`vendor/yjs/dts`) type its classes; a real engine
|
|
16
|
+
* object satisfies the structural view at runtime. Each accessor states
|
|
17
|
+
* that correspondence once, so a call site needs no cast.
|
|
18
|
+
*
|
|
19
|
+
* The engine surface is injected (`Y: EngineApi`) like every other bound
|
|
20
|
+
* module — this file never imports vendor `.js`.
|
|
21
|
+
*/
|
|
22
|
+
import { DEV } from 'esm-env';
|
|
1
23
|
/**
|
|
2
24
|
* The doc's struct store — vendor-internal (`doc.store.clients`).
|
|
3
|
-
* FAIL-FAST: a missing store means the doc is not a
|
|
4
|
-
* (or the vendored layout changed) — either way the only
|
|
5
|
-
* is a descriptive throw, never a silent fallback.
|
|
25
|
+
* FAIL-FAST in development: a missing store means the doc is not a
|
|
26
|
+
* vendored-engine doc (or the vendored layout changed) — either way the only
|
|
27
|
+
* honest response is a descriptive throw, never a silent fallback.
|
|
6
28
|
*/
|
|
7
29
|
export const clientsOf = (doc) => {
|
|
8
30
|
const clients = doc.store?.clients;
|
|
9
|
-
if (clients === undefined) {
|
|
31
|
+
if (DEV && clients === undefined) {
|
|
10
32
|
throw new Error('structs: doc.store.clients missing — the vendored engine layout changed (or this doc is not a vendored-engine doc)');
|
|
11
33
|
}
|
|
12
34
|
return clients;
|
|
@@ -28,19 +50,17 @@ export const structAt = (Y, structs, clock) => {
|
|
|
28
50
|
}
|
|
29
51
|
};
|
|
30
52
|
/**
|
|
31
|
-
* Walk every struct an IdSet covers,
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* splits.
|
|
35
|
-
*
|
|
36
|
-
* `fn` returning `false` halts the walk early (caller-side short-circuit).
|
|
53
|
+
* Walk every struct an IdSet covers, in (client, clock) order: `fn(struct,
|
|
54
|
+
* from, to)` gets the struct and the clock range `[from, to)` of it the set
|
|
55
|
+
* covers (a struct can reach past a range a diff of two id sets cut). The
|
|
56
|
+
* walk never splits a struct; `fn` returning `false` halts it.
|
|
37
57
|
*
|
|
38
58
|
* Returns `false` when coverage was INCOMPLETE — a client's struct list
|
|
39
59
|
* was missing or a range start could not be located — so the caller can
|
|
40
60
|
* fall back to an all-consumers/opaque answer instead of trusting a
|
|
41
61
|
* partial walk. `clientsOf` throws first when the store itself is absent.
|
|
42
62
|
*/
|
|
43
|
-
export const
|
|
63
|
+
export const walkIdSet = (Y, doc, idSet, fn) => {
|
|
44
64
|
const clients = clientsOf(doc);
|
|
45
65
|
let complete = true;
|
|
46
66
|
let stopped = false;
|
|
@@ -66,7 +86,7 @@ export const walkIdSetStructs = (Y, doc, idSet, fn) => {
|
|
|
66
86
|
const s = structs[i];
|
|
67
87
|
if (s.id.clock >= end)
|
|
68
88
|
break;
|
|
69
|
-
if (fn(s) === false) {
|
|
89
|
+
if (fn(s, Math.max(r.clock, s.id.clock), Math.min(end, s.id.clock + s.length)) === false) {
|
|
70
90
|
stopped = true;
|
|
71
91
|
return;
|
|
72
92
|
}
|
|
@@ -75,40 +95,6 @@ export const walkIdSetStructs = (Y, doc, idSet, fn) => {
|
|
|
75
95
|
});
|
|
76
96
|
return complete;
|
|
77
97
|
};
|
|
78
|
-
/**
|
|
79
|
-
* {@link walkIdSetStructs}, clipped: `fn(struct, from, to)` gets the clock
|
|
80
|
-
* range `[from, to)` of the struct the id set covers (a struct can reach past
|
|
81
|
-
* a range a diff of two id sets cut).
|
|
82
|
-
*/
|
|
83
|
-
export const walkIdSetRanges = (Y, doc, idSet, fn) => {
|
|
84
|
-
const clients = clientsOf(doc);
|
|
85
|
-
let complete = true;
|
|
86
|
-
idSet.clients.forEach((ranges, client) => {
|
|
87
|
-
const structs = clients.get(client);
|
|
88
|
-
if (structs === undefined) {
|
|
89
|
-
complete = false;
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
for (const r of ranges.getIds()) {
|
|
93
|
-
const end = r.clock + r.len;
|
|
94
|
-
let i;
|
|
95
|
-
try {
|
|
96
|
-
i = Y.findIndexSS(structs, r.clock);
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
complete = false;
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
for (; i < structs.length; i++) {
|
|
103
|
-
const s = structs[i];
|
|
104
|
-
if (s.id.clock >= end)
|
|
105
|
-
break;
|
|
106
|
-
fn(s, Math.max(r.clock, s.id.clock), Math.min(end, s.id.clock + s.length));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
return complete;
|
|
111
|
-
};
|
|
112
98
|
/**
|
|
113
99
|
* The id the local `redone` chain leads `id` to: the copy an undo or redo
|
|
114
100
|
* on THIS replica re-created of a deleted item (redo copies chain), or `id`
|
|
@@ -172,10 +158,10 @@ export const asYNode = (node) => node;
|
|
|
172
158
|
/** A new detached node of the engine, through the structural view. */
|
|
173
159
|
export const newNode = (Y, name) => new Y.Node(name);
|
|
174
160
|
/**
|
|
175
|
-
* A
|
|
176
|
-
*
|
|
161
|
+
* A bounded read cursor on `node` (the fork's `RangeCursor`), in the
|
|
162
|
+
* caller's view of a cursor.
|
|
177
163
|
*/
|
|
178
|
-
export const rangeCursorOf = (Y, node) => new Y.RangeCursor(asYNode(node)
|
|
164
|
+
export const rangeCursorOf = (Y, node) => new Y.RangeCursor(asYNode(node));
|
|
179
165
|
// ── node and document internals ──────────────────────────────────────────
|
|
180
166
|
/**
|
|
181
167
|
* A node's attr entries (vendor `_map`): per key, the item of its current
|
|
@@ -189,21 +175,6 @@ export const firstItem = (node) => node._start ?? null;
|
|
|
189
175
|
export const sequenceLength = (node) => node._length;
|
|
190
176
|
/** The item a node is the value of (`_item`), in the caller's view. */
|
|
191
177
|
export const itemOf = (node) => node._item;
|
|
192
|
-
/**
|
|
193
|
-
* Run `f` with `node`'s renderer (vendor `_renderer`) set aside: a write
|
|
194
|
-
* addresses live-content space, whatever renderer a reader installed.
|
|
195
|
-
*/
|
|
196
|
-
export const withoutRenderer = (node, f) => {
|
|
197
|
-
const n = node;
|
|
198
|
-
const renderer = n._renderer;
|
|
199
|
-
n._renderer = null;
|
|
200
|
-
try {
|
|
201
|
-
return f();
|
|
202
|
-
}
|
|
203
|
-
finally {
|
|
204
|
-
n._renderer = renderer;
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
178
|
/** The doc's struct store (vendor `store`). */
|
|
208
179
|
export const storeOf = (doc) => doc.store;
|
|
209
180
|
/** Whether `doc` collects deleted content at all (vendor `gc`). */
|
|
@@ -230,6 +201,18 @@ export const collectNow = (item, tr) => item.gc(tr, false);
|
|
|
230
201
|
* `afterTransaction`), with the caller's view of a transaction.
|
|
231
202
|
*/
|
|
232
203
|
export const onTransaction = (doc, event, f) => doc.on(event, f);
|
|
204
|
+
/**
|
|
205
|
+
* Whether a transaction changed one of `nodes` or a node under one: its
|
|
206
|
+
* `changed` types and their ancestors (what a deep observer of `nodes`
|
|
207
|
+
* would have heard; the engine has none, fork patch YP19).
|
|
208
|
+
*/
|
|
209
|
+
export const changedUnder = (tr, nodes) => {
|
|
210
|
+
for (const type of tr.changed.keys())
|
|
211
|
+
for (let t = type; t; t = t._item?.parent)
|
|
212
|
+
if (nodes.includes(t))
|
|
213
|
+
return true;
|
|
214
|
+
return false;
|
|
215
|
+
};
|
|
233
216
|
/** The steps of a history's undo stack (or its redo stack), in the caller's view. */
|
|
234
217
|
export const stepsOf = (stack) => stack;
|
|
235
218
|
/**
|
|
@@ -249,10 +232,36 @@ export const engineOps = (Y) => {
|
|
|
249
232
|
/** The item starting at `client:clock`, split there, inside `tr`. */
|
|
250
233
|
cleanStart: (tr, client, clock) => Y.getItemCleanStart(tr, Y.createID(client, clock)),
|
|
251
234
|
/**
|
|
252
|
-
* Re-create deleted `item`
|
|
253
|
-
*
|
|
235
|
+
* Re-create deleted `item` (`redoItem`, fork patch YP18): its copy, or
|
|
236
|
+
* `null` when it cannot come back. `items` are re-created with it (a
|
|
237
|
+
* parent among them first); an attr does not come back over a later
|
|
238
|
+
* write unless `skipped` (the step's inserts) or `deletedByHistory`
|
|
239
|
+
* holds that write.
|
|
254
240
|
*/
|
|
255
|
-
redo: (tr, item, items,
|
|
241
|
+
redo: (tr, item, items, skipped = Y.createIdSet(), deletedByHistory) => Y.redoItem(tr, item, items, skipped, deletedByHistory),
|
|
242
|
+
/** Merge id sets into a new one. */
|
|
243
|
+
merge: (sets) => Y.mergeIdSets(sets),
|
|
244
|
+
/** Whether a store struct is an item (not a GC or a Skip). */
|
|
245
|
+
isItem: (struct) => struct instanceof Y.Item,
|
|
246
|
+
/** Whether `item` sits in `node`'s subtree. */
|
|
247
|
+
inside: (node, item) => Y.isParentOf(asYNode(node), item),
|
|
248
|
+
/** Keep `item` (and its parents) from collection (`keepItem`). */
|
|
249
|
+
keep: (item) => Y.keepItem(item, true),
|
|
250
|
+
/** The newest copy a local undo or redo made of `item` (its `redone` chain), split there, inside `tr`. */
|
|
251
|
+
latest: (tr, item) => {
|
|
252
|
+
if (!item.redone)
|
|
253
|
+
return item;
|
|
254
|
+
const store = tr.doc.store;
|
|
255
|
+
const { item: copy, diff } = Y.followRedone(store, item.id);
|
|
256
|
+
return (diff > 0
|
|
257
|
+
? Y.getItemCleanStart(tr, Y.createID(copy.id.client, copy.id.clock + diff))
|
|
258
|
+
: copy);
|
|
259
|
+
},
|
|
260
|
+
/** Delete `item` inside `tr`. */
|
|
261
|
+
remove: (tr, item) => item.delete(tr),
|
|
262
|
+
/** Listen to a doc event (vendor `on`/`off`), with the caller's view of its arguments. */
|
|
263
|
+
on: (doc, event, f) => doc.on(event, f),
|
|
264
|
+
off: (doc, event, f) => doc.off(event, f),
|
|
256
265
|
/**
|
|
257
266
|
* Integrate a new item holding `content` right after `left` (its
|
|
258
267
|
* origin: `left`'s last id) in `parent`, written by `client` at
|