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
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Vendored Pragmatic drag and drop — provenance & changes
|
|
2
|
+
|
|
3
|
+
Atlassian's Pragmatic drag and drop, forked inside edytor: only the modules
|
|
4
|
+
edytor reaches, as the packages publish them, so the block handles' and the
|
|
5
|
+
table grips' drags run the library's own logic without depending on its
|
|
6
|
+
packages. `src/lib/dnd/pragmatic.ts` is the one importer; nothing else in
|
|
7
|
+
edytor imports from this directory. Do not edit these files by hand: re-sync
|
|
8
|
+
(below) and record every change here.
|
|
9
|
+
|
|
10
|
+
## Pinned source
|
|
11
|
+
|
|
12
|
+
| Package | Version | npm integrity (`pnpm-lock.yaml` before the fork) | License |
|
|
13
|
+
| ----------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | --------------------------------- |
|
|
14
|
+
| `@atlaskit/pragmatic-drag-and-drop` | 4.0.0 | `sha512-pyDo2B5NiaExoKGmgeXKGNUL4aR4UzzSZm8QWWjYTEyBLVqSqKyKUwtVxMw2YEkakagOGFONUdHM32LAH2nPug==` | Apache-2.0, `…/LICENSE.md` |
|
|
15
|
+
| `@atlaskit/pragmatic-drag-and-drop-auto-scroll` | 3.2.1 | `sha512-2fhWAG48EjPoKhoHLG6RcT3/VaCzYEbRb6BtA/Vcfx4FrL0P1KrEgBJ6OAwB0X8MOV6UH22YgjFFHjv8fQD9rA==` | Apache-2.0, `…/LICENSE.md` |
|
|
16
|
+
| `bind-event-listener` (core's dependency) | 3.0.0 | `sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q==` | MIT © Alexander Reardon, `LICENSE` |
|
|
17
|
+
| `raf-schd` (core's dependency) | 4.0.3 | `sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==` | MIT © Alex Reardon, `LICENSE` |
|
|
18
|
+
|
|
19
|
+
The core's third dependency, `@babel/runtime`, is not needed: the fork takes
|
|
20
|
+
each package's `dist/es2019` build, which uses no Babel helper (object spread,
|
|
21
|
+
destructuring and `for…of` are native there), not its `dist/esm` build.
|
|
22
|
+
|
|
23
|
+
## Layout
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
pragmatic-drag-and-drop/ dist/es2019/<path>.js and dist/types/<path>.d.ts of the core
|
|
27
|
+
pragmatic-drag-and-drop-auto-scroll/ the same, of the auto-scroll package
|
|
28
|
+
bind-event-listener/ index.js, bind.js, bind-all.js: its src/*.ts with the types removed
|
|
29
|
+
raf-schd/ dist/raf-schd.esm.js, verbatim
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Each package keeps its published directory structure, so a file here diffs
|
|
33
|
+
against `dist/es2019/<same path>` (or `dist/types/<same path>` for a `.d.ts`).
|
|
34
|
+
|
|
35
|
+
## What was kept
|
|
36
|
+
|
|
37
|
+
The module closure of the three entry points `pragmatic.ts` imports, nothing
|
|
38
|
+
else:
|
|
39
|
+
|
|
40
|
+
- core `entry-point/element/adapter` (`draggable`, `dropTargetForElements`,
|
|
41
|
+
`monitorForElements`): the element adapter, the drag lifecycle, drop targets
|
|
42
|
+
and monitors, the honey pot fix, the window-leaving and broken-drag
|
|
43
|
+
detection;
|
|
44
|
+
- core `entry-point/element/set-custom-native-drag-preview`;
|
|
45
|
+
- auto-scroll `entry-point/element` (`autoScrollForElements`,
|
|
46
|
+
`autoScrollWindowForElements`, the over-element API and its scheduler).
|
|
47
|
+
|
|
48
|
+
The `.d.ts` files are the declarations those entry points' types reach (9
|
|
49
|
+
files); a `.js` without one is reached only from other vendored `.js`.
|
|
50
|
+
Everything else the packages publish (the external and text-selection
|
|
51
|
+
adapters, the other utilities, the hitbox package (the block handles split a
|
|
52
|
+
row into its halves themselves), the unsafe-overflow auto-scroll, CommonJS and `dist/esm` builds) is left out.
|
|
53
|
+
|
|
54
|
+
## Local changes (the only ones)
|
|
55
|
+
|
|
56
|
+
1. **Import specifiers.** Every relative specifier gains its file extension
|
|
57
|
+
(`'./once'` → `'./once.js'`, a directory import its `/index.js`), so the
|
|
58
|
+
packaged `dist/` loads in Node as ES modules too. Every bare specifier
|
|
59
|
+
between the packages (`@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter`,
|
|
60
|
+
`…/utils/combine`, `…/utils/once`, `…/get-element-from-point-without-honey-pot`,
|
|
61
|
+
`…/types` in the declarations) and to the two dependencies
|
|
62
|
+
(`bind-event-listener`, `raf-schd`) becomes the relative path of the
|
|
63
|
+
vendored file. This binds the auto-scroll package to the same core as the
|
|
64
|
+
element adapter: its monitor sees the drags the adapter starts (edytor
|
|
65
|
+
used to rebuild the auto-scroll API from its CommonJS `makeApi` for that,
|
|
66
|
+
since a browser bundle resolved the package's own bare import to a second
|
|
67
|
+
core). Specifiers quoted in comments (the `@deprecated` notes) stay as
|
|
68
|
+
written.
|
|
69
|
+
2. **`bind-event-listener` in JavaScript.** The package publishes CommonJS
|
|
70
|
+
only; its three `src/*.ts` modules are vendored as ES modules with their
|
|
71
|
+
type annotations removed (the code, comments and names unchanged). Its
|
|
72
|
+
types are not needed: no vendored declaration names them.
|
|
73
|
+
|
|
74
|
+
No statement of the libraries' own code is changed. A check that a re-sync
|
|
75
|
+
reproduces this: strip every import specifier from each vendored file and from
|
|
76
|
+
its upstream file, and compare: they are equal.
|
|
77
|
+
|
|
78
|
+
## How edytor builds around it
|
|
79
|
+
|
|
80
|
+
- `tsconfig*.json` exclude `src/lib/dnd/vendor/**`: TypeScript reads the
|
|
81
|
+
vendored `.d.ts` beside each entry `.js`, never checks the JavaScript.
|
|
82
|
+
- ESLint, Prettier, `scripts/deps.mjs` (the context graph) and the line counts
|
|
83
|
+
(`scripts/xloc.mjs`, `scripts/bundle-size.mjs`) skip it as vendored code.
|
|
84
|
+
- `package.json#sideEffects` lists the core's directory: upstream declares the
|
|
85
|
+
core with side effects (`count-events-for-safari.js` binds its WebKit
|
|
86
|
+
listeners at import), the auto-scroll without.
|
|
87
|
+
- Nothing runs against the DOM at import (the core guards `typeof window`):
|
|
88
|
+
server rendering imports it as before.
|
|
89
|
+
|
|
90
|
+
## Re-syncing with upstream
|
|
91
|
+
|
|
92
|
+
1. Install the new versions of the two packages (and of `bind-event-listener`,
|
|
93
|
+
`raf-schd`) somewhere outside the package's dependencies.
|
|
94
|
+
2. From each package's `module:es2019` entry (`element/adapter`,
|
|
95
|
+
`element/set-custom-native-drag-preview`, auto-scroll
|
|
96
|
+
`element`), follow every import; copy each reached `dist/es2019` file and,
|
|
97
|
+
from each entry's `types` field, each reached `dist/types` declaration to
|
|
98
|
+
the same path here, rewriting specifiers as in change 1.
|
|
99
|
+
3. Redo change 2 from `bind-event-listener`'s `src/`; copy
|
|
100
|
+
`raf-schd/dist/raf-schd.esm.js`; copy the license files.
|
|
101
|
+
4. Update the table above, run the drag lanes (the block handle, table, columns,
|
|
102
|
+
drop reach, auto-scroll, drag preview and press-after-drag specs in
|
|
103
|
+
Chromium, Firefox and WebKit, the jsdom drag rows) and the packed consumer.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 Alexander Reardon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { bind } from './bind.js';
|
|
2
|
+
|
|
3
|
+
function toOptions(value) {
|
|
4
|
+
if (typeof value === 'undefined') {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Convert capture boolean format to options to object
|
|
9
|
+
if (typeof value === 'boolean') {
|
|
10
|
+
return {
|
|
11
|
+
capture: value,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Already an object, don't need to convert it
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function getBinding(original, sharedOptions) {
|
|
20
|
+
// No shared options, just return original binding
|
|
21
|
+
if (sharedOptions == null) {
|
|
22
|
+
return original;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const binding = {
|
|
26
|
+
...original,
|
|
27
|
+
// Converting both options to object format for merging
|
|
28
|
+
options: {
|
|
29
|
+
...toOptions(sharedOptions),
|
|
30
|
+
// Giving individual binding option precedence
|
|
31
|
+
...toOptions(original.options),
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
return binding;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function bindAll(target, bindings, sharedOptions) {
|
|
38
|
+
const unbinds = bindings.map((original) => {
|
|
39
|
+
const binding = getBinding(original, sharedOptions);
|
|
40
|
+
return bind(target, binding);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return function unbindAll() {
|
|
44
|
+
unbinds.forEach((unbind) => unbind());
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Copyright 2022 Atlassian Pty Ltd
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
|
|
4
|
+
compliance with the License. You may obtain a copy of the License at
|
|
5
|
+
|
|
6
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
|
|
8
|
+
Unless required by applicable law or agreed to in writing, software distributed under the License is
|
|
9
|
+
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
10
|
+
implied. See the License for the specific language governing permissions and limitations under the
|
|
11
|
+
License.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type AllEvents, type BaseEventPayload, type CleanupFn, type DropTargetArgs, type DropTargetEventBasePayload, type DropTargetEventPayloadMap, type DropTargetGetFeedbackArgs, type ElementDragType, type EventPayloadMap, type Input, type MonitorArgs, type MonitorGetFeedbackArgs, type NativeMediaType } from '../internal-types.js';
|
|
2
|
+
export type { ElementDragPayload } from '../internal-types.js';
|
|
3
|
+
type DraggableGetFeedbackArgs = {
|
|
4
|
+
/**
|
|
5
|
+
* The user input as a drag is trying to start (the `initial` input)
|
|
6
|
+
*/
|
|
7
|
+
input: Input;
|
|
8
|
+
/**
|
|
9
|
+
* The `draggable` element
|
|
10
|
+
*/
|
|
11
|
+
element: HTMLElement;
|
|
12
|
+
/**
|
|
13
|
+
* The `dragHandle` element for the `draggable`
|
|
14
|
+
*/
|
|
15
|
+
dragHandle: Element | null;
|
|
16
|
+
};
|
|
17
|
+
type DraggableArgs = {
|
|
18
|
+
/** The `HTMLElement` that you want to attach draggable behaviour to.
|
|
19
|
+
* `element` is our unique _key_ for a draggable.
|
|
20
|
+
* `element` is a `HTMLElement` as only a `HTMLElement`
|
|
21
|
+
* can have a "draggable" attribute
|
|
22
|
+
*/
|
|
23
|
+
element: HTMLElement;
|
|
24
|
+
/** The part of a draggable `element` that you want to use to control the dragging of the whole `element` */
|
|
25
|
+
dragHandle?: Element;
|
|
26
|
+
/** Conditionally allow a drag to occur */
|
|
27
|
+
canDrag?: (args: DraggableGetFeedbackArgs) => boolean;
|
|
28
|
+
/** Used to attach data to a drag operation. Called once just before the drag starts */
|
|
29
|
+
getInitialData?: (args: DraggableGetFeedbackArgs) => Record<string, unknown>;
|
|
30
|
+
/** Attach data to the native drag data store.
|
|
31
|
+
* This function is useful to attach native data that can be extracted by other web pages
|
|
32
|
+
* or web applications
|
|
33
|
+
* Attaching native data in this way will _not_ cause the native adapter on this page to start
|
|
34
|
+
* Although it can cause a native adapter in other applications to start
|
|
35
|
+
* @example getInitialDataForExternal(() => ({'text/plain': item.description}))
|
|
36
|
+
* */
|
|
37
|
+
getInitialDataForExternal?: (args: DraggableGetFeedbackArgs) => {
|
|
38
|
+
[Key in NativeMediaType]?: string;
|
|
39
|
+
};
|
|
40
|
+
} & Partial<AllEvents<ElementDragType>>;
|
|
41
|
+
export declare const dropTargetForElements: (args: DropTargetArgs<ElementDragType>) => CleanupFn;
|
|
42
|
+
export declare const monitorForElements: (args: MonitorArgs<ElementDragType>) => CleanupFn;
|
|
43
|
+
export declare function draggable(args: DraggableArgs): CleanupFn;
|
|
44
|
+
/** Common event payload for all events */
|
|
45
|
+
export type ElementEventBasePayload = BaseEventPayload<ElementDragType>;
|
|
46
|
+
/** A map containing payloads for all events */
|
|
47
|
+
export type ElementEventPayloadMap = EventPayloadMap<ElementDragType>;
|
|
48
|
+
/** Common event payload for all drop target events */
|
|
49
|
+
export type ElementDropTargetEventBasePayload = DropTargetEventBasePayload<ElementDragType>;
|
|
50
|
+
/** A map containing payloads for all events on drop targets */
|
|
51
|
+
export type ElementDropTargetEventPayloadMap = DropTargetEventPayloadMap<ElementDragType>;
|
|
52
|
+
/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */
|
|
53
|
+
export type ElementGetFeedbackArgs = DraggableGetFeedbackArgs;
|
|
54
|
+
/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */
|
|
55
|
+
export type ElementDropTargetGetFeedbackArgs = DropTargetGetFeedbackArgs<ElementDragType>;
|
|
56
|
+
/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */
|
|
57
|
+
export type ElementMonitorGetFeedbackArgs = MonitorGetFeedbackArgs<ElementDragType>;
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { bind } from '../../bind-event-listener/index.js';
|
|
2
|
+
import { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot.js';
|
|
3
|
+
import { makeHoneyPotFix } from '../honey-pot-fix/make-honey-pot-fix.js';
|
|
4
|
+
import { makeAdapter } from '../make-adapter/make-adapter.js';
|
|
5
|
+
import { combine } from '../public-utils/combine.js';
|
|
6
|
+
import { once } from '../public-utils/once.js';
|
|
7
|
+
import { addAttribute } from '../util/add-attribute.js';
|
|
8
|
+
import { androidFallbackText, isAndroid } from '../util/android.js';
|
|
9
|
+
import { getInput } from '../util/get-input.js';
|
|
10
|
+
import { textMediaType } from '../util/media-types/text-media-type.js';
|
|
11
|
+
import { URLMediaType } from '../util/media-types/url-media-type.js';
|
|
12
|
+
import { elementAdapterNativeDataKey } from './element-adapter-native-data-key.js';
|
|
13
|
+
|
|
14
|
+
// Payload for the draggable being dragged
|
|
15
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-re-exports
|
|
16
|
+
|
|
17
|
+
const draggableRegistry = new WeakMap();
|
|
18
|
+
function addToRegistry(args) {
|
|
19
|
+
draggableRegistry.set(args.element, args);
|
|
20
|
+
return function cleanup() {
|
|
21
|
+
draggableRegistry.delete(args.element);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const honeyPotFix = makeHoneyPotFix();
|
|
25
|
+
const adapter = makeAdapter({
|
|
26
|
+
typeKey: 'element',
|
|
27
|
+
defaultDropEffect: 'move',
|
|
28
|
+
mount(api) {
|
|
29
|
+
/** Binding event listeners the `document` rather than `window` so that
|
|
30
|
+
* this adapter always gets preference over the text adapter.
|
|
31
|
+
* `document` is the first `EventTarget` under `window`
|
|
32
|
+
* https://twitter.com/alexandereardon/status/1604658588311465985
|
|
33
|
+
*/
|
|
34
|
+
return combine(honeyPotFix.bindEvents(), bind(document, {
|
|
35
|
+
type: 'dragstart',
|
|
36
|
+
listener(event) {
|
|
37
|
+
var _entry$dragHandle, _entry$getInitialData, _entry$getInitialData2, _entry$dragHandle2, _entry$getInitialData3, _entry$getInitialData4;
|
|
38
|
+
if (!api.canStart(event)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// If the "dragstart" event is cancelled, then a drag won't start
|
|
43
|
+
// There will be no further drag operation events (eg no "dragend" event)
|
|
44
|
+
if (event.defaultPrevented) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Technically `dataTransfer` can be `null` according to the types
|
|
49
|
+
// But that behaviour does not seem to appear in the spec.
|
|
50
|
+
// If there is not `dataTransfer`, we can assume something is wrong and not
|
|
51
|
+
// start a drag
|
|
52
|
+
if (!event.dataTransfer) {
|
|
53
|
+
// Including this code on "test" and "development" environments:
|
|
54
|
+
// - Browser tests commonly run against "development" builds
|
|
55
|
+
// - Unit tests commonly run in "test"
|
|
56
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
57
|
+
// eslint-disable-next-line no-console
|
|
58
|
+
console.warn(`
|
|
59
|
+
It appears as though you have are not testing DragEvents correctly.
|
|
60
|
+
|
|
61
|
+
- If you are unit testing, ensure you have polyfilled DragEvent.
|
|
62
|
+
- If you are browser testing, ensure you are dispatching drag events correctly.
|
|
63
|
+
|
|
64
|
+
Please see our testing guides for more information:
|
|
65
|
+
https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing
|
|
66
|
+
`.replace(/ {2}/g, ''));
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// the closest parent that is a draggable element will be marked as
|
|
72
|
+
// the `event.target` for the event
|
|
73
|
+
const target = event.target;
|
|
74
|
+
|
|
75
|
+
// this source is only for elements
|
|
76
|
+
// Note: only HTMLElements can have the "draggable" attribute
|
|
77
|
+
if (!(target instanceof HTMLElement)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// see if the thing being dragged is owned by us
|
|
82
|
+
const entry = draggableRegistry.get(target);
|
|
83
|
+
|
|
84
|
+
// no matching element found
|
|
85
|
+
// → dragging an element with `draggable="true"` that is not controlled by us
|
|
86
|
+
if (!entry) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* A text selection drag _can_ have the `draggable` element be
|
|
92
|
+
* the `event.target` if the user is dragging the text selection
|
|
93
|
+
* from the `draggable`.
|
|
94
|
+
*
|
|
95
|
+
* To know if the `draggable` is being dragged, we look at whether any
|
|
96
|
+
* `"text/plain"` data is being dragged. If it is, then a text selection
|
|
97
|
+
* drag is occurring.
|
|
98
|
+
*
|
|
99
|
+
* This behaviour has been validated on:
|
|
100
|
+
*
|
|
101
|
+
* - Chrome@128 on Android@14
|
|
102
|
+
* - Chrome@128 on iOS@17.6.1
|
|
103
|
+
* - Chrome@128 on Windows@11
|
|
104
|
+
* - Chrome@128 on MacOS@14.6.1
|
|
105
|
+
* - Firefox@129 on Windows@11 (not possible for user to select text in a draggable)
|
|
106
|
+
* - Firefox@129 on MacOS@14.6.1 (not possible for user to select text in a draggable)
|
|
107
|
+
*
|
|
108
|
+
* Note: Could usually just use: `event.dataTransfer.types.includes(textMediaType)`
|
|
109
|
+
* but unfortunately ProseMirror is always setting `""` as the dragged text
|
|
110
|
+
*
|
|
111
|
+
* Note: Unfortunately editor is (heavily) leaning on the current functionality today
|
|
112
|
+
* and unwinding it will be a decent amount of effort. So for now, a text selection
|
|
113
|
+
* where the `event.target` is a `draggable` element will still trigger the
|
|
114
|
+
* element adapter.
|
|
115
|
+
*
|
|
116
|
+
* // Future state:
|
|
117
|
+
* if(event.dataTransfer.getData(textMediaType)) {
|
|
118
|
+
* return;
|
|
119
|
+
* }
|
|
120
|
+
*
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
const input = getInput(event);
|
|
124
|
+
const feedback = {
|
|
125
|
+
element: entry.element,
|
|
126
|
+
dragHandle: (_entry$dragHandle = entry.dragHandle) !== null && _entry$dragHandle !== void 0 ? _entry$dragHandle : null,
|
|
127
|
+
input
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// Check: does the draggable want to allow dragging?
|
|
131
|
+
if (entry.canDrag && !entry.canDrag(feedback)) {
|
|
132
|
+
// cancel drag operation if we cannot drag
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Check: is there a drag handle and is the user using it?
|
|
138
|
+
if (entry.dragHandle) {
|
|
139
|
+
// technically don't need this util, but just being
|
|
140
|
+
// consistent with how we look up what is under the users
|
|
141
|
+
// cursor.
|
|
142
|
+
const over = getElementFromPointWithoutHoneypot({
|
|
143
|
+
x: input.clientX,
|
|
144
|
+
y: input.clientY
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// if we are not dragging from the drag handle (or something inside the drag handle)
|
|
148
|
+
// then we will cancel the active drag
|
|
149
|
+
if (!entry.dragHandle.contains(over)) {
|
|
150
|
+
event.preventDefault();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* **Goal**
|
|
157
|
+
* Pass information to other applications
|
|
158
|
+
*
|
|
159
|
+
* **Approach**
|
|
160
|
+
* Put data into the native data store
|
|
161
|
+
*
|
|
162
|
+
* **What about the native adapter?**
|
|
163
|
+
* When the element adapter puts native data into the native data store
|
|
164
|
+
* the native adapter is not triggered in the current window,
|
|
165
|
+
* but a native adapter in an external window _can_ be triggered
|
|
166
|
+
*
|
|
167
|
+
* **Why bake this into core?**
|
|
168
|
+
* This functionality could be pulled out and exposed inside of
|
|
169
|
+
* `onGenerateDragPreview`. But decided to make it a part of the
|
|
170
|
+
* base API as it felt like a common enough use case and ended
|
|
171
|
+
* up being a similar amount of code to include this function as
|
|
172
|
+
* it was to expose the hook for it
|
|
173
|
+
*/
|
|
174
|
+
const nativeData = (_entry$getInitialData = (_entry$getInitialData2 = entry.getInitialDataForExternal) === null || _entry$getInitialData2 === void 0 ? void 0 : _entry$getInitialData2.call(entry, feedback)) !== null && _entry$getInitialData !== void 0 ? _entry$getInitialData : null;
|
|
175
|
+
if (nativeData) {
|
|
176
|
+
for (const [key, data] of Object.entries(nativeData)) {
|
|
177
|
+
event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* 📱 For Android devices, a drag operation will not start unless
|
|
183
|
+
* "text/plain" or "text/uri-list" data exists in the native data store
|
|
184
|
+
* https://twitter.com/alexandereardon/status/1732189803754713424
|
|
185
|
+
*
|
|
186
|
+
* Tested on:
|
|
187
|
+
* Device: Google Pixel 5
|
|
188
|
+
* Android version: 14 (November 5, 2023)
|
|
189
|
+
* Chrome version: 120.0
|
|
190
|
+
*/
|
|
191
|
+
if (isAndroid() && !event.dataTransfer.types.includes(textMediaType) && !event.dataTransfer.types.includes(URLMediaType)) {
|
|
192
|
+
event.dataTransfer.setData(textMediaType, androidFallbackText);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* 1. Must set any media type for `iOS15` to work
|
|
197
|
+
* 2. We are also doing adding data so that the native adapter
|
|
198
|
+
* can know that the element adapter has handled this drag
|
|
199
|
+
*
|
|
200
|
+
* We used to wrap this `setData()` in a `try/catch` for Firefox,
|
|
201
|
+
* but it looks like that was not needed.
|
|
202
|
+
*
|
|
203
|
+
* Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f
|
|
204
|
+
*
|
|
205
|
+
* - ✅ Firefox@70.0 (Oct 2019) on macOS Sonoma
|
|
206
|
+
* - ✅ Firefox@70.0 (Oct 2019) on macOS Big Sur
|
|
207
|
+
* - ✅ Firefox@70.0 (Oct 2019) on Windows 10
|
|
208
|
+
*
|
|
209
|
+
* // just checking a few more combinations to be super safe
|
|
210
|
+
*
|
|
211
|
+
* - ✅ Chrome@78 (Oct 2019) on macOS Big Sur
|
|
212
|
+
* - ✅ Chrome@78 (Oct 2019) on Windows 10
|
|
213
|
+
* - ✅ Safari@14.1 on macOS Big Sur
|
|
214
|
+
*/
|
|
215
|
+
event.dataTransfer.setData(elementAdapterNativeDataKey, '');
|
|
216
|
+
const payload = {
|
|
217
|
+
element: entry.element,
|
|
218
|
+
dragHandle: (_entry$dragHandle2 = entry.dragHandle) !== null && _entry$dragHandle2 !== void 0 ? _entry$dragHandle2 : null,
|
|
219
|
+
data: (_entry$getInitialData3 = (_entry$getInitialData4 = entry.getInitialData) === null || _entry$getInitialData4 === void 0 ? void 0 : _entry$getInitialData4.call(entry, feedback)) !== null && _entry$getInitialData3 !== void 0 ? _entry$getInitialData3 : {}
|
|
220
|
+
};
|
|
221
|
+
const dragType = {
|
|
222
|
+
type: 'element',
|
|
223
|
+
payload,
|
|
224
|
+
startedFrom: 'internal'
|
|
225
|
+
};
|
|
226
|
+
api.start({
|
|
227
|
+
event,
|
|
228
|
+
dragType
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}));
|
|
232
|
+
},
|
|
233
|
+
dispatchEventToSource: ({
|
|
234
|
+
eventName,
|
|
235
|
+
payload
|
|
236
|
+
}) => {
|
|
237
|
+
var _draggableRegistry$ge, _draggableRegistry$ge2;
|
|
238
|
+
// During a drag operation, a draggable can be:
|
|
239
|
+
// - remounted with different functions
|
|
240
|
+
// - removed completely
|
|
241
|
+
// So we need to get the latest entry from the registry in order
|
|
242
|
+
// to call the latest event functions
|
|
243
|
+
|
|
244
|
+
(_draggableRegistry$ge = draggableRegistry.get(payload.source.element)) === null || _draggableRegistry$ge === void 0 ? void 0 : (_draggableRegistry$ge2 = _draggableRegistry$ge[eventName]) === null || _draggableRegistry$ge2 === void 0 ? void 0 : _draggableRegistry$ge2.call(_draggableRegistry$ge,
|
|
245
|
+
// I cannot seem to get the types right here.
|
|
246
|
+
// TS doesn't seem to like that one event can need `nativeSetDragImage`
|
|
247
|
+
// @ts-expect-error
|
|
248
|
+
payload);
|
|
249
|
+
},
|
|
250
|
+
onPostDispatch: honeyPotFix.getOnPostDispatch()
|
|
251
|
+
});
|
|
252
|
+
export const dropTargetForElements = adapter.dropTarget;
|
|
253
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
254
|
+
export const monitorForElements = adapter.monitor;
|
|
255
|
+
|
|
256
|
+
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
|
|
257
|
+
export function draggable(args) {
|
|
258
|
+
// Guardrail: warn if the drag handle is not contained in draggable element
|
|
259
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
260
|
+
if (args.dragHandle && !args.element.contains(args.dragHandle)) {
|
|
261
|
+
// eslint-disable-next-line no-console
|
|
262
|
+
console.warn('Drag handle element must be contained in draggable element', {
|
|
263
|
+
element: args.element,
|
|
264
|
+
dragHandle: args.dragHandle
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Guardrail: warn if the draggable element is already registered
|
|
269
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
270
|
+
const existing = draggableRegistry.get(args.element);
|
|
271
|
+
if (existing) {
|
|
272
|
+
// eslint-disable-next-line no-console
|
|
273
|
+
console.warn('You have already registered a `draggable` on the same element', {
|
|
274
|
+
existing,
|
|
275
|
+
proposed: args
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const cleanup = combine(
|
|
280
|
+
// making the draggable register the adapter rather than drop targets
|
|
281
|
+
// this is because you *must* have a draggable element to start a drag
|
|
282
|
+
// but you _might_ not have any drop targets immediately
|
|
283
|
+
// (You might create drop targets async)
|
|
284
|
+
adapter.registerUsage(), addToRegistry(args), addAttribute(args.element, {
|
|
285
|
+
attribute: 'draggable',
|
|
286
|
+
value: 'true'
|
|
287
|
+
}));
|
|
288
|
+
|
|
289
|
+
// Wrapping in `once` to prevent unexpected side effects if consumers call
|
|
290
|
+
// the clean up function multiple times.
|
|
291
|
+
return once(cleanup);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/** Common event payload for all events */
|
|
295
|
+
|
|
296
|
+
/** A map containing payloads for all events */
|
|
297
|
+
|
|
298
|
+
/** Common event payload for all drop target events */
|
|
299
|
+
|
|
300
|
+
/** A map containing payloads for all events on drop targets */
|
|
301
|
+
|
|
302
|
+
/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */
|
|
303
|
+
|
|
304
|
+
/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */
|
|
305
|
+
|
|
306
|
+
/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `import { draggable, dropTargetForElements, monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter'` instead.
|
|
3
|
+
*/
|
|
4
|
+
export { draggable, dropTargetForElements, monitorForElements, type ElementEventBasePayload, type ElementEventPayloadMap, type ElementDropTargetEventBasePayload, type ElementDropTargetEventPayloadMap, type ElementGetFeedbackArgs, type ElementDropTargetGetFeedbackArgs, type ElementMonitorGetFeedbackArgs, } from '../../adapter/element-adapter.js';
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Use `import { ElementEventBasePayload, ElementEventPayloadMap, ElementDropTargetEventBasePayload, ElementDropTargetEventPayloadMap, ElementGetFeedbackArgs, ElementDropTargetGetFeedbackArgs, ElementMonitorGetFeedbackArgs, ElementDragPayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter'` instead.
|
|
7
|
+
*/
|
|
8
|
+
export type { ElementDragPayload } from '../../internal-types.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `import { draggable, dropTargetForElements, monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter'` instead.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { draggable, dropTargetForElements, monitorForElements } from '../../adapter/element-adapter.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use `import { ElementEventBasePayload, ElementEventPayloadMap, ElementDropTargetEventBasePayload, ElementDropTargetEventPayloadMap, ElementGetFeedbackArgs, ElementDropTargetGetFeedbackArgs, ElementMonitorGetFeedbackArgs, ElementDragPayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter'` instead.
|
|
10
|
+
*/
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/utils/set-custom-native-drag-preview'` instead.
|
|
3
|
+
*/
|
|
4
|
+
export { setCustomNativeDragPreview } from '../../public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/utils/set-custom-native-drag-preview'` instead.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { setCustomNativeDragPreview } from '../../public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { DropTargetAllowedDropEffect, DropTargetRecord, Position, Input, DragLocation, DragLocationHistory, CleanupFn, AllDragTypes, MonitorArgs, BaseEventPayload, ElementDragType, TextSelectionDragType, ExternalDragType, } from '../internal-types.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isHoneyPotElement } from './is-honey-pot-element.js';
|
|
2
|
+
export function getElementFromPointWithoutHoneypot(client) {
|
|
3
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
4
|
+
const [top, second] = document.elementsFromPoint(client.x, client.y);
|
|
5
|
+
if (!top) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
if (isHoneyPotElement(top)) {
|
|
9
|
+
return second !== null && second !== void 0 ? second : null;
|
|
10
|
+
}
|
|
11
|
+
return top;
|
|
12
|
+
}
|