react-native-layout-dnd 0.1.0-alpha.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 (340) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +262 -0
  3. package/lib/module/adapters/coordinates.js +135 -0
  4. package/lib/module/adapters/coordinates.js.map +1 -0
  5. package/lib/module/adapters/scroll.js +81 -0
  6. package/lib/module/adapters/scroll.js.map +1 -0
  7. package/lib/module/adapters/virtualizedList.js +69 -0
  8. package/lib/module/adapters/virtualizedList.js.map +1 -0
  9. package/lib/module/components/DndProvider.js +1144 -0
  10. package/lib/module/components/DndProvider.js.map +1 -0
  11. package/lib/module/components/DragHandle.js +65 -0
  12. package/lib/module/components/DragHandle.js.map +1 -0
  13. package/lib/module/components/GridController.js +151 -0
  14. package/lib/module/components/GridController.js.map +1 -0
  15. package/lib/module/components/GridDragHandle.js +15 -0
  16. package/lib/module/components/GridDragHandle.js.map +1 -0
  17. package/lib/module/components/GridZoneView.js +59 -0
  18. package/lib/module/components/GridZoneView.js.map +1 -0
  19. package/lib/module/components/SortableGrid.js +305 -0
  20. package/lib/module/components/SortableGrid.js.map +1 -0
  21. package/lib/module/components/SortableList.js +714 -0
  22. package/lib/module/components/SortableList.js.map +1 -0
  23. package/lib/module/components/dndTypes.js +4 -0
  24. package/lib/module/components/dndTypes.js.map +1 -0
  25. package/lib/module/components/gridTypes.js +4 -0
  26. package/lib/module/components/gridTypes.js.map +1 -0
  27. package/lib/module/components/handleViewProps.js +13 -0
  28. package/lib/module/components/handleViewProps.js.map +1 -0
  29. package/lib/module/contracts.js +4 -0
  30. package/lib/module/contracts.js.map +1 -0
  31. package/lib/module/controller/approval.js +98 -0
  32. package/lib/module/controller/approval.js.map +1 -0
  33. package/lib/module/controller/coordinatorBase.js +93 -0
  34. package/lib/module/controller/coordinatorBase.js.map +1 -0
  35. package/lib/module/controller/dndSession.js +621 -0
  36. package/lib/module/controller/dndSession.js.map +1 -0
  37. package/lib/module/controller/dndState.js +103 -0
  38. package/lib/module/controller/dndState.js.map +1 -0
  39. package/lib/module/controller/gridAdapter.js +191 -0
  40. package/lib/module/controller/gridAdapter.js.map +1 -0
  41. package/lib/module/controller/gridState.js +101 -0
  42. package/lib/module/controller/gridState.js.map +1 -0
  43. package/lib/module/controller/locations.js +48 -0
  44. package/lib/module/controller/locations.js.map +1 -0
  45. package/lib/module/controller/previewPath.js +73 -0
  46. package/lib/module/controller/previewPath.js.map +1 -0
  47. package/lib/module/controller/sessionCore.js +222 -0
  48. package/lib/module/controller/sessionCore.js.map +1 -0
  49. package/lib/module/controller/useDndState.js +9 -0
  50. package/lib/module/controller/useDndState.js.map +1 -0
  51. package/lib/module/controller/useGridState.js +9 -0
  52. package/lib/module/controller/useGridState.js.map +1 -0
  53. package/lib/module/controller/useStoreState.js +15 -0
  54. package/lib/module/controller/useStoreState.js.map +1 -0
  55. package/lib/module/defaults.js +7 -0
  56. package/lib/module/defaults.js.map +1 -0
  57. package/lib/module/diagnostics.js +16 -0
  58. package/lib/module/diagnostics.js.map +1 -0
  59. package/lib/module/engine/gridPlacements.js +54 -0
  60. package/lib/module/engine/gridPlacements.js.map +1 -0
  61. package/lib/module/engine/index.js +19 -0
  62. package/lib/module/engine/index.js.map +1 -0
  63. package/lib/module/engine/layout.js +36 -0
  64. package/lib/module/engine/layout.js.map +1 -0
  65. package/lib/module/engine/layoutMove.js +326 -0
  66. package/lib/module/engine/layoutMove.js.map +1 -0
  67. package/lib/module/engine/layoutState.js +344 -0
  68. package/lib/module/engine/layoutState.js.map +1 -0
  69. package/lib/module/engine/list.js +172 -0
  70. package/lib/module/engine/list.js.map +1 -0
  71. package/lib/module/engine/listIndex.js +125 -0
  72. package/lib/module/engine/listIndex.js.map +1 -0
  73. package/lib/module/engine/move.js +216 -0
  74. package/lib/module/engine/move.js.map +1 -0
  75. package/lib/module/engine/movementPolicy.js +77 -0
  76. package/lib/module/engine/movementPolicy.js.map +1 -0
  77. package/lib/module/engine/orderedTarget.js +71 -0
  78. package/lib/module/engine/orderedTarget.js.map +1 -0
  79. package/lib/module/engine/pack.js +30 -0
  80. package/lib/module/engine/pack.js.map +1 -0
  81. package/lib/module/engine/rectangles.js +12 -0
  82. package/lib/module/engine/rectangles.js.map +1 -0
  83. package/lib/module/engine/sameLayout.js +29 -0
  84. package/lib/module/engine/sameLayout.js.map +1 -0
  85. package/lib/module/engine/search.js +159 -0
  86. package/lib/module/engine/search.js.map +1 -0
  87. package/lib/module/engine/spatial.js +27 -0
  88. package/lib/module/engine/spatial.js.map +1 -0
  89. package/lib/module/engine/spatialAppRotation.js +39 -0
  90. package/lib/module/engine/spatialAppRotation.js.map +1 -0
  91. package/lib/module/engine/spatialExchange.js +164 -0
  92. package/lib/module/engine/spatialExchange.js.map +1 -0
  93. package/lib/module/engine/spatialInsertion.js +135 -0
  94. package/lib/module/engine/spatialInsertion.js.map +1 -0
  95. package/lib/module/engine/spatialPolicy.js +41 -0
  96. package/lib/module/engine/spatialPolicy.js.map +1 -0
  97. package/lib/module/engine/spatialRotation.js +48 -0
  98. package/lib/module/engine/spatialRotation.js.map +1 -0
  99. package/lib/module/engine/validation.js +205 -0
  100. package/lib/module/engine/validation.js.map +1 -0
  101. package/lib/module/gesture/DndGestureGroup.js +268 -0
  102. package/lib/module/gesture/DndGestureGroup.js.map +1 -0
  103. package/lib/module/gesture/DndGestureHost.js +32 -0
  104. package/lib/module/gesture/DndGestureHost.js.map +1 -0
  105. package/lib/module/gesture/gestureConfig.js +81 -0
  106. package/lib/module/gesture/gestureConfig.js.map +1 -0
  107. package/lib/module/gesture/gestureGrouping.js +122 -0
  108. package/lib/module/gesture/gestureGrouping.js.map +1 -0
  109. package/lib/module/gesture/gestureHost.js +106 -0
  110. package/lib/module/gesture/gestureHost.js.map +1 -0
  111. package/lib/module/index.js +23 -0
  112. package/lib/module/index.js.map +1 -0
  113. package/lib/module/package.json +1 -0
  114. package/lib/module/pointer/dndTarget.js +101 -0
  115. package/lib/module/pointer/dndTarget.js.map +1 -0
  116. package/lib/module/pointer/geometry.js +363 -0
  117. package/lib/module/pointer/geometry.js.map +1 -0
  118. package/lib/module/pointer/layoutTarget.js +307 -0
  119. package/lib/module/pointer/layoutTarget.js.map +1 -0
  120. package/lib/module/pointer/listCellMotion.js +99 -0
  121. package/lib/module/pointer/listCellMotion.js.map +1 -0
  122. package/lib/module/pointer/listTarget.js +42 -0
  123. package/lib/module/pointer/listTarget.js.map +1 -0
  124. package/lib/module/pointer/motion.js +37 -0
  125. package/lib/module/pointer/motion.js.map +1 -0
  126. package/lib/module/runtime/dndPresentation.js +81 -0
  127. package/lib/module/runtime/dndPresentation.js.map +1 -0
  128. package/lib/module/runtime/dndRenderStore.js +129 -0
  129. package/lib/module/runtime/dndRenderStore.js.map +1 -0
  130. package/lib/module/runtime/dndRuntime.js +135 -0
  131. package/lib/module/runtime/dndRuntime.js.map +1 -0
  132. package/lib/module/runtime/dndSettlement.js +77 -0
  133. package/lib/module/runtime/dndSettlement.js.map +1 -0
  134. package/lib/module/runtime/gridRuntime.js +37 -0
  135. package/lib/module/runtime/gridRuntime.js.map +1 -0
  136. package/lib/module/types.js +4 -0
  137. package/lib/module/types.js.map +1 -0
  138. package/lib/typescript/package.json +1 -0
  139. package/lib/typescript/src/adapters/coordinates.d.ts +9 -0
  140. package/lib/typescript/src/adapters/coordinates.d.ts.map +1 -0
  141. package/lib/typescript/src/adapters/scroll.d.ts +49 -0
  142. package/lib/typescript/src/adapters/scroll.d.ts.map +1 -0
  143. package/lib/typescript/src/adapters/virtualizedList.d.ts +22 -0
  144. package/lib/typescript/src/adapters/virtualizedList.d.ts.map +1 -0
  145. package/lib/typescript/src/components/DndProvider.d.ts +4 -0
  146. package/lib/typescript/src/components/DndProvider.d.ts.map +1 -0
  147. package/lib/typescript/src/components/DragHandle.d.ts +4 -0
  148. package/lib/typescript/src/components/DragHandle.d.ts.map +1 -0
  149. package/lib/typescript/src/components/GridController.d.ts +21 -0
  150. package/lib/typescript/src/components/GridController.d.ts.map +1 -0
  151. package/lib/typescript/src/components/GridDragHandle.d.ts +8 -0
  152. package/lib/typescript/src/components/GridDragHandle.d.ts.map +1 -0
  153. package/lib/typescript/src/components/GridZoneView.d.ts +8 -0
  154. package/lib/typescript/src/components/GridZoneView.d.ts.map +1 -0
  155. package/lib/typescript/src/components/SortableGrid.d.ts +4 -0
  156. package/lib/typescript/src/components/SortableGrid.d.ts.map +1 -0
  157. package/lib/typescript/src/components/SortableList.d.ts +4 -0
  158. package/lib/typescript/src/components/SortableList.d.ts.map +1 -0
  159. package/lib/typescript/src/components/dndTypes.d.ts +94 -0
  160. package/lib/typescript/src/components/dndTypes.d.ts.map +1 -0
  161. package/lib/typescript/src/components/gridTypes.d.ts +84 -0
  162. package/lib/typescript/src/components/gridTypes.d.ts.map +1 -0
  163. package/lib/typescript/src/components/handleViewProps.d.ts +6 -0
  164. package/lib/typescript/src/components/handleViewProps.d.ts.map +1 -0
  165. package/lib/typescript/src/contracts.d.ts +145 -0
  166. package/lib/typescript/src/contracts.d.ts.map +1 -0
  167. package/lib/typescript/src/controller/approval.d.ts +66 -0
  168. package/lib/typescript/src/controller/approval.d.ts.map +1 -0
  169. package/lib/typescript/src/controller/coordinatorBase.d.ts +37 -0
  170. package/lib/typescript/src/controller/coordinatorBase.d.ts.map +1 -0
  171. package/lib/typescript/src/controller/dndSession.d.ts +152 -0
  172. package/lib/typescript/src/controller/dndSession.d.ts.map +1 -0
  173. package/lib/typescript/src/controller/dndState.d.ts +27 -0
  174. package/lib/typescript/src/controller/dndState.d.ts.map +1 -0
  175. package/lib/typescript/src/controller/gridAdapter.d.ts +44 -0
  176. package/lib/typescript/src/controller/gridAdapter.d.ts.map +1 -0
  177. package/lib/typescript/src/controller/gridState.d.ts +18 -0
  178. package/lib/typescript/src/controller/gridState.d.ts.map +1 -0
  179. package/lib/typescript/src/controller/locations.d.ts +9 -0
  180. package/lib/typescript/src/controller/locations.d.ts.map +1 -0
  181. package/lib/typescript/src/controller/previewPath.d.ts +49 -0
  182. package/lib/typescript/src/controller/previewPath.d.ts.map +1 -0
  183. package/lib/typescript/src/controller/sessionCore.d.ts +106 -0
  184. package/lib/typescript/src/controller/sessionCore.d.ts.map +1 -0
  185. package/lib/typescript/src/controller/useDndState.d.ts +8 -0
  186. package/lib/typescript/src/controller/useDndState.d.ts.map +1 -0
  187. package/lib/typescript/src/controller/useGridState.d.ts +8 -0
  188. package/lib/typescript/src/controller/useGridState.d.ts.map +1 -0
  189. package/lib/typescript/src/controller/useStoreState.d.ts +16 -0
  190. package/lib/typescript/src/controller/useStoreState.d.ts.map +1 -0
  191. package/lib/typescript/src/defaults.d.ts +5 -0
  192. package/lib/typescript/src/defaults.d.ts.map +1 -0
  193. package/lib/typescript/src/diagnostics.d.ts +9 -0
  194. package/lib/typescript/src/diagnostics.d.ts.map +1 -0
  195. package/lib/typescript/src/engine/gridPlacements.d.ts +22 -0
  196. package/lib/typescript/src/engine/gridPlacements.d.ts.map +1 -0
  197. package/lib/typescript/src/engine/index.d.ts +28 -0
  198. package/lib/typescript/src/engine/index.d.ts.map +1 -0
  199. package/lib/typescript/src/engine/layout.d.ts +4 -0
  200. package/lib/typescript/src/engine/layout.d.ts.map +1 -0
  201. package/lib/typescript/src/engine/layoutMove.d.ts +46 -0
  202. package/lib/typescript/src/engine/layoutMove.d.ts.map +1 -0
  203. package/lib/typescript/src/engine/layoutState.d.ts +22 -0
  204. package/lib/typescript/src/engine/layoutState.d.ts.map +1 -0
  205. package/lib/typescript/src/engine/list.d.ts +68 -0
  206. package/lib/typescript/src/engine/list.d.ts.map +1 -0
  207. package/lib/typescript/src/engine/listIndex.d.ts +32 -0
  208. package/lib/typescript/src/engine/listIndex.d.ts.map +1 -0
  209. package/lib/typescript/src/engine/move.d.ts +10 -0
  210. package/lib/typescript/src/engine/move.d.ts.map +1 -0
  211. package/lib/typescript/src/engine/movementPolicy.d.ts +34 -0
  212. package/lib/typescript/src/engine/movementPolicy.d.ts.map +1 -0
  213. package/lib/typescript/src/engine/orderedTarget.d.ts +32 -0
  214. package/lib/typescript/src/engine/orderedTarget.d.ts.map +1 -0
  215. package/lib/typescript/src/engine/pack.d.ts +3 -0
  216. package/lib/typescript/src/engine/pack.d.ts.map +1 -0
  217. package/lib/typescript/src/engine/rectangles.d.ts +9 -0
  218. package/lib/typescript/src/engine/rectangles.d.ts.map +1 -0
  219. package/lib/typescript/src/engine/sameLayout.d.ts +4 -0
  220. package/lib/typescript/src/engine/sameLayout.d.ts.map +1 -0
  221. package/lib/typescript/src/engine/search.d.ts +28 -0
  222. package/lib/typescript/src/engine/search.d.ts.map +1 -0
  223. package/lib/typescript/src/engine/spatial.d.ts +16 -0
  224. package/lib/typescript/src/engine/spatial.d.ts.map +1 -0
  225. package/lib/typescript/src/engine/spatialAppRotation.d.ts +4 -0
  226. package/lib/typescript/src/engine/spatialAppRotation.d.ts.map +1 -0
  227. package/lib/typescript/src/engine/spatialExchange.d.ts +5 -0
  228. package/lib/typescript/src/engine/spatialExchange.d.ts.map +1 -0
  229. package/lib/typescript/src/engine/spatialInsertion.d.ts +5 -0
  230. package/lib/typescript/src/engine/spatialInsertion.d.ts.map +1 -0
  231. package/lib/typescript/src/engine/spatialPolicy.d.ts +9 -0
  232. package/lib/typescript/src/engine/spatialPolicy.d.ts.map +1 -0
  233. package/lib/typescript/src/engine/spatialRotation.d.ts +8 -0
  234. package/lib/typescript/src/engine/spatialRotation.d.ts.map +1 -0
  235. package/lib/typescript/src/engine/validation.d.ts +9 -0
  236. package/lib/typescript/src/engine/validation.d.ts.map +1 -0
  237. package/lib/typescript/src/gesture/DndGestureGroup.d.ts +33 -0
  238. package/lib/typescript/src/gesture/DndGestureGroup.d.ts.map +1 -0
  239. package/lib/typescript/src/gesture/DndGestureHost.d.ts +12 -0
  240. package/lib/typescript/src/gesture/DndGestureHost.d.ts.map +1 -0
  241. package/lib/typescript/src/gesture/gestureConfig.d.ts +15 -0
  242. package/lib/typescript/src/gesture/gestureConfig.d.ts.map +1 -0
  243. package/lib/typescript/src/gesture/gestureGrouping.d.ts +66 -0
  244. package/lib/typescript/src/gesture/gestureGrouping.d.ts.map +1 -0
  245. package/lib/typescript/src/gesture/gestureHost.d.ts +23 -0
  246. package/lib/typescript/src/gesture/gestureHost.d.ts.map +1 -0
  247. package/lib/typescript/src/index.d.ts +38 -0
  248. package/lib/typescript/src/index.d.ts.map +1 -0
  249. package/lib/typescript/src/pointer/dndTarget.d.ts +14 -0
  250. package/lib/typescript/src/pointer/dndTarget.d.ts.map +1 -0
  251. package/lib/typescript/src/pointer/geometry.d.ts +28 -0
  252. package/lib/typescript/src/pointer/geometry.d.ts.map +1 -0
  253. package/lib/typescript/src/pointer/layoutTarget.d.ts +43 -0
  254. package/lib/typescript/src/pointer/layoutTarget.d.ts.map +1 -0
  255. package/lib/typescript/src/pointer/listCellMotion.d.ts +43 -0
  256. package/lib/typescript/src/pointer/listCellMotion.d.ts.map +1 -0
  257. package/lib/typescript/src/pointer/listTarget.d.ts +7 -0
  258. package/lib/typescript/src/pointer/listTarget.d.ts.map +1 -0
  259. package/lib/typescript/src/pointer/motion.d.ts +20 -0
  260. package/lib/typescript/src/pointer/motion.d.ts.map +1 -0
  261. package/lib/typescript/src/runtime/dndPresentation.d.ts +37 -0
  262. package/lib/typescript/src/runtime/dndPresentation.d.ts.map +1 -0
  263. package/lib/typescript/src/runtime/dndRenderStore.d.ts +46 -0
  264. package/lib/typescript/src/runtime/dndRenderStore.d.ts.map +1 -0
  265. package/lib/typescript/src/runtime/dndRuntime.d.ts +138 -0
  266. package/lib/typescript/src/runtime/dndRuntime.d.ts.map +1 -0
  267. package/lib/typescript/src/runtime/dndSettlement.d.ts +18 -0
  268. package/lib/typescript/src/runtime/dndSettlement.d.ts.map +1 -0
  269. package/lib/typescript/src/runtime/gridRuntime.d.ts +54 -0
  270. package/lib/typescript/src/runtime/gridRuntime.d.ts.map +1 -0
  271. package/lib/typescript/src/types.d.ts +180 -0
  272. package/lib/typescript/src/types.d.ts.map +1 -0
  273. package/package.json +136 -0
  274. package/src/adapters/coordinates.ts +181 -0
  275. package/src/adapters/scroll.ts +147 -0
  276. package/src/adapters/virtualizedList.ts +112 -0
  277. package/src/components/DndProvider.tsx +1836 -0
  278. package/src/components/DragHandle.tsx +89 -0
  279. package/src/components/GridController.tsx +213 -0
  280. package/src/components/GridDragHandle.tsx +11 -0
  281. package/src/components/GridZoneView.tsx +57 -0
  282. package/src/components/SortableGrid.tsx +449 -0
  283. package/src/components/SortableList.tsx +1028 -0
  284. package/src/components/dndTypes.ts +102 -0
  285. package/src/components/gridTypes.ts +90 -0
  286. package/src/components/handleViewProps.ts +35 -0
  287. package/src/contracts.ts +149 -0
  288. package/src/controller/approval.ts +179 -0
  289. package/src/controller/coordinatorBase.ts +118 -0
  290. package/src/controller/dndSession.ts +1058 -0
  291. package/src/controller/dndState.ts +198 -0
  292. package/src/controller/gridAdapter.ts +268 -0
  293. package/src/controller/gridState.ts +187 -0
  294. package/src/controller/locations.ts +67 -0
  295. package/src/controller/previewPath.ts +90 -0
  296. package/src/controller/sessionCore.ts +390 -0
  297. package/src/controller/useDndState.ts +26 -0
  298. package/src/controller/useGridState.ts +22 -0
  299. package/src/controller/useStoreState.ts +27 -0
  300. package/src/defaults.ts +4 -0
  301. package/src/diagnostics.ts +23 -0
  302. package/src/engine/gridPlacements.ts +85 -0
  303. package/src/engine/index.ts +99 -0
  304. package/src/engine/layout.ts +29 -0
  305. package/src/engine/layoutMove.ts +401 -0
  306. package/src/engine/layoutState.ts +490 -0
  307. package/src/engine/list.ts +307 -0
  308. package/src/engine/listIndex.ts +174 -0
  309. package/src/engine/move.ts +274 -0
  310. package/src/engine/movementPolicy.ts +151 -0
  311. package/src/engine/orderedTarget.ts +131 -0
  312. package/src/engine/pack.ts +24 -0
  313. package/src/engine/rectangles.ts +18 -0
  314. package/src/engine/sameLayout.ts +50 -0
  315. package/src/engine/search.ts +174 -0
  316. package/src/engine/spatial.ts +36 -0
  317. package/src/engine/spatialAppRotation.ts +53 -0
  318. package/src/engine/spatialExchange.ts +212 -0
  319. package/src/engine/spatialInsertion.ts +157 -0
  320. package/src/engine/spatialPolicy.ts +48 -0
  321. package/src/engine/spatialRotation.ts +56 -0
  322. package/src/engine/validation.ts +358 -0
  323. package/src/gesture/DndGestureGroup.tsx +357 -0
  324. package/src/gesture/DndGestureHost.tsx +50 -0
  325. package/src/gesture/gestureConfig.ts +123 -0
  326. package/src/gesture/gestureGrouping.ts +210 -0
  327. package/src/gesture/gestureHost.tsx +163 -0
  328. package/src/index.ts +162 -0
  329. package/src/pointer/dndTarget.ts +213 -0
  330. package/src/pointer/geometry.ts +584 -0
  331. package/src/pointer/layoutTarget.ts +515 -0
  332. package/src/pointer/listCellMotion.ts +174 -0
  333. package/src/pointer/listTarget.ts +56 -0
  334. package/src/pointer/motion.ts +66 -0
  335. package/src/runtime/dndPresentation.ts +113 -0
  336. package/src/runtime/dndRenderStore.ts +246 -0
  337. package/src/runtime/dndRuntime.ts +311 -0
  338. package/src/runtime/dndSettlement.ts +117 -0
  339. package/src/runtime/gridRuntime.ts +73 -0
  340. package/src/types.ts +189 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PreviewPath","steps","committed","constructor","sameLocation","rebase","length","reset","resolve","origin","target","kind","base","cumulative","sync","index","findIndex","step","newest","value","push"],"sourceRoot":"../../../src","sources":["controller/previewPath.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBA,OAAO,MAAMA,WAAW,CAAkB;EAChCC,KAAK,GAAmC,EAAE;EAC1CC,SAAS,GAAiB,IAAI;EAEtCC,WAAWA,CACQC,YAGL,EACZ;EACiBC,MAAiD,EAClE;IAAA,KANiBD,YAGL,GAHKA,YAGL;IAAA,KAEKC,MAAiD,GAAjDA,MAAiD;EACjE;EAEH,IAAIC,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACL,KAAK,CAACK,MAAM;EAC1B;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACN,KAAK,CAACK,MAAM,GAAG,CAAC;EACvB;;EAEA;EACAE,OAAOA,CACLN,SAAgB,EAChBO,MAAgB,EAChBC,MAAgB,EACkB;IAClC,IAAI,IAAI,CAACN,YAAY,CAACM,MAAM,EAAED,MAAM,CAAC,EAAE;MACrC,IAAI,CAACF,KAAK,CAAC,CAAC;MACZ,OAAO;QAAEI,IAAI,EAAE,SAAS;QAAEC,IAAI,EAAEV,SAAS;QAAEW,UAAU,EAAE;MAAM,CAAC;IAChE;IACA,IAAI,CAACC,IAAI,CAACZ,SAAS,CAAC;IACpB,MAAMa,KAAK,GAAG,IAAI,CAACd,KAAK,CAACe,SAAS,CAACC,IAAI,IACrC,IAAI,CAACb,YAAY,CAACa,IAAI,CAACP,MAAM,EAAEA,MAAM,CACvC,CAAC;IACD,IAAIK,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAI,CAACd,KAAK,CAACK,MAAM,GAAGS,KAAK,GAAG,CAAC;MAC7B,OAAO;QAAEJ,IAAI,EAAE,UAAU;QAAEM,IAAI,EAAE,IAAI,CAAChB,KAAK,CAACc,KAAK;MAAE,CAAC;IACtD;IACA,MAAMG,MAAM,GAAG,IAAI,CAACjB,KAAK,CAAC,IAAI,CAACA,KAAK,CAACK,MAAM,GAAG,CAAC,CAAC;IAChD,OAAOY,MAAM,GACT;MAAEP,IAAI,EAAE,SAAS;MAAEC,IAAI,EAAEM,MAAM,CAACC,KAAK;MAAEN,UAAU,EAAE;IAAK,CAAC,GACzD;MAAEF,IAAI,EAAE,SAAS;MAAEC,IAAI,EAAEV,SAAS;MAAEW,UAAU,EAAE;IAAM,CAAC;EAC7D;;EAEA;EACAO,IAAIA,CAAClB,SAAgB,EAAEe,IAAkC,EAAQ;IAC/D,IAAI,CAACH,IAAI,CAACZ,SAAS,CAAC;IACpB,IAAI,CAACD,KAAK,CAACmB,IAAI,CAACH,IAAI,CAAC;EACvB;EAEQH,IAAIA,CAACZ,SAAgB,EAAQ;IACnC,IAAI,IAAI,CAACA,SAAS,KAAKA,SAAS,EAAE;IAClC,IAAI,IAAI,CAACA,SAAS,KAAK,IAAI,EACzB,KAAK,MAAMe,IAAI,IAAI,IAAI,CAAChB,KAAK,EAC3BgB,IAAI,CAACE,KAAK,GAAG,IAAI,CAACd,MAAM,CAACY,IAAI,CAACE,KAAK,EAAEjB,SAAS,CAAC;IACnD,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC5B;AACF","ignoreList":[]}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+
3
+ import { diagnosticNow, emitDiagnostic } from "../diagnostics.js";
4
+ import { CoordinatorBase } from "./coordinatorBase.js";
5
+
6
+ /** Engine outcome normalized for both value shapes. */
7
+
8
+ export function candidateFailure(status) {
9
+ return status === 'impossible' ? 'unresolvable' : status === 'unresolved' ? 'search-budget' : 'invalid-target';
10
+ }
11
+
12
+ /** Snapshot fields every coordinator publishes; subclasses add their own. */
13
+
14
+ /** Session fields the shared candidate flow reads and writes. */
15
+
16
+ /**
17
+ * The drag session logic both coordinators share: request guards, the
18
+ * cumulative preview baseline, engine dispatch, the permission callback with
19
+ * its reentrancy guard, candidate publication and the final proposal. The
20
+ * value shape, engine call, snapshot fields and terminal transitions
21
+ * (cancel, unchanged, handoff) come from the subclass.
22
+ */
23
+ export class SessionCore extends CoordinatorBase {
24
+ session = null;
25
+ disposed = false;
26
+ flushingDiagnostics = false;
27
+ constructor(initial, lastValidValue) {
28
+ super(initial);
29
+ this.lastValidValue = lastValidValue;
30
+ }
31
+
32
+ /** The consumer's optional JS-only observer; exceptions never affect a drag. */
33
+
34
+ queueDiagnostic(observer, event) {
35
+ (this.diagnosticEvents ??= []).push({
36
+ observer,
37
+ event
38
+ });
39
+ }
40
+
41
+ /** Diagnostics queued during a batch are delivered after its subscribers. */
42
+ batchFinished() {
43
+ if (this.diagnosticEvents) this.flushDiagnostics();
44
+ }
45
+ flushDiagnostics() {
46
+ if (this.flushingDiagnostics) return;
47
+ this.flushingDiagnostics = true;
48
+ try {
49
+ while (this.diagnosticEvents) {
50
+ const pending = this.diagnosticEvents;
51
+ this.diagnosticEvents = undefined;
52
+ for (const {
53
+ observer,
54
+ event
55
+ } of pending) emitDiagnostic(observer, event);
56
+ }
57
+ } finally {
58
+ this.flushingDiagnostics = false;
59
+ }
60
+ }
61
+ lifecycle(name, session) {
62
+ const observer = this.diagnosticObserver();
63
+ if (!observer) return;
64
+ this.queueDiagnostic(observer, {
65
+ type: 'lifecycle',
66
+ name,
67
+ timestampMs: diagnosticNow(),
68
+ sessionId: session.sessionId
69
+ });
70
+ }
71
+
72
+ /** Time one engine or policy step for the observer, including failures. */
73
+ timed(session, name, run, status, attempts = () => undefined) {
74
+ const observer = this.diagnosticObserver();
75
+ if (!observer) return run();
76
+ const startedAt = diagnosticNow();
77
+ let result;
78
+ try {
79
+ result = run();
80
+ return result;
81
+ } finally {
82
+ const count = result === undefined ? undefined : attempts(result);
83
+ this.queueDiagnostic(observer, {
84
+ type: 'timing',
85
+ name,
86
+ durationMs: diagnosticNow() - startedAt,
87
+ status: result === undefined ? 'error' : status(result),
88
+ ...(count === undefined ? {} : {
89
+ attempts: count
90
+ }),
91
+ sessionId: session.sessionId
92
+ });
93
+ }
94
+ }
95
+ event(session) {
96
+ return {
97
+ sessionId: session.sessionId,
98
+ itemId: session.itemId,
99
+ sourceZoneId: session.sourceZoneId
100
+ };
101
+ }
102
+
103
+ /** The live dragging session when the request sequence is acceptable. */
104
+ acceptsRequest(sessionId, seq, final) {
105
+ const session = this.session;
106
+ if (!session || session.sessionId !== sessionId || this.snapshot.phase !== 'dragging' || !Number.isSafeInteger(seq) || seq < 0 || (final ? seq < session.seq : seq <= session.seq)) return null;
107
+ return session;
108
+ }
109
+
110
+ /** Spatial targets accumulate previews; ordered/list targets never do. */
111
+
112
+ /** A failure detail that rejects the target before any computation. */
113
+
114
+ /** Whether a failed candidate leaves the earlier preview on screen. */
115
+
116
+ /** Runs the permission callback and validates its shape; may throw. */
117
+
118
+ /** Re-check a changed candidate after the callback ran; true when it stands. */
119
+
120
+ /** Store the proposal, arm the deadline and enter awaiting-response. */
121
+
122
+ /**
123
+ * Compute, permit and publish the candidate for `session.target`. The
124
+ * subclass has already stored the target and its sequence on the session.
125
+ */
126
+ calculateCandidate(session, final) {
127
+ const seq = session.seq;
128
+ const committed = this.lastValidValue;
129
+ const target = session.target;
130
+ if (!target || !committed) {
131
+ if (final) this.cancelWith('outside-zones');else this.showFailure(committed, 'outside-zones', false);
132
+ return;
133
+ }
134
+ const rejected = this.precheck(session, target);
135
+ if (rejected !== null) {
136
+ session.path.reset();
137
+ if (final) this.cancelWith('invalid-target', undefined, rejected);else this.showFailure(committed, rejected, false);
138
+ return;
139
+ }
140
+ const from = this.location(committed, session.itemId);
141
+ // Previews accumulate only inside the source zone: ordered targets are
142
+ // path-independent, and other zones keep computing from the committed
143
+ // value, so a cross-zone exchange stays impossible.
144
+ const accumulates = from !== null && this.isSpatial(target) && target.zoneId === session.sourceZoneId;
145
+ let baseline;
146
+ if (accumulates) baseline = session.path.resolve(committed, from, target);else {
147
+ session.path.reset();
148
+ baseline = {
149
+ kind: 'compute',
150
+ base: committed,
151
+ cumulative: false
152
+ };
153
+ }
154
+ const result = baseline.kind === 'restored' ? {
155
+ status: 'ok',
156
+ value: baseline.step.value,
157
+ from: baseline.step.from,
158
+ to: baseline.step.to,
159
+ changed: true
160
+ } : this.compute(session, target, baseline, committed, from);
161
+ if (result.status !== 'ok') {
162
+ const failure = candidateFailure(result.status);
163
+ if (final) this.cancelWith(failure);else {
164
+ const keepPreview = this.keepsPreview(session, target, result.status);
165
+ if (!keepPreview) session.path.reset();
166
+ this.showFailure(committed, failure, keepPreview);
167
+ }
168
+ return;
169
+ }
170
+ const proposal = this.prepareProposal(session, result);
171
+ let decision;
172
+ try {
173
+ decision = this.timed(session, 'policy', () => this.askPolicy(session, committed, proposal, result), chosen => chosen.allowed ? 'allowed' : 'rejected');
174
+ } catch (error) {
175
+ this.policyFailed(session, seq, error);
176
+ return;
177
+ }
178
+ // A consumer callback may have synchronously changed or disposed the input.
179
+ if (this.session !== session || this.sessionEnded(session) || session.seq !== seq || this.snapshot.phase !== this.expectedPhase(final)) return;
180
+ if (!decision.allowed) {
181
+ if (final) this.cancelWith('policy-rejected', undefined, decision.reason);else {
182
+ session.path.reset();
183
+ this.showFailure(committed, 'policy-rejected', false);
184
+ }
185
+ return;
186
+ }
187
+ if (result.changed && !this.revalidate(session, committed, proposal, result)) {
188
+ if (final) this.cancelWith('invalid-target');else {
189
+ session.path.reset();
190
+ this.showFailure(committed, 'invalid-target', false);
191
+ }
192
+ return;
193
+ }
194
+ this.showCandidate(result);
195
+ if (baseline.kind === 'compute') {
196
+ if (accumulates && result.changed) session.path.push(committed, {
197
+ target,
198
+ from,
199
+ to: result.to,
200
+ value: result.value
201
+ });else session.path.reset();
202
+ }
203
+ if (!final) return;
204
+ if (!result.changed) {
205
+ this.finishUnchanged(session);
206
+ return;
207
+ }
208
+ this.registerProposal(session, proposal, result);
209
+ try {
210
+ this.emitChange(proposal, result);
211
+ } catch (error) {
212
+ this.changeFailed(session, error);
213
+ }
214
+ }
215
+ }
216
+
217
+ /** Shape-check a permission callback result; the caller reports a throw. */
218
+ export function validatedDecision(decision) {
219
+ if (typeof decision !== 'object' || decision === null || typeof decision.allowed !== 'boolean') throw new TypeError('canDrop must return an allowed boolean decision.');
220
+ return decision;
221
+ }
222
+ //# sourceMappingURL=sessionCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["diagnosticNow","emitDiagnostic","CoordinatorBase","candidateFailure","status","SessionCore","session","disposed","flushingDiagnostics","constructor","initial","lastValidValue","queueDiagnostic","observer","event","diagnosticEvents","push","batchFinished","flushDiagnostics","pending","undefined","lifecycle","name","diagnosticObserver","type","timestampMs","sessionId","timed","run","attempts","startedAt","result","count","durationMs","itemId","sourceZoneId","acceptsRequest","seq","final","snapshot","phase","Number","isSafeInteger","calculateCandidate","committed","target","cancelWith","showFailure","rejected","precheck","path","reset","from","location","accumulates","isSpatial","zoneId","baseline","resolve","kind","base","cumulative","value","step","to","changed","compute","failure","keepPreview","keepsPreview","proposal","prepareProposal","decision","askPolicy","chosen","allowed","error","policyFailed","sessionEnded","expectedPhase","reason","revalidate","showCandidate","finishUnchanged","registerProposal","emitChange","changeFailed","validatedDecision","TypeError"],"sourceRoot":"../../../src","sources":["controller/sessionCore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import { createDndStateStore } from "./dndState.js";
4
+ import { useStoreState } from "./useStoreState.js";
5
+ /** Own normalized state and synchronously acknowledge proposals; initialValue is read once. */
6
+ export function useDndState(initialValue) {
7
+ return useStoreState(() => createDndStateStore(typeof initialValue === 'function' ? initialValue() : initialValue));
8
+ }
9
+ //# sourceMappingURL=useDndState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createDndStateStore","useStoreState","useDndState","initialValue"],"sourceRoot":"../../../src","sources":["controller/useDndState.ts"],"mappings":";;AAEA,SACEA,mBAAmB,QAGd,eAAY;AACnB,SAASC,aAAa,QAAQ,oBAAiB;AAS/C;AACA,OAAO,SAASC,WAAWA,CACzBC,YAAqD,EACxC;EACb,OAAOF,aAAa,CAAC,MACnBD,mBAAmB,CACjB,OAAOG,YAAY,KAAK,UAAU,GAAGA,YAAY,CAAC,CAAC,GAAGA,YACxD,CACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import { createGridStateStore } from "./gridState.js";
4
+ import { useStoreState } from "./useStoreState.js";
5
+ /** Own grid state and acknowledge proposals synchronously; initialValue is read once. */
6
+ export function useGridState(initialValue) {
7
+ return useStoreState(() => createGridStateStore(typeof initialValue === 'function' ? initialValue() : initialValue));
8
+ }
9
+ //# sourceMappingURL=useGridState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createGridStateStore","useStoreState","useGridState","initialValue"],"sourceRoot":"../../../src","sources":["controller/useGridState.ts"],"mappings":";;AAEA,SAASA,oBAAoB,QAA6B,gBAAa;AACvE,SAASC,aAAa,QAAQ,oBAAiB;AAS/C;AACA,OAAO,SAASC,YAAYA,CAC1BC,YAAiD,EACnC;EACd,OAAOF,aAAa,CAAC,MACnBD,oBAAoB,CAClB,OAAOG,YAAY,KAAK,UAAU,GAAGA,YAAY,CAAC,CAAC,GAAGA,YACxD,CACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import { useState, useSyncExternalStore } from 'react';
4
+ /** Own one approval store for the component's lifetime and subscribe to it. */
5
+ export function useStoreState(create) {
6
+ const [store] = useState(create);
7
+ const value = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
8
+ return {
9
+ value,
10
+ onChange: store.onChange,
11
+ setValue: store.setValue,
12
+ respond: store.respond
13
+ };
14
+ }
15
+ //# sourceMappingURL=useStoreState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useSyncExternalStore","useStoreState","create","store","value","subscribe","getSnapshot","onChange","setValue","respond"],"sourceRoot":"../../../src","sources":["controller/useStoreState.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,oBAAoB,QAAQ,OAAO;AAUtD;AACA,OAAO,SAASC,aAAaA,CAC3BC,MAA4D,EACgB;EAC5E,MAAM,CAACC,KAAK,CAAC,GAAGJ,QAAQ,CAACG,MAAM,CAAC;EAChC,MAAME,KAAK,GAAGJ,oBAAoB,CAChCG,KAAK,CAACE,SAAS,EACfF,KAAK,CAACG,WAAW,EACjBH,KAAK,CAACG,WACR,CAAC;EACD,OAAO;IACLF,KAAK;IACLG,QAAQ,EAAEJ,KAAK,CAACI,QAAQ;IACxBC,QAAQ,EAAEL,KAAK,CAACK,QAAQ;IACxBC,OAAO,EAAEN,KAAK,CAACM;EACjB,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ /** Maximum search steps per grid calculation; exhaustion is not proof of no space. */
4
+ export const DEFAULT_SEARCH_BUDGET = 10_000;
5
+ /** Long press duration in milliseconds. */
6
+ export const DEFAULT_ACTIVATION_DELAY_MS = 250;
7
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_SEARCH_BUDGET","DEFAULT_ACTIVATION_DELAY_MS"],"sourceRoot":"../../src","sources":["defaults.ts"],"mappings":";;AAAA;AACA,OAAO,MAAMA,qBAAqB,GAAG,MAAM;AAC3C;AACA,OAAO,MAAMC,2BAA2B,GAAG,GAAG","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ export function diagnosticNow() {
4
+ // RN provides this JS monotonic clock; ambient native declarations omit it.
5
+ return globalThis.performance.now();
6
+ }
7
+
8
+ /** Observers receive newly-created scalar payloads and cannot fail a drag. */
9
+ export function emitDiagnostic(observer, event) {
10
+ try {
11
+ observer(event);
12
+ } catch {
13
+ // Diagnostics must not alter placement, response or cleanup behavior.
14
+ }
15
+ }
16
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["diagnosticNow","globalThis","performance","now","emitDiagnostic","observer","event"],"sourceRoot":"../../src","sources":["diagnostics.ts"],"mappings":";;AAKA,OAAO,SAASA,aAAaA,CAAA,EAAW;EACtC;EACA,OACEC,UAAU,CACVC,WAAW,CAACC,GAAG,CAAC,CAAC;AACrB;;AAEA;AACA,OAAO,SAASC,cAAcA,CAC5BC,QAA4B,EAC5BC,KAA0B,EACpB;EACN,IAAI;IACFD,QAAQ,CAACC,KAAK,CAAC;EACjB,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ export function samePlacement(first, second) {
4
+ return first.itemId === second.itemId && first.position.row === second.position.row && first.position.col === second.position.col && first.span.rows === second.span.rows && first.span.cols === second.span.cols && first.placement === second.placement;
5
+ }
6
+
7
+ /** Slot grid of an ordered zone: reading-order cells of one item span. */
8
+
9
+ export function orderedSlots(zone, itemSpan) {
10
+ return {
11
+ perRow: Math.floor(zone.columns / itemSpan.cols),
12
+ rows: Math.floor(zone.rows / itemSpan.rows)
13
+ };
14
+ }
15
+
16
+ /** The cell an ordered slot starts at; the caller guarantees `perRow > 0`. */
17
+ export function slotPosition(index, itemSpan, perRow) {
18
+ return {
19
+ row: Math.floor(index / perRow) * itemSpan.rows,
20
+ col: index % perRow * itemSpan.cols
21
+ };
22
+ }
23
+
24
+ /** The reading-order slot a position starts, or null when it is not a slot origin. */
25
+ export function slotIndex(position, itemSpan, perRow) {
26
+ if (perRow <= 0 || position.row < 0 || position.col < 0 || position.row % itemSpan.rows !== 0 || position.col % itemSpan.cols !== 0) return null;
27
+ const col = position.col / itemSpan.cols;
28
+ if (col >= perRow) return null;
29
+ return position.row / itemSpan.rows * perRow + col;
30
+ }
31
+
32
+ /**
33
+ * Give ordered placements their reading-order positions, reusing an existing
34
+ * placement object whenever the item keeps the same slot.
35
+ */
36
+ export function packOrderedPlacements(placements, itemSpan, perRow, previous = []) {
37
+ const existing = new Map(previous.map(item => [item.itemId, item]));
38
+ return placements.map((placement, index) => {
39
+ const packed = {
40
+ itemId: placement.itemId,
41
+ position: slotPosition(index, itemSpan, perRow),
42
+ span: {
43
+ rows: itemSpan.rows,
44
+ cols: itemSpan.cols
45
+ },
46
+ ...(placement.placement === undefined ? {} : {
47
+ placement: placement.placement
48
+ })
49
+ };
50
+ const before = existing.get(placement.itemId);
51
+ return before && samePlacement(before, packed) ? before : packed;
52
+ });
53
+ }
54
+ //# sourceMappingURL=gridPlacements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["samePlacement","first","second","itemId","position","row","col","span","rows","cols","placement","orderedSlots","zone","itemSpan","perRow","Math","floor","columns","slotPosition","index","slotIndex","packOrderedPlacements","placements","previous","existing","Map","map","item","packed","undefined","before","get"],"sourceRoot":"../../../src","sources":["engine/gridPlacements.ts"],"mappings":";;AAGA,OAAO,SAASA,aAAaA,CAC3BC,KAAoB,EACpBC,MAAqB,EACZ;EACT,OACED,KAAK,CAACE,MAAM,KAAKD,MAAM,CAACC,MAAM,IAC9BF,KAAK,CAACG,QAAQ,CAACC,GAAG,KAAKH,MAAM,CAACE,QAAQ,CAACC,GAAG,IAC1CJ,KAAK,CAACG,QAAQ,CAACE,GAAG,KAAKJ,MAAM,CAACE,QAAQ,CAACE,GAAG,IAC1CL,KAAK,CAACM,IAAI,CAACC,IAAI,KAAKN,MAAM,CAACK,IAAI,CAACC,IAAI,IACpCP,KAAK,CAACM,IAAI,CAACE,IAAI,KAAKP,MAAM,CAACK,IAAI,CAACE,IAAI,IACpCR,KAAK,CAACS,SAAS,KAAKR,MAAM,CAACQ,SAAS;AAExC;;AAEA;;AAGA,OAAO,SAASC,YAAYA,CAC1BC,IAAuC,EACvCC,QAAkB,EACJ;EACd,OAAO;IACLC,MAAM,EAAEC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAACK,OAAO,GAAGJ,QAAQ,CAACJ,IAAI,CAAC;IAChDD,IAAI,EAAEO,IAAI,CAACC,KAAK,CAACJ,IAAI,CAACJ,IAAI,GAAGK,QAAQ,CAACL,IAAI;EAC5C,CAAC;AACH;;AAEA;AACA,OAAO,SAASU,YAAYA,CAC1BC,KAAa,EACbN,QAAkB,EAClBC,MAAc,EACA;EACd,OAAO;IACLT,GAAG,EAAEU,IAAI,CAACC,KAAK,CAACG,KAAK,GAAGL,MAAM,CAAC,GAAGD,QAAQ,CAACL,IAAI;IAC/CF,GAAG,EAAGa,KAAK,GAAGL,MAAM,GAAID,QAAQ,CAACJ;EACnC,CAAC;AACH;;AAEA;AACA,OAAO,SAASW,SAASA,CACvBhB,QAAsB,EACtBS,QAAkB,EAClBC,MAAc,EACC;EACf,IACEA,MAAM,IAAI,CAAC,IACXV,QAAQ,CAACC,GAAG,GAAG,CAAC,IAChBD,QAAQ,CAACE,GAAG,GAAG,CAAC,IAChBF,QAAQ,CAACC,GAAG,GAAGQ,QAAQ,CAACL,IAAI,KAAK,CAAC,IAClCJ,QAAQ,CAACE,GAAG,GAAGO,QAAQ,CAACJ,IAAI,KAAK,CAAC,EAElC,OAAO,IAAI;EACb,MAAMH,GAAG,GAAGF,QAAQ,CAACE,GAAG,GAAGO,QAAQ,CAACJ,IAAI;EACxC,IAAIH,GAAG,IAAIQ,MAAM,EAAE,OAAO,IAAI;EAC9B,OAAQV,QAAQ,CAACC,GAAG,GAAGQ,QAAQ,CAACL,IAAI,GAAIM,MAAM,GAAGR,GAAG;AACtD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASe,qBAAqBA,CACnCC,UAAoC,EACpCT,QAAkB,EAClBC,MAAc,EACdS,QAAkC,GAAG,EAAE,EACtB;EACjB,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACF,QAAQ,CAACG,GAAG,CAACC,IAAI,IAAI,CAACA,IAAI,CAACxB,MAAM,EAAEwB,IAAI,CAAC,CAAC,CAAC;EACnE,OAAOL,UAAU,CAACI,GAAG,CAAC,CAAChB,SAAS,EAAES,KAAK,KAAK;IAC1C,MAAMS,MAAqB,GAAG;MAC5BzB,MAAM,EAAEO,SAAS,CAACP,MAAM;MACxBC,QAAQ,EAAEc,YAAY,CAACC,KAAK,EAAEN,QAAQ,EAAEC,MAAM,CAAC;MAC/CP,IAAI,EAAE;QAAEC,IAAI,EAAEK,QAAQ,CAACL,IAAI;QAAEC,IAAI,EAAEI,QAAQ,CAACJ;MAAK,CAAC;MAClD,IAAIC,SAAS,CAACA,SAAS,KAAKmB,SAAS,GACjC,CAAC,CAAC,GACF;QAAEnB,SAAS,EAAEA,SAAS,CAACA;MAAU,CAAC;IACxC,CAAC;IACD,MAAMoB,MAAM,GAAGN,QAAQ,CAACO,GAAG,CAACrB,SAAS,CAACP,MAAM,CAAC;IAC7C,OAAO2B,MAAM,IAAI9B,aAAa,CAAC8B,MAAM,EAAEF,MAAM,CAAC,GAAGE,MAAM,GAAGF,MAAM;EAClE,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ export { computeZoneLayout } from "./layout.js";
4
+ export { resolveListVirtualization } from "../adapters/virtualizedList.js";
5
+ export { computeListLayout, computeListIndex, ListSizeCache } from "./list.js";
6
+ export { computeLayoutMove } from "./layoutMove.js";
7
+ export { createDndStateStore, respondToDndProposal } from "../controller/dndState.js";
8
+ export { computeAutoScroll, constrainDragPoint, validateAutoScrollOptions } from "../adapters/scroll.js";
9
+ export { validateLayoutState, fromGridValue, toGridValue } from "./layoutState.js";
10
+ export { screenToContent, contentToScreen, screenRectToContent, contentRectToScreen, validateRectMeasurement } from "../adapters/coordinates.js";
11
+ export { DEFAULT_SEARCH_BUDGET } from "../defaults.js";
12
+ export { createGridStateStore, respondToGridProposal } from "../controller/gridState.js";
13
+ export { computeMove } from "./move.js";
14
+ export { DEFAULT_GRID_MOVEMENT_POLICY, HOME_GRID_MOVEMENT_POLICY, resolveGridMovementPolicy, validateGridMovementPolicy } from "./movementPolicy.js";
15
+ export { computeOrderedIndex } from "./orderedTarget.js";
16
+ export { packItems } from "./pack.js";
17
+ export { hasSameLayout } from "./sameLayout.js";
18
+ export { validateValue } from "./validation.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["computeZoneLayout","resolveListVirtualization","computeListLayout","computeListIndex","ListSizeCache","computeLayoutMove","createDndStateStore","respondToDndProposal","computeAutoScroll","constrainDragPoint","validateAutoScrollOptions","validateLayoutState","fromGridValue","toGridValue","screenToContent","contentToScreen","screenRectToContent","contentRectToScreen","validateRectMeasurement","DEFAULT_SEARCH_BUDGET","createGridStateStore","respondToGridProposal","computeMove","DEFAULT_GRID_MOVEMENT_POLICY","HOME_GRID_MOVEMENT_POLICY","resolveGridMovementPolicy","validateGridMovementPolicy","computeOrderedIndex","packItems","hasSameLayout","validateValue"],"sourceRoot":"../../../src","sources":["engine/index.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,aAAU;AAC5C,SAASC,yBAAyB,QAAQ,gCAA6B;AAKvE,SAASC,iBAAiB,EAAEC,gBAAgB,EAAEC,aAAa,QAAQ,WAAQ;AAQ3E,SAASC,iBAAiB,QAAQ,iBAAc;AAMhD,SACEC,mBAAmB,EACnBC,oBAAoB,QACf,2BAAwB;AAQ/B,SACEC,iBAAiB,EACjBC,kBAAkB,EAClBC,yBAAyB,QACpB,uBAAoB;AAS3B,SAASC,mBAAmB,EAAEC,aAAa,EAAEC,WAAW,QAAQ,kBAAe;AAC/E,SACEC,eAAe,EACfC,eAAe,EACfC,mBAAmB,EACnBC,mBAAmB,EACnBC,uBAAuB,QAClB,4BAAyB;AAChC,SAASC,qBAAqB,QAAQ,gBAAa;AACnD,SACEC,oBAAoB,EACpBC,qBAAqB,QAChB,4BAAyB;AAOhC,SAASC,WAAW,QAAQ,WAAQ;AACpC,SACEC,4BAA4B,EAC5BC,yBAAyB,EACzBC,yBAAyB,EACzBC,0BAA0B,QACrB,qBAAkB;AAOzB,SAASC,mBAAmB,QAAQ,oBAAiB;AACrD,SAASC,SAAS,QAAQ,WAAQ;AAClC,SAASC,aAAa,QAAQ,iBAAc;AAC5C,SAASC,aAAa,QAAQ,iBAAc","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import { validateZone } from "./validation.js";
4
+
5
+ /** Compute cell positions only. This never packs or changes the supplied zone. */
6
+ export function computeZoneLayout(zone) {
7
+ const validation = validateZone(zone);
8
+ if (!validation.valid) {
9
+ return validation;
10
+ }
11
+ if (zone.strategy === 'spatial') {
12
+ return {
13
+ valid: true,
14
+ items: zone.items.slice()
15
+ };
16
+ }
17
+ // A valid empty zone can have zero slots; avoid any division in that case.
18
+ if (zone.items.length === 0) {
19
+ return {
20
+ valid: true,
21
+ items: []
22
+ };
23
+ }
24
+ const slotsPerRow = Math.floor(zone.columns / zone.itemSpan.cols);
25
+ return {
26
+ valid: true,
27
+ items: zone.items.map((item, index) => ({
28
+ ...item,
29
+ position: {
30
+ row: Math.floor(index / slotsPerRow) * zone.itemSpan.rows,
31
+ col: index % slotsPerRow * zone.itemSpan.cols
32
+ }
33
+ }))
34
+ };
35
+ }
36
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["validateZone","computeZoneLayout","zone","validation","valid","strategy","items","slice","length","slotsPerRow","Math","floor","columns","itemSpan","cols","map","item","index","position","row","rows","col"],"sourceRoot":"../../../src","sources":["engine/layout.ts"],"mappings":";;AAEA,SAASA,YAAY,QAAQ,iBAAc;;AAE3C;AACA,OAAO,SAASC,iBAAiBA,CAAIC,IAAiB,EAAuB;EAC3E,MAAMC,UAAU,GAAGH,YAAY,CAACE,IAAI,CAAC;EACrC,IAAI,CAACC,UAAU,CAACC,KAAK,EAAE;IACrB,OAAOD,UAAU;EACnB;EACA,IAAID,IAAI,CAACG,QAAQ,KAAK,SAAS,EAAE;IAC/B,OAAO;MAAED,KAAK,EAAE,IAAI;MAAEE,KAAK,EAAEJ,IAAI,CAACI,KAAK,CAACC,KAAK,CAAC;IAAE,CAAC;EACnD;EACA;EACA,IAAIL,IAAI,CAACI,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO;MAAEJ,KAAK,EAAE,IAAI;MAAEE,KAAK,EAAE;IAAG,CAAC;EACnC;EACA,MAAMG,WAAW,GAAGC,IAAI,CAACC,KAAK,CAACT,IAAI,CAACU,OAAO,GAAGV,IAAI,CAACW,QAAQ,CAACC,IAAI,CAAC;EACjE,OAAO;IACLV,KAAK,EAAE,IAAI;IACXE,KAAK,EAAEJ,IAAI,CAACI,KAAK,CAACS,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,MAAM;MACtC,GAAGD,IAAI;MACPE,QAAQ,EAAE;QACRC,GAAG,EAAET,IAAI,CAACC,KAAK,CAACM,KAAK,GAAGR,WAAW,CAAC,GAAGP,IAAI,CAACW,QAAQ,CAACO,IAAI;QACzDC,GAAG,EAAGJ,KAAK,GAAGR,WAAW,GAAIP,IAAI,CAACW,QAAQ,CAACC;MAC7C;IACF,CAAC,CAAC;EACJ,CAAC;AACH","ignoreList":[]}