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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
import type { Plugin, BlockSnippetPayload, KindPreset, PlaceholderView } from '../../plugins.js';
|
|
3
|
-
import
|
|
3
|
+
import { branded } from '../brand.js';
|
|
4
4
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
5
5
|
import { presetId } from '../../kinds.js';
|
|
6
6
|
import type { Text } from '../../text/text.svelte.js';
|
|
@@ -19,9 +19,29 @@
|
|
|
19
19
|
import { firstUriListEntry } from '../../events/dataTransferPayload.js';
|
|
20
20
|
import { flipToggles, shownSelectionBlocks } from '../../selection/replaceSelection.js';
|
|
21
21
|
import { mediaKinds, richTextKinds, richTextMarks } from '../../crdt/semantics.js';
|
|
22
|
-
import {
|
|
23
|
-
import { checkboxLabels } from './labels.js';
|
|
22
|
+
import { richTextEnglish, keywordsOf, labelsOf, type RichTextLabels } from '../../labels.js';
|
|
24
23
|
import TodoCheckbox from './TodoCheckbox.svelte';
|
|
24
|
+
import EmptyBody from './EmptyBody.svelte';
|
|
25
|
+
import CalloutIcon from './CalloutIcon.svelte';
|
|
26
|
+
import RichTextControl from './RichTextControl.svelte';
|
|
27
|
+
import {
|
|
28
|
+
DEFAULT_CALLOUT_ICON,
|
|
29
|
+
calloutHtml,
|
|
30
|
+
calloutIcons,
|
|
31
|
+
calloutPickers,
|
|
32
|
+
iconOf
|
|
33
|
+
} from './callouts.js';
|
|
34
|
+
import { listen } from '../../utils/listen.js';
|
|
35
|
+
import type { Snippet } from 'svelte';
|
|
36
|
+
import {
|
|
37
|
+
richTextControls,
|
|
38
|
+
toggleTodo,
|
|
39
|
+
type CalloutIconPayload,
|
|
40
|
+
type EmptyBodyPayload,
|
|
41
|
+
type TodoCheckboxPayload
|
|
42
|
+
} from './controls.svelte.js';
|
|
43
|
+
|
|
44
|
+
export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
|
|
25
45
|
|
|
26
46
|
export { richTextOperations };
|
|
27
47
|
|
|
@@ -42,6 +62,8 @@
|
|
|
42
62
|
const rule = { html: () => '<hr>', plain: () => '---' };
|
|
43
63
|
/** A native disclosure: the browser owns `open` (declared view state). */
|
|
44
64
|
const disclosure = { element: 'details', viewState: ['open'] };
|
|
65
|
+
/** The kinds drawn as a disclosure: a toggle this view creates opens (`body.open`). */
|
|
66
|
+
const DISCLOSURES = new Set(['toggle', 'toggle-heading']);
|
|
45
67
|
/**
|
|
46
68
|
* A list's elements without list semantics (`role="none"`): a list's items
|
|
47
69
|
* are sibling blocks, never the only children of one `ul` or `ol`, so an
|
|
@@ -90,96 +112,121 @@
|
|
|
90
112
|
undefined;
|
|
91
113
|
|
|
92
114
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* paragraph invites a command only while focused.
|
|
115
|
+
* The kinds whose empty text names them, by placeholder (a callout's
|
|
116
|
+
* title, as a toggle's, names itself).
|
|
96
117
|
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (type === 'bulleted-list-item' || type === 'numbered-list-item') return placeholders.list;
|
|
105
|
-
if (type === 'todo-item') return placeholders.todo;
|
|
106
|
-
if (type === 'toggle') return placeholders.toggle;
|
|
107
|
-
if (type === 'quote') return placeholders.quote;
|
|
108
|
-
if (type === 'callout') return focused ? placeholders.callout : null;
|
|
109
|
-
if (type === 'image' || Object.hasOwn(mediaKinds, type))
|
|
110
|
-
return focused ? placeholders.caption : null;
|
|
111
|
-
// Code shows nothing in an empty line (Notion).
|
|
112
|
-
if (type === 'codeLine') return null;
|
|
113
|
-
return focused ? placeholders.empty : null;
|
|
114
|
-
};
|
|
118
|
+
const NAMED: Record<string, 'list' | 'todo' | 'toggle' | 'quote' | 'callout'> = {
|
|
119
|
+
'bulleted-list-item': 'list',
|
|
120
|
+
'numbered-list-item': 'list',
|
|
121
|
+
'todo-item': 'todo',
|
|
122
|
+
toggle: 'toggle',
|
|
123
|
+
quote: 'quote',
|
|
124
|
+
callout: 'callout'
|
|
115
125
|
};
|
|
116
126
|
|
|
117
|
-
/**
|
|
118
|
-
|
|
127
|
+
/**
|
|
128
|
+
* Notion's placeholders, in the view's `richText` labels (English by
|
|
129
|
+
* default): headings, lists, to-dos, toggles and quotes name their kind
|
|
130
|
+
* while empty; a paragraph invites a command only while focused.
|
|
131
|
+
*/
|
|
132
|
+
export const richTextPlaceholder = (
|
|
133
|
+
{ type, data, focused }: PlaceholderView,
|
|
134
|
+
edytor?: Edytor
|
|
135
|
+
): string | null => {
|
|
136
|
+
const { placeholders } = labelsOf(edytor, 'richText', richTextEnglish);
|
|
137
|
+
if (type === 'heading' || type === 'toggle-heading')
|
|
138
|
+
return placeholders[type === 'heading' ? 'heading' : 'toggleHeading'](
|
|
139
|
+
Number(headingLevel(data.level).slice(1)) as 1 | 2 | 3
|
|
140
|
+
);
|
|
141
|
+
if (Object.hasOwn(NAMED, type)) return placeholders[NAMED[type]!];
|
|
142
|
+
// Code shows nothing in an empty line (Notion).
|
|
143
|
+
if (type === 'codeLine' || !focused) return null;
|
|
144
|
+
return type === 'image' || Object.hasOwn(mediaKinds, type)
|
|
145
|
+
? placeholders.caption
|
|
146
|
+
: placeholders.empty;
|
|
147
|
+
};
|
|
119
148
|
|
|
120
149
|
export type RichTextPluginOptions = {
|
|
121
|
-
/**
|
|
122
|
-
|
|
150
|
+
/** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
|
|
151
|
+
callout?: {
|
|
152
|
+
/**
|
|
153
|
+
* A new callout's icon, and the one a callout whose `data.icon` is
|
|
154
|
+
* unset shows (`💡` by default).
|
|
155
|
+
*/
|
|
156
|
+
icon?: string;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* A to-do's checkbox (default: a native `input type="checkbox"`). Spread
|
|
160
|
+
* `checkbox.attributes` on the control, an `input` (with
|
|
161
|
+
* `checked={checkbox.checked}`) or a `button`: its click checks the to-do
|
|
162
|
+
* through the document.
|
|
163
|
+
*/
|
|
164
|
+
checkbox?: Snippet<[TodoCheckboxPayload]>;
|
|
123
165
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
166
|
+
* A callout's icon (default: a `button` showing it, or the icon alone
|
|
167
|
+
* where it cannot be picked). Spread `icon.attributes` on its element:
|
|
168
|
+
* a click opens the view's picker (`createCalloutIconsPlugin`), which
|
|
169
|
+
* opens under it.
|
|
126
170
|
*/
|
|
127
|
-
|
|
171
|
+
calloutIcon?: Snippet<[CalloutIconPayload]>;
|
|
172
|
+
/**
|
|
173
|
+
* The hint an open toggle's or a callout's empty body shows (default: a
|
|
174
|
+
* `div` with the view's `richText.emptyBody` words). Spread
|
|
175
|
+
* `hint.attributes` on it: a click starts the body, a dragged block
|
|
176
|
+
* drops inside.
|
|
177
|
+
*/
|
|
178
|
+
emptyBody?: Snippet<[EmptyBodyPayload]>;
|
|
128
179
|
};
|
|
129
180
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
'
|
|
141
|
-
|
|
142
|
-
'mod+alt+2': 'block.heading2',
|
|
143
|
-
'mod+alt+3': 'block.heading3',
|
|
144
|
-
'mod+alt+4': 'block.todo-item',
|
|
145
|
-
'mod+alt+5': 'block.bulleted-list-item',
|
|
146
|
-
'mod+alt+6': 'block.numbered-list-item',
|
|
147
|
-
'mod+alt+7': 'block.toggle',
|
|
148
|
-
'mod+alt+8': 'block.code'
|
|
149
|
-
};
|
|
181
|
+
/** Notion's "turn into" chords: Mod+Alt+0 text … 8 code (`block.<type>` command ids, by digit). */
|
|
182
|
+
const TURN_INTO = [
|
|
183
|
+
'paragraph',
|
|
184
|
+
'heading1',
|
|
185
|
+
'heading2',
|
|
186
|
+
'heading3',
|
|
187
|
+
'todo-item',
|
|
188
|
+
'bulleted-list-item',
|
|
189
|
+
'numbered-list-item',
|
|
190
|
+
'toggle',
|
|
191
|
+
'code'
|
|
192
|
+
];
|
|
150
193
|
|
|
151
194
|
/**
|
|
152
|
-
* The rich text kinds and marks,
|
|
153
|
-
*
|
|
195
|
+
* The rich text kinds and marks, their words and slash keywords the
|
|
196
|
+
* view's (`labels`, English by default).
|
|
154
197
|
*/
|
|
155
198
|
export const createRichTextPlugin = (options: RichTextPluginOptions = {}): Plugin => {
|
|
156
|
-
const labels = labelsWith('richText', options.labels);
|
|
157
199
|
const plugin: Plugin = (edytor) => {
|
|
158
|
-
|
|
159
|
-
|
|
200
|
+
const labels = labelsOf(edytor, 'richText', richTextEnglish);
|
|
201
|
+
// The view's default callout icon and its controls' markup: the first rich text plugin listed sets them.
|
|
202
|
+
if (edytor && !calloutIcons.has(edytor)) {
|
|
203
|
+
calloutIcons.set(edytor, options.callout?.icon ?? DEFAULT_CALLOUT_ICON);
|
|
204
|
+
const { checkbox, calloutIcon, emptyBody } = options;
|
|
205
|
+
richTextControls.set(edytor, { checkbox, calloutIcon, emptyBody });
|
|
206
|
+
}
|
|
207
|
+
return richText(edytor, labels, options);
|
|
160
208
|
};
|
|
161
|
-
|
|
162
|
-
return plugin;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
/** A preset whose slash keywords `keywords` may replace, by its command id. */
|
|
166
|
-
const preset = (
|
|
167
|
-
id: string,
|
|
168
|
-
row: KindPreset,
|
|
169
|
-
keywords: RichTextPluginOptions['keywords']
|
|
170
|
-
): KindPreset => {
|
|
171
|
-
const own = keywordsOf(id, row.keywords, keywords);
|
|
172
|
-
return own ? { ...row, keywords: own } : row;
|
|
209
|
+
return branded('richText', plugin);
|
|
173
210
|
};
|
|
174
211
|
|
|
175
|
-
/** The rich text records of `edytor`, in `labels`, its presets' keywords
|
|
212
|
+
/** The rich text records of `edytor`, in `labels`, its presets' keywords the view's. */
|
|
176
213
|
const richText = (
|
|
177
214
|
edytor: Edytor,
|
|
178
|
-
|
|
179
|
-
|
|
215
|
+
labels: RichTextLabels,
|
|
216
|
+
{ callout: calloutOptions, checkbox, calloutIcon, emptyBody }: RichTextPluginOptions
|
|
180
217
|
): ReturnType<Plugin> => {
|
|
218
|
+
const { kinds, marks: words } = labels;
|
|
219
|
+
/** A new callout's icon. */
|
|
220
|
+
const icon = calloutOptions?.icon ?? DEFAULT_CALLOUT_ICON;
|
|
221
|
+
/** The block this view is retyping into a disclosure (`body.open`), until it applied. */
|
|
222
|
+
let retyping: string | null = null;
|
|
223
|
+
/** The disclosures this view created, opened once drawn (`onBlockAttached`). */
|
|
224
|
+
const opening = new Set<string>();
|
|
181
225
|
const presets = (type: string, rows: KindPreset[]) =>
|
|
182
|
-
rows.map((row, index) =>
|
|
226
|
+
rows.map((row, index) => {
|
|
227
|
+
const own = keywordsOf(edytor, presetId(type, index, rows.length), row.keywords);
|
|
228
|
+
return own ? { ...row, keywords: own } : row;
|
|
229
|
+
});
|
|
183
230
|
const operations = richTextOperations(edytor);
|
|
184
231
|
/** The space an autolink types itself: its own insertion is not looked at again. */
|
|
185
232
|
let autolinking = false;
|
|
@@ -228,9 +275,10 @@
|
|
|
228
275
|
});
|
|
229
276
|
},
|
|
230
277
|
...Object.fromEntries(
|
|
231
|
-
|
|
232
|
-
|
|
278
|
+
TURN_INTO.map((type, digit): [string, HotKey] => [
|
|
279
|
+
`mod+alt+${digit}`,
|
|
233
280
|
({ prevent }) => {
|
|
281
|
+
const id = `block.${type}`;
|
|
234
282
|
if (edytor.commands.has(id)) prevent(() => void edytor.runCommand(id));
|
|
235
283
|
}
|
|
236
284
|
])
|
|
@@ -244,7 +292,8 @@
|
|
|
244
292
|
if (!linkable()) return;
|
|
245
293
|
const href = pastedLink(e.clipboardData?.getData('text/plain'));
|
|
246
294
|
if (!href) return;
|
|
247
|
-
const {
|
|
295
|
+
const { startText: text, yStart } = edytor.selection.textRange();
|
|
296
|
+
const { isCollapsed } = edytor.selection.projection;
|
|
248
297
|
if (!isCollapsed)
|
|
249
298
|
return prevent(() =>
|
|
250
299
|
edytor.dispatcher.run('insertFromPaste', () => operations.setLinkAtRange({ href }))
|
|
@@ -253,7 +302,7 @@
|
|
|
253
302
|
prevent(() => {
|
|
254
303
|
const end = yStart + href.length;
|
|
255
304
|
edytor.dispatcher.run('insertFromPaste', () => {
|
|
256
|
-
|
|
305
|
+
edytor.insertText(text.parent.id, text.segStart + yStart, href);
|
|
257
306
|
edytor.dispatcher.caret(text, end);
|
|
258
307
|
});
|
|
259
308
|
if (text.stringContent.slice(yStart, end) === href)
|
|
@@ -264,11 +313,25 @@
|
|
|
264
313
|
// a step of its own after the typing: undo gives the plain text back
|
|
265
314
|
// (`link.autolink.typed`, Notion).
|
|
266
315
|
onBeforeOperation: (change) => {
|
|
316
|
+
// A block without children retyped into a disclosure from another kind (the
|
|
317
|
+
// slash menu, a markdown shortcut, Turn into: their planned `setBlockType`):
|
|
318
|
+
// the toggle it becomes opens on its empty body (`body.open`). One with
|
|
319
|
+
// children keeps them out of sight.
|
|
320
|
+
if (change.operation === 'setBlockType') {
|
|
321
|
+
const [, type] = change.payload;
|
|
322
|
+
const opens =
|
|
323
|
+
DISCLOSURES.has(type) &&
|
|
324
|
+
!DISCLOSURES.has(change.block.type) &&
|
|
325
|
+
!change.block.hasChildren;
|
|
326
|
+
retyping = opens ? change.block.id : null;
|
|
327
|
+
}
|
|
267
328
|
if (autolinking || change.operation !== 'insertText') return;
|
|
268
329
|
const { payload, text, prevent } = change;
|
|
269
|
-
if (payload
|
|
270
|
-
const { startText, yStart
|
|
271
|
-
|
|
330
|
+
if (payload[2] !== ' ' || !linkable()) return;
|
|
331
|
+
const { startText, yStart } = edytor.selection.textRange();
|
|
332
|
+
const { isCollapsed } = edytor.selection.projection;
|
|
333
|
+
if (!isCollapsed || !text || text !== startText) return;
|
|
334
|
+
if (payload[1] !== text.segStart + yStart) return;
|
|
272
335
|
const found = typedLink(text.stringContent.slice(0, yStart));
|
|
273
336
|
const end = found && found.start + found.href.length;
|
|
274
337
|
if (!found || !end) return;
|
|
@@ -279,7 +342,7 @@
|
|
|
279
342
|
prevent(() => {
|
|
280
343
|
autolinking = true;
|
|
281
344
|
try {
|
|
282
|
-
|
|
345
|
+
edytor.insertText(...payload);
|
|
283
346
|
} finally {
|
|
284
347
|
autolinking = false;
|
|
285
348
|
}
|
|
@@ -287,6 +350,17 @@
|
|
|
287
350
|
operations.linkText(text, found.start, end, found.href);
|
|
288
351
|
});
|
|
289
352
|
},
|
|
353
|
+
onAfterOperation: (change) => {
|
|
354
|
+
if (retyping !== change.block.id) return;
|
|
355
|
+
retyping = null;
|
|
356
|
+
if (DISCLOSURES.has(change.block.type)) opening.add(change.block.id);
|
|
357
|
+
},
|
|
358
|
+
// A disclosure this view created opens as it is drawn (the browser owns `open`
|
|
359
|
+
// from then on: the user's to close).
|
|
360
|
+
onBlockAttached: ({ node, block }) => {
|
|
361
|
+
if (!opening.delete(block.id)) return;
|
|
362
|
+
if (node instanceof HTMLDetailsElement) node.open = true;
|
|
363
|
+
},
|
|
290
364
|
// Mod+click on a link opens it in a new tab (`link.mod-click`): a plain
|
|
291
365
|
// click places the caret, as in Notion. Mod is read as the keymap reads
|
|
292
366
|
// it: Meta, or Ctrl off a Mac.
|
|
@@ -300,8 +374,7 @@
|
|
|
300
374
|
event.preventDefault();
|
|
301
375
|
openLink(href, node.ownerDocument.defaultView);
|
|
302
376
|
};
|
|
303
|
-
node
|
|
304
|
-
return () => node.removeEventListener('click', click);
|
|
377
|
+
return listen(node, 'click', click);
|
|
305
378
|
},
|
|
306
379
|
onBeforeInput: ({ e, prevent }) => {
|
|
307
380
|
const { inputType, data } = e;
|
|
@@ -453,7 +526,8 @@
|
|
|
453
526
|
},
|
|
454
527
|
'todo-item': {
|
|
455
528
|
continues: true,
|
|
456
|
-
snippet:
|
|
529
|
+
// The app's control markup, if any, through its own snippet: the default costs no branch.
|
|
530
|
+
snippet: checkbox ? todoItemOwn : todoItem,
|
|
457
531
|
presets: presets('todo-item', [
|
|
458
532
|
{
|
|
459
533
|
label: kinds.todoList,
|
|
@@ -473,7 +547,7 @@
|
|
|
473
547
|
toggle: {
|
|
474
548
|
continues: true,
|
|
475
549
|
container: true,
|
|
476
|
-
snippet: details,
|
|
550
|
+
snippet: emptyBody ? detailsOwn : details,
|
|
477
551
|
...disclosure,
|
|
478
552
|
presets: presets('toggle', [
|
|
479
553
|
{
|
|
@@ -490,7 +564,7 @@
|
|
|
490
564
|
// line is a toggle heading 1.
|
|
491
565
|
'toggle-heading': {
|
|
492
566
|
container: true,
|
|
493
|
-
snippet: details,
|
|
567
|
+
snippet: emptyBody ? detailsOwn : details,
|
|
494
568
|
...disclosure,
|
|
495
569
|
contentElement: (data) => headingLevel(data.level),
|
|
496
570
|
presets: presets(
|
|
@@ -521,12 +595,37 @@
|
|
|
521
595
|
return `<details><summary><${tag}>${content}</${tag}></summary>${children}</details>`;
|
|
522
596
|
}
|
|
523
597
|
},
|
|
598
|
+
// Notion's callout: an icon (`data.icon`, the picker's), a title (its own
|
|
599
|
+
// text) and a content (its children, any blocks), which shows even empty
|
|
600
|
+
// (`body`): Enter at the end of the title goes into it.
|
|
524
601
|
callout: {
|
|
525
602
|
container: true,
|
|
526
|
-
|
|
603
|
+
body: true,
|
|
604
|
+
snippet: calloutIcon || emptyBody ? calloutOwn : callout,
|
|
527
605
|
presets: presets('callout', [
|
|
528
|
-
{ label: kinds.callout, icon: '✦', keywords: ['note', 'tip'], data: { icon
|
|
529
|
-
])
|
|
606
|
+
{ label: kinds.callout, icon: '✦', keywords: ['note', 'tip'], data: { icon } }
|
|
607
|
+
]),
|
|
608
|
+
// The block menu's Change icon, while the view lists a picker: the keyboard's way to it.
|
|
609
|
+
menu: (block) => {
|
|
610
|
+
const picker = calloutPickers.get(edytor);
|
|
611
|
+
return picker
|
|
612
|
+
? [
|
|
613
|
+
{
|
|
614
|
+
id: 'callout.icon',
|
|
615
|
+
label: labels.calloutIcon.change,
|
|
616
|
+
icon: 'block.callout',
|
|
617
|
+
run: () => picker.open(block)
|
|
618
|
+
}
|
|
619
|
+
]
|
|
620
|
+
: [];
|
|
621
|
+
},
|
|
622
|
+
// HTML import: its own export, the icon in its attribute.
|
|
623
|
+
parse: (el) => {
|
|
624
|
+
const own = el.getAttribute('data-edytor-callout');
|
|
625
|
+
return own === null ? undefined : { icon: own };
|
|
626
|
+
},
|
|
627
|
+
html: (block, content, children) =>
|
|
628
|
+
calloutHtml(iconOf(block.data, edytor), content, children)
|
|
530
629
|
},
|
|
531
630
|
quote: {
|
|
532
631
|
container: true,
|
|
@@ -545,7 +644,6 @@
|
|
|
545
644
|
empty: { content: [], children: [] },
|
|
546
645
|
...rule
|
|
547
646
|
},
|
|
548
|
-
details: { snippet: details, ...disclosure },
|
|
549
647
|
'ordered-list': {
|
|
550
648
|
...richTextKinds['ordered-list'],
|
|
551
649
|
itemKind: 'numbered-list-item',
|
|
@@ -560,86 +658,112 @@
|
|
|
560
658
|
element: unlisted('ul'),
|
|
561
659
|
html: 'ul'
|
|
562
660
|
},
|
|
563
|
-
'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' }
|
|
564
|
-
horizontalRule: {
|
|
565
|
-
...richTextKinds.horizontalRule,
|
|
566
|
-
element: 'hr',
|
|
567
|
-
...rule
|
|
568
|
-
}
|
|
661
|
+
'list-item': { snippet: listItem, element: unlisted('li'), html: 'li' }
|
|
569
662
|
}
|
|
570
663
|
};
|
|
571
664
|
};
|
|
572
|
-
|
|
573
|
-
/** The rich text kinds and marks, in English. */
|
|
574
|
-
export const richTextPlugin: Plugin = createRichTextPlugin();
|
|
575
665
|
</script>
|
|
576
666
|
|
|
577
667
|
<!--
|
|
578
668
|
Every kind that has children renders them in one container marked
|
|
579
669
|
`data-edytor-children`: the core indents it by one nesting step
|
|
580
|
-
(`--edytor-nest-indent`), so nesting looks the same under any kind.
|
|
670
|
+
(`--edytor-nest-indent`), so nesting looks the same under any kind. Each
|
|
671
|
+
snippet writes the container itself, with no whitespace between its tags
|
|
672
|
+
(the comments hold the lines; prettier would add whitespace back): a
|
|
673
|
+
nested snippet or a text node between tags is one more node per block for
|
|
674
|
+
the browser to walk (`render.markers`).
|
|
581
675
|
-->
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
{/if}
|
|
588
|
-
{/snippet}
|
|
676
|
+
<!-- prettier-ignore -->
|
|
677
|
+
{#snippet paragraph({ content, children }: BlockSnippetPayload)}<!--
|
|
678
|
+
--><p>{@render content()}</p><!--
|
|
679
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
|
|
680
|
+
-->{/snippet}
|
|
589
681
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
{
|
|
596
|
-
|
|
597
|
-
{#
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
</summary>
|
|
601
|
-
{@render nested(children)}
|
|
602
|
-
{/snippet}
|
|
682
|
+
<!--
|
|
683
|
+
A toggle: its text the `summary`, its children the body; an empty body
|
|
684
|
+
shows its hint, which the browser hides with the body while closed.
|
|
685
|
+
-->
|
|
686
|
+
<!-- prettier-ignore -->
|
|
687
|
+
{#snippet details({ block, content, children }: BlockSnippetPayload)}<!--
|
|
688
|
+
--><summary>{@render content()}</summary><!--
|
|
689
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div><!--
|
|
690
|
+
-->{:else}<EmptyBody {block} kind="toggle" />{/if}<!--
|
|
691
|
+
-->{/snippet}
|
|
603
692
|
|
|
604
693
|
<!--
|
|
605
694
|
A heading's or quote's text (the core wraps it in the kind's `contentElement`,
|
|
606
695
|
its `h1`–`h3` or `blockquote`); its children below, outside that tag, so
|
|
607
696
|
heading styles and the heading's accessible name stop at its own text.
|
|
608
697
|
-->
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
{/
|
|
698
|
+
<!-- prettier-ignore -->
|
|
699
|
+
{#snippet textThenChildren({ content, children }: BlockSnippetPayload)}<!--
|
|
700
|
+
-->{@render content()}<!--
|
|
701
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
|
|
702
|
+
-->{/snippet}
|
|
613
703
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
{
|
|
704
|
+
<!--
|
|
705
|
+
A callout: its icon, its title (its own text), then its content (its
|
|
706
|
+
children), or the hint of an empty one.
|
|
707
|
+
-->
|
|
708
|
+
<!-- prettier-ignore -->
|
|
709
|
+
{#snippet callout({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}<!--
|
|
710
|
+
--><CalloutIcon {block} /><!--
|
|
711
|
+
--><div data-edytor-callout-title>{@render content()}</div><!--
|
|
712
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div><!--
|
|
713
|
+
-->{:else}<EmptyBody {block} kind="callout" />{/if}<!--
|
|
714
|
+
-->{/snippet}
|
|
621
715
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
{/snippet}
|
|
716
|
+
<!-- prettier-ignore -->
|
|
717
|
+
{#snippet todoItem({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
|
|
718
|
+
--><TodoCheckbox {block} /><!--
|
|
719
|
+
--><div>{@render content()}</div><!--
|
|
720
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
|
|
721
|
+
-->{/snippet}
|
|
629
722
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
723
|
+
<!--
|
|
724
|
+
The same kinds, their controls drawn by the app's snippets (`checkbox`,
|
|
725
|
+
`calloutIcon`, `emptyBody`) where it passes them.
|
|
726
|
+
-->
|
|
727
|
+
<!-- prettier-ignore -->
|
|
728
|
+
{#snippet todoItemOwn({ block, content, children }: BlockSnippetPayload<{ checked?: boolean }>)}<!--
|
|
729
|
+
--><RichTextControl {block} control="checkbox" /><!--
|
|
730
|
+
--><div>{@render content()}</div><!--
|
|
731
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
|
|
732
|
+
-->{/snippet}
|
|
733
|
+
|
|
734
|
+
<!-- prettier-ignore -->
|
|
735
|
+
{#snippet detailsOwn({ block, content, children }: BlockSnippetPayload)}<!--
|
|
736
|
+
--><summary>{@render content()}</summary><!--
|
|
737
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div><!--
|
|
738
|
+
-->{:else}<RichTextControl {block} control="toggle" />{/if}<!--
|
|
739
|
+
-->{/snippet}
|
|
740
|
+
|
|
741
|
+
<!-- prettier-ignore -->
|
|
742
|
+
{#snippet calloutOwn({ block, content, children }: BlockSnippetPayload<{ icon?: string }>)}<!--
|
|
743
|
+
--><RichTextControl {block} control="calloutIcon" /><!--
|
|
744
|
+
--><div data-edytor-callout-title>{@render content()}</div><!--
|
|
745
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div><!--
|
|
746
|
+
-->{:else}<RichTextControl {block} control="callout" />{/if}<!--
|
|
747
|
+
-->{/snippet}
|
|
748
|
+
|
|
749
|
+
<!-- prettier-ignore -->
|
|
750
|
+
{#snippet listItem({ content, children }: BlockSnippetPayload)}<!--
|
|
751
|
+
--><div>{@render content()}</div><!--
|
|
752
|
+
-->{#if children}<div data-edytor-children>{@render children()}</div>{/if}<!--
|
|
753
|
+
-->{/snippet}
|
|
634
754
|
|
|
635
755
|
<!--
|
|
636
756
|
A list container (HTML import's `ol`/`ul`) groups its items: they are its
|
|
637
757
|
rows, not blocks nested under its text, so its wrapper is not indented.
|
|
638
758
|
-->
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
759
|
+
<!-- prettier-ignore -->
|
|
760
|
+
{#snippet list({ children }: BlockSnippetPayload)}<!--
|
|
761
|
+
-->{#if children}<div>{@render children()}</div>{/if}<!--
|
|
762
|
+
-->{/snippet}
|
|
763
|
+
|
|
764
|
+
<style>
|
|
765
|
+
/* An empty body's hint: chrome, not text (`body.hint`); its look is a theme's. */
|
|
766
|
+
:global([data-edytor-empty-body]) {
|
|
767
|
+
user-select: none;
|
|
768
|
+
}
|
|
769
|
+
</style>
|
|
@@ -1,33 +1,52 @@
|
|
|
1
1
|
import type { Plugin, PlaceholderView } from '../../plugins.js';
|
|
2
|
+
import type { Edytor } from '../../edytor.svelte.js';
|
|
2
3
|
import { richTextOperations } from './richTextOperations.js';
|
|
3
|
-
import {
|
|
4
|
+
import type { Snippet } from 'svelte';
|
|
5
|
+
import { type CalloutIconPayload, type EmptyBodyPayload, type TodoCheckboxPayload } from './controls.svelte.js';
|
|
6
|
+
export type { CalloutIconPayload, EmptyBodyPayload, TodoCheckboxPayload };
|
|
4
7
|
export { richTextOperations };
|
|
5
8
|
/**
|
|
6
|
-
* Notion's placeholders in `
|
|
7
|
-
* lists, to-dos, toggles and quotes name their kind
|
|
8
|
-
* paragraph invites a command only while focused.
|
|
9
|
+
* Notion's placeholders, in the view's `richText` labels (English by
|
|
10
|
+
* default): headings, lists, to-dos, toggles and quotes name their kind
|
|
11
|
+
* while empty; a paragraph invites a command only while focused.
|
|
9
12
|
*/
|
|
10
|
-
export declare const
|
|
11
|
-
/** Notion's placeholders, in English. */
|
|
12
|
-
export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView) => string | null;
|
|
13
|
+
export declare const richTextPlaceholder: ({ type, data, focused }: PlaceholderView, edytor?: Edytor) => string | null;
|
|
13
14
|
export type RichTextPluginOptions = {
|
|
14
|
-
/**
|
|
15
|
-
|
|
15
|
+
/** Callouts' icons (their picker is `createCalloutIconsPlugin`'s). */
|
|
16
|
+
callout?: {
|
|
17
|
+
/**
|
|
18
|
+
* A new callout's icon, and the one a callout whose `data.icon` is
|
|
19
|
+
* unset shows (`💡` by default).
|
|
20
|
+
*/
|
|
21
|
+
icon?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A to-do's checkbox (default: a native `input type="checkbox"`). Spread
|
|
25
|
+
* `checkbox.attributes` on the control, an `input` (with
|
|
26
|
+
* `checked={checkbox.checked}`) or a `button`: its click checks the to-do
|
|
27
|
+
* through the document.
|
|
28
|
+
*/
|
|
29
|
+
checkbox?: Snippet<[TodoCheckboxPayload]>;
|
|
30
|
+
/**
|
|
31
|
+
* A callout's icon (default: a `button` showing it, or the icon alone
|
|
32
|
+
* where it cannot be picked). Spread `icon.attributes` on its element:
|
|
33
|
+
* a click opens the view's picker (`createCalloutIconsPlugin`), which
|
|
34
|
+
* opens under it.
|
|
35
|
+
*/
|
|
36
|
+
calloutIcon?: Snippet<[CalloutIconPayload]>;
|
|
16
37
|
/**
|
|
17
|
-
* The
|
|
18
|
-
*
|
|
38
|
+
* The hint an open toggle's or a callout's empty body shows (default: a
|
|
39
|
+
* `div` with the view's `richText.emptyBody` words). Spread
|
|
40
|
+
* `hint.attributes` on it: a click starts the body, a dragged block
|
|
41
|
+
* drops inside.
|
|
19
42
|
*/
|
|
20
|
-
|
|
43
|
+
emptyBody?: Snippet<[EmptyBodyPayload]>;
|
|
21
44
|
};
|
|
22
|
-
/** Recognize any rich text plugin instance (the component's default yields to yours). */
|
|
23
|
-
export declare const isRichTextPlugin: (plugin: Plugin) => boolean;
|
|
24
45
|
/**
|
|
25
|
-
* The rich text kinds and marks,
|
|
26
|
-
*
|
|
46
|
+
* The rich text kinds and marks, their words and slash keywords the
|
|
47
|
+
* view's (`labels`, English by default).
|
|
27
48
|
*/
|
|
28
49
|
export declare const createRichTextPlugin: (options?: RichTextPluginOptions) => Plugin;
|
|
29
|
-
/** The rich text kinds and marks, in English. */
|
|
30
|
-
export declare const richTextPlugin: Plugin;
|
|
31
50
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
32
51
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
33
52
|
$$bindings?: Bindings;
|