@helpdice/draggable 0.0.0-stage → 0.0.2

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 (472) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +164 -2
  3. package/dist/draggable.cjs.js +9925 -0
  4. package/dist/draggable.cjs.js.map +1 -0
  5. package/dist/draggable.esm.js +9899 -0
  6. package/dist/draggable.esm.js.map +1 -0
  7. package/dist/types/animation.d.ts +31 -0
  8. package/dist/types/debug/middleware/action-timing-average.d.ts +3 -0
  9. package/dist/types/debug/middleware/action-timing.d.ts +3 -0
  10. package/dist/types/debug/middleware/log.d.ts +4 -0
  11. package/dist/types/debug/middleware/user-timing.d.ts +3 -0
  12. package/dist/types/debug/timings.d.ts +3 -0
  13. package/dist/types/dev-warning.d.ts +4 -0
  14. package/dist/types/empty.d.ts +2 -0
  15. package/dist/types/index.d.ts +8 -0
  16. package/dist/types/invariant.d.ts +4 -0
  17. package/dist/types/native-with-fallback.d.ts +10 -0
  18. package/dist/types/screen-reader-message-preset.d.ts +9 -0
  19. package/dist/types/state/action-creators.d.ts +158 -0
  20. package/dist/types/state/auto-scroller/auto-scroller-types.d.ts +6 -0
  21. package/dist/types/state/auto-scroller/can-scroll.d.ts +19 -0
  22. package/dist/types/state/auto-scroller/fluid-scroller/config.d.ts +11 -0
  23. package/dist/types/state/auto-scroller/fluid-scroller/did-start-in-scrollable-area.d.ts +0 -0
  24. package/dist/types/state/auto-scroller/fluid-scroller/get-best-scrollable-droppable.d.ts +9 -0
  25. package/dist/types/state/auto-scroller/fluid-scroller/get-droppable-scroll-change.d.ts +11 -0
  26. package/dist/types/state/auto-scroller/fluid-scroller/get-percentage.d.ts +7 -0
  27. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/adjust-for-size-limits.d.ts +8 -0
  28. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/dampen-value-by-time.d.ts +2 -0
  29. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-distance-thresholds.d.ts +8 -0
  30. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-value-from-distance.d.ts +3 -0
  31. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-value.d.ts +9 -0
  32. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/index.d.ts +11 -0
  33. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/min-scroll.d.ts +2 -0
  34. package/dist/types/state/auto-scroller/fluid-scroller/get-scroll/index.d.ts +10 -0
  35. package/dist/types/state/auto-scroller/fluid-scroller/get-window-scroll-change.d.ts +11 -0
  36. package/dist/types/state/auto-scroller/fluid-scroller/index.d.ts +13 -0
  37. package/dist/types/state/auto-scroller/fluid-scroller/scroll.d.ts +11 -0
  38. package/dist/types/state/auto-scroller/index.d.ts +11 -0
  39. package/dist/types/state/auto-scroller/jump-scroller.d.ts +11 -0
  40. package/dist/types/state/axis.d.ts +3 -0
  41. package/dist/types/state/calculate-drag-impact/calculate-reorder-impact.d.ts +13 -0
  42. package/dist/types/state/can-start-drag.d.ts +3 -0
  43. package/dist/types/state/create-store.d.ts +16 -0
  44. package/dist/types/state/did-start-after-critical.d.ts +2 -0
  45. package/dist/types/state/dimension-marshal/dimension-marshal-types.d.ts +23 -0
  46. package/dist/types/state/dimension-marshal/dimension-marshal.d.ts +4 -0
  47. package/dist/types/state/dimension-marshal/get-initial-publish.d.ts +10 -0
  48. package/dist/types/state/dimension-marshal/while-dragging-publisher.d.ts +17 -0
  49. package/dist/types/state/dimension-structures.d.ts +5 -0
  50. package/dist/types/state/droppable/get-droppable.d.ts +21 -0
  51. package/dist/types/state/droppable/is-home-of.d.ts +3 -0
  52. package/dist/types/state/droppable/scroll-droppable.d.ts +4 -0
  53. package/dist/types/state/droppable/should-use-placeholder.d.ts +3 -0
  54. package/dist/types/state/droppable/util/clip.d.ts +3 -0
  55. package/dist/types/state/droppable/util/get-subject.d.ts +10 -0
  56. package/dist/types/state/droppable/what-is-dragged-over-from-result.d.ts +3 -0
  57. package/dist/types/state/droppable/what-is-dragged-over.d.ts +3 -0
  58. package/dist/types/state/droppable/with-placeholder.d.ts +3 -0
  59. package/dist/types/state/get-center-from-impact/get-client-border-box-center/get-client-from-page-border-box-center.d.ts +9 -0
  60. package/dist/types/state/get-center-from-impact/get-client-border-box-center/index.d.ts +12 -0
  61. package/dist/types/state/get-center-from-impact/get-page-border-box-center/index.d.ts +11 -0
  62. package/dist/types/state/get-center-from-impact/get-page-border-box-center/when-combining.d.ts +9 -0
  63. package/dist/types/state/get-center-from-impact/get-page-border-box-center/when-reordering.d.ts +11 -0
  64. package/dist/types/state/get-center-from-impact/move-relative-to.d.ts +16 -0
  65. package/dist/types/state/get-combined-item-displacement.d.ts +10 -0
  66. package/dist/types/state/get-displaced-by.d.ts +4 -0
  67. package/dist/types/state/get-displacement-groups.d.ts +12 -0
  68. package/dist/types/state/get-drag-impact/get-combine-impact.d.ts +13 -0
  69. package/dist/types/state/get-drag-impact/get-reorder-impact.d.ts +13 -0
  70. package/dist/types/state/get-drag-impact/index.d.ts +13 -0
  71. package/dist/types/state/get-draggables-inside-droppable.d.ts +3 -0
  72. package/dist/types/state/get-droppable-over.d.ts +9 -0
  73. package/dist/types/state/get-frame.d.ts +3 -0
  74. package/dist/types/state/get-home-location.d.ts +3 -0
  75. package/dist/types/state/get-impact-location.d.ts +3 -0
  76. package/dist/types/state/get-is-displaced.d.ts +7 -0
  77. package/dist/types/state/get-lift-effect.d.ts +13 -0
  78. package/dist/types/state/get-max-scroll.d.ts +9 -0
  79. package/dist/types/state/is-movement-allowed.d.ts +2 -0
  80. package/dist/types/state/is-within.d.ts +2 -0
  81. package/dist/types/state/middleware/auto-scroll.d.ts +4 -0
  82. package/dist/types/state/middleware/dimension-marshal-stopper.d.ts +4 -0
  83. package/dist/types/state/middleware/drop/drop-animation-finish-middleware.d.ts +3 -0
  84. package/dist/types/state/middleware/drop/drop-animation-flush-on-scroll-middleware.d.ts +3 -0
  85. package/dist/types/state/middleware/drop/drop-middleware.d.ts +3 -0
  86. package/dist/types/state/middleware/drop/get-drop-duration.d.ts +9 -0
  87. package/dist/types/state/middleware/drop/get-drop-impact.d.ts +16 -0
  88. package/dist/types/state/middleware/drop/get-new-home-client-offset.d.ts +11 -0
  89. package/dist/types/state/middleware/drop/index.d.ts +1 -0
  90. package/dist/types/state/middleware/focus.d.ts +4 -0
  91. package/dist/types/state/middleware/lift.d.ts +4 -0
  92. package/dist/types/state/middleware/pending-drop.d.ts +3 -0
  93. package/dist/types/state/middleware/responders/async-marshal.d.ts +9 -0
  94. package/dist/types/state/middleware/responders/expiring-announce.d.ts +6 -0
  95. package/dist/types/state/middleware/responders/index.d.ts +1 -0
  96. package/dist/types/state/middleware/responders/is-equal.d.ts +4 -0
  97. package/dist/types/state/middleware/responders/publisher.d.ts +17 -0
  98. package/dist/types/state/middleware/responders/responders-middleware.d.ts +4 -0
  99. package/dist/types/state/middleware/scroll-listener.d.ts +3 -0
  100. package/dist/types/state/middleware/style.d.ts +4 -0
  101. package/dist/types/state/middleware/util/validate-dimensions.d.ts +2 -0
  102. package/dist/types/state/move-in-direction/index.d.ts +8 -0
  103. package/dist/types/state/move-in-direction/move-cross-axis/get-best-cross-axis-droppable.d.ts +11 -0
  104. package/dist/types/state/move-in-direction/move-cross-axis/get-closest-draggable.d.ts +11 -0
  105. package/dist/types/state/move-in-direction/move-cross-axis/index.d.ts +15 -0
  106. package/dist/types/state/move-in-direction/move-cross-axis/move-to-new-droppable.d.ts +14 -0
  107. package/dist/types/state/move-in-direction/move-cross-axis/without-starting-displacement.d.ts +4 -0
  108. package/dist/types/state/move-in-direction/move-in-direction-types.d.ts +7 -0
  109. package/dist/types/state/move-in-direction/move-to-next-place/index.d.ts +16 -0
  110. package/dist/types/state/move-in-direction/move-to-next-place/is-totally-visible-in-new-location.d.ts +12 -0
  111. package/dist/types/state/move-in-direction/move-to-next-place/move-to-next-combine/index.d.ts +10 -0
  112. package/dist/types/state/move-in-direction/move-to-next-place/move-to-next-index/from-combine.d.ts +11 -0
  113. package/dist/types/state/move-in-direction/move-to-next-place/move-to-next-index/from-reorder.d.ts +9 -0
  114. package/dist/types/state/move-in-direction/move-to-next-place/move-to-next-index/index.d.ts +14 -0
  115. package/dist/types/state/no-impact.d.ts +6 -0
  116. package/dist/types/state/patch-dimension-map.d.ts +3 -0
  117. package/dist/types/state/patch-droppable-map.d.ts +3 -0
  118. package/dist/types/state/position.d.ts +10 -0
  119. package/dist/types/state/post-reducer/when-moving/refresh-snap.d.ts +8 -0
  120. package/dist/types/state/post-reducer/when-moving/update.d.ts +12 -0
  121. package/dist/types/state/publish-while-dragging-in-virtual/adjust-additions-for-scroll-changes.d.ts +8 -0
  122. package/dist/types/state/publish-while-dragging-in-virtual/index.d.ts +7 -0
  123. package/dist/types/state/publish-while-dragging-in-virtual/offset-draggable.d.ts +9 -0
  124. package/dist/types/state/recompute-placeholders.d.ts +10 -0
  125. package/dist/types/state/rect.d.ts +2 -0
  126. package/dist/types/state/reducer.d.ts +5 -0
  127. package/dist/types/state/registry/create-registry.d.ts +2 -0
  128. package/dist/types/state/registry/registry-types.d.ts +62 -0
  129. package/dist/types/state/registry/use-registry.d.ts +2 -0
  130. package/dist/types/state/remove-draggable-from-list.d.ts +3 -0
  131. package/dist/types/state/scroll-viewport.d.ts +4 -0
  132. package/dist/types/state/spacing.d.ts +6 -0
  133. package/dist/types/state/store-types.d.ts +10 -0
  134. package/dist/types/state/update-displacement-visibility/recompute.d.ts +10 -0
  135. package/dist/types/state/update-displacement-visibility/speculatively-increase.d.ts +11 -0
  136. package/dist/types/state/visibility/is-partially-visible-through-frame.d.ts +3 -0
  137. package/dist/types/state/visibility/is-position-in-frame.d.ts +2 -0
  138. package/dist/types/state/visibility/is-totally-visible-through-frame-on-axis.d.ts +4 -0
  139. package/dist/types/state/visibility/is-totally-visible-through-frame.d.ts +3 -0
  140. package/dist/types/state/visibility/is-visible.d.ts +13 -0
  141. package/dist/types/state/with-scroll-change/with-all-displacement.d.ts +4 -0
  142. package/dist/types/state/with-scroll-change/with-droppable-displacement.d.ts +4 -0
  143. package/dist/types/state/with-scroll-change/with-droppable-scroll.d.ts +4 -0
  144. package/dist/types/state/with-scroll-change/with-viewport-displacement.d.ts +4 -0
  145. package/dist/types/types.d.ts +323 -0
  146. package/dist/types/view/animate-in-out/animate-in-out.d.ts +24 -0
  147. package/dist/types/view/animate-in-out/index.d.ts +1 -0
  148. package/dist/types/view/check-is-valid-inner-ref.d.ts +1 -0
  149. package/dist/types/view/context/app-context.d.ts +16 -0
  150. package/dist/types/view/context/droppable-context.d.ts +9 -0
  151. package/dist/types/view/context/hooks.d.ts +3 -0
  152. package/dist/types/view/context/store-context.d.ts +4 -0
  153. package/dist/types/view/data-attributes.d.ts +22 -0
  154. package/dist/types/view/drag-drop-context/app.d.ts +13 -0
  155. package/dist/types/view/drag-drop-context/check-doctype.d.ts +2 -0
  156. package/dist/types/view/drag-drop-context/check-react-version.d.ts +2 -0
  157. package/dist/types/view/drag-drop-context/drag-drop-context-types.d.ts +5 -0
  158. package/dist/types/view/drag-drop-context/drag-drop-context.d.ts +12 -0
  159. package/dist/types/view/drag-drop-context/error-boundary.d.ts +20 -0
  160. package/dist/types/view/drag-drop-context/index.d.ts +1 -0
  161. package/dist/types/view/drag-drop-context/use-startup-validation.d.ts +1 -0
  162. package/dist/types/view/drag-drop-context/use-unique-context-id.d.ts +3 -0
  163. package/dist/types/view/draggable/connected-draggable.d.ts +5 -0
  164. package/dist/types/view/draggable/draggable-api.d.ts +3 -0
  165. package/dist/types/view/draggable/draggable-types.d.ts +106 -0
  166. package/dist/types/view/draggable/draggable.d.ts +2 -0
  167. package/dist/types/view/draggable/get-style.d.ts +3 -0
  168. package/dist/types/view/draggable/index.d.ts +1 -0
  169. package/dist/types/view/draggable/use-validation.d.ts +4 -0
  170. package/dist/types/view/droppable/connected-droppable.d.ts +7 -0
  171. package/dist/types/view/droppable/droppable-types.d.ts +50 -0
  172. package/dist/types/view/droppable/droppable.d.ts +2 -0
  173. package/dist/types/view/droppable/index.d.ts +1 -0
  174. package/dist/types/view/droppable/use-validation.d.ts +8 -0
  175. package/dist/types/view/event-bindings/bind-events.d.ts +2 -0
  176. package/dist/types/view/event-bindings/event-types.d.ts +10 -0
  177. package/dist/types/view/get-body-element.d.ts +2 -0
  178. package/dist/types/view/get-border-box-center-position.d.ts +3 -0
  179. package/dist/types/view/get-document-element.d.ts +2 -0
  180. package/dist/types/view/get-elements/find-drag-handle.d.ts +2 -0
  181. package/dist/types/view/get-elements/find-draggable.d.ts +2 -0
  182. package/dist/types/view/is-strict-equal.d.ts +2 -0
  183. package/dist/types/view/is-type-of-element/is-element.d.ts +1 -0
  184. package/dist/types/view/is-type-of-element/is-html-element.d.ts +1 -0
  185. package/dist/types/view/is-type-of-element/is-svg-element.d.ts +1 -0
  186. package/dist/types/view/key-codes.d.ts +12 -0
  187. package/dist/types/view/placeholder/index.d.ts +1 -0
  188. package/dist/types/view/placeholder/placeholder-types.d.ts +14 -0
  189. package/dist/types/view/placeholder/placeholder.d.ts +28 -0
  190. package/dist/types/view/scroll-listener.d.ts +12 -0
  191. package/dist/types/view/throw-if-invalid-inner-ref.d.ts +2 -0
  192. package/dist/types/view/use-announcer/index.d.ts +1 -0
  193. package/dist/types/view/use-announcer/use-announcer.d.ts +3 -0
  194. package/dist/types/view/use-dev-setup-warning.d.ts +1 -0
  195. package/dist/types/view/use-dev.d.ts +1 -0
  196. package/dist/types/view/use-draggable-publisher/get-dimension.d.ts +3 -0
  197. package/dist/types/view/use-draggable-publisher/index.d.ts +1 -0
  198. package/dist/types/view/use-draggable-publisher/use-draggable-publisher.d.ts +8 -0
  199. package/dist/types/view/use-droppable-publisher/check-for-nested-scroll-container.d.ts +2 -0
  200. package/dist/types/view/use-droppable-publisher/get-closest-scrollable.d.ts +2 -0
  201. package/dist/types/view/use-droppable-publisher/get-dimension.d.ts +15 -0
  202. package/dist/types/view/use-droppable-publisher/get-env.d.ts +6 -0
  203. package/dist/types/view/use-droppable-publisher/get-listener-options.d.ts +5 -0
  204. package/dist/types/view/use-droppable-publisher/get-scroll.d.ts +3 -0
  205. package/dist/types/view/use-droppable-publisher/index.d.ts +1 -0
  206. package/dist/types/view/use-droppable-publisher/is-in-fixed-container.d.ts +2 -0
  207. package/dist/types/view/use-droppable-publisher/use-droppable-publisher.d.ts +13 -0
  208. package/dist/types/view/use-focus-marshal/focus-marshal-types.d.ts +9 -0
  209. package/dist/types/view/use-focus-marshal/index.d.ts +1 -0
  210. package/dist/types/view/use-focus-marshal/use-focus-marshal.d.ts +3 -0
  211. package/dist/types/view/use-hidden-text-element/index.d.ts +1 -0
  212. package/dist/types/view/use-hidden-text-element/use-hidden-text-element.d.ts +12 -0
  213. package/dist/types/view/use-isomorphic-layout-effect.d.ts +3 -0
  214. package/dist/types/view/use-previous-ref.d.ts +1 -0
  215. package/dist/types/view/use-required-context.d.ts +2 -0
  216. package/dist/types/view/use-sensor-marshal/closest.d.ts +1 -0
  217. package/dist/types/view/use-sensor-marshal/find-closest-draggable-id-from-event.d.ts +2 -0
  218. package/dist/types/view/use-sensor-marshal/index.d.ts +4 -0
  219. package/dist/types/view/use-sensor-marshal/is-event-in-interactive-element.d.ts +5 -0
  220. package/dist/types/view/use-sensor-marshal/lock.d.ts +11 -0
  221. package/dist/types/view/use-sensor-marshal/sensors/use-keyboard-sensor.d.ts +2 -0
  222. package/dist/types/view/use-sensor-marshal/sensors/use-mouse-sensor.d.ts +4 -0
  223. package/dist/types/view/use-sensor-marshal/sensors/use-touch-sensor.d.ts +4 -0
  224. package/dist/types/view/use-sensor-marshal/sensors/util/prevent-standard-key-events.d.ts +2 -0
  225. package/dist/types/view/use-sensor-marshal/sensors/util/supported-page-visibility-event-name.d.ts +2 -0
  226. package/dist/types/view/use-sensor-marshal/use-sensor-marshal.d.ts +12 -0
  227. package/dist/types/view/use-sensor-marshal/use-validate-sensor-hooks.d.ts +2 -0
  228. package/dist/types/view/use-style-marshal/get-styles.d.ts +10 -0
  229. package/dist/types/view/use-style-marshal/index.d.ts +1 -0
  230. package/dist/types/view/use-style-marshal/style-marshal-types.d.ts +6 -0
  231. package/dist/types/view/use-style-marshal/use-style-marshal.d.ts +3 -0
  232. package/dist/types/view/use-unique-id.d.ts +7 -0
  233. package/dist/types/view/visually-hidden-style.d.ts +2 -0
  234. package/dist/types/view/window/get-max-window-scroll.d.ts +3 -0
  235. package/dist/types/view/window/get-viewport.d.ts +3 -0
  236. package/dist/types/view/window/get-window-from-el.d.ts +2 -0
  237. package/dist/types/view/window/get-window-scroll.d.ts +3 -0
  238. package/dist/types/view/window/scroll-window.d.ts +3 -0
  239. package/package.json +157 -4
  240. package/src/animation.ts +75 -0
  241. package/src/debug/middleware/action-timing-average.ts +52 -0
  242. package/src/debug/middleware/action-timing.ts +16 -0
  243. package/src/debug/middleware/log.ts +26 -0
  244. package/src/debug/middleware/user-timing.ts +16 -0
  245. package/src/debug/timings.ts +87 -0
  246. package/src/dev-warning.ts +50 -0
  247. package/src/empty.ts +6 -0
  248. package/src/index.ts +67 -0
  249. package/src/invariant.ts +64 -0
  250. package/src/native-with-fallback.ts +69 -0
  251. package/src/screen-reader-message-preset.ts +135 -0
  252. package/src/state/action-creators.ts +358 -0
  253. package/src/state/auto-scroller/auto-scroller-types.ts +8 -0
  254. package/src/state/auto-scroller/can-scroll.ts +320 -0
  255. package/src/state/auto-scroller/fluid-scroller/config.ts +25 -0
  256. package/src/state/auto-scroller/fluid-scroller/did-start-in-scrollable-area.ts +1 -0
  257. package/src/state/auto-scroller/fluid-scroller/get-best-scrollable-droppable.ts +77 -0
  258. package/src/state/auto-scroller/fluid-scroller/get-droppable-scroll-change.ts +39 -0
  259. package/src/state/auto-scroller/fluid-scroller/get-percentage.ts +25 -0
  260. package/src/state/auto-scroller/fluid-scroller/get-scroll/adjust-for-size-limits.ts +30 -0
  261. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/dampen-value-by-time.ts +37 -0
  262. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-distance-thresholds.ts +25 -0
  263. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-value-from-distance.ts +61 -0
  264. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/get-value.ts +39 -0
  265. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/index.ts +46 -0
  266. package/src/state/auto-scroller/fluid-scroller/get-scroll/get-scroll-on-axis/min-scroll.ts +4 -0
  267. package/src/state/auto-scroller/fluid-scroller/get-scroll/index.ts +76 -0
  268. package/src/state/auto-scroller/fluid-scroller/get-window-scroll-change.ts +31 -0
  269. package/src/state/auto-scroller/fluid-scroller/index.ts +91 -0
  270. package/src/state/auto-scroller/fluid-scroller/scroll.ts +72 -0
  271. package/src/state/auto-scroller/index.ts +56 -0
  272. package/src/state/auto-scroller/jump-scroller.ts +140 -0
  273. package/src/state/axis.ts +26 -0
  274. package/src/state/calculate-drag-impact/calculate-reorder-impact.ts +138 -0
  275. package/src/state/can-start-drag.ts +29 -0
  276. package/src/state/create-store.ts +98 -0
  277. package/src/state/did-start-after-critical.ts +9 -0
  278. package/src/state/dimension-marshal/dimension-marshal-types.ts +49 -0
  279. package/src/state/dimension-marshal/dimension-marshal.ts +219 -0
  280. package/src/state/dimension-marshal/get-initial-publish.ts +66 -0
  281. package/src/state/dimension-marshal/while-dragging-publisher.ts +146 -0
  282. package/src/state/dimension-structures.ts +35 -0
  283. package/src/state/droppable/get-droppable.ts +103 -0
  284. package/src/state/droppable/is-home-of.ts +7 -0
  285. package/src/state/droppable/scroll-droppable.ts +53 -0
  286. package/src/state/droppable/should-use-placeholder.ts +7 -0
  287. package/src/state/droppable/util/clip.ts +17 -0
  288. package/src/state/droppable/util/get-subject.ts +63 -0
  289. package/src/state/droppable/what-is-dragged-over-from-result.ts +16 -0
  290. package/src/state/droppable/what-is-dragged-over.ts +16 -0
  291. package/src/state/droppable/with-placeholder.ts +174 -0
  292. package/src/state/get-center-from-impact/get-client-border-box-center/get-client-from-page-border-box-center.ts +30 -0
  293. package/src/state/get-center-from-impact/get-client-border-box-center/index.ts +45 -0
  294. package/src/state/get-center-from-impact/get-page-border-box-center/index.ts +71 -0
  295. package/src/state/get-center-from-impact/get-page-border-box-center/when-combining.ts +40 -0
  296. package/src/state/get-center-from-impact/get-page-border-box-center/when-reordering.ts +113 -0
  297. package/src/state/get-center-from-impact/move-relative-to.ts +68 -0
  298. package/src/state/get-combined-item-displacement.ts +35 -0
  299. package/src/state/get-displaced-by.ts +17 -0
  300. package/src/state/get-displacement-groups.ts +131 -0
  301. package/src/state/get-drag-impact/get-combine-impact.ts +131 -0
  302. package/src/state/get-drag-impact/get-reorder-impact.ts +145 -0
  303. package/src/state/get-drag-impact/index.ts +94 -0
  304. package/src/state/get-draggables-inside-droppable.ts +31 -0
  305. package/src/state/get-droppable-over.ts +161 -0
  306. package/src/state/get-frame.ts +10 -0
  307. package/src/state/get-home-location.ts +7 -0
  308. package/src/state/get-impact-location.ts +16 -0
  309. package/src/state/get-is-displaced.ts +12 -0
  310. package/src/state/get-lift-effect.ts +84 -0
  311. package/src/state/get-max-scroll.ts +32 -0
  312. package/src/state/is-movement-allowed.ts +13 -0
  313. package/src/state/is-within.ts +9 -0
  314. package/src/state/middleware/auto-scroll.ts +38 -0
  315. package/src/state/middleware/dimension-marshal-stopper.ts +20 -0
  316. package/src/state/middleware/drop/drop-animation-finish-middleware.ts +21 -0
  317. package/src/state/middleware/drop/drop-animation-flush-on-scroll-middleware.ts +63 -0
  318. package/src/state/middleware/drop/drop-middleware.ts +146 -0
  319. package/src/state/middleware/drop/get-drop-duration.ts +48 -0
  320. package/src/state/middleware/drop/get-drop-impact.ts +79 -0
  321. package/src/state/middleware/drop/get-new-home-client-offset.ts +55 -0
  322. package/src/state/middleware/drop/index.ts +2 -0
  323. package/src/state/middleware/focus.ts +42 -0
  324. package/src/state/middleware/lift.ts +66 -0
  325. package/src/state/middleware/pending-drop.ts +37 -0
  326. package/src/state/middleware/responders/async-marshal.ts +58 -0
  327. package/src/state/middleware/responders/expiring-announce.ts +44 -0
  328. package/src/state/middleware/responders/index.ts +2 -0
  329. package/src/state/middleware/responders/is-equal.ts +57 -0
  330. package/src/state/middleware/responders/publisher.ts +255 -0
  331. package/src/state/middleware/responders/responders-middleware.ts +81 -0
  332. package/src/state/middleware/scroll-listener.ts +31 -0
  333. package/src/state/middleware/style.ts +22 -0
  334. package/src/state/middleware/util/validate-dimensions.ts +71 -0
  335. package/src/state/move-in-direction/index.ts +85 -0
  336. package/src/state/move-in-direction/move-cross-axis/get-best-cross-axis-droppable.ts +169 -0
  337. package/src/state/move-in-direction/move-cross-axis/get-closest-draggable.ts +80 -0
  338. package/src/state/move-in-direction/move-cross-axis/index.ts +110 -0
  339. package/src/state/move-in-direction/move-cross-axis/move-to-new-droppable.ts +122 -0
  340. package/src/state/move-in-direction/move-cross-axis/without-starting-displacement.ts +31 -0
  341. package/src/state/move-in-direction/move-in-direction-types.ts +10 -0
  342. package/src/state/move-in-direction/move-to-next-place/index.ts +133 -0
  343. package/src/state/move-in-direction/move-to-next-place/is-totally-visible-in-new-location.ts +53 -0
  344. package/src/state/move-in-direction/move-to-next-place/move-to-next-combine/index.ts +98 -0
  345. package/src/state/move-in-direction/move-to-next-place/move-to-next-index/from-combine.ts +53 -0
  346. package/src/state/move-in-direction/move-to-next-place/move-to-next-index/from-reorder.ts +44 -0
  347. package/src/state/move-in-direction/move-to-next-place/move-to-next-index/index.ts +87 -0
  348. package/src/state/no-impact.ts +33 -0
  349. package/src/state/patch-dimension-map.ts +11 -0
  350. package/src/state/patch-droppable-map.ts +10 -0
  351. package/src/state/position.ts +65 -0
  352. package/src/state/post-reducer/when-moving/refresh-snap.ts +68 -0
  353. package/src/state/post-reducer/when-moving/update.ts +121 -0
  354. package/src/state/publish-while-dragging-in-virtual/adjust-additions-for-scroll-changes.ts +59 -0
  355. package/src/state/publish-while-dragging-in-virtual/index.ts +159 -0
  356. package/src/state/publish-while-dragging-in-virtual/offset-draggable.ts +36 -0
  357. package/src/state/recompute-placeholders.ts +101 -0
  358. package/src/state/rect.ts +7 -0
  359. package/src/state/reducer.ts +467 -0
  360. package/src/state/registry/create-registry.ts +162 -0
  361. package/src/state/registry/registry-types.ts +106 -0
  362. package/src/state/registry/use-registry.ts +20 -0
  363. package/src/state/remove-draggable-from-list.ts +13 -0
  364. package/src/state/scroll-viewport.ts +34 -0
  365. package/src/state/spacing.ts +45 -0
  366. package/src/state/store-types.ts +19 -0
  367. package/src/state/update-displacement-visibility/recompute.ts +55 -0
  368. package/src/state/update-displacement-visibility/speculatively-increase.ts +112 -0
  369. package/src/state/visibility/is-partially-visible-through-frame.ts +60 -0
  370. package/src/state/visibility/is-position-in-frame.ts +12 -0
  371. package/src/state/visibility/is-totally-visible-through-frame-on-axis.ts +19 -0
  372. package/src/state/visibility/is-totally-visible-through-frame.ts +18 -0
  373. package/src/state/visibility/is-visible.ts +102 -0
  374. package/src/state/with-scroll-change/with-all-displacement.ts +15 -0
  375. package/src/state/with-scroll-change/with-droppable-displacement.ts +13 -0
  376. package/src/state/with-scroll-change/with-droppable-scroll.ts +13 -0
  377. package/src/state/with-scroll-change/with-viewport-displacement.ts +7 -0
  378. package/src/types/redux-devtools.d.ts +17 -0
  379. package/src/types.ts +495 -0
  380. package/src/view/animate-in-out/animate-in-out.tsx +98 -0
  381. package/src/view/animate-in-out/index.ts +2 -0
  382. package/src/view/check-is-valid-inner-ref.ts +15 -0
  383. package/src/view/context/app-context.ts +19 -0
  384. package/src/view/context/droppable-context.ts +12 -0
  385. package/src/view/context/hooks.ts +21 -0
  386. package/src/view/context/store-context.ts +8 -0
  387. package/src/view/data-attributes.ts +37 -0
  388. package/src/view/drag-drop-context/app.tsx +300 -0
  389. package/src/view/drag-drop-context/check-doctype.ts +39 -0
  390. package/src/view/drag-drop-context/check-react-version.ts +72 -0
  391. package/src/view/drag-drop-context/drag-drop-context-types.ts +8 -0
  392. package/src/view/drag-drop-context/drag-drop-context.tsx +60 -0
  393. package/src/view/drag-drop-context/error-boundary.tsx +89 -0
  394. package/src/view/drag-drop-context/index.ts +2 -0
  395. package/src/view/drag-drop-context/use-startup-validation.ts +13 -0
  396. package/src/view/drag-drop-context/use-unique-context-id.ts +13 -0
  397. package/src/view/draggable/connected-draggable.tsx +420 -0
  398. package/src/view/draggable/draggable-api.tsx +48 -0
  399. package/src/view/draggable/draggable-types.ts +204 -0
  400. package/src/view/draggable/draggable.tsx +167 -0
  401. package/src/view/draggable/get-style.ts +109 -0
  402. package/src/view/draggable/index.ts +2 -0
  403. package/src/view/draggable/use-validation.ts +70 -0
  404. package/src/view/droppable/connected-droppable.tsx +597 -0
  405. package/src/view/droppable/droppable-types.ts +96 -0
  406. package/src/view/droppable/droppable.tsx +167 -0
  407. package/src/view/droppable/index.ts +2 -0
  408. package/src/view/droppable/use-validation.ts +102 -0
  409. package/src/view/event-bindings/bind-events.ts +39 -0
  410. package/src/view/event-bindings/event-types.ts +15 -0
  411. package/src/view/get-body-element.ts +8 -0
  412. package/src/view/get-border-box-center-position.ts +5 -0
  413. package/src/view/get-document-element.ts +8 -0
  414. package/src/view/get-elements/find-drag-handle.ts +38 -0
  415. package/src/view/get-elements/find-draggable.ts +30 -0
  416. package/src/view/is-strict-equal.ts +2 -0
  417. package/src/view/is-type-of-element/is-element.ts +10 -0
  418. package/src/view/is-type-of-element/is-html-element.ts +10 -0
  419. package/src/view/is-type-of-element/is-svg-element.ts +22 -0
  420. package/src/view/key-codes.ts +13 -0
  421. package/src/view/placeholder/index.ts +2 -0
  422. package/src/view/placeholder/placeholder-types.ts +16 -0
  423. package/src/view/placeholder/placeholder.tsx +204 -0
  424. package/src/view/scroll-listener.ts +74 -0
  425. package/src/view/throw-if-invalid-inner-ref.ts +15 -0
  426. package/src/view/use-announcer/index.ts +2 -0
  427. package/src/view/use-announcer/use-announcer.ts +80 -0
  428. package/src/view/use-dev-setup-warning.ts +22 -0
  429. package/src/view/use-dev.ts +9 -0
  430. package/src/view/use-draggable-publisher/get-dimension.ts +44 -0
  431. package/src/view/use-draggable-publisher/index.ts +2 -0
  432. package/src/view/use-draggable-publisher/use-draggable-publisher.ts +87 -0
  433. package/src/view/use-droppable-publisher/check-for-nested-scroll-container.ts +27 -0
  434. package/src/view/use-droppable-publisher/get-closest-scrollable.ts +96 -0
  435. package/src/view/use-droppable-publisher/get-dimension.ts +140 -0
  436. package/src/view/use-droppable-publisher/get-env.ts +32 -0
  437. package/src/view/use-droppable-publisher/get-listener-options.ts +12 -0
  438. package/src/view/use-droppable-publisher/get-scroll.ts +7 -0
  439. package/src/view/use-droppable-publisher/index.ts +2 -0
  440. package/src/view/use-droppable-publisher/is-in-fixed-container.ts +21 -0
  441. package/src/view/use-droppable-publisher/use-droppable-publisher.ts +288 -0
  442. package/src/view/use-focus-marshal/focus-marshal-types.ts +14 -0
  443. package/src/view/use-focus-marshal/index.ts +2 -0
  444. package/src/view/use-focus-marshal/use-focus-marshal.ts +128 -0
  445. package/src/view/use-hidden-text-element/index.ts +2 -0
  446. package/src/view/use-hidden-text-element/use-hidden-text-element.ts +62 -0
  447. package/src/view/use-isomorphic-layout-effect.ts +18 -0
  448. package/src/view/use-previous-ref.ts +26 -0
  449. package/src/view/use-required-context.ts +22 -0
  450. package/src/view/use-sensor-marshal/closest.ts +89 -0
  451. package/src/view/use-sensor-marshal/find-closest-draggable-id-from-event.ts +50 -0
  452. package/src/view/use-sensor-marshal/index.ts +5 -0
  453. package/src/view/use-sensor-marshal/is-event-in-interactive-element.ts +67 -0
  454. package/src/view/use-sensor-marshal/lock.ts +50 -0
  455. package/src/view/use-sensor-marshal/sensors/use-keyboard-sensor.ts +243 -0
  456. package/src/view/use-sensor-marshal/sensors/use-mouse-sensor.ts +391 -0
  457. package/src/view/use-sensor-marshal/sensors/use-touch-sensor.ts +481 -0
  458. package/src/view/use-sensor-marshal/sensors/util/prevent-standard-key-events.ts +19 -0
  459. package/src/view/use-sensor-marshal/sensors/util/supported-page-visibility-event-name.ts +29 -0
  460. package/src/view/use-sensor-marshal/use-sensor-marshal.ts +504 -0
  461. package/src/view/use-sensor-marshal/use-validate-sensor-hooks.ts +20 -0
  462. package/src/view/use-style-marshal/get-styles.ts +173 -0
  463. package/src/view/use-style-marshal/index.ts +2 -0
  464. package/src/view/use-style-marshal/style-marshal-types.ts +9 -0
  465. package/src/view/use-style-marshal/use-style-marshal.ts +126 -0
  466. package/src/view/use-unique-id.ts +25 -0
  467. package/src/view/visually-hidden-style.ts +16 -0
  468. package/src/view/window/get-max-window-scroll.ts +19 -0
  469. package/src/view/window/get-viewport.ts +49 -0
  470. package/src/view/window/get-window-from-el.ts +12 -0
  471. package/src/view/window/get-window-scroll.ts +30 -0
  472. package/src/view/window/scroll-window.ts +7 -0
@@ -0,0 +1,17 @@
1
+ import type { compose } from 'redux';
2
+
3
+ // declare global {
4
+ // interface Window {
5
+ // __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose;
6
+ // }
7
+ // }
8
+
9
+ declare global {
10
+ interface Window {
11
+ __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: (
12
+ options?: { name?: string },
13
+ ) => Compose;
14
+ }
15
+ }
16
+
17
+ export {};
package/src/types.ts ADDED
@@ -0,0 +1,495 @@
1
+ // @flow
2
+ import type { BoxModel, Rect, Position } from 'css-box-model';
3
+
4
+ // type Exact<T, Shape extends T> =
5
+ // Shape & Record<Exclude<keyof Shape, keyof T>, never>;
6
+
7
+ export type Id = string;
8
+ export type DraggableId = Id;
9
+ export type DroppableId = Id;
10
+ export type TypeId = Id;
11
+ export type ContextId = Id;
12
+ export type ElementId = Id;
13
+ export type AnimationFrameID = number;
14
+ export type TimeoutID = ReturnType<typeof setTimeout>;
15
+
16
+ export type DroppableMode = 'standard' | 'virtual';
17
+
18
+ export type DroppableDescriptor = {
19
+ id: DroppableId,
20
+ type: TypeId,
21
+ mode: DroppableMode,
22
+ };
23
+
24
+ export type DraggableDescriptor = {
25
+ id: DraggableId,
26
+ index: number,
27
+ // Inherited from Droppable
28
+ droppableId: DroppableId,
29
+ // This is technically redundant but it avoids
30
+ // needing to look up a parent droppable just to get its type
31
+ type: TypeId,
32
+ };
33
+
34
+ export type DraggableOptions = {
35
+ canDragInteractiveElements: boolean,
36
+ shouldRespectForcePress: boolean,
37
+ isEnabled: boolean,
38
+ };
39
+
40
+ export type Direction = 'horizontal' | 'vertical';
41
+
42
+ export type VerticalAxis = {
43
+ direction: 'vertical',
44
+ line: 'y',
45
+ start: 'top',
46
+ end: 'bottom',
47
+ size: 'height',
48
+ crossAxisLine: 'x',
49
+ crossAxisStart: 'left',
50
+ crossAxisEnd: 'right',
51
+ crossAxisSize: 'width',
52
+ };
53
+
54
+ export type HorizontalAxis = {
55
+ direction: 'horizontal',
56
+ line: 'x',
57
+ start: 'left',
58
+ end: 'right',
59
+ size: 'width',
60
+ crossAxisLine: 'y',
61
+ crossAxisStart: 'top',
62
+ crossAxisEnd: 'bottom',
63
+ crossAxisSize: 'height',
64
+ };
65
+
66
+ export type Axis = VerticalAxis | HorizontalAxis;
67
+
68
+ export type ScrollSize = {
69
+ scrollHeight: number,
70
+ scrollWidth: number,
71
+ };
72
+
73
+ export type ScrollDetails = {
74
+ initial: Position,
75
+ current: Position,
76
+ // the maximum allowable scroll for the frame
77
+ max: Position,
78
+ diff: {
79
+ value: Position,
80
+ // The actual displacement as a result of a scroll is in the opposite
81
+ // direction to the scroll itself. When scrolling down items are displaced
82
+ // upwards. This value is the negated version of the 'value'
83
+ displacement: Position,
84
+ },
85
+ };
86
+
87
+ export type Placeholder = {
88
+ client: BoxModel,
89
+ tagName: string,
90
+ display: string,
91
+ };
92
+
93
+ export type DraggableDimension = {
94
+ descriptor: DraggableDescriptor,
95
+ // the placeholder for the draggable
96
+ placeholder: Placeholder,
97
+ // relative to the viewport when the drag started
98
+ client: BoxModel,
99
+ // relative to the whole page
100
+ page: BoxModel,
101
+ // how much displacement the draggable causes
102
+ // this is the size of the marginBox
103
+ displaceBy: Position,
104
+ };
105
+
106
+ export type Scrollable = {
107
+ // This is the window through which the droppable is observed
108
+ // It does not change during a drag
109
+ pageMarginBox: Rect,
110
+ // Used for comparision with dynamic recollecting
111
+ frameClient: BoxModel,
112
+ scrollSize: ScrollSize,
113
+ // Whether or not we should clip the subject by the frame
114
+ // Is controlled by the ignoreContainerClipping prop
115
+ shouldClipSubject: boolean,
116
+ scroll: ScrollDetails,
117
+ };
118
+
119
+ export type PlaceholderInSubject = {
120
+ // might not actually be increased by
121
+ // placeholder if there is no required space
122
+ increasedBy: Position | null,
123
+ placeholderSize: Position,
124
+ // max scroll before placeholder added
125
+ // will be null if there was no frame
126
+ oldFrameMaxScroll: Position | null,
127
+ };
128
+
129
+ export type DroppableSubject = {
130
+ // raw, unchanging
131
+ page: BoxModel,
132
+ withPlaceholder: PlaceholderInSubject | null,
133
+ // The hitbox for a droppable
134
+ // - page margin box
135
+ // - with scroll changes
136
+ // - with any additional droppable placeholder
137
+ // - clipped by frame
138
+ // The subject will be null if the hit area is completely empty
139
+ active: Rect | null,
140
+ };
141
+
142
+ export type DroppableDimension = {
143
+ descriptor: DroppableDescriptor,
144
+ axis: Axis,
145
+ isEnabled: boolean,
146
+ isCombineEnabled?: boolean,
147
+ // relative to the current viewport
148
+ client: BoxModel,
149
+ // relative to the whole page
150
+ isFixedOnPage: boolean,
151
+ // relative to the page
152
+ page: BoxModel,
153
+ // The container of the droppable
154
+ frame: Scrollable | null,
155
+ // what is visible through the frame
156
+ subject: DroppableSubject,
157
+ };
158
+
159
+ export type DraggableLocation = {
160
+ droppableId: DroppableId,
161
+ index: number,
162
+ };
163
+
164
+ export type DraggableIdMap = {
165
+ [id: DraggableId]: true,
166
+ };
167
+
168
+ export type DroppableIdMap = {
169
+ [id: DroppableId]: true,
170
+ };
171
+
172
+ export type DraggableDimensionMap = { [key: DraggableId]: DraggableDimension };
173
+
174
+ export type DroppableDimensionMap = Record<
175
+ DroppableId,
176
+ DroppableDimension
177
+ >;
178
+
179
+ export type Displacement = {
180
+ draggableId: DraggableId,
181
+ shouldAnimate: boolean,
182
+ };
183
+
184
+ export type DisplacementMap = { [key: DraggableId]: Displacement };
185
+
186
+ export type DisplacedBy = {
187
+ value: number,
188
+ point: Position,
189
+ };
190
+
191
+ export type Combine = {
192
+ draggableId: DraggableId,
193
+ droppableId: DroppableId,
194
+ };
195
+
196
+ export type DisplacementGroups = {
197
+ all: DraggableId[],
198
+ visible: DisplacementMap,
199
+ invisible: DraggableIdMap,
200
+ };
201
+
202
+ export type ReorderImpact = {
203
+ type: 'REORDER',
204
+ destination: DraggableLocation,
205
+ };
206
+
207
+ export type CombineImpact = {
208
+ type: 'COMBINE',
209
+ combine: Combine,
210
+ };
211
+
212
+ export type ImpactLocation = ReorderImpact | CombineImpact;
213
+
214
+ export type Displaced = {
215
+ forwards: DisplacementGroups,
216
+ backwards: DisplacementGroups,
217
+ };
218
+
219
+ export type DragImpact = {
220
+ displaced: DisplacementGroups,
221
+ displacedBy: DisplacedBy,
222
+ at: ImpactLocation | null,
223
+ };
224
+
225
+ export type ClientPositions = {
226
+ // where the user initially selected
227
+ // This point is not used to calculate the impact of a dragging item
228
+ // It is used to calculate the offset from the initial selection point
229
+ selection: Position,
230
+ // the current center of the item
231
+ borderBoxCenter: Position,
232
+ // how far the item has moved from its original position
233
+ offset: Position,
234
+ };
235
+
236
+ export type PagePositions = {
237
+ selection: Position,
238
+ borderBoxCenter: Position,
239
+ // how much the page position has changed from the initial
240
+ offset: Position,
241
+ };
242
+
243
+ // There are two seperate modes that a drag can be in
244
+ // FLUID: everything is done in response to highly granular input (eg mouse)
245
+ // SNAP: items move in response to commands (eg keyboard);
246
+ export type MovementMode = 'FLUID' | 'SNAP';
247
+
248
+ export type DragPositions = {
249
+ client: ClientPositions,
250
+ page: PagePositions,
251
+ };
252
+
253
+ export type DraggableRubric = {
254
+ draggableId: DraggableId,
255
+ type: TypeId,
256
+ source: DraggableLocation,
257
+ };
258
+
259
+ // Published in onBeforeCapture
260
+ // We cannot give more information as things might change in the
261
+ // onBeforeCapture responder!
262
+ export type BeforeCapture = {
263
+ draggableId: DraggableId,
264
+ mode: MovementMode,
265
+ };
266
+
267
+ // published when a drag starts
268
+ export type DragStart = DraggableRubric & {
269
+ mode: MovementMode,
270
+ };
271
+
272
+ export type DragUpdate = DragStart & {
273
+ // may not have any destination (drag to nowhere)
274
+ destination: DraggableLocation | null,
275
+ // populated when a draggable is dragging over another in combine mode
276
+ combine: Combine | null,
277
+ };
278
+
279
+ export type DropReason = 'DROP' | 'CANCEL';
280
+
281
+ // published when a drag finishes
282
+ export type DropResult = DragUpdate & {
283
+ reason: DropReason,
284
+ };
285
+
286
+ export type ScrollOptions = {
287
+ shouldPublishImmediately: boolean,
288
+ };
289
+
290
+ // using the draggable id rather than the descriptor as the descriptor
291
+ // may change as a result of the initial flush. This means that the lift
292
+ // descriptor may not be the same as the actual descriptor. To avoid
293
+ // confusion the request is just an id which is looked up
294
+ // in the dimension-marshal post-flush
295
+ // Not including droppableId as it might change in a drop flush
296
+ export type LiftRequest = {
297
+ draggableId: DraggableId,
298
+ scrollOptions: ScrollOptions,
299
+ };
300
+
301
+ export type Critical = {
302
+ draggable: DraggableDescriptor,
303
+ droppable: DroppableDescriptor,
304
+ };
305
+
306
+ export type Viewport = {
307
+ // live updates with the latest values
308
+ frame: Rect,
309
+ scroll: ScrollDetails,
310
+ };
311
+
312
+ export type LiftEffect = {
313
+ inVirtualList: boolean,
314
+ effected: DraggableIdMap,
315
+ displacedBy: DisplacedBy,
316
+ };
317
+
318
+ export type DimensionMap = {
319
+ draggables: DraggableDimensionMap,
320
+ droppables: DroppableDimensionMap,
321
+ };
322
+
323
+ export type DroppablePublish = {
324
+ droppableId: DroppableId,
325
+ scroll: Position,
326
+ };
327
+
328
+ export type Published = {
329
+ additions: DraggableDimension[],
330
+ removals: DraggableId[],
331
+ modified: DroppablePublish[],
332
+ };
333
+
334
+ export type CompletedDrag = {
335
+ critical: Critical,
336
+ result: DropResult,
337
+ impact: DragImpact,
338
+ afterCritical: LiftEffect,
339
+ };
340
+
341
+ export type IdleState = {
342
+ phase: 'IDLE',
343
+ completed: CompletedDrag | null,
344
+ shouldFlush: boolean,
345
+ };
346
+
347
+ export type DraggingState = {
348
+ phase: 'DRAGGING',
349
+ isDragging: true,
350
+ critical: Critical,
351
+ movementMode: MovementMode,
352
+ dimensions: DimensionMap,
353
+ initial: DragPositions,
354
+ current: DragPositions,
355
+ impact: DragImpact,
356
+ viewport: Viewport,
357
+ afterCritical: LiftEffect,
358
+ onLiftImpact: DragImpact,
359
+ // when there is a fixed list we want to opt out of this behaviour
360
+ isWindowScrollAllowed: boolean,
361
+ // if we need to jump the scroll (keyboard dragging)
362
+ scrollJumpRequest: Position | null,
363
+ // whether or not draggable movements should be animated
364
+ forceShouldAnimate: boolean | null,
365
+ };
366
+
367
+ // While dragging we can enter into a bulk collection phase
368
+ // During this phase no drag updates are permitted.
369
+ // If a drop occurs during this phase, it must wait until it is
370
+ // completed before continuing with the drop
371
+ // TODO: rename to BulkCollectingState
372
+ export type CollectingState = Omit<DraggingState, 'phase'> & {
373
+ phase: 'COLLECTING';
374
+ };
375
+
376
+ // If a drop action occurs during a bulk collection we need to
377
+ // wait for the collection to finish before performing the drop.
378
+ // This is to ensure that everything has the correct index after
379
+ // a drop
380
+ export type DropPendingState = Omit<DraggingState, 'phase'> & {
381
+ phase: 'DROP_PENDING',
382
+ isWaiting: boolean,
383
+ reason: DropReason,
384
+ };
385
+
386
+ // An optional phase for animating the drop / cancel if it is needed
387
+ export type DropAnimatingState = {
388
+ phase: 'DROP_ANIMATING',
389
+ completed: CompletedDrag,
390
+ newHomeClientOffset: Position,
391
+ dropDuration: number,
392
+ // We still need to render placeholders and fix the dimensions of the dragging item
393
+ dimensions: DimensionMap,
394
+ };
395
+
396
+ export type State =
397
+ | IdleState
398
+ | DraggingState
399
+ | CollectingState
400
+ | DropPendingState
401
+ | DropAnimatingState;
402
+
403
+ export type StateWhenUpdatesAllowed = DraggingState | CollectingState;
404
+
405
+ export type Announce = (message: string) => void;
406
+
407
+ export type InOutAnimationMode = 'none' | 'open' | 'close';
408
+
409
+ export type ResponderProvided = {
410
+ announce: Announce,
411
+ };
412
+
413
+ export type OnBeforeCaptureResponder = (before: BeforeCapture) => unknown;
414
+
415
+ export type OnBeforeDragStartResponder = (start: DragStart) => unknown;
416
+
417
+ export type OnDragStartResponder = (
418
+ start: DragStart,
419
+ provided: ResponderProvided,
420
+ ) => unknown;
421
+
422
+ export type OnDragUpdateResponder = (
423
+ update: DragUpdate,
424
+ provided: ResponderProvided,
425
+ ) => unknown;
426
+
427
+ export type OnDragEndResponder = (
428
+ result: DropResult,
429
+ provided: ResponderProvided,
430
+ ) => unknown;
431
+
432
+ export type Responders = {
433
+ onBeforeCapture?: OnBeforeCaptureResponder | null,
434
+ onBeforeDragStart?: OnBeforeDragStartResponder | null,
435
+ onDragStart?: OnDragStartResponder | null,
436
+ onDragUpdate?: OnDragUpdateResponder | null,
437
+ // always required
438
+ onDragEnd: OnDragEndResponder,
439
+ };
440
+
441
+ // ## Sensors
442
+ export type StopDragOptions = {
443
+ shouldBlockNextClick: boolean,
444
+ };
445
+
446
+ type DragActions = {
447
+ drop: (args?: StopDragOptions) => void,
448
+ cancel?: (args?: StopDragOptions) => void,
449
+ isActive: () => boolean,
450
+ shouldRespectForcePress: () => boolean,
451
+ };
452
+
453
+ export type FluidDragActions = DragActions & {
454
+ move: (clientSelection: Position) => void,
455
+ };
456
+
457
+ export type SnapDragActions = DragActions & {
458
+ moveUp?: () => void,
459
+ moveDown?: () => void,
460
+ moveRight?: () => void,
461
+ moveLeft?: () => void
462
+ };
463
+
464
+ export type PreDragActions = {
465
+ // discover if the lock is still active
466
+ isActive: () => boolean,
467
+ // whether it has been indicated if force press should be respected
468
+ shouldRespectForcePress: () => boolean,
469
+ // lift the current item
470
+ fluidLift: (clientSelection: Position) => FluidDragActions,
471
+ snapLift: () => SnapDragActions,
472
+ // cancel the pre drag without starting a drag. Releases the lock
473
+ abort: () => void,
474
+ };
475
+
476
+ export type TryGetLockOptions = {
477
+ sourceEvent?: Event,
478
+ };
479
+
480
+ export type TryGetLock = (
481
+ draggableId: DraggableId,
482
+ forceStop?: () => void,
483
+ options?: TryGetLockOptions,
484
+ ) => PreDragActions | null;
485
+
486
+ export type SensorAPI = {
487
+ tryGetLock: TryGetLock,
488
+ canGetLock: (id: DraggableId) => boolean,
489
+ isLockClaimed: () => boolean,
490
+ tryReleaseLock: () => void,
491
+ findClosestDraggableId: (event: Event) => DraggableId | null,
492
+ findOptionsForDraggable: (id: DraggableId) => DraggableOptions | null,
493
+ };
494
+
495
+ export type Sensor = (api: SensorAPI) => void;
@@ -0,0 +1,98 @@
1
+ // @flow
2
+ import React, { type ReactNode } from 'react';
3
+ import type { InOutAnimationMode } from '../../types';
4
+
5
+ // Exact
6
+ export type AnimateProvided = {
7
+ onClose: () => void,
8
+ animate: InOutAnimationMode,
9
+ data: unknown,
10
+ };
11
+
12
+ // Exact
13
+ type Props = {
14
+ on: unknown,
15
+ shouldAnimate: boolean,
16
+ children: (provided: AnimateProvided) => ReactNode,
17
+ };
18
+
19
+ // Exact
20
+ type State = {
21
+ data: unknown,
22
+ isVisible: boolean,
23
+ animate: InOutAnimationMode,
24
+ };
25
+
26
+ // Using a class here rather than hooks because
27
+ // getDerivedStateFromProps results in far less renders.
28
+ // Using hooks to implement this was quite messy and resulted in lots of additional renders
29
+
30
+ export default class AnimateInOut extends React.PureComponent<Props, State> {
31
+ state: State = {
32
+ isVisible: Boolean(this.props.on),
33
+ data: this.props.on,
34
+ // not allowing to animate close on mount
35
+ animate: this.props.shouldAnimate && this.props.on ? 'open' : 'none',
36
+ };
37
+
38
+ static getDerivedStateFromProps(props: Props, state: State): State {
39
+ if (!props.shouldAnimate) {
40
+ return {
41
+ isVisible: Boolean(props.on),
42
+ data: props.on,
43
+ animate: 'none',
44
+ };
45
+ }
46
+
47
+ // need to animate in
48
+ if (props.on) {
49
+ return {
50
+ isVisible: true,
51
+ // have new data to animate in with
52
+ data: props.on,
53
+ animate: 'open',
54
+ };
55
+ }
56
+
57
+ // need to animate out if there was data
58
+
59
+ if (state.isVisible) {
60
+ return {
61
+ isVisible: true,
62
+ // use old data for animating out
63
+ data: state.data,
64
+ animate: 'close',
65
+ };
66
+ }
67
+
68
+ // close animation no longer visible
69
+ return {
70
+ isVisible: false,
71
+ animate: 'close',
72
+ data: null,
73
+ };
74
+ }
75
+
76
+ onClose = () => {
77
+ if (this.state.animate !== 'close') {
78
+ return;
79
+ }
80
+
81
+ this.setState({
82
+ isVisible: false,
83
+ });
84
+ };
85
+
86
+ render() {
87
+ if (!this.state.isVisible) {
88
+ return null;
89
+ }
90
+
91
+ const provided: AnimateProvided = {
92
+ onClose: this.onClose,
93
+ data: this.state.data,
94
+ animate: this.state.animate,
95
+ };
96
+ return this.props.children(provided);
97
+ }
98
+ }
@@ -0,0 +1,2 @@
1
+ // @flow
2
+ export { default } from './animate-in-out';
@@ -0,0 +1,15 @@
1
+ // @flow
2
+ import { invariant } from '../invariant';
3
+ import isHtmlElement from './is-type-of-element/is-html-element';
4
+
5
+ export default function checkIsValidInnerRef(el: HTMLElement | null) {
6
+ invariant(
7
+ el && isHtmlElement(el),
8
+ `
9
+ provided.innerRef has not been provided with a HTMLElement.
10
+
11
+ You can find a guide on using the innerRef callback functions at:
12
+ https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md
13
+ `,
14
+ );
15
+ }
@@ -0,0 +1,19 @@
1
+ // @flow
2
+ import React from 'react';
3
+ import type { DraggableId, ContextId, ElementId } from '../../types';
4
+ import type { DimensionMarshal } from '../../state/dimension-marshal/dimension-marshal-types';
5
+ import type { FocusMarshal } from '../use-focus-marshal/focus-marshal-types';
6
+ import type { Registry } from '../../state/registry/registry-types';
7
+
8
+ // Exact
9
+ export type AppContextValue = {
10
+ focus: FocusMarshal,
11
+ contextId: ContextId,
12
+ canLift: (id: DraggableId) => boolean,
13
+ isMovementAllowed: () => boolean,
14
+ dragHandleUsageInstructionsId: ElementId,
15
+ marshal: DimensionMarshal,
16
+ registry: Registry,
17
+ };
18
+
19
+ export default React.createContext<AppContextValue | null>(null);
@@ -0,0 +1,12 @@
1
+ // @flow
2
+ import React from 'react';
3
+ import type { DraggableId, DroppableId, TypeId } from '../../types';
4
+
5
+ // Exact
6
+ export type DroppableContextValue = {
7
+ isUsingCloneFor?: DraggableId | null,
8
+ droppableId: DroppableId,
9
+ type?: TypeId,
10
+ };
11
+
12
+ export default React.createContext<DroppableContextValue | null>(null);
@@ -0,0 +1,21 @@
1
+ import {
2
+ createDispatchHook,
3
+ createSelectorHook,
4
+ createStoreHook,
5
+ } from 'react-redux';
6
+
7
+ // import type { Dispatch } from 'redux';
8
+ import type { State, Action } from '../../state/store-types';
9
+
10
+ import StoreContext from './store-context';
11
+
12
+ export const useAppDispatch = createDispatchHook<
13
+ State,
14
+ Action
15
+ >(StoreContext);
16
+
17
+ export const useAppSelector = createSelectorHook(
18
+ StoreContext,
19
+ );
20
+
21
+ export const useAppStore = createStoreHook(StoreContext);
@@ -0,0 +1,8 @@
1
+ // @flow
2
+ import React from 'react';
3
+ // import type { Store } from '../../state/store-types';
4
+ import type { ReactReduxContextValue } from 'react-redux';
5
+ import type { State, Action } from '../../state/store-types';
6
+
7
+ // export default React.createContext<Store | null>(null);
8
+ export default React.createContext<ReactReduxContextValue<State, Action> | null>(null);