edytor 1.0.0-rc.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +47 -141
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.d.ts +6 -1
- package/dist/clipboard/htmlFlow.js +26 -13
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +22 -17
- package/dist/cloudflare/DocumentRoom.js +10 -5
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +20 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +9 -30
- package/dist/cloudflare/room/storage.js +52 -104
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +160 -119
- package/dist/components/Block.svelte.d.ts +8 -3
- package/dist/components/Content.svelte +91 -44
- package/dist/components/CustomMark.svelte +46 -0
- package/dist/components/CustomMark.svelte.d.ts +11 -0
- package/dist/components/Edytor.svelte +80 -95
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/InlineBlock.svelte +4 -9
- package/dist/components/Mark.svelte +46 -35
- package/dist/components/Mark.svelte.d.ts +7 -0
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +48 -14
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +8 -13
- package/dist/crdt/data.js +30 -70
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
- package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +34 -64
- package/dist/edytor.svelte.js +118 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -184
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +33 -72
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +92 -72
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -13
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +91 -314
- package/dist/labels.js +180 -396
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
- package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +20 -17
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +46 -1
- package/dist/plugins/blockHandles/geometry.js +51 -4
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +79 -0
- package/dist/plugins/chrome.js +87 -0
- package/dist/plugins/code/CodeHeader.svelte +12 -58
- package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
- package/dist/plugins/code/CodePlugin.svelte +75 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +25 -0
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
- package/dist/plugins/code/code.css +5 -100
- package/dist/plugins/code/header.svelte.d.ts +47 -0
- package/dist/plugins/code/header.svelte.js +141 -0
- package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
- package/dist/plugins/code/languageMenu.svelte.js +199 -0
- package/dist/plugins/code/languages.d.ts +21 -10
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
- package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +18 -129
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
- package/dist/plugins/equation/EquationPlugin.svelte +123 -168
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +74 -36
- package/dist/plugins/equation/equation.svelte.js +74 -66
- package/dist/plugins/equation/importUrl.d.ts +6 -0
- package/dist/plugins/equation/importUrl.js +6 -0
- package/dist/plugins/equation/katex.d.ts +8 -0
- package/dist/plugins/equation/katex.js +77 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +5 -151
- package/dist/plugins/image/ImagePlugin.svelte +49 -117
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -57
- package/dist/plugins/image/controls.svelte.js +51 -174
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +39 -24
- package/dist/plugins/index.js +30 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
- package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
- package/dist/plugins/marquee/marquee.d.ts +33 -0
- package/dist/plugins/marquee/marquee.js +89 -0
- package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
- package/dist/plugins/marquee/marqueePlugin.js +68 -0
- package/dist/plugins/media/AudioPlugin.svelte +3 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
- package/dist/plugins/media/EmbedPlugin.svelte +93 -77
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -111
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +55 -112
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +69 -0
- package/dist/plugins/media/empty.svelte.js +111 -0
- package/dist/plugins/media/media.d.ts +93 -30
- package/dist/plugins/media/media.js +79 -86
- package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
- package/dist/plugins/media/urlPaste.svelte.js +46 -75
- package/dist/plugins/mention/MentionPlugin.svelte +47 -124
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
- package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +25 -0
- package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.d.ts +9 -0
- package/dist/plugins/richtext/body.js +16 -0
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
- package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +96 -127
- package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
- package/dist/plugins/table/TablePlugin.svelte +116 -171
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +110 -117
- package/dist/plugins/table/chrome.svelte.js +643 -289
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +55 -134
- package/dist/plugins/table/table.d.ts +26 -7
- package/dist/plugins/table/table.js +23 -49
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
- package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
- package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +167 -60
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +12 -10
- package/dist/selection/pointer.svelte.js +154 -71
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +263 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +11 -8
- package/dist/selection/visibility.js +23 -8
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -53
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +18 -3
- package/dist/session/navigation.js +194 -153
- package/dist/session/ports.d.ts +7 -0
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +8 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +64 -47
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +32 -0
- package/dist/surface/lines.js +43 -0
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +73 -77
- package/dist/surface/overlay.d.ts +48 -6
- package/dist/surface/overlay.js +133 -23
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +315 -126
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -525
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -43
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -116
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
- package/dist/plugins/richtext/labels.d.ts +0 -5
- package/dist/plugins/richtext/labels.js +0 -3
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/toolbar/LinkCard.svelte +0 -118
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
- package/dist/plugins/toolbar/Toolbar.svelte +0 -400
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
package/dist/plugins/index.js
CHANGED
|
@@ -1,30 +1,38 @@
|
|
|
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 { createUploadsPlugin } from './uploads.svelte.js';
|
|
4
|
+
export { createArrowMovePlugin } from './arrowMove/arrowMove.js';
|
|
3
5
|
export { BLOCK_ACTIVATE_EVENT, BLOCK_ADD_EVENT } from './blockHandles/BlockHandleController.svelte.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export { markdownShortcutsPlugin } from './markdownShortcuts.js';
|
|
6
|
+
export { createBlockHandlesPlugin } from './blockHandles/blockHandlesPlugin.js';
|
|
7
|
+
export { createCodePlugin, CODE_LANGUAGES, loadCodeLanguage } from './code/CodePlugin.svelte';
|
|
8
|
+
export { createMarkdownShortcutsPlugin } from './markdownShortcuts.js';
|
|
8
9
|
export { createMentionPlugin } from './mention/MentionPlugin.svelte';
|
|
9
10
|
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 {
|
|
11
|
+
export { withRulesAndTriggers } from './triggers/triggers.js';
|
|
12
|
+
export { createSlashMenuPlugin } from './slashMenu/slashMenuPlugin.js';
|
|
13
|
+
export { createToolbarPlugin } from './toolbar/toolbarPlugin.js';
|
|
14
|
+
export { createBlockMenuPlugin } from './blockMenu/blockMenuPlugin.js';
|
|
15
|
+
export { createSuggestionsPlugin } from './suggestions/suggestionsPlugin.js';
|
|
16
|
+
export { createSuggestionBarPlugin } from './suggestions/SuggestionBars.svelte';
|
|
17
|
+
export { createImagePlugin, safeImageSrc, storableImageSrc, oversizedInlineImage, MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH } from './image/ImagePlugin.svelte';
|
|
18
|
+
export { createEmbedPlugin, EMBED_PROVIDERS, EMBED_SANDBOX, EMBED_ALLOW, embedSourceOf } from './media/EmbedPlugin.svelte';
|
|
19
|
+
export { createBookmarkPlugin } from './media/BookmarkPlugin.svelte';
|
|
20
|
+
export { createFilePlugin } from './media/FilePlugin.svelte';
|
|
21
|
+
export { createVideoPlugin } from './media/VideoPlugin.svelte';
|
|
22
|
+
export { createAudioPlugin } from './media/AudioPlugin.svelte';
|
|
20
23
|
export { safeWebUrl, safeMediaSrc } from './media/media.js';
|
|
21
|
-
export {
|
|
22
|
-
export {
|
|
24
|
+
export { createMediaEmptyPlugin } from './media/MediaEmpty.svelte';
|
|
25
|
+
export { createImageToolbarPlugin } from './image/toolbar.svelte.js';
|
|
26
|
+
export { createColumnsPlugin } from './columns/ColumnsPlugin.svelte';
|
|
27
|
+
export { createFindPlugin, findController } from './find/findPlugin.js';
|
|
28
|
+
export { createMarqueePlugin } from './marquee/marqueePlugin.js';
|
|
23
29
|
export { findMatches } from './find/search.js';
|
|
24
30
|
export { createCommentsPlugin, commentsController } from './comments/commentsPlugin.js';
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export {
|
|
31
|
+
export { createPagePlugin } from './page/PagePlugin.svelte';
|
|
32
|
+
export { createTocPlugin } from './toc/TocPlugin.svelte';
|
|
33
|
+
export { createTablePlugin } from './table/TablePlugin.svelte';
|
|
34
|
+
// The table ops, prepared over any document (`document.apply(insertTableRow(document, …))`).
|
|
35
|
+
export { insertTableRow, deleteTableRows, insertTableColumn, deleteTableColumn, moveTableColumn, moveTableRows, fillTableCell } from './table/ops.js';
|
|
28
36
|
// The table kind's value as JSON (also on `edytor/crdt/edytor`).
|
|
29
37
|
export { tableBlock } from '../crdt/tables.js';
|
|
30
|
-
export { createEquationPlugin } from './equation/EquationPlugin.svelte';
|
|
38
|
+
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 = () => {
|
|
@@ -93,12 +94,12 @@ export const markdownShortcutsPlugin = (edytor) => {
|
|
|
93
94
|
// The segment's start, in block offsets: the caret, less the text before it.
|
|
94
95
|
const at = to - before.length + found.start;
|
|
95
96
|
const { facade, dispatcher } = edytor;
|
|
96
|
-
const plan = () => facade.compose(facade.prepare.
|
|
97
|
+
const plan = () => facade.compose(facade.prepare.formatRange(id, at + found.open, found.content, { [found.mark]: true }), ...(found.closing
|
|
97
98
|
? [facade.prepare.deleteText(id, at + found.open + found.content, found.closing)]
|
|
98
99
|
: []), 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
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The marquee's rectangle, in its overlay host (placed and sized to the
|
|
7
|
+
* rectangle by the plugin's measure): the app's `box`.
|
|
8
|
+
*/
|
|
9
|
+
let { controller, box }: { controller: MarqueeController; box: Snippet<[MarqueeBoxPayload]> } =
|
|
10
|
+
$props();
|
|
11
|
+
|
|
12
|
+
const payload = $derived(controller.payload);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#if payload}{@render box(payload)}{/if}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { MarqueeBoxPayload, MarqueeController } from './MarqueeController.svelte.js';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
controller: MarqueeController;
|
|
5
|
+
box: Snippet<[MarqueeBoxPayload]>;
|
|
6
|
+
};
|
|
7
|
+
declare const MarqueeBox: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type MarqueeBox = ReturnType<typeof MarqueeBox>;
|
|
9
|
+
export default MarqueeBox;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The marquee gesture of one view (`sel.marquee`, Notion's rubber band): a
|
|
3
|
+
* press in the editor's empty area, then a drag past `threshold`, draws a
|
|
4
|
+
* rectangle and selects, live, the blocks it meets (`marqueeBlocks`)
|
|
5
|
+
* through the one selection writer (`selection.select`). The press reaches
|
|
6
|
+
* it classified: the host's own area by `events/onFocus.ts`
|
|
7
|
+
* (`pointer.marginPress`), the handle gutter and the app's container by the
|
|
8
|
+
* plugin's `onPress` listeners. Between the press and the release it owns
|
|
9
|
+
* the pointer's moves, the scroll that extends the rectangle, Escape, and
|
|
10
|
+
* the browser's selection start (cancelled).
|
|
11
|
+
*/
|
|
12
|
+
import type { Edytor } from '../../edytor.svelte.js';
|
|
13
|
+
/** What a `box` snippet receives: the rectangle and what it selects (reactive). */
|
|
14
|
+
export type MarqueeBoxPayload = {
|
|
15
|
+
/** The rectangle, in viewport (client) coordinates. */
|
|
16
|
+
rect: DOMRectReadOnly;
|
|
17
|
+
/** How many blocks are selected (the ones Shift or Mod kept included). */
|
|
18
|
+
count: number;
|
|
19
|
+
/** The selected blocks' ids, in the order the selection lists them. */
|
|
20
|
+
ids: readonly string[];
|
|
21
|
+
/** Shift or Mod was held at the press: the rectangle adds to the selection there was. */
|
|
22
|
+
adding: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare class MarqueeController {
|
|
25
|
+
#private;
|
|
26
|
+
readonly edytor: Edytor;
|
|
27
|
+
private readonly threshold;
|
|
28
|
+
/** The rectangle while the marquee shows (client coordinates), else `null` (reactive). */
|
|
29
|
+
rect: DOMRectReadOnly | null;
|
|
30
|
+
/** The block ids the marquee selects (reactive). */
|
|
31
|
+
ids: readonly string[];
|
|
32
|
+
/** Shift or Mod was held at the press (reactive). */
|
|
33
|
+
adding: boolean;
|
|
34
|
+
constructor(edytor: Edytor, threshold: number);
|
|
35
|
+
/** What a `box` snippet receives. */
|
|
36
|
+
get payload(): MarqueeBoxPayload | null;
|
|
37
|
+
/**
|
|
38
|
+
* A primary press from a mouse or a pen, already classified as the
|
|
39
|
+
* editor's empty area (`host`: the host's own; else the handle gutter or
|
|
40
|
+
* the app's container). Answers whether the marquee took it.
|
|
41
|
+
*/
|
|
42
|
+
press: (event: MouseEvent, host: boolean) => boolean;
|
|
43
|
+
/** End the gesture and give back the selection from before the press. */
|
|
44
|
+
cancel: () => void;
|
|
45
|
+
destroy: () => void;
|
|
46
|
+
}
|