edytor 1.0.0-rc.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -39
- package/dist/block/block.svelte.d.ts +11 -84
- package/dist/block/block.svelte.js +30 -134
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +11 -9
- package/dist/block/inlineBlock.svelte.js +18 -21
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.js +7 -7
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +4 -17
- package/dist/cloudflare/DocumentRoom.js +3 -5
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +25 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +3 -32
- package/dist/cloudflare/room/storage.js +33 -108
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/awarenessSelection.d.ts +22 -1
- package/dist/collaboration/awarenessSelection.js +42 -0
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +42 -56
- package/dist/components/Block.svelte.d.ts +7 -5
- package/dist/components/Content.svelte +1 -5
- package/dist/components/Edytor.svelte +82 -99
- package/dist/components/Edytor.svelte.d.ts +16 -13
- package/dist/components/InlineBlock.svelte +1 -1
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +2 -5
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +18 -13
- package/dist/crdt/data.js +49 -71
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +8 -5
- package/dist/crdt/doc/reads.js +49 -50
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +32 -115
- package/dist/crdt/document.js +216 -302
- package/dist/crdt/edytor-doc.d.ts +689 -90
- package/dist/crdt/edytor-doc.js +74 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +32 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +8 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/props.d.ts +32 -0
- package/dist/crdt/props.js +172 -0
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/dnd/autoScroll.js +1 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.d.ts +2 -2
- package/dist/{plugins/blockHandles → dnd}/dropIndicator.js +52 -60
- package/dist/{plugins/blockHandles → dnd}/geometry.d.ts +4 -3
- package/dist/{plugins/blockHandles → dnd}/geometry.js +6 -6
- package/dist/dnd/placement.d.ts +200 -0
- package/dist/dnd/placement.js +426 -0
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +46 -63
- package/dist/edytor.svelte.js +126 -181
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -181
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +64 -78
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +45 -67
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +14 -1
- package/dist/events/onPaste.js +51 -76
- package/dist/index.d.ts +11 -15
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +83 -320
- package/dist/labels.js +181 -408
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -154
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +21 -196
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +158 -573
- package/dist/plugins/blockHandles/BlockHandles.svelte +15 -23
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +25 -39
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -185
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +18 -16
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +28 -38
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +116 -183
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +45 -38
- package/dist/plugins/chrome.js +59 -36
- package/dist/plugins/code/CodeHeader.svelte +8 -38
- package/dist/plugins/code/CodePlugin.svelte +53 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +16 -125
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +2 -1
- package/dist/plugins/code/code.css +5 -117
- package/dist/plugins/code/header.svelte.d.ts +2 -11
- package/dist/plugins/code/header.svelte.js +11 -38
- package/dist/plugins/code/languageMenu.svelte.d.ts +12 -32
- package/dist/plugins/code/languageMenu.svelte.js +30 -160
- package/dist/plugins/code/languages.d.ts +9 -22
- package/dist/plugins/code/languages.js +39 -128
- package/dist/plugins/columns/ColumnResize.svelte +16 -27
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/gaps.d.ts +7 -5
- package/dist/plugins/columns/gaps.js +11 -6
- package/dist/plugins/columns/resize.svelte.d.ts +17 -54
- package/dist/plugins/columns/resize.svelte.js +80 -173
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -431
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +4 -2
- package/dist/plugins/comments/commentsPlugin.d.ts +25 -9
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +16 -130
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +1 -2
- package/dist/plugins/equation/EquationPlugin.svelte +109 -172
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +3 -2
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.css +7 -0
- package/dist/plugins/equation/equation.svelte.d.ts +37 -24
- package/dist/plugins/equation/equation.svelte.js +20 -94
- package/dist/plugins/equation/katex.js +6 -9
- package/dist/plugins/fileDrop.d.ts +28 -0
- package/dist/plugins/fileDrop.js +116 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +6 -167
- package/dist/plugins/image/ImageChrome.svelte.d.ts +0 -2
- package/dist/plugins/image/ImagePlugin.svelte +71 -151
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +12 -41
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -36
- package/dist/plugins/image/controls.svelte.js +43 -212
- package/dist/plugins/image/image.css +17 -0
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +30 -26
- package/dist/plugins/index.js +28 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +10 -9
- package/dist/plugins/marquee/MarqueeBox.svelte +3 -20
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +1 -1
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +0 -2
- package/dist/plugins/marquee/MarqueeController.svelte.js +20 -23
- package/dist/plugins/marquee/marquee.js +4 -21
- package/dist/plugins/marquee/marqueePlugin.d.ts +4 -3
- package/dist/plugins/marquee/marqueePlugin.js +16 -15
- package/dist/plugins/media/AudioPlugin.svelte +13 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +11 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +113 -120
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +10 -15
- package/dist/plugins/media/EmbedPlugin.svelte +82 -86
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +11 -17
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +45 -113
- package/dist/plugins/media/FilePlugin.svelte.d.ts +21 -4
- package/dist/plugins/media/MediaEmpty.svelte +51 -90
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +200 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +34 -0
- package/dist/plugins/media/UploadPreview.svelte +32 -0
- package/dist/plugins/media/UploadPreview.svelte.d.ts +11 -0
- package/dist/plugins/media/VideoPlugin.svelte +14 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +12 -5
- package/dist/plugins/media/empty.svelte.d.ts +47 -46
- package/dist/plugins/media/empty.svelte.js +67 -60
- package/dist/plugins/media/media.d.ts +97 -44
- package/dist/plugins/media/media.js +77 -99
- package/dist/plugins/media/upload.css +23 -0
- package/dist/plugins/media/urlPaste.svelte.d.ts +6 -37
- package/dist/plugins/media/urlPaste.svelte.js +32 -102
- package/dist/plugins/mention/MentionPlugin.svelte +84 -126
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +17 -27
- package/dist/plugins/mention/mention.css +6 -0
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +154 -109
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +19 -26
- package/dist/plugins/pageLink/pageLink.css +6 -0
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +13 -26
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +13 -20
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +174 -183
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +34 -34
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.js +2 -2
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +50 -55
- package/dist/plugins/richtext/calloutIcons.svelte.js +86 -174
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/richtext/richtext.css +6 -0
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +2 -14
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +34 -71
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +9 -26
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +27 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -18
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +40 -124
- package/dist/plugins/table/TablePlugin.svelte +106 -168
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +38 -141
- package/dist/plugins/table/chrome.svelte.js +340 -589
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +16 -152
- package/dist/plugins/table/table.d.ts +15 -14
- package/dist/plugins/table/table.js +22 -16
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +4 -68
- package/dist/plugins/toolbar/ToolbarController.svelte.js +63 -89
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +8 -18
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +4 -68
- package/dist/plugins/triggers/TriggerController.svelte.js +48 -129
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +55 -24
- package/dist/plugins/uploads.svelte.js +123 -50
- package/dist/plugins.d.ts +187 -66
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +8 -10
- package/dist/selection/pointer.svelte.js +32 -73
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +224 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +3 -8
- package/dist/selection/visibility.js +7 -5
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +43 -39
- package/dist/session/attempt.js +62 -55
- package/dist/session/bindings.js +117 -145
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +208 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +16 -21
- package/dist/session/inputRules.d.ts +6 -3
- package/dist/session/inputRules.js +78 -83
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +43 -10
- package/dist/session/moves.js +101 -59
- package/dist/session/navigation.d.ts +10 -2
- package/dist/session/navigation.js +140 -172
- package/dist/session/ports.d.ts +2 -7
- package/dist/session/props.d.ts +25 -25
- package/dist/session/props.js +62 -159
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +5 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +42 -47
- package/dist/session/uploads.d.ts +29 -0
- package/dist/session/uploads.js +10 -0
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +2 -2
- package/dist/surface/lines.js +1 -1
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +52 -72
- package/dist/surface/overlay.d.ts +41 -3
- package/dist/surface/overlay.js +92 -37
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +272 -106
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -554
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -61
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -335
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -93
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -15
- package/dist/plugins/image/empty.svelte.d.ts +0 -56
- package/dist/plugins/image/empty.svelte.js +0 -83
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -92
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/CalloutIconMenu.svelte +0 -98
- package/dist/plugins/richtext/CalloutIconMenu.svelte.d.ts +0 -9
- package/dist/plugins/richtext/labels.d.ts +0 -9
- package/dist/plugins/richtext/labels.js +0 -7
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -276
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/table/dragPreview.d.ts +0 -29
- package/dist/plugins/table/dragPreview.js +0 -103
- package/dist/plugins/toolbar/LinkCard.svelte +0 -122
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -9
- package/dist/plugins/toolbar/Toolbar.svelte +0 -349
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -135
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
- /package/dist/{plugins/columns → dnd}/stacking.d.ts +0 -0
- /package/dist/{plugins/columns → dnd}/stacking.js +0 -0
|
@@ -35,22 +35,23 @@
|
|
|
35
35
|
const previewViewOf = (cell: PreviewCell): BlockView => ({
|
|
36
36
|
id: cell.id,
|
|
37
37
|
type: cell.type,
|
|
38
|
-
|
|
38
|
+
get data() {
|
|
39
|
+
return structuredClone(cell.data ?? {});
|
|
40
|
+
},
|
|
39
41
|
selected: false,
|
|
40
42
|
focused: false,
|
|
41
43
|
handle: undefined,
|
|
42
44
|
void: voidChrome
|
|
43
45
|
});
|
|
44
46
|
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
+
/**
|
|
48
|
+
* A child in the flow: a block's id, a block suggestion's preview in the
|
|
49
|
+
* flow among its siblings (in place of a block), or a suggestion's own
|
|
50
|
+
* block, rendered from its preview cell, never registered (`Suggestion`).
|
|
51
|
+
*/
|
|
52
|
+
export type Kid = string | Suggestion | PreviewCell;
|
|
47
53
|
const kidKey = (kid: Kid) =>
|
|
48
54
|
typeof kid === 'string' || kid instanceof Suggestion ? kid : kid.id;
|
|
49
|
-
const idOf = (kid: Kid) =>
|
|
50
|
-
typeof kid === 'string' ? kid : kid instanceof Suggestion ? undefined : kid.id;
|
|
51
|
-
const previewOf = (kid: Kid) =>
|
|
52
|
-
typeof kid === 'string' || kid instanceof Suggestion ? undefined : kid;
|
|
53
|
-
const suggestionOf = (kid: Kid) => (kid instanceof Suggestion ? kid : undefined);
|
|
54
55
|
|
|
55
56
|
/** Tags that take no content: the kind renders the element only. */
|
|
56
57
|
const VOID_TAGS = new Set(['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'wbr']);
|
|
@@ -93,20 +94,15 @@
|
|
|
93
94
|
import Child from './Block.svelte';
|
|
94
95
|
import Content from './Content.svelte';
|
|
95
96
|
import SuggestionPreview from './Suggestion.svelte';
|
|
96
|
-
import { blockDir, ownText } from '../surface/attributes.js';
|
|
97
|
+
import { blockDir, ownText, type Owned } from '../surface/attributes.js';
|
|
97
98
|
import { colorAttributes } from '../block/colors.js';
|
|
98
99
|
|
|
99
|
-
let {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
suggestion
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
/** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
|
|
106
|
-
preview?: PreviewCell;
|
|
107
|
-
/** A block suggestion's preview in the flow among its siblings, in place of a block. */
|
|
108
|
-
suggestion?: Suggestion;
|
|
109
|
-
} = $props();
|
|
100
|
+
let { kid }: { kid: Kid } = $props();
|
|
101
|
+
const suggestion = $derived(kid instanceof Suggestion ? kid : undefined);
|
|
102
|
+
const preview = $derived(
|
|
103
|
+
typeof kid === 'string' || suggestion ? undefined : (kid as PreviewCell)
|
|
104
|
+
);
|
|
105
|
+
const id = $derived(typeof kid === 'string' ? kid : preview?.id);
|
|
110
106
|
|
|
111
107
|
const edytor = getContext<Edytor>('edytor');
|
|
112
108
|
// The structure renders from the cell; the snippet receives a view object.
|
|
@@ -142,20 +138,18 @@
|
|
|
142
138
|
? elementOf(definition.contentElement, cell?.data, id)
|
|
143
139
|
: undefined
|
|
144
140
|
);
|
|
145
|
-
/** Its direction from its own text (`blockDir`, bidi): none in a preview. */
|
|
146
|
-
const dir = $derived(preview ? null : blockDir(ownText(cell?.runs ?? [])));
|
|
147
141
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
142
|
+
* Registers the block element (one element per block, re-registered when
|
|
143
|
+
* the tag changes) with what it owns: the core's attributes below, not
|
|
144
|
+
* the kind's (`surface/attributes.ts` heals them).
|
|
150
145
|
*/
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const register = (node: HTMLElement) => block?.handle?.attach(node);
|
|
146
|
+
const register = (node: HTMLElement) =>
|
|
147
|
+
block?.handle?.attach(node, (): Owned => {
|
|
148
|
+
const owned: Record<string, string | null> = {};
|
|
149
|
+
for (const [name, value] of Object.entries(attributes ?? {}))
|
|
150
|
+
if (!(name in (element?.attributes ?? {}))) owned[name] = (value as string) ?? null;
|
|
151
|
+
return { strict: false, owned, style: userSelect ? { 'user-select': userSelect } : {} };
|
|
152
|
+
});
|
|
159
153
|
/**
|
|
160
154
|
* Whether the selection holds this block, and whether it touches it: one
|
|
161
155
|
* boolean each, read from the block's own membership (`isSelected`,
|
|
@@ -184,7 +178,9 @@
|
|
|
184
178
|
'data-edytor-selected': selected ? 'true' : undefined,
|
|
185
179
|
'data-edytor-focused': focused ? 'true' : undefined,
|
|
186
180
|
'data-edytor-suggestion-replaced': shown ? (replacedMark(shown) ?? undefined) : undefined,
|
|
187
|
-
contenteditable: definition?.void ? ('false' as const) : undefined
|
|
181
|
+
contenteditable: definition?.void ? ('false' as const) : undefined,
|
|
182
|
+
// Its direction from its own text (`blockDir`, bidi), absent without one: none in a preview.
|
|
183
|
+
dir: (!preview && blockDir(ownText(cell?.runs ?? []))) || undefined
|
|
188
184
|
}
|
|
189
185
|
);
|
|
190
186
|
const userSelect = $derived(definition?.void ? 'none' : undefined);
|
|
@@ -199,9 +195,11 @@
|
|
|
199
195
|
|
|
200
196
|
// The kind `content()` last rendered under — read after each render.
|
|
201
197
|
let contentRenderedFor: string | undefined;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
198
|
+
// Development only: production keeps no effect per block for it.
|
|
199
|
+
if (DEV)
|
|
200
|
+
$effect(() => {
|
|
201
|
+
if (block?.handle) checkRendersContent(block.handle, contentRenderedFor === cell?.type);
|
|
202
|
+
});
|
|
205
203
|
</script>
|
|
206
204
|
|
|
207
205
|
<!--
|
|
@@ -235,7 +233,7 @@
|
|
|
235
233
|
{/snippet}<!--
|
|
236
234
|
-->{#snippet children()}
|
|
237
235
|
{#each kids as kid (kidKey(kid))}
|
|
238
|
-
<Child
|
|
236
|
+
<Child {kid} />
|
|
239
237
|
{/each}
|
|
240
238
|
{/snippet}<!--
|
|
241
239
|
A kind this view does not register: a plain block, its text and children.
|
|
@@ -255,39 +253,27 @@
|
|
|
255
253
|
-->{#if suggestion}
|
|
256
254
|
<SuggestionPreview {suggestion} />
|
|
257
255
|
{:else if tag === 'div'}
|
|
258
|
-
<div {...attributes} style:user-select={userSelect} use:register
|
|
256
|
+
<div {...attributes} style:user-select={userSelect} use:register>
|
|
259
257
|
{@render body?.(payload)}
|
|
260
258
|
</div>
|
|
261
259
|
{:else if tag === 'li'}
|
|
262
|
-
<li {...attributes} style:user-select={userSelect} use:register
|
|
260
|
+
<li {...attributes} style:user-select={userSelect} use:register>
|
|
263
261
|
{@render body?.(payload)}
|
|
264
262
|
</li>
|
|
265
263
|
{:else if tag === 'details'}
|
|
266
|
-
<details {...attributes} style:user-select={userSelect} use:register
|
|
264
|
+
<details {...attributes} style:user-select={userSelect} use:register>
|
|
267
265
|
{@render body?.(payload)}
|
|
268
266
|
</details>
|
|
269
267
|
{:else if tag === 'figure'}
|
|
270
|
-
<figure {...attributes} style:user-select={userSelect} use:register
|
|
268
|
+
<figure {...attributes} style:user-select={userSelect} use:register>
|
|
271
269
|
{@render body?.(payload)}
|
|
272
270
|
</figure>
|
|
273
271
|
{:else if tag === 'hr'}
|
|
274
|
-
<hr {...attributes} style:user-select={userSelect} use:register
|
|
272
|
+
<hr {...attributes} style:user-select={userSelect} use:register />
|
|
275
273
|
{:else if tag && VOID_TAGS.has(tag)}
|
|
276
|
-
<svelte:element
|
|
277
|
-
this={tag}
|
|
278
|
-
{...attributes}
|
|
279
|
-
style:user-select={userSelect}
|
|
280
|
-
use:register
|
|
281
|
-
use:direction={dir}
|
|
282
|
-
/>
|
|
274
|
+
<svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register />
|
|
283
275
|
{:else if tag}
|
|
284
|
-
<svelte:element
|
|
285
|
-
this={tag}
|
|
286
|
-
{...attributes}
|
|
287
|
-
style:user-select={userSelect}
|
|
288
|
-
use:register
|
|
289
|
-
use:direction={dir}
|
|
290
|
-
>
|
|
276
|
+
<svelte:element this={tag} {...attributes} style:user-select={userSelect} use:register>
|
|
291
277
|
{@render body?.(payload)}
|
|
292
278
|
</svelte:element>
|
|
293
279
|
{/if}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { PreviewCell } from '../surface/cells.js';
|
|
2
2
|
import { Suggestion } from '../session/suggestions.svelte.js';
|
|
3
|
+
/**
|
|
4
|
+
* A child in the flow: a block's id, a block suggestion's preview in the
|
|
5
|
+
* flow among its siblings (in place of a block), or a suggestion's own
|
|
6
|
+
* block, rendered from its preview cell, never registered (`Suggestion`).
|
|
7
|
+
*/
|
|
8
|
+
export type Kid = string | Suggestion | PreviewCell;
|
|
3
9
|
type $$ComponentProps = {
|
|
4
|
-
|
|
5
|
-
/** A suggestion's block: rendered from its preview cell, never registered (`Suggestion`). */
|
|
6
|
-
preview?: PreviewCell;
|
|
7
|
-
/** A block suggestion's preview in the flow among its siblings, in place of a block. */
|
|
8
|
-
suggestion?: Suggestion;
|
|
10
|
+
kid: Kid;
|
|
9
11
|
};
|
|
10
12
|
declare const Block: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
13
|
type Block = ReturnType<typeof Block>;
|
|
@@ -51,11 +51,7 @@
|
|
|
51
51
|
/** Segments are keyed causally (the preceding atom's id, or `start`), never by ordinal. */
|
|
52
52
|
const keyOf = (part: Part) => (part.kind === 'text' ? `s:${part.key}:${epoch}` : `a:${part.id}`);
|
|
53
53
|
|
|
54
|
-
const view = (segment: Segment) =>
|
|
55
|
-
edytor.pin.render(id, segment.key) ?? {
|
|
56
|
-
deltas: segmentDeltas(cell!, segment, transform),
|
|
57
|
-
empty: segment.text === ''
|
|
58
|
-
};
|
|
54
|
+
const view = (segment: Segment) => edytor.pin.shown(cell!, segment, transform);
|
|
59
55
|
|
|
60
56
|
/** A suggestion's text after this block's (`end`): its first block's content. */
|
|
61
57
|
const ghosts = $derived(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// `EdytorClass` alias: the emitted `.svelte.d.ts` also declares `Edytor`
|
|
3
3
|
// (the component + its bindable instance type) — an unaliased import
|
|
4
4
|
// collides there (TS2440 for bundler-resolution consumers).
|
|
5
|
-
import { Edytor as EdytorClass, useEdytor
|
|
5
|
+
import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
|
|
6
6
|
import {
|
|
7
7
|
SyncRefusedError,
|
|
8
8
|
type Awareness,
|
|
@@ -19,43 +19,22 @@
|
|
|
19
19
|
} from '../collaboration/awarenessSelection.js';
|
|
20
20
|
import { createIndexeddbSync, createWebsocketSync } from '../collaboration/providers.js';
|
|
21
21
|
export { EdytorClass as EdytorContext, useEdytor };
|
|
22
|
-
import type {
|
|
22
|
+
import type { Plugin } from '../plugins.js';
|
|
23
|
+
import { brandOf } from '../plugins/brand.js';
|
|
23
24
|
import type { PartialLabels } from '../labels.js';
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
createBlockHandlesPlugin,
|
|
27
|
-
isBlockHandlesPlugin,
|
|
28
|
-
type BlockHandlesOptions
|
|
29
|
-
} from '../plugins/blockHandles/blockHandlesPlugin.js';
|
|
30
|
-
import { isRichTextPlugin, richTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
|
|
31
|
-
import { arrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
|
|
32
|
-
import { imagePlugin, isImagePlugin } from '../plugins/image/ImagePlugin.svelte';
|
|
33
|
-
import {
|
|
34
|
-
isSuggestionsPlugin,
|
|
35
|
-
suggestionsPlugin
|
|
36
|
-
} from '../plugins/suggestions/suggestionsPlugin.js';
|
|
25
|
+
import { createRichTextPlugin } from '../plugins/richtext/RichTextPlugin.svelte';
|
|
26
|
+
import { createSuggestionsPlugin } from '../plugins/suggestions/suggestionsPlugin.js';
|
|
37
27
|
|
|
38
28
|
/**
|
|
39
|
-
* The plugins every view has unless it lists
|
|
29
|
+
* The plugins every view has unless it lists one of their kind (or sets
|
|
40
30
|
* `defaultPlugins={false}`), after the app's so its kinds and keys win:
|
|
41
|
-
*
|
|
42
|
-
|
|
43
|
-
const withDefaults = (plugins: Plugin[] = []): Plugin[] => [
|
|
44
|
-
...plugins,
|
|
45
|
-
...(plugins.includes(arrowMovePlugin) ? [] : [arrowMovePlugin]),
|
|
46
|
-
...(plugins.some(isSuggestionsPlugin) ? [] : [suggestionsPlugin]),
|
|
47
|
-
...(plugins.some(isImagePlugin) ? [] : [imagePlugin]),
|
|
48
|
-
...(plugins.some(isRichTextPlugin) ? [] : [richTextPlugin])
|
|
49
|
-
];
|
|
50
|
-
/**
|
|
51
|
-
* The handles: none with `false`, the configured ones (replacing any
|
|
52
|
-
* listed) with options, else the listed ones or the default, first.
|
|
31
|
+
* the suggestion UI, then rich text (an app lists `createArrowMovePlugin()`
|
|
32
|
+
* for block moves and `createImagePlugin({ upload })` for images itself).
|
|
53
33
|
*/
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return plugins?.some(isBlockHandlesPlugin) ? plugins : [blockHandlesPlugin, ...(plugins ?? [])];
|
|
34
|
+
const DEFAULTS = [createSuggestionsPlugin(), createRichTextPlugin()];
|
|
35
|
+
const withDefaults = (plugins: Plugin[] = []): Plugin[] => {
|
|
36
|
+
const listed = new Set(plugins.map(brandOf));
|
|
37
|
+
return [...plugins, ...DEFAULTS.filter((plugin) => !listed.has(brandOf(plugin)))];
|
|
59
38
|
};
|
|
60
39
|
/**
|
|
61
40
|
* The sync of a room id no dial can carry (`validRoomId`): no socket, the
|
|
@@ -80,11 +59,9 @@
|
|
|
80
59
|
children: []
|
|
81
60
|
};
|
|
82
61
|
|
|
83
|
-
export type EdytorProps =
|
|
62
|
+
export type EdytorProps = {
|
|
84
63
|
plugins?: Plugin[];
|
|
85
|
-
/**
|
|
86
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
87
|
-
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
64
|
+
/** Add rich text and the suggestion UI unless `plugins` lists them (default `true`). */
|
|
88
65
|
defaultPlugins?: boolean;
|
|
89
66
|
class?: string;
|
|
90
67
|
/** The root textbox's accessible name (or name it with `aria-labelledby`). */
|
|
@@ -100,7 +77,7 @@
|
|
|
100
77
|
document?: EdytorDocument;
|
|
101
78
|
doc?: YDoc;
|
|
102
79
|
awareness?: Awareness;
|
|
103
|
-
/** The local author (id, name, color) of the document this view owns:
|
|
80
|
+
/** The local author (id, name, color) of the document this view owns: attribution and presence. */
|
|
104
81
|
actor?: DocumentActor;
|
|
105
82
|
/**
|
|
106
83
|
* What this view shares of its selection with peers (`share`: `'caret'`,
|
|
@@ -113,6 +90,13 @@
|
|
|
113
90
|
* the connection.
|
|
114
91
|
*/
|
|
115
92
|
readonly?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Let users nest blocks (default `false`): Tab and Shift+Tab nest and
|
|
95
|
+
* unnest, drops and handle keys may place a block inside another. Off,
|
|
96
|
+
* Tab is left to the browser and no gesture nests; containers keep their
|
|
97
|
+
* bodies. Read once.
|
|
98
|
+
*/
|
|
99
|
+
allowNesting?: boolean;
|
|
116
100
|
/** Chords (`mod+s`, `shift+alt+enter`) the view binds before plugins and built-ins. Read once. */
|
|
117
101
|
hotkeys?: Partial<Record<HotKeyCombination, HotKey>>;
|
|
118
102
|
/** After every commit that changed the visible document: a `JSONDoc`, the type `value` takes. */
|
|
@@ -125,13 +109,12 @@
|
|
|
125
109
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
126
110
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
127
111
|
value?: JSONDoc;
|
|
128
|
-
placeholder?: Placeholder;
|
|
129
112
|
/**
|
|
130
|
-
* The words the
|
|
131
|
-
*
|
|
132
|
-
*
|
|
113
|
+
* The words the package shows and says in this view, over the English
|
|
114
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
115
|
+
* the commands' slash `keywords` by id. Read once.
|
|
133
116
|
*/
|
|
134
|
-
labels?: PartialLabels
|
|
117
|
+
labels?: PartialLabels;
|
|
135
118
|
translate?: 'yes' | 'no';
|
|
136
119
|
spellcheck?: boolean;
|
|
137
120
|
autocorrect?: 'on' | 'off';
|
|
@@ -195,7 +178,6 @@
|
|
|
195
178
|
|
|
196
179
|
let {
|
|
197
180
|
plugins: userPlugins,
|
|
198
|
-
blockHandles,
|
|
199
181
|
defaultPlugins = true,
|
|
200
182
|
class: className,
|
|
201
183
|
'aria-label': ariaLabel,
|
|
@@ -207,6 +189,7 @@
|
|
|
207
189
|
document: edytorDocument,
|
|
208
190
|
doc,
|
|
209
191
|
readonly = false,
|
|
192
|
+
allowNesting = false,
|
|
210
193
|
value = defaultValue,
|
|
211
194
|
hotkeys,
|
|
212
195
|
sync,
|
|
@@ -223,7 +206,6 @@
|
|
|
223
206
|
onChange,
|
|
224
207
|
onDocChange,
|
|
225
208
|
onSelectionChange,
|
|
226
|
-
placeholder,
|
|
227
209
|
labels,
|
|
228
210
|
translate = 'no',
|
|
229
211
|
spellcheck = true,
|
|
@@ -231,17 +213,13 @@
|
|
|
231
213
|
autocomplete = 'off',
|
|
232
214
|
autocapitalize = 'none',
|
|
233
215
|
inputmode,
|
|
234
|
-
enterkeyhint
|
|
235
|
-
...snippets
|
|
216
|
+
enterkeyhint
|
|
236
217
|
}: EdytorProps = $props();
|
|
237
218
|
|
|
238
219
|
const initialEdytorOptions = untrack(() => ({
|
|
239
|
-
snippets,
|
|
240
220
|
readonly,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
blockHandles ?? true
|
|
244
|
-
),
|
|
221
|
+
allowNesting,
|
|
222
|
+
plugins: defaultPlugins ? withDefaults(userPlugins) : userPlugins,
|
|
245
223
|
document: edytorDocument,
|
|
246
224
|
doc,
|
|
247
225
|
awareness,
|
|
@@ -253,7 +231,6 @@
|
|
|
253
231
|
onDocChange,
|
|
254
232
|
sync: !!sync || room !== undefined,
|
|
255
233
|
value,
|
|
256
|
-
placeholder,
|
|
257
234
|
labels
|
|
258
235
|
}));
|
|
259
236
|
|
|
@@ -354,25 +331,13 @@
|
|
|
354
331
|
$effect(edytor.surface.post);
|
|
355
332
|
$effect(edytor.projector.post);
|
|
356
333
|
|
|
357
|
-
const browserMutationGuardAttributes = $derived({
|
|
358
|
-
spellcheck,
|
|
359
|
-
autocorrect,
|
|
360
|
-
autocomplete,
|
|
361
|
-
autocapitalize,
|
|
362
|
-
inputmode,
|
|
363
|
-
enterkeyhint
|
|
364
|
-
});
|
|
365
|
-
|
|
366
334
|
/**
|
|
367
|
-
* The root's browser
|
|
368
|
-
*
|
|
369
|
-
*
|
|
335
|
+
* The root's browser hints, several of them unknown to Svelte's element
|
|
336
|
+
* types; one left unset is absent (a guessed default would override the
|
|
337
|
+
* browser's own choice).
|
|
370
338
|
*/
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
attributes: typeof browserMutationGuardAttributes
|
|
374
|
-
) => {
|
|
375
|
-
const apply = (next: typeof attributes) => {
|
|
339
|
+
const browserAttributes = (node: HTMLElement, attributes: Record<string, unknown>) => {
|
|
340
|
+
const apply = (next: Record<string, unknown>) => {
|
|
376
341
|
for (const [name, value] of Object.entries(next))
|
|
377
342
|
if (value === undefined) node.removeAttribute(name);
|
|
378
343
|
else node.setAttribute(name, String(value));
|
|
@@ -380,28 +345,25 @@
|
|
|
380
345
|
apply(attributes);
|
|
381
346
|
return { update: apply };
|
|
382
347
|
};
|
|
383
|
-
|
|
384
|
-
const nonNativeEditableBlockChromeSelection = (node: HTMLElement) => {
|
|
385
|
-
const { selection } = edytor;
|
|
386
|
-
// `selectstart` is the only event fired before a drag-selection
|
|
387
|
-
// begins — the guard keeps one from starting on non-editable
|
|
388
|
-
// chrome (markers, void/island chrome, plugin UI). A press on that
|
|
389
|
-
// chrome is the press's (`events/onFocus.ts`).
|
|
390
|
-
node.addEventListener('selectstart', selection.pointer.onSelectStart);
|
|
391
|
-
return {
|
|
392
|
-
destroy: () => node.removeEventListener('selectstart', selection.pointer.onSelectStart)
|
|
393
|
-
};
|
|
394
|
-
};
|
|
395
348
|
</script>
|
|
396
349
|
|
|
397
350
|
{#if edytor.synced}
|
|
398
351
|
<!-- The editing host is focusable (contenteditable): no tabindex of its own. -->
|
|
399
352
|
<!-- svelte-ignore a11y_aria_activedescendant_has_tabindex -->
|
|
353
|
+
<!-- `selectstart`, fired before a drag-selection begins, keeps one from starting on
|
|
354
|
+
non-editable chrome (a press there is the press's: `events/onFocus.ts`). -->
|
|
400
355
|
<div
|
|
401
356
|
class={className}
|
|
402
357
|
use:edytor.attach
|
|
403
|
-
|
|
404
|
-
use:
|
|
358
|
+
onselectstart={edytor.selection.pointer.onSelectStart}
|
|
359
|
+
use:browserAttributes={{
|
|
360
|
+
spellcheck,
|
|
361
|
+
autocorrect,
|
|
362
|
+
autocomplete,
|
|
363
|
+
autocapitalize,
|
|
364
|
+
inputmode,
|
|
365
|
+
enterkeyhint
|
|
366
|
+
}}
|
|
405
367
|
data-edytor
|
|
406
368
|
data-edytor-selection={edytor.selection.value.kind === 'blocks' ? 'blocks' : undefined}
|
|
407
369
|
contenteditable={!readonly}
|
|
@@ -419,8 +381,7 @@
|
|
|
419
381
|
{translate}
|
|
420
382
|
>
|
|
421
383
|
{#each edytor.suggestions.around(edytor.cells?.rootIds ?? []) as kid (kid)}<Block
|
|
422
|
-
|
|
423
|
-
suggestion={typeof kid === 'string' ? undefined : kid}
|
|
384
|
+
{kid}
|
|
424
385
|
/>{/each}<span
|
|
425
386
|
data-edytor-render-anchor
|
|
426
387
|
contenteditable="false"
|
|
@@ -433,24 +394,46 @@
|
|
|
433
394
|
<!-- The room's JSON, read-only, while this view's document hydrates. -->
|
|
434
395
|
<div data-edytor-snapshot style="display: contents">
|
|
435
396
|
<Snapshot
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
{...snippets}
|
|
397
|
+
{...{
|
|
398
|
+
value: snapshot,
|
|
399
|
+
readonly: true,
|
|
400
|
+
plugins: userPlugins,
|
|
401
|
+
defaultPlugins,
|
|
402
|
+
class: className,
|
|
403
|
+
labels,
|
|
404
|
+
'aria-label': ariaLabel,
|
|
405
|
+
'aria-labelledby': ariaLabelledby,
|
|
406
|
+
'aria-describedby': ariaDescribedby,
|
|
407
|
+
id
|
|
408
|
+
}}
|
|
449
409
|
/>
|
|
450
410
|
</div>
|
|
451
411
|
{/if}
|
|
452
412
|
|
|
453
413
|
<style>
|
|
414
|
+
/* Where a drag lands, a block handle's or files' from outside (`DropIndicator`):
|
|
415
|
+
* the bar (4px) and the nest backdrop, placed in the overlay and shown
|
|
416
|
+
* (`data-shown`) by the drag; their look is a theme's (`edytor/themes/notion.css`). */
|
|
417
|
+
:global([data-edytor-drop-indicator]),
|
|
418
|
+
:global([data-edytor-drop-backdrop]) {
|
|
419
|
+
position: absolute;
|
|
420
|
+
pointer-events: none;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
:global([data-edytor-drop-indicator]) {
|
|
424
|
+
z-index: 100;
|
|
425
|
+
box-sizing: border-box;
|
|
426
|
+
height: 4px;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
:global([data-edytor-drop-backdrop]) {
|
|
430
|
+
z-index: 99;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
:global([data-edytor-drop-backdrop]:not([data-shown='true'])) {
|
|
434
|
+
visibility: hidden;
|
|
435
|
+
}
|
|
436
|
+
|
|
454
437
|
/*
|
|
455
438
|
* Room below the last block, where a press puts the caret in a trailing
|
|
456
439
|
* paragraph (`nav.trailing.press`): `--edytor-trailing-space`. No
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { Edytor as EdytorClass, useEdytor
|
|
1
|
+
import { Edytor as EdytorClass, useEdytor } from '../edytor.svelte.js';
|
|
2
2
|
import { SyncRefusedError, type Awareness, type DocChange, type DocumentActor, type EdytorDocument, type YDoc } from '../crdt/index.js';
|
|
3
3
|
import type { EdytorSync, WebsocketSyncOptions } from '../collaboration/index.js';
|
|
4
4
|
import { type PresenceOptions } from '../collaboration/awarenessSelection.js';
|
|
5
5
|
export { EdytorClass as EdytorContext, useEdytor };
|
|
6
|
-
import type {
|
|
6
|
+
import type { Plugin } from '../plugins.js';
|
|
7
7
|
import type { PartialLabels } from '../labels.js';
|
|
8
|
-
|
|
9
|
-
export type EdytorProps = Snippets & {
|
|
8
|
+
export type EdytorProps = {
|
|
10
9
|
plugins?: Plugin[];
|
|
11
|
-
/**
|
|
12
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
13
|
-
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
10
|
+
/** Add rich text and the suggestion UI unless `plugins` lists them (default `true`). */
|
|
14
11
|
defaultPlugins?: boolean;
|
|
15
12
|
class?: string;
|
|
16
13
|
/** The root textbox's accessible name (or name it with `aria-labelledby`). */
|
|
@@ -26,7 +23,7 @@ export type EdytorProps = Snippets & {
|
|
|
26
23
|
document?: EdytorDocument;
|
|
27
24
|
doc?: YDoc;
|
|
28
25
|
awareness?: Awareness;
|
|
29
|
-
/** The local author (id, name, color) of the document this view owns:
|
|
26
|
+
/** The local author (id, name, color) of the document this view owns: attribution and presence. */
|
|
30
27
|
actor?: DocumentActor;
|
|
31
28
|
/**
|
|
32
29
|
* What this view shares of its selection with peers (`share`: `'caret'`,
|
|
@@ -39,6 +36,13 @@ export type EdytorProps = Snippets & {
|
|
|
39
36
|
* the connection.
|
|
40
37
|
*/
|
|
41
38
|
readonly?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Let users nest blocks (default `false`): Tab and Shift+Tab nest and
|
|
41
|
+
* unnest, drops and handle keys may place a block inside another. Off,
|
|
42
|
+
* Tab is left to the browser and no gesture nests; containers keep their
|
|
43
|
+
* bodies. Read once.
|
|
44
|
+
*/
|
|
45
|
+
allowNesting?: boolean;
|
|
42
46
|
/** Chords (`mod+s`, `shift+alt+enter`) the view binds before plugins and built-ins. Read once. */
|
|
43
47
|
hotkeys?: Partial<Record<HotKeyCombination, HotKey>>;
|
|
44
48
|
/** After every commit that changed the visible document: a `JSONDoc`, the type `value` takes. */
|
|
@@ -51,13 +55,12 @@ export type EdytorProps = Snippets & {
|
|
|
51
55
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
52
56
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
53
57
|
value?: JSONDoc;
|
|
54
|
-
placeholder?: Placeholder;
|
|
55
58
|
/**
|
|
56
|
-
* The words the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
+
* The words the package shows and says in this view, over the English
|
|
60
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
61
|
+
* the commands' slash `keywords` by id. Read once.
|
|
59
62
|
*/
|
|
60
|
-
labels?: PartialLabels
|
|
63
|
+
labels?: PartialLabels;
|
|
61
64
|
translate?: 'yes' | 'no';
|
|
62
65
|
spellcheck?: boolean;
|
|
63
66
|
autocorrect?: 'on' | 'off';
|