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
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,46 +1,50 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export
|
|
1
|
+
export { createRichTextPlugin, richTextOperations, richTextPlaceholder, type RichTextPluginOptions, type TodoCheckboxPayload, type CalloutIconPayload, type EmptyBodyPayload } from './richtext/RichTextPlugin.svelte';
|
|
2
|
+
export { CALLOUT_ICONS, createCalloutIconsPlugin, type CalloutIconPicker, type CalloutIconsOptions } from './richtext/calloutIcons.svelte.js';
|
|
3
|
+
export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
|
|
4
|
+
export type { MenuItemPayload } from './chrome.js';
|
|
4
5
|
export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT, type BlockActivation, type BlockAddition } from './blockHandles/BlockHandleController.svelte.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export { codePlugin, createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
|
|
6
|
+
export { createBlockHandlesPlugin, type BlockHandlesOptions, type BlockHandleSnippetPayload } from './blockHandles/blockHandlesPlugin.js';
|
|
7
|
+
export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage, type CodeLanguage, type CodePluginOptions } from './code/CodePlugin.svelte';
|
|
8
8
|
export type { CodeHeader } from './code/header.svelte.js';
|
|
9
9
|
export type { LanguageMenu, LanguageMenuItem, LanguageRow } from './code/languageMenu.svelte.js';
|
|
10
|
-
export {
|
|
10
|
+
export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
|
|
11
11
|
export { createMentionPlugin, type MentionItem, type MentionData, type MentionPluginOptions } from './mention/MentionPlugin.svelte';
|
|
12
12
|
export { createPageLinkPlugin, type PageLinkItem, type PageLinkData, type PageLinkPluginOptions } from './pageLink/PageLinkPlugin.svelte';
|
|
13
13
|
export type { TriggerMenuController } from './triggers/TriggerController.svelte.js';
|
|
14
|
-
export {
|
|
14
|
+
export { withRulesAndTriggers } from './triggers/triggers.js';
|
|
15
|
+
export { createSlashMenuPlugin, type SlashMenuOptions } from './slashMenu/slashMenuPlugin.js';
|
|
15
16
|
export type { SlashMenuController } from './slashMenu/SlashMenuController.svelte.js';
|
|
16
|
-
export {
|
|
17
|
+
export { createToolbarPlugin, type ToolbarOptions } from './toolbar/toolbarPlugin.js';
|
|
17
18
|
export type { ToolbarController } from './toolbar/ToolbarController.svelte.js';
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
19
|
+
export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
|
|
20
|
+
export { createSuggestionsPlugin, type SuggestionBarOptions, type SuggestionBarPayload } from './suggestions/suggestionsPlugin.js';
|
|
21
|
+
export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
|
|
20
22
|
export type { BlockMenuOptions, BlockMenuController, BlockMenuAction, BlockMenuColor } from './blockMenu/BlockMenuController.svelte.js';
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export { safeWebUrl, safeMediaSrc, type MediaKind
|
|
23
|
+
export { createImagePlugin, type ImagePluginOptions, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, type ImageData, type ImageAlign } from './image/ImagePlugin.svelte';
|
|
24
|
+
export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf, type EmbedProvider, type EmbedPluginOptions, type EmbedFallbackPayload } from './media/EmbedPlugin.svelte';
|
|
25
|
+
export { createBookmarkPlugin, type BookmarkPluginOptions, type BookmarkPreview, type BookmarkCardPayload } from './media/BookmarkPlugin.svelte';
|
|
26
|
+
export { createFilePlugin, type FilePluginOptions, type FileRowPayload } from './media/FilePlugin.svelte';
|
|
27
|
+
export { createVideoPlugin, type VideoPluginOptions } from './media/VideoPlugin.svelte';
|
|
28
|
+
export { createAudioPlugin, type AudioPluginOptions } from './media/AudioPlugin.svelte';
|
|
29
|
+
export { safeWebUrl, safeMediaSrc, type MediaKind } from './media/media.js';
|
|
28
30
|
export type { MediaEmptyController, MediaEmptyFailure } from './media/empty.svelte.js';
|
|
31
|
+
export { createMediaEmptyPlugin, type MediaEmptyOptions } from './media/MediaEmpty.svelte';
|
|
29
32
|
export type { UrlPasteController, UrlPasteOffer, UrlPasteOption } from './media/urlPaste.svelte.js';
|
|
30
33
|
export type { ImageControls, ImageBox } from './image/controls.svelte.js';
|
|
31
|
-
export
|
|
34
|
+
export { createImageToolbarPlugin, type ImageToolbar, type ImageToolbarOptions } from './image/toolbar.svelte.js';
|
|
32
35
|
export type { BlockHandleController } from './blockHandles/BlockHandleController.svelte.js';
|
|
33
|
-
export {
|
|
34
|
-
export {
|
|
36
|
+
export { createColumnsPlugin, type ColumnsPluginOptions } from './columns/ColumnsPlugin.svelte';
|
|
37
|
+
export { createFindPlugin, findController, type FindPluginOptions } from './find/findPlugin.js';
|
|
35
38
|
export type { FindController, ReplaceMatches } from './find/FindController.svelte.js';
|
|
36
|
-
export {
|
|
39
|
+
export { createMarqueePlugin, type MarqueePluginOptions } from './marquee/marqueePlugin.js';
|
|
37
40
|
export type { MarqueeBoxPayload } from './marquee/MarqueeController.svelte.js';
|
|
38
41
|
export { findMatches, type FindMatch, type FindOptions } from './find/search.js';
|
|
39
42
|
export { createCommentsPlugin, commentsController, type CommentsPluginOptions, type CommentCardPayload } from './comments/commentsPlugin.js';
|
|
40
43
|
export type { CommentsController, CommentDraft, CommentNotice, CommentUser, PlacedThread } from './comments/CommentsController.svelte.js';
|
|
41
|
-
export {
|
|
42
|
-
export {
|
|
43
|
-
export {
|
|
44
|
+
export { createPagePlugin, type PagePluginOptions, type PageBlockLinkPayload } from './page/PagePlugin.svelte';
|
|
45
|
+
export { createTocPlugin, type TocPluginOptions, type TocHeadingLevel, type TocEntryPayload, type TocEmptyPayload } from './toc/TocPlugin.svelte';
|
|
46
|
+
export { createTablePlugin, type TablePluginOptions } from './table/TablePlugin.svelte';
|
|
47
|
+
export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
|
|
44
48
|
export type { TableChrome, TableMenu, TableMenuRow, TableMenuItem, TableGripPayload, TableAddPayload } from './table/chrome.svelte.js';
|
|
45
49
|
export { tableBlock, type TableBlockOptions } from '../crdt/tables.js';
|
|
46
|
-
export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';
|
|
50
|
+
export { createEquationPlugin, KATEX_CDN, KATEX_VERSION, type EquationPluginOptions, type EquationData, type EquationEditor, type EquationErrorPayload, type EquationPlaceholderPayload, type EquationTarget, type KatexLike, type KatexLoader } from './equation/EquationPlugin.svelte';
|
package/dist/plugins/index.js
CHANGED
|
@@ -1,31 +1,37 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { createRichTextPlugin, richTextOperations, richTextPlaceholder } from './richtext/RichTextPlugin.svelte';
|
|
2
|
+
export { CALLOUT_ICONS, createCalloutIconsPlugin } from './richtext/calloutIcons.svelte.js';
|
|
3
|
+
export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
|
|
3
4
|
export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT } from './blockHandles/BlockHandleController.svelte.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export { markdownShortcutsPlugin } from './markdownShortcuts.js';
|
|
5
|
+
export { createBlockHandlesPlugin } from './blockHandles/blockHandlesPlugin.js';
|
|
6
|
+
export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage } from './code/CodePlugin.svelte';
|
|
7
|
+
export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
|
|
8
8
|
export { createMentionPlugin } from './mention/MentionPlugin.svelte';
|
|
9
9
|
export { createPageLinkPlugin } from './pageLink/PageLinkPlugin.svelte';
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
10
|
+
export { withRulesAndTriggers } from './triggers/triggers.js';
|
|
11
|
+
export { createSlashMenuPlugin } from './slashMenu/slashMenuPlugin.js';
|
|
12
|
+
export { createToolbarPlugin } from './toolbar/toolbarPlugin.js';
|
|
13
|
+
export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
|
|
14
|
+
export { createSuggestionsPlugin } from './suggestions/suggestionsPlugin.js';
|
|
15
|
+
export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
|
|
16
|
+
export { createImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH } from './image/ImagePlugin.svelte';
|
|
17
|
+
export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf } from './media/EmbedPlugin.svelte';
|
|
18
|
+
export { createBookmarkPlugin } from './media/BookmarkPlugin.svelte';
|
|
19
|
+
export { createFilePlugin } from './media/FilePlugin.svelte';
|
|
20
|
+
export { createVideoPlugin } from './media/VideoPlugin.svelte';
|
|
21
|
+
export { createAudioPlugin } from './media/AudioPlugin.svelte';
|
|
20
22
|
export { safeWebUrl, safeMediaSrc } from './media/media.js';
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
23
|
+
export { createMediaEmptyPlugin } from './media/MediaEmpty.svelte';
|
|
24
|
+
export { createImageToolbarPlugin } from './image/toolbar.svelte.js';
|
|
25
|
+
export { createColumnsPlugin } from './columns/ColumnsPlugin.svelte';
|
|
26
|
+
export { createFindPlugin, findController } from './find/findPlugin.js';
|
|
27
|
+
export { createMarqueePlugin } from './marquee/marqueePlugin.js';
|
|
24
28
|
export { findMatches } from './find/search.js';
|
|
25
29
|
export { createCommentsPlugin, commentsController } from './comments/commentsPlugin.js';
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
28
|
-
export {
|
|
30
|
+
export { createPagePlugin } from './page/PagePlugin.svelte';
|
|
31
|
+
export { createTocPlugin } from './toc/TocPlugin.svelte';
|
|
32
|
+
export { createTablePlugin } from './table/TablePlugin.svelte';
|
|
33
|
+
// The table ops, prepared over any document (`document.apply(insertTableRow(document, …))`).
|
|
34
|
+
export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
|
|
29
35
|
// The table kind's value as JSON (also on `edytor/crdt/edytor`).
|
|
30
36
|
export { tableBlock } from '../crdt/tables.js';
|
|
31
37
|
export { createEquationPlugin, KATEX_CDN, KATEX_VERSION } from './equation/EquationPlugin.svelte';
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { Attachment } from 'svelte/attachments';
|
|
2
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
3
|
+
import type { HotKey, HotKeyCombination } from '../session/keymap.js';
|
|
4
|
+
import type { Popup } from '../surface/popups.svelte.js';
|
|
5
|
+
/** `id` when an element of `node`'s page has it, else `undefined` (looked up again as rows take their ids). */
|
|
6
|
+
export declare const inPage: (node: Node, id: string | undefined) => string | undefined;
|
|
7
|
+
/** The ARIA a row may carry beside its role. */
|
|
8
|
+
export type OptionState = {
|
|
9
|
+
/** `-1` where a field or the editor holds the keyboard; a roving list's own row `0`. */
|
|
10
|
+
tabindex?: 0 | -1;
|
|
11
|
+
'aria-checked'?: boolean;
|
|
12
|
+
/** A row that cannot run now (a table menu's Move up on the first row). */
|
|
13
|
+
'aria-disabled'?: boolean;
|
|
14
|
+
'aria-haspopup'?: 'menu';
|
|
15
|
+
'aria-expanded'?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A row's attachment: its id, role, `aria-selected` (a `listbox`'s
|
|
19
|
+
* option) and `state`; the keyboard's row (`selected`)
|
|
20
|
+
* scrolls into view when it becomes it, unless `reveal` is `false` (a list
|
|
21
|
+
* in the page, whose focus scrolls it).
|
|
22
|
+
*/
|
|
23
|
+
export declare const optionAttachment: (id: string, role: "option" | "menuitem" | "menuitemcheckbox" | "menuitemradio", selected: boolean, state?: OptionState, reveal?: boolean) => Attachment<HTMLElement>;
|
|
24
|
+
/**
|
|
25
|
+
* The keyboard's row after `key` among `count` rows from `at`, `undefined`
|
|
26
|
+
* when the key does not move it: ArrowDown and ArrowUp step through the
|
|
27
|
+
* rows `usable` keeps (a disabled one is skipped), around the ends; in a
|
|
28
|
+
* grid of `columns`, ArrowRight and ArrowLeft step around the ends, ArrowDown
|
|
29
|
+
* and ArrowUp a whole row, stopping at the first and last; with `ends`, Home
|
|
30
|
+
* and End reach the first and last rows.
|
|
31
|
+
*/
|
|
32
|
+
export declare const stepRow: (key: string, at: number, count: number, { columns, ends, usable }?: Steps) => number | undefined;
|
|
33
|
+
/** How a list's keys step (`stepRow`): a grid's columns, Home and End, the rows they stop at. */
|
|
34
|
+
type Steps = {
|
|
35
|
+
columns?: number;
|
|
36
|
+
ends?: boolean;
|
|
37
|
+
usable?: (index: number) => boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* A key on a menu that holds the keyboard itself, not a field (WAI-ARIA's
|
|
41
|
+
* menu keys): the arrows, Home and End move its row (`stepRow`), Enter and
|
|
42
|
+
* Space pick it, Escape and Tab close it. Whether the key was the menu's
|
|
43
|
+
* (then its default is prevented).
|
|
44
|
+
*/
|
|
45
|
+
export declare const menuKey: (event: KeyboardEvent, menu: {
|
|
46
|
+
at: number;
|
|
47
|
+
count: number;
|
|
48
|
+
to: (index: number) => void;
|
|
49
|
+
pick: () => void;
|
|
50
|
+
close: () => void;
|
|
51
|
+
}, steps?: Steps) => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* A list's element (`{@attach controller.popup}`, named by its markup): it
|
|
54
|
+
* takes the list's id (`edytor.popups.idOf(owner)`) and its `role` unless
|
|
55
|
+
* it has its own, keeps the focus where it is on a press (a field takes its
|
|
56
|
+
* own), and is published to the view's root (`edytor.popups`, `role` its
|
|
57
|
+
* `aria-haspopup`) while `open` answers the rest of its record (its
|
|
58
|
+
* highlighted row, the control that opened it), withdrawn when it closes or
|
|
59
|
+
* leaves the page.
|
|
60
|
+
*/
|
|
61
|
+
export declare const listPopup: (edytor: Edytor, owner: string, role: "listbox" | "menu", open?: (node: HTMLElement) => Omit<Popup, "id"> | false | null) => Attachment<HTMLElement>;
|
|
62
|
+
/**
|
|
63
|
+
* The element that holds a list's keyboard (a `keys` attachment's body): it
|
|
64
|
+
* takes the focus as it mounts (unless the focus is already in it), `keydown`
|
|
65
|
+
* hears the keys on `keyed` (the element itself by default), and it names
|
|
66
|
+
* the highlighted row (`aria-activedescendant`, once that row is in the
|
|
67
|
+
* page) when it may name one (a field, or an element with a role).
|
|
68
|
+
*/
|
|
69
|
+
export declare const holdKeys: (node: HTMLElement, keydown: (event: KeyboardEvent) => void, active: () => string | undefined, keyed?: HTMLElement) => () => void;
|
|
70
|
+
/** An open list the editor keeps the keyboard for, as its keys drive it. */
|
|
71
|
+
export type HeldList = {
|
|
72
|
+
/** Move the keyboard's row by `step`; whether it moved (no rows: the arrows stay the caret's). */
|
|
73
|
+
move: (step: number) => boolean;
|
|
74
|
+
/** Pick the keyboard's row; none when Enter is not the list's (no row to pick). */
|
|
75
|
+
pick?: () => void;
|
|
76
|
+
close: () => void;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The editor's keys for the list it keeps the keyboard for (a trigger's
|
|
80
|
+
* menu, the URL paste menu), while `open` answers one: ArrowDown and ArrowUp
|
|
81
|
+
* move its row, Enter picks it, Escape closes it.
|
|
82
|
+
*/
|
|
83
|
+
export declare const listHotkeys: (open: () => HeldList | false | undefined) => Partial<Record<HotKeyCombination, HotKey>>;
|
|
84
|
+
/**
|
|
85
|
+
* A chrome list and its keyboard's row (the trigger and slash menus, the
|
|
86
|
+
* code language list, the callout icon picker, the URL paste menu, a table
|
|
87
|
+
* grip's menu): the list's element (`popup`, its id `listId`), a row's id
|
|
88
|
+
* and attachment (`rowId`, `option`: rows are named by position) and the
|
|
89
|
+
* step the keys take (`move`). Each controller extends it with its rows,
|
|
90
|
+
* its keys and its actions.
|
|
91
|
+
*/
|
|
92
|
+
export declare abstract class ChromeList {
|
|
93
|
+
/** The list's name among the view's popups (`edytor.popups`). */
|
|
94
|
+
protected readonly owner: string;
|
|
95
|
+
/** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
|
|
96
|
+
protected readonly role: 'listbox' | 'menu';
|
|
97
|
+
/** The keyboard's row. */
|
|
98
|
+
index: number;
|
|
99
|
+
/**
|
|
100
|
+
* The list's element (`{@attach controller.popup}`, named by your
|
|
101
|
+
* markup): its id and role unless it has its own, presses that keep the
|
|
102
|
+
* focus, and its publication to the view's root (`edytor.popups`) while
|
|
103
|
+
* it is open and in the page.
|
|
104
|
+
*/
|
|
105
|
+
readonly popup: Attachment<HTMLElement>;
|
|
106
|
+
constructor(
|
|
107
|
+
/** @internal */
|
|
108
|
+
edytor: Edytor,
|
|
109
|
+
/** The list's name among the view's popups (`edytor.popups`). */
|
|
110
|
+
owner: string,
|
|
111
|
+
/** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
|
|
112
|
+
role: 'listbox' | 'menu', open?: (node: HTMLElement) => Omit<Popup, 'id'> | false | null);
|
|
113
|
+
/** How many rows the keyboard walks. */
|
|
114
|
+
protected abstract get count(): number;
|
|
115
|
+
/** The list's element id (page-unique), for `aria-controls`. */
|
|
116
|
+
get listId(): string;
|
|
117
|
+
/** Row `index`'s element id (page-unique), for `aria-activedescendant`. */
|
|
118
|
+
rowId: (index: number) => string;
|
|
119
|
+
/**
|
|
120
|
+
* Row `index`'s attachment (`{@attach controller.option(index)}`): its
|
|
121
|
+
* id, its role and `aria-selected` (a `listbox`'s); the keyboard's row
|
|
122
|
+
* scrolls into view. Its look is the markup's (`index === this.index`).
|
|
123
|
+
*/
|
|
124
|
+
option(index: number): Attachment<HTMLElement>;
|
|
125
|
+
/** Move the keyboard's row by `step`, around the ends; `false` when there is no row. */
|
|
126
|
+
move: (step: number) => boolean;
|
|
127
|
+
}
|
|
128
|
+
export {};
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one list behaviour every chrome menu shares (the trigger and slash
|
|
3
|
+
* menus, the block menu, the code language list, the callout icon picker,
|
|
4
|
+
* the URL paste menu, the table grip menu): the keyboard's row a key moves
|
|
5
|
+
* to, the list element's id, role, name and publication to the view's root,
|
|
6
|
+
* the element holding the keyboard (its focus, its keys, the row it names),
|
|
7
|
+
* and the editor's keys for a list the editor keeps the keyboard for. Each
|
|
8
|
+
* controller keeps its own state, rows and payload; these are its
|
|
9
|
+
* attachments' and bindings' bodies.
|
|
10
|
+
*/
|
|
11
|
+
import { untrack } from 'svelte';
|
|
12
|
+
import { attach, attribute, keepFocus, namesRows } from './chrome.js';
|
|
13
|
+
import { listen } from '../utils/listen.js';
|
|
14
|
+
/**
|
|
15
|
+
* How many rows took their id so far: a row's attachment runs after the
|
|
16
|
+
* effects of the elements before it (the field naming the highlighted row,
|
|
17
|
+
* the list's publication), which read it to look again.
|
|
18
|
+
*/
|
|
19
|
+
let named = $state(0);
|
|
20
|
+
/** `id` when an element of `node`'s page has it, else `undefined` (looked up again as rows take their ids). */
|
|
21
|
+
export const inPage = (node, id) => {
|
|
22
|
+
void named;
|
|
23
|
+
return id && node.ownerDocument?.getElementById(id) ? id : undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A row's attachment: its id, role, `aria-selected` (a `listbox`'s
|
|
27
|
+
* option) and `state`; the keyboard's row (`selected`)
|
|
28
|
+
* scrolls into view when it becomes it, unless `reveal` is `false` (a list
|
|
29
|
+
* in the page, whose focus scrolls it).
|
|
30
|
+
*/
|
|
31
|
+
export const optionAttachment = (id, role, selected, state = {}, reveal = true) => {
|
|
32
|
+
const own = attach({
|
|
33
|
+
id,
|
|
34
|
+
role,
|
|
35
|
+
tabindex: -1,
|
|
36
|
+
'aria-selected': role === 'option' ? selected : undefined,
|
|
37
|
+
'aria-checked': undefined,
|
|
38
|
+
'aria-disabled': undefined,
|
|
39
|
+
'aria-haspopup': undefined,
|
|
40
|
+
'aria-expanded': undefined,
|
|
41
|
+
...state
|
|
42
|
+
});
|
|
43
|
+
return (node) => {
|
|
44
|
+
const fresh = node.id !== id;
|
|
45
|
+
own(node);
|
|
46
|
+
if (fresh)
|
|
47
|
+
untrack(() => named++);
|
|
48
|
+
if (selected && reveal)
|
|
49
|
+
node.scrollIntoView?.({ block: 'nearest' });
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The keyboard's row after `key` among `count` rows from `at`, `undefined`
|
|
54
|
+
* when the key does not move it: ArrowDown and ArrowUp step through the
|
|
55
|
+
* rows `usable` keeps (a disabled one is skipped), around the ends; in a
|
|
56
|
+
* grid of `columns`, ArrowRight and ArrowLeft step around the ends, ArrowDown
|
|
57
|
+
* and ArrowUp a whole row, stopping at the first and last; with `ends`, Home
|
|
58
|
+
* and End reach the first and last rows.
|
|
59
|
+
*/
|
|
60
|
+
export const stepRow = (key, at, count, { columns = 0, ends = false, usable = () => true } = {}) => {
|
|
61
|
+
const rows = [...Array(count).keys()].filter(usable);
|
|
62
|
+
const length = rows.length;
|
|
63
|
+
const down = { ArrowDown: 1, ArrowUp: -1 }[key];
|
|
64
|
+
const across = columns && { ArrowRight: 1, ArrowLeft: -1 }[key];
|
|
65
|
+
if (down && columns)
|
|
66
|
+
return Math.max(0, Math.min(length - 1, at + down * columns));
|
|
67
|
+
const step = down || across;
|
|
68
|
+
if (step)
|
|
69
|
+
return length ? rows[(rows.indexOf(at) + step + length) % length] : at;
|
|
70
|
+
if (ends && length && (key === 'Home' || key === 'End'))
|
|
71
|
+
return rows[key === 'Home' ? 0 : length - 1];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* A key on a menu that holds the keyboard itself, not a field (WAI-ARIA's
|
|
75
|
+
* menu keys): the arrows, Home and End move its row (`stepRow`), Enter and
|
|
76
|
+
* Space pick it, Escape and Tab close it. Whether the key was the menu's
|
|
77
|
+
* (then its default is prevented).
|
|
78
|
+
*/
|
|
79
|
+
export const menuKey = (event, menu, steps) => {
|
|
80
|
+
const { key } = event;
|
|
81
|
+
const to = stepRow(key, menu.at, menu.count, { ends: true, ...steps });
|
|
82
|
+
if (to !== undefined)
|
|
83
|
+
menu.to(to);
|
|
84
|
+
else if (key === 'Enter' || key === ' ')
|
|
85
|
+
menu.pick();
|
|
86
|
+
else if (key === 'Escape' || key === 'Tab')
|
|
87
|
+
menu.close();
|
|
88
|
+
else
|
|
89
|
+
return false;
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
return true;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* A list's element (`{@attach controller.popup}`, named by its markup): it
|
|
95
|
+
* takes the list's id (`edytor.popups.idOf(owner)`) and its `role` unless
|
|
96
|
+
* it has its own, keeps the focus where it is on a press (a field takes its
|
|
97
|
+
* own), and is published to the view's root (`edytor.popups`, `role` its
|
|
98
|
+
* `aria-haspopup`) while `open` answers the rest of its record (its
|
|
99
|
+
* highlighted row, the control that opened it), withdrawn when it closes or
|
|
100
|
+
* leaves the page.
|
|
101
|
+
*/
|
|
102
|
+
export const listPopup = (edytor, owner, role, open = () => ({})) => (node) => {
|
|
103
|
+
const id = edytor.popups.idOf(owner);
|
|
104
|
+
node.id = id;
|
|
105
|
+
if (!node.hasAttribute('role'))
|
|
106
|
+
node.setAttribute('role', role);
|
|
107
|
+
const off = listen(node, 'mousedown', keepFocus);
|
|
108
|
+
$effect(() => {
|
|
109
|
+
const popup = open(node);
|
|
110
|
+
if (!popup)
|
|
111
|
+
return;
|
|
112
|
+
edytor.popups.set(owner, { id, haspopup: role, ...popup });
|
|
113
|
+
return () => edytor.popups.set(owner, null);
|
|
114
|
+
});
|
|
115
|
+
return off;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* The element that holds a list's keyboard (a `keys` attachment's body): it
|
|
119
|
+
* takes the focus as it mounts (unless the focus is already in it), `keydown`
|
|
120
|
+
* hears the keys on `keyed` (the element itself by default), and it names
|
|
121
|
+
* the highlighted row (`aria-activedescendant`, once that row is in the
|
|
122
|
+
* page) when it may name one (a field, or an element with a role).
|
|
123
|
+
*/
|
|
124
|
+
export const holdKeys = (node, keydown, active, keyed = node) => {
|
|
125
|
+
untrack(() => {
|
|
126
|
+
if (!node.contains(node.ownerDocument.activeElement))
|
|
127
|
+
node.focus({ preventScroll: true });
|
|
128
|
+
});
|
|
129
|
+
const off = listen(keyed, 'keydown', keydown);
|
|
130
|
+
$effect(() => {
|
|
131
|
+
if (namesRows(node))
|
|
132
|
+
attribute(node, 'aria-activedescendant', inPage(node, active()));
|
|
133
|
+
});
|
|
134
|
+
return off;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* The editor's keys for the list it keeps the keyboard for (a trigger's
|
|
138
|
+
* menu, the URL paste menu), while `open` answers one: ArrowDown and ArrowUp
|
|
139
|
+
* move its row, Enter picks it, Escape closes it.
|
|
140
|
+
*/
|
|
141
|
+
export const listHotkeys = (open) => {
|
|
142
|
+
const step = (by) => ({ prevent }) => {
|
|
143
|
+
const list = open();
|
|
144
|
+
if (list && list.move(by))
|
|
145
|
+
prevent();
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
arrowdown: step(1),
|
|
149
|
+
arrowup: step(-1),
|
|
150
|
+
enter: ({ prevent }) => {
|
|
151
|
+
const list = open();
|
|
152
|
+
if (list && list.pick)
|
|
153
|
+
prevent(list.pick);
|
|
154
|
+
},
|
|
155
|
+
escape: ({ prevent }) => {
|
|
156
|
+
const list = open();
|
|
157
|
+
if (list)
|
|
158
|
+
prevent(list.close);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* A chrome list and its keyboard's row (the trigger and slash menus, the
|
|
164
|
+
* code language list, the callout icon picker, the URL paste menu, a table
|
|
165
|
+
* grip's menu): the list's element (`popup`, its id `listId`), a row's id
|
|
166
|
+
* and attachment (`rowId`, `option`: rows are named by position) and the
|
|
167
|
+
* step the keys take (`move`). Each controller extends it with its rows,
|
|
168
|
+
* its keys and its actions.
|
|
169
|
+
*/
|
|
170
|
+
export class ChromeList {
|
|
171
|
+
edytor;
|
|
172
|
+
owner;
|
|
173
|
+
role;
|
|
174
|
+
/** The keyboard's row. */
|
|
175
|
+
index = $state(0);
|
|
176
|
+
/**
|
|
177
|
+
* The list's element (`{@attach controller.popup}`, named by your
|
|
178
|
+
* markup): its id and role unless it has its own, presses that keep the
|
|
179
|
+
* focus, and its publication to the view's root (`edytor.popups`) while
|
|
180
|
+
* it is open and in the page.
|
|
181
|
+
*/
|
|
182
|
+
popup;
|
|
183
|
+
constructor(
|
|
184
|
+
/** @internal */
|
|
185
|
+
edytor,
|
|
186
|
+
/** The list's name among the view's popups (`edytor.popups`). */
|
|
187
|
+
owner,
|
|
188
|
+
/** Its role: a `listbox` the editor or a field keeps the keyboard for, or a `menu`. */
|
|
189
|
+
role, open) {
|
|
190
|
+
this.edytor = edytor;
|
|
191
|
+
this.owner = owner;
|
|
192
|
+
this.role = role;
|
|
193
|
+
this.popup = listPopup(edytor, owner, role, open);
|
|
194
|
+
}
|
|
195
|
+
/** The list's element id (page-unique), for `aria-controls`. */
|
|
196
|
+
get listId() {
|
|
197
|
+
return this.edytor.popups.idOf(this.owner);
|
|
198
|
+
}
|
|
199
|
+
/** Row `index`'s element id (page-unique), for `aria-activedescendant`. */
|
|
200
|
+
rowId = (index) => this.edytor.popups.idOf(`${this.owner}-${index}`);
|
|
201
|
+
/**
|
|
202
|
+
* Row `index`'s attachment (`{@attach controller.option(index)}`): its
|
|
203
|
+
* id, its role and `aria-selected` (a `listbox`'s); the keyboard's row
|
|
204
|
+
* scrolls into view. Its look is the markup's (`index === this.index`).
|
|
205
|
+
*/
|
|
206
|
+
option(index) {
|
|
207
|
+
const role = this.role === 'menu' ? 'menuitem' : 'option';
|
|
208
|
+
return optionAttachment(this.rowId(index), role, index === this.index);
|
|
209
|
+
}
|
|
210
|
+
/** Move the keyboard's row by `step`, around the ends; `false` when there is no row. */
|
|
211
|
+
move = (step) => {
|
|
212
|
+
const count = this.count;
|
|
213
|
+
if (count)
|
|
214
|
+
this.index = (this.index + step + count) % count;
|
|
215
|
+
return count > 0;
|
|
216
|
+
};
|
|
217
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Plugin } from '../plugins.js';
|
|
2
2
|
/** Markdown prefixes come from the kind catalogue: a row whose shortcut the typed character completes. */
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const createMarkdownShortcutsPlugin: () => Plugin;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { convertToKind } from '../kinds.js';
|
|
2
2
|
import { jsonEquals } from '../utils/json.js';
|
|
3
|
+
import { withRulesAndTriggers } from './triggers/triggers.js';
|
|
3
4
|
/**
|
|
4
5
|
* Notion's inline markdown, completed by the typed closing character: the
|
|
5
6
|
* mark, the opening marker's start and length, the content's length and
|
|
@@ -60,7 +61,7 @@ const shortcutRow = (kinds, block, typed) => {
|
|
|
60
61
|
return best ?? kinds.find((kind) => kind.markdown?.includes(typed));
|
|
61
62
|
};
|
|
62
63
|
/** Markdown prefixes come from the kind catalogue: a row whose shortcut the typed character completes. */
|
|
63
|
-
export const
|
|
64
|
+
export const createMarkdownShortcutsPlugin = () => (edytor) => {
|
|
64
65
|
/** The catalogue's prefixes as one pattern, from a text's start (built once the catalogue is). */
|
|
65
66
|
let prefixes = null;
|
|
66
67
|
const prefixPattern = () => {
|
|
@@ -90,15 +91,15 @@ export const markdownShortcutsPlugin = (edytor) => {
|
|
|
90
91
|
if (!text)
|
|
91
92
|
return false;
|
|
92
93
|
const { id } = block;
|
|
93
|
-
// The segment's start, in block offsets: the caret, less the text before it.
|
|
94
|
-
const at = to -
|
|
94
|
+
// The segment's start, in block offsets: the caret (after the typed text), less the text before it.
|
|
95
|
+
const at = to - match.input.length + found.start;
|
|
95
96
|
const { facade, dispatcher } = edytor;
|
|
96
|
-
const plan = () => facade.compose(facade.prepare.
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
const plan = () => facade.compose(facade.prepare.formatRange(id, at + found.open, found.content, { [found.mark]: true }),
|
|
98
|
+
// The closing marker, the typed character with it.
|
|
99
|
+
facade.prepare.deleteText(id, at + found.open + found.content, found.closing + typed.length), facade.prepare.deleteText(id, at, found.open));
|
|
99
100
|
const payload = { value: typed, start: before.length, end: before.length };
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
101
|
+
const result = dispatcher.plan('inlineMarkdown', payload, plan, block, text);
|
|
102
|
+
if (result.status !== 'applied')
|
|
102
103
|
return false;
|
|
103
104
|
// Typing after the shortcut continues without the mark.
|
|
104
105
|
edytor.selection.stage({});
|
|
@@ -132,5 +133,5 @@ export const markdownShortcutsPlugin = (edytor) => {
|
|
|
132
133
|
return converted;
|
|
133
134
|
}
|
|
134
135
|
};
|
|
135
|
-
return { inputRules: [inline, prefix] };
|
|
136
|
+
return withRulesAndTriggers(edytor, {}, { inputRules: [inline, prefix] });
|
|
136
137
|
};
|
|
@@ -4,29 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* The marquee's rectangle, in its overlay host (placed and sized to the
|
|
7
|
-
* rectangle by the plugin's measure): the
|
|
7
|
+
* rectangle by the plugin's measure): the app's `box`.
|
|
8
8
|
*/
|
|
9
|
-
let { controller, box }: { controller: MarqueeController; box
|
|
9
|
+
let { controller, box }: { controller: MarqueeController; box: Snippet<[MarqueeBoxPayload]> } =
|
|
10
10
|
$props();
|
|
11
11
|
|
|
12
12
|
const payload = $derived(controller.payload);
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
|
-
{#if payload}
|
|
16
|
-
{#if box}
|
|
17
|
-
{@render box(payload)}
|
|
18
|
-
{:else}
|
|
19
|
-
<div data-edytor-marquee data-adding={payload.adding ? 'true' : undefined}></div>
|
|
20
|
-
{/if}
|
|
21
|
-
{/if}
|
|
22
|
-
|
|
23
|
-
<style>
|
|
24
|
-
[data-edytor-marquee] {
|
|
25
|
-
box-sizing: border-box;
|
|
26
|
-
width: 100%;
|
|
27
|
-
height: 100%;
|
|
28
|
-
background: var(--edytor-marquee-background, rgba(35, 131, 226, 0.14));
|
|
29
|
-
border: var(--edytor-marquee-border, 1px solid rgba(35, 131, 226, 0.4));
|
|
30
|
-
border-radius: var(--edytor-marquee-radius, 2px);
|
|
31
|
-
}
|
|
32
|
-
</style>
|
|
15
|
+
{#if payload}{@render box(payload)}{/if}
|
|
@@ -2,7 +2,7 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
|
|
3
3
|
type $$ComponentProps = {
|
|
4
4
|
controller: MarqueeController;
|
|
5
|
-
box
|
|
5
|
+
box: Snippet<[MarqueeBoxPayload]>;
|
|
6
6
|
};
|
|
7
7
|
declare const MarqueeBox: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
8
|
type MarqueeBox = ReturnType<typeof MarqueeBox>;
|
|
@@ -32,8 +32,6 @@ export declare class MarqueeController {
|
|
|
32
32
|
/** Shift or Mod was held at the press (reactive). */
|
|
33
33
|
adding: boolean;
|
|
34
34
|
constructor(edytor: Edytor, threshold: number);
|
|
35
|
-
/** Whether a press is down that may still become (or is) a marquee. */
|
|
36
|
-
get pressing(): boolean;
|
|
37
35
|
/** What a `box` snippet receives. */
|
|
38
36
|
get payload(): MarqueeBoxPayload | null;
|
|
39
37
|
/**
|