@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.
Files changed (401) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/combine/package.json +15 -0
  3. package/constellation/index/props.mdx +1 -1
  4. package/dist/cjs/adapter/element-adapter-native-data-key.js +12 -0
  5. package/dist/cjs/adapter/element-adapter.js +122 -17
  6. package/dist/cjs/adapter/external-adapter.js +252 -0
  7. package/dist/cjs/adapter/text-selection-adapter.js +153 -0
  8. package/dist/cjs/entry-point/cancel-unhandled.js +12 -0
  9. package/dist/cjs/entry-point/{util/combine.js → combine.js} +1 -1
  10. package/dist/cjs/entry-point/{util → element}/center-under-pointer.js +1 -1
  11. package/dist/cjs/entry-point/{util → element}/disable-native-drag-preview.js +1 -1
  12. package/dist/cjs/entry-point/element/format-urls-for-external.js +12 -0
  13. package/dist/cjs/entry-point/element/pointer-outside-of-preview.js +12 -0
  14. package/dist/cjs/entry-point/{util → element}/preserve-offset-on-source.js +1 -1
  15. package/dist/cjs/entry-point/{util → element}/scroll-just-enough-into-view.js +1 -1
  16. package/dist/cjs/entry-point/{util → element}/set-custom-native-drag-preview.js +1 -1
  17. package/dist/cjs/entry-point/external/adapter.js +18 -0
  18. package/dist/cjs/entry-point/external/file.js +18 -0
  19. package/dist/cjs/entry-point/external/html.js +18 -0
  20. package/dist/cjs/entry-point/external/some.js +12 -0
  21. package/dist/cjs/entry-point/external/text.js +18 -0
  22. package/dist/cjs/entry-point/external/url.js +18 -0
  23. package/dist/cjs/entry-point/{util/once.js → once.js} +1 -1
  24. package/dist/cjs/entry-point/prevent-unhandled.js +12 -0
  25. package/dist/cjs/entry-point/{util/reorder.js → reorder.js} +1 -1
  26. package/dist/cjs/entry-point/text-selection/adapter.js +18 -0
  27. package/dist/cjs/ledger/dispatch-consumer-event.js +1 -1
  28. package/dist/cjs/ledger/lifecycle-manager.js +43 -69
  29. package/dist/cjs/make-adapter/make-adapter.js +2 -2
  30. package/dist/cjs/make-adapter/make-drop-target.js +24 -2
  31. package/dist/cjs/public-utils/custom-external-data-type-media-type-prefix.js +7 -0
  32. 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
  33. package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
  34. package/dist/cjs/public-utils/element/format-urls-for-external.js +39 -0
  35. package/dist/cjs/public-utils/external/file.js +28 -0
  36. package/dist/cjs/public-utils/external/html.js +16 -0
  37. package/dist/cjs/public-utils/external/native-types.js +5 -0
  38. package/dist/cjs/public-utils/external/some.js +34 -0
  39. package/dist/cjs/public-utils/external/text.js +18 -0
  40. package/dist/cjs/public-utils/external/url.js +33 -0
  41. package/dist/cjs/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +2 -2
  42. package/dist/cjs/util/android.js +12 -0
  43. package/dist/cjs/util/cache-first.js +31 -0
  44. package/dist/cjs/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +24 -57
  45. package/dist/cjs/util/changing-window/is-entering-window.js +63 -0
  46. package/dist/cjs/util/changing-window/is-leaving-window.js +61 -0
  47. package/dist/cjs/util/detect-broken-drag.js +53 -0
  48. package/dist/cjs/util/fix-post-drag-pointer-bug.js +11 -0
  49. package/dist/cjs/util/is-firefox.js +18 -0
  50. package/dist/cjs/util/is-safari.js +8 -9
  51. package/dist/cjs/util/media-types/html-media-type.js +12 -0
  52. package/dist/cjs/util/media-types/text-media-type.js +12 -0
  53. package/dist/cjs/util/media-types/url-media-type.js +12 -0
  54. package/dist/es2019/adapter/element-adapter-native-data-key.js +6 -0
  55. package/dist/es2019/adapter/element-adapter.js +127 -17
  56. package/dist/es2019/adapter/external-adapter.js +243 -0
  57. package/dist/es2019/adapter/text-selection-adapter.js +152 -0
  58. package/dist/es2019/entry-point/cancel-unhandled.js +1 -0
  59. package/dist/es2019/entry-point/combine.js +1 -0
  60. package/dist/es2019/entry-point/element/adapter.js +3 -0
  61. package/dist/es2019/entry-point/element/center-under-pointer.js +1 -0
  62. package/dist/es2019/entry-point/element/disable-native-drag-preview.js +1 -0
  63. package/dist/es2019/entry-point/element/format-urls-for-external.js +1 -0
  64. package/dist/es2019/entry-point/element/pointer-outside-of-preview.js +1 -0
  65. package/dist/es2019/entry-point/element/preserve-offset-on-source.js +1 -0
  66. package/dist/es2019/entry-point/element/scroll-just-enough-into-view.js +1 -0
  67. package/dist/es2019/entry-point/element/set-custom-native-drag-preview.js +1 -0
  68. package/dist/es2019/entry-point/external/adapter.js +3 -0
  69. package/dist/es2019/entry-point/external/file.js +1 -0
  70. package/dist/es2019/entry-point/external/html.js +1 -0
  71. package/dist/es2019/entry-point/external/some.js +1 -0
  72. package/dist/es2019/entry-point/external/text.js +1 -0
  73. package/dist/es2019/entry-point/external/url.js +1 -0
  74. package/dist/es2019/entry-point/once.js +1 -0
  75. package/dist/es2019/entry-point/prevent-unhandled.js +1 -0
  76. package/dist/es2019/entry-point/reorder.js +1 -0
  77. package/dist/es2019/entry-point/text-selection/adapter.js +3 -0
  78. package/dist/es2019/ledger/dispatch-consumer-event.js +1 -1
  79. package/dist/es2019/ledger/lifecycle-manager.js +34 -63
  80. package/dist/es2019/make-adapter/make-adapter.js +3 -3
  81. package/dist/es2019/make-adapter/make-drop-target.js +28 -2
  82. package/dist/es2019/public-utils/custom-external-data-type-media-type-prefix.js +1 -0
  83. 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
  84. package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
  85. package/dist/es2019/public-utils/element/format-urls-for-external.js +33 -0
  86. package/dist/es2019/public-utils/external/file.js +17 -0
  87. package/dist/es2019/public-utils/external/html.js +11 -0
  88. package/dist/es2019/public-utils/external/some.js +23 -0
  89. package/dist/es2019/public-utils/external/text.js +13 -0
  90. package/dist/es2019/public-utils/external/url.js +26 -0
  91. package/dist/es2019/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +1 -1
  92. package/dist/es2019/util/android.js +7 -0
  93. package/dist/es2019/util/cache-first.js +25 -0
  94. package/dist/es2019/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +22 -55
  95. package/dist/es2019/util/changing-window/is-entering-window.js +61 -0
  96. package/dist/es2019/util/changing-window/is-leaving-window.js +59 -0
  97. package/dist/es2019/util/detect-broken-drag.js +48 -0
  98. package/dist/es2019/util/fix-post-drag-pointer-bug.js +11 -0
  99. package/dist/es2019/util/is-firefox.js +13 -0
  100. package/dist/es2019/util/is-safari.js +8 -8
  101. package/dist/es2019/util/media-types/html-media-type.js +6 -0
  102. package/dist/es2019/util/media-types/text-media-type.js +6 -0
  103. package/dist/es2019/util/media-types/url-media-type.js +6 -0
  104. package/dist/esm/adapter/element-adapter-native-data-key.js +6 -0
  105. package/dist/esm/adapter/element-adapter.js +121 -17
  106. package/dist/esm/adapter/external-adapter.js +241 -0
  107. package/dist/esm/adapter/text-selection-adapter.js +146 -0
  108. package/dist/esm/entry-point/cancel-unhandled.js +1 -0
  109. package/dist/esm/entry-point/combine.js +1 -0
  110. package/dist/esm/entry-point/element/adapter.js +3 -0
  111. package/dist/esm/entry-point/element/center-under-pointer.js +1 -0
  112. package/dist/esm/entry-point/element/disable-native-drag-preview.js +1 -0
  113. package/dist/esm/entry-point/element/format-urls-for-external.js +1 -0
  114. package/dist/esm/entry-point/element/pointer-outside-of-preview.js +1 -0
  115. package/dist/esm/entry-point/element/preserve-offset-on-source.js +1 -0
  116. package/dist/esm/entry-point/element/scroll-just-enough-into-view.js +1 -0
  117. package/dist/esm/entry-point/element/set-custom-native-drag-preview.js +1 -0
  118. package/dist/esm/entry-point/external/adapter.js +3 -0
  119. package/dist/esm/entry-point/external/file.js +1 -0
  120. package/dist/esm/entry-point/external/html.js +1 -0
  121. package/dist/esm/entry-point/external/some.js +1 -0
  122. package/dist/esm/entry-point/external/text.js +1 -0
  123. package/dist/esm/entry-point/external/url.js +1 -0
  124. package/dist/esm/entry-point/once.js +1 -0
  125. package/dist/esm/entry-point/prevent-unhandled.js +1 -0
  126. package/dist/esm/entry-point/reorder.js +1 -0
  127. package/dist/esm/entry-point/text-selection/adapter.js +3 -0
  128. package/dist/esm/ledger/dispatch-consumer-event.js +1 -1
  129. package/dist/esm/ledger/lifecycle-manager.js +41 -68
  130. package/dist/esm/make-adapter/make-adapter.js +2 -2
  131. package/dist/esm/make-adapter/make-drop-target.js +24 -2
  132. package/dist/esm/public-utils/custom-external-data-type-media-type-prefix.js +1 -0
  133. 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
  134. package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.js +2 -2
  135. package/dist/esm/public-utils/element/custom-native-drag-preview/types.js +1 -0
  136. package/dist/esm/public-utils/element/format-urls-for-external.js +33 -0
  137. package/dist/esm/public-utils/external/file.js +21 -0
  138. package/dist/esm/public-utils/external/html.js +9 -0
  139. package/dist/esm/public-utils/external/native-types.js +1 -0
  140. package/dist/esm/public-utils/external/some.js +28 -0
  141. package/dist/esm/public-utils/external/text.js +11 -0
  142. package/dist/esm/public-utils/external/url.js +26 -0
  143. package/dist/esm/{addon/cancel-unhandled.js → public-utils/prevent-unhandled.js} +1 -1
  144. package/dist/esm/util/android.js +7 -0
  145. package/dist/esm/util/cache-first.js +25 -0
  146. package/dist/esm/util/{entering-and-leaving-the-window.js → changing-window/count-events-for-safari.js} +22 -55
  147. package/dist/esm/util/changing-window/is-entering-window.js +58 -0
  148. package/dist/esm/util/changing-window/is-leaving-window.js +56 -0
  149. package/dist/esm/util/detect-broken-drag.js +47 -0
  150. package/dist/esm/util/fix-post-drag-pointer-bug.js +11 -0
  151. package/dist/esm/util/is-firefox.js +13 -0
  152. package/dist/esm/util/is-safari.js +8 -8
  153. package/dist/esm/util/media-types/html-media-type.js +6 -0
  154. package/dist/esm/util/media-types/text-media-type.js +6 -0
  155. package/dist/esm/util/media-types/url-media-type.js +6 -0
  156. package/dist/types/adapter/element-adapter-native-data-key.d.ts +6 -0
  157. package/dist/types/adapter/element-adapter.d.ts +25 -10
  158. package/dist/types/adapter/external-adapter.d.ts +40 -0
  159. package/dist/types/adapter/text-selection-adapter.d.ts +22 -0
  160. package/dist/types/entry-point/cancel-unhandled.d.ts +1 -0
  161. package/dist/types/entry-point/combine.d.ts +1 -0
  162. package/dist/types/entry-point/element/adapter.d.ts +3 -0
  163. package/dist/types/entry-point/element/center-under-pointer.d.ts +1 -0
  164. package/dist/types/entry-point/element/disable-native-drag-preview.d.ts +1 -0
  165. package/dist/types/entry-point/element/format-urls-for-external.d.ts +1 -0
  166. package/dist/types/entry-point/element/pointer-outside-of-preview.d.ts +1 -0
  167. package/dist/types/entry-point/element/preserve-offset-on-source.d.ts +1 -0
  168. package/dist/types/entry-point/element/scroll-just-enough-into-view.d.ts +1 -0
  169. package/dist/types/entry-point/element/set-custom-native-drag-preview.d.ts +1 -0
  170. package/dist/types/entry-point/external/adapter.d.ts +3 -0
  171. package/dist/types/entry-point/external/file.d.ts +1 -0
  172. package/dist/types/entry-point/external/html.d.ts +1 -0
  173. package/dist/types/entry-point/external/some.d.ts +1 -0
  174. package/dist/types/entry-point/external/text.d.ts +1 -0
  175. package/dist/types/entry-point/external/url.d.ts +1 -0
  176. package/dist/types/entry-point/once.d.ts +1 -0
  177. package/dist/types/entry-point/prevent-unhandled.d.ts +1 -0
  178. package/dist/types/entry-point/reorder.d.ts +1 -0
  179. package/dist/types/entry-point/text-selection/adapter.d.ts +3 -0
  180. package/dist/types/entry-point/types.d.ts +1 -1
  181. package/dist/types/internal-types.d.ts +84 -19
  182. package/dist/types/ledger/dispatch-consumer-event.d.ts +2 -2
  183. package/dist/types/ledger/lifecycle-manager.d.ts +3 -3
  184. package/dist/types/ledger/usage-ledger.d.ts +1 -1
  185. package/dist/types/make-adapter/make-adapter.d.ts +2 -2
  186. package/dist/types/make-adapter/make-drop-target.d.ts +1 -1
  187. package/dist/types/public-utils/custom-external-data-type-media-type-prefix.d.ts +1 -0
  188. 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
  189. package/dist/types/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.d.ts +1 -1
  190. package/dist/{types-ts4.5/util → types/public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +1 -1
  191. package/dist/types/{util → public-utils/element}/custom-native-drag-preview/types.d.ts +1 -1
  192. package/dist/types/public-utils/element/format-urls-for-external.d.ts +31 -0
  193. package/dist/types/public-utils/external/file.d.ts +4 -0
  194. package/dist/types/public-utils/external/html.d.ts +3 -0
  195. package/dist/types/public-utils/external/native-types.d.ts +12 -0
  196. package/dist/types/public-utils/external/some.d.ts +20 -0
  197. package/dist/types/public-utils/external/text.d.ts +3 -0
  198. package/dist/types/public-utils/external/url.d.ts +3 -0
  199. package/dist/{types-ts4.5/addon/cancel-unhandled.d.ts → types/public-utils/prevent-unhandled.d.ts} +1 -1
  200. package/dist/types/util/android.d.ts +2 -0
  201. package/dist/types/util/cache-first.d.ts +15 -0
  202. package/dist/types/util/changing-window/count-events-for-safari.d.ts +6 -0
  203. package/dist/types/util/{entering-and-leaving-the-window.d.ts → changing-window/is-entering-window.d.ts} +0 -3
  204. package/dist/types/util/changing-window/is-leaving-window.d.ts +3 -0
  205. package/dist/types/util/detect-broken-drag.d.ts +9 -0
  206. package/dist/types/util/is-firefox.d.ts +4 -0
  207. package/dist/types/util/is-safari.d.ts +1 -1
  208. package/dist/types/util/media-types/html-media-type.d.ts +1 -0
  209. package/dist/types/util/media-types/text-media-type.d.ts +1 -0
  210. package/dist/types/util/media-types/url-media-type.d.ts +1 -0
  211. package/dist/types-ts4.5/adapter/element-adapter-native-data-key.d.ts +6 -0
  212. package/dist/types-ts4.5/adapter/element-adapter.d.ts +25 -10
  213. package/dist/types-ts4.5/adapter/external-adapter.d.ts +40 -0
  214. package/dist/types-ts4.5/adapter/text-selection-adapter.d.ts +22 -0
  215. package/dist/types-ts4.5/entry-point/cancel-unhandled.d.ts +1 -0
  216. package/dist/types-ts4.5/entry-point/combine.d.ts +1 -0
  217. package/dist/types-ts4.5/entry-point/element/adapter.d.ts +3 -0
  218. package/dist/types-ts4.5/entry-point/element/center-under-pointer.d.ts +1 -0
  219. package/dist/types-ts4.5/entry-point/element/disable-native-drag-preview.d.ts +1 -0
  220. package/dist/types-ts4.5/entry-point/element/format-urls-for-external.d.ts +1 -0
  221. package/dist/types-ts4.5/entry-point/element/pointer-outside-of-preview.d.ts +1 -0
  222. package/dist/types-ts4.5/entry-point/element/preserve-offset-on-source.d.ts +1 -0
  223. package/dist/types-ts4.5/entry-point/element/scroll-just-enough-into-view.d.ts +1 -0
  224. package/dist/types-ts4.5/entry-point/element/set-custom-native-drag-preview.d.ts +1 -0
  225. package/dist/types-ts4.5/entry-point/external/adapter.d.ts +3 -0
  226. package/dist/types-ts4.5/entry-point/external/file.d.ts +1 -0
  227. package/dist/types-ts4.5/entry-point/external/html.d.ts +1 -0
  228. package/dist/types-ts4.5/entry-point/external/some.d.ts +1 -0
  229. package/dist/types-ts4.5/entry-point/external/text.d.ts +1 -0
  230. package/dist/types-ts4.5/entry-point/external/url.d.ts +1 -0
  231. package/dist/types-ts4.5/entry-point/once.d.ts +1 -0
  232. package/dist/types-ts4.5/entry-point/prevent-unhandled.d.ts +1 -0
  233. package/dist/types-ts4.5/entry-point/reorder.d.ts +1 -0
  234. package/dist/types-ts4.5/entry-point/text-selection/adapter.d.ts +3 -0
  235. package/dist/types-ts4.5/entry-point/types.d.ts +1 -1
  236. package/dist/types-ts4.5/internal-types.d.ts +84 -19
  237. package/dist/types-ts4.5/ledger/dispatch-consumer-event.d.ts +2 -2
  238. package/dist/types-ts4.5/ledger/lifecycle-manager.d.ts +3 -3
  239. package/dist/types-ts4.5/ledger/usage-ledger.d.ts +1 -1
  240. package/dist/types-ts4.5/make-adapter/make-adapter.d.ts +2 -2
  241. package/dist/types-ts4.5/make-adapter/make-drop-target.d.ts +1 -1
  242. package/dist/types-ts4.5/public-utils/custom-external-data-type-media-type-prefix.d.ts +1 -0
  243. 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
  244. package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.d.ts +1 -1
  245. package/dist/{types/util → types-ts4.5/public-utils/element}/custom-native-drag-preview/set-custom-native-drag-preview.d.ts +1 -1
  246. package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/types.d.ts +1 -1
  247. package/dist/types-ts4.5/public-utils/element/format-urls-for-external.d.ts +31 -0
  248. package/dist/types-ts4.5/public-utils/external/file.d.ts +4 -0
  249. package/dist/types-ts4.5/public-utils/external/html.d.ts +3 -0
  250. package/dist/types-ts4.5/public-utils/external/native-types.d.ts +12 -0
  251. package/dist/types-ts4.5/public-utils/external/some.d.ts +20 -0
  252. package/dist/types-ts4.5/public-utils/external/text.d.ts +3 -0
  253. package/dist/types-ts4.5/public-utils/external/url.d.ts +3 -0
  254. package/dist/{types/addon/cancel-unhandled.d.ts → types-ts4.5/public-utils/prevent-unhandled.d.ts} +1 -1
  255. package/dist/types-ts4.5/util/android.d.ts +2 -0
  256. package/dist/types-ts4.5/util/cache-first.d.ts +15 -0
  257. package/dist/types-ts4.5/util/changing-window/count-events-for-safari.d.ts +6 -0
  258. package/dist/types-ts4.5/util/{entering-and-leaving-the-window.d.ts → changing-window/is-entering-window.d.ts} +0 -3
  259. package/dist/types-ts4.5/util/changing-window/is-leaving-window.d.ts +3 -0
  260. package/dist/types-ts4.5/util/detect-broken-drag.d.ts +12 -0
  261. package/dist/types-ts4.5/util/is-firefox.d.ts +4 -0
  262. package/dist/types-ts4.5/util/is-safari.d.ts +1 -1
  263. package/dist/types-ts4.5/util/media-types/html-media-type.d.ts +1 -0
  264. package/dist/types-ts4.5/util/media-types/text-media-type.d.ts +1 -0
  265. package/dist/types-ts4.5/util/media-types/url-media-type.d.ts +1 -0
  266. package/element/adapter/package.json +15 -0
  267. package/element/center-under-pointer/package.json +15 -0
  268. package/element/disable-native-drag-preview/package.json +15 -0
  269. package/element/format-urls-for-external/package.json +15 -0
  270. package/element/pointer-outside-of-preview/package.json +15 -0
  271. package/element/preserve-offset-on-source/package.json +15 -0
  272. package/element/scroll-just-enough-into-view/package.json +15 -0
  273. package/element/set-custom-native-drag-preview/package.json +15 -0
  274. package/external/adapter/package.json +15 -0
  275. package/external/file/package.json +15 -0
  276. package/external/html/package.json +15 -0
  277. package/external/some/package.json +15 -0
  278. package/external/text/package.json +15 -0
  279. package/external/url/package.json +15 -0
  280. package/once/package.json +15 -0
  281. package/package.json +23 -17
  282. package/prevent-unhandled/package.json +15 -0
  283. package/reorder/package.json +15 -0
  284. package/text-selection/adapter/package.json +15 -0
  285. package/adapter/element/package.json +0 -15
  286. package/adapter/file/package.json +0 -15
  287. package/addon/cancel-unhandled/package.json +0 -15
  288. package/constellation/index/about.mdx +0 -394
  289. package/dist/cjs/adapter/file-adapter.js +0 -96
  290. package/dist/cjs/entry-point/adapter/file.js +0 -18
  291. package/dist/cjs/entry-point/addon/cancel-unhandled.js +0 -12
  292. package/dist/cjs/entry-point/experimental/cross-with-element-adapter.js +0 -30
  293. package/dist/cjs/entry-point/util/offset-from-pointer.js +0 -12
  294. package/dist/cjs/experimental/cross-window-element-adapter.js +0 -129
  295. package/dist/es2019/adapter/file-adapter.js +0 -90
  296. package/dist/es2019/entry-point/adapter/element.js +0 -1
  297. package/dist/es2019/entry-point/adapter/file.js +0 -1
  298. package/dist/es2019/entry-point/addon/cancel-unhandled.js +0 -1
  299. package/dist/es2019/entry-point/experimental/cross-with-element-adapter.js +0 -1
  300. package/dist/es2019/entry-point/util/center-under-pointer.js +0 -1
  301. package/dist/es2019/entry-point/util/combine.js +0 -1
  302. package/dist/es2019/entry-point/util/disable-native-drag-preview.js +0 -1
  303. package/dist/es2019/entry-point/util/offset-from-pointer.js +0 -1
  304. package/dist/es2019/entry-point/util/once.js +0 -1
  305. package/dist/es2019/entry-point/util/preserve-offset-on-source.js +0 -1
  306. package/dist/es2019/entry-point/util/reorder.js +0 -1
  307. package/dist/es2019/entry-point/util/scroll-just-enough-into-view.js +0 -1
  308. package/dist/es2019/entry-point/util/set-custom-native-drag-preview.js +0 -1
  309. package/dist/es2019/experimental/cross-window-element-adapter.js +0 -121
  310. package/dist/esm/adapter/file-adapter.js +0 -90
  311. package/dist/esm/entry-point/adapter/element.js +0 -1
  312. package/dist/esm/entry-point/adapter/file.js +0 -1
  313. package/dist/esm/entry-point/addon/cancel-unhandled.js +0 -1
  314. package/dist/esm/entry-point/experimental/cross-with-element-adapter.js +0 -1
  315. package/dist/esm/entry-point/util/center-under-pointer.js +0 -1
  316. package/dist/esm/entry-point/util/combine.js +0 -1
  317. package/dist/esm/entry-point/util/disable-native-drag-preview.js +0 -1
  318. package/dist/esm/entry-point/util/offset-from-pointer.js +0 -1
  319. package/dist/esm/entry-point/util/once.js +0 -1
  320. package/dist/esm/entry-point/util/preserve-offset-on-source.js +0 -1
  321. package/dist/esm/entry-point/util/reorder.js +0 -1
  322. package/dist/esm/entry-point/util/scroll-just-enough-into-view.js +0 -1
  323. package/dist/esm/entry-point/util/set-custom-native-drag-preview.js +0 -1
  324. package/dist/esm/experimental/cross-window-element-adapter.js +0 -120
  325. package/dist/types/adapter/file-adapter.d.ts +0 -18
  326. package/dist/types/entry-point/adapter/element.d.ts +0 -2
  327. package/dist/types/entry-point/adapter/file.d.ts +0 -2
  328. package/dist/types/entry-point/addon/cancel-unhandled.d.ts +0 -1
  329. package/dist/types/entry-point/experimental/cross-with-element-adapter.d.ts +0 -1
  330. package/dist/types/entry-point/util/center-under-pointer.d.ts +0 -1
  331. package/dist/types/entry-point/util/combine.d.ts +0 -1
  332. package/dist/types/entry-point/util/disable-native-drag-preview.d.ts +0 -1
  333. package/dist/types/entry-point/util/offset-from-pointer.d.ts +0 -1
  334. package/dist/types/entry-point/util/once.d.ts +0 -1
  335. package/dist/types/entry-point/util/preserve-offset-on-source.d.ts +0 -1
  336. package/dist/types/entry-point/util/reorder.d.ts +0 -1
  337. package/dist/types/entry-point/util/scroll-just-enough-into-view.d.ts +0 -1
  338. package/dist/types/entry-point/util/set-custom-native-drag-preview.d.ts +0 -1
  339. package/dist/types/experimental/cross-window-element-adapter.d.ts +0 -17
  340. package/dist/types-ts4.5/adapter/file-adapter.d.ts +0 -18
  341. package/dist/types-ts4.5/entry-point/adapter/element.d.ts +0 -2
  342. package/dist/types-ts4.5/entry-point/adapter/file.d.ts +0 -2
  343. package/dist/types-ts4.5/entry-point/addon/cancel-unhandled.d.ts +0 -1
  344. package/dist/types-ts4.5/entry-point/experimental/cross-with-element-adapter.d.ts +0 -1
  345. package/dist/types-ts4.5/entry-point/util/center-under-pointer.d.ts +0 -1
  346. package/dist/types-ts4.5/entry-point/util/combine.d.ts +0 -1
  347. package/dist/types-ts4.5/entry-point/util/disable-native-drag-preview.d.ts +0 -1
  348. package/dist/types-ts4.5/entry-point/util/offset-from-pointer.d.ts +0 -1
  349. package/dist/types-ts4.5/entry-point/util/once.d.ts +0 -1
  350. package/dist/types-ts4.5/entry-point/util/preserve-offset-on-source.d.ts +0 -1
  351. package/dist/types-ts4.5/entry-point/util/reorder.d.ts +0 -1
  352. package/dist/types-ts4.5/entry-point/util/scroll-just-enough-into-view.d.ts +0 -1
  353. package/dist/types-ts4.5/entry-point/util/set-custom-native-drag-preview.d.ts +0 -1
  354. package/dist/types-ts4.5/experimental/cross-window-element-adapter.d.ts +0 -17
  355. package/experimental/cross-window-element-adapter/package.json +0 -15
  356. package/util/center-under-pointer/package.json +0 -15
  357. package/util/combine/package.json +0 -15
  358. package/util/disable-native-drag-preview/package.json +0 -15
  359. package/util/offset-from-pointer/package.json +0 -15
  360. package/util/once/package.json +0 -15
  361. package/util/preserve-offset-on-source/package.json +0 -15
  362. package/util/reorder/package.json +0 -15
  363. package/util/scroll-just-enough-into-view/package.json +0 -15
  364. package/util/set-custom-native-drag-preview/package.json +0 -15
  365. /package/dist/cjs/entry-point/{adapter/element.js → element/adapter.js} +0 -0
  366. /package/dist/cjs/{util → public-utils}/combine.js +0 -0
  367. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  368. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  369. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
  370. /package/dist/cjs/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  371. /package/dist/cjs/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  372. /package/dist/cjs/{util → public-utils}/once.js +0 -0
  373. /package/dist/cjs/{util → public-utils}/reorder.js +0 -0
  374. /package/dist/es2019/{util → public-utils}/combine.js +0 -0
  375. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  376. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  377. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
  378. /package/dist/es2019/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  379. /package/dist/es2019/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  380. /package/dist/{esm/util/custom-native-drag-preview/types.js → es2019/public-utils/external/native-types.js} +0 -0
  381. /package/dist/es2019/{util → public-utils}/once.js +0 -0
  382. /package/dist/es2019/{util → public-utils}/reorder.js +0 -0
  383. /package/dist/esm/{util → public-utils}/combine.js +0 -0
  384. /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  385. /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  386. /package/dist/esm/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  387. /package/dist/esm/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  388. /package/dist/esm/{util → public-utils}/once.js +0 -0
  389. /package/dist/esm/{util → public-utils}/reorder.js +0 -0
  390. /package/dist/types/{util → public-utils}/combine.d.ts +0 -0
  391. /package/dist/types/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
  392. /package/dist/types/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
  393. /package/dist/types/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
  394. /package/dist/types/{util → public-utils}/once.d.ts +0 -0
  395. /package/dist/types/{util → public-utils}/reorder.d.ts +0 -0
  396. /package/dist/types-ts4.5/{util → public-utils}/combine.d.ts +0 -0
  397. /package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
  398. /package/dist/types-ts4.5/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
  399. /package/dist/types-ts4.5/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
  400. /package/dist/types-ts4.5/{util → public-utils}/once.d.ts +0 -0
  401. /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
+ }
@@ -1,3 +1,3 @@
1
1
  ---
2
- order: 3
2
+ order: 1
3
3
  ---
@@ -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 _combine = require("../util/combine");
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
- return (0, _bindEventListener.bind)(window, {
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$getInitialData, _entry$getInitialData2;
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
- // Must set any media type for iOS15 to work
76
- // Doing this will fail in firefox though, so we
77
- // wrap the operation in a try/catch
78
- try {
79
- var _event$dataTransfer;
80
- (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 || _event$dataTransfer.setData('application/vnd.pdnd', '');
81
- } catch (e) {}
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$getInitialData = (_entry$getInitialData2 = entry.getInitialData) === null || _entry$getInitialData2 === void 0 ? void 0 : _entry$getInitialData2.call(entry, feedback)) !== null && _entry$getInitialData !== void 0 ? _entry$getInitialData : {}
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 makeDragType = {
88
- key: 'element',
89
- startedFrom: 'internal',
90
- payload: payload
178
+ var dragType = {
179
+ type: 'element',
180
+ payload: payload,
181
+ startedFrom: 'internal'
91
182
  };
92
183
  api.start({
93
184
  event: event,
94
- dragInterface: makeDragType
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, "combine", {
9
9
  return _combine.combine;
10
10
  }
11
11
  });
12
- var _combine = require("../../util/combine");
12
+ var _combine = require("../public-utils/combine");
@@ -9,4 +9,4 @@ Object.defineProperty(exports, "centerUnderPointer", {
9
9
  return _centerUnderPointer.centerUnderPointer;
10
10
  }
11
11
  });
12
- var _centerUnderPointer = require("../../util/custom-native-drag-preview/center-under-pointer");
12
+ var _centerUnderPointer = require("../../public-utils/element/custom-native-drag-preview/center-under-pointer");