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,7 +1,6 @@
|
|
|
1
1
|
import { type Snippet } from 'svelte';
|
|
2
2
|
import type { Attachment } from 'svelte/attachments';
|
|
3
3
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
4
|
-
import { type EquationLabels, type PartialLabels } from '../../labels.js';
|
|
5
4
|
/** The part of KaTeX the plugin uses: `katex.renderToString`. */
|
|
6
5
|
export type KatexLike = {
|
|
7
6
|
renderToString: (tex: string, options?: Record<string, unknown>) => string;
|
|
@@ -30,17 +29,42 @@ export type EquationPluginOptions = {
|
|
|
30
29
|
katex?: KatexLoader | string | false;
|
|
31
30
|
/** TeX macros every equation reads (`{ '\\RR': '\\mathbb{R}' }`). */
|
|
32
31
|
macros?: Record<string, string>;
|
|
33
|
-
/** The words the equations and their editor show, over the English ones. */
|
|
34
|
-
labels?: PartialLabels<'equation'>;
|
|
35
|
-
/** The slash menu's keywords by command id (`block.equation`, `equation.inline`), which replace its own. */
|
|
36
|
-
keywords?: Partial<Record<string, string[]>>;
|
|
37
32
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* (centered under a block equation
|
|
41
|
-
* source's field.
|
|
33
|
+
* The editor's panel and its words (the source's field, KaTeX's error, Done): it
|
|
34
|
+
* renders under the edited equation while `editor.target` is set
|
|
35
|
+
* (centered under a block equation; without it, nothing shows). Put
|
|
36
|
+
* `{@attach editor.field}` on the source's field.
|
|
42
37
|
*/
|
|
43
38
|
panel?: Snippet<[EquationEditor]>;
|
|
39
|
+
/**
|
|
40
|
+
* An empty equation's placeholder (default: `√x` and the view's
|
|
41
|
+
* `equation.blockPlaceholder` or `inlinePlaceholder`). A click on it
|
|
42
|
+
* opens the editor, as on any equation.
|
|
43
|
+
*/
|
|
44
|
+
placeholder?: Snippet<[EquationPlaceholderPayload]>;
|
|
45
|
+
/**
|
|
46
|
+
* An equation KaTeX cannot read (default: its source, marked invalid,
|
|
47
|
+
* KaTeX's message in its title).
|
|
48
|
+
*/
|
|
49
|
+
error?: Snippet<[EquationErrorPayload]>;
|
|
50
|
+
};
|
|
51
|
+
/** What an equation's `placeholder` snippet receives. */
|
|
52
|
+
export type EquationPlaceholderPayload = {
|
|
53
|
+
/** A block equation (`true`) or an inline one. */
|
|
54
|
+
display: boolean;
|
|
55
|
+
/** The view's placeholder for it (`equation.blockPlaceholder`, `inlinePlaceholder`). */
|
|
56
|
+
label: string;
|
|
57
|
+
};
|
|
58
|
+
/** What an equation's `error` snippet receives. */
|
|
59
|
+
export type EquationErrorPayload = {
|
|
60
|
+
/** A block equation (`true`) or an inline one. */
|
|
61
|
+
display: boolean;
|
|
62
|
+
/** Its TeX source. */
|
|
63
|
+
expression: string;
|
|
64
|
+
/** KaTeX's message. */
|
|
65
|
+
error: string;
|
|
66
|
+
/** The view's word for it (`equation.invalid`). */
|
|
67
|
+
label: string;
|
|
44
68
|
};
|
|
45
69
|
/** The data of a block equation and of an inline one: its TeX source. */
|
|
46
70
|
export type EquationData = {
|
|
@@ -87,23 +111,11 @@ export declare class EquationRenderer {
|
|
|
87
111
|
* the display asked (`display="block"`: a block), else `undefined`.
|
|
88
112
|
*/
|
|
89
113
|
export declare const parseEquation: (element: HTMLElement, display: boolean) => EquationData | undefined;
|
|
90
|
-
/** Each view's equation labels: the first equation plugin listed claims them, as its kinds. */
|
|
91
|
-
export declare const equationLabels: {
|
|
92
|
-
claim: (view: object | undefined, labels: EquationLabels) => void;
|
|
93
|
-
of: (view: object | undefined) => EquationLabels;
|
|
94
|
-
};
|
|
95
114
|
/** The equation being edited: a block equation, or an inline one (`atom`) in block `block`. */
|
|
96
115
|
export type EquationTarget = {
|
|
97
116
|
block: string;
|
|
98
117
|
atom?: string;
|
|
99
118
|
};
|
|
100
|
-
/** The edited equation's box, layer-relative. */
|
|
101
|
-
export type EquationBox = {
|
|
102
|
-
x: number;
|
|
103
|
-
y: number;
|
|
104
|
-
width: number;
|
|
105
|
-
height: number;
|
|
106
|
-
};
|
|
107
119
|
/**
|
|
108
120
|
* One view's equation editor (Notion's): a click on an equation of an
|
|
109
121
|
* editable view (Enter on a selected one, or a new empty one) opens its
|
|
@@ -117,7 +129,7 @@ export type EquationBox = {
|
|
|
117
129
|
*
|
|
118
130
|
* What a `panel` snippet receives: the equation being edited (`target`,
|
|
119
131
|
* `display` for a block one), its source (`expression`, written by
|
|
120
|
-
* `set`), KaTeX's error (`error`)
|
|
132
|
+
* `set`), KaTeX's error (`error`) and `close()`.
|
|
121
133
|
* Put `{@attach editor.field}` on the source's field: it takes the focus
|
|
122
134
|
* as the editor opens, Enter (Shift+Enter: a newline in a block equation)
|
|
123
135
|
* and Escape close the editor, and focus leaving the panel closes it.
|
|
@@ -125,8 +137,6 @@ export type EquationBox = {
|
|
|
125
137
|
export declare class EquationEditor {
|
|
126
138
|
#private;
|
|
127
139
|
private edytor;
|
|
128
|
-
/** The plugin's words (`editor`, `placeholder`, `done`, …). */
|
|
129
|
-
readonly labels: EquationLabels;
|
|
130
140
|
/** The equation being edited (reactive). */
|
|
131
141
|
target: EquationTarget | null;
|
|
132
142
|
/** The view is readonly (reactive): the editor closes. */
|
|
@@ -162,6 +172,9 @@ export declare class EquationEditor {
|
|
|
162
172
|
export type EquationView = {
|
|
163
173
|
renderer: EquationRenderer;
|
|
164
174
|
editor: EquationEditor;
|
|
175
|
+
/** The app's markup for an empty equation and an unreadable one, if any. */
|
|
176
|
+
placeholder?: Snippet<[EquationPlaceholderPayload]>;
|
|
177
|
+
error?: Snippet<[EquationErrorPayload]>;
|
|
165
178
|
};
|
|
166
179
|
/** By view. */
|
|
167
180
|
export declare const equationViews: WeakMap<Edytor, EquationView>;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
|
+
import { blockSelection } from '../../session/selection.js';
|
|
2
3
|
import { InlineBlock } from '../../block/inlineBlock.svelte.js';
|
|
3
4
|
import { takeKeys } from '../../events/onFocus.js';
|
|
4
|
-
import {
|
|
5
|
+
import { Anchored } from '../anchored.svelte.js';
|
|
6
|
+
import { escapeHtml } from '../../clipboard/serializeClipboardFragment.js';
|
|
7
|
+
import { all, listen } from '../../utils/listen.js';
|
|
5
8
|
/** The MathML annotation that carries an equation's TeX source. */
|
|
6
9
|
export const TEX = 'application/x-tex';
|
|
7
10
|
/** An equation's TeX source: its `expression`, a string. */
|
|
@@ -9,7 +12,6 @@ export const expressionOf = (data) => {
|
|
|
9
12
|
const value = data?.expression;
|
|
10
13
|
return typeof value === 'string' ? value : '';
|
|
11
14
|
};
|
|
12
|
-
const escape = (value) => value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
13
15
|
/** The cap of the drawings each renderer keeps. */
|
|
14
16
|
const CACHE = 256;
|
|
15
17
|
/**
|
|
@@ -71,7 +73,7 @@ export class EquationRenderer {
|
|
|
71
73
|
// TeX KaTeX cannot read: the source as text, below.
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
const source =
|
|
76
|
+
const source = escapeHtml(tex);
|
|
75
77
|
return (`<span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML"${display ? ' display="block"' : ''}>` +
|
|
76
78
|
`<semantics><mrow><mtext>${source}</mtext></mrow><annotation encoding="${TEX}">${source}</annotation></semantics></math></span>`);
|
|
77
79
|
};
|
|
@@ -118,10 +120,6 @@ export const parseEquation = (element, display) => {
|
|
|
118
120
|
math.getAttribute('alttext');
|
|
119
121
|
return tex?.trim() ? { expression: tex.trim() } : undefined;
|
|
120
122
|
};
|
|
121
|
-
/** Each view's equation labels: the first equation plugin listed claims them, as its kinds. */
|
|
122
|
-
export const equationLabels = viewLabels('equation');
|
|
123
|
-
/** The overlay host the editor renders in (the overlay's mount names it). */
|
|
124
|
-
const HOST = '[data-edytor-equation-editor-host]';
|
|
125
123
|
/**
|
|
126
124
|
* One view's equation editor (Notion's): a click on an equation of an
|
|
127
125
|
* editable view (Enter on a selected one, or a new empty one) opens its
|
|
@@ -135,7 +133,7 @@ const HOST = '[data-edytor-equation-editor-host]';
|
|
|
135
133
|
*
|
|
136
134
|
* What a `panel` snippet receives: the equation being edited (`target`,
|
|
137
135
|
* `display` for a block one), its source (`expression`, written by
|
|
138
|
-
* `set`), KaTeX's error (`error`)
|
|
136
|
+
* `set`), KaTeX's error (`error`) and `close()`.
|
|
139
137
|
* Put `{@attach editor.field}` on the source's field: it takes the focus
|
|
140
138
|
* as the editor opens, Enter (Shift+Enter: a newline in a block equation)
|
|
141
139
|
* and Escape close the editor, and focus leaving the panel closes it.
|
|
@@ -143,23 +141,20 @@ const HOST = '[data-edytor-equation-editor-host]';
|
|
|
143
141
|
export class EquationEditor {
|
|
144
142
|
edytor;
|
|
145
143
|
renderer;
|
|
146
|
-
labels;
|
|
147
144
|
/** The equation being edited (reactive). */
|
|
148
145
|
target = $state.raw(null);
|
|
149
146
|
/**
|
|
150
|
-
*
|
|
147
|
+
* The editor's panel under the edited equation: its place, and what closes it.
|
|
151
148
|
* @internal
|
|
152
149
|
*/
|
|
153
|
-
|
|
150
|
+
panel;
|
|
154
151
|
/** @internal */
|
|
155
152
|
constructor(edytor,
|
|
156
153
|
/** @internal */
|
|
157
|
-
renderer
|
|
158
|
-
/** The plugin's words (`editor`, `placeholder`, `done`, …). */
|
|
159
|
-
labels = englishLabels.equation) {
|
|
154
|
+
renderer) {
|
|
160
155
|
this.edytor = edytor;
|
|
161
156
|
this.renderer = renderer;
|
|
162
|
-
this.
|
|
157
|
+
this.panel = new Anchored(edytor, 'edytor-equation-editor-host', () => (this.target ? this.#node(this.target) : undefined), () => this.close(false));
|
|
163
158
|
}
|
|
164
159
|
/** The view is readonly (reactive): the editor closes. */
|
|
165
160
|
get readonly() {
|
|
@@ -171,13 +166,7 @@ export class EquationEditor {
|
|
|
171
166
|
* @internal
|
|
172
167
|
*/
|
|
173
168
|
get place() {
|
|
174
|
-
|
|
175
|
-
if (!this.target || !box)
|
|
176
|
-
return null;
|
|
177
|
-
return {
|
|
178
|
-
left: this.display ? box.x + box.width / 2 : box.x,
|
|
179
|
-
top: box.y + box.height + 6
|
|
180
|
-
};
|
|
169
|
+
return this.target && this.panel.place(6, this.display);
|
|
181
170
|
}
|
|
182
171
|
/** A block equation is edited (a field of several lines). */
|
|
183
172
|
get display() {
|
|
@@ -213,9 +202,9 @@ export class EquationEditor {
|
|
|
213
202
|
const target = this.target;
|
|
214
203
|
if (!target || expression === this.expression)
|
|
215
204
|
return;
|
|
216
|
-
const
|
|
217
|
-
if (
|
|
218
|
-
|
|
205
|
+
const at = target.atom ? { block: target.block, atom: target.atom } : target.block;
|
|
206
|
+
if (target.atom ? this.#atom(target) : this.#block(target))
|
|
207
|
+
this.edytor.patchData(at, [{ path: ['expression'], value: expression }]);
|
|
219
208
|
};
|
|
220
209
|
/**
|
|
221
210
|
* Close the editor. An inline equation left empty is removed; then, with
|
|
@@ -227,7 +216,7 @@ export class EquationEditor {
|
|
|
227
216
|
if (!target)
|
|
228
217
|
return;
|
|
229
218
|
this.target = null;
|
|
230
|
-
this.box = null;
|
|
219
|
+
this.panel.box = null;
|
|
231
220
|
this.edytor.overlay.invalidate();
|
|
232
221
|
const block = this.#block(target);
|
|
233
222
|
if (!block)
|
|
@@ -239,7 +228,7 @@ export class EquationEditor {
|
|
|
239
228
|
return;
|
|
240
229
|
const offset = offsetOf(block, atom);
|
|
241
230
|
if (!expressionOf(atom.data) && this.edytor.dispatcher.permits()) {
|
|
242
|
-
block.
|
|
231
|
+
this.edytor.removeInline(block.id, atom.id);
|
|
243
232
|
if (keys)
|
|
244
233
|
selection.setCaret({ block, offset });
|
|
245
234
|
}
|
|
@@ -247,7 +236,7 @@ export class EquationEditor {
|
|
|
247
236
|
selection.setCaret({ block, offset: offset + 1 });
|
|
248
237
|
}
|
|
249
238
|
else if (keys)
|
|
250
|
-
selection.
|
|
239
|
+
selection.select(blockSelection([block.id]));
|
|
251
240
|
if (keys)
|
|
252
241
|
takeKeys(this.edytor);
|
|
253
242
|
};
|
|
@@ -270,8 +259,8 @@ export class EquationEditor {
|
|
|
270
259
|
this.close();
|
|
271
260
|
};
|
|
272
261
|
const element = node;
|
|
273
|
-
element
|
|
274
|
-
element
|
|
262
|
+
const off = listen(element, 'keydown', keydown);
|
|
263
|
+
const off2 = listen(element, 'focusout', this.panel.blurred);
|
|
275
264
|
// Each equation the editor opens on: the field takes the focus, the caret at the end.
|
|
276
265
|
$effect(() => {
|
|
277
266
|
if (!this.target)
|
|
@@ -283,64 +272,8 @@ export class EquationEditor {
|
|
|
283
272
|
node.setSelectionRange(node.value.length, node.value.length);
|
|
284
273
|
});
|
|
285
274
|
});
|
|
286
|
-
return ()
|
|
287
|
-
element.removeEventListener('keydown', keydown);
|
|
288
|
-
element.removeEventListener('focusout', this.#blurred);
|
|
289
|
-
};
|
|
275
|
+
return all(off, off2);
|
|
290
276
|
});
|
|
291
|
-
/**
|
|
292
|
-
* The view turned readonly: the editor closes, the equation as it is.
|
|
293
|
-
* @internal
|
|
294
|
-
*/
|
|
295
|
-
lock = () => this.close(false);
|
|
296
|
-
/**
|
|
297
|
-
* A press anywhere (capture): one outside the editor and its equation closes it.
|
|
298
|
-
* @internal
|
|
299
|
-
*/
|
|
300
|
-
pressed = (event) => {
|
|
301
|
-
const target = this.target;
|
|
302
|
-
if (!target)
|
|
303
|
-
return;
|
|
304
|
-
const at = event.target;
|
|
305
|
-
if (at?.closest?.(HOST))
|
|
306
|
-
return;
|
|
307
|
-
if (at instanceof Node && this.#node(target)?.contains(at))
|
|
308
|
-
return;
|
|
309
|
-
this.close(false);
|
|
310
|
-
};
|
|
311
|
-
/** Focus left the field for somewhere outside the editor: it closes. */
|
|
312
|
-
#blurred = (event) => {
|
|
313
|
-
const to = event.relatedTarget;
|
|
314
|
-
const panel = event.currentTarget?.closest(HOST);
|
|
315
|
-
// No new focus (the window went to the background): it stays.
|
|
316
|
-
if (!(to instanceof Node) || panel?.contains(to))
|
|
317
|
-
return;
|
|
318
|
-
this.close(false);
|
|
319
|
-
};
|
|
320
|
-
/**
|
|
321
|
-
* The overlay measure: the edited equation's box; gone, the editor closes.
|
|
322
|
-
* @internal
|
|
323
|
-
*/
|
|
324
|
-
measure = (host, origin) => {
|
|
325
|
-
const target = this.target;
|
|
326
|
-
const node = target ? this.#node(target) : null;
|
|
327
|
-
const rect = node?.isConnected ? node.getBoundingClientRect() : null;
|
|
328
|
-
const box = rect
|
|
329
|
-
? {
|
|
330
|
-
x: rect.left - origin.left,
|
|
331
|
-
y: rect.top - origin.top,
|
|
332
|
-
width: rect.width,
|
|
333
|
-
height: rect.height
|
|
334
|
-
}
|
|
335
|
-
: null;
|
|
336
|
-
return () => {
|
|
337
|
-
Object.assign(host.style, { position: 'absolute', left: '0px', top: '0px' });
|
|
338
|
-
if (target && !node)
|
|
339
|
-
return this.close(false);
|
|
340
|
-
if (!sameBox(box, this.box))
|
|
341
|
-
this.box = box;
|
|
342
|
-
};
|
|
343
|
-
};
|
|
344
277
|
#block = (target) => {
|
|
345
278
|
const block = this.edytor.idToBlock.get(target.block);
|
|
346
279
|
return block?.isInTree ? block : undefined;
|
|
@@ -368,10 +301,3 @@ const offsetOf = (block, atom) => {
|
|
|
368
301
|
};
|
|
369
302
|
/** By view. */
|
|
370
303
|
export const equationViews = new WeakMap();
|
|
371
|
-
const sameBox = (a, b) => a === b ||
|
|
372
|
-
(a !== null &&
|
|
373
|
-
b !== null &&
|
|
374
|
-
a.x === b.x &&
|
|
375
|
-
a.y === b.y &&
|
|
376
|
-
a.width === b.width &&
|
|
377
|
-
a.height === b.height);
|
|
@@ -21,21 +21,18 @@ const stylesheet = (href) => {
|
|
|
21
21
|
let link = [...head.querySelectorAll(`link[${MARK}]`)].find((known) => known.getAttribute('href') === href);
|
|
22
22
|
if (link?.sheet)
|
|
23
23
|
return Promise.resolve();
|
|
24
|
-
|
|
25
|
-
const done = () => resolve();
|
|
26
|
-
link?.addEventListener('load', done, { once: true });
|
|
27
|
-
link?.addEventListener('error', done, { once: true });
|
|
28
|
-
if (link)
|
|
29
|
-
return;
|
|
24
|
+
if (!link) {
|
|
30
25
|
link = document.createElement('link');
|
|
31
26
|
link.rel = 'stylesheet';
|
|
32
27
|
link.href = href;
|
|
33
28
|
link.setAttribute(MARK, '');
|
|
34
|
-
link.addEventListener('load', done, { once: true });
|
|
35
|
-
link.addEventListener('error', done, { once: true });
|
|
36
29
|
head.append(link);
|
|
30
|
+
}
|
|
31
|
+
const known = link;
|
|
32
|
+
return new Promise((resolve) => {
|
|
33
|
+
for (const type of ['load', 'error'])
|
|
34
|
+
known.addEventListener(type, () => resolve(), { once: true });
|
|
37
35
|
});
|
|
38
|
-
return settled;
|
|
39
36
|
};
|
|
40
37
|
/** The KaTeX a module exports: itself, or its default export. */
|
|
41
38
|
const katexOf = (module) => {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Files dragged from outside over a view (Notion): the drop indicator a
|
|
3
|
+
* block drag shows, where the files land, and that placement for the drop
|
|
4
|
+
* (the core's `onDrop.ts` asks the view's uploads, `ViewUploads.drop`, and passes it to the occurrence; the view's uploads place one
|
|
5
|
+
* block per file there, one command). The placement is the block drag's
|
|
6
|
+
* own resolution (`DropResolver`) for a drag that moves no block, whose
|
|
7
|
+
* places are the ones the document takes new blocks of the files' kinds
|
|
8
|
+
* at (`canPlaceNew`). Shown only in an editable view whose uploads take
|
|
9
|
+
* one of the files (`viewUploads`); with or without the block handles.
|
|
10
|
+
* Plugin-owned: the view's `FileUploads` (the first media plugin listed with
|
|
11
|
+
* an `upload`) installs it, so a view without one ships none of it.
|
|
12
|
+
*/
|
|
13
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
14
|
+
import type { DropAt } from '../session/attempt.js';
|
|
15
|
+
import type { DropPlacement } from '../dnd/geometry.js';
|
|
16
|
+
/**
|
|
17
|
+
* A `dragover` of files from outside: where they land, shown (Notion's
|
|
18
|
+
* indicator), `null` where none (a read-only view, no uploads taking them,
|
|
19
|
+
* no place the document takes them at).
|
|
20
|
+
*/
|
|
21
|
+
export declare const fileDragOver: (edytor: Edytor, event: DragEvent) => DropPlacement | null;
|
|
22
|
+
/**
|
|
23
|
+
* A drop of files from outside: the placement shown (re-resolved at the
|
|
24
|
+
* drop point), in block terms, and nothing shows any more.
|
|
25
|
+
*/
|
|
26
|
+
export declare const fileDropAt: (edytor: Edytor, event: DragEvent) => DropAt | null;
|
|
27
|
+
/** The files' drag left the view (or ended): the indicator goes. */
|
|
28
|
+
export declare const fileDragEnd: (edytor: Edytor) => void | undefined;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { canPlaceNew } from '../session/moves.js';
|
|
2
|
+
import { viewUploads } from '../session/uploads.js';
|
|
3
|
+
import { DropIndicator } from '../dnd/dropIndicator.js';
|
|
4
|
+
import { DropResolver, isDropTarget } from '../dnd/placement.js';
|
|
5
|
+
/** The kinds the files of a drag would be, by their types (a `dragover` sees no file, only its type). */
|
|
6
|
+
const kindsOf = (edytor, dataTransfer) => {
|
|
7
|
+
const uploads = viewUploads(edytor);
|
|
8
|
+
if (!uploads || !dataTransfer)
|
|
9
|
+
return [];
|
|
10
|
+
const kinds = new Set();
|
|
11
|
+
for (const item of Array.from(dataTransfer.items ?? []))
|
|
12
|
+
if (item.kind === 'file') {
|
|
13
|
+
const file = item.getAsFile() ?? new File([], 'file', { type: item.type });
|
|
14
|
+
const kind = uploads.kindOf(file);
|
|
15
|
+
if (kind)
|
|
16
|
+
kinds.add(kind);
|
|
17
|
+
}
|
|
18
|
+
// An engine that lists no item for a file (WebKit before the drop): its files themselves.
|
|
19
|
+
if (!kinds.size)
|
|
20
|
+
for (const file of Array.from(dataTransfer.files ?? [])) {
|
|
21
|
+
const kind = uploads.kindOf(file);
|
|
22
|
+
if (kind)
|
|
23
|
+
kinds.add(kind);
|
|
24
|
+
}
|
|
25
|
+
return [...kinds];
|
|
26
|
+
};
|
|
27
|
+
class FileDrag {
|
|
28
|
+
edytor;
|
|
29
|
+
indicator;
|
|
30
|
+
resolver;
|
|
31
|
+
#begun = false;
|
|
32
|
+
constructor(edytor) {
|
|
33
|
+
this.edytor = edytor;
|
|
34
|
+
this.indicator = new DropIndicator(edytor, {
|
|
35
|
+
group: () => [],
|
|
36
|
+
besideOf: (block) => this.resolver.besideOf(block),
|
|
37
|
+
layoutOf: (outer) => this.resolver.layoutOf(outer)
|
|
38
|
+
});
|
|
39
|
+
this.resolver = new DropResolver(edytor, {
|
|
40
|
+
targetOf: (node) => {
|
|
41
|
+
const block = edytor.idToBlock.get(node.dataset.edytorId ?? '');
|
|
42
|
+
return block?.node === node && isDropTarget(edytor, block) ? block : undefined;
|
|
43
|
+
},
|
|
44
|
+
handle: () => null,
|
|
45
|
+
indicator: this.indicator
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** The drag of files of `kinds`: no block moves; a place takes them all. */
|
|
49
|
+
#drag(kinds) {
|
|
50
|
+
return {
|
|
51
|
+
group: [],
|
|
52
|
+
fits: ({ target, position }) => canPlaceNew(this.edytor, kinds, target, position)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The placement at the pointer, shown (`null`: none, and nothing shows):
|
|
57
|
+
* over a drop target, its row's; elsewhere in the host, its margins'.
|
|
58
|
+
*/
|
|
59
|
+
over(kinds, input) {
|
|
60
|
+
const document = this.edytor.node?.ownerDocument;
|
|
61
|
+
if (!document)
|
|
62
|
+
return null;
|
|
63
|
+
if (!this.#begun) {
|
|
64
|
+
this.#begun = true;
|
|
65
|
+
this.indicator.begin(document);
|
|
66
|
+
}
|
|
67
|
+
const drag = this.#drag(kinds);
|
|
68
|
+
const node = this.resolver.hitAt(input);
|
|
69
|
+
const placement = node
|
|
70
|
+
? this.resolver.over(drag, node, input)
|
|
71
|
+
: this.resolver.margin(drag, input);
|
|
72
|
+
if (!placement) {
|
|
73
|
+
this.indicator.clear();
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
// A margin's placement shows as the block drag's page target does (its reorder holds).
|
|
77
|
+
this.indicator.show(node ?? document.body, placement);
|
|
78
|
+
return placement;
|
|
79
|
+
}
|
|
80
|
+
/** The drag left the view, or dropped: nothing shows. */
|
|
81
|
+
end() {
|
|
82
|
+
this.#begun = false;
|
|
83
|
+
this.indicator.end();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const drags = new WeakMap();
|
|
87
|
+
const dragOf = (edytor) => {
|
|
88
|
+
let drag = drags.get(edytor);
|
|
89
|
+
if (!drag)
|
|
90
|
+
drags.set(edytor, (drag = new FileDrag(edytor)));
|
|
91
|
+
return drag;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* A `dragover` of files from outside: where they land, shown (Notion's
|
|
95
|
+
* indicator), `null` where none (a read-only view, no uploads taking them,
|
|
96
|
+
* no place the document takes them at).
|
|
97
|
+
*/
|
|
98
|
+
export const fileDragOver = (edytor, event) => {
|
|
99
|
+
const kinds = edytor.readonly ? [] : kindsOf(edytor, event.dataTransfer);
|
|
100
|
+
if (!kinds.length) {
|
|
101
|
+
drags.get(edytor)?.end();
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return dragOf(edytor).over(kinds, event);
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* A drop of files from outside: the placement shown (re-resolved at the
|
|
108
|
+
* drop point), in block terms, and nothing shows any more.
|
|
109
|
+
*/
|
|
110
|
+
export const fileDropAt = (edytor, event) => {
|
|
111
|
+
const placement = fileDragOver(edytor, event);
|
|
112
|
+
fileDragEnd(edytor);
|
|
113
|
+
return placement && { block: placement.target.id, position: placement.position };
|
|
114
|
+
};
|
|
115
|
+
/** The files' drag left the view (or ended): the indicator goes. */
|
|
116
|
+
export const fileDragEnd = (edytor) => drags.get(edytor)?.end();
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { Attachment } from 'svelte/attachments';
|
|
2
|
+
import type { Commands } from '../../plugins.js';
|
|
3
3
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
4
4
|
import type { CommandResult } from '../../session/commands.js';
|
|
5
5
|
import { type FindMatch } from './search.js';
|
|
6
|
-
import { type FindLabels } from '../../labels.js';
|
|
7
6
|
/** What `replaceMatches` (one command, one undo step) writes: each match replaced by `replacement`. */
|
|
8
|
-
export type ReplaceMatches =
|
|
7
|
+
export type ReplaceMatches = Commands['replaceMatches'];
|
|
9
8
|
/**
|
|
10
9
|
* The find bar's state and actions (`plugins/find`): the query, the matches
|
|
11
10
|
* in reading order, the current one and the replacements. It reads the
|
|
@@ -15,14 +14,10 @@ export type ReplaceMatches = BlockOperations['replaceMatches'];
|
|
|
15
14
|
export declare class FindController {
|
|
16
15
|
#private;
|
|
17
16
|
private edytor;
|
|
18
|
-
/** The words the bar shows (the plugin's `labels`): read them in a custom `bar`. */
|
|
19
|
-
readonly labels: FindLabels;
|
|
20
17
|
isOpen: boolean;
|
|
21
18
|
/** The replacement text. */
|
|
22
19
|
replacement: string;
|
|
23
|
-
constructor(edytor: Edytor
|
|
24
|
-
/** The words the bar shows (the plugin's `labels`): read them in a custom `bar`. */
|
|
25
|
-
labels?: FindLabels);
|
|
20
|
+
constructor(edytor: Edytor);
|
|
26
21
|
/** What the bar searches for; setting it shows the current match. */
|
|
27
22
|
get query(): string;
|
|
28
23
|
set query(value: string);
|
|
@@ -58,10 +53,10 @@ export declare class FindController {
|
|
|
58
53
|
replace: () => CommandResult["status"];
|
|
59
54
|
/** Replace every match: one command, one undo step. Answers its status. */
|
|
60
55
|
replaceAll: () => CommandResult["status"];
|
|
61
|
-
/** The query field (`
|
|
62
|
-
field:
|
|
63
|
-
/** The replacement field (`
|
|
64
|
-
replaceField:
|
|
56
|
+
/** The query field (`{@attach find.field}`): focused on each Mod+F; Enter, Shift+Enter, Escape, Mod+F. */
|
|
57
|
+
field: Attachment<HTMLInputElement>;
|
|
58
|
+
/** The replacement field (`{@attach find.replaceField}`): Enter replaces, Escape closes. */
|
|
59
|
+
replaceField: Attachment<HTMLInputElement>;
|
|
65
60
|
/** Stop following the document (the editor is going away). */
|
|
66
61
|
destroy: () => void;
|
|
67
62
|
}
|