edytor 1.0.0-rc.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +47 -141
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.d.ts +6 -1
- package/dist/clipboard/htmlFlow.js +26 -13
- 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 +22 -17
- package/dist/cloudflare/DocumentRoom.js +10 -5
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- 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 +20 -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 +9 -30
- package/dist/cloudflare/room/storage.js +52 -104
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +160 -119
- package/dist/components/Block.svelte.d.ts +8 -3
- package/dist/components/Content.svelte +91 -44
- package/dist/components/CustomMark.svelte +46 -0
- package/dist/components/CustomMark.svelte.d.ts +11 -0
- package/dist/components/Edytor.svelte +80 -95
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/InlineBlock.svelte +4 -9
- package/dist/components/Mark.svelte +46 -35
- package/dist/components/Mark.svelte.d.ts +7 -0
- 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 +48 -14
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +8 -13
- package/dist/crdt/data.js +30 -70
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
- package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +34 -64
- package/dist/edytor.svelte.js +118 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -184
- 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 +33 -72
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +92 -72
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -13
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +91 -314
- package/dist/labels.js +180 -396
- 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 -151
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
- package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +20 -17
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +46 -1
- package/dist/plugins/blockHandles/geometry.js +51 -4
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
- 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 +79 -0
- package/dist/plugins/chrome.js +87 -0
- package/dist/plugins/code/CodeHeader.svelte +12 -58
- package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
- package/dist/plugins/code/CodePlugin.svelte +75 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +25 -0
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
- package/dist/plugins/code/code.css +5 -100
- package/dist/plugins/code/header.svelte.d.ts +47 -0
- package/dist/plugins/code/header.svelte.js +141 -0
- package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
- package/dist/plugins/code/languageMenu.svelte.js +199 -0
- package/dist/plugins/code/languages.d.ts +21 -10
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
- package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +18 -129
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
- package/dist/plugins/equation/EquationPlugin.svelte +123 -168
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +74 -36
- package/dist/plugins/equation/equation.svelte.js +74 -66
- package/dist/plugins/equation/importUrl.d.ts +6 -0
- package/dist/plugins/equation/importUrl.js +6 -0
- package/dist/plugins/equation/katex.d.ts +8 -0
- package/dist/plugins/equation/katex.js +77 -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 +5 -151
- package/dist/plugins/image/ImagePlugin.svelte +49 -117
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
- 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 -57
- package/dist/plugins/image/controls.svelte.js +51 -174
- 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 +39 -24
- package/dist/plugins/index.js +30 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
- package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
- package/dist/plugins/marquee/marquee.d.ts +33 -0
- package/dist/plugins/marquee/marquee.js +89 -0
- package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
- package/dist/plugins/marquee/marqueePlugin.js +68 -0
- package/dist/plugins/media/AudioPlugin.svelte +3 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
- package/dist/plugins/media/EmbedPlugin.svelte +93 -77
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -111
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +55 -112
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +69 -0
- package/dist/plugins/media/empty.svelte.js +111 -0
- package/dist/plugins/media/media.d.ts +93 -30
- package/dist/plugins/media/media.js +79 -86
- package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
- package/dist/plugins/media/urlPaste.svelte.js +46 -75
- package/dist/plugins/mention/MentionPlugin.svelte +47 -124
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
- 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 +52 -108
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
- package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +25 -0
- package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.d.ts +9 -0
- package/dist/plugins/richtext/body.js +16 -0
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
- package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +96 -127
- package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
- package/dist/plugins/table/TablePlugin.svelte +116 -171
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +110 -117
- package/dist/plugins/table/chrome.svelte.js +643 -289
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +55 -134
- package/dist/plugins/table/table.d.ts +26 -7
- package/dist/plugins/table/table.js +23 -49
- 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 +29 -66
- package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
- package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +167 -60
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +12 -10
- package/dist/selection/pointer.svelte.js +154 -71
- 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 +263 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +11 -8
- package/dist/selection/visibility.js +23 -8
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -53
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +18 -3
- package/dist/session/navigation.js +194 -153
- package/dist/session/ports.d.ts +7 -0
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +8 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +64 -47
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +32 -0
- package/dist/surface/lines.js +43 -0
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +73 -77
- package/dist/surface/overlay.d.ts +48 -6
- package/dist/surface/overlay.js +133 -23
- 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 +315 -126
- 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 -525
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -43
- 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 -447
- 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 -116
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
- package/dist/plugins/richtext/labels.d.ts +0 -5
- package/dist/plugins/richtext/labels.js +0 -3
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/toolbar/LinkCard.svelte +0 -118
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
- package/dist/plugins/toolbar/Toolbar.svelte +0 -400
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CONTENT_NODE, HORIZON_ROOT, INLINE_NODE, RESTORED_ROOT, TEXT_DELETES_ROOT } from '../schema.js';
|
|
2
|
-
import { attrItems, clientsOf, dropSearchMarkers, engineOps, firstItem, keepFromCollection, nextClock, onTransaction, stepsOf, structAt,
|
|
2
|
+
import { attrItems, clientsOf, dropSearchMarkers, engineOps, firstItem, keepFromCollection, nextClock, onTransaction, stepsOf, structAt, walkIdSet } from '../structs.js';
|
|
3
3
|
import { clip, decode, deleteIndex, encode, FOLD_SPANS, keyOf, mergeSpans, overlaps } from './delete-index.js';
|
|
4
4
|
const REACT = Symbol('edytor.text-deletes');
|
|
5
5
|
const states = new WeakMap();
|
|
6
6
|
export const bindDeletes = (Y) => {
|
|
7
|
-
const { idSet, each, rootSpans, members, liveRoots, shown, indexOf, leaves, holders, minus, parts, addCopies, indexRecord, indexMark,
|
|
7
|
+
const { idSet, each, rootSpans, members, liveRoots, shown, indexOf, leaves, holders, minus, parts, addCopies, indexRecord, indexMark, recordsIn, sync } = deleteIndex(Y);
|
|
8
8
|
const ops = engineOps(Y);
|
|
9
9
|
const attach = (doc) => {
|
|
10
10
|
let s = states.get(doc);
|
|
@@ -75,7 +75,7 @@ export const bindDeletes = (Y) => {
|
|
|
75
75
|
// A leaf has no copy: a local `redone` link left by an earlier
|
|
76
76
|
// restoration points at a copy this lineage no longer shows.
|
|
77
77
|
it.redone = null;
|
|
78
|
-
const copy = ops.redo(tr, it, new Set([it])
|
|
78
|
+
const copy = ops.redo(tr, it, new Set([it]));
|
|
79
79
|
if (copy === null)
|
|
80
80
|
continue;
|
|
81
81
|
dropSearchMarkers(copy.parent);
|
|
@@ -85,7 +85,7 @@ export const bindDeletes = (Y) => {
|
|
|
85
85
|
if (attrs !== undefined) {
|
|
86
86
|
const kids = [...attrs.values()].filter((c) => c.deleted);
|
|
87
87
|
for (const kid of kids)
|
|
88
|
-
ops.redo(tr, kid, new Set(kids)
|
|
88
|
+
ops.redo(tr, kid, new Set(kids));
|
|
89
89
|
}
|
|
90
90
|
const e = {
|
|
91
91
|
c: copy.id.client,
|
|
@@ -252,14 +252,9 @@ export const bindDeletes = (Y) => {
|
|
|
252
252
|
/** The text units `ids` names, as spans. */
|
|
253
253
|
const unitsIn = (s, ids) => {
|
|
254
254
|
const out = [];
|
|
255
|
-
ids
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const lo = Math.max(r.clock, st.id.clock);
|
|
259
|
-
const hi = Math.min(r.clock + r.len, st.id.clock + st.length);
|
|
260
|
-
if (hi > lo && isUnit(st))
|
|
261
|
-
out.push({ c, k: lo, n: hi - lo });
|
|
262
|
-
});
|
|
255
|
+
walkIdSet(Y, s.doc, ids, (st, lo, hi) => {
|
|
256
|
+
if (hi > lo && isUnit(st))
|
|
257
|
+
out.push({ c: st.id.client, k: lo, n: hi - lo });
|
|
263
258
|
});
|
|
264
259
|
return out;
|
|
265
260
|
};
|
|
@@ -320,68 +315,10 @@ export const bindDeletes = (Y) => {
|
|
|
320
315
|
if (tr !== null)
|
|
321
316
|
remove(tr, shown(s, spans.flatMap((sp) => rootSpans(s, sp))));
|
|
322
317
|
},
|
|
323
|
-
/**
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
*/
|
|
328
|
-
heldBefore: (doc, spans, old) => {
|
|
329
|
-
const s = attach(doc);
|
|
330
|
-
return spans
|
|
331
|
-
.flatMap((sp) => rootSpans(s, sp))
|
|
332
|
-
.every((r) => holders(s, r).every((mark) => old(mark.client, mark.clock)));
|
|
333
|
-
},
|
|
334
|
-
/**
|
|
335
|
-
* The purge's part (`room.purge.what`), inside the purge
|
|
336
|
-
* transaction: delete every text delete mark record `old` names, and
|
|
337
|
-
* every restoration record `old` names whose copies are all deleted
|
|
338
|
-
* and that no remaining mark holds; its copies are forgotten (the
|
|
339
|
-
* `gcFilter` no longer keeps them) and collected. Writes no mark.
|
|
340
|
-
*/
|
|
341
|
-
purge: (doc, old) => {
|
|
342
|
-
const s = attach(doc);
|
|
343
|
-
const tr = s.doc._transaction;
|
|
344
|
-
if (tr === null)
|
|
345
|
-
throw new Error('purge: outside a transaction');
|
|
346
|
-
const spans = [];
|
|
347
|
-
const dropped = [];
|
|
348
|
-
for (let it = firstItem(s.marks); it; it = it.right)
|
|
349
|
-
if (!it.deleted)
|
|
350
|
-
for (let j = 0; j < it.length; j++) {
|
|
351
|
-
const r = { client: it.id.client, clock: it.id.clock + j };
|
|
352
|
-
if (!old(r.client, r.clock))
|
|
353
|
-
continue;
|
|
354
|
-
dropped.push(r);
|
|
355
|
-
const last = spans[spans.length - 1];
|
|
356
|
-
if (last !== undefined && last.c === r.client && last.k + last.n === r.clock)
|
|
357
|
-
last.n++;
|
|
358
|
-
else
|
|
359
|
-
spans.push({ c: r.client, k: r.clock, n: 1 });
|
|
360
|
-
}
|
|
361
|
-
dropMarks(s, dropped);
|
|
362
|
-
const marks = dropped.length;
|
|
363
|
-
remove(tr, spans);
|
|
364
|
-
const doomed = [];
|
|
365
|
-
attrItems(s.restored).forEach((it, key) => {
|
|
366
|
-
if (it.deleted || !old(it.id.client, it.id.clock))
|
|
367
|
-
return;
|
|
368
|
-
const [record, bytes] = recordsIn(it, null)[0] ?? [];
|
|
369
|
-
if (bytes === undefined)
|
|
370
|
-
return;
|
|
371
|
-
const copies = copiesOf(record, bytes);
|
|
372
|
-
const dead = copies.every((e) => liveRoots(s, { c: e.c, k: e.k, n: e.n, rk: e.k }).length === 0 &&
|
|
373
|
-
holders(s, { c: e.rc, k: e.rk, n: e.n }).length === 0);
|
|
374
|
-
if (dead)
|
|
375
|
-
doomed.push({ key, copies });
|
|
376
|
-
});
|
|
377
|
-
for (const { key, copies } of doomed) {
|
|
378
|
-
s.restored.deleteAttr(key);
|
|
379
|
-
forget(s, copies);
|
|
380
|
-
collect(s, tr, copies);
|
|
381
|
-
}
|
|
382
|
-
return { marks, records: doomed.length };
|
|
383
|
-
},
|
|
384
|
-
/** The `restoreFilter` and `onApply` options of a history on `doc` (fork patch YP11). */
|
|
318
|
+
/** A doc's index of marks and copies, and the delete the purge writes (`purge.ts`). */
|
|
319
|
+
state: attach,
|
|
320
|
+
remove,
|
|
321
|
+
/** The restore and apply rules of a history on `doc` (`doc/history.ts`). */
|
|
385
322
|
history: (doc, um) => {
|
|
386
323
|
const s = attach(doc);
|
|
387
324
|
const p = { um, watch: [], tr: null, units: [] };
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* when a fold invalidates it, sharing unchanged runs and interned payloads.
|
|
4
4
|
*/
|
|
5
5
|
import { cloneJsonSafe } from '../../../utils/json.js';
|
|
6
|
-
import { canonKey, deepFreeze, displayOf } from '../model.js';
|
|
6
|
+
import { canonKey, deepFreeze, displayOf, readSegs } from '../model.js';
|
|
7
7
|
import { runEquals } from './shared.js';
|
|
8
8
|
/** The run cache of one doc's index. */
|
|
9
9
|
export const indexCache = (ix) => {
|
|
10
|
-
const {
|
|
10
|
+
const { blocks, textConsumers, listConsumers, cache, dirty, foldStats, frames, ownShim } = ix;
|
|
11
11
|
const rangeStats = { items: 0, markers: 0 };
|
|
12
12
|
// ── run cache ────────────────────────────────────────────────────
|
|
13
13
|
const internMap = new Map();
|
|
@@ -97,7 +97,7 @@ export const indexCache = (ix) => {
|
|
|
97
97
|
deps.lists.add(c.m);
|
|
98
98
|
}) ?? [];
|
|
99
99
|
const fresh = [];
|
|
100
|
-
for (const item of
|
|
100
|
+
for (const item of readSegs(segs, rangeStats)) {
|
|
101
101
|
if (item.kind === 'text') {
|
|
102
102
|
const last = fresh[fresh.length - 1];
|
|
103
103
|
const marks = item.marks === undefined ? undefined : intern(item.marks);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { EngineDeepEvent } from '../../engine-api.js';
|
|
2
1
|
import { type BlockId } from '../../placement/model.js';
|
|
3
2
|
import type { ContentRun } from '../runs.js';
|
|
4
3
|
import type { IndexAnchored } from './anchored.js';
|
|
@@ -17,7 +16,7 @@ export declare const indexFold: (ix: IndexState & IndexClaims & IndexStreams & I
|
|
|
17
16
|
openTx: () => Tx | null | undefined;
|
|
18
17
|
syncAll: () => void;
|
|
19
18
|
unfolded: () => boolean;
|
|
20
|
-
onCommit: (
|
|
19
|
+
onCommit: (tr: Tx) => void;
|
|
21
20
|
committed: WeakSet<Tx>;
|
|
22
21
|
};
|
|
23
22
|
export type IndexFold = ReturnType<typeof indexFold>;
|
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
* pending part of every transaction whose commit fold has not run.
|
|
5
5
|
*/
|
|
6
6
|
import { readData } from '../../data.js';
|
|
7
|
+
import { Y } from '../../engine.js';
|
|
7
8
|
import { LIVE_WRITERS, baseIdOf, incarnationId } from '../../incarnations.js';
|
|
8
9
|
import { candidatesOf } from '../../placement/model.js';
|
|
9
10
|
import { CONTENT, NONCE, hasDeleteMark, isNodeLike } from '../../schema.js';
|
|
10
|
-
import { engineOps, itemOf, queuedTransactions, sequenceLength,
|
|
11
|
+
import { changedUnder, engineOps, itemOf, queuedTransactions, sequenceLength, walkIdSet } from '../../structs.js';
|
|
11
12
|
import { DEAD, isBoundary } from '../model.js';
|
|
12
13
|
import { gapOfItem, headOf, rowLength, segmentOfGap, shiftGap } from '../rows.js';
|
|
13
|
-
import { CONTENT_ATTR, EMPTY_RUNS, ENTRY_FACET, facetOf, indexChecks, sameShape, typeAttr } from './shared.js';
|
|
14
|
+
import { CONTENT_ATTR, EMPTY_RUNS, ENTRY_FACET, facetOf, checksOf, indexChecks, sameShape, typeAttr } from './shared.js';
|
|
14
15
|
/** The fold of one doc's index, over every part it folds into. */
|
|
15
16
|
export const indexFold = (ix) => {
|
|
16
|
-
const {
|
|
17
|
+
const { doc, registry, dataRoot, blocks, shells, textConsumers, ownerSeeds, rows, retargets, unresolved, reclaim, placementSeeds, stateSeeds, incarnations, cache, dirty, foldStats, frames, candidates, ownerOf, invalidateBlock, streamOf, streamsIn, setRow, scanRow, refreshDelims, placeHome, applyRetargets, noteKind, argParent, noteCands, kept, updateBlockRec, ensureRec, syncIncarnations, computeRuns, tableFacts } = ix;
|
|
17
18
|
const ops = engineOps(Y);
|
|
18
19
|
const NO_EDITS = Object.freeze({
|
|
19
20
|
edits: [],
|
|
@@ -38,7 +39,7 @@ export const indexFold = (ix) => {
|
|
|
38
39
|
if (ins === undefined || del === undefined)
|
|
39
40
|
return (built = null);
|
|
40
41
|
const out = new Map();
|
|
41
|
-
const visit = (idSet, deleted) =>
|
|
42
|
+
const visit = (idSet, deleted) => walkIdSet(Y, doc, idSet, (s, from, to) => {
|
|
42
43
|
const parent = s.parent;
|
|
43
44
|
if (s.parentSub !== null || !isNodeLike(parent))
|
|
44
45
|
return;
|
|
@@ -384,7 +385,7 @@ export const indexFold = (ix) => {
|
|
|
384
385
|
for (const b of ctx.invalidated)
|
|
385
386
|
dirty.add(b);
|
|
386
387
|
if (indexChecks.on)
|
|
387
|
-
ix.
|
|
388
|
+
checksOf(ix).check();
|
|
388
389
|
if (derived)
|
|
389
390
|
ix.version++;
|
|
390
391
|
if (ix.reporting) {
|
|
@@ -449,8 +450,8 @@ export const indexFold = (ix) => {
|
|
|
449
450
|
changed.set(s.parent, (subs = new Set()));
|
|
450
451
|
subs.add(s.parentSub);
|
|
451
452
|
};
|
|
452
|
-
|
|
453
|
-
|
|
453
|
+
walkIdSet(Y, doc, ins, note);
|
|
454
|
+
walkIdSet(Y, doc, del, note);
|
|
454
455
|
fold(changed, makeEditIndex(ins, del));
|
|
455
456
|
return true;
|
|
456
457
|
};
|
|
@@ -473,9 +474,13 @@ export const indexFold = (ix) => {
|
|
|
473
474
|
tr.insertSet !== undefined &&
|
|
474
475
|
tr.deleteSet !== undefined &&
|
|
475
476
|
lengthOf(tr.insertSet) + lengthOf(tr.deleteSet) !== (cursors.get(tr)?.mark ?? 0));
|
|
476
|
-
/**
|
|
477
|
-
|
|
478
|
-
|
|
477
|
+
/**
|
|
478
|
+
* The commit of a transaction that changed the registry or a node under
|
|
479
|
+
* it: fold `transaction.changed` once (the report publishes from `update`).
|
|
480
|
+
*/
|
|
481
|
+
const onCommit = (tr) => {
|
|
482
|
+
if (!changedUnder(tr, [registry]))
|
|
483
|
+
return;
|
|
479
484
|
let [ins, del] = [tr.insertSet, tr.deleteSet];
|
|
480
485
|
// The writes a read folded already moved the rows: only the rest
|
|
481
486
|
// are edits now (the facets fold again, idempotent).
|
|
@@ -18,16 +18,6 @@ export declare const indexLayout: (ix: IndexState) => {
|
|
|
18
18
|
cellRank: (row: BlockId, id: BlockId) => string | undefined;
|
|
19
19
|
tableFacts: (b: BlockId, data: unknown) => string;
|
|
20
20
|
declaredItems: () => Set<string>;
|
|
21
|
-
dissolveVisit: (kids: Map<BlockId | null, ChildSlot[]>, out: Set<BlockId>, ids: readonly BlockId[], layout: boolean, ctx?: {
|
|
22
|
-
table: BlockId;
|
|
23
|
-
} | {
|
|
24
|
-
row: BlockId;
|
|
25
|
-
columns: Map<string, number> | null;
|
|
26
|
-
seen: Set<string>;
|
|
27
|
-
} | null) => {
|
|
28
|
-
id: BlockId;
|
|
29
|
-
kids: BlockId[];
|
|
30
|
-
}[];
|
|
31
21
|
dissolve: (kids: Map<BlockId | null, ChildSlot[]>) => Set<BlockId>;
|
|
32
22
|
redissolve: (changed: Map<BlockId, [BlockId | null | undefined, BlockId | null | undefined]>, kinds: Iterable<BlockId>) => Set<BlockId>;
|
|
33
23
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { encodeRank, RANK_VMAX } from '../../placement/rank.js';
|
|
2
|
-
import { unlistedRank } from '../../tables.js';
|
|
2
|
+
import { listedColumns, unlistedRank } from '../../tables.js';
|
|
3
3
|
/** The layout rules of one doc's index, over its state. */
|
|
4
4
|
export const indexLayout = (ix) => {
|
|
5
5
|
const { blocks, kindsOf } = ix;
|
|
@@ -46,19 +46,10 @@ export const indexLayout = (ix) => {
|
|
|
46
46
|
if (data === null || typeof data !== 'object')
|
|
47
47
|
return null;
|
|
48
48
|
let index = columnsMemo.get(data);
|
|
49
|
-
if (index
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
index = null;
|
|
53
|
-
if (Array.isArray(columns)) {
|
|
54
|
-
index = new Map();
|
|
55
|
-
for (const c of columns) {
|
|
56
|
-
const id = c?.id;
|
|
57
|
-
if (typeof id === 'string' && !index.has(id))
|
|
58
|
-
index.set(id, index.size);
|
|
59
|
-
}
|
|
49
|
+
if (index === undefined) {
|
|
50
|
+
const ids = listedColumns(data);
|
|
51
|
+
columnsMemo.set(data, (index = ids && new Map(ids.map((id, i) => [id, i]))));
|
|
60
52
|
}
|
|
61
|
-
columnsMemo.set(data, index);
|
|
62
53
|
return index;
|
|
63
54
|
};
|
|
64
55
|
/** The column a cell names (`data.column`), if any. */
|
|
@@ -75,12 +66,8 @@ export const indexLayout = (ix) => {
|
|
|
75
66
|
const k = kindsOf.get(b);
|
|
76
67
|
if (data === null || typeof data !== 'object')
|
|
77
68
|
return '';
|
|
78
|
-
if (k?.table)
|
|
79
|
-
|
|
80
|
-
return Array.isArray(columns)
|
|
81
|
-
? JSON.stringify(columns.map((c) => c?.id ?? null))
|
|
82
|
-
: '';
|
|
83
|
-
}
|
|
69
|
+
if (k?.table)
|
|
70
|
+
return JSON.stringify(listedColumns(data));
|
|
84
71
|
if (k?.cell) {
|
|
85
72
|
const c = data.column;
|
|
86
73
|
return typeof c === 'string' ? c : '';
|
|
@@ -281,7 +268,6 @@ export const indexLayout = (ix) => {
|
|
|
281
268
|
cellRank,
|
|
282
269
|
tableFacts,
|
|
283
270
|
declaredItems,
|
|
284
|
-
dissolveVisit,
|
|
285
271
|
dissolve,
|
|
286
272
|
redissolve
|
|
287
273
|
};
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* the maintained facts must re-decide.
|
|
5
5
|
*/
|
|
6
6
|
import { readData } from '../../data.js';
|
|
7
|
+
import { Y } from '../../engine.js';
|
|
7
8
|
import { baseIdOf, incarnationNode, incarnationsOf, isIncarnationId } from '../../incarnations.js';
|
|
8
9
|
import { candidatesOf } from '../../placement/model.js';
|
|
9
10
|
import { engineOps } from '../../structs.js';
|
|
@@ -12,7 +13,7 @@ import { readClaims } from '../model.js';
|
|
|
12
13
|
import { dropFrom, sameShape, typeAttr } from './shared.js';
|
|
13
14
|
/** The block records of one doc's index. */
|
|
14
15
|
export const indexRecords = (ix) => {
|
|
15
|
-
const {
|
|
16
|
+
const { registry, blocks, shells, attachOf, foreignOf, retargets, reclaim, byArgParent, placementSeeds, stateSeeds, incarnations, noteClaims, effectiveClaims, noteKind, argParent, noteCands } = ix;
|
|
16
17
|
// ── records ──────────────────────────────────────────────────────
|
|
17
18
|
/** Fork patch YP14's predicate: the registry values the engine keeps. */
|
|
18
19
|
const kept = engineOps(Y).isKeptReplaced;
|
|
@@ -5,16 +5,15 @@
|
|
|
5
5
|
import { cloneJsonSafe, sameIds } from '../../../utils/json.js';
|
|
6
6
|
import { readData } from '../../data.js';
|
|
7
7
|
import { callEach } from '../../protocols/observable.js';
|
|
8
|
-
import {
|
|
9
|
-
import { EMPTY_IDS, dataOf, indexChecks, keyOf } from './shared.js';
|
|
8
|
+
import { EMPTY_IDS, checksOf, dataOf, indexChecks, keyOf } from './shared.js';
|
|
10
9
|
/** The change report of one doc's index. */
|
|
11
10
|
export const indexReporter = (ix) => {
|
|
12
|
-
const {
|
|
11
|
+
const { doc, dataRoot, blocks, following, dirtyLists, leftLists, candidates, ensurePlacements, typeOf, runs, syncAll } = ix;
|
|
13
12
|
const docData = () => cloneJsonSafe(readData(dataRoot) ?? {});
|
|
14
13
|
let dataChanged = false;
|
|
15
14
|
// ── projection ───────────────────────────────────────────────────
|
|
16
|
-
/** `id`'s visible content items,
|
|
17
|
-
const itemsOf = (id) =>
|
|
15
|
+
/** `id`'s visible content items: its runs, as fresh wrappers over their shared payloads. */
|
|
16
|
+
const itemsOf = (id) => runs(id).map((r) => ({ ...r }));
|
|
18
17
|
const projectBlock = (id) => {
|
|
19
18
|
const rec = blocks.get(id);
|
|
20
19
|
const projected = {
|
|
@@ -290,7 +289,7 @@ export const indexReporter = (ix) => {
|
|
|
290
289
|
leftLists.clear();
|
|
291
290
|
ix.allListsDirty = false;
|
|
292
291
|
if (indexChecks.on)
|
|
293
|
-
ix.
|
|
292
|
+
checksOf(ix).checkPublished(published);
|
|
294
293
|
const empty = r.added.size + r.removed.size + r.moved.size + r.meta.size + r.content.size + r.order.size;
|
|
295
294
|
return empty === 0 && !r.data ? null : r;
|
|
296
295
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { EngineNode } from '../../engine-api.js';
|
|
2
2
|
import type { BlockId, BlockRec } from '../../placement/model.js';
|
|
3
3
|
import type { ContentRun, DisplayRoles } from '../runs.js';
|
|
4
|
+
import type { SelfChecks } from './state.js';
|
|
4
5
|
/**
|
|
5
6
|
* The facet name of a block's registry entry itself (inserted or removed) —
|
|
6
7
|
* every other facet is named by the block attr it entered through.
|
|
@@ -48,14 +49,20 @@ export type Cached = {
|
|
|
48
49
|
*/
|
|
49
50
|
export declare const sameShape: (roles: DisplayRoles, a: string, b: string) => boolean;
|
|
50
51
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* the
|
|
52
|
+
* The index's self-checks, off in production: a test lane's setup installs
|
|
53
|
+
* `of`, which builds an index's checker (on its first check), and turns them
|
|
54
|
+
* `on`. After every fold the index checks each fact it keeps incrementally
|
|
55
|
+
* against a rebuild from the replicated state and throws on the first
|
|
56
|
+
* difference; after every report, the published tree.
|
|
55
57
|
*/
|
|
56
58
|
export declare const indexChecks: {
|
|
57
59
|
on: boolean;
|
|
60
|
+
of?: (ix: never) => SelfChecks;
|
|
58
61
|
};
|
|
62
|
+
/** `ix`'s checker ({@link indexChecks}), built on its first check. */
|
|
63
|
+
export declare const checksOf: (ix: {
|
|
64
|
+
checks: SelfChecks | null;
|
|
65
|
+
}) => SelfChecks;
|
|
59
66
|
/** Add `value` to `key`'s set in `index`. */
|
|
60
67
|
export declare const addTo: <K, V>(index: Map<K, Set<V>>, key: K, value: V) => void;
|
|
61
68
|
/** Remove `value` from `key`'s set in `index` (the set goes once empty). */
|
|
@@ -74,14 +74,15 @@ export const sameShape = (roles, a, b) => {
|
|
|
74
74
|
cells.has(a) === cells.has(b));
|
|
75
75
|
};
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* the
|
|
77
|
+
* The index's self-checks, off in production: a test lane's setup installs
|
|
78
|
+
* `of`, which builds an index's checker (on its first check), and turns them
|
|
79
|
+
* `on`. After every fold the index checks each fact it keeps incrementally
|
|
80
|
+
* against a rebuild from the replicated state and throws on the first
|
|
81
|
+
* difference; after every report, the published tree.
|
|
81
82
|
*/
|
|
82
|
-
export const indexChecks = {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
export const indexChecks = { on: false };
|
|
84
|
+
/** `ix`'s checker ({@link indexChecks}), built on its first check. */
|
|
85
|
+
export const checksOf = (ix) => (ix.checks ??= indexChecks.of(ix));
|
|
85
86
|
/** Add `value` to `key`'s set in `index`. */
|
|
86
87
|
export const addTo = (index, key, value) => {
|
|
87
88
|
let set = index.get(key);
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
* indexes, the counters and flags) are read through `ix` at every use.
|
|
6
6
|
* What one part alone keeps stays in that part.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { EngineDoc, EngineTransaction } from '../../engine-api.js';
|
|
9
9
|
import { type BlockId, type BlockRec, type ChildSlot, type ResolvedPlacement } from '../../placement/model.js';
|
|
10
10
|
import type { IdSetLike } from '../../structs.js';
|
|
11
|
-
import type { TextEngine } from '../model.js';
|
|
12
11
|
import type { LiveRow, RowItem } from '../rows.js';
|
|
13
12
|
import type { ContentRun, DisplayRoles, Folded } from '../runs.js';
|
|
14
13
|
import type { Cached } from './shared.js';
|
|
@@ -76,36 +75,7 @@ export type SelfChecks = {
|
|
|
76
75
|
checkPublished: (pub: Published) => void;
|
|
77
76
|
};
|
|
78
77
|
/** Build the empty state of `doc`'s index. */
|
|
79
|
-
export declare const indexState: (
|
|
80
|
-
Y: Pick<typeof import("../../vendor/yjs/dts/index.js"), import("../../engine.js").EngineSymbol>;
|
|
81
|
-
T: {
|
|
82
|
-
newNode: (name: string) => import("../../engine-api.js").EngineNode;
|
|
83
|
-
resolveAnchor: (doc: EngineDoc, text: import("../../engine-api.js").EngineNode, anchor: import("../model.js").Anchor) => number | null;
|
|
84
|
-
anchorAt: (text: import("../../engine-api.js").EngineNode, index: number, assoc: number) => import("../model.js").Anchor;
|
|
85
|
-
openRangeCursor: (text: import("../../engine-api.js").EngineNode) => import("../model.js").RangeCursor;
|
|
86
|
-
itemsOfRange: (text: import("../../engine-api.js").EngineNode, i0: number, i1: number) => import("../model.js").RangeItem[];
|
|
87
|
-
readSegs: (segs: readonly import("../model.js").Seg[], stats?: import("../model.js").RangeReadStats) => import("../model.js").RangeItem[];
|
|
88
|
-
computeOwnership: (doc: EngineDoc, given: ReadonlyMap<import("../model.js").BlockId, import("../model.js").TextBlockRec>) => import("../model.js").Ownership;
|
|
89
|
-
flatten: (b: import("../model.js").BlockId, blocks: unknown, own: import("../model.js").Ownership) => import("../model.js").Seg[];
|
|
90
|
-
ownedLength: (segs: readonly import("../model.js").Seg[]) => number;
|
|
91
|
-
contentItemsOf: (b: import("../model.js").BlockId, blocks: unknown, own: import("../model.js").Ownership) => import("../model.js").RangeItem[];
|
|
92
|
-
blockTextOf: (b: import("../model.js").BlockId, blocks: unknown, own: import("../model.js").Ownership) => string;
|
|
93
|
-
insertIntoText: (doc: EngineDoc, blocks: unknown, own: import("../model.js").Ownership, b: import("../model.js").BlockId, offset: number, payload: string | import("../../engine-api.js").EngineNode, marks?: Record<string, unknown>) => void;
|
|
94
|
-
deleteRange: (doc: EngineDoc, blocks: unknown, own: import("../model.js").Ownership, b: import("../model.js").BlockId, offset: number, length: number) => void;
|
|
95
|
-
formatRangeIn: (doc: EngineDoc, blocks: unknown, own: import("../model.js").Ownership, b: import("../model.js").BlockId, offset: number, length: number, formats: Record<string, unknown>) => void;
|
|
96
|
-
purgeStreams: (streams: readonly import("../model.js").Stream[]) => void;
|
|
97
|
-
findAtom: (own: import("../model.js").Ownership, b: import("../model.js").BlockId, inlineId: string) => {
|
|
98
|
-
text: import("../../engine-api.js").EngineNode;
|
|
99
|
-
at: number;
|
|
100
|
-
node: import("../../engine-api.js").EngineNode;
|
|
101
|
-
} | null;
|
|
102
|
-
splitAt: (blocks: ReadonlyMap<import("../model.js").BlockId, import("../model.js").TextBlockRec>, own: import("../model.js").Ownership, b: import("../model.js").BlockId, offset: number, newId: import("../model.js").BlockId, n: number) => import("../model.js").MergeClaim[];
|
|
103
|
-
claimInto: (blocks: ReadonlyMap<import("../model.js").BlockId, import("../model.js").TextBlockRec>, own: Pick<import("../model.js").Ownership, "streamOf">, from: import("../model.js").BlockId, into: import("../model.js").BlockId) => void;
|
|
104
|
-
ownText: (doc: EngineDoc, rec: import("../model.js").TextBlockRec) => {
|
|
105
|
-
from: unknown;
|
|
106
|
-
to: number;
|
|
107
|
-
};
|
|
108
|
-
};
|
|
78
|
+
export declare const indexState: (doc: EngineDoc) => {
|
|
109
79
|
doc: EngineDoc;
|
|
110
80
|
registry: import("../../engine-api.js").EngineNode;
|
|
111
81
|
/** The document's own data (`crdt/data.ts`): outside the registry, reported apart. */
|
|
@@ -217,7 +187,7 @@ export declare const indexState: (Y: EngineApi, T: TextEngine, doc: EngineDoc) =
|
|
|
217
187
|
frames: Set<Folded>;
|
|
218
188
|
candidates: Set<string>;
|
|
219
189
|
reporting: boolean;
|
|
220
|
-
/** The self-checks, once built (`
|
|
190
|
+
/** The self-checks, once built (`checksOf`). */
|
|
221
191
|
checks: SelfChecks | null;
|
|
222
192
|
};
|
|
223
193
|
export type IndexState = ReturnType<typeof indexState>;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { REGISTRY_KEY } from '../../placement/model.js';
|
|
2
2
|
import { DOC_DATA_ROOT } from '../../schema.js';
|
|
3
3
|
/** Build the empty state of `doc`'s index. */
|
|
4
|
-
export const indexState = (
|
|
4
|
+
export const indexState = (doc) => {
|
|
5
5
|
// The children index starts as the one without the layout rules (no layout yet).
|
|
6
6
|
const kids0 = new Map();
|
|
7
7
|
const slots0 = new Map();
|
|
8
8
|
return {
|
|
9
|
-
Y,
|
|
10
|
-
T,
|
|
11
9
|
doc,
|
|
12
10
|
registry: doc.get(REGISTRY_KEY),
|
|
13
11
|
/** The document's own data (`crdt/data.ts`): outside the registry, reported apart. */
|
|
@@ -114,7 +112,7 @@ export const indexState = (Y, T, doc) => {
|
|
|
114
112
|
frames: new Set(),
|
|
115
113
|
candidates: new Set(),
|
|
116
114
|
reporting: false,
|
|
117
|
-
/** The self-checks, once built (`
|
|
115
|
+
/** The self-checks, once built (`checksOf`). */
|
|
118
116
|
checks: null
|
|
119
117
|
};
|
|
120
118
|
};
|
|
@@ -29,7 +29,10 @@
|
|
|
29
29
|
*
|
|
30
30
|
* The item guards are `text/items.ts`, the range reads `text/ranges.ts` and
|
|
31
31
|
* the stream table `text/streams.ts` (re-exported here); this module declares
|
|
32
|
-
* the text model's types and
|
|
32
|
+
* the text model's types and its reads and writes, each a function edytor's
|
|
33
|
+
* modules import (the public binding's `text` lists them, `bindText`). The
|
|
34
|
+
* from-scratch ownership (`computeOwnership`) is the oracle the index is
|
|
35
|
+
* checked against: only the public binding and the tests reach it.
|
|
33
36
|
*/
|
|
34
37
|
import type { EngineApi, EngineDoc, EngineNode } from '../engine-api.js';
|
|
35
38
|
import { type IdSetOf } from '../structs.js';
|
|
@@ -239,7 +242,84 @@ export type Ownership = {
|
|
|
239
242
|
/** `b`'s effective claims (`merge.claim.anchor`), when the context computed them. */
|
|
240
243
|
claimsOf?: (b: BlockId) => readonly Claim[];
|
|
241
244
|
};
|
|
242
|
-
|
|
245
|
+
/** Construct a detached v14 node, viewed through the structural interface. */
|
|
246
|
+
export declare const newNode: (name: string) => EngineNode;
|
|
247
|
+
/** Anchor → live index in `text`, or `null` when its item is not integrated here. */
|
|
248
|
+
export declare const resolveAnchor: (doc: EngineDoc, text: EngineNode, anchor: Anchor) => number | null;
|
|
249
|
+
/**
|
|
250
|
+
* Live index → anchor bound on the `assoc` side: `assoc < 0` binds the unit
|
|
251
|
+
* before `index` (an insert at `index` lands right of it; `i: null` at the
|
|
252
|
+
* text start), `assoc >= 0` the unit at `index` (`i: null` at the text end).
|
|
253
|
+
*/
|
|
254
|
+
export declare const anchorAt: (text: EngineNode, index: number, assoc: number) => Anchor;
|
|
255
|
+
/** A bounded read cursor on `text` (live-content space). */
|
|
256
|
+
export declare const openRangeCursor: (text: EngineNode) => RangeCursor;
|
|
257
|
+
export declare const itemsOfRange: (text: EngineNode, i0: number, i1: number) => RangeItem[];
|
|
258
|
+
/** The items of `segs`, one cursor per backing text. */
|
|
259
|
+
export declare const readSegs: (segs: readonly Seg[], stats?: RangeReadStats) => RangeItem[];
|
|
260
|
+
export declare const computeOwnership: (doc: EngineDoc, given: ReadonlyMap<BlockId, TextBlockRec>) => Ownership;
|
|
261
|
+
/** `b`'s display pieces (`[]` when hidden or streamless and claimless). */
|
|
262
|
+
export declare const flatten: (b: BlockId, blocks: unknown, own: Ownership) => Seg[];
|
|
263
|
+
export declare const contentItemsOf: (b: BlockId, blocks: unknown, own: Ownership) => RangeItem[];
|
|
264
|
+
export declare const blockTextOf: (b: BlockId, blocks: unknown, own: Ownership) => string;
|
|
265
|
+
/**
|
|
266
|
+
* Insert at a display offset, beside the boundary the engine walk and the
|
|
267
|
+
* left side choose. The display must be non-empty: a streamless block gets
|
|
268
|
+
* its own text first ({@link ownText}). The content goes in its gap
|
|
269
|
+
* (`insertInGap`, fork patch YP13: after the marks attached to the text before it,
|
|
270
|
+
* before those attached to the text after it); text then shows exactly
|
|
271
|
+
* `marks` (an operation for each mark its gap gave it otherwise).
|
|
272
|
+
*/
|
|
273
|
+
export declare const insertIntoText: (doc: EngineDoc, blocks: unknown, own: Ownership, b: BlockId, offset: number, payload: string | EngineNode, marks?: Record<string, unknown>) => void;
|
|
274
|
+
/** The per-stream delete: each range lies inside one stream's pieces, so no boundary is ever removed. */
|
|
275
|
+
export declare const deleteRange: (doc: EngineDoc, blocks: unknown, own: Ownership, b: BlockId, offset: number, length: number) => void;
|
|
276
|
+
export declare const formatRangeIn: (doc: EngineDoc, blocks: unknown, own: Ownership, b: BlockId, offset: number, length: number, formats: Record<string, unknown>) => void;
|
|
277
|
+
/**
|
|
278
|
+
* Delete the content of streams `streams` (the room's purge of a
|
|
279
|
+
* block deleted past the horizon): every piece, so no boundary goes and
|
|
280
|
+
* each stream still delimits, writing no delete mark.
|
|
281
|
+
* Streams of one text are deleted from its end, so the indices the
|
|
282
|
+
* caller read stay valid.
|
|
283
|
+
*/
|
|
284
|
+
export declare const purgeStreams: (streams: readonly Stream[]) => void;
|
|
285
|
+
/** The inline atom `inlineId` in `b`'s display: its text, engine index and node. */
|
|
286
|
+
export declare const findAtom: (own: Ownership, b: BlockId, inlineId: string) => {
|
|
287
|
+
text: EngineNode;
|
|
288
|
+
at: number;
|
|
289
|
+
node: EngineNode;
|
|
290
|
+
} | null;
|
|
291
|
+
/**
|
|
292
|
+
* Split `b`'s display at `offset` for the new block `newId` (incarnation
|
|
293
|
+
* `n`): one boundary through fork patch YP7 at the end of the gap, and the claims that
|
|
294
|
+
* follow the split point — every claim of the stream's own block, then each
|
|
295
|
+
* holder's claims after the one that led down — returned for re-insertion
|
|
296
|
+
* on the new block and deleted from their holders. No text is copied.
|
|
297
|
+
*/
|
|
298
|
+
export declare const splitAt: (blocks: ReadonlyMap<BlockId, TextBlockRec>, own: Ownership, b: BlockId, offset: number, newId: BlockId, n: number) => MergeClaim[];
|
|
299
|
+
/**
|
|
300
|
+
* Append a merge claim `{m: from}` to `into`'s claims list, anchored to
|
|
301
|
+
* the end of `into`'s stream (`merge.claim.anchor`): its last unit (its
|
|
302
|
+
* opening boundary when empty; none at an own text's start) and the item
|
|
303
|
+
* after it.
|
|
304
|
+
*/
|
|
305
|
+
export declare const claimInto: (blocks: ReadonlyMap<BlockId, TextBlockRec>, own: Pick<Ownership, "streamOf">, from: BlockId, into: BlockId) => void;
|
|
306
|
+
/**
|
|
307
|
+
* Give streamless block `rec` its own text and re-mint its nonce, so a late
|
|
308
|
+
* copy of its old boundary is inert. Both writes carry a writer id
|
|
309
|
+
* derived from the block's node and its dead incarnation, so replicas that
|
|
310
|
+
* type into the block concurrently write the SAME items and both typings
|
|
311
|
+
* land in one text (the seed writer's mechanism). Returns the nonce
|
|
312
|
+
* change (the caller moves the block's attribution record with it).
|
|
313
|
+
*/
|
|
314
|
+
export declare const ownText: (doc: EngineDoc, rec: TextBlockRec) => {
|
|
315
|
+
from: unknown;
|
|
316
|
+
to: number;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* The text engine as one object (the public binding's `text`): the reads
|
|
320
|
+
* and writes above. Edytor's own modules import them directly.
|
|
321
|
+
*/
|
|
322
|
+
export declare const bindText: (_Y: EngineApi) => {
|
|
243
323
|
newNode: (name: string) => EngineNode;
|
|
244
324
|
resolveAnchor: (doc: EngineDoc, text: EngineNode, anchor: Anchor) => number | null;
|
|
245
325
|
anchorAt: (text: EngineNode, index: number, assoc: number) => Anchor;
|