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,5 +1,3 @@
|
|
|
1
|
-
import { replacedMark } from '../session/suggestions.svelte.js';
|
|
2
|
-
import { colorAttributes } from '../block/colors.js';
|
|
3
1
|
/** Chromium expands these shorthands into longhands: a longhand of an owned shorthand is owned. */
|
|
4
2
|
const LONGHANDS = {
|
|
5
3
|
outline: ['outline-width', 'outline-style', 'outline-color'],
|
|
@@ -41,6 +39,9 @@ export const ownedOf = (edytor, element, entry) => {
|
|
|
41
39
|
};
|
|
42
40
|
if (!entry || entry.kind === 'preview')
|
|
43
41
|
return null;
|
|
42
|
+
// A block's: what its render owns (`Block.svelte`), one reading.
|
|
43
|
+
if (entry.owned)
|
|
44
|
+
return entry.owned();
|
|
44
45
|
const { block } = entry;
|
|
45
46
|
if (entry.kind === 'mark') {
|
|
46
47
|
const name = entry.name ?? null;
|
|
@@ -73,30 +74,6 @@ export const ownedOf = (edytor, element, entry) => {
|
|
|
73
74
|
style: {}
|
|
74
75
|
};
|
|
75
76
|
}
|
|
76
|
-
const cell = edytor.cells?.get(block);
|
|
77
|
-
const isVoid = Boolean(cell && edytor.definitionOf(cell.type).void);
|
|
78
|
-
if (entry.kind === 'block') {
|
|
79
|
-
const handle = edytor.idToBlock.block(block);
|
|
80
|
-
const { selectedBlocks, focusedBlocks } = edytor.selection;
|
|
81
|
-
const colors = colorAttributes(cell?.data);
|
|
82
|
-
return {
|
|
83
|
-
strict: false,
|
|
84
|
-
owned: {
|
|
85
|
-
'data-edytor-block': 'true',
|
|
86
|
-
'data-edytor-color': colors['data-edytor-color'] ?? null,
|
|
87
|
-
'data-edytor-background': colors['data-edytor-background'] ?? null,
|
|
88
|
-
'data-edytor-id': block,
|
|
89
|
-
'data-edytor-type': cell?.type ?? null,
|
|
90
|
-
'data-edytor-void': isVoid ? 'true' : null,
|
|
91
|
-
'data-edytor-selected': selectedBlocks.has(handle) ? 'true' : null,
|
|
92
|
-
'data-edytor-focused': focusedBlocks.has(handle) ? 'true' : null,
|
|
93
|
-
'data-edytor-suggestion-replaced': replacedMark(edytor.suggestions.at(block)),
|
|
94
|
-
dir: blockDir(ownText(cell?.runs ?? [])),
|
|
95
|
-
contenteditable: isVoid ? 'false' : null
|
|
96
|
-
},
|
|
97
|
-
style: isVoid ? { 'user-select': 'none' } : {}
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
77
|
const text = edytor.nodeToText.get(element);
|
|
101
78
|
const voided = insideVoid(edytor, block);
|
|
102
79
|
return {
|
package/dist/surface/cells.d.ts
CHANGED
|
@@ -70,6 +70,11 @@ export type Part = Segment | AtomPart;
|
|
|
70
70
|
* with a segment (an empty content is one empty `start` segment).
|
|
71
71
|
*/
|
|
72
72
|
export declare const partsOf: (runs: readonly ContentRun[]) => readonly Part[];
|
|
73
|
+
/** Whether a view renders mark `name` (its record has a tag or a snippet): an unknown mark renders its text only. */
|
|
74
|
+
export declare const rendersMark: (marks: ReadonlyMap<string, {
|
|
75
|
+
tag?: unknown;
|
|
76
|
+
snippet?: unknown;
|
|
77
|
+
}>, name: string) => boolean;
|
|
73
78
|
export type RenderDelta = {
|
|
74
79
|
readonly text: string;
|
|
75
80
|
/** Mark entries in nesting order (the first run's order when runs merge). */
|
package/dist/surface/cells.js
CHANGED
|
@@ -171,6 +171,11 @@ export const partsOf = (runs) => {
|
|
|
171
171
|
partsMemo.set(runs, Object.freeze(parts));
|
|
172
172
|
return parts;
|
|
173
173
|
};
|
|
174
|
+
/** Whether a view renders mark `name` (its record has a tag or a snippet): an unknown mark renders its text only. */
|
|
175
|
+
export const rendersMark = (marks, name) => {
|
|
176
|
+
const mark = marks.get(name);
|
|
177
|
+
return Boolean(mark?.tag || mark?.snippet);
|
|
178
|
+
};
|
|
174
179
|
/** Mark payloads compare by canonical value: key-sorted, `undefined` values dropped. */
|
|
175
180
|
const marksKey = (marks) => marks
|
|
176
181
|
? JSON.stringify(Object.entries(marks)
|
package/dist/surface/lines.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare const sameLine: (a: DOMRect, b: DOMRect) => boolean;
|
|
|
26
26
|
export declare const onOneLine: (a: {
|
|
27
27
|
text: Text;
|
|
28
28
|
offset: number;
|
|
29
|
-
}, b: {
|
|
29
|
+
} | null, b: {
|
|
30
30
|
text: Text;
|
|
31
31
|
offset: number;
|
|
32
|
-
}) => boolean | null;
|
|
32
|
+
} | null) => boolean | null;
|
package/dist/surface/lines.js
CHANGED
|
@@ -38,6 +38,6 @@ export const sameLine = (a, b) => Math.abs(a.top + a.height / 2 - (b.top + b.hei
|
|
|
38
38
|
* text).
|
|
39
39
|
*/
|
|
40
40
|
export const onOneLine = (a, b) => {
|
|
41
|
-
const [x, y] = [caretBox(a.text, a.offset, false), caretBox(b.text, b.offset, false)];
|
|
41
|
+
const [x, y] = [a && caretBox(a.text, a.offset, false), b && caretBox(b.text, b.offset, false)];
|
|
42
42
|
return x && y ? sameLine(x, y) : null;
|
|
43
43
|
};
|
|
@@ -1,22 +1,7 @@
|
|
|
1
|
-
import type { YTransaction } from '../crdt/index.js';
|
|
2
1
|
import type { Edytor } from '../edytor.svelte.js';
|
|
3
2
|
import type { Text } from '../text/text.svelte.js';
|
|
4
|
-
import { type Kind } from './attributes.js';
|
|
5
|
-
import type
|
|
6
|
-
export type Verdict = 'adopt' | 'invert' | 'defer';
|
|
7
|
-
/** Where an adopted edit lands: the block and offset its anchor resolves to now. */
|
|
8
|
-
export type Place = {
|
|
9
|
-
block: string;
|
|
10
|
-
at: number;
|
|
11
|
-
remove: number;
|
|
12
|
-
insert: string;
|
|
13
|
-
};
|
|
14
|
-
export type Finding = {
|
|
15
|
-
block: string | null;
|
|
16
|
-
verdict: Verdict;
|
|
17
|
-
why: string;
|
|
18
|
-
place?: Place;
|
|
19
|
-
};
|
|
3
|
+
import { type Kind, type Owned } from './attributes.js';
|
|
4
|
+
import { type Patched, type Replaced } from './cells.js';
|
|
20
5
|
export declare class SurfaceObserver {
|
|
21
6
|
#private;
|
|
22
7
|
private edytor;
|
|
@@ -28,7 +13,7 @@ export declare class SurfaceObserver {
|
|
|
28
13
|
/** Observe `root` (the host): records name what to compare. */
|
|
29
14
|
attach: (root: HTMLElement) => () => void;
|
|
30
15
|
/** Register an element the core rendered (an attachment); returns its release. */
|
|
31
|
-
register: (node: Element, kind: Kind, block: string, name?: string) => () => void;
|
|
16
|
+
register: (node: Element, kind: Kind, block: string, name?: string, owned?: () => Owned) => () => void;
|
|
32
17
|
/** The render anchor (`Edytor.svelte`): a registered child of the strict root. */
|
|
33
18
|
anchor: (node: HTMLElement) => {
|
|
34
19
|
destroy: () => void;
|
|
@@ -45,8 +30,6 @@ export declare class SurfaceObserver {
|
|
|
45
30
|
signal: () => undefined;
|
|
46
31
|
/** Records the observer has not compared yet: the DOM may differ from what the cells rendered. */
|
|
47
32
|
pending: () => boolean;
|
|
48
|
-
/** Before a transaction: pending records name their contents while the model equals the render. */
|
|
49
|
-
before: (transaction: YTransaction) => void;
|
|
50
33
|
/**
|
|
51
34
|
* Compare and act now (an `input` event, a composition's end, a context
|
|
52
35
|
* menu): the contents the last flush rendered, not those waiting for one.
|
|
@@ -36,10 +36,12 @@
|
|
|
36
36
|
import { tick, untrack } from 'svelte';
|
|
37
37
|
import { diffText } from '../utils/diffText.js';
|
|
38
38
|
import { jsonEquals } from '../utils/json.js';
|
|
39
|
-
import { activeMarks } from '../session/editing/text.js';
|
|
39
|
+
import { activeMarks, marksForInsertion } from '../session/editing/text.js';
|
|
40
40
|
import { INTENTS } from '../session/attempt.js';
|
|
41
41
|
import { getCollapsedDomTextSelection, handleNativeLineBreakTextValue, readDomText } from '../events/onInput.js';
|
|
42
42
|
import { diverges, heal, ownedOf } from './attributes.js';
|
|
43
|
+
import { getTextContentOffsetAtPoint } from '../events/domTextOffset.js';
|
|
44
|
+
import { rendersMark } from './cells.js';
|
|
43
45
|
const ZWSP = /\u200B/g;
|
|
44
46
|
const ATOM = '\uFFFC';
|
|
45
47
|
/** Attributes that claim a core element's identity: never on an unregistered element. */
|
|
@@ -90,12 +92,8 @@ const caretIn = (nodes) => {
|
|
|
90
92
|
return undefined;
|
|
91
93
|
let offset = 0;
|
|
92
94
|
for (const node of nodes) {
|
|
93
|
-
if (node
|
|
94
|
-
|
|
95
|
-
range.selectNodeContents(node);
|
|
96
|
-
range.setEnd(anchor, selection.anchorOffset);
|
|
97
|
-
return offset + range.toString().length;
|
|
98
|
-
}
|
|
95
|
+
if (node.contains(anchor))
|
|
96
|
+
return offset + getTextContentOffsetAtPoint(node, anchor, selection.anchorOffset);
|
|
99
97
|
offset += node.textContent?.length ?? 0;
|
|
100
98
|
}
|
|
101
99
|
return undefined;
|
|
@@ -131,6 +129,7 @@ export class SurfaceObserver {
|
|
|
131
129
|
/** Of those, the ones a commit re-rendered (a remount discards its DOM: never snapshotted). */
|
|
132
130
|
#rerendered = new Set();
|
|
133
131
|
#bases = new Map();
|
|
132
|
+
/** A snapshotted edit: where it lands, or the verdict an expectation gave it. */
|
|
134
133
|
#snapshots = new Map();
|
|
135
134
|
/** Divergence a model-owned attempt's drift window may still repair: compared once it closed. */
|
|
136
135
|
#waiting = new Set();
|
|
@@ -148,8 +147,6 @@ export class SurfaceObserver {
|
|
|
148
147
|
}
|
|
149
148
|
/** Observe `root` (the host): records name what to compare. */
|
|
150
149
|
attach = (root) => {
|
|
151
|
-
if (typeof MutationObserver === 'undefined')
|
|
152
|
-
return () => { };
|
|
153
150
|
const mo = (this.#mo = new MutationObserver((records) => {
|
|
154
151
|
records.forEach(this.#intake);
|
|
155
152
|
this.signal();
|
|
@@ -171,8 +168,8 @@ export class SurfaceObserver {
|
|
|
171
168
|
};
|
|
172
169
|
};
|
|
173
170
|
/** Register an element the core rendered (an attachment); returns its release. */
|
|
174
|
-
register = (node, kind, block, name) => {
|
|
175
|
-
this.#registry.set(node, { kind, block, name });
|
|
171
|
+
register = (node, kind, block, name, owned) => {
|
|
172
|
+
this.#registry.set(node, { kind, block, name, owned });
|
|
176
173
|
if (kind === 'block')
|
|
177
174
|
this.#blocks.set(block, node);
|
|
178
175
|
else if (kind !== 'anchor' && kind !== 'preview') {
|
|
@@ -222,12 +219,6 @@ export class SurfaceObserver {
|
|
|
222
219
|
this.signal();
|
|
223
220
|
return this.#dirty.size > 0 || this.#removed.length > 0;
|
|
224
221
|
};
|
|
225
|
-
/** Before a transaction: pending records name their contents while the model equals the render. */
|
|
226
|
-
before = (transaction) => {
|
|
227
|
-
void transaction;
|
|
228
|
-
if (this.#take())
|
|
229
|
-
this.signal();
|
|
230
|
-
};
|
|
231
222
|
/**
|
|
232
223
|
* Compare and act now (an `input` event, a composition's end, a context
|
|
233
224
|
* menu): the contents the last flush rendered, not those waiting for one.
|
|
@@ -411,21 +402,15 @@ export class SurfaceObserver {
|
|
|
411
402
|
if (!dom || !cell || dom.text === base.text || dom.text === textOf(cell))
|
|
412
403
|
continue;
|
|
413
404
|
// An expectation claims the edit, or it is placed through the anchor minted at it.
|
|
414
|
-
const
|
|
405
|
+
const verdict = this.#divergence(id);
|
|
415
406
|
// An edit the window defers is drift: the flush's render restores the cell.
|
|
416
|
-
if (
|
|
417
|
-
|
|
418
|
-
if (claimed.verdict !== 'adopt' || claimed.why === 'attempt') {
|
|
419
|
-
this.#snapshots.set(id, claimed);
|
|
407
|
+
if (verdict !== 'adopt') {
|
|
408
|
+
this.#snapshots.set(id, verdict === 'defer' ? 'invert' : verdict);
|
|
420
409
|
continue;
|
|
421
410
|
}
|
|
422
411
|
const change = diffText(base.text, dom.text);
|
|
423
|
-
this.#
|
|
424
|
-
|
|
425
|
-
verdict: 'adopt',
|
|
426
|
-
why: 'snapshot',
|
|
427
|
-
place: { ...change, ...this.#place(id, base, dom.text, change.at, textOf(cell)) }
|
|
428
|
-
});
|
|
412
|
+
const place = this.#place(id, base, dom.text, change.at, textOf(cell));
|
|
413
|
+
this.#snapshots.set(id, { ...change, ...place });
|
|
429
414
|
}
|
|
430
415
|
};
|
|
431
416
|
/** The live composition host's block. */
|
|
@@ -494,14 +479,14 @@ export class SurfaceObserver {
|
|
|
494
479
|
}
|
|
495
480
|
if (this.#fresh) {
|
|
496
481
|
this.#fresh = false;
|
|
497
|
-
void settle(work).then(edytor.projector.
|
|
482
|
+
void settle(work).then(edytor.projector.inputHandled);
|
|
498
483
|
}
|
|
499
484
|
return work;
|
|
500
485
|
};
|
|
501
486
|
/** A content differs from its cell (text, structure or a missing element). */
|
|
502
487
|
#diverges = (id) => {
|
|
503
488
|
if (id === null)
|
|
504
|
-
return this.#
|
|
489
|
+
return this.#rootDiverges();
|
|
505
490
|
const cell = this.edytor.cells?.get(id);
|
|
506
491
|
const dom = cell && id !== this.#host && this.#read(id);
|
|
507
492
|
return Boolean(dom && (dom.broken || dom.text !== textOf(cell) || this.#shape(id)));
|
|
@@ -524,9 +509,9 @@ export class SurfaceObserver {
|
|
|
524
509
|
if (snapshot) {
|
|
525
510
|
// Compared again at the next pass, once the edit is resolved.
|
|
526
511
|
this.#dirty.add(id);
|
|
527
|
-
if (snapshot
|
|
528
|
-
return [this.#adoptAt(snapshot
|
|
529
|
-
if (snapshot
|
|
512
|
+
if (typeof snapshot === 'object')
|
|
513
|
+
return [this.#adoptAt(snapshot)];
|
|
514
|
+
if (snapshot === 'invert')
|
|
530
515
|
this.#invert(id);
|
|
531
516
|
return [];
|
|
532
517
|
}
|
|
@@ -542,12 +527,12 @@ export class SurfaceObserver {
|
|
|
542
527
|
this.#invert(id);
|
|
543
528
|
return [];
|
|
544
529
|
}
|
|
545
|
-
const
|
|
530
|
+
const verdict = this.#divergence(id);
|
|
546
531
|
if (verdict === 'defer')
|
|
547
532
|
this.#waiting.add(id);
|
|
548
533
|
if (verdict === 'invert')
|
|
549
534
|
this.#invert(id);
|
|
550
|
-
if (verdict
|
|
535
|
+
if (verdict === 'defer' || verdict === 'invert')
|
|
551
536
|
return [];
|
|
552
537
|
return this.#adoptContent(id);
|
|
553
538
|
};
|
|
@@ -558,24 +543,19 @@ export class SurfaceObserver {
|
|
|
558
543
|
*/
|
|
559
544
|
#divergence = (id) => {
|
|
560
545
|
const { attempts, composition } = this.edytor;
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
//
|
|
564
|
-
if (composition.targetless)
|
|
565
|
-
return
|
|
566
|
-
// A structural key waiting for its `beforeinput` or deadline owns the drift it causes.
|
|
567
|
-
if (attempts.key)
|
|
568
|
-
return { block: id, verdict: 'invert', why: 'key' };
|
|
546
|
+
// The composition's tail; a composition with no target writes nothing: what its
|
|
547
|
+
// IME wrote is drift; a structural key waiting for its `beforeinput` or
|
|
548
|
+
// deadline owns the drift it causes.
|
|
549
|
+
if (composition.tail()?.parent.id === id || composition.targetless || attempts.key)
|
|
550
|
+
return 'invert';
|
|
569
551
|
for (const text of this.#texts(id)) {
|
|
570
552
|
if (attempts.on(text))
|
|
571
|
-
return
|
|
553
|
+
return 'attempt';
|
|
572
554
|
if (attempts.drifting(text))
|
|
573
|
-
return
|
|
555
|
+
return 'invert';
|
|
574
556
|
}
|
|
575
557
|
// A model-owned attempt's window is open: its drift may land around its host (a merge target).
|
|
576
|
-
|
|
577
|
-
return { block: id, verdict: 'defer', why: 'window' };
|
|
578
|
-
return { block: id, verdict: 'adopt', why: 'location' };
|
|
558
|
+
return attempts.busy ? 'defer' : 'adopt';
|
|
579
559
|
};
|
|
580
560
|
/**
|
|
581
561
|
* Restore the current cell (never the IME's host): the exact text when the
|
|
@@ -704,10 +684,7 @@ export class SurfaceObserver {
|
|
|
704
684
|
const node = nodes[i];
|
|
705
685
|
const chain = delta.marks
|
|
706
686
|
.map(([name]) => name)
|
|
707
|
-
.filter((name) =>
|
|
708
|
-
const mark = this.edytor.marks.get(name);
|
|
709
|
-
return mark?.snippet || mark?.tag;
|
|
710
|
-
});
|
|
687
|
+
.filter((name) => rendersMark(this.edytor.marks, name));
|
|
711
688
|
if (!chain.length) {
|
|
712
689
|
if (node.nodeType !== Node.TEXT_NODE)
|
|
713
690
|
return 'foreign-child';
|
|
@@ -727,11 +704,11 @@ export class SurfaceObserver {
|
|
|
727
704
|
}
|
|
728
705
|
return null;
|
|
729
706
|
};
|
|
730
|
-
/** The root's children
|
|
731
|
-
#
|
|
707
|
+
/** The root's children differ from its registered block elements in cell order, the anchor, Svelte's anchors. */
|
|
708
|
+
#rootDiverges = () => {
|
|
732
709
|
const { node, cells } = this.edytor;
|
|
733
710
|
if (!node || !cells)
|
|
734
|
-
return
|
|
711
|
+
return false;
|
|
735
712
|
const shown = [];
|
|
736
713
|
for (const child of node.childNodes) {
|
|
737
714
|
if (isAnchor(child))
|
|
@@ -740,14 +717,10 @@ export class SurfaceObserver {
|
|
|
740
717
|
if (entry?.kind === 'block')
|
|
741
718
|
shown.push(entry.block);
|
|
742
719
|
else if (entry?.kind !== 'anchor' && entry?.kind !== 'preview')
|
|
743
|
-
return
|
|
720
|
+
return true;
|
|
744
721
|
}
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
return { block: null, verdict: 'invert', why: 'missing' };
|
|
748
|
-
return shown.join() === cells.rootIds.join()
|
|
749
|
-
? null
|
|
750
|
-
: { block: null, verdict: 'invert', why: 'root-order' };
|
|
722
|
+
return (cells.rootIds.some((id) => this.#blocks.get(id)?.parentNode !== node) ||
|
|
723
|
+
shown.join() !== cells.rootIds.join());
|
|
751
724
|
};
|
|
752
725
|
/**
|
|
753
726
|
* The root is a strict container: a child it does not render is removed.
|
|
@@ -911,7 +884,7 @@ const shownMarks = (text, at) => {
|
|
|
911
884
|
};
|
|
912
885
|
/** The rendered marks the model gives the character at `at` of `text`. */
|
|
913
886
|
const modelMarks = (edytor, text, at) => Object.keys(activeMarks(text.getMarksAtRange(at, at + 1)[0]?.marks))
|
|
914
|
-
.filter((name) => edytor.marks
|
|
887
|
+
.filter((name) => rendersMark(edytor.marks, name))
|
|
915
888
|
.sort()
|
|
916
889
|
.join();
|
|
917
890
|
/**
|
|
@@ -937,7 +910,7 @@ export const adopt = async (edytor, text, dom, domCaret, prefer) => {
|
|
|
937
910
|
const caret = drifted ? undefined : domCaret;
|
|
938
911
|
if (attempt)
|
|
939
912
|
edytor.selection.select(attempt.target);
|
|
940
|
-
const { startText, yStart } = edytor.selection.
|
|
913
|
+
const { startText, yStart } = edytor.selection.textRange();
|
|
941
914
|
const grow = value.length - text.length;
|
|
942
915
|
const back = attempt?.isCollapsed && INTENTS[attempt.inputType]?.dir === 'back';
|
|
943
916
|
const change = diffText(text.stringContent, value, attempt && startText === text ? yStart + (back ? grow : Math.max(0, grow)) : (prefer ?? caret));
|
|
@@ -953,12 +926,16 @@ export const adopt = async (edytor, text, dom, domCaret, prefer) => {
|
|
|
953
926
|
const same = removed.every((part) => jsonEquals(activeMarks(part.marks), marks));
|
|
954
927
|
const shown = insert && shownMarks(text, at);
|
|
955
928
|
const kind = attempt ? attempt.inputType || (insert ? 'insertText' : 'deleteContent') : null;
|
|
956
|
-
edytor.dispatcher.run(kind ?? 'foreignChange', () =>
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
929
|
+
edytor.dispatcher.run(kind ?? 'foreignChange', () => {
|
|
930
|
+
const [id, from] = [text.parent.id, text.segStart + at];
|
|
931
|
+
// A replaced range's common marks; else the view's insertion rule.
|
|
932
|
+
const replaced = remove ? text.getMarksAtRange(at, at + remove) : undefined;
|
|
933
|
+
const marks = replaced && marksForInsertion(text, at, { replaced });
|
|
934
|
+
if (remove)
|
|
935
|
+
edytor.deleteText(id, from, remove);
|
|
936
|
+
if (insert)
|
|
937
|
+
edytor.insertText(id, from, insert, marks);
|
|
938
|
+
});
|
|
962
939
|
const adopted = text.isInDocument && text.stringContent === value;
|
|
963
940
|
if (attempt)
|
|
964
941
|
attempt.phase = adopted ? 'applied' : 'failed';
|
|
@@ -979,9 +956,12 @@ export const adopt = async (edytor, text, dom, domCaret, prefer) => {
|
|
|
979
956
|
return true;
|
|
980
957
|
const end = caret ?? (attempt ? at + insert.length : undefined);
|
|
981
958
|
if (adopted && end !== undefined)
|
|
982
|
-
edytor.selection.
|
|
959
|
+
edytor.selection.selectText(text, Math.min(end, text.length));
|
|
983
960
|
// A deletion of uniformly marked text keeps its marks pending at the caret.
|
|
984
|
-
if (adopted &&
|
|
961
|
+
if (adopted &&
|
|
962
|
+
same &&
|
|
963
|
+
Object.keys(marks).length > 0 &&
|
|
964
|
+
edytor.selection.textRange().startText === text)
|
|
985
965
|
edytor.selection.stage(marks);
|
|
986
966
|
return true;
|
|
987
967
|
};
|
|
@@ -18,14 +18,52 @@ import { type Component } from 'svelte';
|
|
|
18
18
|
* `content-visibility: auto` skips it off screen, or it is not
|
|
19
19
|
* displayed. Its geometry is not computed — reading it would force a layout
|
|
20
20
|
* of that subtree, every frame a measure asks — so measures read its nearest
|
|
21
|
-
* rendered ancestor instead (`checkVisibility
|
|
22
|
-
* node counts as rendered).
|
|
21
|
+
* rendered ancestor instead (`checkVisibility`).
|
|
23
22
|
*/
|
|
24
23
|
export declare const renderSkipped: (node: Element) => boolean;
|
|
25
24
|
/** `node`, or its nearest ancestor whose rendering the browser does not skip. */
|
|
26
25
|
export declare const rendered: (node: Element) => Element;
|
|
27
26
|
/** Reads layout with the layer's origin; returns the writes to apply after every read. */
|
|
28
27
|
export type Measure = (origin: DOMRect) => (() => void) | void;
|
|
28
|
+
/**
|
|
29
|
+
* The run of `count` items in vertical order (a parent's children, the
|
|
30
|
+
* top-level blocks) whose boxes (`boxAt`, client px) meet the band from
|
|
31
|
+
* `top` to `bottom`, edges included unless `strict`: two binary searches,
|
|
32
|
+
* O(log n) boxes read, an item without a box counted as above the band.
|
|
33
|
+
* Answers its first index and the index after its last.
|
|
34
|
+
*/
|
|
35
|
+
export declare const bandRun: (count: number, boxAt: (index: number) => DOMRect | undefined, top: number, bottom: number, strict?: boolean) => [number, number];
|
|
36
|
+
/** A box relative to the layer. */
|
|
37
|
+
export type LayerBox = {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
};
|
|
43
|
+
/** `element`'s box relative to the layer (`origin`), `null` when it is not in the page. */
|
|
44
|
+
export declare const layerBox: (element: Element | null | undefined, origin: DOMRect) => LayerBox | null;
|
|
45
|
+
/** Whether two measures hold the same values (`a`'s): a state is written only when one moved. */
|
|
46
|
+
export declare const sameValues: <T extends object>(a: T | null, b: T | null) => boolean;
|
|
47
|
+
/** A mounted host whose chrome places itself layer-relative: pinned at the layer's origin. */
|
|
48
|
+
export declare const pin: (host: HTMLElement) => CSSStyleDeclaration & {
|
|
49
|
+
position: string;
|
|
50
|
+
left: string;
|
|
51
|
+
top: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* A popup's place near `rect` (client px), 8px inside the viewport: `gap`
|
|
55
|
+
* below it, above it when there is no room below (`above`: above first,
|
|
56
|
+
* below when there is no room above), its left edge at `rect`'s or
|
|
57
|
+
* centered on it (`center`). Measured now from `box` (the host's first
|
|
58
|
+
* element by default; `fallback` before it has a size), written by the
|
|
59
|
+
* answer (the overlay's read-then-write pass).
|
|
60
|
+
*/
|
|
61
|
+
export declare const placeNear: (host: HTMLElement, rect: DOMRect, fallback: readonly [width: number, height: number], { gap, above, center, box }?: {
|
|
62
|
+
gap?: number;
|
|
63
|
+
above?: boolean;
|
|
64
|
+
center?: boolean;
|
|
65
|
+
box?: Element | null;
|
|
66
|
+
}) => (() => void) | void;
|
|
29
67
|
export declare class Overlay {
|
|
30
68
|
#private;
|
|
31
69
|
/** The layer: absolutely positioned at its static place right after the host. */
|
|
@@ -36,7 +74,7 @@ export declare class Overlay {
|
|
|
36
74
|
* font or a stylesheet that loads, a kind's markup drawn later (KaTeX, an
|
|
37
75
|
* image), a host whose height its page fixes — moves the blocks under the
|
|
38
76
|
* chrome. Watched while it is a top-level block near the viewport
|
|
39
|
-
* (
|
|
77
|
+
* (`near`): a nested block's resize resizes its top-level block, and a
|
|
40
78
|
* block farther away moves no chrome in view (one above it scrolls the
|
|
41
79
|
* page, by scroll anchoring, or resizes the host). Answers the release.
|
|
42
80
|
*/
|