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