edytor 1.0.0-rc.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -25
- package/dist/block/block.svelte.d.ts +10 -85
- package/dist/block/block.svelte.js +47 -141
- package/dist/block/colors.d.ts +0 -9
- package/dist/block/colors.js +1 -18
- package/dist/block/contentRange.d.ts +5 -1
- package/dist/block/contentRange.js +15 -16
- package/dist/block/inlineBlock.svelte.d.ts +8 -10
- package/dist/block/inlineBlock.svelte.js +14 -22
- package/dist/clipboard/createClipboardFragment.js +22 -64
- package/dist/clipboard/fragmentData.js +17 -42
- package/dist/clipboard/htmlFlow.d.ts +6 -1
- package/dist/clipboard/htmlFlow.js +26 -13
- package/dist/clipboard/insertClipboardFragment.js +5 -4
- package/dist/clipboard/moveText.js +16 -8
- package/dist/clipboard/serializeClipboardFragment.d.ts +2 -0
- package/dist/clipboard/serializeClipboardFragment.js +32 -28
- package/dist/cloudflare/DocumentRoom.d.ts +22 -17
- package/dist/cloudflare/DocumentRoom.js +10 -5
- package/dist/cloudflare/index.d.ts +1 -1
- package/dist/cloudflare/index.js +1 -1
- package/dist/cloudflare/move.d.ts +1 -18
- package/dist/cloudflare/move.js +2 -48
- package/dist/cloudflare/room/admission.d.ts +1 -60
- package/dist/cloudflare/room/admission.js +25 -29
- package/dist/cloudflare/room/comments.d.ts +1 -3
- package/dist/cloudflare/room/comments.js +6 -6
- package/dist/cloudflare/room/context.d.ts +20 -82
- package/dist/cloudflare/room/context.js +8 -8
- package/dist/cloudflare/room/forged.d.ts +1 -1
- package/dist/cloudflare/room/forged.js +2 -12
- package/dist/cloudflare/room/frames.d.ts +1 -1
- package/dist/cloudflare/room/frames.js +1 -1
- package/dist/cloudflare/room/history.d.ts +1 -25
- package/dist/cloudflare/room/history.js +39 -54
- package/dist/cloudflare/room/moves.d.ts +1 -13
- package/dist/cloudflare/room/moves.js +33 -57
- package/dist/cloudflare/room/presence.d.ts +1 -11
- package/dist/cloudflare/room/presence.js +4 -4
- package/dist/cloudflare/room/purge.d.ts +1 -2
- package/dist/cloudflare/room/purge.js +2 -2
- package/dist/cloudflare/room/replicas.d.ts +1 -7
- package/dist/cloudflare/room/replicas.js +2 -2
- package/dist/cloudflare/room/storage.d.ts +9 -30
- package/dist/cloudflare/room/storage.js +52 -104
- package/dist/cloudflare/room/updates.d.ts +4 -4
- package/dist/cloudflare/room/updates.js +17 -24
- package/dist/cloudflare/room/validation.d.ts +1 -5
- package/dist/cloudflare/room/validation.js +16 -37
- package/dist/collaboration/RemoteSelections.svelte +13 -17
- package/dist/collaboration/comments/client.d.ts +2 -2
- package/dist/collaboration/comments/client.js +1 -1
- package/dist/collaboration/history/index.d.ts +5 -5
- package/dist/collaboration/history/index.js +5 -5
- package/dist/collaboration/history/panel.svelte.d.ts +91 -0
- package/dist/collaboration/history/panel.svelte.js +223 -0
- package/dist/collaboration/providers.d.ts +12 -3
- package/dist/collaboration/providers.js +5 -4
- package/dist/components/Block.svelte +160 -119
- package/dist/components/Block.svelte.d.ts +8 -3
- package/dist/components/Content.svelte +91 -44
- package/dist/components/CustomMark.svelte +46 -0
- package/dist/components/CustomMark.svelte.d.ts +11 -0
- package/dist/components/Edytor.svelte +80 -95
- package/dist/components/Edytor.svelte.d.ts +8 -12
- package/dist/components/InlineBlock.svelte +4 -9
- package/dist/components/Mark.svelte +46 -35
- package/dist/components/Mark.svelte.d.ts +7 -0
- package/dist/components/Ranges.svelte +96 -0
- package/dist/components/Ranges.svelte.d.ts +19 -0
- package/dist/components/Suggestion.svelte +3 -2
- package/dist/components/Text.svelte +48 -14
- package/dist/components/Text.svelte.d.ts +1 -1
- package/dist/crdt/admission.d.ts +2 -9
- package/dist/crdt/admission.js +3 -9
- package/dist/crdt/attribution/attribution.d.ts +11 -72
- package/dist/crdt/attribution/attribution.js +5 -52
- package/dist/crdt/attribution/block.d.ts +0 -78
- package/dist/crdt/attribution/block.js +1 -144
- package/dist/crdt/data.d.ts +8 -13
- package/dist/crdt/data.js +30 -70
- package/dist/crdt/doc/anchors.js +4 -4
- package/dist/crdt/doc/content.d.ts +5 -1
- package/dist/crdt/doc/content.js +3 -1
- package/dist/crdt/doc/delete.d.ts +1 -0
- package/dist/crdt/doc/funnel.d.ts +0 -23
- package/dist/crdt/doc/funnel.js +34 -85
- package/dist/crdt/doc/gate.d.ts +8 -9
- package/dist/crdt/doc/gate.js +7 -17
- package/dist/crdt/doc/history.d.ts +87 -14
- package/dist/crdt/doc/history.js +334 -149
- package/dist/crdt/doc/layout.d.ts +0 -1
- package/dist/crdt/doc/layout.js +2 -3
- package/dist/crdt/doc/meta.d.ts +4 -4
- package/dist/crdt/doc/meta.js +10 -21
- package/dist/crdt/doc/moves.d.ts +4 -4
- package/dist/crdt/doc/moves.js +5 -5
- package/dist/crdt/doc/plan.d.ts +2 -0
- package/dist/crdt/doc/plan.js +2 -0
- package/dist/crdt/doc/reads.d.ts +1 -5
- package/dist/crdt/doc/reads.js +38 -49
- package/dist/crdt/doc/seed.d.ts +15 -6
- package/dist/crdt/doc/seed.js +27 -26
- package/dist/crdt/doc/split-merge.d.ts +1 -3
- package/dist/crdt/doc/split-merge.js +4 -5
- package/dist/crdt/doc/steps.d.ts +3 -7
- package/dist/crdt/doc/steps.js +20 -9
- package/dist/crdt/doc/types.d.ts +0 -10
- package/dist/crdt/document.d.ts +24 -115
- package/dist/crdt/document.js +207 -305
- package/dist/crdt/edytor-doc.d.ts +671 -90
- package/dist/crdt/edytor-doc.js +73 -149
- package/dist/crdt/engine-api.d.ts +15 -47
- package/dist/crdt/engine.d.ts +7 -17
- package/dist/crdt/engine.js +9 -19
- package/dist/crdt/flow.d.ts +9 -37
- package/dist/crdt/flow.js +260 -238
- package/dist/crdt/index.d.ts +26 -85
- package/dist/crdt/index.js +21 -47
- package/dist/crdt/operations.d.ts +24 -33
- package/dist/crdt/operations.js +7 -17
- package/dist/crdt/placement/display.d.ts +0 -2
- package/dist/crdt/placement/display.js +0 -15
- package/dist/crdt/placement/model.d.ts +160 -12
- package/dist/crdt/placement/model.js +413 -414
- package/dist/crdt/placement/rank.d.ts +1 -5
- package/dist/crdt/placement/rank.js +28 -38
- package/dist/crdt/protocol.d.ts +4 -5
- package/dist/crdt/protocol.js +3 -4
- package/dist/crdt/protocols/awareness.d.ts +3 -7
- package/dist/crdt/protocols/awareness.js +17 -33
- package/dist/crdt/protocols/envelope.d.ts +9 -29
- package/dist/crdt/protocols/envelope.js +8 -25
- package/dist/crdt/protocols/sync.d.ts +15 -30
- package/dist/crdt/protocols/sync.js +27 -89
- package/dist/crdt/providers/bound.d.ts +3 -1
- package/dist/crdt/providers/bound.js +3 -1
- package/dist/crdt/providers/container.d.ts +11 -17
- package/dist/crdt/providers/container.js +39 -27
- package/dist/crdt/providers/index.d.ts +34 -6
- package/dist/crdt/providers/index.js +106 -111
- package/dist/crdt/providers/indexeddb.d.ts +2 -12
- package/dist/crdt/providers/indexeddb.js +29 -90
- package/dist/crdt/providers/room.d.ts +58 -2
- package/dist/crdt/providers/room.js +38 -21
- package/dist/crdt/providers/websocket.d.ts +1 -1
- package/dist/crdt/providers/websocket.js +3 -4
- package/dist/crdt/purge.d.ts +2 -2
- package/dist/crdt/purge.js +69 -6
- package/dist/crdt/rangeDelete.d.ts +4 -42
- package/dist/crdt/rangeDelete.js +7 -6
- package/dist/crdt/restore.d.ts +21 -1
- package/dist/crdt/restore.js +54 -59
- package/dist/crdt/schema.d.ts +2 -2
- package/dist/crdt/schema.js +4 -5
- package/dist/crdt/semantics.d.ts +10 -15
- package/dist/crdt/semantics.js +22 -21
- package/dist/crdt/storage.d.ts +7 -13
- package/dist/crdt/storage.js +10 -24
- package/dist/crdt/structs.d.ts +42 -47
- package/dist/crdt/structs.js +76 -67
- package/dist/crdt/tables.d.ts +9 -0
- package/dist/crdt/tables.js +20 -0
- package/dist/crdt/text/delete-index.d.ts +0 -13
- package/dist/crdt/text/delete-index.js +7 -14
- package/dist/crdt/text/deletes.d.ts +9 -22
- package/dist/crdt/text/deletes.js +11 -74
- package/dist/crdt/text/index/cache.js +3 -3
- package/dist/crdt/text/index/fold.d.ts +1 -2
- package/dist/crdt/text/index/fold.js +15 -10
- package/dist/crdt/text/index/layout.d.ts +0 -10
- package/dist/crdt/text/index/layout.js +6 -20
- package/dist/crdt/text/index/records.js +2 -1
- package/dist/crdt/text/index/report.js +5 -6
- package/dist/crdt/text/index/shared.d.ts +11 -4
- package/dist/crdt/text/index/shared.js +8 -7
- package/dist/crdt/text/index/state.d.ts +3 -33
- package/dist/crdt/text/index/state.js +2 -4
- package/dist/crdt/text/model.d.ts +82 -2
- package/dist/crdt/text/model.js +344 -354
- package/dist/crdt/text/rows.d.ts +0 -2
- package/dist/crdt/text/rows.js +0 -11
- package/dist/crdt/text/runs.d.ts +6 -3
- package/dist/crdt/text/runs.js +132 -137
- package/dist/crdt/text/streams.d.ts +1 -1
- package/dist/crdt/text/streams.js +1 -1
- package/dist/crdt/vendor/yjs/API-NOTES.md +25 -8
- package/dist/crdt/vendor/yjs/UPSTREAM.md +288 -8
- package/dist/crdt/vendor/yjs/dts/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/dts/index.d.ts +10 -15
- package/dist/crdt/vendor/yjs/dts/structs/AbstractStruct.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/structs/Item.d.ts +14 -219
- package/dist/crdt/vendor/yjs/dts/structs/Skip.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/BlockSet.d.ts +2 -2
- package/dist/crdt/vendor/yjs/dts/utils/Doc.d.ts +12 -123
- package/dist/crdt/vendor/yjs/dts/utils/ID.d.ts +1 -1
- package/dist/crdt/vendor/yjs/dts/utils/RangeCursor.d.ts +37 -58
- package/dist/crdt/vendor/yjs/dts/utils/Transaction.d.ts +3 -78
- package/dist/crdt/vendor/yjs/dts/utils/UpdateDecoder.d.ts +2 -81
- package/dist/crdt/vendor/yjs/dts/utils/UpdateEncoder.d.ts +2 -74
- package/dist/crdt/vendor/yjs/dts/utils/encoding-helpers.d.ts +4 -4
- package/dist/crdt/vendor/yjs/dts/utils/encoding.d.ts +6 -18
- package/dist/crdt/vendor/yjs/dts/utils/ids.d.ts +12 -237
- package/dist/crdt/vendor/yjs/dts/utils/positions.d.ts +5 -0
- package/dist/crdt/vendor/yjs/dts/utils/redo.d.ts +3 -0
- package/dist/crdt/vendor/yjs/dts/utils/transaction-helpers.d.ts +1 -3
- package/dist/crdt/vendor/yjs/dts/utils/updates.d.ts +6 -23
- package/dist/crdt/vendor/yjs/dts/ynode.d.ts +73 -498
- package/dist/crdt/vendor/yjs/global.d.ts +5 -26
- package/dist/crdt/vendor/yjs/src/index.js +11 -25
- package/dist/crdt/vendor/yjs/src/structs/AbstractStruct.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/GC.js +1 -1
- package/dist/crdt/vendor/yjs/src/structs/Item.js +10 -372
- package/dist/crdt/vendor/yjs/src/structs/Skip.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/BlockSet.js +2 -2
- package/dist/crdt/vendor/yjs/src/utils/Doc.js +14 -170
- package/dist/crdt/vendor/yjs/src/utils/ID.js +1 -1
- package/dist/crdt/vendor/yjs/src/utils/RangeCursor.js +61 -128
- package/dist/crdt/vendor/yjs/src/utils/StructStore.js +0 -22
- package/dist/crdt/vendor/yjs/src/utils/Transaction.js +17 -282
- package/dist/crdt/vendor/yjs/src/utils/UpdateDecoder.js +3 -130
- package/dist/crdt/vendor/yjs/src/utils/UpdateEncoder.js +2 -132
- package/dist/crdt/vendor/yjs/src/utils/encoding-helpers.js +4 -4
- package/dist/crdt/vendor/yjs/src/utils/encoding.js +49 -146
- package/dist/crdt/vendor/yjs/src/utils/ids.js +23 -900
- package/dist/crdt/vendor/yjs/src/utils/positions.js +115 -0
- package/dist/crdt/vendor/yjs/src/utils/redo.js +143 -0
- package/dist/crdt/vendor/yjs/src/utils/transaction-helpers.js +10 -127
- package/dist/crdt/vendor/yjs/src/utils/updates.js +7 -50
- package/dist/crdt/vendor/yjs/src/ynode.js +261 -2226
- package/dist/{plugins/blockHandles → dnd}/autoScroll.d.ts +2 -1
- package/dist/{plugins/blockHandles → dnd}/autoScroll.js +3 -3
- package/dist/dnd/pragmatic.d.ts +4 -22
- package/dist/dnd/pragmatic.js +7 -26
- package/dist/dnd/track.d.ts +14 -0
- package/dist/dnd/track.js +55 -0
- package/dist/dnd/vendor/pragmatic/UPSTREAM.md +103 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind-all.js +46 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/bind.js +7 -0
- package/dist/dnd/vendor/pragmatic/bind-event-listener/index.js +2 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.d.ts +57 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/adapter/element-adapter.js +306 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.d.ts +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/adapter.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/element/set-custom-native-drag-preview.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/entry-point/types.d.ts +1 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/get-element-from-point-without-honey-pot.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/honey-pot-data-attribute.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/is-honey-pot-element.js +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/honey-pot-fix/make-honey-pot-fix.js +333 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/internal-types.d.ts +350 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/dispatch-consumer-event.js +128 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/lifecycle-manager.js +340 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/ledger/usage-ledger.js +32 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-adapter.js +59 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-drop-target.js +288 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/make-adapter/make-monitor.js +85 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/combine.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +36 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js +153 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/element/custom-native-drag-preview/types.d.ts +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/public-utils/once.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/add-attribute.js +7 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/android.js +10 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/count-events-for-safari.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-from-another-window.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window-in-safari.js +12 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/changing-window/is-leaving-window.js +55 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/detect-broken-drag.js +48 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/get-input.js +14 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-firefox.js +13 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/is-safari.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/max-z-index.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/text-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/media-types/url-media-type.js +6 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/popover-reset-styles.js +40 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop/util/supports-popover.js +16 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/LICENSE.md +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.d.ts +4 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/entry-point/element.js +8 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/internal-types.d.ts +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/data-attributes.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/get-scroll-by.js +117 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/make-api.js +90 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/over-element/try-scroll.js +183 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/axis.js +22 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/can-scroll-on-edge.js +17 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/configuration.js +49 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/edges.js +9 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/engagement-history.js +43 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-over-element-hitbox.js +50 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-percentage-in-range.js +19 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/get-scroll-change.js +106 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-axis-allowed.js +3 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/is-within.js +11 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/scheduler.js +104 -0
- package/dist/dnd/vendor/pragmatic/pragmatic-drag-and-drop-auto-scroll/shared/side.js +6 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/LICENSE +21 -0
- package/dist/dnd/vendor/pragmatic/raf-schd/raf-schd.esm.js +34 -0
- package/dist/edytor.svelte.d.ts +34 -64
- package/dist/edytor.svelte.js +118 -180
- package/dist/events/beforeInputCommands.d.ts +6 -11
- package/dist/events/beforeInputCommands.js +189 -184
- package/dist/events/beforeInputDeleteCommands.d.ts +20 -1
- package/dist/events/beforeInputDeleteCommands.js +153 -204
- package/dist/events/domTextOffset.d.ts +9 -9
- package/dist/events/domTextOffset.js +20 -48
- package/dist/events/events.utils.d.ts +0 -2
- package/dist/events/events.utils.js +0 -4
- package/dist/events/nativeInteractiveControl.d.ts +13 -13
- package/dist/events/nativeInteractiveControl.js +28 -56
- package/dist/events/onBeforeInput.d.ts +6 -1
- package/dist/events/onBeforeInput.js +207 -331
- package/dist/events/onCopy.js +1 -5
- package/dist/events/onDrop.d.ts +7 -1
- package/dist/events/onDrop.js +33 -72
- package/dist/events/onFocus.d.ts +9 -4
- package/dist/events/onFocus.js +92 -72
- package/dist/events/onInput.d.ts +8 -4
- package/dist/events/onInput.js +34 -147
- package/dist/events/onKeyDown.js +55 -122
- package/dist/events/onPaste.d.ts +13 -1
- package/dist/events/onPaste.js +46 -76
- package/dist/index.d.ts +10 -13
- package/dist/index.js +3 -3
- package/dist/kinds.d.ts +4 -6
- package/dist/kinds.js +28 -27
- package/dist/labels.d.ts +91 -314
- package/dist/labels.js +180 -396
- package/dist/plugins/Chrome.svelte +29 -0
- package/dist/plugins/Chrome.svelte.d.ts +32 -0
- package/dist/plugins/Control.svelte +23 -0
- package/dist/plugins/Control.svelte.d.ts +30 -0
- package/dist/plugins/anchored.svelte.d.ts +47 -0
- package/dist/plugins/anchored.svelte.js +73 -0
- package/dist/plugins/arrowMove/arrowMove.d.ts +2 -1
- package/dist/plugins/arrowMove/arrowMove.js +9 -5
- package/dist/plugins/bands.svelte.d.ts +57 -0
- package/dist/plugins/bands.svelte.js +95 -0
- package/dist/plugins/blockHandles/BlockHandle.svelte +14 -151
- package/dist/plugins/blockHandles/BlockHandle.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/BlockHandleController.svelte.d.ts +63 -97
- package/dist/plugins/blockHandles/BlockHandleController.svelte.js +247 -268
- package/dist/plugins/blockHandles/BlockHandles.svelte +46 -29
- package/dist/plugins/blockHandles/BlockHandles.svelte.d.ts +2 -2
- package/dist/plugins/blockHandles/blockHandlesPlugin.d.ts +29 -23
- package/dist/plugins/blockHandles/blockHandlesPlugin.js +130 -162
- package/dist/plugins/blockHandles/dragPreview.d.ts +8 -6
- package/dist/plugins/blockHandles/dragPreview.js +20 -17
- package/dist/plugins/blockHandles/dropIndicator.js +52 -60
- package/dist/plugins/blockHandles/geometry.d.ts +46 -1
- package/dist/plugins/blockHandles/geometry.js +51 -4
- package/dist/plugins/blockMenu/BlockMenuController.svelte.d.ts +59 -28
- package/dist/plugins/blockMenu/BlockMenuController.svelte.js +180 -105
- package/dist/plugins/blockMenu/blockMenuPlugin.d.ts +1 -3
- package/dist/plugins/blockMenu/blockMenuPlugin.js +12 -29
- package/dist/plugins/brand.d.ts +8 -0
- package/dist/plugins/brand.js +8 -0
- package/dist/plugins/chrome.d.ts +79 -0
- package/dist/plugins/chrome.js +87 -0
- package/dist/plugins/code/CodeHeader.svelte +12 -58
- package/dist/plugins/code/CodeHeader.svelte.d.ts +1 -0
- package/dist/plugins/code/CodePlugin.svelte +75 -56
- package/dist/plugins/code/CodePlugin.svelte.d.ts +0 -2
- package/dist/plugins/code/LanguageMenu.svelte +25 -0
- package/dist/plugins/code/LanguageMenu.svelte.d.ts +9 -0
- package/dist/plugins/code/code.css +5 -100
- package/dist/plugins/code/header.svelte.d.ts +47 -0
- package/dist/plugins/code/header.svelte.js +141 -0
- package/dist/plugins/code/languageMenu.svelte.d.ts +84 -0
- package/dist/plugins/code/languageMenu.svelte.js +199 -0
- package/dist/plugins/code/languages.d.ts +21 -10
- package/dist/plugins/code/languages.js +39 -126
- package/dist/plugins/columns/ColumnResize.svelte +13 -25
- package/dist/plugins/columns/ColumnResize.svelte.d.ts +1 -1
- package/dist/plugins/columns/ColumnsPlugin.svelte +46 -78
- package/dist/plugins/columns/ColumnsPlugin.svelte.d.ts +0 -12
- package/dist/plugins/columns/columns.css +7 -26
- package/dist/plugins/columns/resize.svelte.d.ts +14 -51
- package/dist/plugins/columns/resize.svelte.js +70 -164
- package/dist/plugins/comments/CommentsController.svelte.d.ts +1 -4
- package/dist/plugins/comments/CommentsController.svelte.js +14 -25
- package/dist/plugins/comments/CommentsSidebar.svelte +82 -430
- package/dist/plugins/comments/CommentsSidebar.svelte.d.ts +6 -7
- package/dist/plugins/comments/commentsPlugin.d.ts +31 -10
- package/dist/plugins/comments/commentsPlugin.js +12 -10
- package/dist/plugins/equation/EquationEditor.svelte +18 -129
- package/dist/plugins/equation/EquationEditor.svelte.d.ts +2 -1
- package/dist/plugins/equation/EquationPlugin.svelte +123 -168
- package/dist/plugins/equation/EquationPlugin.svelte.d.ts +5 -3
- package/dist/plugins/equation/EquationView.svelte +20 -11
- package/dist/plugins/equation/equation.svelte.d.ts +74 -36
- package/dist/plugins/equation/equation.svelte.js +74 -66
- package/dist/plugins/equation/importUrl.d.ts +6 -0
- package/dist/plugins/equation/importUrl.js +6 -0
- package/dist/plugins/equation/katex.d.ts +8 -0
- package/dist/plugins/equation/katex.js +77 -0
- package/dist/plugins/find/FindController.svelte.d.ts +8 -13
- package/dist/plugins/find/FindController.svelte.js +34 -55
- package/dist/plugins/find/findPlugin.d.ts +4 -8
- package/dist/plugins/find/findPlugin.js +29 -9
- package/dist/plugins/image/ImageChrome.svelte +5 -151
- package/dist/plugins/image/ImagePlugin.svelte +49 -117
- package/dist/plugins/image/ImagePlugin.svelte.d.ts +1 -24
- package/dist/plugins/image/ImageToolbarHost.svelte +37 -0
- package/dist/plugins/image/ImageToolbarHost.svelte.d.ts +9 -0
- package/dist/plugins/image/controls.svelte.d.ts +6 -57
- package/dist/plugins/image/controls.svelte.js +51 -174
- package/dist/plugins/image/image.d.ts +0 -5
- package/dist/plugins/image/image.js +0 -3
- package/dist/plugins/image/toolbar.svelte.d.ts +69 -0
- package/dist/plugins/image/toolbar.svelte.js +145 -0
- package/dist/plugins/index.d.ts +39 -24
- package/dist/plugins/index.js +30 -22
- package/dist/plugins/list.svelte.d.ts +128 -0
- package/dist/plugins/list.svelte.js +217 -0
- package/dist/plugins/markdownShortcuts.d.ts +1 -1
- package/dist/plugins/markdownShortcuts.js +6 -5
- package/dist/plugins/marquee/MarqueeBox.svelte +15 -0
- package/dist/plugins/marquee/MarqueeBox.svelte.d.ts +9 -0
- package/dist/plugins/marquee/MarqueeController.svelte.d.ts +46 -0
- package/dist/plugins/marquee/MarqueeController.svelte.js +243 -0
- package/dist/plugins/marquee/marquee.d.ts +33 -0
- package/dist/plugins/marquee/marquee.js +89 -0
- package/dist/plugins/marquee/marqueePlugin.d.ts +32 -0
- package/dist/plugins/marquee/marqueePlugin.js +68 -0
- package/dist/plugins/media/AudioPlugin.svelte +3 -88
- package/dist/plugins/media/AudioPlugin.svelte.d.ts +1 -4
- package/dist/plugins/media/BookmarkPlugin.svelte +124 -112
- package/dist/plugins/media/BookmarkPlugin.svelte.d.ts +20 -7
- package/dist/plugins/media/EmbedPlugin.svelte +93 -77
- package/dist/plugins/media/EmbedPlugin.svelte.d.ts +21 -9
- package/dist/plugins/media/EmptySlot.svelte +44 -0
- package/dist/plugins/media/EmptySlot.svelte.d.ts +25 -0
- package/dist/plugins/media/FilePlugin.svelte +35 -111
- package/dist/plugins/media/FilePlugin.svelte.d.ts +12 -4
- package/dist/plugins/media/MediaEmpty.svelte +55 -112
- package/dist/plugins/media/MediaEmpty.svelte.d.ts +26 -10
- package/dist/plugins/media/SourceBlock.svelte +164 -0
- package/dist/plugins/media/SourceBlock.svelte.d.ts +33 -0
- package/dist/plugins/media/VideoPlugin.svelte +4 -97
- package/dist/plugins/media/VideoPlugin.svelte.d.ts +2 -5
- package/dist/plugins/media/empty.svelte.d.ts +69 -0
- package/dist/plugins/media/empty.svelte.js +111 -0
- package/dist/plugins/media/media.d.ts +93 -30
- package/dist/plugins/media/media.js +79 -86
- package/dist/plugins/media/urlPaste.svelte.d.ts +9 -32
- package/dist/plugins/media/urlPaste.svelte.js +46 -75
- package/dist/plugins/mention/MentionPlugin.svelte +47 -124
- package/dist/plugins/mention/MentionPlugin.svelte.d.ts +11 -23
- package/dist/plugins/page/PageLink.svelte +54 -38
- package/dist/plugins/page/PagePlugin.svelte +20 -18
- package/dist/plugins/page/PagePlugin.svelte.d.ts +2 -4
- package/dist/plugins/page/page.d.ts +35 -9
- package/dist/plugins/page/page.js +3 -4
- package/dist/plugins/pageLink/PageLinkPlugin.svelte +52 -108
- package/dist/plugins/pageLink/PageLinkPlugin.svelte.d.ts +11 -23
- package/dist/plugins/planned.d.ts +10 -0
- package/dist/plugins/planned.js +12 -0
- package/dist/plugins/richtext/CalloutIcon.svelte +25 -0
- package/dist/plugins/richtext/CalloutIcon.svelte.d.ts +9 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte +26 -0
- package/dist/plugins/richtext/CalloutIconPicker.svelte.d.ts +9 -0
- package/dist/plugins/richtext/EmptyBody.svelte +25 -0
- package/dist/plugins/richtext/EmptyBody.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextControl.svelte +39 -0
- package/dist/plugins/richtext/RichTextControl.svelte.d.ts +8 -0
- package/dist/plugins/richtext/RichTextPlugin.svelte +272 -148
- package/dist/plugins/richtext/RichTextPlugin.svelte.d.ts +37 -18
- package/dist/plugins/richtext/TodoCheckbox.svelte +10 -21
- package/dist/plugins/richtext/TodoCheckbox.svelte.d.ts +0 -2
- package/dist/plugins/richtext/body.d.ts +9 -0
- package/dist/plugins/richtext/body.js +16 -0
- package/dist/plugins/richtext/calloutIcons.svelte.d.ts +97 -0
- package/dist/plugins/richtext/calloutIcons.svelte.js +214 -0
- package/dist/plugins/richtext/callouts.d.ts +15 -0
- package/dist/plugins/richtext/callouts.js +23 -0
- package/dist/plugins/richtext/controls.svelte.d.ts +110 -0
- package/dist/plugins/richtext/controls.svelte.js +126 -0
- package/dist/plugins/richtext/richTextOperations.js +37 -28
- package/dist/plugins/slashMenu/SlashMenuController.svelte.d.ts +18 -11
- package/dist/plugins/slashMenu/SlashMenuController.svelte.js +93 -35
- package/dist/plugins/slashMenu/slashMenuPlugin.d.ts +11 -24
- package/dist/plugins/slashMenu/slashMenuPlugin.js +27 -68
- package/dist/plugins/suggestions/SuggestionBars.svelte +32 -84
- package/dist/plugins/suggestions/SuggestionBars.svelte.d.ts +9 -3
- package/dist/plugins/suggestions/suggestionsPlugin.d.ts +10 -16
- package/dist/plugins/suggestions/suggestionsPlugin.js +9 -24
- package/dist/plugins/table/TableChrome.svelte +96 -127
- package/dist/plugins/table/TableChrome.svelte.d.ts +5 -1
- package/dist/plugins/table/TablePlugin.svelte +116 -171
- package/dist/plugins/table/TablePlugin.svelte.d.ts +0 -4
- package/dist/plugins/table/chrome.svelte.d.ts +110 -117
- package/dist/plugins/table/chrome.svelte.js +643 -289
- package/dist/plugins/table/ops.d.ts +47 -0
- package/dist/plugins/table/ops.js +233 -0
- package/dist/plugins/table/table.css +55 -134
- package/dist/plugins/table/table.d.ts +26 -7
- package/dist/plugins/table/table.js +23 -49
- package/dist/plugins/toc/TableOfContents.svelte +32 -38
- package/dist/plugins/toc/TableOfContents.svelte.d.ts +1 -5
- package/dist/plugins/toc/TocPlugin.svelte +22 -22
- package/dist/plugins/toc/TocPlugin.svelte.d.ts +4 -6
- package/dist/plugins/toc/toc.d.ts +41 -10
- package/dist/plugins/toc/toc.js +2 -3
- package/dist/plugins/toolbar/ToolbarController.svelte.d.ts +29 -66
- package/dist/plugins/toolbar/ToolbarController.svelte.js +151 -76
- package/dist/plugins/toolbar/toolbarPlugin.d.ts +14 -13
- package/dist/plugins/toolbar/toolbarPlugin.js +28 -43
- package/dist/plugins/triggers/TriggerController.svelte.d.ts +6 -45
- package/dist/plugins/triggers/TriggerController.svelte.js +51 -96
- package/dist/plugins/triggers/place.d.ts +0 -9
- package/dist/plugins/triggers/place.js +1 -17
- package/dist/plugins/triggers/triggers.d.ts +31 -9
- package/dist/plugins/triggers/triggers.js +82 -62
- package/dist/plugins/uploads.svelte.d.ts +38 -20
- package/dist/plugins/uploads.svelte.js +39 -32
- package/dist/plugins.d.ts +167 -60
- package/dist/selection/domSelection.d.ts +13 -4
- package/dist/selection/domSelection.js +110 -183
- package/dist/selection/pointer.svelte.d.ts +12 -10
- package/dist/selection/pointer.svelte.js +154 -71
- package/dist/selection/replaceSelection.d.ts +21 -22
- package/dist/selection/replaceSelection.js +60 -69
- package/dist/selection/selection.svelte.d.ts +5 -73
- package/dist/selection/selection.svelte.js +263 -542
- package/dist/selection/selection.utils.d.ts +34 -11
- package/dist/selection/selection.utils.js +128 -247
- package/dist/selection/visibility.d.ts +11 -8
- package/dist/selection/visibility.js +23 -8
- package/dist/session/announcer.svelte.d.ts +2 -1
- package/dist/session/announcer.svelte.js +7 -3
- package/dist/session/attempt.d.ts +33 -39
- package/dist/session/attempt.js +61 -53
- package/dist/session/bindings.js +108 -139
- package/dist/session/commands.d.ts +47 -22
- package/dist/session/commands.js +206 -208
- package/dist/session/composition.svelte.d.ts +2 -4
- package/dist/session/composition.svelte.js +55 -65
- package/dist/session/editing/text.d.ts +6 -0
- package/dist/session/editing/text.js +17 -3
- package/dist/session/handles.d.ts +10 -1
- package/dist/session/handles.js +28 -0
- package/dist/session/history.d.ts +0 -4
- package/dist/session/history.js +15 -21
- package/dist/session/inputRules.js +75 -84
- package/dist/session/keymap.d.ts +1 -6
- package/dist/session/keymap.js +17 -20
- package/dist/session/moves.d.ts +10 -10
- package/dist/session/moves.js +31 -59
- package/dist/session/navigation.d.ts +18 -3
- package/dist/session/navigation.js +194 -153
- package/dist/session/ports.d.ts +7 -0
- package/dist/session/selection.d.ts +4 -3
- package/dist/session/selection.js +8 -0
- package/dist/session/suggestions.svelte.d.ts +1 -1
- package/dist/session/suggestions.svelte.js +64 -47
- package/dist/session/virtual.d.ts +3 -3
- package/dist/session/virtual.js +18 -40
- package/dist/surface/attributes.d.ts +1 -0
- package/dist/surface/attributes.js +3 -26
- package/dist/surface/cells.d.ts +5 -0
- package/dist/surface/cells.js +5 -0
- package/dist/surface/lines.d.ts +32 -0
- package/dist/surface/lines.js +43 -0
- package/dist/surface/observer.svelte.d.ts +3 -20
- package/dist/surface/observer.svelte.js +73 -77
- package/dist/surface/overlay.d.ts +48 -6
- package/dist/surface/overlay.js +133 -23
- package/dist/surface/pin.svelte.d.ts +5 -0
- package/dist/surface/pin.svelte.js +5 -0
- package/dist/surface/projector.svelte.d.ts +4 -6
- package/dist/surface/projector.svelte.js +42 -69
- package/dist/text/text.svelte.d.ts +14 -40
- package/dist/text/text.svelte.js +35 -51
- package/dist/text/wordBoundary.d.ts +19 -0
- package/dist/text/wordBoundary.js +29 -44
- package/dist/themes/notion.css +315 -126
- package/dist/utils/json.d.ts +3 -1
- package/dist/utils/json.js +52 -51
- package/dist/utils/listen.d.ts +8 -0
- package/dist/utils/listen.js +19 -0
- package/package.json +4 -5
- package/dist/block/block.utils.d.ts +0 -340
- package/dist/block/block.utils.js +0 -356
- package/dist/collaboration/history/HistoryPanel.svelte +0 -525
- package/dist/collaboration/history/HistoryPanel.svelte.d.ts +0 -7
- package/dist/collaboration/history/panel.d.ts +0 -43
- package/dist/collaboration/history/panel.js +0 -3
- package/dist/components/SuggestionRanges.svelte +0 -58
- package/dist/components/SuggestionRanges.svelte.d.ts +0 -7
- package/dist/crdt/doc/table.d.ts +0 -21
- package/dist/crdt/doc/table.js +0 -288
- package/dist/crdt/migration/generation.d.ts +0 -58
- package/dist/crdt/migration/generation.js +0 -70
- package/dist/crdt/migration/legacy-schema.d.ts +0 -61
- package/dist/crdt/migration/legacy-schema.js +0 -151
- package/dist/crdt/migration/migrate.d.ts +0 -56
- package/dist/crdt/migration/migrate.js +0 -227
- package/dist/crdt/nodes.d.ts +0 -121
- package/dist/crdt/nodes.js +0 -56
- package/dist/crdt/text/index/checks.d.ts +0 -15
- package/dist/crdt/text/index/checks.js +0 -156
- package/dist/crdt/vendor/yjs/dts/utils/EventHandler.d.ts +0 -17
- package/dist/crdt/vendor/yjs/dts/utils/RelativePosition.d.ts +0 -80
- package/dist/crdt/vendor/yjs/dts/utils/UndoManager.d.ts +0 -205
- package/dist/crdt/vendor/yjs/dts/utils/YEvent.d.ts +0 -93
- package/dist/crdt/vendor/yjs/dts/utils/meta.d.ts +0 -25
- package/dist/crdt/vendor/yjs/dts/utils/renderer-helpers.d.ts +0 -98
- package/dist/crdt/vendor/yjs/dts/utils/schemas.d.ts +0 -2
- package/dist/crdt/vendor/yjs/src/utils/EventHandler.js +0 -75
- package/dist/crdt/vendor/yjs/src/utils/RelativePosition.js +0 -301
- package/dist/crdt/vendor/yjs/src/utils/UndoManager.js +0 -554
- package/dist/crdt/vendor/yjs/src/utils/YEvent.js +0 -158
- package/dist/crdt/vendor/yjs/src/utils/meta.js +0 -74
- package/dist/crdt/vendor/yjs/src/utils/renderer-helpers.js +0 -186
- package/dist/crdt/vendor/yjs/src/utils/schemas.js +0 -3
- package/dist/edytor.utils.d.ts +0 -50
- package/dist/edytor.utils.js +0 -67
- package/dist/plugins/blockMenu/BlockMenu.svelte +0 -447
- package/dist/plugins/blockMenu/BlockMenu.svelte.d.ts +0 -9
- package/dist/plugins/find/FindBar.svelte +0 -170
- package/dist/plugins/find/FindBar.svelte.d.ts +0 -9
- package/dist/plugins/find/FindHighlights.svelte +0 -75
- package/dist/plugins/find/FindHighlights.svelte.d.ts +0 -9
- package/dist/plugins/icons.d.ts +0 -2
- package/dist/plugins/icons.js +0 -63
- package/dist/plugins/image/ImageEmpty.svelte +0 -116
- package/dist/plugins/image/ImageEmpty.svelte.d.ts +0 -12
- package/dist/plugins/keepInView.d.ts +0 -4
- package/dist/plugins/keepInView.js +0 -6
- package/dist/plugins/media/UrlPasteMenu.svelte +0 -83
- package/dist/plugins/media/UrlPasteMenu.svelte.d.ts +0 -7
- package/dist/plugins/richtext/labels.d.ts +0 -5
- package/dist/plugins/richtext/labels.js +0 -3
- package/dist/plugins/slashMenu/SlashMenu.svelte +0 -360
- package/dist/plugins/slashMenu/SlashMenu.svelte.d.ts +0 -11
- package/dist/plugins/toolbar/LinkCard.svelte +0 -118
- package/dist/plugins/toolbar/LinkCard.svelte.d.ts +0 -7
- package/dist/plugins/toolbar/Toolbar.svelte +0 -400
- package/dist/plugins/toolbar/Toolbar.svelte.d.ts +0 -9
- package/dist/plugins/triggers/TriggerMenu.svelte +0 -144
- package/dist/plugins/triggers/TriggerMenu.svelte.d.ts +0 -7
- package/dist/session/props.d.ts +0 -28
- package/dist/session/props.js +0 -162
- package/dist/text/deltas.d.ts +0 -22
- package/dist/text/deltas.js +0 -46
- package/dist/text/text.utils.d.ts +0 -45
- package/dist/text/text.utils.js +0 -199
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
+
import { escapeHtml } from '../../clipboard/serializeClipboardFragment.js';
|
|
2
3
|
import type { Plugin, BlockSnippetPayload } from '../../plugins.js';
|
|
4
|
+
import { branded } from '../brand.js';
|
|
3
5
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
4
|
-
import
|
|
6
|
+
import EmptySlot from '../media/EmptySlot.svelte';
|
|
5
7
|
import ImageChrome from './ImageChrome.svelte';
|
|
6
8
|
import { imageKinds } from '../../crdt/semantics.js';
|
|
7
9
|
import {
|
|
8
10
|
imageAlignOf,
|
|
9
11
|
imageAltOf,
|
|
10
12
|
imageWidthOf,
|
|
11
|
-
imageLabels,
|
|
12
13
|
imgData,
|
|
13
14
|
isImageFile,
|
|
14
15
|
MAX_INLINE_IMAGE_BYTES,
|
|
@@ -18,10 +19,10 @@
|
|
|
18
19
|
storableImageSrc,
|
|
19
20
|
type ImageAlign
|
|
20
21
|
} from './image.js';
|
|
21
|
-
import { ImageControls } from './controls.svelte.js';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
22
|
+
import { ImageControls, imageControls } from './controls.svelte.js';
|
|
23
|
+
import { MEDIA_ICONS, type EmptyView } from '../media/empty.svelte.js';
|
|
24
|
+
import { imageEnglish, keywordsOf, labelsOf } from '../../labels.js';
|
|
25
|
+
import { listen } from '../../utils/listen.js';
|
|
25
26
|
|
|
26
27
|
export {
|
|
27
28
|
MAX_INLINE_IMAGE_BYTES,
|
|
@@ -32,42 +33,15 @@
|
|
|
32
33
|
type ImageAlign
|
|
33
34
|
};
|
|
34
35
|
|
|
35
|
-
export type ImagePluginOptions = {
|
|
36
|
-
/**
|
|
37
|
-
* Upload a file and answer its URL. Adds an Upload button to the empty
|
|
38
|
-
* block, and claims pasted and dropped image files: each is placed as an
|
|
39
|
-
* image block at once (one undo step) and filled with the URL this
|
|
40
|
-
* answers (the block shows the progress it reports). Without it only
|
|
41
|
-
* links are embedded.
|
|
42
|
-
*/
|
|
43
|
-
upload?: Uploader;
|
|
44
|
-
/** The words the block, its empty panel and its chrome show, over the English ones. */
|
|
45
|
-
labels?: PartialLabels<'image'>;
|
|
46
|
-
/**
|
|
47
|
-
* The slash menu's keywords of the image command (`block.image`), which
|
|
48
|
-
* replace its own.
|
|
49
|
-
*/
|
|
50
|
-
keywords?: Partial<Record<string, string[]>>;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
36
|
/** The data an image block reads (all optional). */
|
|
54
37
|
export type ImageData = { src?: string; alt?: string; width?: number; align?: ImageAlign };
|
|
55
38
|
|
|
56
|
-
const escape = (value: string) => value.replace(/[&<>"]/g, (c) => `&#${c.charCodeAt(0)};`);
|
|
57
39
|
const px = (width: number | undefined) => (width === undefined ? undefined : `${width}px`);
|
|
58
40
|
|
|
59
|
-
/** One view's image state: its
|
|
60
|
-
type View = {
|
|
61
|
-
upload?: Uploader;
|
|
62
|
-
controls: ImageControls;
|
|
63
|
-
uploads?: FileUploads;
|
|
64
|
-
};
|
|
41
|
+
/** One view's image state: its source rule, the chrome. */
|
|
42
|
+
type View = EmptyView & { controls: ImageControls };
|
|
65
43
|
/** By view; the first image plugin of a view owns it, as its kind's definition (first wins). */
|
|
66
44
|
const views = new WeakMap<Edytor, View>();
|
|
67
|
-
const imagePlugins = new WeakSet<Plugin>();
|
|
68
|
-
|
|
69
|
-
/** Recognize any image plugin instance (the component's default yields to yours). */
|
|
70
|
-
export const isImagePlugin = (plugin: Plugin) => imagePlugins.has(plugin);
|
|
71
45
|
|
|
72
46
|
/**
|
|
73
47
|
* Notion's image block: an "Add an image" panel until it has a source (a
|
|
@@ -75,39 +49,27 @@
|
|
|
75
49
|
* an editable caption, its alt text, width and alignment set from the
|
|
76
50
|
* chrome the plugin shows over it. Void: its only text is the caption.
|
|
77
51
|
*/
|
|
78
|
-
export const createImagePlugin = (
|
|
79
|
-
const { upload } = pluginOptions;
|
|
80
|
-
const labels = labelsWith('image', pluginOptions.labels);
|
|
52
|
+
export const createImagePlugin = (): Plugin => {
|
|
81
53
|
const plugin: Plugin = (edytor) => {
|
|
82
|
-
|
|
54
|
+
const labels = labelsOf(edytor, 'image', imageEnglish);
|
|
83
55
|
const own: View = {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
56
|
+
controls: new ImageControls(edytor),
|
|
57
|
+
// An accepted source; an inline image over the cap is never stored.
|
|
58
|
+
store: (block, value) => {
|
|
59
|
+
const src = safeImageSrc(value);
|
|
60
|
+
if (!src) return 'invalid';
|
|
61
|
+
if (oversizedInlineImage(src)) return 'inline';
|
|
62
|
+
block.edytor.patchData(block.id, [{ path: ['src'], value: src }]);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
87
65
|
};
|
|
88
66
|
// The records read with no view (`plugin(undefined)`) keep no state.
|
|
89
67
|
if (edytor && !views.has(edytor)) {
|
|
90
68
|
views.set(edytor, own);
|
|
91
|
-
|
|
92
|
-
own.uploads?.register({
|
|
93
|
-
type: 'image',
|
|
94
|
-
accepts: isImageFile,
|
|
95
|
-
upload,
|
|
96
|
-
data: (_file, answer) => {
|
|
97
|
-
const src = storableImageSrc(answer);
|
|
98
|
-
return src ? { src } : null;
|
|
99
|
-
},
|
|
100
|
-
filled: (data) => safeImageSrc(data.src) !== null,
|
|
101
|
-
preview: true
|
|
102
|
-
});
|
|
69
|
+
imageControls.set(edytor, own.controls);
|
|
103
70
|
}
|
|
104
71
|
const owns = () => views.get(edytor) === own;
|
|
105
72
|
return {
|
|
106
|
-
// Pasted or dropped files (a drop replays the paste hooks): the
|
|
107
|
-
// view's uploads place a block per file of every kind that uploads.
|
|
108
|
-
onPaste: (payload) => {
|
|
109
|
-
if (owns()) own.uploads?.paste(payload);
|
|
110
|
-
},
|
|
111
73
|
// The chrome: in the overlay, for the image under the pointer.
|
|
112
74
|
onEdytorAttached: ({ node }) => {
|
|
113
75
|
if (!owns()) return;
|
|
@@ -116,11 +78,9 @@
|
|
|
116
78
|
const leave = (event: PointerEvent) =>
|
|
117
79
|
!controls.drag && controls.leave(event.relatedTarget);
|
|
118
80
|
const layer = edytor.overlay.layer;
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
node.addEventListener('pointerleave', leave);
|
|
123
|
-
layer?.addEventListener('pointerleave', leave);
|
|
81
|
+
const off = listen(node, 'pointerover', over);
|
|
82
|
+
const off2 = listen(node, 'pointerleave', leave);
|
|
83
|
+
const off3 = listen(layer, 'pointerleave', leave);
|
|
124
84
|
const unmount = edytor.overlay.mount(
|
|
125
85
|
ImageChrome,
|
|
126
86
|
{ controls },
|
|
@@ -130,12 +90,10 @@
|
|
|
130
90
|
controls.measure
|
|
131
91
|
);
|
|
132
92
|
return () => {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
offPress();
|
|
93
|
+
off();
|
|
94
|
+
off2();
|
|
95
|
+
off3();
|
|
137
96
|
unmount();
|
|
138
|
-
own.uploads?.destroy();
|
|
139
97
|
};
|
|
140
98
|
},
|
|
141
99
|
blocks: {
|
|
@@ -143,15 +101,21 @@
|
|
|
143
101
|
...imageKinds.image,
|
|
144
102
|
snippet: image,
|
|
145
103
|
element: 'figure',
|
|
104
|
+
// Image files: with the uploads plugin, an Upload and pasted or dropped files.
|
|
105
|
+
upload: {
|
|
106
|
+
accepts: isImageFile,
|
|
107
|
+
data: (_file, answer) => {
|
|
108
|
+
const src = storableImageSrc(answer);
|
|
109
|
+
return src ? { src } : null;
|
|
110
|
+
},
|
|
111
|
+
filled: (data) => safeImageSrc(data.src) !== null,
|
|
112
|
+
preview: true
|
|
113
|
+
},
|
|
146
114
|
presets: [
|
|
147
115
|
{
|
|
148
116
|
label: labels.image,
|
|
149
|
-
icon:
|
|
150
|
-
keywords: keywordsOf(
|
|
151
|
-
'block.image',
|
|
152
|
-
['picture', 'photo', 'img'],
|
|
153
|
-
pluginOptions.keywords
|
|
154
|
-
),
|
|
117
|
+
icon: MEDIA_ICONS.image,
|
|
118
|
+
keywords: keywordsOf(edytor, 'block.image', ['picture', 'photo', 'img']),
|
|
155
119
|
group: 'Media'
|
|
156
120
|
}
|
|
157
121
|
],
|
|
@@ -160,7 +124,7 @@
|
|
|
160
124
|
const width = imageWidthOf(block.data);
|
|
161
125
|
const align = imageAlignOf(block.data);
|
|
162
126
|
const img = src
|
|
163
|
-
? `<img src="${
|
|
127
|
+
? `<img src="${escapeHtml(src)}" alt="${escapeHtml(imageAltOf(block.data))}"${width ? ` width="${Math.round(width)}"` : ''}>`
|
|
164
128
|
: '';
|
|
165
129
|
const at = align === 'center' ? '' : ` data-align="${align}"`;
|
|
166
130
|
return `<figure${at}>${img}<figcaption>${caption}</figcaption></figure>`;
|
|
@@ -179,19 +143,16 @@
|
|
|
179
143
|
};
|
|
180
144
|
};
|
|
181
145
|
|
|
182
|
-
|
|
183
|
-
return plugin;
|
|
146
|
+
return branded('image', plugin);
|
|
184
147
|
};
|
|
185
|
-
|
|
186
|
-
/** The image block, links only. */
|
|
187
|
-
export const imagePlugin = createImagePlugin();
|
|
188
148
|
</script>
|
|
189
149
|
|
|
150
|
+
<!-- No whitespace before the caption (one node per block less to walk). -->
|
|
151
|
+
<!-- prettier-ignore -->
|
|
190
152
|
{#snippet image({ block, content }: BlockSnippetPayload<ImageData>)}
|
|
191
153
|
<!-- A suggestion's preview (no handle) reads only its data. -->
|
|
192
154
|
{@const view = block.handle ? views.get(block.handle.edytor) : undefined}
|
|
193
155
|
{@const src = safeImageSrc(block.data.src)}
|
|
194
|
-
{@const upload = src ? undefined : view?.uploads?.of(block.id)}
|
|
195
156
|
{#if src}
|
|
196
157
|
<div use:block.void data-edytor-image data-align={imageAlignOf(block.data)}>
|
|
197
158
|
<img
|
|
@@ -203,28 +164,17 @@
|
|
|
203
164
|
)}
|
|
204
165
|
/>
|
|
205
166
|
</div>
|
|
206
|
-
{:else if upload?.status === 'uploading'}
|
|
207
|
-
<div use:block.void data-edytor-image data-edytor-image-uploading data-align="center">
|
|
208
|
-
{#if upload.preview}<img src={upload.preview} alt="" draggable="false" />{/if}
|
|
209
|
-
<span data-edytor-image-progress role="status">
|
|
210
|
-
<progress value={upload.progress ?? undefined} max="1"></progress>
|
|
211
|
-
{imageLabels.of(block.handle?.edytor).uploading}
|
|
212
|
-
</span>
|
|
213
|
-
</div>
|
|
214
167
|
{:else}
|
|
215
168
|
<div use:block.void data-edytor-image-empty>
|
|
216
|
-
<
|
|
169
|
+
<EmptySlot
|
|
217
170
|
block={block.handle}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
error={upload?.status === 'failed' ? 'upload' : null}
|
|
221
|
-
landed={upload?.status === 'landed'}
|
|
171
|
+
kind="image"
|
|
172
|
+
viewOf={(edytor) => (edytor ? views.get(edytor) : undefined)}
|
|
222
173
|
/>
|
|
223
174
|
</div>
|
|
224
|
-
{/if}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
<figcaption>{@render content()}</figcaption>
|
|
175
|
+
{/if}<!--
|
|
176
|
+
The core renders the kind's <figure> around this markup.
|
|
177
|
+
--><!-- svelte-ignore a11y_figcaption_parent --><figcaption>{@render content()}</figcaption>
|
|
228
178
|
{/snippet}
|
|
229
179
|
|
|
230
180
|
<style>
|
|
@@ -243,22 +193,4 @@
|
|
|
243
193
|
[data-edytor-image] img {
|
|
244
194
|
max-width: 100%;
|
|
245
195
|
}
|
|
246
|
-
[data-edytor-image-uploading] {
|
|
247
|
-
min-height: 48px;
|
|
248
|
-
border-radius: 4px;
|
|
249
|
-
background: rgba(55, 53, 47, 0.04);
|
|
250
|
-
}
|
|
251
|
-
[data-edytor-image-uploading] img {
|
|
252
|
-
opacity: 0.5;
|
|
253
|
-
}
|
|
254
|
-
[data-edytor-image-progress] {
|
|
255
|
-
position: absolute;
|
|
256
|
-
top: 8px;
|
|
257
|
-
right: 8px;
|
|
258
|
-
padding: 2px 8px;
|
|
259
|
-
border-radius: 4px;
|
|
260
|
-
background: rgba(15, 15, 15, 0.6);
|
|
261
|
-
color: #fff;
|
|
262
|
-
font-size: 12px;
|
|
263
|
-
}
|
|
264
196
|
</style>
|
|
@@ -1,25 +1,6 @@
|
|
|
1
1
|
import type { Plugin } from '../../plugins.js';
|
|
2
2
|
import { MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, oversizedInlineImage, safeImageSrc, storableImageSrc, type ImageAlign } from './image.js';
|
|
3
|
-
import { type Uploader } from '../uploads.svelte.js';
|
|
4
|
-
import { type PartialLabels } from '../../labels.js';
|
|
5
3
|
export { MAX_INLINE_IMAGE_BYTES, MIN_IMAGE_WIDTH, oversizedInlineImage, safeImageSrc, storableImageSrc, type ImageAlign };
|
|
6
|
-
export type ImagePluginOptions = {
|
|
7
|
-
/**
|
|
8
|
-
* Upload a file and answer its URL. Adds an Upload button to the empty
|
|
9
|
-
* block, and claims pasted and dropped image files: each is placed as an
|
|
10
|
-
* image block at once (one undo step) and filled with the URL this
|
|
11
|
-
* answers (the block shows the progress it reports). Without it only
|
|
12
|
-
* links are embedded.
|
|
13
|
-
*/
|
|
14
|
-
upload?: Uploader;
|
|
15
|
-
/** The words the block, its empty panel and its chrome show, over the English ones. */
|
|
16
|
-
labels?: PartialLabels<'image'>;
|
|
17
|
-
/**
|
|
18
|
-
* The slash menu's keywords of the image command (`block.image`), which
|
|
19
|
-
* replace its own.
|
|
20
|
-
*/
|
|
21
|
-
keywords?: Partial<Record<string, string[]>>;
|
|
22
|
-
};
|
|
23
4
|
/** The data an image block reads (all optional). */
|
|
24
5
|
export type ImageData = {
|
|
25
6
|
src?: string;
|
|
@@ -27,17 +8,13 @@ export type ImageData = {
|
|
|
27
8
|
width?: number;
|
|
28
9
|
align?: ImageAlign;
|
|
29
10
|
};
|
|
30
|
-
/** Recognize any image plugin instance (the component's default yields to yours). */
|
|
31
|
-
export declare const isImagePlugin: (plugin: Plugin) => boolean;
|
|
32
11
|
/**
|
|
33
12
|
* Notion's image block: an "Add an image" panel until it has a source (a
|
|
34
13
|
* pasted link, or an upload when `upload` is given), then the image with
|
|
35
14
|
* an editable caption, its alt text, width and alignment set from the
|
|
36
15
|
* chrome the plugin shows over it. Void: its only text is the caption.
|
|
37
16
|
*/
|
|
38
|
-
export declare const createImagePlugin: (
|
|
39
|
-
/** The image block, links only. */
|
|
40
|
-
export declare const imagePlugin: Plugin;
|
|
17
|
+
export declare const createImagePlugin: () => Plugin;
|
|
41
18
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
42
19
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
43
20
|
$$bindings?: Bindings;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { ImageToolbar } from './toolbar.svelte.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The image toolbar's place: the app's `toolbar` at the top right of the
|
|
7
|
+
* image the chrome is on, while it shows and no handle drags.
|
|
8
|
+
*/
|
|
9
|
+
let { toolbar, snippet }: { toolbar: ImageToolbar; snippet: Snippet<[ImageToolbar]> } = $props();
|
|
10
|
+
const controls = $derived(toolbar.controls);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
{#if controls.shown && controls.box && !controls.drag}
|
|
14
|
+
{@const box = controls.box}
|
|
15
|
+
<div
|
|
16
|
+
data-edytor-image-toolbar-slot
|
|
17
|
+
style:left="{box.x + box.width - 6}px"
|
|
18
|
+
style:top="{box.y + 6}px"
|
|
19
|
+
data-selecting={controls.selecting ? 'true' : undefined}
|
|
20
|
+
>
|
|
21
|
+
{@render snippet(toolbar)}
|
|
22
|
+
</div>
|
|
23
|
+
{/if}
|
|
24
|
+
|
|
25
|
+
<style>
|
|
26
|
+
/* The toolbar's place: the image's top right, sized to its markup. */
|
|
27
|
+
[data-edytor-image-toolbar-slot] {
|
|
28
|
+
position: absolute;
|
|
29
|
+
width: max-content;
|
|
30
|
+
transform: translateX(-100%);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* A text selection in progress: the chrome takes no pointer. */
|
|
34
|
+
[data-selecting='true'] {
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { ImageToolbar } from './toolbar.svelte.js';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
toolbar: ImageToolbar;
|
|
5
|
+
snippet: Snippet<[ImageToolbar]>;
|
|
6
|
+
};
|
|
7
|
+
declare const ImageToolbarHost: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type ImageToolbarHost = ReturnType<typeof ImageToolbarHost>;
|
|
9
|
+
export default ImageToolbarHost;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Edytor } from '../../edytor.svelte.js';
|
|
2
|
-
import { type ImageLabels } from '../../labels.js';
|
|
3
2
|
import { type ImageAlign } from './image.js';
|
|
4
3
|
/** The hovered image, layer-relative: the `img` box, and its frame's width (the most it may take). */
|
|
5
4
|
export type ImageBox = {
|
|
@@ -38,25 +37,15 @@ type Drag = {
|
|
|
38
37
|
*/
|
|
39
38
|
export declare class ImageControls {
|
|
40
39
|
#private;
|
|
41
|
-
private edytor;
|
|
42
|
-
/** The words the chrome shows (the plugin's `labels`). */
|
|
43
|
-
readonly labels: ImageLabels;
|
|
44
40
|
/** The image block under the pointer. */
|
|
45
41
|
hovered: string | null;
|
|
46
|
-
/** The image whose alt field is open: the chrome stays on it. */
|
|
47
|
-
editing: string | null;
|
|
48
42
|
/** The measured box of the image the chrome is on. */
|
|
49
43
|
box: ImageBox | null;
|
|
44
|
+
constructor(
|
|
45
|
+
/** @internal */
|
|
46
|
+
edytor: Edytor);
|
|
50
47
|
/** The handle being dragged. */
|
|
51
|
-
drag: Drag | null;
|
|
52
|
-
/** The dragged image's width at the pointer (view only). */
|
|
53
|
-
preview: {
|
|
54
|
-
id: string;
|
|
55
|
-
width: number;
|
|
56
|
-
} | null;
|
|
57
|
-
constructor(edytor: Edytor,
|
|
58
|
-
/** The words the chrome shows (the plugin's `labels`). */
|
|
59
|
-
labels?: ImageLabels);
|
|
48
|
+
get drag(): Drag | null;
|
|
60
49
|
/** The view is readonly (reactive). */
|
|
61
50
|
get readonly(): boolean;
|
|
62
51
|
/** A text selection is in progress: the chrome takes no pointer. */
|
|
@@ -70,47 +59,7 @@ export declare class ImageControls {
|
|
|
70
59
|
get target(): string | null;
|
|
71
60
|
/** Whether the chrome shows: over an image of an editable view, or while a handle drags. */
|
|
72
61
|
get shown(): boolean;
|
|
73
|
-
/** An image's width as shown, in px: the drag's preview while a handle drags it, else `data.width`. */
|
|
74
|
-
width: (id: string | undefined, data: Record<string, unknown> | undefined) => number | undefined;
|
|
75
|
-
/** The pointer is over `target`: the image block holding it, if any. */
|
|
76
|
-
hover: (target: EventTarget | null) => void;
|
|
77
|
-
/** The pointer left for `to`: the chrome stays while it is over the editor's overlay. */
|
|
78
|
-
leave: (to: EventTarget | null) => void;
|
|
79
|
-
/** The overlay measure: the target image's box. */
|
|
80
|
-
measure: (host: HTMLElement, origin: DOMRect) => () => void;
|
|
81
|
-
/** Measure again in the overlay's next frame. */
|
|
82
|
-
invalidate: () => void;
|
|
83
|
-
/** Set the target image's alignment: one `patchData` command. */
|
|
84
|
-
align: (align: ImageAlign) => void;
|
|
85
|
-
/** The target image's alt text. */
|
|
86
|
-
get alt(): string;
|
|
87
|
-
/** Write the alt text as it is typed: the dispatcher groups the keystrokes into one step. */
|
|
88
|
-
setAlt: (alt: string) => void;
|
|
89
|
-
/** Open (or close) the alt field of the target image. */
|
|
90
|
-
toggleAlt: () => void;
|
|
91
|
-
/**
|
|
92
|
-
* A press anywhere (`onPress`, capture): one outside the alt panel and the
|
|
93
|
-
* toolbar (whose Alt button toggles it) closes the field, so the chrome
|
|
94
|
-
* follows the pointer again.
|
|
95
|
-
*/
|
|
96
|
-
pressed: (event: MouseEvent) => void;
|
|
97
|
-
/** Focus left the alt field: for somewhere outside its panel, the field closes. */
|
|
98
|
-
blurred: (event: FocusEvent) => void;
|
|
99
|
-
/** Close the alt field; with `keys`, the editor takes the keys back. */
|
|
100
|
-
closeAlt: (keys?: boolean) => void;
|
|
101
|
-
/**
|
|
102
|
-
* A `mousedown` on a handle: no native selection starts there; the press
|
|
103
|
-
* itself when no `pointerdown` came before it (`isLonePress`: WebKit's
|
|
104
|
-
* first press after a drag), which starts the drag as one would.
|
|
105
|
-
*/
|
|
106
|
-
mousedown: (event: MouseEvent, side: Drag["side"]) => void;
|
|
107
|
-
/**
|
|
108
|
-
* Press on a handle: the drag starts, nothing is written until the
|
|
109
|
-
* release. A `pointerdown` tracks its pointer (captured, on the document);
|
|
110
|
-
* a lone `mousedown` tracks the mouse on the window.
|
|
111
|
-
*/
|
|
112
|
-
start: (event: PointerEvent | MouseEvent, side: Drag["side"]) => void;
|
|
113
|
-
/** The view turned readonly: a drag in progress ends at once, nothing written. */
|
|
114
|
-
lock: () => void;
|
|
115
62
|
}
|
|
63
|
+
/** Each view's image chrome (the first image plugin listed claims it). */
|
|
64
|
+
export declare const imageControls: WeakMap<object, ImageControls>;
|
|
116
65
|
export {};
|