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
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Text } from '../text/text.svelte.js';
|
|
3
|
-
import { getNextGraphemeEnd, getPreviousGraphemeStart } from '../text/text.utils.js';
|
|
4
|
-
import { getNextWordEndOffset, getPreviousWordStartOffset } from '../text/wordBoundary.js';
|
|
1
|
+
import { getNextGraphemeEnd, getNextWordEndOffset, getPreviousGraphemeStart, getPreviousWordStartOffset } from '../text/wordBoundary.js';
|
|
5
2
|
import { getSelectedBlocksInDocumentOrder, shownText } from '../selection/replaceSelection.js';
|
|
3
|
+
import { atomSelection, segmentsOf } from './selection.js';
|
|
6
4
|
import { untargeted } from './attempt.js';
|
|
5
|
+
import { siblingSlot } from './handles.js';
|
|
7
6
|
/**
|
|
8
7
|
* With no target (`untargeted`: the value is `none`, no gesture placed the
|
|
9
8
|
* host's caret), a navigation key does nothing (Notion): it is claimed, so
|
|
@@ -14,65 +13,64 @@ export const stayWithoutTarget = (edytor, prevent) => {
|
|
|
14
13
|
if (untargeted(edytor))
|
|
15
14
|
prevent();
|
|
16
15
|
};
|
|
16
|
+
/** An inline atom in a block's string. */
|
|
17
|
+
const ATOM = '';
|
|
18
|
+
/** A block's content as one string, each inline atom one `ATOM`. */
|
|
19
|
+
const stringOf = (edytor, block) => edytor.facade
|
|
20
|
+
.contentItems(block)
|
|
21
|
+
.map((item) => (item.kind === 'text' ? item.text : ATOM))
|
|
22
|
+
.join('');
|
|
17
23
|
/** A block's stop at its edge in `dir` (its end going forward, its start going backward). */
|
|
18
|
-
const edge = (block, dir) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
24
|
+
const edge = (edytor, block, dir) => ({
|
|
25
|
+
block,
|
|
26
|
+
offset: dir > 0 ? edytor.facade.displayLength(block) : 0
|
|
27
|
+
});
|
|
23
28
|
/** The first displayable block after `from` in document order (`from` null: the document's edge). */
|
|
24
29
|
const displayable = (edytor, from, dir) => {
|
|
25
30
|
const ids = edytor.facade.order();
|
|
26
|
-
const at = from ? ids.indexOf(from
|
|
31
|
+
const at = from ? ids.indexOf(from) : dir > 0 ? -1 : ids.length;
|
|
27
32
|
for (let i = at + dir; i >= 0 && i < ids.length; i += dir)
|
|
28
33
|
if (edytor.selection.displayable(ids[i]))
|
|
29
|
-
return
|
|
34
|
+
return ids[i];
|
|
30
35
|
return null;
|
|
31
36
|
};
|
|
32
37
|
/**
|
|
33
|
-
* The next stop from `at`: a grapheme or word boundary inside its text
|
|
34
|
-
*
|
|
35
|
-
* the next displayable block.
|
|
38
|
+
* The next stop from `at`: a grapheme or word boundary inside its text (the
|
|
39
|
+
* run between the atoms around it), else the near side of the atom next to
|
|
40
|
+
* it, else the near edge of the next displayable block.
|
|
36
41
|
*/
|
|
37
|
-
const step = (edytor, {
|
|
38
|
-
const value =
|
|
39
|
-
|
|
42
|
+
const step = (edytor, { block, offset }, dir, unit) => {
|
|
43
|
+
const value = stringOf(edytor, block);
|
|
44
|
+
const from = offset && value.lastIndexOf(ATOM, offset - 1) + 1;
|
|
45
|
+
const to = value.indexOf(ATOM, offset);
|
|
46
|
+
const text = value.slice(from, to < 0 ? undefined : to);
|
|
47
|
+
const at = offset - from;
|
|
48
|
+
if (dir > 0 ? at < text.length : at > 0) {
|
|
40
49
|
const next = unit === 'word'
|
|
41
|
-
? (dir > 0 ? getNextWordEndOffset : getPreviousWordStartOffset)(
|
|
42
|
-
: (dir > 0 ? getNextGraphemeEnd : getPreviousGraphemeStart)(
|
|
43
|
-
if (next !==
|
|
44
|
-
return {
|
|
50
|
+
? (dir > 0 ? getNextWordEndOffset : getPreviousWordStartOffset)(text, at)
|
|
51
|
+
: (dir > 0 ? getNextGraphemeEnd : getPreviousGraphemeStart)(text, at);
|
|
52
|
+
if (next !== at)
|
|
53
|
+
return { block, offset: from + next };
|
|
45
54
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
return beyond instanceof Text ? { text: beyond, offset: dir > 0 ? 0 : beyond.length } : null;
|
|
51
|
-
const block = displayable(edytor, text.parent, dir);
|
|
52
|
-
return block && edge(block, -dir);
|
|
55
|
+
if (value[dir > 0 ? offset : offset - 1] === ATOM)
|
|
56
|
+
return { block, offset: offset + dir };
|
|
57
|
+
const next = displayable(edytor, block, dir);
|
|
58
|
+
return next ? edge(edytor, next, -dir) : null;
|
|
53
59
|
};
|
|
54
|
-
const compare = (a, b
|
|
55
|
-
? a.offset - b.offset
|
|
56
|
-
: a.text.parent === b.text.parent
|
|
57
|
-
? a.text.parent.content.indexOf(a.text) - b.text.parent.content.indexOf(b.text)
|
|
58
|
-
: edytor.compareBlocks(a.text.parent, b.text.parent);
|
|
60
|
+
const compare = (edytor, a, b) => a.block === b.block ? a.offset - b.offset : edytor.facade.compare(a.block, b.block);
|
|
59
61
|
/** Select `anchor` → `focus`: a caret, the one atom the range covers, or the range. */
|
|
60
62
|
const select = (edytor, anchor, focus) => {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return edytor.selection.selectInlineBlock(atom, order > 0 ? 'after' : 'before');
|
|
73
|
-
edytor.selection.setAtRange(start.text, start.offset, end.text, end.offset, {
|
|
74
|
-
isReversed: order > 0
|
|
75
|
-
});
|
|
63
|
+
const { selection } = edytor;
|
|
64
|
+
const order = compare(edytor, anchor, focus);
|
|
65
|
+
const [start, end] = order > 0 ? [focus, anchor] : [anchor, focus];
|
|
66
|
+
const atom = start.block === end.block && end.offset - start.offset === 1
|
|
67
|
+
? segmentsOf(edytor.facade, start.block).find((part) => part.kind === 'inline' && part.start === start.offset)
|
|
68
|
+
: null;
|
|
69
|
+
if (atom?.kind === 'inline')
|
|
70
|
+
return selection.select(atomSelection(start.block, atom.id, order > 0 ? 'after' : 'before'));
|
|
71
|
+
const [from, to] = [selection.textAt(start), selection.textAt(end)];
|
|
72
|
+
if (from && to)
|
|
73
|
+
selection.selectText(from.text, from.offset, to.text, to.offset, order > 0);
|
|
76
74
|
};
|
|
77
75
|
/**
|
|
78
76
|
* One apply step for `unit` in `dir` (`left`/`right`: visual). Answers whether
|
|
@@ -82,8 +80,9 @@ const select = (edytor, anchor, focus) => {
|
|
|
82
80
|
*/
|
|
83
81
|
export const move = (edytor, unit, key, extend) => {
|
|
84
82
|
const { selection } = edytor;
|
|
85
|
-
const { value,
|
|
86
|
-
|
|
83
|
+
const { value, projection } = selection;
|
|
84
|
+
let { start, end } = projection;
|
|
85
|
+
if (value.kind === 'none' || !selection.textAt(start) || !selection.textAt(end))
|
|
87
86
|
return false;
|
|
88
87
|
if (unit === 'char' && value.kind === 'blocks')
|
|
89
88
|
return false;
|
|
@@ -91,50 +90,55 @@ export const move = (edytor, unit, key, extend) => {
|
|
|
91
90
|
// end (a list's items, a code block's lines, never a divider; a
|
|
92
91
|
// member's own line, never an unselected child's).
|
|
93
92
|
const blocks = value.kind === 'blocks' && getSelectedBlocksInDocumentOrder(edytor);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
93
|
+
if (blocks) {
|
|
94
|
+
const first = blocks.map((block) => shownText(block, 'first')).find(Boolean);
|
|
95
|
+
const last = blocks.map((block) => shownText(block, 'last')).findLast(Boolean);
|
|
96
|
+
if (first && last) {
|
|
97
|
+
start = { block: first.blockId, offset: first.segStart };
|
|
98
|
+
end = { block: last.blockId, offset: last.segStart + last.length };
|
|
99
|
+
}
|
|
101
100
|
// Voids alone show no line: the blocks stay selected, except for the
|
|
102
101
|
// document keys, whose target is the document's edge (`select` moves
|
|
103
102
|
// an anchor left in a void beside it).
|
|
104
|
-
if (unit !== 'doc')
|
|
103
|
+
else if (unit !== 'doc')
|
|
105
104
|
return true;
|
|
106
|
-
[first, last] = [state.startText, state.endText];
|
|
107
105
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const rtl = selection.rtl(
|
|
106
|
+
if (!start || !end)
|
|
107
|
+
return false;
|
|
108
|
+
const rtl = selection.rtl(selection.textAt(projection.isReversed ? start : end).text);
|
|
111
109
|
const dir = typeof key === 'number' ? key : (key === 'right') !== rtl ? 1 : -1;
|
|
112
110
|
// The focus moves; an atom is the range anchored on the side it came from,
|
|
113
111
|
// a block selection on the side away from the key.
|
|
114
|
-
const reversed = value.kind === 'atom' ? value.from === 'after' : blocks ? dir < 0 :
|
|
112
|
+
const reversed = value.kind === 'atom' ? value.from === 'after' : blocks ? dir < 0 : projection.isReversed;
|
|
115
113
|
const [anchor, focus] = reversed ? [end, start] : [start, end];
|
|
116
114
|
const nodeBound = unit === 'char' && value.kind === 'text' && selection.hasNativeNodeSelection();
|
|
117
|
-
if (!extend && (blocks || !
|
|
115
|
+
if (!extend && (blocks || !projection.isCollapsed) && unit !== 'line' && unit !== 'doc') {
|
|
118
116
|
if (unit === 'char' && value.kind === 'text' && !nodeBound)
|
|
119
117
|
return false;
|
|
120
118
|
const to = dir > 0 ? end : start;
|
|
121
119
|
select(edytor, to, to);
|
|
122
120
|
return true;
|
|
123
121
|
}
|
|
122
|
+
const first = unit === 'doc' ? displayable(edytor, null, -dir) : null;
|
|
124
123
|
let to = unit === 'line'
|
|
125
|
-
? edge(focus.
|
|
126
|
-
: unit
|
|
127
|
-
? (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
//
|
|
133
|
-
// the next line's start): Firefox's forward step only trades one for
|
|
134
|
-
// other, so that step is the editor's (a logical step: bidi never
|
|
135
|
-
// across a line break).
|
|
136
|
-
const
|
|
137
|
-
|
|
124
|
+
? edge(edytor, focus.block, dir)
|
|
125
|
+
: unit !== 'doc'
|
|
126
|
+
? step(edytor, focus, dir, unit)
|
|
127
|
+
: first
|
|
128
|
+
? edge(edytor, first, dir)
|
|
129
|
+
: null;
|
|
130
|
+
// A grapheme step inside the focus's text is the browser's, except past a
|
|
131
|
+
// soft break, where the caret has two DOM positions (the break's node
|
|
132
|
+
// end, the next line's start): Firefox's forward step only trades one for
|
|
133
|
+
// the other, so that step is the editor's (a logical step: bidi never
|
|
134
|
+
// reorders across a line break).
|
|
135
|
+
const text = stringOf(edytor, focus.block);
|
|
136
|
+
const native = unit === 'char' &&
|
|
137
|
+
!nodeBound &&
|
|
138
|
+
value.kind === 'text' &&
|
|
139
|
+
to?.block === focus.block &&
|
|
140
|
+
text[Math.min(to.offset, focus.offset)] !== ATOM;
|
|
141
|
+
if (native && !(dir > 0 && text[focus.offset - 1] === '\n'))
|
|
138
142
|
return false;
|
|
139
143
|
// A forward node-bound extension never rests on another block's first
|
|
140
144
|
// stop (a derive maps that end back onto the previous block's end).
|
|
@@ -142,9 +146,8 @@ export const move = (edytor, unit, key, extend) => {
|
|
|
142
146
|
extend &&
|
|
143
147
|
to &&
|
|
144
148
|
to.offset === 0 &&
|
|
145
|
-
to.
|
|
146
|
-
to
|
|
147
|
-
compare(anchor, to, edytor) < 0)
|
|
149
|
+
to.block !== anchor.block &&
|
|
150
|
+
compare(edytor, anchor, to) < 0)
|
|
148
151
|
to = step(edytor, to, 1, 'char');
|
|
149
152
|
if (!to) {
|
|
150
153
|
if (!nodeBound)
|
|
@@ -156,80 +159,38 @@ export const move = (edytor, unit, key, extend) => {
|
|
|
156
159
|
select(edytor, extend ? anchor : to, to);
|
|
157
160
|
return true;
|
|
158
161
|
};
|
|
159
|
-
/** A block's lines
|
|
160
|
-
const linesOf = (block) => {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
continue;
|
|
166
|
-
}
|
|
167
|
-
let offset = 0;
|
|
168
|
-
part.stringContent.split('\n').forEach((line, index) => {
|
|
169
|
-
if (index)
|
|
170
|
-
lines.push([]);
|
|
171
|
-
lines.at(-1).push({ text: part, offset, length: line.length });
|
|
172
|
-
offset += line.length + 1;
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
return lines;
|
|
176
|
-
};
|
|
177
|
-
/** The stop at `column` of a line; past its end, the end of its last text. */
|
|
178
|
-
const onLine = (line, column) => {
|
|
179
|
-
let rest = Math.max(column, 0);
|
|
180
|
-
let last = null;
|
|
181
|
-
for (const piece of line) {
|
|
182
|
-
if (!piece) {
|
|
183
|
-
rest = Math.max(0, rest - 1);
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
last = piece;
|
|
187
|
-
if (piece.length === 0 && rest > 0)
|
|
188
|
-
continue;
|
|
189
|
-
if (rest <= piece.length)
|
|
190
|
-
return { text: piece.text, offset: piece.offset + rest };
|
|
191
|
-
rest -= piece.length;
|
|
192
|
-
}
|
|
193
|
-
return last && { text: last.text, offset: last.offset + last.length };
|
|
194
|
-
};
|
|
195
|
-
const islandOf = (edytor, block) => [block.id, ...edytor.facade.ancestorsOf(block.id)].find((id) => edytor.facade.isIsland(id));
|
|
196
|
-
/** The line holding `at` and its column there. */
|
|
197
|
-
const locate = (lines, at) => {
|
|
198
|
-
for (const [index, line] of lines.entries()) {
|
|
199
|
-
let column = 0;
|
|
200
|
-
for (const piece of line) {
|
|
201
|
-
if (piece?.text === at.text &&
|
|
202
|
-
at.offset >= piece.offset &&
|
|
203
|
-
at.offset <= piece.offset + piece.length)
|
|
204
|
-
return { index, column: column + at.offset - piece.offset };
|
|
205
|
-
column += piece ? piece.length : 1;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return null;
|
|
162
|
+
/** A block's lines (split at its `\n` soft breaks: logical lines, not layout), as start and end offsets. */
|
|
163
|
+
const linesOf = (edytor, block) => {
|
|
164
|
+
let at = 0;
|
|
165
|
+
return stringOf(edytor, block)
|
|
166
|
+
.split('\n')
|
|
167
|
+
.map((line) => [at, (at += line.length + 1) - 1]);
|
|
209
168
|
};
|
|
169
|
+
const islandOf = (edytor, block) => [block, ...edytor.facade.ancestorsOf(block)].find((id) => edytor.facade.isIsland(id));
|
|
210
170
|
/**
|
|
211
|
-
* The stop one line from `from` in `dir` at `goal` (default: its own column
|
|
212
|
-
* the next line of its block, else the facing line
|
|
213
|
-
* non-void block inside the same island, else its
|
|
214
|
-
*
|
|
171
|
+
* The stop one line from `from` in `dir` at `goal` (default: its own column;
|
|
172
|
+
* an atom is one column): the next line of its block, else the facing line
|
|
173
|
+
* of the next displayable non-void block inside the same island, else its
|
|
174
|
+
* own block's edge.
|
|
215
175
|
*/
|
|
216
176
|
const lineStop = (edytor, from, dir, goal) => {
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
if (!at)
|
|
177
|
+
const lines = linesOf(edytor, from.block);
|
|
178
|
+
const index = lines.findIndex(([start, end]) => from.offset >= start && from.offset <= end);
|
|
179
|
+
if (index < 0)
|
|
221
180
|
return null;
|
|
222
|
-
const column = goal ??
|
|
223
|
-
let
|
|
181
|
+
const column = goal ?? from.offset - lines[index][0];
|
|
182
|
+
let block = from.block;
|
|
183
|
+
let line = lines[index + dir];
|
|
224
184
|
const island = islandOf(edytor, block);
|
|
225
185
|
for (let next = line ? null : displayable(edytor, block, dir); next && !line; next = displayable(edytor, next, dir)) {
|
|
226
186
|
if (islandOf(edytor, next) !== island)
|
|
227
187
|
break;
|
|
228
|
-
if (!edytor.facade.isVoid(next
|
|
229
|
-
line = linesOf(next).at(dir > 0 ? 0 : -1);
|
|
188
|
+
if (!edytor.facade.isVoid(next))
|
|
189
|
+
[block, line] = [next, linesOf(edytor, next).at(dir > 0 ? 0 : -1)];
|
|
230
190
|
}
|
|
231
|
-
const
|
|
232
|
-
|
|
191
|
+
const [start, end] = line ?? lines.at(dir > 0 ? -1 : 0);
|
|
192
|
+
const offset = start + (line ? column : dir * Infinity);
|
|
193
|
+
return { block, offset: Math.min(Math.max(offset, start), end), column };
|
|
233
194
|
};
|
|
234
195
|
const goals = new WeakMap();
|
|
235
196
|
/**
|
|
@@ -240,12 +201,11 @@ const goals = new WeakMap();
|
|
|
240
201
|
* moves keep the goal column. Answers whether a text selection moved.
|
|
241
202
|
*/
|
|
242
203
|
export const extendVertically = (edytor, dir) => {
|
|
243
|
-
const { value,
|
|
244
|
-
|
|
204
|
+
const { value, projection } = edytor.selection;
|
|
205
|
+
const { start, end } = projection;
|
|
206
|
+
if (value.kind !== 'text' || !start || !end)
|
|
245
207
|
return false;
|
|
246
|
-
const
|
|
247
|
-
const end = { text: state.endText, offset: state.yEnd };
|
|
248
|
-
const [anchor, focus] = state.isReversed ? [end, start] : [start, end];
|
|
208
|
+
const [anchor, focus] = projection.isReversed ? [end, start] : [start, end];
|
|
249
209
|
const kept = goals.get(edytor);
|
|
250
210
|
const to = lineStop(edytor, focus, dir, kept?.value === value ? kept.column : undefined);
|
|
251
211
|
if (!to)
|
|
@@ -270,9 +230,9 @@ const natives = new WeakMap();
|
|
|
270
230
|
*/
|
|
271
231
|
const stopBelow = (edytor, block) => {
|
|
272
232
|
const { facade } = edytor;
|
|
273
|
-
const items = [block
|
|
233
|
+
const items = [block, ...facade.ancestorsOf(block)].filter((id) => facade.isLayoutItem(id) || facade.isTableCell(id));
|
|
274
234
|
const ids = facade.order();
|
|
275
|
-
const from = ids.indexOf(block
|
|
235
|
+
const from = ids.indexOf(block);
|
|
276
236
|
if (from < 0)
|
|
277
237
|
return true;
|
|
278
238
|
for (let i = from + 1; i < ids.length; i++) {
|
|
@@ -295,23 +255,30 @@ const stopBelow = (edytor, block) => {
|
|
|
295
255
|
* cell, a code line, a heading). Never in a view that writes nothing.
|
|
296
256
|
*/
|
|
297
257
|
const leavesLastStop = (edytor) => {
|
|
298
|
-
const
|
|
299
|
-
const {
|
|
300
|
-
if (
|
|
301
|
-
return false;
|
|
302
|
-
if (!edytor.dispatcher.permits())
|
|
258
|
+
const block = onLastLine(edytor);
|
|
259
|
+
const { root } = edytor;
|
|
260
|
+
if (!block || !root || !edytor.dispatcher.permits())
|
|
303
261
|
return false;
|
|
304
|
-
const at = { text: state.startText, offset: state.yStart };
|
|
305
|
-
const block = at.text.parent;
|
|
306
262
|
if (block.parent?.isRoot && block.type === edytor.defaultChild(root))
|
|
307
263
|
return false;
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
264
|
+
return !stopBelow(edytor, block.id);
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* The block a collapsed text caret sits on the last line of (a line box
|
|
268
|
+
* where the view lays one out, else a line break), if it does: where
|
|
269
|
+
* ArrowDown leaves the block (`nav.trailing.exit`, `body.down`).
|
|
270
|
+
*/
|
|
271
|
+
export const onLastLine = (edytor) => {
|
|
272
|
+
const { value, projection } = edytor.selection;
|
|
273
|
+
const at = projection.start;
|
|
274
|
+
const block = at && edytor.idToBlock.get(at.block);
|
|
275
|
+
if (value.kind !== 'text' || !projection.isCollapsed || !block)
|
|
276
|
+
return;
|
|
277
|
+
const text = stringOf(edytor, at.block);
|
|
278
|
+
if (text.includes('\n', at.offset))
|
|
279
|
+
return;
|
|
280
|
+
const last = edytor.ports.surface.sameLine(at, { block: at.block, offset: text.length });
|
|
281
|
+
return last === false ? undefined : block;
|
|
315
282
|
};
|
|
316
283
|
/**
|
|
317
284
|
* The trailing paragraph (`nav.trailing`, Notion): the caret goes to an
|
|
@@ -329,13 +296,14 @@ export const toTrailingParagraph = (edytor) => {
|
|
|
329
296
|
return false;
|
|
330
297
|
const kind = edytor.defaultChild(root);
|
|
331
298
|
if (last.type === kind && last.isEmpty && last.firstText) {
|
|
332
|
-
edytor.selection.
|
|
299
|
+
edytor.selection.selectText(last.firstText, 0);
|
|
333
300
|
return true;
|
|
334
301
|
}
|
|
335
|
-
const
|
|
336
|
-
|
|
302
|
+
const { ids } = edytor.insertBlocks(siblingSlot(last), [{ type: kind }]);
|
|
303
|
+
const text = edytor.idToBlock.get(ids[0] ?? '')?.firstText;
|
|
304
|
+
if (!text)
|
|
337
305
|
return false;
|
|
338
|
-
edytor.dispatcher.caret(
|
|
306
|
+
edytor.dispatcher.caret(text, 0);
|
|
339
307
|
return true;
|
|
340
308
|
};
|
|
341
309
|
/**
|
|
@@ -363,10 +331,10 @@ export const landed = (edytor) => {
|
|
|
363
331
|
if (!native || native.serial !== edytor.intentSerial || native.value !== selection.value)
|
|
364
332
|
return false;
|
|
365
333
|
natives.delete(edytor);
|
|
366
|
-
const {
|
|
367
|
-
|
|
334
|
+
const { start, end, isReversed } = selection.projection;
|
|
335
|
+
const focus = isReversed ? start : end;
|
|
336
|
+
if (!focus)
|
|
368
337
|
return false;
|
|
369
|
-
const focus = isReversed ? { text: startText, offset: yStart } : { text: endText, offset: yEnd };
|
|
370
338
|
const to = lineStop(edytor, focus, native.dir) ?? focus;
|
|
371
339
|
select(edytor, to, to);
|
|
372
340
|
return true;
|
package/dist/session/ports.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { Text } from '../text/text.svelte.js';
|
|
11
11
|
import type { Attempt } from './attempt.js';
|
|
12
|
+
import type { SelectionPoint } from './selection.js';
|
|
12
13
|
/** The surface as the session sees it: the projector, the observer, the DOM selection. */
|
|
13
14
|
export interface SurfacePort {
|
|
14
15
|
/**
|
|
@@ -35,13 +36,7 @@ export interface SurfacePort {
|
|
|
35
36
|
* ends where a line wraps), or `null` where nothing is laid out
|
|
36
37
|
* (`surface/lines.ts`).
|
|
37
38
|
*/
|
|
38
|
-
sameLine(a:
|
|
39
|
-
text: Text;
|
|
40
|
-
offset: number;
|
|
41
|
-
}, b: {
|
|
42
|
-
text: Text;
|
|
43
|
-
offset: number;
|
|
44
|
-
}): boolean | null;
|
|
39
|
+
sameLine(a: SelectionPoint, b: SelectionPoint): boolean | null;
|
|
45
40
|
}
|
|
46
41
|
/** The input commands a key binding runs (`events/beforeInputCommands.ts`). */
|
|
47
42
|
export interface InputPort {
|
package/dist/session/props.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* `
|
|
2
|
+
* A view's property writes (`block.data`, `atom.data`, `edytor.data`): the
|
|
3
|
+
* data proxy (`crdt/props.ts`) over the view's one write path.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `keySegment` writes it (`~abc` as `~0abc`: never an item's id). A write
|
|
15
|
-
* is one data patch through `write` (a
|
|
16
|
-
* command): `obj.key = v`, `arr[i] = v` (by index) and `delete obj.key`
|
|
17
|
-
* patch that path (a write inside an item, that item);
|
|
18
|
-
* `push`, `pop`, `shift`, `unshift`, `splice` and `length` are one
|
|
19
|
-
* `splice`, `sort` and `reverse` one `order` (the items move), `fill` and
|
|
20
|
-
* `copyWithin` writes of the items they change.
|
|
21
|
-
* `JSON.stringify` and `$state.snapshot` read plain JSON through it.
|
|
5
|
+
* The writes of one synchronous task are one dispatch: they queue per
|
|
6
|
+
* target and leave on the next microtask, or before any other operation
|
|
7
|
+
* this view dispatches, as the `patchData` operation of each target (more
|
|
8
|
+
* than one target: one user command, so one undo step, in one
|
|
9
|
+
* transaction). Hooks see that operation; a veto drops the burst. Until
|
|
10
|
+
* then the proxy reads its target's data with the queued patches applied
|
|
11
|
+
* (`dataPreview`), so a write reads back at once. A view that refuses
|
|
12
|
+
* writes (readonly, a read-only document) refuses an assignment at once:
|
|
13
|
+
* nothing is queued, the dispatcher records `refused`, nothing throws.
|
|
22
14
|
*/
|
|
23
|
-
import {
|
|
24
|
-
type
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
import type { DataPatch } from '../crdt/data.js';
|
|
16
|
+
import type { DataTarget } from '../crdt/doc/types.js';
|
|
17
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
18
|
+
export declare class DataWrites {
|
|
19
|
+
#private;
|
|
20
|
+
private readonly edytor;
|
|
21
|
+
constructor(edytor: Edytor);
|
|
22
|
+
/** The live proxy over `target`'s data; `read` is its reactive, committed source. */
|
|
23
|
+
proxy<T extends object>(target: DataTarget, read: () => Record<string, unknown>): T;
|
|
24
|
+
/** Queue `patches` on `target` for this task's dispatch (refused at once when the view refuses writes). */
|
|
25
|
+
write(target: DataTarget, patches: DataPatch[]): undefined;
|
|
26
|
+
/** Dispatch the queued writes now: before any other operation of this view, and at the end of the task. */
|
|
27
|
+
flush(): undefined;
|
|
28
|
+
}
|