@atlaskit/pragmatic-drag-and-drop 0.25.0 → 1.0.1
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/CHANGELOG.md +14 -0
- package/combine/package.json +15 -0
- package/constellation/index/props.mdx +1 -1
- package/dist/cjs/adapter/element-adapter-native-data-key.js +12 -0
- package/dist/cjs/adapter/element-adapter.js +122 -17
- package/dist/cjs/adapter/external-adapter.js +252 -0
- package/dist/cjs/adapter/text-selection-adapter.js +153 -0
- package/dist/cjs/entry-point/cancel-unhandled.js +12 -0
- package/dist/cjs/entry-point/{util/combine.js → combine.js} +1 -1
- package/dist/cjs/entry-point/{util → element}/center-under-pointer.js +1 -1
- package/dist/cjs/entry-point/{util → element}/disable-native-drag-preview.js +1 -1
- package/dist/cjs/entry-point/element/format-urls-for-external.js +12 -0
- package/dist/cjs/entry-point/element/pointer-outside-of-preview.js +12 -0
- package/dist/cjs/entry-point/{util → element}/preserve-offset-on-source.js +1 -1
- package/dist/cjs/entry-point/{util → element}/scroll-just-enough-into-view.js +1 -1
- package/dist/cjs/entry-point/{util → element}/set-custom-native-drag-preview.js +1 -1
- package/dist/cjs/entry-point/external/adapter.js +18 -0
- package/dist/cjs/entry-point/external/file.js +18 -0
- package/dist/cjs/entry-point/external/html.js +18 -0
- package/dist/cjs/entry-point/external/some.js +12 -0
- package/dist/cjs/entry-point/external/text.js +18 -0
- package/dist/cjs/entry-point/external/url.js +18 -0
- package/dist/cjs/entry-point/{util/once.js → once.js} +1 -1
- package/dist/cjs/entry-point/prevent-unhandled.js +12 -0
- package/dist/cjs/entry-point/{util/reorder.js → reorder.js} +1 -1
- package/dist/cjs/entry-point/text-selection/adapter.js +18 -0
- package/dist/cjs/ledger/dispatch-consumer-event.js +1 -1
- package/dist/cjs/ledger/lifecycle-manager.js +43 -69
- package/dist/cjs/make-adapter/make-adapter.js +2 -2
- package/dist/cjs/make-adapter/make-drop-target.js +24 -2
- package/dist/cjs/public-utils/custom-external-data-type-media-type-prefix.js +7 -0
- package/dist/cjs/{util/custom-native-drag-preview/offset-from-pointer.js → public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js} +5 -2
- package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
- package/dist/cjs/public-utils/element/format-urls-for-external.js +39 -0
- package/dist/cjs/public-utils/external/file.js +28 -0
- package/dist/cjs/public-utils/external/html.js +16 -0
- package/dist/cjs/public-utils/external/native-types.js +5 -0
- package/dist/cjs/public-utils/external/some.js +34 -0
- package/dist/cjs/public-utils/external/text.js +18 -0
- package/dist/cjs/public-utils/external/url.js +33 -0
- package/dist/cjs/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +2 -2
- package/dist/cjs/util/android.js +12 -0
- package/dist/cjs/util/cache-first.js +31 -0
- package/dist/cjs/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +24 -57
- package/dist/cjs/util/changing-window/is-entering-window.js +63 -0
- package/dist/cjs/util/changing-window/is-leaving-window.js +61 -0
- package/dist/cjs/util/detect-broken-drag.js +53 -0
- package/dist/cjs/util/fix-post-drag-pointer-bug.js +11 -0
- package/dist/cjs/util/is-firefox.js +18 -0
- package/dist/cjs/util/is-safari.js +8 -9
- package/dist/cjs/util/media-types/html-media-type.js +12 -0
- package/dist/cjs/util/media-types/text-media-type.js +12 -0
- package/dist/cjs/util/media-types/url-media-type.js +12 -0
- package/dist/es2019/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/es2019/adapter/element-adapter.js +127 -17
- package/dist/es2019/adapter/external-adapter.js +243 -0
- package/dist/es2019/adapter/text-selection-adapter.js +152 -0
- package/dist/es2019/entry-point/cancel-unhandled.js +1 -0
- package/dist/es2019/entry-point/combine.js +1 -0
- package/dist/es2019/entry-point/element/adapter.js +3 -0
- package/dist/es2019/entry-point/element/center-under-pointer.js +1 -0
- package/dist/es2019/entry-point/element/disable-native-drag-preview.js +1 -0
- package/dist/es2019/entry-point/element/format-urls-for-external.js +1 -0
- package/dist/es2019/entry-point/element/pointer-outside-of-preview.js +1 -0
- package/dist/es2019/entry-point/element/preserve-offset-on-source.js +1 -0
- package/dist/es2019/entry-point/element/scroll-just-enough-into-view.js +1 -0
- package/dist/es2019/entry-point/element/set-custom-native-drag-preview.js +1 -0
- package/dist/es2019/entry-point/external/adapter.js +3 -0
- package/dist/es2019/entry-point/external/file.js +1 -0
- package/dist/es2019/entry-point/external/html.js +1 -0
- package/dist/es2019/entry-point/external/some.js +1 -0
- package/dist/es2019/entry-point/external/text.js +1 -0
- package/dist/es2019/entry-point/external/url.js +1 -0
- package/dist/es2019/entry-point/once.js +1 -0
- package/dist/es2019/entry-point/prevent-unhandled.js +1 -0
- package/dist/es2019/entry-point/reorder.js +1 -0
- package/dist/es2019/entry-point/text-selection/adapter.js +3 -0
- package/dist/es2019/ledger/dispatch-consumer-event.js +1 -1
- package/dist/es2019/ledger/lifecycle-manager.js +34 -63
- package/dist/es2019/make-adapter/make-adapter.js +3 -3
- package/dist/es2019/make-adapter/make-drop-target.js +28 -2
- package/dist/es2019/public-utils/custom-external-data-type-media-type-prefix.js +1 -0
- package/dist/es2019/{util/custom-native-drag-preview/offset-from-pointer.js → public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js} +4 -1
- package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
- package/dist/es2019/public-utils/element/format-urls-for-external.js +33 -0
- package/dist/es2019/public-utils/external/file.js +17 -0
- package/dist/es2019/public-utils/external/html.js +11 -0
- package/dist/es2019/public-utils/external/some.js +23 -0
- package/dist/es2019/public-utils/external/text.js +13 -0
- package/dist/es2019/public-utils/external/url.js +26 -0
- package/dist/es2019/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +1 -1
- package/dist/es2019/util/android.js +7 -0
- package/dist/es2019/util/cache-first.js +25 -0
- package/dist/es2019/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +22 -55
- package/dist/es2019/util/changing-window/is-entering-window.js +61 -0
- package/dist/es2019/util/changing-window/is-leaving-window.js +59 -0
- package/dist/es2019/util/detect-broken-drag.js +48 -0
- package/dist/es2019/util/fix-post-drag-pointer-bug.js +11 -0
- package/dist/es2019/util/is-firefox.js +13 -0
- package/dist/es2019/util/is-safari.js +8 -8
- package/dist/es2019/util/media-types/html-media-type.js +6 -0
- package/dist/es2019/util/media-types/text-media-type.js +6 -0
- package/dist/es2019/util/media-types/url-media-type.js +6 -0
- package/dist/esm/adapter/element-adapter-native-data-key.js +6 -0
- package/dist/esm/adapter/element-adapter.js +121 -17
- package/dist/esm/adapter/external-adapter.js +241 -0
- package/dist/esm/adapter/text-selection-adapter.js +146 -0
- package/dist/esm/entry-point/cancel-unhandled.js +1 -0
- package/dist/esm/entry-point/combine.js +1 -0
- package/dist/esm/entry-point/element/adapter.js +3 -0
- package/dist/esm/entry-point/element/center-under-pointer.js +1 -0
- package/dist/esm/entry-point/element/disable-native-drag-preview.js +1 -0
- package/dist/esm/entry-point/element/format-urls-for-external.js +1 -0
- package/dist/esm/entry-point/element/pointer-outside-of-preview.js +1 -0
- package/dist/esm/entry-point/element/preserve-offset-on-source.js +1 -0
- package/dist/esm/entry-point/element/scroll-just-enough-into-view.js +1 -0
- package/dist/esm/entry-point/element/set-custom-native-drag-preview.js +1 -0
- package/dist/esm/entry-point/external/adapter.js +3 -0
- package/dist/esm/entry-point/external/file.js +1 -0
- package/dist/esm/entry-point/external/html.js +1 -0
- package/dist/esm/entry-point/external/some.js +1 -0
- package/dist/esm/entry-point/external/text.js +1 -0
- package/dist/esm/entry-point/external/url.js +1 -0
- package/dist/esm/entry-point/once.js +1 -0
- package/dist/esm/entry-point/prevent-unhandled.js +1 -0
- package/dist/esm/entry-point/reorder.js +1 -0
- package/dist/esm/entry-point/text-selection/adapter.js +3 -0
- package/dist/esm/ledger/dispatch-consumer-event.js +1 -1
- package/dist/esm/ledger/lifecycle-manager.js +41 -68
- package/dist/esm/make-adapter/make-adapter.js +2 -2
- package/dist/esm/make-adapter/make-drop-target.js +24 -2
- package/dist/esm/public-utils/custom-external-data-type-media-type-prefix.js +1 -0
- package/dist/esm/{util/custom-native-drag-preview/offset-from-pointer.js → public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js} +4 -1
- package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
- package/dist/esm/public-utils/element/custom-native-drag-preview/types.js +1 -0
- package/dist/esm/public-utils/element/format-urls-for-external.js +33 -0
- package/dist/esm/public-utils/external/file.js +21 -0
- package/dist/esm/public-utils/external/html.js +9 -0
- package/dist/esm/public-utils/external/native-types.js +1 -0
- package/dist/esm/public-utils/external/some.js +28 -0
- package/dist/esm/public-utils/external/text.js +11 -0
- package/dist/esm/public-utils/external/url.js +26 -0
- package/dist/esm/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +1 -1
- package/dist/esm/util/android.js +7 -0
- package/dist/esm/util/cache-first.js +25 -0
- package/dist/esm/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +22 -55
- package/dist/esm/util/changing-window/is-entering-window.js +58 -0
- package/dist/esm/util/changing-window/is-leaving-window.js +56 -0
- package/dist/esm/util/detect-broken-drag.js +47 -0
- package/dist/esm/util/fix-post-drag-pointer-bug.js +11 -0
- package/dist/esm/util/is-firefox.js +13 -0
- package/dist/esm/util/is-safari.js +8 -8
- package/dist/esm/util/media-types/html-media-type.js +6 -0
- package/dist/esm/util/media-types/text-media-type.js +6 -0
- package/dist/esm/util/media-types/url-media-type.js +6 -0
- package/dist/types/adapter/element-adapter-native-data-key.d.ts +6 -0
- package/dist/types/adapter/element-adapter.d.ts +25 -10
- package/dist/types/adapter/external-adapter.d.ts +40 -0
- package/dist/types/adapter/text-selection-adapter.d.ts +22 -0
- package/dist/types/entry-point/cancel-unhandled.d.ts +1 -0
- package/dist/types/entry-point/combine.d.ts +1 -0
- package/dist/types/entry-point/element/adapter.d.ts +3 -0
- package/dist/types/entry-point/element/center-under-pointer.d.ts +1 -0
- package/dist/types/entry-point/element/disable-native-drag-preview.d.ts +1 -0
- package/dist/types/entry-point/element/format-urls-for-external.d.ts +1 -0
- package/dist/types/entry-point/element/pointer-outside-of-preview.d.ts +1 -0
- package/dist/types/entry-point/element/preserve-offset-on-source.d.ts +1 -0
- package/dist/types/entry-point/element/scroll-just-enough-into-view.d.ts +1 -0
- package/dist/types/entry-point/element/set-custom-native-drag-preview.d.ts +1 -0
- package/dist/types/entry-point/external/adapter.d.ts +3 -0
- package/dist/types/entry-point/external/file.d.ts +1 -0
- package/dist/types/entry-point/external/html.d.ts +1 -0
- package/dist/types/entry-point/external/some.d.ts +1 -0
- package/dist/types/entry-point/external/text.d.ts +1 -0
- package/dist/types/entry-point/external/url.d.ts +1 -0
- package/dist/types/entry-point/once.d.ts +1 -0
- package/dist/types/entry-point/prevent-unhandled.d.ts +1 -0
- package/dist/types/entry-point/reorder.d.ts +1 -0
- package/dist/types/entry-point/text-selection/adapter.d.ts +3 -0
- package/dist/types/entry-point/types.d.ts +1 -1
- package/dist/types/internal-types.d.ts +84 -19
- package/dist/types/ledger/dispatch-consumer-event.d.ts +2 -2
- package/dist/types/ledger/lifecycle-manager.d.ts +3 -3
- package/dist/types/ledger/usage-ledger.d.ts +1 -1
- package/dist/types/make-adapter/make-adapter.d.ts +2 -2
- package/dist/types/make-adapter/make-drop-target.d.ts +1 -1
- package/dist/types/public-utils/custom-external-data-type-media-type-prefix.d.ts +1 -0
- package/dist/types/{util/custom-native-drag-preview/offset-from-pointer.d.ts → public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.d.ts} +4 -1
- package/dist/types/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.d.ts +1 -1
- package/dist/{types-ts4.5/util → types/public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +1 -1
- package/dist/types/{util → public-utils/element}/custom-native-drag-preview/types.d.ts +1 -1
- package/dist/types/public-utils/element/format-urls-for-external.d.ts +31 -0
- package/dist/types/public-utils/external/file.d.ts +4 -0
- package/dist/types/public-utils/external/html.d.ts +3 -0
- package/dist/types/public-utils/external/native-types.d.ts +12 -0
- package/dist/types/public-utils/external/some.d.ts +20 -0
- package/dist/types/public-utils/external/text.d.ts +3 -0
- package/dist/types/public-utils/external/url.d.ts +3 -0
- package/dist/{types-ts4.5/addon/cancel-unhandled.d.ts → types/public-utils/prevent-unhandled.d.ts} +1 -1
- package/dist/types/util/android.d.ts +2 -0
- package/dist/types/util/cache-first.d.ts +15 -0
- package/dist/types/util/changing-window/count-events-for-safari.d.ts +6 -0
- package/dist/types/util/{entering-and-leaving-the-window.d.ts → changing-window/is-entering-window.d.ts} +0 -3
- package/dist/types/util/changing-window/is-leaving-window.d.ts +3 -0
- package/dist/types/util/detect-broken-drag.d.ts +9 -0
- package/dist/types/util/is-firefox.d.ts +4 -0
- package/dist/types/util/is-safari.d.ts +1 -1
- package/dist/types/util/media-types/html-media-type.d.ts +1 -0
- package/dist/types/util/media-types/text-media-type.d.ts +1 -0
- package/dist/types/util/media-types/url-media-type.d.ts +1 -0
- package/dist/types-ts4.5/adapter/element-adapter-native-data-key.d.ts +6 -0
- package/dist/types-ts4.5/adapter/element-adapter.d.ts +25 -10
- package/dist/types-ts4.5/adapter/external-adapter.d.ts +40 -0
- package/dist/types-ts4.5/adapter/text-selection-adapter.d.ts +22 -0
- package/dist/types-ts4.5/entry-point/cancel-unhandled.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/combine.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/adapter.d.ts +3 -0
- package/dist/types-ts4.5/entry-point/element/center-under-pointer.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/disable-native-drag-preview.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/format-urls-for-external.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/pointer-outside-of-preview.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/preserve-offset-on-source.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/scroll-just-enough-into-view.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/element/set-custom-native-drag-preview.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/external/adapter.d.ts +3 -0
- package/dist/types-ts4.5/entry-point/external/file.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/external/html.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/external/some.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/external/text.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/external/url.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/once.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/prevent-unhandled.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/reorder.d.ts +1 -0
- package/dist/types-ts4.5/entry-point/text-selection/adapter.d.ts +3 -0
- package/dist/types-ts4.5/entry-point/types.d.ts +1 -1
- package/dist/types-ts4.5/internal-types.d.ts +84 -19
- package/dist/types-ts4.5/ledger/dispatch-consumer-event.d.ts +2 -2
- package/dist/types-ts4.5/ledger/lifecycle-manager.d.ts +3 -3
- package/dist/types-ts4.5/ledger/usage-ledger.d.ts +1 -1
- package/dist/types-ts4.5/make-adapter/make-adapter.d.ts +2 -2
- package/dist/types-ts4.5/make-adapter/make-drop-target.d.ts +1 -1
- package/dist/types-ts4.5/public-utils/custom-external-data-type-media-type-prefix.d.ts +1 -0
- package/dist/types-ts4.5/{util/custom-native-drag-preview/offset-from-pointer.d.ts → public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.d.ts} +4 -1
- package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.d.ts +1 -1
- package/dist/{types/util → types-ts4.5/public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +1 -1
- package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/types.d.ts +1 -1
- package/dist/types-ts4.5/public-utils/element/format-urls-for-external.d.ts +31 -0
- package/dist/types-ts4.5/public-utils/external/file.d.ts +4 -0
- package/dist/types-ts4.5/public-utils/external/html.d.ts +3 -0
- package/dist/types-ts4.5/public-utils/external/native-types.d.ts +12 -0
- package/dist/types-ts4.5/public-utils/external/some.d.ts +20 -0
- package/dist/types-ts4.5/public-utils/external/text.d.ts +3 -0
- package/dist/types-ts4.5/public-utils/external/url.d.ts +3 -0
- package/dist/{types/addon/cancel-unhandled.d.ts → types-ts4.5/public-utils/prevent-unhandled.d.ts} +1 -1
- package/dist/types-ts4.5/util/android.d.ts +2 -0
- package/dist/types-ts4.5/util/cache-first.d.ts +15 -0
- package/dist/types-ts4.5/util/changing-window/count-events-for-safari.d.ts +6 -0
- package/dist/types-ts4.5/util/{entering-and-leaving-the-window.d.ts → changing-window/is-entering-window.d.ts} +0 -3
- package/dist/types-ts4.5/util/changing-window/is-leaving-window.d.ts +3 -0
- package/dist/types-ts4.5/util/detect-broken-drag.d.ts +12 -0
- package/dist/types-ts4.5/util/is-firefox.d.ts +4 -0
- package/dist/types-ts4.5/util/is-safari.d.ts +1 -1
- package/dist/types-ts4.5/util/media-types/html-media-type.d.ts +1 -0
- package/dist/types-ts4.5/util/media-types/text-media-type.d.ts +1 -0
- package/dist/types-ts4.5/util/media-types/url-media-type.d.ts +1 -0
- package/element/adapter/package.json +15 -0
- package/element/center-under-pointer/package.json +15 -0
- package/element/disable-native-drag-preview/package.json +15 -0
- package/element/format-urls-for-external/package.json +15 -0
- package/element/pointer-outside-of-preview/package.json +15 -0
- package/element/preserve-offset-on-source/package.json +15 -0
- package/element/scroll-just-enough-into-view/package.json +15 -0
- package/element/set-custom-native-drag-preview/package.json +15 -0
- package/external/adapter/package.json +15 -0
- package/external/file/package.json +15 -0
- package/external/html/package.json +15 -0
- package/external/some/package.json +15 -0
- package/external/text/package.json +15 -0
- package/external/url/package.json +15 -0
- package/once/package.json +15 -0
- package/package.json +23 -17
- package/prevent-unhandled/package.json +15 -0
- package/reorder/package.json +15 -0
- package/text-selection/adapter/package.json +15 -0
- package/adapter/element/package.json +0 -15
- package/adapter/file/package.json +0 -15
- package/addon/cancel-unhandled/package.json +0 -15
- package/constellation/index/about.mdx +0 -394
- package/dist/cjs/adapter/file-adapter.js +0 -96
- package/dist/cjs/entry-point/adapter/file.js +0 -18
- package/dist/cjs/entry-point/addon/cancel-unhandled.js +0 -12
- package/dist/cjs/entry-point/experimental/cross-with-element-adapter.js +0 -30
- package/dist/cjs/entry-point/util/offset-from-pointer.js +0 -12
- package/dist/cjs/experimental/cross-window-element-adapter.js +0 -129
- package/dist/es2019/adapter/file-adapter.js +0 -90
- package/dist/es2019/entry-point/adapter/element.js +0 -1
- package/dist/es2019/entry-point/adapter/file.js +0 -1
- package/dist/es2019/entry-point/addon/cancel-unhandled.js +0 -1
- package/dist/es2019/entry-point/experimental/cross-with-element-adapter.js +0 -1
- package/dist/es2019/entry-point/util/center-under-pointer.js +0 -1
- package/dist/es2019/entry-point/util/combine.js +0 -1
- package/dist/es2019/entry-point/util/disable-native-drag-preview.js +0 -1
- package/dist/es2019/entry-point/util/offset-from-pointer.js +0 -1
- package/dist/es2019/entry-point/util/once.js +0 -1
- package/dist/es2019/entry-point/util/preserve-offset-on-source.js +0 -1
- package/dist/es2019/entry-point/util/reorder.js +0 -1
- package/dist/es2019/entry-point/util/scroll-just-enough-into-view.js +0 -1
- package/dist/es2019/entry-point/util/set-custom-native-drag-preview.js +0 -1
- package/dist/es2019/experimental/cross-window-element-adapter.js +0 -121
- package/dist/esm/adapter/file-adapter.js +0 -90
- package/dist/esm/entry-point/adapter/element.js +0 -1
- package/dist/esm/entry-point/adapter/file.js +0 -1
- package/dist/esm/entry-point/addon/cancel-unhandled.js +0 -1
- package/dist/esm/entry-point/experimental/cross-with-element-adapter.js +0 -1
- package/dist/esm/entry-point/util/center-under-pointer.js +0 -1
- package/dist/esm/entry-point/util/combine.js +0 -1
- package/dist/esm/entry-point/util/disable-native-drag-preview.js +0 -1
- package/dist/esm/entry-point/util/offset-from-pointer.js +0 -1
- package/dist/esm/entry-point/util/once.js +0 -1
- package/dist/esm/entry-point/util/preserve-offset-on-source.js +0 -1
- package/dist/esm/entry-point/util/reorder.js +0 -1
- package/dist/esm/entry-point/util/scroll-just-enough-into-view.js +0 -1
- package/dist/esm/entry-point/util/set-custom-native-drag-preview.js +0 -1
- package/dist/esm/experimental/cross-window-element-adapter.js +0 -120
- package/dist/types/adapter/file-adapter.d.ts +0 -18
- package/dist/types/entry-point/adapter/element.d.ts +0 -2
- package/dist/types/entry-point/adapter/file.d.ts +0 -2
- package/dist/types/entry-point/addon/cancel-unhandled.d.ts +0 -1
- package/dist/types/entry-point/experimental/cross-with-element-adapter.d.ts +0 -1
- package/dist/types/entry-point/util/center-under-pointer.d.ts +0 -1
- package/dist/types/entry-point/util/combine.d.ts +0 -1
- package/dist/types/entry-point/util/disable-native-drag-preview.d.ts +0 -1
- package/dist/types/entry-point/util/offset-from-pointer.d.ts +0 -1
- package/dist/types/entry-point/util/once.d.ts +0 -1
- package/dist/types/entry-point/util/preserve-offset-on-source.d.ts +0 -1
- package/dist/types/entry-point/util/reorder.d.ts +0 -1
- package/dist/types/entry-point/util/scroll-just-enough-into-view.d.ts +0 -1
- package/dist/types/entry-point/util/set-custom-native-drag-preview.d.ts +0 -1
- package/dist/types/experimental/cross-window-element-adapter.d.ts +0 -17
- package/dist/types-ts4.5/adapter/file-adapter.d.ts +0 -18
- package/dist/types-ts4.5/entry-point/adapter/element.d.ts +0 -2
- package/dist/types-ts4.5/entry-point/adapter/file.d.ts +0 -2
- package/dist/types-ts4.5/entry-point/addon/cancel-unhandled.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/experimental/cross-with-element-adapter.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/center-under-pointer.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/combine.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/disable-native-drag-preview.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/offset-from-pointer.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/once.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/preserve-offset-on-source.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/reorder.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/scroll-just-enough-into-view.d.ts +0 -1
- package/dist/types-ts4.5/entry-point/util/set-custom-native-drag-preview.d.ts +0 -1
- package/dist/types-ts4.5/experimental/cross-window-element-adapter.d.ts +0 -17
- package/experimental/cross-window-element-adapter/package.json +0 -15
- package/util/center-under-pointer/package.json +0 -15
- package/util/combine/package.json +0 -15
- package/util/disable-native-drag-preview/package.json +0 -15
- package/util/offset-from-pointer/package.json +0 -15
- package/util/once/package.json +0 -15
- package/util/preserve-offset-on-source/package.json +0 -15
- package/util/reorder/package.json +0 -15
- package/util/scroll-just-enough-into-view/package.json +0 -15
- package/util/set-custom-native-drag-preview/package.json +0 -15
- /package/dist/cjs/entry-point/{adapter/element.js → element/adapter.js} +0 -0
- /package/dist/cjs/{util → public-utils}/combine.js +0 -0
- /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
- /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
- /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
- /package/dist/cjs/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
- /package/dist/cjs/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
- /package/dist/cjs/{util → public-utils}/once.js +0 -0
- /package/dist/cjs/{util → public-utils}/reorder.js +0 -0
- /package/dist/es2019/{util → public-utils}/combine.js +0 -0
- /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
- /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
- /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
- /package/dist/es2019/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
- /package/dist/es2019/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
- /package/dist/{esm/util/custom-native-drag-preview/types.js → es2019/public-utils/external/native-types.js} +0 -0
- /package/dist/es2019/{util → public-utils}/once.js +0 -0
- /package/dist/es2019/{util → public-utils}/reorder.js +0 -0
- /package/dist/esm/{util → public-utils}/combine.js +0 -0
- /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
- /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
- /package/dist/esm/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
- /package/dist/esm/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
- /package/dist/esm/{util → public-utils}/once.js +0 -0
- /package/dist/esm/{util → public-utils}/reorder.js +0 -0
- /package/dist/types/{util → public-utils}/combine.d.ts +0 -0
- /package/dist/types/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
- /package/dist/types/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
- /package/dist/types/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
- /package/dist/types/{util → public-utils}/once.d.ts +0 -0
- /package/dist/types/{util → public-utils}/reorder.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils}/combine.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils}/once.d.ts +0 -0
- /package/dist/types-ts4.5/{util → public-utils}/reorder.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/pragmatic-drag-and-drop
|
|
2
2
|
|
|
3
|
+
## 1.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#76476](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/76476) [`35148e092790`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/35148e092790) - Adding warning for test environments to let people know if DragEvents have not been setup correctly.
|
|
8
|
+
|
|
9
|
+
## 1.0.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- [#70616](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/70616) [`42e57ea65fee`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/42e57ea65fee) - This is our first `major` release (`1.0`) for all Pragmatic drag and drop packages.
|
|
14
|
+
|
|
15
|
+
For a detailed explanation of these changes, and how to upgrade (automatically) to `1.0` please see our [1.0 upgrade guide](http://atlassian.design/components/pragmatic-drag-and-drop/core-package/upgrade-guides/upgrade-guide-for-1.0)
|
|
16
|
+
|
|
3
17
|
## 0.25.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/pragmatic-drag-and-drop/combine",
|
|
3
|
+
"main": "../dist/cjs/entry-point/combine.js",
|
|
4
|
+
"module": "../dist/esm/entry-point/combine.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/entry-point/combine.js",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"types": "../dist/types/entry-point/combine.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
">=4.5 <4.9": {
|
|
10
|
+
"*": [
|
|
11
|
+
"../dist/types-ts4.5/entry-point/combine.d.ts"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.elementAdapterNativeDataKey = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* This key has been pulled into a separate module
|
|
9
|
+
* so that the external adapter does not need to import
|
|
10
|
+
* the element adapter
|
|
11
|
+
*/
|
|
12
|
+
var elementAdapterNativeDataKey = exports.elementAdapterNativeDataKey = 'application/vnd.pdnd';
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.draggable = draggable;
|
|
7
8
|
exports.monitorForElements = exports.dropTargetForElements = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
10
|
var _bindEventListener = require("bind-event-listener");
|
|
9
11
|
var _makeAdapter = require("../make-adapter/make-adapter");
|
|
12
|
+
var _combine = require("../public-utils/combine");
|
|
10
13
|
var _addAttribute = require("../util/add-attribute");
|
|
11
|
-
var
|
|
14
|
+
var _android = require("../util/android");
|
|
12
15
|
var _getInput = require("../util/get-input");
|
|
16
|
+
var _textMediaType = require("../util/media-types/text-media-type");
|
|
17
|
+
var _urlMediaType = require("../util/media-types/url-media-type");
|
|
18
|
+
var _elementAdapterNativeDataKey = require("./element-adapter-native-data-key");
|
|
13
19
|
var draggableRegistry = new WeakMap();
|
|
14
20
|
function addToRegistry(args) {
|
|
15
21
|
draggableRegistry.set(args.element, args);
|
|
@@ -21,13 +27,40 @@ var adapter = (0, _makeAdapter.makeAdapter)({
|
|
|
21
27
|
typeKey: 'element',
|
|
22
28
|
defaultDropEffect: 'move',
|
|
23
29
|
mount: function mount(api) {
|
|
24
|
-
|
|
30
|
+
/** Binding event listeners the `document` rather than `window` so that
|
|
31
|
+
* this adapter always gets preference over the text adapter.
|
|
32
|
+
* `document` is the first `EventTarget` under `window`
|
|
33
|
+
* https://twitter.com/alexandereardon/status/1604658588311465985
|
|
34
|
+
*/
|
|
35
|
+
return (0, _bindEventListener.bind)(document, {
|
|
25
36
|
type: 'dragstart',
|
|
26
37
|
listener: function listener(event) {
|
|
27
|
-
var _entry$dragHandle, _entry$dragHandle2, _entry$
|
|
38
|
+
var _entry$dragHandle, _entry$getInitialData, _entry$getInitialData2, _entry$dragHandle2, _entry$getInitialData3, _entry$getInitialData4;
|
|
28
39
|
if (!api.canStart(event)) {
|
|
29
40
|
return;
|
|
30
41
|
}
|
|
42
|
+
|
|
43
|
+
// If the "dragstart" event is cancelled, then a drag won't start
|
|
44
|
+
// There will be no further drag operation events (eg no "dragend" event)
|
|
45
|
+
if (event.defaultPrevented) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Technically `dataTransfer` can be `null` according to the types
|
|
50
|
+
// But that behaviour does not seem to appear in the spec.
|
|
51
|
+
// If there is not `dataTransfer`, we can assume something is wrong and not
|
|
52
|
+
// start a drag
|
|
53
|
+
if (!event.dataTransfer) {
|
|
54
|
+
// Including this code on "test" and "development" environments:
|
|
55
|
+
// - Browser tests commonly run against "development" builds
|
|
56
|
+
// - Unit tests commonly run in "test"
|
|
57
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.warn("\n It appears as though you have are not testing DragEvents correctly.\n\n - If you are unit testing, ensure you have pollyfilled DragEvent.\n - If you are browser testing, ensure you are dispatching drag events correctly.\n\n Please see our testing guides for more information:\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\n ".replace(/ {2}/g, ''));
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
31
64
|
// the closest parent that is a draggable element will be marked as
|
|
32
65
|
// the `event.target` for the event
|
|
33
66
|
var target = event.target;
|
|
@@ -72,26 +105,84 @@ var adapter = (0, _makeAdapter.makeAdapter)({
|
|
|
72
105
|
}
|
|
73
106
|
}
|
|
74
107
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
108
|
+
/**
|
|
109
|
+
* **Goal**
|
|
110
|
+
* Pass information to other applications
|
|
111
|
+
*
|
|
112
|
+
* **Approach**
|
|
113
|
+
* Put data into the native data store
|
|
114
|
+
*
|
|
115
|
+
* **What about the native adapter?**
|
|
116
|
+
* When the element adapter puts native data into the native data store
|
|
117
|
+
* the native adapter is not triggered in the current window,
|
|
118
|
+
* but a native adapter in an external window _can_ be triggered
|
|
119
|
+
*
|
|
120
|
+
* **Why bake this into core?**
|
|
121
|
+
* This functionality could be pulled out and exposed inside of
|
|
122
|
+
* `onGenerateDragPreview`. But decided to make it a part of the
|
|
123
|
+
* base API as it felt like a common enough use case and ended
|
|
124
|
+
* up being a similar amount of code to include this function as
|
|
125
|
+
* it was to expose the hook for it
|
|
126
|
+
*/
|
|
127
|
+
var 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;
|
|
128
|
+
if (nativeData) {
|
|
129
|
+
for (var _i = 0, _Object$entries = Object.entries(nativeData); _i < _Object$entries.length; _i++) {
|
|
130
|
+
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
131
|
+
key = _Object$entries$_i[0],
|
|
132
|
+
data = _Object$entries$_i[1];
|
|
133
|
+
event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 📱 For Android devices, a drag operation will not start unless
|
|
139
|
+
* "text/plain" or "text/uri-list" data exists in the native data store
|
|
140
|
+
* https://twitter.com/alexandereardon/status/1732189803754713424
|
|
141
|
+
*
|
|
142
|
+
* Tested on:
|
|
143
|
+
* Device: Google Pixel 5
|
|
144
|
+
* Android version: 14 (November 5, 2023)
|
|
145
|
+
* Chrome version: 120.0
|
|
146
|
+
*/
|
|
147
|
+
var types = event.dataTransfer.types;
|
|
148
|
+
if ((0, _android.isAndroid)() && !types.includes(_textMediaType.textMediaType) && !types.includes(_urlMediaType.urlMediaType)) {
|
|
149
|
+
event.dataTransfer.setData(_textMediaType.textMediaType, _android.androidFallbackText);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 1. Must set any media type for `iOS15` to work
|
|
154
|
+
* 2. We are also doing adding data so that the native adapter
|
|
155
|
+
* can know that the element adapter has handled this drag
|
|
156
|
+
*
|
|
157
|
+
* We used to wrap this `setData()` in a `try/catch` for Firefox,
|
|
158
|
+
* but it looks like that was not needed.
|
|
159
|
+
*
|
|
160
|
+
* Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f
|
|
161
|
+
*
|
|
162
|
+
* - ✅ Firefox@70.0 (Oct 2019) on macOS Sonoma
|
|
163
|
+
* - ✅ Firefox@70.0 (Oct 2019) on macOS Big Sur
|
|
164
|
+
* - ✅ Firefox@70.0 (Oct 2019) on Windows 10
|
|
165
|
+
*
|
|
166
|
+
* // just checking a few more combinations to be super safe
|
|
167
|
+
*
|
|
168
|
+
* - ✅ Chrome@78 (Oct 2019) on macOS Big Sur
|
|
169
|
+
* - ✅ Chrome@78 (Oct 2019) on Windows 10
|
|
170
|
+
* - ✅ Safari@14.1 on macOS Big Sur
|
|
171
|
+
*/
|
|
172
|
+
event.dataTransfer.setData(_elementAdapterNativeDataKey.elementAdapterNativeDataKey, '');
|
|
82
173
|
var payload = {
|
|
83
174
|
element: entry.element,
|
|
84
175
|
dragHandle: (_entry$dragHandle2 = entry.dragHandle) !== null && _entry$dragHandle2 !== void 0 ? _entry$dragHandle2 : null,
|
|
85
|
-
data: (_entry$
|
|
176
|
+
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 : {}
|
|
86
177
|
};
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
178
|
+
var dragType = {
|
|
179
|
+
type: 'element',
|
|
180
|
+
payload: payload,
|
|
181
|
+
startedFrom: 'internal'
|
|
91
182
|
};
|
|
92
183
|
api.start({
|
|
93
184
|
event: event,
|
|
94
|
-
|
|
185
|
+
dragType: dragType
|
|
95
186
|
});
|
|
96
187
|
}
|
|
97
188
|
});
|
|
@@ -146,4 +237,18 @@ function draggable(args) {
|
|
|
146
237
|
attribute: 'draggable',
|
|
147
238
|
value: 'true'
|
|
148
239
|
}));
|
|
149
|
-
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** Common event payload for all events */
|
|
243
|
+
|
|
244
|
+
/** A map containing payloads for all events */
|
|
245
|
+
|
|
246
|
+
/** Common event payload for all drop target events */
|
|
247
|
+
|
|
248
|
+
/** A map containing payloads for all events on drop targets */
|
|
249
|
+
|
|
250
|
+
/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */
|
|
251
|
+
|
|
252
|
+
/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */
|
|
253
|
+
|
|
254
|
+
/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.dropTargetForExternal = dropTargetForExternal;
|
|
8
|
+
exports.getAvailableItems = getAvailableItems;
|
|
9
|
+
exports.getAvailableTypes = getAvailableTypes;
|
|
10
|
+
exports.isAnAvailableType = isAnAvailableType;
|
|
11
|
+
exports.monitorForExternal = monitorForExternal;
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
var _bindEventListener = require("bind-event-listener");
|
|
14
|
+
var _makeAdapter = require("../make-adapter/make-adapter");
|
|
15
|
+
var _android = require("../util/android");
|
|
16
|
+
var _isEnteringWindow = require("../util/changing-window/is-entering-window");
|
|
17
|
+
var _detectBrokenDrag = require("../util/detect-broken-drag");
|
|
18
|
+
var _textMediaType = require("../util/media-types/text-media-type");
|
|
19
|
+
var _elementAdapterNativeDataKey = require("./element-adapter-native-data-key");
|
|
20
|
+
function isAnAvailableType(_ref) {
|
|
21
|
+
var type = _ref.type,
|
|
22
|
+
value = _ref.value;
|
|
23
|
+
// We don't want to expose our private elementAdapter key / value
|
|
24
|
+
if (type === _elementAdapterNativeDataKey.elementAdapterNativeDataKey) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
// Not exposing "text/plain" if it contains the android fallback text
|
|
28
|
+
// We _could_ add an `isAndroid()` check, but it's probably safest
|
|
29
|
+
// to trim this data out, regardless of what OS we see it on.
|
|
30
|
+
if (type === _textMediaType.textMediaType && value === _android.androidFallbackText) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function getAvailableTypes(transfer) {
|
|
36
|
+
return Array.from(transfer.types).filter(function (type) {
|
|
37
|
+
return isAnAvailableType({
|
|
38
|
+
type: type,
|
|
39
|
+
value: transfer.getData(type)
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function getAvailableItems(dataTransfer) {
|
|
44
|
+
// item.kind is 'string' | 'file'
|
|
45
|
+
// For 'string' item.type is the mimeType (eg 'text/plain')
|
|
46
|
+
// For 'file' item.type is the file type (eg 'image/jpg')
|
|
47
|
+
|
|
48
|
+
return Array.from(dataTransfer.items).filter(function (item) {
|
|
49
|
+
return item.kind === 'file' || isAnAvailableType({
|
|
50
|
+
type: item.type,
|
|
51
|
+
value: dataTransfer.getData(item.type)
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
var didDragStartLocally = false;
|
|
56
|
+
var adapter = (0, _makeAdapter.makeAdapter)({
|
|
57
|
+
typeKey: 'external',
|
|
58
|
+
// for external drags, we are generally making a copy of something that is being dragged
|
|
59
|
+
defaultDropEffect: 'copy',
|
|
60
|
+
mount: function mount(api) {
|
|
61
|
+
// Binding to the `window` so that the element adapter
|
|
62
|
+
// has a chance to get in first on the`document`.
|
|
63
|
+
// We are giving preference to the element adapter.
|
|
64
|
+
return (0, _bindEventListener.bind)(window, {
|
|
65
|
+
type: 'dragenter',
|
|
66
|
+
listener: function listener(event) {
|
|
67
|
+
// drag operation was started within the document, it won't be an "external" drag
|
|
68
|
+
if (didDragStartLocally) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Note: not checking if event was cancelled (`event.defaultPrevented`) as
|
|
73
|
+
// cancelling a "dragenter" accepts the drag operation (not prevent it)
|
|
74
|
+
|
|
75
|
+
// Something has gone wrong with our drag event
|
|
76
|
+
if (!event.dataTransfer) {
|
|
77
|
+
// Including this code on "test" and "development" environments:
|
|
78
|
+
// - Browser tests commonly run against "development" builds
|
|
79
|
+
// - Unit tests commonly run in "test"
|
|
80
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
81
|
+
// eslint-disable-next-line no-console
|
|
82
|
+
console.warn("\n It appears as though you have are not testing DragEvents correctly.\n\n - If you are unit testing, ensure you have pollyfilled DragEvent.\n - If you are browser testing, ensure you are dispatching drag events correctly.\n\n Please see our testing guides for more information:\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\n ".replace(/ {2}/g, ''));
|
|
83
|
+
}
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (!api.canStart(event)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!(0, _isEnteringWindow.isEnteringWindow)({
|
|
90
|
+
dragEnter: event
|
|
91
|
+
})) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Note: not checking types for `elementAdapterNativeDataKey` as we expect to see that
|
|
96
|
+
// key when pdnd started the drag in another document
|
|
97
|
+
var types = getAvailableTypes(event.dataTransfer);
|
|
98
|
+
if (!types.length) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var locked = {
|
|
102
|
+
types: types,
|
|
103
|
+
items: [],
|
|
104
|
+
getStringData: function getStringData() {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
api.start({
|
|
109
|
+
event: event,
|
|
110
|
+
dragType: {
|
|
111
|
+
type: 'external',
|
|
112
|
+
startedFrom: 'external',
|
|
113
|
+
payload: locked,
|
|
114
|
+
getDropPayload: function getDropPayload(event) {
|
|
115
|
+
// this would be a platform error
|
|
116
|
+
// trying to handle it gracefully rather than throwing (for now)
|
|
117
|
+
if (!event.dataTransfer) {
|
|
118
|
+
return locked;
|
|
119
|
+
}
|
|
120
|
+
var items = getAvailableItems(event.dataTransfer);
|
|
121
|
+
// need to use `.bind` as `getData` is required
|
|
122
|
+
// to be run with `event.dataTransfer` as the "this" context
|
|
123
|
+
var nativeGetData = event.dataTransfer.getData.bind(event.dataTransfer);
|
|
124
|
+
return {
|
|
125
|
+
types: types,
|
|
126
|
+
items: items,
|
|
127
|
+
// return `null` if there is no result, otherwise string
|
|
128
|
+
getStringData: function getStringData(mediaType) {
|
|
129
|
+
// not dragging the requested type
|
|
130
|
+
// return `null` (no result)
|
|
131
|
+
if (!types.includes(mediaType)) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// nativeGetData will return `""` when there is no value,
|
|
136
|
+
// but at this point we know we will only get explicitly set
|
|
137
|
+
// values back as we have checked the `types`.
|
|
138
|
+
// `""` can be an explicitly set value.
|
|
139
|
+
var value = nativeGetData(mediaType);
|
|
140
|
+
|
|
141
|
+
// not exposing data for unavailable types
|
|
142
|
+
if (!isAnAvailableType({
|
|
143
|
+
type: mediaType,
|
|
144
|
+
value: value
|
|
145
|
+
})) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
return value;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Some events don't make sense for the external adapter
|
|
161
|
+
*
|
|
162
|
+
* `onGenerateDragPreview`
|
|
163
|
+
* The browser creates the drag preview for external drags, so we don't
|
|
164
|
+
* need an event to generate the preview for _monitors_ or the _dropTarget_
|
|
165
|
+
*
|
|
166
|
+
* `onDragStart`
|
|
167
|
+
* An external drag can never start from in the `window`, so _dropTarget_'s
|
|
168
|
+
* don't need `onDragStart`
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
function dropTargetForExternal(args) {
|
|
172
|
+
// not removing unused events, just leaning on the type system
|
|
173
|
+
return adapter.dropTarget(args);
|
|
174
|
+
}
|
|
175
|
+
function monitorForExternal(args) {
|
|
176
|
+
// not removing unused events, just leaning on the type system
|
|
177
|
+
return adapter.monitor(args);
|
|
178
|
+
}
|
|
179
|
+
(function startup() {
|
|
180
|
+
// server side rendering check
|
|
181
|
+
if (typeof window === 'undefined') {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// A shared single usage registration as we want to capture
|
|
186
|
+
// all external drag operations, even if there are no drop targets
|
|
187
|
+
// on the page yet
|
|
188
|
+
adapter.registerUsage();
|
|
189
|
+
// independent of pdnd, we need to keep track of
|
|
190
|
+
// all drag operations so that we can know if a drag operation
|
|
191
|
+
// has started locally
|
|
192
|
+
var idle = {
|
|
193
|
+
type: 'idle'
|
|
194
|
+
};
|
|
195
|
+
var state = idle;
|
|
196
|
+
function clear() {
|
|
197
|
+
if (state.type !== 'dragging') {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
didDragStartLocally = false;
|
|
201
|
+
state.cleanup();
|
|
202
|
+
state = idle;
|
|
203
|
+
}
|
|
204
|
+
function bindEndEvents() {
|
|
205
|
+
return (0, _bindEventListener.bindAll)(window, [{
|
|
206
|
+
type: 'dragend',
|
|
207
|
+
listener: clear
|
|
208
|
+
}].concat((0, _toConsumableArray2.default)((0, _detectBrokenDrag.getBindingsForBrokenDrags)({
|
|
209
|
+
onDragEnd: clear
|
|
210
|
+
}))),
|
|
211
|
+
// we want to make sure we get all the events,
|
|
212
|
+
// and this helps avoid not seeing events when folks stop
|
|
213
|
+
// them later on the event path
|
|
214
|
+
{
|
|
215
|
+
capture: true
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// we always keep this event listener active
|
|
220
|
+
(0, _bindEventListener.bind)(window, {
|
|
221
|
+
type: 'dragstart',
|
|
222
|
+
listener: function listener() {
|
|
223
|
+
// something bad has happened if this is true!
|
|
224
|
+
if (state.type !== 'idle') {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// set our global flag
|
|
228
|
+
didDragStartLocally = true;
|
|
229
|
+
state = {
|
|
230
|
+
type: 'dragging',
|
|
231
|
+
cleanup: bindEndEvents()
|
|
232
|
+
};
|
|
233
|
+
},
|
|
234
|
+
// binding in the capture phase so these listeners are called
|
|
235
|
+
// before our listeners in the adapters `mount` function
|
|
236
|
+
options: {
|
|
237
|
+
capture: true
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
})();
|
|
241
|
+
|
|
242
|
+
/** Common event payload for all events */
|
|
243
|
+
|
|
244
|
+
/** A map containing payloads for all events */
|
|
245
|
+
|
|
246
|
+
/** Common event payload for all drop target events */
|
|
247
|
+
|
|
248
|
+
/** A map containing payloads for all events on drop targets */
|
|
249
|
+
|
|
250
|
+
/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */
|
|
251
|
+
|
|
252
|
+
/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForExternal` */
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.dropTargetForTextSelection = dropTargetForTextSelection;
|
|
7
|
+
exports.monitorForTextSelection = monitorForTextSelection;
|
|
8
|
+
var _bindEventListener = require("bind-event-listener");
|
|
9
|
+
var _makeAdapter = require("../make-adapter/make-adapter");
|
|
10
|
+
var _isSafari = require("../util/is-safari");
|
|
11
|
+
var _htmlMediaType = require("../util/media-types/html-media-type");
|
|
12
|
+
var _textMediaType = require("../util/media-types/text-media-type");
|
|
13
|
+
var _elementAdapterNativeDataKey = require("./element-adapter-native-data-key");
|
|
14
|
+
function findTextNode(event) {
|
|
15
|
+
var _event$dataTransfer;
|
|
16
|
+
// Standard: the `event.target` should be the closest `Text` node.
|
|
17
|
+
if (event.target instanceof Text) {
|
|
18
|
+
return event.target;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Structuring things this way so that if Safari fixes their bug
|
|
22
|
+
// then the standard check will start working
|
|
23
|
+
if (!(0, _isSafari.isSafari)()) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* According to the spec, `event.target` should be the `Text` node that
|
|
29
|
+
* the drag started from when dragging a text selection.
|
|
30
|
+
*
|
|
31
|
+
* → https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model
|
|
32
|
+
*
|
|
33
|
+
* However, in Safari the closest `HTMLElement` is returned.
|
|
34
|
+
* So we need to figure out if text is dragging ourselves.
|
|
35
|
+
*
|
|
36
|
+
* → https://bugs.webkit.org/show_bug.cgi?id=268959
|
|
37
|
+
*/
|
|
38
|
+
if (!(event.target instanceof HTMLElement)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// unlikely that this particular drag is a text selection drag
|
|
43
|
+
if (event.target.draggable) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// if the drag contains no text data, then not dragging selected text
|
|
48
|
+
// return `null` if there is no dataTransfer, or if `getData()` returns ""
|
|
49
|
+
if (!((_event$dataTransfer = event.dataTransfer) !== null && _event$dataTransfer !== void 0 && _event$dataTransfer.getData(_textMediaType.textMediaType))) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Grab the first Text node and use that
|
|
54
|
+
var text = Array.from(event.target.childNodes).find(function (node) {
|
|
55
|
+
return node.nodeType === Node.TEXT_NODE;
|
|
56
|
+
});
|
|
57
|
+
return text !== null && text !== void 0 ? text : null;
|
|
58
|
+
}
|
|
59
|
+
var adapter = (0, _makeAdapter.makeAdapter)({
|
|
60
|
+
typeKey: 'text-selection',
|
|
61
|
+
// for text selection, we will usually be making a copy of the text
|
|
62
|
+
defaultDropEffect: 'copy',
|
|
63
|
+
mount: function mount(api) {
|
|
64
|
+
// Binding to the `window` so that the element adapter has a
|
|
65
|
+
// chance to get in first on the `document`.
|
|
66
|
+
// We are giving preference to the element adapter.
|
|
67
|
+
return (0, _bindEventListener.bindAll)(window, [{
|
|
68
|
+
type: 'dragstart',
|
|
69
|
+
listener: function listener(event) {
|
|
70
|
+
// If the "dragstart" event is cancelled, then a drag won't start
|
|
71
|
+
// There will be no further drag operation events (eg no "dragend" event)
|
|
72
|
+
if (event.defaultPrevented) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Something has gone wrong with our drag event
|
|
77
|
+
if (!event.dataTransfer) {
|
|
78
|
+
// Including this code on "test" and "development" environments:
|
|
79
|
+
// - Browser tests commonly run against "development" builds
|
|
80
|
+
// - Unit tests commonly run in "test"
|
|
81
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
83
|
+
console.warn("\n It appears as though you have are not testing DragEvents correctly.\n\n - If you are unit testing, ensure you have pollyfilled DragEvent.\n - If you are browser testing, ensure you are dispatching drag events correctly.\n\n Please see our testing guides for more information:\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\n ".replace(/ {2}/g, ''));
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Drag is being handled by the element adapter
|
|
89
|
+
if (event.dataTransfer.types.includes(_elementAdapterNativeDataKey.elementAdapterNativeDataKey)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Something else is handling this drag
|
|
94
|
+
if (!api.canStart(event)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
var target = findTextNode(event);
|
|
98
|
+
if (!target) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var payload = {
|
|
102
|
+
// The `Text` node that is the `target` is the `Text` node
|
|
103
|
+
// that the user started the drag from.
|
|
104
|
+
// The full text being dragged can be looked up from the `dataTransfer`.
|
|
105
|
+
target: target,
|
|
106
|
+
// This is safe to do in "dragstart" as the `dataTransfer` is in read/write mode.
|
|
107
|
+
plain: event.dataTransfer.getData(_textMediaType.textMediaType),
|
|
108
|
+
HTML: event.dataTransfer.getData(_htmlMediaType.HTMLMediaType)
|
|
109
|
+
};
|
|
110
|
+
api.start({
|
|
111
|
+
event: event,
|
|
112
|
+
dragType: {
|
|
113
|
+
type: 'text-selection',
|
|
114
|
+
startedFrom: 'internal',
|
|
115
|
+
payload: payload
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}]);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// The `onGenerateDragPreview` does not make sense to publish for text selection
|
|
124
|
+
// as the browser is completely in control of the drag preview
|
|
125
|
+
function dropTargetForTextSelection(args) {
|
|
126
|
+
// note: not removing `onGenerateDragPreview`; just leaning on the type system
|
|
127
|
+
return adapter.dropTarget(args);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// A shared single usage registration as any text can be dragged at any time
|
|
131
|
+
(function register() {
|
|
132
|
+
// server side rendering check
|
|
133
|
+
if (typeof window === 'undefined') {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
adapter.registerUsage();
|
|
137
|
+
})();
|
|
138
|
+
function monitorForTextSelection(args) {
|
|
139
|
+
// note: not removing `onGenerateDragPreview`; just leaning on the type system
|
|
140
|
+
return adapter.monitor(args);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** Common event payload for all events */
|
|
144
|
+
|
|
145
|
+
/** A map containing payloads for all events */
|
|
146
|
+
|
|
147
|
+
/** Common event payload for all drop target events */
|
|
148
|
+
|
|
149
|
+
/** A map containing payloads for all events on drop targets */
|
|
150
|
+
|
|
151
|
+
/** Argument given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */
|
|
152
|
+
|
|
153
|
+
/** Argument given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForExternal` */
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "preventUnhandled", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _preventUnhandled.preventUnhandled;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _preventUnhandled = require("../public-utils/prevent-unhandled");
|
|
@@ -9,4 +9,4 @@ Object.defineProperty(exports, "centerUnderPointer", {
|
|
|
9
9
|
return _centerUnderPointer.centerUnderPointer;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var _centerUnderPointer = require("../../
|
|
12
|
+
var _centerUnderPointer = require("../../public-utils/element/custom-native-drag-preview/center-under-pointer");
|