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
|
@@ -3,12 +3,14 @@ import { pasteFlow } from '../clipboard/insertClipboardFragment.js';
|
|
|
3
3
|
import { jsonBlockToSpec } from '../utils/json.js';
|
|
4
4
|
import { id as mint } from '../utils.js';
|
|
5
5
|
/**
|
|
6
|
-
* The view's uploads
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* files
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* The view's uploads (`media.files`), one per view, the uploads plugin's:
|
|
7
|
+
* its uploader (`upload`, an empty block's Upload too) and the uploads of
|
|
8
|
+
* pasted and dropped files, session state, never in the document. A kind
|
|
9
|
+
* takes files by its record's `upload`; a paste or a drop (a drop replays
|
|
10
|
+
* the paste hooks) of files the kinds take places one empty block per
|
|
11
|
+
* file, each of the kind that takes it (`fallback` last), in the
|
|
12
|
+
* clipboard's order, as one paste (one command, one undo step), and each
|
|
13
|
+
* block shows its upload (`of`).
|
|
12
14
|
* The data an upload answers fills the block outside the history
|
|
13
15
|
* (`dispatcher.outside`), so the paste stays the one step that undoes it.
|
|
14
16
|
* A failed upload, or an answer that is no source, leaves the block empty
|
|
@@ -20,31 +22,32 @@ import { id as mint } from '../utils.js';
|
|
|
20
22
|
*/
|
|
21
23
|
export class FileUploads {
|
|
22
24
|
edytor;
|
|
23
|
-
|
|
25
|
+
upload;
|
|
24
26
|
#uploads = new SvelteMap();
|
|
25
|
-
constructor(edytor
|
|
27
|
+
constructor(edytor,
|
|
28
|
+
/** The view's uploader. */
|
|
29
|
+
upload) {
|
|
26
30
|
this.edytor = edytor;
|
|
31
|
+
this.upload = upload;
|
|
32
|
+
}
|
|
33
|
+
/** The kinds that take files (their records' `upload`), in registration order. */
|
|
34
|
+
get #kinds() {
|
|
35
|
+
return [...this.edytor.blocks].flatMap(([type, { upload }]) => upload ? [{ type, ...upload }] : []);
|
|
27
36
|
}
|
|
28
|
-
/** Take files for `kind` (the first registration of a type wins, as its definition). */
|
|
29
|
-
register = (kind) => {
|
|
30
|
-
if (!this.#kinds.some(({ type }) => type === kind.type))
|
|
31
|
-
this.#kinds.push(kind);
|
|
32
|
-
};
|
|
33
37
|
/** The kind that takes `file`, if any. */
|
|
34
|
-
kindOf = (file) => this.#kinds.find((kind) => !kind.fallback && kind.accepts(file)) ??
|
|
38
|
+
#kindOf = (file) => this.#kinds.find((kind) => !kind.fallback && kind.accepts(file)) ??
|
|
35
39
|
this.#kinds.find((kind) => kind.fallback && kind.accepts(file));
|
|
36
40
|
/** The upload of block `id` in this view (reactive), if any. */
|
|
37
41
|
of = (id) => this.#uploads.get(id);
|
|
38
42
|
/**
|
|
39
|
-
* The paste hook
|
|
40
|
-
*
|
|
41
|
-
* them shows text (an office app puts a picture of copied text on the
|
|
43
|
+
* The paste hook: the files a kind takes, unless the HTML beside them
|
|
44
|
+
* shows text (an office app puts a picture of copied text on the
|
|
42
45
|
* clipboard).
|
|
43
46
|
*/
|
|
44
47
|
paste = ({ e, prevent }) => {
|
|
45
|
-
if (this.edytor.readonly
|
|
48
|
+
if (this.edytor.readonly)
|
|
46
49
|
return;
|
|
47
|
-
const files = Array.from(e.clipboardData?.files ?? []).filter((file) => this
|
|
50
|
+
const files = Array.from(e.clipboardData?.files ?? []).filter((file) => this.#kindOf(file));
|
|
48
51
|
if (files.length && !showsText(e.clipboardData?.getData('text/html')))
|
|
49
52
|
prevent(() => this.insert(files));
|
|
50
53
|
};
|
|
@@ -52,7 +55,7 @@ export class FileUploads {
|
|
|
52
55
|
insert = (files) => {
|
|
53
56
|
const { edytor } = this;
|
|
54
57
|
const placed = files.flatMap((file) => {
|
|
55
|
-
const kind = this
|
|
58
|
+
const kind = this.#kindOf(file);
|
|
56
59
|
return kind ? [{ file, kind, id: mint('b') }] : [];
|
|
57
60
|
});
|
|
58
61
|
if (!placed.length)
|
|
@@ -89,7 +92,7 @@ export class FileUploads {
|
|
|
89
92
|
const block = this.edytor.idToBlock.get(id);
|
|
90
93
|
if (!block?.isInTree || this.edytor.destroyed)
|
|
91
94
|
return;
|
|
92
|
-
const kind =
|
|
95
|
+
const kind = block.definition.upload;
|
|
93
96
|
if (!kind || kind.filled(block.data))
|
|
94
97
|
return this.#uploads.delete(id);
|
|
95
98
|
this.#write(id, upload.data);
|
|
@@ -112,7 +115,7 @@ export class FileUploads {
|
|
|
112
115
|
};
|
|
113
116
|
let data;
|
|
114
117
|
try {
|
|
115
|
-
data = kind.data(file, await
|
|
118
|
+
data = kind.data(file, await this.upload(file, report));
|
|
116
119
|
}
|
|
117
120
|
catch {
|
|
118
121
|
data = null;
|
|
@@ -136,8 +139,7 @@ export class FileUploads {
|
|
|
136
139
|
/** The data's write, outside the history; refused (readonly), it is held for the next show. */
|
|
137
140
|
#write = (id, data) => {
|
|
138
141
|
const { edytor } = this;
|
|
139
|
-
|
|
140
|
-
edytor.dispatcher.outside(() => block.patchData({ ops: Object.entries(data).map(([key, value]) => ({ path: [key], value })) }));
|
|
142
|
+
edytor.dispatcher.outside(() => edytor.patchData(id, Object.entries(data).map(([key, value]) => ({ path: [key], value }))));
|
|
141
143
|
if (edytor.dispatcher.last?.status === 'applied')
|
|
142
144
|
this.#uploads.delete(id);
|
|
143
145
|
else
|
|
@@ -149,12 +151,17 @@ const showsText = (html) => !!html &&
|
|
|
149
151
|
typeof DOMParser !== 'undefined' &&
|
|
150
152
|
!!new DOMParser().parseFromString(html, 'text/html').body.textContent?.trim();
|
|
151
153
|
const views = new WeakMap();
|
|
152
|
-
/** The view's
|
|
153
|
-
export const fileUploads = (edytor) =>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
154
|
+
/** The view's uploads, when it lists the uploads plugin. */
|
|
155
|
+
export const fileUploads = (edytor) => edytor && views.get(edytor);
|
|
156
|
+
/**
|
|
157
|
+
* File uploads (Notion's): the view's one uploader, for every kind whose
|
|
158
|
+
* record takes files (`upload`: the image, file, video and audio kinds).
|
|
159
|
+
* Without it, only links are embedded. The first listed claims the view.
|
|
160
|
+
*/
|
|
161
|
+
export const createUploadsPlugin = ({ upload }) => (edytor) => {
|
|
162
|
+
if (!edytor || views.has(edytor))
|
|
163
|
+
return {};
|
|
164
|
+
const uploads = new FileUploads(edytor, upload);
|
|
165
|
+
views.set(edytor, uploads);
|
|
166
|
+
return { onPaste: uploads.paste, onEdytorAttached: () => uploads.destroy };
|
|
160
167
|
};
|
package/dist/plugins.d.ts
CHANGED
|
@@ -6,13 +6,15 @@ import type { Text } from './text/text.svelte.js';
|
|
|
6
6
|
import type { TextTransform } from './surface/cells.js';
|
|
7
7
|
import type { SerializableContent } from './utils/json.js';
|
|
8
8
|
import type { HotKey, HotKeyCombination } from './session/keymap.js';
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
9
|
+
import type { DocumentWrites } from './crdt/operations.js';
|
|
10
|
+
import type { ResolvedAt } from './session/suggestions.svelte.js';
|
|
11
11
|
import type { EdytorSelection } from './selection/selection.svelte.js';
|
|
12
12
|
import type { InlineBlock } from './block/inlineBlock.svelte.js';
|
|
13
13
|
import type { DocChange, PlanEffect } from './crdt/edytor-doc.js';
|
|
14
14
|
import type { MarkEdge } from './session/editing/text.js';
|
|
15
15
|
import type { Prevent } from './utils.js';
|
|
16
|
+
import type { TriggerMenuController } from './plugins/triggers/TriggerController.svelte.js';
|
|
17
|
+
import type { KindUpload } from './plugins/uploads.svelte.js';
|
|
16
18
|
/** What a placeholder function receives: the empty block's declared values. */
|
|
17
19
|
export type PlaceholderView = {
|
|
18
20
|
type: string;
|
|
@@ -20,8 +22,8 @@ export type PlaceholderView = {
|
|
|
20
22
|
focused: boolean;
|
|
21
23
|
empty: boolean;
|
|
22
24
|
};
|
|
23
|
-
/** An empty block's placeholder text: one string, or one per block (`null`: none). */
|
|
24
|
-
export type Placeholder = string | ((view: PlaceholderView) => string | null);
|
|
25
|
+
/** An empty block's placeholder text: one string, or one per block of the view (`null`: none). */
|
|
26
|
+
export type Placeholder = string | ((view: PlaceholderView, edytor: Edytor) => string | null);
|
|
25
27
|
/**
|
|
26
28
|
* Represents the payload for mark snippets with generic serializable content.
|
|
27
29
|
* @template D - The type of serializable content
|
|
@@ -40,12 +42,12 @@ export type { Prevent };
|
|
|
40
42
|
export type BlockView<D = Record<string, any>> = {
|
|
41
43
|
readonly id: string;
|
|
42
44
|
readonly type: string;
|
|
43
|
-
readonly data: D
|
|
45
|
+
readonly data: Readonly<D>;
|
|
44
46
|
readonly selected: boolean;
|
|
45
47
|
readonly focused: boolean;
|
|
46
48
|
/**
|
|
47
|
-
* The block's id-only handle (its getters, reactive in a
|
|
48
|
-
*
|
|
49
|
+
* The block's id-only, read-only handle (its getters, reactive in a
|
|
50
|
+
* template); `undefined` in a suggestion's preview, which is no block
|
|
49
51
|
* of the document.
|
|
50
52
|
*/
|
|
51
53
|
readonly handle: Block | undefined;
|
|
@@ -67,11 +69,119 @@ export type BlockSnippetPayload<D = Record<string, any>> = {
|
|
|
67
69
|
children: Snippet | null;
|
|
68
70
|
};
|
|
69
71
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
+
* The view's commands that are no single document write, each one prepared
|
|
73
|
+
* plan of them, with their payloads: a hook sees each by its name, then its
|
|
74
|
+
* planned steps as the writes they perform.
|
|
72
75
|
*/
|
|
73
|
-
export
|
|
76
|
+
export interface Commands {
|
|
77
|
+
/** A suggestion placed in the document (`edytor.suggestions`, `suggestion.accept()`). */
|
|
78
|
+
acceptSuggestion: {
|
|
79
|
+
suggestion: {
|
|
80
|
+
id: string;
|
|
81
|
+
at: ResolvedAt;
|
|
82
|
+
content: readonly JSONBlock[];
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Find and replace (`plugins/find`): each match's text replaced by
|
|
87
|
+
* `replacement`, one plan, one undo step.
|
|
88
|
+
*/
|
|
89
|
+
replaceMatches: {
|
|
90
|
+
matches: {
|
|
91
|
+
block: string;
|
|
92
|
+
offset: number;
|
|
93
|
+
length: number;
|
|
94
|
+
}[];
|
|
95
|
+
replacement: string;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* A comment thread's anchor (`plugins/comments`): its `comment:<thread>`
|
|
99
|
+
* mark over each run of the text it was made on, one plan, one undo step.
|
|
100
|
+
*/
|
|
101
|
+
addComment: {
|
|
102
|
+
thread: string;
|
|
103
|
+
runs: {
|
|
104
|
+
block: string;
|
|
105
|
+
offset: number;
|
|
106
|
+
length: number;
|
|
107
|
+
}[];
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* A text range dragged inside the editor and dropped at `to` (block
|
|
111
|
+
* offsets): its content placed at `to`, then the range deleted — or,
|
|
112
|
+
* with `copy` (Alt), only placed. Both are prepared before any write:
|
|
113
|
+
* hooks see the placement's planned steps and the deletion's, and a
|
|
114
|
+
* veto or a refusal of either writes nothing.
|
|
115
|
+
*/
|
|
116
|
+
moveText: {
|
|
117
|
+
from: {
|
|
118
|
+
start: {
|
|
119
|
+
block: string;
|
|
120
|
+
offset: number;
|
|
121
|
+
};
|
|
122
|
+
end: {
|
|
123
|
+
block: string;
|
|
124
|
+
offset: number;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
to: {
|
|
128
|
+
block: string;
|
|
129
|
+
offset: number;
|
|
130
|
+
};
|
|
131
|
+
copy: boolean;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* A closing marker typed after marked-up text (`**bold**`): the mark
|
|
135
|
+
* set, the markers removed; `value` typed at `start` of the text.
|
|
136
|
+
*/
|
|
137
|
+
inlineMarkdown: {
|
|
138
|
+
value: string;
|
|
139
|
+
start: number;
|
|
140
|
+
end: number;
|
|
141
|
+
};
|
|
142
|
+
/** A divider at the caret: its steps are the conversion, insertion or split it plans. */
|
|
143
|
+
insertDivider: Record<string, never>;
|
|
144
|
+
/** A table's row at `index`, one empty cell per column (`table.insert-row`). */
|
|
145
|
+
insertTableRow: {
|
|
146
|
+
index: number;
|
|
147
|
+
};
|
|
148
|
+
/** A table's rows, with their cells (`table.delete-row`). */
|
|
149
|
+
deleteTableRows: {
|
|
150
|
+
rows: Block[];
|
|
151
|
+
};
|
|
152
|
+
/** A table's column at `index`, an empty cell in every row (`table.insert-column`). */
|
|
153
|
+
insertTableColumn: {
|
|
154
|
+
index: number;
|
|
155
|
+
width?: number;
|
|
156
|
+
};
|
|
157
|
+
/** A table's column, by id or position, with its cells (`table.delete-column`). */
|
|
158
|
+
deleteTableColumn: {
|
|
159
|
+
column: string | number;
|
|
160
|
+
};
|
|
161
|
+
/** A table's column moved to position `to` (`table.move-column`). */
|
|
162
|
+
moveTableColumn: {
|
|
163
|
+
column: string | number;
|
|
164
|
+
to: number;
|
|
165
|
+
};
|
|
166
|
+
/** A table's rows moved to position `to` among its rows (`table.move-row`). */
|
|
167
|
+
moveTableRows: {
|
|
168
|
+
rows: Block[];
|
|
169
|
+
to: number;
|
|
170
|
+
};
|
|
171
|
+
/** The cell a row shows none of in `column`, created (`table.pad`). */
|
|
172
|
+
fillTableCell: {
|
|
173
|
+
row: string;
|
|
174
|
+
column: string | number;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/** A change a hook sees: its operation, its payload, the block (and text) it is about. */
|
|
178
|
+
type Change<K, P> = {
|
|
179
|
+
operation: K;
|
|
180
|
+
payload: P;
|
|
181
|
+
/** The block the operation names first (the root for none). */
|
|
74
182
|
block: Block;
|
|
183
|
+
/** The text segment at the offset a text write names. */
|
|
184
|
+
text?: Text;
|
|
75
185
|
/**
|
|
76
186
|
* Veto the operation (and, with `cb`, run that in its place): records the
|
|
77
187
|
* veto and returns, so the hook runs to its end; the first call decides.
|
|
@@ -79,21 +189,22 @@ export type ChangePayload = {
|
|
|
79
189
|
prevent: Prevent;
|
|
80
190
|
/**
|
|
81
191
|
* The prepared command's effect (blocks created, removed, merged, moved,
|
|
82
|
-
* retyped, text ranges written)
|
|
192
|
+
* retyped, text ranges written) — a hook can refuse a command by what it
|
|
193
|
+
* would do. Its planned steps are shown after it, each as the write it
|
|
194
|
+
* performs.
|
|
83
195
|
*/
|
|
84
196
|
effect?: PlanEffect;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
[K in keyof
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}[keyof BlockOperations]);
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* What `onBeforeOperation` receives: a document write under its name with
|
|
200
|
+
* its arguments (`payload`: `Parameters<DocumentWrites[K]>`), or a view
|
|
201
|
+
* command with its payload (`Commands`); `operation` narrows `payload`.
|
|
202
|
+
*/
|
|
203
|
+
export type ChangePayload = {
|
|
204
|
+
[K in keyof DocumentWrites]: Change<K, Parameters<DocumentWrites[K]>>;
|
|
205
|
+
}[keyof DocumentWrites] | {
|
|
206
|
+
[K in keyof Commands]: Change<K, Commands[K]>;
|
|
207
|
+
}[keyof Commands];
|
|
97
208
|
/**
|
|
98
209
|
* What `onAfterOperation` receives: a {@link ChangePayload} without
|
|
99
210
|
* `prevent` (the operation already ran). The `Omit` distributes over the
|
|
@@ -171,20 +282,6 @@ export type TriggerContext = TextRuleContext & {
|
|
|
171
282
|
/** The text typed after the trigger's `char`. */
|
|
172
283
|
query: string;
|
|
173
284
|
};
|
|
174
|
-
/** One row of a trigger's menu, for an `item` snippet. */
|
|
175
|
-
export type TriggerItemPayload<T = unknown> = {
|
|
176
|
-
item: T;
|
|
177
|
-
/** The row's label (`label(item)`). */
|
|
178
|
-
label: string;
|
|
179
|
-
/** The row's element id: set it (`id={row.id}`) so the editor names the highlighted row. */
|
|
180
|
-
id: string;
|
|
181
|
-
/** It is the keyboard's row. */
|
|
182
|
-
selected: boolean;
|
|
183
|
-
/** Pick it. */
|
|
184
|
-
pick: () => void;
|
|
185
|
-
/** Make it the keyboard's row (hover). */
|
|
186
|
-
select: () => void;
|
|
187
|
-
};
|
|
188
285
|
/**
|
|
189
286
|
* A character typed at a text's start or after whitespace opens a menu at
|
|
190
287
|
* the caret (`@` for people, `[[` for pages); the text typed after it is
|
|
@@ -208,14 +305,13 @@ export type Trigger<T = any> = {
|
|
|
208
305
|
label?: (item: T) => string;
|
|
209
306
|
/** A row's key, which keeps its markup across queries: default its `id`, else its label. Two rows may share one. */
|
|
210
307
|
key?: (item: T) => string;
|
|
211
|
-
/**
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
searching?: string;
|
|
308
|
+
/**
|
|
309
|
+
* The menu's markup and its words; it renders while `controller.isOpen`,
|
|
310
|
+
* placed at the caret (without it, nothing shows). Its keys stay the
|
|
311
|
+
* editor's; keep its ARIA with `{@attach controller.popup}` on the list
|
|
312
|
+
* (name it with `aria-label`) and `{...controller.option(index)}` on each row.
|
|
313
|
+
*/
|
|
314
|
+
menu?: Snippet<[TriggerMenuController<T>]>;
|
|
219
315
|
/** Whether the menu may open in `block` (default: a block that is not void and not in a code block). */
|
|
220
316
|
enabled?: (block: Block) => boolean;
|
|
221
317
|
};
|
|
@@ -228,10 +324,6 @@ export type PluginDefinitions = {
|
|
|
228
324
|
inlineBlocks?: Record<string, InlineBlockDefinition | Snippet<[InlineBlockSnippetPayload<any>]>>;
|
|
229
325
|
hotkeys?: Partial<Record<HotKeyCombination, HotKey>>;
|
|
230
326
|
commands?: EditorCommand[];
|
|
231
|
-
/** Text typed at the caret that a rule replaces (markdown, `:smile:` → 😄). */
|
|
232
|
-
inputRules?: InputRule[];
|
|
233
|
-
/** Characters that open a menu of rows at the caret (`@` mentions). */
|
|
234
|
-
triggers?: Trigger[];
|
|
235
327
|
};
|
|
236
328
|
/**
|
|
237
329
|
* Plugin factory function type that creates plugin definitions and operations.
|
|
@@ -244,9 +336,8 @@ export type PluginOperations = {
|
|
|
244
336
|
/** Called before an operation is executed */
|
|
245
337
|
onBeforeOperation?: <C extends ChangePayload>(payload: C) => C['payload'] | void;
|
|
246
338
|
/**
|
|
247
|
-
* Called after an operation is executed: `dispatcher.last.status` is set
|
|
248
|
-
*
|
|
249
|
-
* hook); `operation` narrows `payload`.
|
|
339
|
+
* Called after an operation is executed: `dispatcher.last.status` is set;
|
|
340
|
+
* `operation` narrows `payload`.
|
|
250
341
|
*/
|
|
251
342
|
onAfterOperation?: (payload: AfterOperationPayload) => void;
|
|
252
343
|
/** Called when the editor value changes: the same `JSONDoc` shape `<Edytor value>` takes. */
|
|
@@ -401,6 +492,12 @@ export type BlockDefinition = {
|
|
|
401
492
|
* Adopted by the document; checked in development against the snippet.
|
|
402
493
|
*/
|
|
403
494
|
rendersContent?: boolean;
|
|
495
|
+
/**
|
|
496
|
+
* The files the kind takes (the image's `image/*`, the file block's any):
|
|
497
|
+
* with the uploads plugin listed, an empty block's Upload sends one and a
|
|
498
|
+
* pasted or dropped file becomes a block of this kind (`media.files`).
|
|
499
|
+
*/
|
|
500
|
+
upload?: KindUpload;
|
|
404
501
|
/**
|
|
405
502
|
* A list-like kind (Notion's bullets, numbers, to-dos, toggles): Enter at
|
|
406
503
|
* the start or end of a non-empty block opens another block of this kind
|
|
@@ -412,10 +509,18 @@ export type BlockDefinition = {
|
|
|
412
509
|
/**
|
|
413
510
|
* A container kind (Notion's toggles, callouts, quotes): its content is a
|
|
414
511
|
* header over its children. Enter at the end of a header with children
|
|
415
|
-
* opens a first child of `defaultChild
|
|
512
|
+
* opens a first child of `defaultChild`, as at the end of an open
|
|
513
|
+
* `details` header without children; a closed `details` header (the
|
|
416
514
|
* browser owns `open`) opens a sibling after instead, children untouched.
|
|
417
515
|
*/
|
|
418
516
|
container?: boolean;
|
|
517
|
+
/**
|
|
518
|
+
* A container whose children are a body that shows even while it is
|
|
519
|
+
* empty (Notion's callout: a title over its content): Enter at the end of
|
|
520
|
+
* its header opens its first child, as an open toggle's does, and a paste
|
|
521
|
+
* there leads that body. Needs `container`.
|
|
522
|
+
*/
|
|
523
|
+
body?: boolean;
|
|
419
524
|
/**
|
|
420
525
|
* The type a new child of this block takes by default (Enter inside a
|
|
421
526
|
* child, a split, an island merged out into it). Adopted by the
|
|
@@ -482,17 +587,19 @@ export type BlockDefinition = {
|
|
|
482
587
|
block: Block;
|
|
483
588
|
}) => void;
|
|
484
589
|
/** Normalize block content
|
|
485
|
-
* Called at the end of the transaction of each operation
|
|
486
|
-
* block is an id-only handle whose reads show the
|
|
487
|
-
* If you return a function, it runs in the same
|
|
590
|
+
* Called at the end of the transaction of each operation that wrote the
|
|
591
|
+
* block's content: the block is an id-only handle whose reads show the
|
|
592
|
+
* operation's writes. If you return a function, it runs in the same
|
|
593
|
+
* transaction (its writes are the view's operations).
|
|
488
594
|
*/
|
|
489
595
|
normalizeContent?: (payload: {
|
|
490
596
|
block: Block;
|
|
491
597
|
}) => (() => void) | void;
|
|
492
598
|
/** Normalize block children
|
|
493
|
-
* Called at the end of the transaction of each operation
|
|
494
|
-
* block is an id-only handle whose reads show the
|
|
495
|
-
* If you return a function, it runs in the same
|
|
599
|
+
* Called at the end of the transaction of each operation that changed the
|
|
600
|
+
* block's children: the block is an id-only handle whose reads show the
|
|
601
|
+
* operation's writes. If you return a function, it runs in the same
|
|
602
|
+
* transaction (its writes are the view's operations).
|
|
496
603
|
*/
|
|
497
604
|
normalizeChildren?: (payload: {
|
|
498
605
|
block: Block;
|
|
@@ -502,7 +609,7 @@ export type BlockDefinition = {
|
|
|
502
609
|
export type InlineBlockView<D = Record<string, any>> = {
|
|
503
610
|
readonly id: string;
|
|
504
611
|
readonly type: string;
|
|
505
|
-
readonly data: D
|
|
612
|
+
readonly data: Readonly<D>;
|
|
506
613
|
readonly selected: boolean;
|
|
507
614
|
/** The atom's id-only handle; a suggested atom has none. */
|
|
508
615
|
readonly handle: InlineBlock | undefined;
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
export type DomSelectionSnapshot = Pick<Selection, 'anchorNode' | 'anchorOffset' | '
|
|
1
|
+
export type DomSelectionSnapshot = Pick<Selection, 'anchorNode' | 'anchorOffset' | 'focusNode' | 'focusOffset' | 'isCollapsed' | 'rangeCount'> & {
|
|
2
2
|
getRangeAt: (index: number) => Range;
|
|
3
|
-
nativeSelection: Selection | null;
|
|
4
|
-
type?: string;
|
|
5
3
|
};
|
|
6
4
|
export declare const getDomSelection: (node?: Node | null) => Selection | null;
|
|
7
5
|
export declare const getActiveElement: (node?: Node | null) => Element | null;
|
|
8
6
|
export declare const clearDomSelection: (node?: Node | null) => void;
|
|
7
|
+
/**
|
|
8
|
+
* The caret point under (`x`, `y`): `caretPositionFromPoint` (Firefox,
|
|
9
|
+
* Chromium 128, Safari 26.2), else `caretRangeFromPoint` (the supported
|
|
10
|
+
* Chromium and Safari before those).
|
|
11
|
+
*/
|
|
12
|
+
export declare const caretAtPoint: (doc: Document, x: number, y: number) => {
|
|
13
|
+
node: Node;
|
|
14
|
+
offset: number;
|
|
15
|
+
} | null;
|
|
16
|
+
/** A range in `node`'s document (a node always has one). */
|
|
9
17
|
export declare const createDomRange: (node: Node) => Range;
|
|
10
|
-
|
|
18
|
+
/** A snapshot of one range, forward. */
|
|
19
|
+
export declare const createDomSelectionSnapshotFromRange: (range: Range) => DomSelectionSnapshot;
|
|
11
20
|
/**
|
|
12
21
|
* Scroll the caret into view after a programmatic selection write.
|
|
13
22
|
*
|