@atlaskit/pragmatic-drag-and-drop 0.24.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/CHANGELOG.md +18 -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 +115 -17
  6. package/dist/cjs/adapter/external-adapter.js +245 -0
  7. package/dist/cjs/adapter/text-selection-adapter.js +146 -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 +35 -1
  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} +25 -60
  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 +21 -0
  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 +112 -17
  56. package/dist/es2019/adapter/external-adapter.js +228 -0
  57. package/dist/es2019/adapter/text-selection-adapter.js +137 -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 +35 -1
  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} +23 -59
  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 +17 -0
  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 +114 -17
  106. package/dist/esm/adapter/external-adapter.js +234 -0
  107. package/dist/esm/adapter/text-selection-adapter.js +139 -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 +35 -1
  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} +23 -58
  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 +16 -0
  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 +5 -0
  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 +5 -0
  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/tmp/api-report-tmp.d.ts +0 -13
  357. package/util/center-under-pointer/package.json +0 -15
  358. package/util/combine/package.json +0 -15
  359. package/util/disable-native-drag-preview/package.json +0 -15
  360. package/util/offset-from-pointer/package.json +0 -15
  361. package/util/once/package.json +0 -15
  362. package/util/preserve-offset-on-source/package.json +0 -15
  363. package/util/reorder/package.json +0 -15
  364. package/util/scroll-just-enough-into-view/package.json +0 -15
  365. package/util/set-custom-native-drag-preview/package.json +0 -15
  366. /package/dist/cjs/entry-point/{adapter/element.js → element/adapter.js} +0 -0
  367. /package/dist/cjs/{util → public-utils}/combine.js +0 -0
  368. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  369. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  370. /package/dist/cjs/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
  371. /package/dist/cjs/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  372. /package/dist/cjs/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  373. /package/dist/cjs/{util → public-utils}/once.js +0 -0
  374. /package/dist/cjs/{util → public-utils}/reorder.js +0 -0
  375. /package/dist/es2019/{util → public-utils}/combine.js +0 -0
  376. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  377. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  378. /package/dist/es2019/{util → public-utils/element}/custom-native-drag-preview/types.js +0 -0
  379. /package/dist/es2019/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  380. /package/dist/es2019/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  381. /package/dist/{esm/util/custom-native-drag-preview/types.js → es2019/public-utils/external/native-types.js} +0 -0
  382. /package/dist/es2019/{util → public-utils}/once.js +0 -0
  383. /package/dist/es2019/{util → public-utils}/reorder.js +0 -0
  384. /package/dist/esm/{util → public-utils}/combine.js +0 -0
  385. /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.js +0 -0
  386. /package/dist/esm/{util → public-utils/element}/custom-native-drag-preview/preserve-offset-on-source.js +0 -0
  387. /package/dist/esm/{util → public-utils/element}/disable-native-drag-preview.js +0 -0
  388. /package/dist/esm/{util → public-utils/element}/scroll-just-enough-into-view.js +0 -0
  389. /package/dist/esm/{util → public-utils}/once.js +0 -0
  390. /package/dist/esm/{util → public-utils}/reorder.js +0 -0
  391. /package/dist/types/{util → public-utils}/combine.d.ts +0 -0
  392. /package/dist/types/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
  393. /package/dist/types/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
  394. /package/dist/types/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
  395. /package/dist/types/{util → public-utils}/once.d.ts +0 -0
  396. /package/dist/types/{util → public-utils}/reorder.d.ts +0 -0
  397. /package/dist/types-ts4.5/{util → public-utils}/combine.d.ts +0 -0
  398. /package/dist/types-ts4.5/{util → public-utils/element}/custom-native-drag-preview/center-under-pointer.d.ts +0 -0
  399. /package/dist/types-ts4.5/{util → public-utils/element}/disable-native-drag-preview.d.ts +0 -0
  400. /package/dist/types-ts4.5/{util → public-utils/element}/scroll-just-enough-into-view.d.ts +0 -0
  401. /package/dist/types-ts4.5/{util → public-utils}/once.d.ts +0 -0
  402. /package/dist/types-ts4.5/{util → public-utils}/reorder.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/pragmatic-drag-and-drop
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#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.
8
+
9
+ 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)
10
+
11
+ ## 0.25.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#59458](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/59458) [`7d6a69cfa61c`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7d6a69cfa61c) - Adding workaround for Safari bug.
16
+
17
+ In Safari (and iOS) if the element used for generating a native drag preview has opacity applied, then the native drag preview can include elements underneath the drag preview element.
18
+
19
+ Pragmatic drag and drop now includes a workaround for this Safari bug.
20
+
3
21
  ## 0.24.0
4
22
 
5
23
  ### 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,33 @@ 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
+ return;
55
+ }
56
+
31
57
  // the closest parent that is a draggable element will be marked as
32
58
  // the `event.target` for the event
33
59
  var target = event.target;
@@ -72,26 +98,84 @@ var adapter = (0, _makeAdapter.makeAdapter)({
72
98
  }
73
99
  }
74
100
 
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) {}
101
+ /**
102
+ * **Goal**
103
+ * Pass information to other applications
104
+ *
105
+ * **Approach**
106
+ * Put data into the native data store
107
+ *
108
+ * **What about the native adapter?**
109
+ * When the element adapter puts native data into the native data store
110
+ * the native adapter is not triggered in the current window,
111
+ * but a native adapter in an external window _can_ be triggered
112
+ *
113
+ * **Why bake this into core?**
114
+ * This functionality could be pulled out and exposed inside of
115
+ * `onGenerateDragPreview`. But decided to make it a part of the
116
+ * base API as it felt like a common enough use case and ended
117
+ * up being a similar amount of code to include this function as
118
+ * it was to expose the hook for it
119
+ */
120
+ 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;
121
+ if (nativeData) {
122
+ for (var _i = 0, _Object$entries = Object.entries(nativeData); _i < _Object$entries.length; _i++) {
123
+ var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
124
+ key = _Object$entries$_i[0],
125
+ data = _Object$entries$_i[1];
126
+ event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');
127
+ }
128
+ }
129
+
130
+ /**
131
+ * 📱 For Android devices, a drag operation will not start unless
132
+ * "text/plain" or "text/uri-list" data exists in the native data store
133
+ * https://twitter.com/alexandereardon/status/1732189803754713424
134
+ *
135
+ * Tested on:
136
+ * Device: Google Pixel 5
137
+ * Android version: 14 (November 5, 2023)
138
+ * Chrome version: 120.0
139
+ */
140
+ var types = event.dataTransfer.types;
141
+ if ((0, _android.isAndroid)() && !types.includes(_textMediaType.textMediaType) && !types.includes(_urlMediaType.urlMediaType)) {
142
+ event.dataTransfer.setData(_textMediaType.textMediaType, _android.androidFallbackText);
143
+ }
144
+
145
+ /**
146
+ * 1. Must set any media type for `iOS15` to work
147
+ * 2. We are also doing adding data so that the native adapter
148
+ * can know that the element adapter has handled this drag
149
+ *
150
+ * We used to wrap this `setData()` in a `try/catch` for Firefox,
151
+ * but it looks like that was not needed.
152
+ *
153
+ * Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f
154
+ *
155
+ * - ✅ Firefox@70.0 (Oct 2019) on macOS Sonoma
156
+ * - ✅ Firefox@70.0 (Oct 2019) on macOS Big Sur
157
+ * - ✅ Firefox@70.0 (Oct 2019) on Windows 10
158
+ *
159
+ * // just checking a few more combinations to be super safe
160
+ *
161
+ * - ✅ Chrome@78 (Oct 2019) on macOS Big Sur
162
+ * - ✅ Chrome@78 (Oct 2019) on Windows 10
163
+ * - ✅ Safari@14.1 on macOS Big Sur
164
+ */
165
+ event.dataTransfer.setData(_elementAdapterNativeDataKey.elementAdapterNativeDataKey, '');
82
166
  var payload = {
83
167
  element: entry.element,
84
168
  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 : {}
169
+ 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
170
  };
87
- var makeDragType = {
88
- key: 'element',
89
- startedFrom: 'internal',
90
- payload: payload
171
+ var dragType = {
172
+ type: 'element',
173
+ payload: payload,
174
+ startedFrom: 'internal'
91
175
  };
92
176
  api.start({
93
177
  event: event,
94
- dragInterface: makeDragType
178
+ dragType: dragType
95
179
  });
96
180
  }
97
181
  });
@@ -146,4 +230,18 @@ function draggable(args) {
146
230
  attribute: 'draggable',
147
231
  value: 'true'
148
232
  }));
149
- }
233
+ }
234
+
235
+ /** Common event payload for all events */
236
+
237
+ /** A map containing payloads for all events */
238
+
239
+ /** Common event payload for all drop target events */
240
+
241
+ /** A map containing payloads for all events on drop targets */
242
+
243
+ /** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */
244
+
245
+ /** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */
246
+
247
+ /** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */
@@ -0,0 +1,245 @@
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
+ return;
78
+ }
79
+ if (!api.canStart(event)) {
80
+ return;
81
+ }
82
+ if (!(0, _isEnteringWindow.isEnteringWindow)({
83
+ dragEnter: event
84
+ })) {
85
+ return;
86
+ }
87
+
88
+ // Note: not checking types for `elementAdapterNativeDataKey` as we expect to see that
89
+ // key when pdnd started the drag in another document
90
+ var types = getAvailableTypes(event.dataTransfer);
91
+ if (!types.length) {
92
+ return;
93
+ }
94
+ var locked = {
95
+ types: types,
96
+ items: [],
97
+ getStringData: function getStringData() {
98
+ return null;
99
+ }
100
+ };
101
+ api.start({
102
+ event: event,
103
+ dragType: {
104
+ type: 'external',
105
+ startedFrom: 'external',
106
+ payload: locked,
107
+ getDropPayload: function getDropPayload(event) {
108
+ // this would be a platform error
109
+ // trying to handle it gracefully rather than throwing (for now)
110
+ if (!event.dataTransfer) {
111
+ return locked;
112
+ }
113
+ var items = getAvailableItems(event.dataTransfer);
114
+ // need to use `.bind` as `getData` is required
115
+ // to be run with `event.dataTransfer` as the "this" context
116
+ var nativeGetData = event.dataTransfer.getData.bind(event.dataTransfer);
117
+ return {
118
+ types: types,
119
+ items: items,
120
+ // return `null` if there is no result, otherwise string
121
+ getStringData: function getStringData(mediaType) {
122
+ // not dragging the requested type
123
+ // return `null` (no result)
124
+ if (!types.includes(mediaType)) {
125
+ return null;
126
+ }
127
+
128
+ // nativeGetData will return `""` when there is no value,
129
+ // but at this point we know we will only get explicitly set
130
+ // values back as we have checked the `types`.
131
+ // `""` can be an explicitly set value.
132
+ var value = nativeGetData(mediaType);
133
+
134
+ // not exposing data for unavailable types
135
+ if (!isAnAvailableType({
136
+ type: mediaType,
137
+ value: value
138
+ })) {
139
+ return null;
140
+ }
141
+ return value;
142
+ }
143
+ };
144
+ }
145
+ }
146
+ });
147
+ }
148
+ });
149
+ }
150
+ });
151
+
152
+ /**
153
+ * Some events don't make sense for the external adapter
154
+ *
155
+ * `onGenerateDragPreview`
156
+ * The browser creates the drag preview for external drags, so we don't
157
+ * need an event to generate the preview for _monitors_ or the _dropTarget_
158
+ *
159
+ * `onDragStart`
160
+ * An external drag can never start from in the `window`, so _dropTarget_'s
161
+ * don't need `onDragStart`
162
+ */
163
+
164
+ function dropTargetForExternal(args) {
165
+ // not removing unused events, just leaning on the type system
166
+ return adapter.dropTarget(args);
167
+ }
168
+ function monitorForExternal(args) {
169
+ // not removing unused events, just leaning on the type system
170
+ return adapter.monitor(args);
171
+ }
172
+ (function startup() {
173
+ // server side rendering check
174
+ if (typeof window === 'undefined') {
175
+ return;
176
+ }
177
+
178
+ // A shared single usage registration as we want to capture
179
+ // all external drag operations, even if there are no drop targets
180
+ // on the page yet
181
+ adapter.registerUsage();
182
+ // independent of pdnd, we need to keep track of
183
+ // all drag operations so that we can know if a drag operation
184
+ // has started locally
185
+ var idle = {
186
+ type: 'idle'
187
+ };
188
+ var state = idle;
189
+ function clear() {
190
+ if (state.type !== 'dragging') {
191
+ return;
192
+ }
193
+ didDragStartLocally = false;
194
+ state.cleanup();
195
+ state = idle;
196
+ }
197
+ function bindEndEvents() {
198
+ return (0, _bindEventListener.bindAll)(window, [{
199
+ type: 'dragend',
200
+ listener: clear
201
+ }].concat((0, _toConsumableArray2.default)((0, _detectBrokenDrag.getBindingsForBrokenDrags)({
202
+ onDragEnd: clear
203
+ }))),
204
+ // we want to make sure we get all the events,
205
+ // and this helps avoid not seeing events when folks stop
206
+ // them later on the event path
207
+ {
208
+ capture: true
209
+ });
210
+ }
211
+
212
+ // we always keep this event listener active
213
+ (0, _bindEventListener.bind)(window, {
214
+ type: 'dragstart',
215
+ listener: function listener() {
216
+ // something bad has happened if this is true!
217
+ if (state.type !== 'idle') {
218
+ return;
219
+ }
220
+ // set our global flag
221
+ didDragStartLocally = true;
222
+ state = {
223
+ type: 'dragging',
224
+ cleanup: bindEndEvents()
225
+ };
226
+ },
227
+ // binding in the capture phase so these listeners are called
228
+ // before our listeners in the adapters `mount` function
229
+ options: {
230
+ capture: true
231
+ }
232
+ });
233
+ })();
234
+
235
+ /** Common event payload for all events */
236
+
237
+ /** A map containing payloads for all events */
238
+
239
+ /** Common event payload for all drop target events */
240
+
241
+ /** A map containing payloads for all events on drop targets */
242
+
243
+ /** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */
244
+
245
+ /** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForExternal` */
@@ -0,0 +1,146 @@
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 == null) {
78
+ return;
79
+ }
80
+
81
+ // Drag is being handled by the element adapter
82
+ if (event.dataTransfer.types.includes(_elementAdapterNativeDataKey.elementAdapterNativeDataKey)) {
83
+ return;
84
+ }
85
+
86
+ // Something else is handling this drag
87
+ if (!api.canStart(event)) {
88
+ return;
89
+ }
90
+ var target = findTextNode(event);
91
+ if (!target) {
92
+ return;
93
+ }
94
+ var payload = {
95
+ // The `Text` node that is the `target` is the `Text` node
96
+ // that the user started the drag from.
97
+ // The full text being dragged can be looked up from the `dataTransfer`.
98
+ target: target,
99
+ // This is safe to do in "dragstart" as the `dataTransfer` is in read/write mode.
100
+ plain: event.dataTransfer.getData(_textMediaType.textMediaType),
101
+ HTML: event.dataTransfer.getData(_htmlMediaType.HTMLMediaType)
102
+ };
103
+ api.start({
104
+ event: event,
105
+ dragType: {
106
+ type: 'text-selection',
107
+ startedFrom: 'internal',
108
+ payload: payload
109
+ }
110
+ });
111
+ }
112
+ }]);
113
+ }
114
+ });
115
+
116
+ // The `onGenerateDragPreview` does not make sense to publish for text selection
117
+ // as the browser is completely in control of the drag preview
118
+ function dropTargetForTextSelection(args) {
119
+ // note: not removing `onGenerateDragPreview`; just leaning on the type system
120
+ return adapter.dropTarget(args);
121
+ }
122
+
123
+ // A shared single usage registration as any text can be dragged at any time
124
+ (function register() {
125
+ // server side rendering check
126
+ if (typeof window === 'undefined') {
127
+ return;
128
+ }
129
+ adapter.registerUsage();
130
+ })();
131
+ function monitorForTextSelection(args) {
132
+ // note: not removing `onGenerateDragPreview`; just leaning on the type system
133
+ return adapter.monitor(args);
134
+ }
135
+
136
+ /** Common event payload for all events */
137
+
138
+ /** A map containing payloads for all events */
139
+
140
+ /** Common event payload for all drop target events */
141
+
142
+ /** A map containing payloads for all events on drop targets */
143
+
144
+ /** Argument given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */
145
+
146
+ /** 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");
@@ -9,4 +9,4 @@ Object.defineProperty(exports, "disableNativeDragPreview", {
9
9
  return _disableNativeDragPreview.disableNativeDragPreview;
10
10
  }
11
11
  });
12
- var _disableNativeDragPreview = require("../../util/disable-native-drag-preview");
12
+ var _disableNativeDragPreview = require("../../public-utils/element/disable-native-drag-preview");
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "formatURLsForExternal", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _formatUrlsForExternal.formatURLsForExternal;
10
+ }
11
+ });
12
+ var _formatUrlsForExternal = require("../../public-utils/element/format-urls-for-external");