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
|
@@ -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,28 @@
|
|
|
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
|
-
|
|
27
|
-
|
|
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 { createArrowMovePlugin } from '../plugins/arrowMove/arrowMove.js';
|
|
27
|
+
import { createImagePlugin } from '../plugins/image/ImagePlugin.svelte';
|
|
28
|
+
import { createSuggestionsPlugin } from '../plugins/suggestions/suggestionsPlugin.js';
|
|
37
29
|
|
|
38
30
|
/**
|
|
39
|
-
* The plugins every view has unless it lists
|
|
31
|
+
* The plugins every view has unless it lists one of their kind (or sets
|
|
40
32
|
* `defaultPlugins={false}`), after the app's so its kinds and keys win:
|
|
41
33
|
* block moves, the suggestion UI, the image kind, then rich text.
|
|
42
34
|
*/
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
...(plugins.some(isRichTextPlugin) ? [] : [richTextPlugin])
|
|
35
|
+
const DEFAULTS = [
|
|
36
|
+
createArrowMovePlugin(),
|
|
37
|
+
createSuggestionsPlugin(),
|
|
38
|
+
createImagePlugin(),
|
|
39
|
+
createRichTextPlugin()
|
|
49
40
|
];
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*/
|
|
54
|
-
const withHandles = (plugins: Plugin[] | undefined, handles: boolean | BlockHandlesOptions) => {
|
|
55
|
-
const others = plugins?.filter((plugin) => !isBlockHandlesPlugin(plugin));
|
|
56
|
-
if (handles === false) return others;
|
|
57
|
-
if (typeof handles === 'object') return [createBlockHandlesPlugin(handles), ...(others ?? [])];
|
|
58
|
-
return plugins?.some(isBlockHandlesPlugin) ? plugins : [blockHandlesPlugin, ...(plugins ?? [])];
|
|
41
|
+
const withDefaults = (plugins: Plugin[] = []): Plugin[] => {
|
|
42
|
+
const listed = new Set(plugins.map(brandOf));
|
|
43
|
+
return [...plugins, ...DEFAULTS.filter((plugin) => !listed.has(brandOf(plugin)))];
|
|
59
44
|
};
|
|
60
45
|
/**
|
|
61
46
|
* The sync of a room id no dial can carry (`validRoomId`): no socket, the
|
|
@@ -80,10 +65,8 @@
|
|
|
80
65
|
children: []
|
|
81
66
|
};
|
|
82
67
|
|
|
83
|
-
export type EdytorProps =
|
|
68
|
+
export type EdytorProps = {
|
|
84
69
|
plugins?: Plugin[];
|
|
85
|
-
/** Show built-in block handles, with optional pointer dragging and activation callback. */
|
|
86
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
87
70
|
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
88
71
|
defaultPlugins?: boolean;
|
|
89
72
|
class?: string;
|
|
@@ -100,7 +83,7 @@
|
|
|
100
83
|
document?: EdytorDocument;
|
|
101
84
|
doc?: YDoc;
|
|
102
85
|
awareness?: Awareness;
|
|
103
|
-
/** The local author (id, name, color) of the document this view owns:
|
|
86
|
+
/** The local author (id, name, color) of the document this view owns: attribution and presence. */
|
|
104
87
|
actor?: DocumentActor;
|
|
105
88
|
/**
|
|
106
89
|
* What this view shares of its selection with peers (`share`: `'caret'`,
|
|
@@ -125,13 +108,12 @@
|
|
|
125
108
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
126
109
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
127
110
|
value?: JSONDoc;
|
|
128
|
-
placeholder?: Placeholder;
|
|
129
111
|
/**
|
|
130
|
-
* The words the
|
|
131
|
-
*
|
|
132
|
-
*
|
|
112
|
+
* The words the package shows and says in this view, over the English
|
|
113
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
114
|
+
* the commands' slash `keywords` by id. Read once.
|
|
133
115
|
*/
|
|
134
|
-
labels?: PartialLabels
|
|
116
|
+
labels?: PartialLabels;
|
|
135
117
|
translate?: 'yes' | 'no';
|
|
136
118
|
spellcheck?: boolean;
|
|
137
119
|
autocorrect?: 'on' | 'off';
|
|
@@ -195,7 +177,6 @@
|
|
|
195
177
|
|
|
196
178
|
let {
|
|
197
179
|
plugins: userPlugins,
|
|
198
|
-
blockHandles,
|
|
199
180
|
defaultPlugins = true,
|
|
200
181
|
class: className,
|
|
201
182
|
'aria-label': ariaLabel,
|
|
@@ -223,7 +204,6 @@
|
|
|
223
204
|
onChange,
|
|
224
205
|
onDocChange,
|
|
225
206
|
onSelectionChange,
|
|
226
|
-
placeholder,
|
|
227
207
|
labels,
|
|
228
208
|
translate = 'no',
|
|
229
209
|
spellcheck = true,
|
|
@@ -231,17 +211,12 @@
|
|
|
231
211
|
autocomplete = 'off',
|
|
232
212
|
autocapitalize = 'none',
|
|
233
213
|
inputmode,
|
|
234
|
-
enterkeyhint
|
|
235
|
-
...snippets
|
|
214
|
+
enterkeyhint
|
|
236
215
|
}: EdytorProps = $props();
|
|
237
216
|
|
|
238
217
|
const initialEdytorOptions = untrack(() => ({
|
|
239
|
-
snippets,
|
|
240
218
|
readonly,
|
|
241
|
-
plugins:
|
|
242
|
-
defaultPlugins ? withDefaults(userPlugins) : userPlugins,
|
|
243
|
-
blockHandles ?? true
|
|
244
|
-
),
|
|
219
|
+
plugins: defaultPlugins ? withDefaults(userPlugins) : userPlugins,
|
|
245
220
|
document: edytorDocument,
|
|
246
221
|
doc,
|
|
247
222
|
awareness,
|
|
@@ -253,7 +228,6 @@
|
|
|
253
228
|
onDocChange,
|
|
254
229
|
sync: !!sync || room !== undefined,
|
|
255
230
|
value,
|
|
256
|
-
placeholder,
|
|
257
231
|
labels
|
|
258
232
|
}));
|
|
259
233
|
|
|
@@ -354,25 +328,13 @@
|
|
|
354
328
|
$effect(edytor.surface.post);
|
|
355
329
|
$effect(edytor.projector.post);
|
|
356
330
|
|
|
357
|
-
const browserMutationGuardAttributes = $derived({
|
|
358
|
-
spellcheck,
|
|
359
|
-
autocorrect,
|
|
360
|
-
autocomplete,
|
|
361
|
-
autocapitalize,
|
|
362
|
-
inputmode,
|
|
363
|
-
enterkeyhint
|
|
364
|
-
});
|
|
365
|
-
|
|
366
331
|
/**
|
|
367
|
-
* The root's browser
|
|
368
|
-
*
|
|
369
|
-
*
|
|
332
|
+
* The root's browser hints, several of them unknown to Svelte's element
|
|
333
|
+
* types; one left unset is absent (a guessed default would override the
|
|
334
|
+
* browser's own choice).
|
|
370
335
|
*/
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
attributes: typeof browserMutationGuardAttributes
|
|
374
|
-
) => {
|
|
375
|
-
const apply = (next: typeof attributes) => {
|
|
336
|
+
const browserAttributes = (node: HTMLElement, attributes: Record<string, unknown>) => {
|
|
337
|
+
const apply = (next: Record<string, unknown>) => {
|
|
376
338
|
for (const [name, value] of Object.entries(next))
|
|
377
339
|
if (value === undefined) node.removeAttribute(name);
|
|
378
340
|
else node.setAttribute(name, String(value));
|
|
@@ -380,28 +342,25 @@
|
|
|
380
342
|
apply(attributes);
|
|
381
343
|
return { update: apply };
|
|
382
344
|
};
|
|
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
345
|
</script>
|
|
396
346
|
|
|
397
347
|
{#if edytor.synced}
|
|
398
348
|
<!-- The editing host is focusable (contenteditable): no tabindex of its own. -->
|
|
399
349
|
<!-- svelte-ignore a11y_aria_activedescendant_has_tabindex -->
|
|
350
|
+
<!-- `selectstart`, fired before a drag-selection begins, keeps one from starting on
|
|
351
|
+
non-editable chrome (a press there is the press's: `events/onFocus.ts`). -->
|
|
400
352
|
<div
|
|
401
353
|
class={className}
|
|
402
354
|
use:edytor.attach
|
|
403
|
-
|
|
404
|
-
use:
|
|
355
|
+
onselectstart={edytor.selection.pointer.onSelectStart}
|
|
356
|
+
use:browserAttributes={{
|
|
357
|
+
spellcheck,
|
|
358
|
+
autocorrect,
|
|
359
|
+
autocomplete,
|
|
360
|
+
autocapitalize,
|
|
361
|
+
inputmode,
|
|
362
|
+
enterkeyhint
|
|
363
|
+
}}
|
|
405
364
|
data-edytor
|
|
406
365
|
data-edytor-selection={edytor.selection.value.kind === 'blocks' ? 'blocks' : undefined}
|
|
407
366
|
contenteditable={!readonly}
|
|
@@ -418,7 +377,9 @@
|
|
|
418
377
|
aria-keyshortcuts={popup?.keys}
|
|
419
378
|
{translate}
|
|
420
379
|
>
|
|
421
|
-
{#each edytor.cells?.rootIds ?? [] as
|
|
380
|
+
{#each edytor.suggestions.around(edytor.cells?.rootIds ?? []) as kid (kid)}<Block
|
|
381
|
+
{kid}
|
|
382
|
+
/>{/each}<span
|
|
422
383
|
data-edytor-render-anchor
|
|
423
384
|
contenteditable="false"
|
|
424
385
|
aria-hidden="true"
|
|
@@ -430,24 +391,48 @@
|
|
|
430
391
|
<!-- The room's JSON, read-only, while this view's document hydrates. -->
|
|
431
392
|
<div data-edytor-snapshot style="display: contents">
|
|
432
393
|
<Snapshot
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
{...snippets}
|
|
394
|
+
{...{
|
|
395
|
+
value: snapshot,
|
|
396
|
+
readonly: true,
|
|
397
|
+
plugins: userPlugins,
|
|
398
|
+
defaultPlugins,
|
|
399
|
+
class: className,
|
|
400
|
+
labels,
|
|
401
|
+
'aria-label': ariaLabel,
|
|
402
|
+
'aria-labelledby': ariaLabelledby,
|
|
403
|
+
'aria-describedby': ariaDescribedby,
|
|
404
|
+
id
|
|
405
|
+
}}
|
|
446
406
|
/>
|
|
447
407
|
</div>
|
|
448
408
|
{/if}
|
|
449
409
|
|
|
450
410
|
<style>
|
|
411
|
+
/*
|
|
412
|
+
* Room below the last block, where a press puts the caret in a trailing
|
|
413
|
+
* paragraph (`nav.trailing.press`): `--edytor-trailing-space`. No
|
|
414
|
+
* specificity, so any rule of the app's sets the padding instead.
|
|
415
|
+
*/
|
|
416
|
+
:global(:where([data-edytor])) {
|
|
417
|
+
padding-block-end: var(--edytor-trailing-space, 2em);
|
|
418
|
+
}
|
|
419
|
+
/*
|
|
420
|
+
* Long pages, opt-in: the `edytor-long-page` class on the editor or an
|
|
421
|
+
* ancestor lets a top-level block off screen skip its rendering (style,
|
|
422
|
+
* layout, paint) until it nears the viewport; the browser keeps its DOM,
|
|
423
|
+
* selection, find-in-page and accessibility. Until it was rendered once it
|
|
424
|
+
* counts as one 32px row (`auto` remembers its real height after). Both
|
|
425
|
+
* properties come with the one switch: the remembered height alone makes
|
|
426
|
+
* Chromium track every top-level block's size each frame (about 2.5 ms at
|
|
427
|
+
* 5,000 blocks), so without the switch neither is set. Only top-level
|
|
428
|
+
* blocks: a nested one is skipped with its ancestor. The containment it
|
|
429
|
+
* brings (layout, paint) clips what a block paints outside its own box.
|
|
430
|
+
* No specificity: an app's own rule wins.
|
|
431
|
+
*/
|
|
432
|
+
:global(:where([data-edytor]:is(.edytor-long-page, .edytor-long-page *) > [data-edytor-block])) {
|
|
433
|
+
content-visibility: auto;
|
|
434
|
+
contain-intrinsic-block-size: auto 32px;
|
|
435
|
+
}
|
|
451
436
|
/*
|
|
452
437
|
* A block selection shows as its selected blocks, never as a native range:
|
|
453
438
|
* the range a pointer drag across columns still extends under it
|
|
@@ -1,15 +1,12 @@
|
|
|
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
|
-
/** Show built-in block handles, with optional pointer dragging and activation callback. */
|
|
12
|
-
blockHandles?: boolean | BlockHandlesOptions;
|
|
13
10
|
/** Add rich text, arrow moves, the suggestion UI and images unless `plugins` lists them (default `true`). */
|
|
14
11
|
defaultPlugins?: boolean;
|
|
15
12
|
class?: string;
|
|
@@ -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'`,
|
|
@@ -51,13 +48,12 @@ export type EdytorProps = Snippets & {
|
|
|
51
48
|
onSelectionChange?: (selection: EdytorSelection) => void;
|
|
52
49
|
/** The initial content, read once (not bindable): follow edits with `onChange` or `edytor.value`. */
|
|
53
50
|
value?: JSONDoc;
|
|
54
|
-
placeholder?: Placeholder;
|
|
55
51
|
/**
|
|
56
|
-
* The words the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
52
|
+
* The words the package shows and says in this view, over the English
|
|
53
|
+
* ones: any entry of any section (`editor`, `richText`, `table`…) and
|
|
54
|
+
* the commands' slash `keywords` by id. Read once.
|
|
59
55
|
*/
|
|
60
|
-
labels?: PartialLabels
|
|
56
|
+
labels?: PartialLabels;
|
|
61
57
|
translate?: 'yes' | 'no';
|
|
62
58
|
spellcheck?: boolean;
|
|
63
59
|
autocorrect?: 'on' | 'off';
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
const edytor = getContext<Edytor>('edytor');
|
|
19
19
|
const snippet = $derived(edytor.inlineBlocks.get(part.type)?.snippet);
|
|
20
|
+
/** A live atom's element registers with its handle; a suggestion's has none. */
|
|
21
|
+
const attach = (node: HTMLElement) => block?.attach(node);
|
|
20
22
|
// The snippet's view object: declared values, reactive through the part.
|
|
21
23
|
const view: InlineBlockView = {
|
|
22
24
|
get id() {
|
|
@@ -37,12 +39,5 @@
|
|
|
37
39
|
};
|
|
38
40
|
</script>
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
<span data-edytor-inline-block use:block.attach>
|
|
43
|
-
{@render snippet({ block: view })}
|
|
44
|
-
</span>
|
|
45
|
-
{:else}
|
|
46
|
-
<span data-edytor-inline-block>{@render snippet({ block: view })}</span>
|
|
47
|
-
{/if}
|
|
48
|
-
{/if}
|
|
42
|
+
<!-- `Content` renders only the atoms whose kind has a snippet: the span is the root, no anchor. -->
|
|
43
|
+
<span data-edytor-inline-block use:attach>{@render snippet?.({ block: view })}</span>
|
|
@@ -1,10 +1,34 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { getContext } from 'svelte';
|
|
1
|
+
<script module lang="ts">
|
|
3
2
|
import type { Edytor } from '../edytor.svelte.js';
|
|
4
3
|
import type { Text } from '../text/text.svelte.js';
|
|
5
4
|
import type { RenderDelta } from '../surface/cells.js';
|
|
5
|
+
|
|
6
|
+
/** Mark `index` of `delta` renders a custom snippet (`CustomMark`), not a tag (`Mark`). */
|
|
7
|
+
export const customAt = (edytor: Edytor, delta: RenderDelta, index: number) =>
|
|
8
|
+
Boolean(edytor.marks.get(delta.marks[index]?.[0] ?? '')?.snippet);
|
|
9
|
+
|
|
10
|
+
/** The core mark element is registered; a suggestion's ghost mark has no text and is not. */
|
|
11
|
+
export const registerMark = (
|
|
12
|
+
edytor: Edytor,
|
|
13
|
+
text: Text | undefined,
|
|
14
|
+
node: HTMLElement,
|
|
15
|
+
name: string | undefined
|
|
16
|
+
) => {
|
|
17
|
+
const release = text && edytor.surface.register(node, 'mark', text.parent.id, name);
|
|
18
|
+
return { destroy: () => release?.() };
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import { getContext } from 'svelte';
|
|
6
24
|
import Mark from './Mark.svelte';
|
|
25
|
+
import CustomMark from './CustomMark.svelte';
|
|
7
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Mark `index` of `delta` as the element of its tag, around the marks
|
|
29
|
+
* after it, then its text. `Text` passes only the marks this view renders
|
|
30
|
+
* (a tag or a snippet); a snippet's mark is `CustomMark`.
|
|
31
|
+
*/
|
|
8
32
|
let {
|
|
9
33
|
delta,
|
|
10
34
|
text,
|
|
@@ -17,38 +41,25 @@
|
|
|
17
41
|
|
|
18
42
|
const edytor = getContext<Edytor>('edytor');
|
|
19
43
|
const mark = $derived(delta.marks[index]);
|
|
20
|
-
const definition = $derived(edytor.marks.get(mark?.[0]));
|
|
21
|
-
/**
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
44
|
+
const definition = $derived(edytor.marks.get(mark?.[0] ?? ''));
|
|
45
|
+
/** Another mark inside this one. */
|
|
46
|
+
const inner = $derived(index + 1 < delta.marks.length);
|
|
47
|
+
/** The text, the element's own text node when no mark is inside (no anchor of its own). */
|
|
48
|
+
const own = $derived(inner ? '' : delta.text);
|
|
49
|
+
const register = (node: HTMLElement) => registerMark(edytor, text, node, mark?.[0]);
|
|
26
50
|
</script>
|
|
27
51
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
{
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
{
|
|
41
|
-
|
|
42
|
-
data-edytor-mark-void={definition.void ? '' : undefined}
|
|
43
|
-
contenteditable={definition.void ? 'false' : undefined}
|
|
44
|
-
use:register
|
|
45
|
-
>
|
|
46
|
-
{#if definition.snippet}
|
|
47
|
-
{@render definition.snippet({ content, mark: mark?.[1], text: text! })}
|
|
48
|
-
{:else}
|
|
49
|
-
{@render content()}
|
|
50
|
-
{/if}
|
|
51
|
-
</svelte:element>
|
|
52
|
-
{:else}
|
|
53
|
-
{@render content()}
|
|
54
|
-
{/if}
|
|
52
|
+
<!-- One core element per mark, the kind's tag (`render.markers`: its text needs no anchor). -->
|
|
53
|
+
<svelte:element
|
|
54
|
+
this={definition?.tag}
|
|
55
|
+
{...definition?.attributes?.(mark?.[1])}
|
|
56
|
+
data-edytor-mark={mark?.[0]}
|
|
57
|
+
data-edytor-mark-void={definition?.void ? '' : undefined}
|
|
58
|
+
contenteditable={definition?.void ? 'false' : undefined}
|
|
59
|
+
use:register
|
|
60
|
+
>{own}{#if !inner}{:else if customAt(edytor, delta, index + 1)}<CustomMark
|
|
61
|
+
index={index + 1}
|
|
62
|
+
{delta}
|
|
63
|
+
{text}
|
|
64
|
+
/>{:else}<Mark index={index + 1} {delta} {text} />{/if}</svelte:element
|
|
65
|
+
>
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
1
2
|
import type { Text } from '../text/text.svelte.js';
|
|
2
3
|
import type { RenderDelta } from '../surface/cells.js';
|
|
4
|
+
/** Mark `index` of `delta` renders a custom snippet (`CustomMark`), not a tag (`Mark`). */
|
|
5
|
+
export declare const customAt: (edytor: Edytor, delta: RenderDelta, index: number) => boolean;
|
|
6
|
+
/** The core mark element is registered; a suggestion's ghost mark has no text and is not. */
|
|
7
|
+
export declare const registerMark: (edytor: Edytor, text: Text | undefined, node: HTMLElement, name: string | undefined) => {
|
|
8
|
+
destroy: () => void | undefined;
|
|
9
|
+
};
|
|
3
10
|
import Mark from './Mark.svelte';
|
|
4
11
|
type $$ComponentProps = {
|
|
5
12
|
text: Text | undefined;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { PresencePoint } from '../collaboration/awarenessSelection.js';
|
|
3
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
4
|
+
|
|
5
|
+
/** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
|
|
6
|
+
export type MarkedRange = { start: PresencePoint; end: PresencePoint; current?: boolean };
|
|
7
|
+
|
|
8
|
+
/** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
|
|
9
|
+
export const runOf = (
|
|
10
|
+
edytor: Edytor,
|
|
11
|
+
id: string,
|
|
12
|
+
offset: number,
|
|
13
|
+
length: number,
|
|
14
|
+
current?: boolean
|
|
15
|
+
): MarkedRange[] => {
|
|
16
|
+
const block = edytor.idToBlock.get(id);
|
|
17
|
+
const [start, end] = [block?.textAtOffset(offset), block?.textAtOffset(offset + length)];
|
|
18
|
+
return start && end ? [{ start, end, current }] : [];
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import { onMount } from 'svelte';
|
|
24
|
+
import { rangeRects, type RemoteSelectionRect } from '../collaboration/remoteSelection.js';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Runs of text marked in the overlay (never inside the host), one
|
|
28
|
+
* rectangle per line box, measured once per frame: the find matches, the
|
|
29
|
+
* text a `replace` suggestion removes, the comment being written. Each
|
|
30
|
+
* rectangle carries `data-edytor-<name>` (`data-current` on the current
|
|
31
|
+
* run's); the layer is `z`.
|
|
32
|
+
*/
|
|
33
|
+
let {
|
|
34
|
+
edytor,
|
|
35
|
+
name,
|
|
36
|
+
z,
|
|
37
|
+
ranges
|
|
38
|
+
}: { edytor: Edytor; name: string; z: number; ranges: () => MarkedRange[] } = $props();
|
|
39
|
+
|
|
40
|
+
let rects: (RemoteSelectionRect & { current?: boolean })[] = $state([]);
|
|
41
|
+
|
|
42
|
+
onMount(() =>
|
|
43
|
+
edytor.overlay.add((origin) => {
|
|
44
|
+
const next = ranges().flatMap(({ start, end, current }) =>
|
|
45
|
+
rangeRects(edytor, start, end, origin).map((rect) => ({ ...rect, current }))
|
|
46
|
+
);
|
|
47
|
+
if (next.length || rects.length) return () => (rects = next);
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
// What the runs read changed: the overlay measures again.
|
|
51
|
+
$effect(() => {
|
|
52
|
+
void ranges();
|
|
53
|
+
edytor.overlay.invalidate();
|
|
54
|
+
});
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<div data-edytor-ranges={name} contenteditable="false" aria-hidden="true" style:z-index={z}>
|
|
58
|
+
{#each rects as rect, index (index)}
|
|
59
|
+
<span
|
|
60
|
+
{...{ [`data-edytor-${name}`]: '' }}
|
|
61
|
+
data-current={rect.current || undefined}
|
|
62
|
+
style:left={`${rect.left}px`}
|
|
63
|
+
style:top={`${rect.top}px`}
|
|
64
|
+
style:width={`${rect.width}px`}
|
|
65
|
+
style:height={`${rect.height}px`}
|
|
66
|
+
></span>
|
|
67
|
+
{/each}
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<style>
|
|
71
|
+
[data-edytor-ranges] {
|
|
72
|
+
position: absolute;
|
|
73
|
+
left: 0;
|
|
74
|
+
top: 0;
|
|
75
|
+
pointer-events: none;
|
|
76
|
+
}
|
|
77
|
+
[data-edytor-ranges] > span {
|
|
78
|
+
position: absolute;
|
|
79
|
+
}
|
|
80
|
+
:global([data-edytor-find-match]) {
|
|
81
|
+
border-radius: 2px;
|
|
82
|
+
background: var(--edytor-find-match, rgb(255 212 0 / 0.3));
|
|
83
|
+
mix-blend-mode: multiply;
|
|
84
|
+
}
|
|
85
|
+
:global([data-edytor-find-match][data-current]) {
|
|
86
|
+
background: var(--edytor-find-current, rgb(255 166 0 / 0.55));
|
|
87
|
+
}
|
|
88
|
+
:global([data-edytor-suggestion-range]) {
|
|
89
|
+
background: var(--edytor-suggestion-removed, rgb(235 87 87 / 0.18));
|
|
90
|
+
border-bottom: 1px solid var(--edytor-suggestion-removed-line, rgb(235 87 87 / 0.6));
|
|
91
|
+
}
|
|
92
|
+
:global([data-edytor-comment-draft]) {
|
|
93
|
+
background: var(--edytor-comment-active, rgb(255 212 0 / 0.42));
|
|
94
|
+
mix-blend-mode: multiply;
|
|
95
|
+
}
|
|
96
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PresencePoint } from '../collaboration/awarenessSelection.js';
|
|
2
|
+
import type { Edytor } from '../edytor.svelte.js';
|
|
3
|
+
/** A run of text the overlay marks: its ends, and whether it is the current one (`data-current`). */
|
|
4
|
+
export type MarkedRange = {
|
|
5
|
+
start: PresencePoint;
|
|
6
|
+
end: PresencePoint;
|
|
7
|
+
current?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** The run of `length` at block offset `offset` of block `id` (none where it is not shown). */
|
|
10
|
+
export declare const runOf: (edytor: Edytor, id: string, offset: number, length: number, current?: boolean) => MarkedRange[];
|
|
11
|
+
type $$ComponentProps = {
|
|
12
|
+
edytor: Edytor;
|
|
13
|
+
name: string;
|
|
14
|
+
z: number;
|
|
15
|
+
ranges: () => MarkedRange[];
|
|
16
|
+
};
|
|
17
|
+
declare const Ranges: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
18
|
+
type Ranges = ReturnType<typeof Ranges>;
|
|
19
|
+
export default Ranges;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import type { Edytor } from '../edytor.svelte.js';
|
|
4
4
|
import type { Suggestion } from '../session/suggestions.svelte.js';
|
|
5
5
|
import { previewCells } from '../surface/cells.js';
|
|
6
|
+
import { editorEnglish, labelsOf } from '../labels.js';
|
|
6
7
|
import Block from './Block.svelte';
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -28,12 +29,12 @@
|
|
|
28
29
|
data-edytor-suggestion={suggestion.id}
|
|
29
30
|
data-status={suggestion.status}
|
|
30
31
|
contenteditable="false"
|
|
31
|
-
aria-label={suggestion.label ?? edytor.
|
|
32
|
+
aria-label={suggestion.label ?? labelsOf(edytor, 'editor', editorEnglish).suggestion}
|
|
32
33
|
role="group"
|
|
33
34
|
use:edytor.surface.preview={suggestion.id}
|
|
34
35
|
onmousedown={cancel}
|
|
35
36
|
>
|
|
36
|
-
{#each cells as cell (cell.id)}<Block
|
|
37
|
+
{#each cells as cell (cell.id)}<Block kid={cell} />{/each}
|
|
37
38
|
</div>
|
|
38
39
|
|
|
39
40
|
<style>
|