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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// YP19: a position as an item id and back — what upstream's relative
|
|
2
|
+
// positions resolve, without the `RelativePosition`/`AbsolutePosition`
|
|
3
|
+
// objects, their JSON form, root-key types or the redone-chain option
|
|
4
|
+
// (edytor follows no undone deletion: every replica resolves an id alike).
|
|
5
|
+
|
|
6
|
+
import { Item } from '../structs/Item.js'
|
|
7
|
+
import { findMarker } from '../ynode.js'
|
|
8
|
+
import { createID } from './ID.js'
|
|
9
|
+
import { liveLength } from './transaction-helpers.js'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The id at live index `index` of `type`: with `assoc >= 0` the unit at
|
|
13
|
+
* `index` (`null` at the end), with `assoc < 0` the unit before it (`null`
|
|
14
|
+
* at the start).
|
|
15
|
+
*
|
|
16
|
+
* @param {YNode} type
|
|
17
|
+
* @param {number} index
|
|
18
|
+
* @param {number} [assoc]
|
|
19
|
+
* @return {ID|null}
|
|
20
|
+
*/
|
|
21
|
+
export const idAtIndex = (type, index, assoc = 0) => {
|
|
22
|
+
let t = type._start
|
|
23
|
+
if (assoc < 0) {
|
|
24
|
+
// associated to the left character or the beginning of a type, increment index if possible.
|
|
25
|
+
if (index === 0) {
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
28
|
+
index--
|
|
29
|
+
}
|
|
30
|
+
// Seed the walk from a search marker — the loop below counts
|
|
31
|
+
// countable/non-deleted length, exactly the space `marker.index` records,
|
|
32
|
+
// so `findMarker`'s (item, left-edge-index) result is a valid cursor. With
|
|
33
|
+
// no markers this falls back to the `_start` walk.
|
|
34
|
+
if (index > 0 && type._searchMarker !== null && type._searchMarker.length > 0) {
|
|
35
|
+
const m = findMarker(type, index)
|
|
36
|
+
if (m !== null && m.index <= index) {
|
|
37
|
+
t = m.p
|
|
38
|
+
index -= m.index
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
while (t !== null) {
|
|
42
|
+
const len = liveLength(t)
|
|
43
|
+
if (len > index) {
|
|
44
|
+
return createID(t.id.client, t.id.clock + index)
|
|
45
|
+
}
|
|
46
|
+
index -= len
|
|
47
|
+
if (t.right === null && assoc < 0) {
|
|
48
|
+
// left-associated position, return last available id
|
|
49
|
+
return t.lastId
|
|
50
|
+
}
|
|
51
|
+
t = t.right
|
|
52
|
+
}
|
|
53
|
+
return null
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The live index of the position bound to unit `id` (`assoc >= 0`: before
|
|
58
|
+
* it, `assoc < 0`: after it) and the node holding it; `null` when `id` is
|
|
59
|
+
* not integrated here or was collected. A position in a deleted node is
|
|
60
|
+
* index `0`.
|
|
61
|
+
*
|
|
62
|
+
* @param {Doc} doc
|
|
63
|
+
* @param {ID} id
|
|
64
|
+
* @param {number} [assoc]
|
|
65
|
+
* @return {{ type: YNode, index: number }|null}
|
|
66
|
+
*/
|
|
67
|
+
export const indexOfId = (doc, id, assoc = 0) => {
|
|
68
|
+
const store = doc.store
|
|
69
|
+
if (store.getClock(id.client) <= id.clock) {
|
|
70
|
+
return null
|
|
71
|
+
}
|
|
72
|
+
const right = store.getItem(id)
|
|
73
|
+
if (!(right instanceof Item)) {
|
|
74
|
+
return null
|
|
75
|
+
}
|
|
76
|
+
const type = /** @type {YNode} */ (right.parent)
|
|
77
|
+
let index = 0
|
|
78
|
+
// an index into a deleted type is meaningless
|
|
79
|
+
if (type._item === null || !type._item.deleted) {
|
|
80
|
+
index = liveLength(right) === 0 ? 0 : (id.clock - right.id.clock + (assoc >= 0 ? 0 : 1)) // adjust position based on left association if necessary
|
|
81
|
+
let n = right.left
|
|
82
|
+
if (type._searchMarker !== null && type._searchMarker.length > 0) {
|
|
83
|
+
// Marker-assisted left walk: this loop
|
|
84
|
+
// accumulates countable/non-deleted length — the same space
|
|
85
|
+
// `marker.index` records — so the first marked item reached supplies
|
|
86
|
+
// the sum of everything left of it and the walk can stop early.
|
|
87
|
+
// Items whose flag outlived their record (wholesale marker clears
|
|
88
|
+
// leave the flag set) are simply walked past.
|
|
89
|
+
const markers = type._searchMarker
|
|
90
|
+
while (n !== null) {
|
|
91
|
+
if (n.marker) {
|
|
92
|
+
let m = null
|
|
93
|
+
for (let i = 0; i < markers.length; i++) {
|
|
94
|
+
if (markers[i].p === n) { m = markers[i]; break }
|
|
95
|
+
}
|
|
96
|
+
if (m !== null) {
|
|
97
|
+
// m.index is the left edge of n — the count of rendered units
|
|
98
|
+
// strictly before it — so n's own contribution is added too.
|
|
99
|
+
index += m.index + liveLength(n)
|
|
100
|
+
n = null
|
|
101
|
+
break
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
index += liveLength(n)
|
|
105
|
+
n = n.left
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
while (n !== null) {
|
|
109
|
+
index += liveLength(n)
|
|
110
|
+
n = n.left
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { type, index }
|
|
115
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YP18: what remains of the engine's UndoManager — the struct primitives an
|
|
3
|
+
* undo is made of. The history itself (stacks, capture, the undo and redo
|
|
4
|
+
* transactions) is edytor's (`src/lib/crdt/doc/history.ts`).
|
|
5
|
+
*/
|
|
6
|
+
import { Item } from '../structs/Item.js'
|
|
7
|
+
import { createID } from './ID.js'
|
|
8
|
+
import { getItemCleanStart } from './transaction-helpers.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Redoes the effect of this operation.
|
|
12
|
+
*
|
|
13
|
+
* @param {Transaction} transaction The Yjs instance.
|
|
14
|
+
* @param {Item} item
|
|
15
|
+
* @param {Set<Item>} redoitems
|
|
16
|
+
* @param {IdSet} itemsToDelete
|
|
17
|
+
* @param {function(ID):boolean} [deletedByHistory] Whether a step of the history deletes the item `id` names (YP18)
|
|
18
|
+
*
|
|
19
|
+
* @return {Item|null}
|
|
20
|
+
*
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
export const redoItem = (transaction, item, redoitems, itemsToDelete, deletedByHistory = () => false) => {
|
|
24
|
+
const doc = transaction.doc
|
|
25
|
+
const store = doc.store
|
|
26
|
+
const ownClientID = doc.clientID
|
|
27
|
+
const redone = item.redone
|
|
28
|
+
if (redone !== null) {
|
|
29
|
+
return getItemCleanStart(transaction, redone)
|
|
30
|
+
}
|
|
31
|
+
let parentItem = /** @type {YNode} */ (item.parent)._item
|
|
32
|
+
/**
|
|
33
|
+
* @type {Item|null}
|
|
34
|
+
*/
|
|
35
|
+
let left = null
|
|
36
|
+
/**
|
|
37
|
+
* @type {Item|null}
|
|
38
|
+
*/
|
|
39
|
+
let right
|
|
40
|
+
// make sure that parent is redone
|
|
41
|
+
if (parentItem !== null && parentItem.deleted === true) {
|
|
42
|
+
// try to undo parent if it will be undone anyway
|
|
43
|
+
if (parentItem.redone === null && (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems, itemsToDelete, deletedByHistory) === null)) {
|
|
44
|
+
return null
|
|
45
|
+
}
|
|
46
|
+
while (parentItem.redone !== null) {
|
|
47
|
+
parentItem = getItemCleanStart(transaction, parentItem.redone)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @type {YNode}
|
|
52
|
+
*/
|
|
53
|
+
const parentType = /** @type {YNode} */ (parentItem === null ? item.parent : /** @type {ContentType} */ (parentItem.content).type)
|
|
54
|
+
|
|
55
|
+
if (item.parentSub === null) {
|
|
56
|
+
// Is an array item. Insert at the old position
|
|
57
|
+
left = item.left
|
|
58
|
+
right = item
|
|
59
|
+
// find next cloned_redo items
|
|
60
|
+
while (left !== null) {
|
|
61
|
+
/**
|
|
62
|
+
* @type {Item|null}
|
|
63
|
+
*/
|
|
64
|
+
let leftTrace = left
|
|
65
|
+
// trace redone until parent matches
|
|
66
|
+
while (leftTrace !== null && /** @type {YNode} */ (leftTrace.parent)._item !== parentItem) {
|
|
67
|
+
leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone)
|
|
68
|
+
}
|
|
69
|
+
if (leftTrace !== null && /** @type {YNode} */ (leftTrace.parent)._item === parentItem) {
|
|
70
|
+
left = leftTrace
|
|
71
|
+
break
|
|
72
|
+
}
|
|
73
|
+
left = left.left
|
|
74
|
+
}
|
|
75
|
+
while (right !== null) {
|
|
76
|
+
/**
|
|
77
|
+
* @type {Item|null}
|
|
78
|
+
*/
|
|
79
|
+
let rightTrace = right
|
|
80
|
+
// trace redone until parent matches
|
|
81
|
+
while (rightTrace !== null && /** @type {YNode} */ (rightTrace.parent)._item !== parentItem) {
|
|
82
|
+
rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone)
|
|
83
|
+
}
|
|
84
|
+
if (rightTrace !== null && /** @type {YNode} */ (rightTrace.parent)._item === parentItem) {
|
|
85
|
+
right = rightTrace
|
|
86
|
+
break
|
|
87
|
+
}
|
|
88
|
+
right = right.right
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
right = null
|
|
92
|
+
if (item.right) {
|
|
93
|
+
left = item
|
|
94
|
+
// Iterate right while right is in itemsToDelete
|
|
95
|
+
// If it is intended to delete right while item is redone, we can expect that item should replace right.
|
|
96
|
+
while (left !== null && left.right !== null && (left.right.redone || itemsToDelete.hasId(left.right.id) || deletedByHistory(left.right.id))) {
|
|
97
|
+
left = left.right
|
|
98
|
+
// follow redone
|
|
99
|
+
while (left.redone) left = getItemCleanStart(transaction, left.redone)
|
|
100
|
+
}
|
|
101
|
+
if (left && left.right !== null) {
|
|
102
|
+
// It is not possible to redo this item because it conflicts with a
|
|
103
|
+
// change from another client
|
|
104
|
+
return null
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
left = parentType._map.get(item.parentSub) || null
|
|
108
|
+
}
|
|
109
|
+
if (left !== null && /** @type {YNode} */ (left.parent)._item !== parentItem) {
|
|
110
|
+
left = parentType._map.get(item.parentSub) || null
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const nextClock = store.getClock(ownClientID)
|
|
114
|
+
const nextId = createID(ownClientID, nextClock)
|
|
115
|
+
const redoneItem = new Item(
|
|
116
|
+
nextId,
|
|
117
|
+
left, left && left.lastId,
|
|
118
|
+
right, right && right.id,
|
|
119
|
+
parentType,
|
|
120
|
+
item.parentSub,
|
|
121
|
+
item.content.copy()
|
|
122
|
+
)
|
|
123
|
+
item.redone = nextId
|
|
124
|
+
keepItem(redoneItem, true)
|
|
125
|
+
redoneItem.integrate(transaction, 0)
|
|
126
|
+
return redoneItem
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Make sure that neither item nor any of its parents is ever deleted.
|
|
131
|
+
*
|
|
132
|
+
* This property does not persist when storing it into a database or when
|
|
133
|
+
* sending it to other peers
|
|
134
|
+
*
|
|
135
|
+
* @param {Item|null} item
|
|
136
|
+
* @param {boolean} keep
|
|
137
|
+
*/
|
|
138
|
+
export const keepItem = (item, keep) => {
|
|
139
|
+
while (item !== null && item.keep !== keep) {
|
|
140
|
+
item.keep = keep
|
|
141
|
+
item = /** @type {YNode} */ (item.parent)._item
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -2,7 +2,7 @@ import * as math from 'lib0-v14/math'
|
|
|
2
2
|
import * as error from 'lib0-v14/error'
|
|
3
3
|
import * as map from 'lib0-v14/map'
|
|
4
4
|
import * as set from 'lib0-v14/set'
|
|
5
|
-
import { foldPaired
|
|
5
|
+
import { foldPaired } from './marks.js' // YP13
|
|
6
6
|
import { compareIDs } from './ID.js' // YP14
|
|
7
7
|
|
|
8
8
|
|
|
@@ -161,33 +161,6 @@ export const iterateStructs = (transaction, structs, clockStart, len, f) => {
|
|
|
161
161
|
} while (index < structs.length && structs[index].id.clock < clockEnd)
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
/**
|
|
165
|
-
* Iterate over a range of structs without splitting the structs. You will get content that you did
|
|
166
|
-
* not expect.
|
|
167
|
-
*
|
|
168
|
-
* @param {Array<Item|GC>} structs
|
|
169
|
-
* @param {number} clockStart Inclusive start
|
|
170
|
-
* @param {number} len
|
|
171
|
-
* @param {(struct: GC|Item|Skip, offset:number, len:number)=>void} f
|
|
172
|
-
*
|
|
173
|
-
* @function
|
|
174
|
-
*/
|
|
175
|
-
export const iterateStructsWithoutSplits = (structs, clockStart, len, f) => {
|
|
176
|
-
if (len === 0) {
|
|
177
|
-
return
|
|
178
|
-
}
|
|
179
|
-
const clockEnd = clockStart + len
|
|
180
|
-
for (
|
|
181
|
-
let index = findIndexSS(structs, clockStart), struct = structs[index], clock = struct.id.clock;
|
|
182
|
-
clock < clockEnd;
|
|
183
|
-
struct = structs[++index], clock = struct.id.clock
|
|
184
|
-
) {
|
|
185
|
-
const offset = clock < clockStart ? clockStart - clock : 0
|
|
186
|
-
f(struct, offset, math.min(clock + struct.length, clockEnd) - clock)
|
|
187
|
-
if (index + 1 === structs.length) break
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
164
|
/**
|
|
192
165
|
* More generalized version of splitItem. Split leftStruct into two structs
|
|
193
166
|
* @param {Transaction?} transaction
|
|
@@ -306,111 +279,21 @@ export const tryMerge = (ds, store) => {
|
|
|
306
279
|
}
|
|
307
280
|
|
|
308
281
|
/**
|
|
309
|
-
*
|
|
310
|
-
*
|
|
282
|
+
* The live length of `item`: alive countable content counts its length, everything else `0`.
|
|
283
|
+
*
|
|
284
|
+
* @param {Item} item
|
|
285
|
+
* @return {number}
|
|
311
286
|
*/
|
|
312
|
-
export const
|
|
313
|
-
if (!transaction.doc.cleanupFormatting) return 0
|
|
314
|
-
// iterate until item.right is null or content
|
|
315
|
-
while (item && item.right && (item.right.deleted || !item.right.countable)) {
|
|
316
|
-
item = item.right
|
|
317
|
-
}
|
|
318
|
-
const attrs = new Set()
|
|
319
|
-
// iterate back until a content item is found
|
|
320
|
-
while (item && (item.deleted || !item.countable)) {
|
|
321
|
-
if (!item.deleted && item.content.getRef() === 6 && pairedRole(/** @type {ContentFormat} */ (item.content)) < 0) { // is a ContentFormat (YP13: never a paired mark)
|
|
322
|
-
const key = /** @type {ContentFormat} */ (item.content).key
|
|
323
|
-
if (attrs.has(key)) {
|
|
324
|
-
item.delete(transaction)
|
|
325
|
-
transaction.cleanUps.add(item.id.client, item.id.clock, item.length)
|
|
326
|
-
} else {
|
|
327
|
-
attrs.add(key)
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
item = item.left
|
|
331
|
-
}
|
|
332
|
-
}
|
|
287
|
+
export const liveLength = item => (item.deleted || !item.content.isCountable()) ? 0 : item.length
|
|
333
288
|
|
|
334
289
|
/**
|
|
290
|
+
* Fold mark item `format` into `currentFormats` (YP13, YP19: a mark is a
|
|
291
|
+
* paired operation; a plain format item is inert).
|
|
292
|
+
*
|
|
335
293
|
* @param {Map<string,any>} currentFormats
|
|
336
294
|
* @param {ContentFormat} format
|
|
337
295
|
*
|
|
338
296
|
* @private
|
|
339
297
|
* @function
|
|
340
298
|
*/
|
|
341
|
-
export const updateCurrentFormats = (currentFormats, format) => {
|
|
342
|
-
if (foldPaired(currentFormats, format)) return // YP13
|
|
343
|
-
const { key, value } = format
|
|
344
|
-
if (value === null) {
|
|
345
|
-
currentFormats.delete(key)
|
|
346
|
-
} else {
|
|
347
|
-
currentFormats.set(key, value)
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Call this function after string content has been deleted in order to
|
|
353
|
-
* clean up formatting Items.
|
|
354
|
-
*
|
|
355
|
-
* @param {Transaction} transaction
|
|
356
|
-
* @param {Item} start
|
|
357
|
-
* @param {Item|null} curr exclusive end, automatically iterates to the next Content Item
|
|
358
|
-
* @param {Map<string,any>} startFormats
|
|
359
|
-
* @param {Map<string,any>} currFormats
|
|
360
|
-
* @return {number} The amount of formatting Items deleted.
|
|
361
|
-
*
|
|
362
|
-
* @function
|
|
363
|
-
*/
|
|
364
|
-
export const cleanupFormattingGap = (transaction, start, curr, startFormats, currFormats) => {
|
|
365
|
-
if (!transaction.doc.cleanupFormatting) return 0
|
|
366
|
-
/**
|
|
367
|
-
* @type {Item|null}
|
|
368
|
-
*/
|
|
369
|
-
let end = start
|
|
370
|
-
/**
|
|
371
|
-
* @type {Map<string,ContentFormat>}
|
|
372
|
-
*/
|
|
373
|
-
const endFormats = map.create()
|
|
374
|
-
while (end && (!end.countable || end.deleted)) {
|
|
375
|
-
if (!end.deleted && end.content.getRef() === 6 && pairedRole(/** @type {ContentFormat} */ (end.content)) < 0) {
|
|
376
|
-
const cf = /** @type {ContentFormat} */ (end.content)
|
|
377
|
-
endFormats.set(cf.key, cf)
|
|
378
|
-
}
|
|
379
|
-
end = end.right
|
|
380
|
-
}
|
|
381
|
-
let cleanups = 0
|
|
382
|
-
let reachedCurr = false
|
|
383
|
-
while (start !== end) {
|
|
384
|
-
if (curr === start) {
|
|
385
|
-
reachedCurr = true
|
|
386
|
-
}
|
|
387
|
-
if (!start.deleted) {
|
|
388
|
-
const content = start.content
|
|
389
|
-
if (content.getRef() === 6 && pairedRole(/** @type {ContentFormat} */ (content)) >= 0) {
|
|
390
|
-
// YP13: a paired mark is never redundant — an end closes only its own start
|
|
391
|
-
if (!reachedCurr) updateCurrentFormats(currFormats, /** @type {ContentFormat} */ (content))
|
|
392
|
-
} else if (content.getRef() === 6) { // is ContentFormat
|
|
393
|
-
const { key, value } = /** @type {ContentFormat} */ (content)
|
|
394
|
-
const startFormatValue = startFormats.get(key) ?? null
|
|
395
|
-
if (endFormats.get(key) !== content || startFormatValue === value) {
|
|
396
|
-
// Either this format is overwritten or it is not necessary because the format already existed.
|
|
397
|
-
start.delete(transaction)
|
|
398
|
-
transaction.cleanUps.add(start.id.client, start.id.clock, start.length)
|
|
399
|
-
cleanups++
|
|
400
|
-
if (!reachedCurr && (currFormats.get(key) ?? null) === value && startFormatValue !== value) {
|
|
401
|
-
if (startFormatValue === null) {
|
|
402
|
-
currFormats.delete(key)
|
|
403
|
-
} else {
|
|
404
|
-
currFormats.set(key, startFormatValue)
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
if (!reachedCurr && !start.deleted) {
|
|
409
|
-
updateCurrentFormats(currFormats, /** @type {ContentFormat} */ (content))
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
start = /** @type {Item} */ (start.right)
|
|
414
|
-
}
|
|
415
|
-
return cleanups
|
|
416
|
-
}
|
|
299
|
+
export const updateCurrentFormats = (currentFormats, format) => { foldPaired(currentFormats, format) }
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import * as binary from 'lib0-v14/binary'
|
|
2
2
|
import * as decoding from 'lib0-v14/decoding'
|
|
3
3
|
import * as encoding from 'lib0-v14/encoding'
|
|
4
|
-
import * as f from 'lib0-v14/function'
|
|
5
|
-
import * as string from 'lib0-v14/string'
|
|
6
4
|
|
|
7
|
-
import { readIdSet
|
|
5
|
+
import { readIdSet } from './ids.js'
|
|
8
6
|
|
|
9
7
|
import { createID } from './ID.js'
|
|
10
|
-
import {
|
|
11
|
-
import { UpdateDecoderV1, UpdateDecoderV2 } from './UpdateDecoder.js'
|
|
8
|
+
import { UpdateDecoder } from './UpdateDecoder.js'
|
|
12
9
|
import { GC } from '../structs/GC.js'
|
|
13
10
|
import { Item } from '../structs/Item.js'
|
|
14
11
|
import {
|
|
@@ -17,7 +14,7 @@ import {
|
|
|
17
14
|
import { Skip } from '../structs/Skip.js'
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
|
-
* @param {
|
|
17
|
+
* @param {UpdateDecoder} decoder
|
|
21
18
|
*/
|
|
22
19
|
function * lazyStructReaderGenerator (decoder) {
|
|
23
20
|
const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder)
|
|
@@ -62,7 +59,7 @@ function * lazyStructReaderGenerator (decoder) {
|
|
|
62
59
|
|
|
63
60
|
export class LazyStructReader {
|
|
64
61
|
/**
|
|
65
|
-
* @param {
|
|
62
|
+
* @param {UpdateDecoder} decoder
|
|
66
63
|
* @param {boolean} filterSkips
|
|
67
64
|
*/
|
|
68
65
|
constructor (decoder, filterSkips) {
|
|
@@ -91,16 +88,9 @@ export class LazyStructReader {
|
|
|
91
88
|
/**
|
|
92
89
|
* @param {Uint8Array} update
|
|
93
90
|
*/
|
|
94
|
-
export const decodeUpdate = (update) =>
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* @param {Uint8Array} update
|
|
98
|
-
* @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]
|
|
99
|
-
*
|
|
100
|
-
*/
|
|
101
|
-
export const decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {
|
|
91
|
+
export const decodeUpdate = (update) => {
|
|
102
92
|
const structs = []
|
|
103
|
-
const updateDecoder = new
|
|
93
|
+
const updateDecoder = new UpdateDecoder(decoding.createDecoder(update))
|
|
104
94
|
const lazyDecoder = new LazyStructReader(updateDecoder, false)
|
|
105
95
|
for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {
|
|
106
96
|
structs.push(curr)
|
|
@@ -113,7 +103,7 @@ export const decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {
|
|
|
113
103
|
|
|
114
104
|
export class LazyStructWriter {
|
|
115
105
|
/**
|
|
116
|
-
* @param {
|
|
106
|
+
* @param {import('./UpdateEncoder.js').UpdateEncoder} encoder
|
|
117
107
|
*/
|
|
118
108
|
constructor (encoder) {
|
|
119
109
|
this.currClient = 0
|
|
@@ -229,36 +219,3 @@ export const finishLazyStructWriting = (lazyWriter) => {
|
|
|
229
219
|
encoding.writeUint8Array(restEncoder, partStructs.restEncoder)
|
|
230
220
|
}
|
|
231
221
|
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* @param {Uint8Array} update
|
|
235
|
-
* @param {function(Item|GC|Skip):Item|GC|Skip} blockTransformer
|
|
236
|
-
* @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} YDecoder
|
|
237
|
-
* @param {typeof UpdateEncoderV2 | typeof UpdateEncoderV1 } YEncoder
|
|
238
|
-
*/
|
|
239
|
-
export const convertUpdateFormat = (update, blockTransformer, YDecoder, YEncoder) => {
|
|
240
|
-
const updateDecoder = new YDecoder(decoding.createDecoder(update))
|
|
241
|
-
const lazyDecoder = new LazyStructReader(updateDecoder, false)
|
|
242
|
-
const updateEncoder = new YEncoder()
|
|
243
|
-
const lazyWriter = new LazyStructWriter(updateEncoder)
|
|
244
|
-
for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {
|
|
245
|
-
writeStructToLazyStructWriter(lazyWriter, blockTransformer(curr), 0, 0)
|
|
246
|
-
}
|
|
247
|
-
finishLazyStructWriting(lazyWriter)
|
|
248
|
-
const ds = readIdSet(updateDecoder)
|
|
249
|
-
writeIdSet(updateEncoder, ds)
|
|
250
|
-
return updateEncoder.toUint8Array()
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* @typedef {Object} ObfuscatorOptions
|
|
255
|
-
* @property {boolean} [ObfuscatorOptions.formatting=true]
|
|
256
|
-
* @property {boolean} [ObfuscatorOptions.subdocs=true]
|
|
257
|
-
* @property {boolean} [ObfuscatorOptions.name=true] Whether to obfuscate nodeName / hookName
|
|
258
|
-
*/
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* @param {Uint8Array} update
|
|
262
|
-
*/
|
|
263
|
-
export const convertUpdateFormatV2ToV1 = update => convertUpdateFormat(update, f.id, UpdateDecoderV2, UpdateEncoderV1)
|
|
264
|
-
|