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/tables.d.ts
CHANGED
|
@@ -13,6 +13,15 @@ import type { JSONBlock, JSONText } from '../utils/json.js';
|
|
|
13
13
|
* the same.
|
|
14
14
|
*/
|
|
15
15
|
export declare const unlistedRank: (column: string) => number;
|
|
16
|
+
/**
|
|
17
|
+
* The column each entry of a table's `data.columns` names (`null`: none),
|
|
18
|
+
* or `null` when the table lists no columns: its cells then show in their
|
|
19
|
+
* own order (`table.columns`). A column is its first entry
|
|
20
|
+
* ({@link listedColumns}).
|
|
21
|
+
*/
|
|
22
|
+
export declare const columnIds: (data: unknown) => (string | null)[] | null;
|
|
23
|
+
/** The columns a table lists, in order, each once ({@link columnIds}); `null` when none. */
|
|
24
|
+
export declare const listedColumns: (data: unknown) => string[] | null;
|
|
16
25
|
/** The unlisted columns `ids` in their shown order ({@link unlistedRank}). */
|
|
17
26
|
export declare const unlistedOrder: (ids: Iterable<string>) => string[];
|
|
18
27
|
/** What {@link tableBlock} builds. */
|
package/dist/crdt/tables.js
CHANGED
|
@@ -7,6 +7,26 @@ import { hash32 } from './rand.js';
|
|
|
7
7
|
* the same.
|
|
8
8
|
*/
|
|
9
9
|
export const unlistedRank = (column) => hash32(column);
|
|
10
|
+
/**
|
|
11
|
+
* The column each entry of a table's `data.columns` names (`null`: none),
|
|
12
|
+
* or `null` when the table lists no columns: its cells then show in their
|
|
13
|
+
* own order (`table.columns`). A column is its first entry
|
|
14
|
+
* ({@link listedColumns}).
|
|
15
|
+
*/
|
|
16
|
+
export const columnIds = (data) => {
|
|
17
|
+
const columns = data?.columns;
|
|
18
|
+
return Array.isArray(columns)
|
|
19
|
+
? columns.map((c) => {
|
|
20
|
+
const id = c?.id;
|
|
21
|
+
return typeof id === 'string' ? id : null;
|
|
22
|
+
})
|
|
23
|
+
: null;
|
|
24
|
+
};
|
|
25
|
+
/** The columns a table lists, in order, each once ({@link columnIds}); `null` when none. */
|
|
26
|
+
export const listedColumns = (data) => {
|
|
27
|
+
const ids = columnIds(data);
|
|
28
|
+
return ids && [...new Set(ids)].filter((id) => id !== null);
|
|
29
|
+
};
|
|
10
30
|
/** The unlisted columns `ids` in their shown order ({@link unlistedRank}). */
|
|
11
31
|
export const unlistedOrder = (ids) => [...new Set(ids)].sort((a, b) => unlistedRank(a) - unlistedRank(b) || (a < b ? -1 : a > b ? 1 : 0));
|
|
12
32
|
/**
|
|
@@ -108,20 +108,7 @@ export declare const deleteIndex: (Y: EngineApi) => {
|
|
|
108
108
|
liveRoots: (s: State, m: Member) => Span[];
|
|
109
109
|
shown: (s: State, roots: readonly Span[]) => Span[];
|
|
110
110
|
indexOf: (s: State, c: number, k: number) => number;
|
|
111
|
-
order: (s: State, a: {
|
|
112
|
-
c: number;
|
|
113
|
-
k: number;
|
|
114
|
-
}, b: {
|
|
115
|
-
c: number;
|
|
116
|
-
k: number;
|
|
117
|
-
}) => number;
|
|
118
111
|
leaves: (s: State, r: Span) => Member[];
|
|
119
|
-
alive: (s: State, r: Rec) => boolean;
|
|
120
|
-
heldOf: (s: State, c: number) => {
|
|
121
|
-
k: number;
|
|
122
|
-
n: number;
|
|
123
|
-
mark: Rec;
|
|
124
|
-
}[];
|
|
125
112
|
holders: (s: State, r: Span, skip?: (mark: Rec) => boolean) => Rec[];
|
|
126
113
|
minus: (r: Span, done: readonly Span[]) => Span[];
|
|
127
114
|
parts: (s: State, r: Span) => Span[];
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as decoding from 'lib0-v14/decoding';
|
|
8
8
|
import * as encoding from 'lib0-v14/encoding';
|
|
9
|
-
import { asYDoc, clientsOf, collectable, collectNow, collects, engineOps, structAt,
|
|
9
|
+
import { asYDoc, clientsOf, collectable, collectNow, collects, engineOps, structAt, walkIdSet } from '../structs.js';
|
|
10
10
|
export const overlaps = (a, b) => a.k < b.k + b.n && b.k < a.k + a.n;
|
|
11
11
|
export const push = (map, key, v) => {
|
|
12
12
|
const list = map.get(key);
|
|
@@ -96,12 +96,8 @@ export const deleteIndex = (Y) => {
|
|
|
96
96
|
/** The live parts of member `m`, in root coordinates. */
|
|
97
97
|
const liveRoots = (s, m) => {
|
|
98
98
|
const out = [];
|
|
99
|
-
|
|
100
|
-
if (st.deleted)
|
|
101
|
-
return;
|
|
102
|
-
const lo = Math.max(m.k, st.id.clock);
|
|
103
|
-
const hi = Math.min(m.k + m.n, st.id.clock + st.length);
|
|
104
|
-
if (hi > lo)
|
|
99
|
+
walkIdSet(Y, s.doc, idSet([m]), (st, lo, hi) => {
|
|
100
|
+
if (!st.deleted && hi > lo)
|
|
105
101
|
out.push({ c: m.c, k: m.rk + lo - m.k, n: hi - lo });
|
|
106
102
|
});
|
|
107
103
|
return out;
|
|
@@ -109,7 +105,7 @@ export const deleteIndex = (Y) => {
|
|
|
109
105
|
/** The live ids showing root spans `roots`. */
|
|
110
106
|
const shown = (s, roots) => roots.flatMap((r) => members(s, r).flatMap((m) => liveRoots(s, m).map((p) => clip(m, p.k, p.k + p.n))));
|
|
111
107
|
/** The live index of id `c:k` in its text (YATA order: the same on every replica). */
|
|
112
|
-
const indexOf = (s, c, k) => Y.
|
|
108
|
+
const indexOf = (s, c, k) => Y.indexOfId(asYDoc(s.doc), Y.createID(c, k))?.index ?? Infinity;
|
|
113
109
|
/**
|
|
114
110
|
* List order of ids `a` and `b` of one text (negative: `a` first): their
|
|
115
111
|
* live indices, and where no live unit separates them, the walk from one
|
|
@@ -287,7 +283,7 @@ export const deleteIndex = (Y) => {
|
|
|
287
283
|
if (!tr.changed.has(s.marks) && !tr.changed.has(s.restored))
|
|
288
284
|
return fresh;
|
|
289
285
|
const inserted = [];
|
|
290
|
-
|
|
286
|
+
walkIdSet(Y, s.doc, tr.insertSet, (st) => {
|
|
291
287
|
if (st.parent === s.restored || st.parent === s.marks)
|
|
292
288
|
inserted.push(st);
|
|
293
289
|
});
|
|
@@ -301,7 +297,7 @@ export const deleteIndex = (Y) => {
|
|
|
301
297
|
if (indexMark(s, r, bytes))
|
|
302
298
|
fresh.marks.push(r);
|
|
303
299
|
const dropped = [];
|
|
304
|
-
|
|
300
|
+
walkIdSet(Y, s.doc, tr.deleteSet, (st) => {
|
|
305
301
|
if (st.parent === s.marks)
|
|
306
302
|
for (const [r] of recordsIn(st, tr.deleteSet))
|
|
307
303
|
dropped.push(r);
|
|
@@ -333,7 +329,7 @@ export const deleteIndex = (Y) => {
|
|
|
333
329
|
const collect = (s, tr, copies) => {
|
|
334
330
|
if (!collects(s.doc) || copies.length === 0)
|
|
335
331
|
return;
|
|
336
|
-
|
|
332
|
+
walkIdSet(Y, s.doc, idSet(copies), (st) => {
|
|
337
333
|
const it = st;
|
|
338
334
|
const inside = copies.some((e) => e.c === it.id.client && e.k <= it.id.clock && it.id.clock + it.length <= e.k + e.n);
|
|
339
335
|
if (inside &&
|
|
@@ -352,10 +348,7 @@ export const deleteIndex = (Y) => {
|
|
|
352
348
|
liveRoots,
|
|
353
349
|
shown,
|
|
354
350
|
indexOf,
|
|
355
|
-
order,
|
|
356
351
|
leaves,
|
|
357
|
-
alive,
|
|
358
|
-
heldOf,
|
|
359
352
|
holders,
|
|
360
353
|
minus,
|
|
361
354
|
parts,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Per-writer text delete marks — the block delete marks' rule applied to text
|
|
2
|
+
* Per-writer text delete marks — the block delete marks' rule applied to text.
|
|
3
3
|
*
|
|
4
|
-
* Deleting text tombstones its engine items, and
|
|
4
|
+
* Deleting text tombstones its engine items, and an undo brings
|
|
5
5
|
* text back as COPIES (new items). The engine records no writer for a
|
|
6
6
|
* delete, so two writers who deleted the same character concurrently could
|
|
7
7
|
* not tell each other's delete from their own: one undo brought it back
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* text keeps its order whoever restores it. Every decision is made by the
|
|
22
22
|
* replica whose fact it is, never on another replica's stale state:
|
|
23
23
|
*
|
|
24
|
-
* - restoring (the undoing history): the
|
|
25
|
-
*
|
|
24
|
+
* - restoring (the undoing history): the history hands every text unit of a
|
|
25
|
+
* replayed step to `restoreFilter`, which withholds it, and `onApply`
|
|
26
26
|
* restores each character of the step no other live mark holds and no
|
|
27
27
|
* copy shows, once. A character another mark holds stays PENDING on that
|
|
28
28
|
* history, which restores it once no mark holds it and no copy shows (two
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
* writes the marks, restores, holds and deduplicates.
|
|
49
49
|
*/
|
|
50
50
|
import type { EngineApi, EngineDoc, EngineNode, YUndoManager } from '../engine-api.js';
|
|
51
|
+
import { type State, type Step, type Tr } from './delete-index.js';
|
|
51
52
|
/** Engine ids `c:k … c:k+n-1`. */
|
|
52
53
|
export type Span = {
|
|
53
54
|
c: number;
|
|
@@ -62,24 +63,10 @@ export declare const bindDeletes: (Y: EngineApi) => {
|
|
|
62
63
|
* transaction) as this writer's, and hide their other visible copies.
|
|
63
64
|
*/
|
|
64
65
|
markDeleted: (doc: EngineDoc, deleted: readonly Span[]) => void;
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
*/
|
|
70
|
-
heldBefore: (doc: EngineDoc, spans: readonly Span[], old: (client: number, clock: number) => boolean) => boolean;
|
|
71
|
-
/**
|
|
72
|
-
* The purge's part (`room.purge.what`), inside the purge
|
|
73
|
-
* transaction: delete every text delete mark record `old` names, and
|
|
74
|
-
* every restoration record `old` names whose copies are all deleted
|
|
75
|
-
* and that no remaining mark holds; its copies are forgotten (the
|
|
76
|
-
* `gcFilter` no longer keeps them) and collected. Writes no mark.
|
|
77
|
-
*/
|
|
78
|
-
purge: (doc: EngineDoc, old: (client: number, clock: number) => boolean) => {
|
|
79
|
-
marks: number;
|
|
80
|
-
records: number;
|
|
81
|
-
};
|
|
82
|
-
/** The `restoreFilter` and `onApply` options of a history on `doc` (fork patch YP11). */
|
|
66
|
+
/** A doc's index of marks and copies, and the delete the purge writes (`purge.ts`). */
|
|
67
|
+
state: (doc: EngineDoc) => State;
|
|
68
|
+
remove: (tr: Tr, live: readonly Span[], into?: Step, keep?: boolean) => void;
|
|
69
|
+
/** The restore and apply rules of a history on `doc` (`doc/history.ts`). */
|
|
83
70
|
history: (doc: EngineDoc, um: () => YUndoManager) => {
|
|
84
71
|
/** Text units are restored by `onApply`, character by character. */
|
|
85
72
|
restoreFilter: (item: unknown) => boolean;
|
|
@@ -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);
|