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,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as ops from './ops.js';
|
|
2
2
|
import { caretBox, sameLine } from '../../surface/lines.js';
|
|
3
3
|
/** The table `block` is, or whose row or cell it is. */
|
|
4
4
|
export const tableOf = (block) => {
|
|
@@ -31,28 +31,31 @@ export const cellAt = (table, grid, row, column) => {
|
|
|
31
31
|
};
|
|
32
32
|
/** The cell holding the caret (or the selection's start), if it is a table's cell. */
|
|
33
33
|
export const caretCell = (edytor) => {
|
|
34
|
-
const block = edytor.selection.
|
|
34
|
+
const block = edytor.selection.textRange().startText?.parent;
|
|
35
35
|
return block?.id && edytor.facade.isTableCell(block.id) ? block : null;
|
|
36
36
|
};
|
|
37
|
-
/** `prepare` dispatched as `operation` on `table`: one plan, its own undo step; the plan or `null
|
|
38
|
-
const run = (table, operation, payload, prepare) =>
|
|
37
|
+
/** `prepare` dispatched as `operation` on `table`: one plan, its own undo step; the plan's ids, or `null` when refused. */
|
|
38
|
+
const run = (table, operation, payload, prepare) => {
|
|
39
|
+
const result = table.edytor.dispatcher.plan(operation, payload, prepare, table);
|
|
40
|
+
return result.status === 'refused' ? null : result;
|
|
41
|
+
};
|
|
39
42
|
/** Insert a row at `index` (`table.insert-row`); the caret goes to its first cell when `caret`. */
|
|
40
43
|
export const insertRow = (table, index, caret = false) => {
|
|
41
44
|
const { edytor } = table;
|
|
42
|
-
const plan = run(table, 'insertTableRow', { index }, (p) => edytor.facade
|
|
45
|
+
const plan = run(table, 'insertTableRow', { index }, (p) => ops.insertTableRow(edytor.facade, table.id, p.index));
|
|
43
46
|
const row = plan ? (edytor.idToBlock.get(plan.ids[0]) ?? null) : null;
|
|
44
47
|
if (row && caret)
|
|
45
48
|
edytor.dispatcher.caret(row.children[0]?.firstText, 0);
|
|
46
49
|
return row;
|
|
47
50
|
};
|
|
48
51
|
/** Delete `rows` with their cells (`table.delete-row`). */
|
|
49
|
-
export const deleteRows = (table, rows) => run(table, 'deleteTableRows', { rows: [...rows] }, (p) => table.edytor.facade
|
|
52
|
+
export const deleteRows = (table, rows) => run(table, 'deleteTableRows', { rows: [...rows] }, (p) => ops.deleteTableRows(table.edytor.facade, p.rows.map((row) => row.id))) !== null;
|
|
50
53
|
/**
|
|
51
54
|
* Insert a column at `index` (`table.insert-column`); with `caret` (a row's
|
|
52
55
|
* position), the caret goes to the new column's cell in that row.
|
|
53
56
|
*/
|
|
54
57
|
export const insertColumn = (table, index, width, caret) => {
|
|
55
|
-
const applied = run(table, 'insertTableColumn', { index, width }, (p) => table.edytor.facade
|
|
58
|
+
const applied = run(table, 'insertTableColumn', { index, width }, (p) => ops.insertTableColumn(table.edytor.facade, table.id, p.index, p.width)) !== null;
|
|
56
59
|
const grid = applied && caret !== undefined ? gridOf(table) : null;
|
|
57
60
|
if (grid) {
|
|
58
61
|
const at = Math.max(0, Math.min(Math.trunc(index) || 0, grid.columns.length - 1));
|
|
@@ -63,18 +66,18 @@ export const insertColumn = (table, index, width, caret) => {
|
|
|
63
66
|
return applied;
|
|
64
67
|
};
|
|
65
68
|
/** Delete a column, by id or position (`table.delete-column`). */
|
|
66
|
-
export const deleteColumn = (table, column) => run(table, 'deleteTableColumn', { column }, (p) => table.edytor.facade
|
|
69
|
+
export const deleteColumn = (table, column) => run(table, 'deleteTableColumn', { column }, (p) => ops.deleteTableColumn(table.edytor.facade, table.id, p.column)) !== null;
|
|
67
70
|
/** Move a column to position `to` (`table.move-column`). */
|
|
68
|
-
export const moveColumn = (table, column, to) => run(table, 'moveTableColumn', { column, to }, (p) => table.edytor.facade
|
|
71
|
+
export const moveColumn = (table, column, to) => run(table, 'moveTableColumn', { column, to }, (p) => ops.moveTableColumn(table.edytor.facade, table.id, p.column, p.to)) !== null;
|
|
69
72
|
/** Move rows to position `to` among their table's rows (`table.move-row`). */
|
|
70
|
-
export const moveRows = (table, rows, to) => run(table, 'moveTableRows', { rows: [...rows], to }, (p) => table.edytor.facade
|
|
73
|
+
export const moveRows = (table, rows, to) => run(table, 'moveTableRows', { rows: [...rows], to }, (p) => ops.moveTableRows(table.edytor.facade, p.rows.map((row) => row.id), p.to)) !== null;
|
|
71
74
|
/**
|
|
72
75
|
* Fill the padded cell of `row` in `column` (`table.pad`): the cell is
|
|
73
76
|
* created, the caret placed in it. Its block, or `null` when refused.
|
|
74
77
|
*/
|
|
75
78
|
export const fillCell = (table, row, column) => {
|
|
76
79
|
const { edytor } = table;
|
|
77
|
-
const plan = run(table, 'fillTableCell', { row, column }, (p) => edytor.facade
|
|
80
|
+
const plan = run(table, 'fillTableCell', { row, column }, (p) => ops.fillTableCell(edytor.facade, p.row, p.column));
|
|
78
81
|
const cell = plan ? (edytor.idToBlock.get(plan.ids[0]) ?? null) : null;
|
|
79
82
|
if (cell)
|
|
80
83
|
edytor.dispatcher.caret(cell.firstText, 0);
|
|
@@ -82,8 +85,10 @@ export const fillCell = (table, row, column) => {
|
|
|
82
85
|
};
|
|
83
86
|
/** Toggle `flag` (`headerRow` or `headerColumn`) of `table`'s data (`table.header`). */
|
|
84
87
|
export const toggleHeader = (table, flag) => {
|
|
85
|
-
table.
|
|
88
|
+
table.edytor.patchData(table.id, [{ path: [flag], value: table.data[flag] !== true }]);
|
|
86
89
|
};
|
|
90
|
+
/** A label key as a row id: `insertRowAbove` → `insert-row-above`. */
|
|
91
|
+
export const kebab = (key) => key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
|
|
87
92
|
/** A cell's width as set, else `fallback`: `data.columns[i].width`. */
|
|
88
93
|
export const widthOf = (column, fallback) => {
|
|
89
94
|
const width = column?.width;
|
|
@@ -107,7 +112,7 @@ export const tabFrom = (cell, step) => {
|
|
|
107
112
|
const next = cellAt(table, grid, Math.floor(i / width), i % width);
|
|
108
113
|
const text = next?.lastText;
|
|
109
114
|
if (text) {
|
|
110
|
-
edytor.selection.
|
|
115
|
+
edytor.selection.selectText(text, text.length);
|
|
111
116
|
return true;
|
|
112
117
|
}
|
|
113
118
|
}
|
|
@@ -128,7 +133,8 @@ export const tabFrom = (cell, step) => {
|
|
|
128
133
|
export const verticalFrom = (cell, step) => {
|
|
129
134
|
const at = positionOf(cell);
|
|
130
135
|
const { edytor } = cell;
|
|
131
|
-
const { startText, yStart
|
|
136
|
+
const { startText, yStart } = edytor.selection.textRange();
|
|
137
|
+
const { isCollapsed } = edytor.selection.projection;
|
|
132
138
|
if (!at || !isCollapsed || !startText)
|
|
133
139
|
return false;
|
|
134
140
|
if (step < 0 ? startText !== cell.firstText : startText !== cell.lastText)
|
|
@@ -148,7 +154,7 @@ export const verticalFrom = (cell, step) => {
|
|
|
148
154
|
const other = caretBox(startText, yStart, step > 0);
|
|
149
155
|
if (!other || !sameLine(other, edge))
|
|
150
156
|
return false;
|
|
151
|
-
edytor.selection.
|
|
157
|
+
edytor.selection.selectText(startText, landing(startText, -step, caret, column));
|
|
152
158
|
return true;
|
|
153
159
|
}
|
|
154
160
|
}
|
|
@@ -159,7 +165,7 @@ export const verticalFrom = (cell, step) => {
|
|
|
159
165
|
const text = step < 0 ? target?.lastText : target?.firstText;
|
|
160
166
|
if (!text)
|
|
161
167
|
continue;
|
|
162
|
-
edytor.selection.
|
|
168
|
+
edytor.selection.selectText(text, landing(text, step, caret, column));
|
|
163
169
|
return true;
|
|
164
170
|
}
|
|
165
171
|
return false;
|
|
@@ -3,17 +3,20 @@
|
|
|
3
3
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
4
4
|
import { ownText } from '../../surface/attributes.js';
|
|
5
5
|
import { reveal } from '../../selection/replaceSelection.js';
|
|
6
|
-
import {
|
|
6
|
+
import { labelsOf, tocEnglish } from '../../labels.js';
|
|
7
|
+
import { attach, keepSelection } from '../chrome.js';
|
|
8
|
+
import { richTextHeadingLevel, tocViews, type TocEntryPayload } from './toc.js';
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* The document's headings, live, in reading order (Notion's table of
|
|
10
12
|
* contents): read from the view's cells, so an edit anywhere re-renders
|
|
11
13
|
* only the entries it changes. Each entry scrolls its heading into view,
|
|
12
|
-
* opening the closed toggles it sits in; the selection stays.
|
|
14
|
+
* opening the closed toggles it sits in; the selection stays. The app's
|
|
15
|
+
* `entry` and `empty` snippets draw them, else this markup.
|
|
13
16
|
*/
|
|
14
|
-
let { level }: { level: TocHeadingLevel } = $props();
|
|
15
17
|
const edytor = getContext<Edytor>('edytor');
|
|
16
|
-
const labels =
|
|
18
|
+
const labels = labelsOf(edytor, 'toc', tocEnglish);
|
|
19
|
+
const { headingLevel: level = richTextHeadingLevel, entry, empty } = tocViews.get(edytor) ?? {};
|
|
17
20
|
|
|
18
21
|
type Entry = { id: string; level: number; text: string };
|
|
19
22
|
const entries = $derived.by(() => {
|
|
@@ -40,44 +43,35 @@
|
|
|
40
43
|
reveal(block);
|
|
41
44
|
block.node.scrollIntoView?.({ behavior: 'smooth', block: 'start' });
|
|
42
45
|
};
|
|
46
|
+
|
|
47
|
+
const payloadOf = ({ id, level, text }: Entry): TocEntryPayload => ({
|
|
48
|
+
id,
|
|
49
|
+
level,
|
|
50
|
+
depth: level - top,
|
|
51
|
+
text,
|
|
52
|
+
label: text || labels.untitled,
|
|
53
|
+
go: () => go(id),
|
|
54
|
+
control: attach(
|
|
55
|
+
{ 'data-edytor-toc-entry': '' },
|
|
56
|
+
{ mousedown: keepSelection, click: () => go(id) }
|
|
57
|
+
)
|
|
58
|
+
});
|
|
43
59
|
</script>
|
|
44
60
|
|
|
45
61
|
{#if entries.length}
|
|
46
|
-
{#each entries as
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
62
|
+
{#each entries as found (found.id)}
|
|
63
|
+
{@const payload = payloadOf(found)}
|
|
64
|
+
{#if entry}{@render entry(payload)}{:else}<button
|
|
65
|
+
type="button"
|
|
66
|
+
data-edytor-toc-entry
|
|
67
|
+
data-level={payload.level}
|
|
68
|
+
data-untitled={payload.text ? undefined : 'true'}
|
|
69
|
+
style:--edytor-toc-depth={payload.depth}
|
|
70
|
+
{@attach payload.control}>{payload.label}</button
|
|
71
|
+
>{/if}
|
|
56
72
|
{/each}
|
|
73
|
+
{:else if empty}
|
|
74
|
+
{@render empty({ label: labels.empty })}
|
|
57
75
|
{:else}
|
|
58
76
|
<p data-edytor-toc-empty>{labels.empty}</p>
|
|
59
77
|
{/if}
|
|
60
|
-
|
|
61
|
-
<style>
|
|
62
|
-
/*
|
|
63
|
-
* The entries' structure, at zero specificity (`:where`): one line each,
|
|
64
|
-
* one nesting step in per level; a theme draws them (`themes/notion.css`).
|
|
65
|
-
*/
|
|
66
|
-
:global(:where([data-edytor-toc-entry])) {
|
|
67
|
-
display: block;
|
|
68
|
-
width: 100%;
|
|
69
|
-
margin: 0;
|
|
70
|
-
padding: 0;
|
|
71
|
-
padding-inline-start: calc(var(--edytor-toc-depth, 0) * var(--edytor-nest-indent, 24px));
|
|
72
|
-
border: 0;
|
|
73
|
-
background: none;
|
|
74
|
-
color: inherit;
|
|
75
|
-
font: inherit;
|
|
76
|
-
text-align: start;
|
|
77
|
-
cursor: pointer;
|
|
78
|
-
}
|
|
79
|
-
:global(:where([data-edytor-toc-empty])) {
|
|
80
|
-
margin: 0;
|
|
81
|
-
opacity: 0.6;
|
|
82
|
-
}
|
|
83
|
-
</style>
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
type $$ComponentProps = {
|
|
3
|
-
level: TocHeadingLevel;
|
|
4
|
-
};
|
|
5
|
-
declare const TableOfContents: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
1
|
+
declare const TableOfContents: import("svelte").Component<Record<string, never>, {}, "">;
|
|
6
2
|
type TableOfContents = ReturnType<typeof TableOfContents>;
|
|
7
3
|
export default TableOfContents;
|
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
import type { Plugin, BlockSnippetPayload } from '../../plugins.js';
|
|
3
|
-
import type { Edytor } from '../../edytor.svelte.js';
|
|
4
3
|
import { tocKinds } from '../../crdt/semantics.js';
|
|
5
|
-
import { keywordsOf,
|
|
4
|
+
import { tocEnglish, keywordsOf, labelsOf } from '../../labels.js';
|
|
6
5
|
import TableOfContents from './TableOfContents.svelte';
|
|
7
6
|
import {
|
|
8
7
|
richTextHeadingLevel,
|
|
9
|
-
|
|
8
|
+
type TocEmptyPayload,
|
|
9
|
+
type TocEntryPayload,
|
|
10
10
|
type TocHeadingLevel,
|
|
11
|
-
type TocPluginOptions
|
|
11
|
+
type TocPluginOptions,
|
|
12
|
+
tocViews as views
|
|
12
13
|
} from './toc.js';
|
|
13
14
|
|
|
14
|
-
export type { TocHeadingLevel, TocPluginOptions };
|
|
15
|
-
|
|
16
|
-
const levelOf = new WeakMap<Edytor, TocHeadingLevel>();
|
|
15
|
+
export type { TocEmptyPayload, TocEntryPayload, TocHeadingLevel, TocPluginOptions };
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* Notion's table of contents: a `toc` block lists the document's
|
|
20
19
|
* headings, live, indented by level; a click scrolls to one (opening the
|
|
21
20
|
* closed toggles it sits in). Void: it holds no text, and its list is
|
|
22
21
|
* never stored, only drawn. Its preset in the slash menu turns an empty
|
|
23
|
-
* line into one, or inserts it after the line; its words are
|
|
24
|
-
* (English by default).
|
|
22
|
+
* line into one, or inserts it after the line; its words are the view's
|
|
23
|
+
* `toc` labels (English by default).
|
|
25
24
|
*/
|
|
26
25
|
export const createTocPlugin =
|
|
27
26
|
(options: TocPluginOptions = {}): Plugin =>
|
|
28
27
|
(edytor) => {
|
|
29
28
|
// First wins, as for the kind: a second listing never replaces it.
|
|
30
|
-
if (!
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
if (!views.has(edytor))
|
|
30
|
+
views.set(edytor, {
|
|
31
|
+
headingLevel: options.headingLevel ?? richTextHeadingLevel,
|
|
32
|
+
entry: options.entry,
|
|
33
|
+
empty: options.empty
|
|
34
|
+
});
|
|
35
|
+
const labels = labelsOf(edytor, 'toc', tocEnglish);
|
|
33
36
|
return {
|
|
34
37
|
blocks: {
|
|
35
38
|
toc: {
|
|
@@ -41,11 +44,12 @@
|
|
|
41
44
|
{
|
|
42
45
|
label: labels.toc,
|
|
43
46
|
icon: '☰',
|
|
44
|
-
keywords: keywordsOf(
|
|
45
|
-
'
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
keywords: keywordsOf(edytor, 'block.toc', [
|
|
48
|
+
'toc',
|
|
49
|
+
'outline',
|
|
50
|
+
'headings',
|
|
51
|
+
'contents'
|
|
52
|
+
]),
|
|
49
53
|
group: 'Advanced blocks'
|
|
50
54
|
}
|
|
51
55
|
],
|
|
@@ -58,14 +62,10 @@
|
|
|
58
62
|
}
|
|
59
63
|
};
|
|
60
64
|
};
|
|
61
|
-
|
|
62
|
-
/** The table of contents over the rich text headings. */
|
|
63
|
-
export const tocPlugin = createTocPlugin();
|
|
64
65
|
</script>
|
|
65
66
|
|
|
66
67
|
{#snippet toc({ block }: BlockSnippetPayload)}
|
|
67
|
-
{@const level = (block.handle && levelOf.get(block.handle.edytor)) || richTextHeadingLevel}
|
|
68
68
|
<div use:block.void data-edytor-toc>
|
|
69
|
-
<TableOfContents
|
|
69
|
+
<TableOfContents />
|
|
70
70
|
</div>
|
|
71
71
|
{/snippet}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import type { Plugin } from '../../plugins.js';
|
|
2
|
-
import { type TocHeadingLevel, type TocPluginOptions } from './toc.js';
|
|
3
|
-
export type { TocHeadingLevel, TocPluginOptions };
|
|
2
|
+
import { type TocEmptyPayload, type TocEntryPayload, type TocHeadingLevel, type TocPluginOptions } from './toc.js';
|
|
3
|
+
export type { TocEmptyPayload, TocEntryPayload, TocHeadingLevel, TocPluginOptions };
|
|
4
4
|
/**
|
|
5
5
|
* Notion's table of contents: a `toc` block lists the document's
|
|
6
6
|
* headings, live, indented by level; a click scrolls to one (opening the
|
|
7
7
|
* closed toggles it sits in). Void: it holds no text, and its list is
|
|
8
8
|
* never stored, only drawn. Its preset in the slash menu turns an empty
|
|
9
|
-
* line into one, or inserts it after the line; its words are
|
|
10
|
-
* (English by default).
|
|
9
|
+
* line into one, or inserts it after the line; its words are the view's
|
|
10
|
+
* `toc` labels (English by default).
|
|
11
11
|
*/
|
|
12
12
|
export declare const createTocPlugin: (options?: TocPluginOptions) => Plugin;
|
|
13
|
-
/** The table of contents over the rich text headings. */
|
|
14
|
-
export declare const tocPlugin: Plugin;
|
|
15
13
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
14
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
17
15
|
$$bindings?: Bindings;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { Attachment } from 'svelte/attachments';
|
|
2
3
|
/**
|
|
3
4
|
* A block's level in the table of contents (1 the outermost), or `null`
|
|
4
5
|
* when it is not a heading: read from its kind and data.
|
|
@@ -7,11 +8,6 @@ export type TocHeadingLevel = (block: {
|
|
|
7
8
|
type: string;
|
|
8
9
|
data: Readonly<Record<string, unknown>>;
|
|
9
10
|
}) => number | null;
|
|
10
|
-
/** Each view's table of contents labels: the first toc plugin listed claims them, as its kind. */
|
|
11
|
-
export declare const tocLabels: {
|
|
12
|
-
claim: (view: object | undefined, labels: import("../../labels.js").TocLabels) => void;
|
|
13
|
-
of: (view: object | undefined) => import("../../labels.js").TocLabels;
|
|
14
|
-
};
|
|
15
11
|
/** The table of contents plugin's options. */
|
|
16
12
|
export type TocPluginOptions = {
|
|
17
13
|
/**
|
|
@@ -20,10 +16,45 @@ export type TocPluginOptions = {
|
|
|
20
16
|
* any other 3, as they are drawn).
|
|
21
17
|
*/
|
|
22
18
|
headingLevel?: TocHeadingLevel;
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
/**
|
|
20
|
+
* One entry (default: a `button` with the heading's text, one nesting
|
|
21
|
+
* step in per level under the shallowest). Give it `{@attach
|
|
22
|
+
* entry.control}`: a click scrolls its heading into view, opening the
|
|
23
|
+
* closed toggles it sits in, and the selection stays.
|
|
24
|
+
*/
|
|
25
|
+
entry?: Snippet<[TocEntryPayload]>;
|
|
26
|
+
/** What shows while the document has no heading (default: a `p` with the view's `toc.empty`). */
|
|
27
|
+
empty?: Snippet<[TocEmptyPayload]>;
|
|
28
|
+
};
|
|
29
|
+
/** What a table of contents' `entry` snippet receives: one heading. */
|
|
30
|
+
export type TocEntryPayload = {
|
|
31
|
+
/** The heading's block id. */
|
|
32
|
+
id: string;
|
|
33
|
+
/** Its level (`headingLevel`'s answer, 1 the outermost). */
|
|
34
|
+
level: number;
|
|
35
|
+
/** How many steps in it sits: its level less the shallowest shown. */
|
|
36
|
+
depth: number;
|
|
37
|
+
/** Its text (`''` when it has none). */
|
|
38
|
+
text: string;
|
|
39
|
+
/** What it reads: its text, else the view's `toc.untitled`. */
|
|
40
|
+
label: string;
|
|
41
|
+
/** Scroll its heading into view (opening the closed toggles it sits in). */
|
|
42
|
+
go: () => void;
|
|
43
|
+
/**
|
|
44
|
+
* The entry's attachment (`{@attach entry.control}`): its marker
|
|
45
|
+
* (`data-edytor-toc-entry`), a press that keeps the editor's selection,
|
|
46
|
+
* and a click that scrolls to it.
|
|
47
|
+
*/
|
|
48
|
+
control: Attachment<HTMLElement>;
|
|
49
|
+
};
|
|
50
|
+
/** What a table of contents' `empty` snippet receives. */
|
|
51
|
+
export type TocEmptyPayload = {
|
|
52
|
+
/** The view's words for it (`toc.empty`). */
|
|
53
|
+
label: string;
|
|
27
54
|
};
|
|
55
|
+
/** A view's table of contents: the first plugin listed sets it. */
|
|
56
|
+
export type TocView = Required<Pick<TocPluginOptions, 'headingLevel'>> & Pick<TocPluginOptions, 'entry' | 'empty'>;
|
|
28
57
|
/** The rich text headings' levels (`heading`, `toggle-heading`), as they draw them. */
|
|
29
58
|
export declare const richTextHeadingLevel: TocHeadingLevel;
|
|
59
|
+
/** Each view's table of contents (the first plugin listed sets it). */
|
|
60
|
+
export declare const tocViews: WeakMap<object, TocView>;
|
package/dist/plugins/toc/toc.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { viewLabels } from '../../labels.js';
|
|
2
|
-
/** Each view's table of contents labels: the first toc plugin listed claims them, as its kind. */
|
|
3
|
-
export const tocLabels = viewLabels('toc');
|
|
4
1
|
/** The rich text headings' levels (`heading`, `toggle-heading`), as they draw them. */
|
|
5
2
|
export const richTextHeadingLevel = ({ type, data }) => {
|
|
6
3
|
if (type !== 'heading' && type !== 'toggle-heading')
|
|
@@ -8,3 +5,5 @@ export const richTextHeadingLevel = ({ type, data }) => {
|
|
|
8
5
|
const { level } = data;
|
|
9
6
|
return level === undefined || level === 'h1' ? 1 : level === 'h2' ? 2 : 3;
|
|
10
7
|
};
|
|
8
|
+
/** Each view's table of contents (the first plugin listed sets it). */
|
|
9
|
+
export const tocViews = new WeakMap();
|
|
@@ -2,82 +2,25 @@ import type { Attachment } from 'svelte/attachments';
|
|
|
2
2
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
3
3
|
import type { EdytorSelection } from '../../selection/selection.svelte.js';
|
|
4
4
|
import { type KindRow } from '../../kinds.js';
|
|
5
|
-
import type { Popup } from '../../surface/popups.svelte.js';
|
|
6
|
-
import { type ToolbarLabels } from '../../labels.js';
|
|
7
|
-
/** Notion's palette: text colors and their backgrounds, by name (shown through the labels' `colors`). */
|
|
8
|
-
export declare const TOOLBAR_COLORS: readonly [{
|
|
9
|
-
readonly name: "Default";
|
|
10
|
-
readonly text: null;
|
|
11
|
-
readonly background: null;
|
|
12
|
-
}, {
|
|
13
|
-
readonly name: "Gray";
|
|
14
|
-
readonly text: "#7d7a75";
|
|
15
|
-
readonly background: "#f0efed";
|
|
16
|
-
}, {
|
|
17
|
-
readonly name: "Brown";
|
|
18
|
-
readonly text: "#9f765a";
|
|
19
|
-
readonly background: "#f5ede9";
|
|
20
|
-
}, {
|
|
21
|
-
readonly name: "Orange";
|
|
22
|
-
readonly text: "#d27b2d";
|
|
23
|
-
readonly background: "#fbebde";
|
|
24
|
-
}, {
|
|
25
|
-
readonly name: "Yellow";
|
|
26
|
-
readonly text: "#cb9434";
|
|
27
|
-
readonly background: "#f9f3dc";
|
|
28
|
-
}, {
|
|
29
|
-
readonly name: "Green";
|
|
30
|
-
readonly text: "#50946e";
|
|
31
|
-
readonly background: "#e8f1ec";
|
|
32
|
-
}, {
|
|
33
|
-
readonly name: "Blue";
|
|
34
|
-
readonly text: "#387dc9";
|
|
35
|
-
readonly background: "#e5f2fc";
|
|
36
|
-
}, {
|
|
37
|
-
readonly name: "Purple";
|
|
38
|
-
readonly text: "#9a6bb4";
|
|
39
|
-
readonly background: "#f3ebf9";
|
|
40
|
-
}, {
|
|
41
|
-
readonly name: "Pink";
|
|
42
|
-
readonly text: "#c14c8a";
|
|
43
|
-
readonly background: "#fae9f1";
|
|
44
|
-
}, {
|
|
45
|
-
readonly name: "Red";
|
|
46
|
-
readonly text: "#cf5148";
|
|
47
|
-
readonly background: "#fce9e7";
|
|
48
|
-
}];
|
|
49
5
|
export declare class ToolbarController {
|
|
50
6
|
#private;
|
|
51
7
|
private edytor;
|
|
52
|
-
/** The words the toolbar shows (the plugin's `labels`): read them in a custom `toolbar`. */
|
|
53
|
-
readonly labels: ToolbarLabels;
|
|
54
8
|
/** Shown for the current selection; hidden while the editor is readonly. */
|
|
55
9
|
private shown;
|
|
56
10
|
linkUrl: string;
|
|
57
11
|
/** The open panel: the kind menu, the link field or the colors. */
|
|
58
|
-
panel: "
|
|
59
|
-
/** The selection the toolbar acts on: a value (anchors), so peers' edits move it. */
|
|
60
|
-
private selectionSnapshot;
|
|
61
|
-
private isRestoringSelection;
|
|
62
|
-
/** The link panel's field takes the focus when it next mounts (it was opened, not re-rendered). */
|
|
63
|
-
private focusField;
|
|
12
|
+
panel: "color" | "link" | "turn" | null;
|
|
64
13
|
/** The link under the pointer, for the link card (`link.card`). */
|
|
65
14
|
hovered: HTMLAnchorElement | null;
|
|
66
|
-
constructor(edytor: Edytor
|
|
67
|
-
/** The words the toolbar shows (the plugin's `labels`): read them in a custom `toolbar`. */
|
|
68
|
-
labels?: ToolbarLabels);
|
|
69
|
-
/** A palette color's name as shown (`labels.colors`). */
|
|
70
|
-
colorName: (name: string) => string;
|
|
15
|
+
constructor(edytor: Edytor);
|
|
71
16
|
get isVisible(): boolean;
|
|
72
17
|
/** The bar's element id (page-unique), for the root's `aria-controls`. */
|
|
73
18
|
get barId(): string;
|
|
74
|
-
/** Publish the shown bar to the view's root (`edytor.popups`), or withdraw it with `null`. */
|
|
75
|
-
publish: (popup: Popup | null) => void;
|
|
76
19
|
/** The link panel's field id (page-unique): a `label`'s `for`. */
|
|
77
20
|
get linkFieldId(): string;
|
|
78
21
|
/**
|
|
79
|
-
* The bar (`{@attach controller.popup}
|
|
80
|
-
* `toolbar` role
|
|
22
|
+
* The bar (`{@attach controller.popup}`, named by your markup): it takes
|
|
23
|
+
* the bar's id, its `toolbar` role unless it has its own, the placement's mark
|
|
81
24
|
* (`data-edytor-toolbar-bar`, which the toolbar's shortcut also reads),
|
|
82
25
|
* and is published to the view's root (`edytor.popups`, with that
|
|
83
26
|
* shortcut as its `aria-keyshortcuts`) while it is in the page.
|
|
@@ -141,8 +84,6 @@ export declare class ToolbarController {
|
|
|
141
84
|
editHovered(): void;
|
|
142
85
|
/** The card's Remove: unlink the whole hovered link (one undo step); the selection stays. */
|
|
143
86
|
removeHovered(): void;
|
|
144
|
-
/** The hovered link element's text and link run, read from the model (never from the DOM). */
|
|
145
|
-
private hoveredLink;
|
|
146
87
|
/** Convert every block the selection touches (Notion), as one undo step. */
|
|
147
88
|
turnInto(kind: KindRow): void;
|
|
148
89
|
/** Set (or clear, with `null`) the text color or background of the selection. */
|
|
@@ -150,9 +91,4 @@ export declare class ToolbarController {
|
|
|
150
91
|
toggleMark(mark: string): void;
|
|
151
92
|
applyLink(): void;
|
|
152
93
|
removeLink(): void;
|
|
153
|
-
private canShowForSelection;
|
|
154
|
-
private getSelectedLinkUrl;
|
|
155
|
-
/** Act on the held selection, then select it again (the projector displays it). */
|
|
156
|
-
private runWithSelection;
|
|
157
|
-
private restoreSelection;
|
|
158
94
|
}
|