react-native-drax 0.11.0-alpha.2 → 1.1.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 (246) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +390 -227
  3. package/lib/module/DebugOverlay.js +121 -0
  4. package/lib/module/DebugOverlay.js.map +1 -0
  5. package/lib/module/Drax.js +36 -0
  6. package/lib/module/Drax.js.map +1 -0
  7. package/lib/module/DraxContext.js +6 -0
  8. package/lib/module/DraxContext.js.map +1 -0
  9. package/lib/module/DraxHandle.js +47 -0
  10. package/lib/module/DraxHandle.js.map +1 -0
  11. package/lib/module/DraxHandleContext.js +11 -0
  12. package/lib/module/DraxHandleContext.js.map +1 -0
  13. package/lib/module/DraxList.js +108 -0
  14. package/lib/module/DraxList.js.map +1 -0
  15. package/lib/module/DraxProvider.js +203 -0
  16. package/lib/module/DraxProvider.js.map +1 -0
  17. package/lib/module/DraxScrollView.js +167 -0
  18. package/lib/module/DraxScrollView.js.map +1 -0
  19. package/lib/module/DraxSubprovider.js +21 -0
  20. package/lib/module/DraxSubprovider.js.map +1 -0
  21. package/lib/module/DraxView.js +348 -0
  22. package/lib/module/DraxView.js.map +1 -0
  23. package/lib/module/HoverLayer.js +152 -0
  24. package/lib/module/HoverLayer.js.map +1 -0
  25. package/lib/module/SortableBoardContainer.js +386 -0
  26. package/lib/module/SortableBoardContainer.js.map +1 -0
  27. package/lib/module/SortableBoardContext.js +6 -0
  28. package/lib/module/SortableBoardContext.js.map +1 -0
  29. package/lib/module/SortableContainer.js +571 -0
  30. package/lib/module/SortableContainer.js.map +1 -0
  31. package/lib/module/SortableItem.js +226 -0
  32. package/lib/module/SortableItem.js.map +1 -0
  33. package/lib/module/SortableItemContext.js +38 -0
  34. package/lib/module/SortableItemContext.js.map +1 -0
  35. package/lib/module/compat/detectVersion.js +19 -0
  36. package/lib/module/compat/detectVersion.js.map +1 -0
  37. package/lib/module/compat/index.js +5 -0
  38. package/lib/module/compat/index.js.map +1 -0
  39. package/lib/module/compat/types.js +4 -0
  40. package/lib/module/compat/types.js.map +1 -0
  41. package/lib/module/compat/useDraxPanGesture.js +94 -0
  42. package/lib/module/compat/useDraxPanGesture.js.map +1 -0
  43. package/lib/module/hooks/index.js +5 -0
  44. package/lib/module/hooks/index.js.map +1 -0
  45. package/lib/module/hooks/useCallbackDispatch.js +688 -0
  46. package/lib/module/hooks/useCallbackDispatch.js.map +1 -0
  47. package/lib/module/hooks/useDragGesture.js +240 -0
  48. package/lib/module/hooks/useDragGesture.js.map +1 -0
  49. package/lib/module/hooks/useDraxContext.js +12 -0
  50. package/lib/module/hooks/useDraxContext.js.map +1 -0
  51. package/lib/module/hooks/useDraxId.js +13 -0
  52. package/lib/module/hooks/useDraxId.js.map +1 -0
  53. package/lib/module/hooks/useDraxMethods.js +73 -0
  54. package/lib/module/hooks/useDraxMethods.js.map +1 -0
  55. package/lib/module/hooks/useDraxScrollHandler.js +97 -0
  56. package/lib/module/hooks/useDraxScrollHandler.js.map +1 -0
  57. package/lib/module/hooks/useSortableBoard.js +37 -0
  58. package/lib/module/hooks/useSortableBoard.js.map +1 -0
  59. package/lib/module/hooks/useSortableList.js +988 -0
  60. package/lib/module/hooks/useSortableList.js.map +1 -0
  61. package/lib/module/hooks/useSpatialIndex.js +283 -0
  62. package/lib/module/hooks/useSpatialIndex.js.map +1 -0
  63. package/lib/module/hooks/useViewStyles.js +158 -0
  64. package/lib/module/hooks/useViewStyles.js.map +1 -0
  65. package/lib/module/hooks/useWebScrollFreeze.js +52 -0
  66. package/lib/module/hooks/useWebScrollFreeze.js.map +1 -0
  67. package/lib/module/index.js +37 -0
  68. package/lib/module/index.js.map +1 -0
  69. package/lib/module/math.js +294 -0
  70. package/lib/module/math.js.map +1 -0
  71. package/lib/module/package.json +1 -0
  72. package/lib/module/params.js +88 -0
  73. package/lib/module/params.js.map +1 -0
  74. package/lib/module/types.js +215 -0
  75. package/lib/module/types.js.map +1 -0
  76. package/lib/typescript/package.json +1 -0
  77. package/lib/typescript/src/DebugOverlay.d.ts +17 -0
  78. package/lib/typescript/src/DebugOverlay.d.ts.map +1 -0
  79. package/lib/typescript/src/Drax.d.ts +28 -0
  80. package/lib/typescript/src/Drax.d.ts.map +1 -0
  81. package/lib/typescript/src/DraxContext.d.ts +3 -0
  82. package/lib/typescript/src/DraxContext.d.ts.map +1 -0
  83. package/lib/typescript/src/DraxHandle.d.ts +25 -0
  84. package/lib/typescript/src/DraxHandle.d.ts.map +1 -0
  85. package/lib/typescript/src/DraxHandleContext.d.ts +12 -0
  86. package/lib/typescript/src/DraxHandleContext.d.ts.map +1 -0
  87. package/lib/typescript/src/DraxList.d.ts +66 -0
  88. package/lib/typescript/src/DraxList.d.ts.map +1 -0
  89. package/lib/typescript/src/DraxProvider.d.ts +4 -0
  90. package/lib/typescript/src/DraxProvider.d.ts.map +1 -0
  91. package/lib/typescript/src/DraxScrollView.d.ts +7 -0
  92. package/lib/typescript/src/DraxScrollView.d.ts.map +1 -0
  93. package/lib/typescript/src/DraxSubprovider.d.ts +4 -0
  94. package/lib/typescript/src/DraxSubprovider.d.ts.map +1 -0
  95. package/lib/typescript/src/DraxView.d.ts +4 -0
  96. package/lib/typescript/src/DraxView.d.ts.map +1 -0
  97. package/lib/typescript/src/HoverLayer.d.ts +38 -0
  98. package/lib/typescript/src/HoverLayer.d.ts.map +1 -0
  99. package/lib/typescript/src/SortableBoardContainer.d.ts +11 -0
  100. package/lib/typescript/src/SortableBoardContainer.d.ts.map +1 -0
  101. package/lib/typescript/src/SortableBoardContext.d.ts +4 -0
  102. package/lib/typescript/src/SortableBoardContext.d.ts.map +1 -0
  103. package/lib/typescript/src/SortableContainer.d.ts +13 -0
  104. package/lib/typescript/src/SortableContainer.d.ts.map +1 -0
  105. package/lib/typescript/src/SortableItem.d.ts +14 -0
  106. package/lib/typescript/src/SortableItem.d.ts.map +1 -0
  107. package/lib/typescript/src/SortableItemContext.d.ts +37 -0
  108. package/lib/typescript/src/SortableItemContext.d.ts.map +1 -0
  109. package/lib/typescript/src/compat/detectVersion.d.ts +2 -0
  110. package/lib/typescript/src/compat/detectVersion.d.ts.map +1 -0
  111. package/lib/typescript/src/compat/index.d.ts +4 -0
  112. package/lib/typescript/src/compat/index.d.ts.map +1 -0
  113. package/lib/typescript/src/compat/types.d.ts +33 -0
  114. package/lib/typescript/src/compat/types.d.ts.map +1 -0
  115. package/lib/typescript/src/compat/useDraxPanGesture.d.ts +8 -0
  116. package/lib/typescript/src/compat/useDraxPanGesture.d.ts.map +1 -0
  117. package/lib/typescript/src/hooks/index.d.ts +3 -0
  118. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  119. package/lib/typescript/src/hooks/useCallbackDispatch.d.ts +40 -0
  120. package/lib/typescript/src/hooks/useCallbackDispatch.d.ts.map +1 -0
  121. package/lib/typescript/src/hooks/useDragGesture.d.ts +17 -0
  122. package/lib/typescript/src/hooks/useDragGesture.d.ts.map +1 -0
  123. package/lib/typescript/src/hooks/useDraxContext.d.ts +2 -0
  124. package/lib/typescript/src/hooks/useDraxContext.d.ts.map +1 -0
  125. package/{build → lib/typescript/src}/hooks/useDraxId.d.ts +1 -0
  126. package/lib/typescript/src/hooks/useDraxId.d.ts.map +1 -0
  127. package/lib/typescript/src/hooks/useDraxMethods.d.ts +13 -0
  128. package/lib/typescript/src/hooks/useDraxMethods.d.ts.map +1 -0
  129. package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts +27 -0
  130. package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts.map +1 -0
  131. package/lib/typescript/src/hooks/useSortableBoard.d.ts +10 -0
  132. package/lib/typescript/src/hooks/useSortableBoard.d.ts.map +1 -0
  133. package/lib/typescript/src/hooks/useSortableList.d.ts +11 -0
  134. package/lib/typescript/src/hooks/useSortableList.d.ts.map +1 -0
  135. package/lib/typescript/src/hooks/useSpatialIndex.d.ts +22 -0
  136. package/lib/typescript/src/hooks/useSpatialIndex.d.ts.map +1 -0
  137. package/lib/typescript/src/hooks/useViewStyles.d.ts +183 -0
  138. package/lib/typescript/src/hooks/useViewStyles.d.ts.map +1 -0
  139. package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts +14 -0
  140. package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts.map +1 -0
  141. package/lib/typescript/src/index.d.ts +25 -0
  142. package/lib/typescript/src/index.d.ts.map +1 -0
  143. package/lib/typescript/src/math.d.ts +76 -0
  144. package/lib/typescript/src/math.d.ts.map +1 -0
  145. package/{build → lib/typescript/src}/params.d.ts +13 -9
  146. package/lib/typescript/src/params.d.ts.map +1 -0
  147. package/lib/typescript/src/types.d.ts +756 -0
  148. package/lib/typescript/src/types.d.ts.map +1 -0
  149. package/package.json +164 -34
  150. package/src/DebugOverlay.tsx +140 -0
  151. package/src/Drax.ts +33 -0
  152. package/src/DraxContext.ts +8 -0
  153. package/src/DraxHandle.tsx +52 -0
  154. package/src/DraxHandleContext.ts +15 -0
  155. package/src/DraxList.tsx +181 -0
  156. package/src/DraxProvider.tsx +224 -0
  157. package/src/DraxScrollView.tsx +180 -0
  158. package/src/DraxSubprovider.tsx +22 -0
  159. package/src/DraxView.tsx +430 -0
  160. package/src/HoverLayer.tsx +167 -0
  161. package/src/SortableBoardContainer.tsx +439 -0
  162. package/src/SortableBoardContext.ts +6 -0
  163. package/src/SortableContainer.tsx +650 -0
  164. package/src/SortableItem.tsx +264 -0
  165. package/src/SortableItemContext.ts +46 -0
  166. package/src/compat/detectVersion.ts +17 -0
  167. package/src/compat/index.ts +7 -0
  168. package/src/compat/types.ts +35 -0
  169. package/src/compat/useDraxPanGesture.ts +112 -0
  170. package/src/hooks/index.ts +2 -0
  171. package/src/hooks/useCallbackDispatch.tsx +830 -0
  172. package/src/hooks/useDragGesture.ts +273 -0
  173. package/src/hooks/useDraxContext.ts +11 -0
  174. package/src/hooks/useDraxId.ts +11 -0
  175. package/src/hooks/useDraxMethods.ts +71 -0
  176. package/src/hooks/useDraxScrollHandler.ts +121 -0
  177. package/src/hooks/useSortableBoard.ts +44 -0
  178. package/src/hooks/useSortableList.ts +1063 -0
  179. package/src/hooks/useSpatialIndex.ts +336 -0
  180. package/src/hooks/useViewStyles.ts +180 -0
  181. package/src/hooks/useWebScrollFreeze.ts +60 -0
  182. package/src/index.ts +111 -0
  183. package/src/math.ts +333 -0
  184. package/src/params.ts +74 -0
  185. package/src/types.ts +933 -0
  186. package/.editorconfig +0 -15
  187. package/.eslintrc.js +0 -4
  188. package/.prettierrc +0 -16
  189. package/CHANGELOG.md +0 -270
  190. package/CODE-OF-CONDUCT.md +0 -85
  191. package/CONTRIBUTING.md +0 -15
  192. package/FUNDING.yml +0 -4
  193. package/build/AllHoverViews.d.ts +0 -0
  194. package/build/AllHoverViews.js +0 -30
  195. package/build/DraxContext.d.ts +0 -2
  196. package/build/DraxContext.js +0 -6
  197. package/build/DraxList.d.ts +0 -8
  198. package/build/DraxList.js +0 -512
  199. package/build/DraxListItem.d.ts +0 -7
  200. package/build/DraxListItem.js +0 -121
  201. package/build/DraxProvider.d.ts +0 -2
  202. package/build/DraxProvider.js +0 -704
  203. package/build/DraxScrollView.d.ts +0 -6
  204. package/build/DraxScrollView.js +0 -136
  205. package/build/DraxSubprovider.d.ts +0 -3
  206. package/build/DraxSubprovider.js +0 -18
  207. package/build/DraxView.d.ts +0 -8
  208. package/build/DraxView.js +0 -93
  209. package/build/HoverView.d.ts +0 -8
  210. package/build/HoverView.js +0 -40
  211. package/build/PanGestureDetector.d.ts +0 -3
  212. package/build/PanGestureDetector.js +0 -49
  213. package/build/hooks/index.d.ts +0 -4
  214. package/build/hooks/index.js +0 -11
  215. package/build/hooks/useContent.d.ts +0 -23
  216. package/build/hooks/useContent.js +0 -212
  217. package/build/hooks/useDraxContext.d.ts +0 -1
  218. package/build/hooks/useDraxContext.js +0 -13
  219. package/build/hooks/useDraxId.js +0 -13
  220. package/build/hooks/useDraxProtocol.d.ts +0 -5
  221. package/build/hooks/useDraxProtocol.js +0 -32
  222. package/build/hooks/useDraxRegistry.d.ts +0 -78
  223. package/build/hooks/useDraxRegistry.js +0 -714
  224. package/build/hooks/useDraxScrollHandler.d.ts +0 -25
  225. package/build/hooks/useDraxScrollHandler.js +0 -89
  226. package/build/hooks/useDraxState.d.ts +0 -10
  227. package/build/hooks/useDraxState.js +0 -132
  228. package/build/hooks/useMeasurements.d.ts +0 -9
  229. package/build/hooks/useMeasurements.js +0 -119
  230. package/build/hooks/useStatus.d.ts +0 -11
  231. package/build/hooks/useStatus.js +0 -96
  232. package/build/index.d.ts +0 -9
  233. package/build/index.js +0 -33
  234. package/build/math.d.ts +0 -22
  235. package/build/math.js +0 -68
  236. package/build/params.js +0 -27
  237. package/build/transform.d.ts +0 -11
  238. package/build/transform.js +0 -59
  239. package/build/types.d.ts +0 -807
  240. package/build/types.js +0 -46
  241. package/docs/concept.md +0 -79
  242. package/docs/images/color-drag-drop.gif +0 -0
  243. package/docs/images/deck-cards.gif +0 -0
  244. package/docs/images/drag-drop-events.jpg +0 -0
  245. package/docs/images/knight-moves.gif +0 -0
  246. package/docs/images/reorderable-list.gif +0 -0
@@ -0,0 +1,28 @@
1
+ import { DraxHandle } from './DraxHandle';
2
+ /**
3
+ * Namespace object for convenient access to all Drax components.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { Drax } from 'react-native-drax';
8
+ *
9
+ * <Drax.Provider>
10
+ * <Drax.View draggable>
11
+ * <Drax.Handle><GripIcon /></Drax.Handle>
12
+ * </Drax.View>
13
+ * </Drax.Provider>
14
+ * ```
15
+ */
16
+ export declare const Drax: {
17
+ readonly Handle: typeof DraxHandle;
18
+ readonly List: <T>({ component: ListComponent, ref, id, data, keyExtractor, onReorder, renderItem, reorderStrategy, longPressDelay, lockToMainAxis, animationConfig, inactiveItemStyle, itemEntering, itemExiting, itemDraxViewProps, containerDraxViewProps, containerStyle, onDragStart, onDragPositionChange, onDragEnd, style, horizontal, numColumns, ...listProps }: import("./DraxList").DraxListProps<T> & Record<string, any>) => import("react").ReactNode;
19
+ readonly Provider: ({ style, debug, onDragStart: onProviderDragStart, onDrag: onProviderDrag, onDragEnd: onProviderDragEnd, children, }: import("./types").DraxProviderProps) => import("react").ReactNode;
20
+ readonly ScrollView: (props: import("react").PropsWithChildren<import("./types").DraxScrollViewProps> & {
21
+ ref?: import("react").Ref<import("react-native").ScrollView>;
22
+ }) => import("react/jsx-runtime").JSX.Element;
23
+ readonly View: import("react").MemoExoticComponent<(props: import("./types").DraxViewProps) => import("react").ReactNode>;
24
+ readonly SortableBoardContainer: <TItem>({ board, style, children, draxViewProps, }: import("./SortableBoardContainer").SortableBoardContainerProps<TItem>) => import("react/jsx-runtime").JSX.Element;
25
+ readonly SortableContainer: ({ sortable, scrollRef, style, children, draxViewProps, renderDropIndicator, }: import("./SortableContainer").SortableContainerProps) => import("react/jsx-runtime").JSX.Element;
26
+ readonly SortableItem: ({ sortable, index, fixed, children, ...draxViewProps }: import("./SortableItem").SortableItemProps) => import("react/jsx-runtime").JSX.Element;
27
+ };
28
+ //# sourceMappingURL=Drax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drax.d.ts","sourceRoot":"","sources":["../../../src/Drax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAS1C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,IAAI;;;;;WAMf,CAAA;;;;;;CAGQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DraxContextValue } from './types';
2
+ export declare const DraxContext: import("react").Context<DraxContextValue | undefined>;
3
+ //# sourceMappingURL=DraxContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxContext.d.ts","sourceRoot":"","sources":["../../../src/DraxContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,WAAW,uDAEvB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export interface DraxHandleProps {
4
+ children: ReactNode;
5
+ style?: StyleProp<ViewStyle>;
6
+ }
7
+ /**
8
+ * Drag handle component — only touches on this area will start a drag.
9
+ *
10
+ * Must be a descendant of a `DraxView` that has `dragHandle={true}`.
11
+ * The parent DraxView provides its gesture via context; this component
12
+ * attaches it to the handle's touch area via GestureDetector.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <DraxView dragHandle style={styles.row}>
17
+ * <DraxHandle style={styles.grip}>
18
+ * <GripIcon />
19
+ * </DraxHandle>
20
+ * <Text>Item content</Text>
21
+ * </DraxView>
22
+ * ```
23
+ */
24
+ export declare function DraxHandle({ children, style }: DraxHandleProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=DraxHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxHandle.d.ts","sourceRoot":"","sources":["../../../src/DraxHandle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,2CAqB9D"}
@@ -0,0 +1,12 @@
1
+ import type { DraxPanGesture } from './compat';
2
+ export interface DraxHandleContextValue {
3
+ gesture: DraxPanGesture;
4
+ }
5
+ /**
6
+ * Context that passes the drag gesture from a DraxView (with `dragHandle` prop)
7
+ * to its descendant DraxHandle component. When a DraxView has `dragHandle={true}`,
8
+ * it does NOT wrap itself in a GestureDetector. Instead, the gesture is provided
9
+ * via this context so that DraxHandle can attach it to a smaller touch area.
10
+ */
11
+ export declare const DraxHandleContext: import("react").Context<DraxHandleContextValue | null>;
12
+ //# sourceMappingURL=DraxHandleContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxHandleContext.d.ts","sourceRoot":"","sources":["../../../src/DraxHandleContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,wDAAqD,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { ComponentType, ReactNode, Ref } from 'react';
2
+ import type { ListRenderItemInfo, StyleProp, ViewStyle } from 'react-native';
3
+ import type { EntryOrExitLayoutType } from 'react-native-reanimated';
4
+ import type { DraxViewProps, SortableAnimationConfig, SortableDragEndEvent, SortableDragPositionChangeEvent, SortableDragStartEvent, SortableReorderEvent, SortableReorderStrategy } from './types';
5
+ export interface DraxListProps<T> {
6
+ /**
7
+ * List component to render. Any component that accepts `data`, `renderItem`,
8
+ * and `keyExtractor` props (FlatList, FlashList, LegendList, etc.).
9
+ * @default FlatList
10
+ */
11
+ component?: ComponentType<any>;
12
+ ref?: Ref<any>;
13
+ /** Optional explicit DraxView id for the container */
14
+ id?: string;
15
+ data: T[];
16
+ keyExtractor: (item: T, index: number) => string;
17
+ onReorder: (event: SortableReorderEvent<T>) => void;
18
+ renderItem: (info: ListRenderItemInfo<T>) => ReactNode;
19
+ /** Reorder strategy. @default 'insert' */
20
+ reorderStrategy?: SortableReorderStrategy;
21
+ /** Long press delay before drag starts in ms. @default 250 */
22
+ longPressDelay?: number;
23
+ /** Lock item drags to the list's main axis. @default false */
24
+ lockToMainAxis?: boolean;
25
+ /** Animation config for item shift animations. @default 'default' */
26
+ animationConfig?: SortableAnimationConfig;
27
+ /** Style applied to all non-dragged items while a drag is active.
28
+ * Use for dimming/scaling inactive items (e.g., `{ opacity: 0.5 }`). */
29
+ inactiveItemStyle?: ViewStyle;
30
+ /** Reanimated layout animation for items entering the list (e.g., `FadeIn`). */
31
+ itemEntering?: EntryOrExitLayoutType;
32
+ /** Reanimated layout animation for items exiting the list (e.g., `FadeOut`). */
33
+ itemExiting?: EntryOrExitLayoutType;
34
+ /** DraxView props to apply to each item */
35
+ itemDraxViewProps?: Partial<DraxViewProps>;
36
+ /** DraxView props for the container */
37
+ containerDraxViewProps?: Partial<DraxViewProps>;
38
+ /** Style for the container */
39
+ containerStyle?: StyleProp<ViewStyle>;
40
+ /** Style for the list component */
41
+ style?: StyleProp<ViewStyle>;
42
+ /** Horizontal list layout. @default false */
43
+ horizontal?: boolean;
44
+ /** Number of columns (grid layout). @default 1 */
45
+ numColumns?: number;
46
+ /** Callback when drag starts */
47
+ onDragStart?: (event: SortableDragStartEvent<T>) => void;
48
+ /** Callback when drag position changes */
49
+ onDragPositionChange?: (event: SortableDragPositionChangeEvent<T>) => void;
50
+ /** Callback when drag ends */
51
+ onDragEnd?: (event: SortableDragEndEvent<T>) => void;
52
+ }
53
+ /**
54
+ * List-agnostic sortable list component.
55
+ *
56
+ * Wraps any list component (FlatList, FlashList, LegendList, etc.) with
57
+ * drag-and-drop reordering powered by `useSortableList` + `SortableContainer` + `SortableItem`.
58
+ *
59
+ * For full control, use the composable API directly:
60
+ * `useSortableList` + `SortableContainer` + `SortableItem`.
61
+ *
62
+ * Any extra props beyond the ones defined in `DraxListProps` are forwarded
63
+ * to the underlying list component (e.g. `estimatedItemSize` for FlashList).
64
+ */
65
+ export declare const DraxList: <T>({ component: ListComponent, ref, id, data, keyExtractor, onReorder, renderItem, reorderStrategy, longPressDelay, lockToMainAxis, animationConfig, inactiveItemStyle, itemEntering, itemExiting, itemDraxViewProps, containerDraxViewProps, containerStyle, onDragStart, onDragPositionChange, onDragEnd, style, horizontal, numColumns, ...listProps }: DraxListProps<T> & Record<string, any>) => ReactNode;
66
+ //# sourceMappingURL=DraxList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxList.d.ts","sourceRoot":"","sources":["../../../src/DraxList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EAEV,kBAAkB,EAClB,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,sDAAsD;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,SAAS,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACvD,0CAA0C;IAC1C,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C;6EACyE;IACzE,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,gFAAgF;IAChF,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,gFAAgF;IAChF,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,uCAAuC;IACvC,sBAAsB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,8BAA8B;IAC9B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzD,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3E,8BAA8B;IAC9B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAG,wVAyB1B,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,SAuE3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { DraxProviderProps } from './types';
3
+ export declare const DraxProvider: ({ style, debug, onDragStart: onProviderDragStart, onDrag: onProviderDrag, onDragEnd: onProviderDragEnd, children, }: DraxProviderProps) => ReactNode;
4
+ //# sourceMappingURL=DraxProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxProvider.d.ts","sourceRoot":"","sources":["../../../src/DraxProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAYlD,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,YAAY,GAAI,qHAO1B,iBAAiB,KAAG,SA+LtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PropsWithChildren, Ref } from 'react';
2
+ import { ScrollView } from 'react-native';
3
+ import type { DraxScrollViewProps } from './types';
4
+ export declare const DraxScrollView: (props: PropsWithChildren<DraxScrollViewProps> & {
5
+ ref?: Ref<ScrollView>;
6
+ }) => import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=DraxScrollView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxScrollView.d.ts","sourceRoot":"","sources":["../../../src/DraxScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1C,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,cAAc,GACzB,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;CAAE,4CA4J1E,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import type { DraxSubproviderProps } from './types';
3
+ export declare const DraxSubprovider: ({ parent, children, }: PropsWithChildren<DraxSubproviderProps>) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=DraxSubprovider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxSubprovider.d.ts","sourceRoot":"","sources":["../../../src/DraxSubprovider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAK/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,eAAO,MAAM,eAAe,GAAI,uBAG7B,iBAAiB,CAAC,oBAAoB,CAAC,4CAWzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { DraxViewProps } from './types';
3
+ export declare const DraxView: import("react").MemoExoticComponent<(props: DraxViewProps) => ReactNode>;
4
+ //# sourceMappingURL=DraxView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraxView.d.ts","sourceRoot":"","sources":["../../../src/DraxView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAC;AAcrD,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,SAAS,CAAC;AAqHjB,eAAO,MAAM,QAAQ,8CAAgB,aAAa,KAAG,SAAS,CAqS5D,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { ReactNode, RefObject } from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ import type { SharedValue } from 'react-native-reanimated';
4
+ import type { DragPhase, Position } from './types';
5
+ /** Flattened hover styles for the currently dragged view */
6
+ export interface FlattenedHoverStyles {
7
+ hoverStyle: ViewStyle | null;
8
+ hoverDraggingStyle: ViewStyle | null;
9
+ hoverDraggingWithReceiverStyle: ViewStyle | null;
10
+ hoverDraggingWithoutReceiverStyle: ViewStyle | null;
11
+ hoverDragReleasedStyle: ViewStyle | null;
12
+ }
13
+ interface HoverLayerProps {
14
+ hoverContentRef: RefObject<ReactNode>;
15
+ /** Changing this value triggers a re-render to pick up new ref content */
16
+ hoverVersion: number;
17
+ hoverPositionSV: SharedValue<Position>;
18
+ dragPhaseSV: SharedValue<DragPhase>;
19
+ receiverIdSV: SharedValue<string>;
20
+ /** Set to true after hover content is committed — SortableItem reads this for visibility */
21
+ hoverReadySV: SharedValue<boolean>;
22
+ /** Animated hover content dimensions. x=width, y=height. {0,0}=no constraint. */
23
+ hoverDimsSV: SharedValue<Position>;
24
+ /** Ref to flattened hover styles of the currently dragged view */
25
+ hoverStylesRef: RefObject<FlattenedHoverStyles | null>;
26
+ }
27
+ /**
28
+ * Single hover layer component that renders the hover content during drag.
29
+ *
30
+ * This is the ONLY component that reads hoverPositionSV (changes every frame).
31
+ * All other DraxViews read draggedIdSV/receiverIdSV/dragPhaseSV which change ~5x per drag.
32
+ *
33
+ * Content is passed via ref to avoid re-rendering the entire DraxProvider tree.
34
+ * Only this component re-renders when hover content changes (via hoverVersion).
35
+ */
36
+ export declare const HoverLayer: import("react").MemoExoticComponent<({ hoverContentRef, hoverVersion, hoverPositionSV, dragPhaseSV, receiverIdSV, hoverReadySV, hoverDimsSV, hoverStylesRef }: HoverLayerProps) => import("react/jsx-runtime").JSX.Element>;
37
+ export {};
38
+ //# sourceMappingURL=HoverLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverLayer.d.ts","sourceRoot":"","sources":["../../../src/HoverLayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnD,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,8BAA8B,EAAE,SAAS,GAAG,IAAI,CAAC;IACjD,iCAAiC,EAAE,SAAS,GAAG,IAAI,CAAC;IACpD,sBAAsB,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1C;AAED,UAAU,eAAe;IACvB,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,4FAA4F;IAC5F,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,iFAAiF;IACjF,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,kEAAkE;IAClE,cAAc,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;CACxD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,iKACsG,eAAe,6CA0G3I,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { DraxViewProps, SortableBoardHandle } from './types';
4
+ export interface SortableBoardContainerProps<TItem = unknown> {
5
+ board: SortableBoardHandle<TItem>;
6
+ style?: StyleProp<ViewStyle>;
7
+ children: ReactNode;
8
+ draxViewProps?: Partial<DraxViewProps>;
9
+ }
10
+ export declare const SortableBoardContainer: <TItem>({ board, style, children, draxViewProps, }: SortableBoardContainerProps<TItem>) => import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=SortableBoardContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableBoardContainer.d.ts","sourceRoot":"","sources":["../../../src/SortableBoardContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,OAAO,KAAK,EAKV,aAAa,EAGb,mBAAmB,EAIpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,2BAA2B,CAAC,KAAK,GAAG,OAAO;IAC1D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,sBAAsB,GAAI,KAAK,EAAG,4CAK5C,2BAA2B,CAAC,KAAK,CAAC,4CAkZpC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SortableBoardContextValue } from './types';
2
+ export declare const SortableBoardContext: import("react").Context<SortableBoardContextValue | undefined>;
3
+ export declare const useSortableBoardContext: () => SortableBoardContextValue | undefined;
4
+ //# sourceMappingURL=SortableBoardContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableBoardContext.d.ts","sourceRoot":"","sources":["../../../src/SortableBoardContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,oBAAoB,gEAAkE,CAAC;AAEpG,eAAO,MAAM,uBAAuB,6CAAyC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ReactNode, RefObject } from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { DropIndicatorProps, DraxViewProps, SortableListHandle } from './types';
4
+ export interface SortableContainerProps {
5
+ sortable: SortableListHandle<any>;
6
+ scrollRef: RefObject<any>;
7
+ style?: StyleProp<ViewStyle>;
8
+ children: ReactNode;
9
+ draxViewProps?: Partial<DraxViewProps>;
10
+ renderDropIndicator?: (props: DropIndicatorProps) => ReactNode;
11
+ }
12
+ export declare const SortableContainer: ({ sortable, scrollRef, style, children, draxViewProps, renderDropIndicator, }: SortableContainerProps) => import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=SortableContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableContainer.d.ts","sourceRoot":"","sources":["../../../src/SortableContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AASzD,OAAO,KAAK,EACV,kBAAkB,EAOlB,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAwBjB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAClC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;CAChE;AAED,eAAO,MAAM,iBAAiB,GAAI,+EAO/B,sBAAsB,4CAiiBxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { DraxViewProps, SortableListHandle } from './types';
3
+ export interface SortableItemProps extends DraxViewProps {
4
+ sortable: SortableListHandle<any>;
5
+ index: number;
6
+ /** When true, this item cannot be dragged and stays in its position.
7
+ * Other items will skip over it during reorder. */
8
+ fixed?: boolean;
9
+ children: ReactNode;
10
+ }
11
+ declare const SortableItemInner: ({ sortable, index, fixed, children, ...draxViewProps }: SortableItemProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const SortableItem: typeof SortableItemInner;
13
+ export {};
14
+ //# sourceMappingURL=SortableItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableItem.d.ts","sourceRoot":"","sources":["../../../src/SortableItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAoBvC,OAAO,KAAK,EAEV,aAAa,EAGb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAsEjB,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd;wDACoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,iBAAiB,GAAI,wDAMxB,iBAAiB,4CAsJnB,CAAC;AAEF,eAAO,MAAM,YAAY,EAA8B,OAAO,iBAAiB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { SharedValue } from 'react-native-reanimated';
2
+ /** Per-item state exposed by useItemContext */
3
+ export interface SortableItemContextValue {
4
+ /** The item's key (from keyExtractor) */
5
+ itemKey: string;
6
+ /** Display index in the current sort order */
7
+ index: number;
8
+ /** SharedValue: true when this item is being dragged */
9
+ isActive: SharedValue<boolean>;
10
+ /** SharedValue: ID of the currently dragged item (empty string if none) */
11
+ activeItemId: SharedValue<string>;
12
+ }
13
+ export declare const SortableItemContext: import("react").Context<SortableItemContextValue | null>;
14
+ /**
15
+ * Access per-item state from within a SortableItem's children.
16
+ *
17
+ * Returns SharedValues for reactive animations:
18
+ * - `isActive` — true when THIS item is being dragged
19
+ * - `activeItemId` — ID of the currently dragged item
20
+ * - `itemKey` — this item's key
21
+ * - `index` — this item's display index
22
+ *
23
+ * Must be called within a `<SortableItem>`.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * function MyItem() {
28
+ * const { isActive } = useItemContext();
29
+ * const style = useAnimatedStyle(() => ({
30
+ * transform: [{ scale: isActive.value ? 1.1 : 1 }],
31
+ * }));
32
+ * return <Reanimated.View style={style}>...</Reanimated.View>;
33
+ * }
34
+ * ```
35
+ */
36
+ export declare const useItemContext: () => SortableItemContextValue;
37
+ //# sourceMappingURL=SortableItemContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableItemContext.d.ts","sourceRoot":"","sources":["../../../src/SortableItemContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,mBAAmB,0DAAuD,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,cAAc,QAAO,wBAMjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isGestureHandlerV3(): boolean;
2
+ //# sourceMappingURL=detectVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectVersion.d.ts","sourceRoot":"","sources":["../../../../src/compat/detectVersion.ts"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB,IAAI,OAAO,CAS5C"}
@@ -0,0 +1,4 @@
1
+ export { useDraxPanGesture } from './useDraxPanGesture';
2
+ export type { DraxPanEvent, DraxPanGesture, DraxPanGestureConfig, } from './types';
3
+ export { isGestureHandlerV3 } from './detectVersion';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { SharedValue } from 'react-native-reanimated';
2
+ /**
3
+ * Re-export PanGesture from RNGH — resolves to the correct type per installed version:
4
+ * - v3: SingleGesture<PanHandlerData, PanGestureInternalProperties>
5
+ * - v2: PanGesture class extending ContinousBaseGesture
6
+ */
7
+ export type { PanGesture as DraxPanGesture } from 'react-native-gesture-handler';
8
+ /** Minimal event shape — only the fields Drax uses (present in both v2 and v3). */
9
+ export interface DraxPanEvent {
10
+ x: number;
11
+ y: number;
12
+ absoluteX: number;
13
+ absoluteY: number;
14
+ }
15
+ /** Config for the version-agnostic pan gesture hook. */
16
+ export interface DraxPanGestureConfig {
17
+ enabledSV: SharedValue<boolean>;
18
+ longPressDelaySV: SharedValue<number>;
19
+ maxPointers: number;
20
+ shouldCancelWhenOutside: boolean;
21
+ /** Web: CSS touch-action for the gesture view. Set to 'pan-y' or 'pan-x'
22
+ * to allow native scrolling before the long-press activates. */
23
+ touchAction?: string;
24
+ /** Fail the gesture if finger moves more than this distance during activation.
25
+ * Prevents accidental drags when the user is trying to scroll. */
26
+ failOffsetX?: number | [number, number];
27
+ failOffsetY?: number | [number, number];
28
+ onActivate: (event: DraxPanEvent) => void;
29
+ onUpdate: (event: DraxPanEvent) => void;
30
+ onDeactivate: (event: DraxPanEvent) => void;
31
+ onFinalize: (event: DraxPanEvent, didSucceed: boolean) => void;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/compat/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,YAAY,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEjF,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC;qEACiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;uEACmE;IACnE,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE"}
@@ -0,0 +1,8 @@
1
+ import type { DraxPanGesture, DraxPanGestureConfig } from './types';
2
+ /**
3
+ * Version-agnostic pan gesture hook.
4
+ * Delegates to v3's usePanGesture (optimal) or v2's Gesture.Pan() builder (compat).
5
+ * Selected at module load time to avoid conditional hook calls.
6
+ */
7
+ export declare const useDraxPanGesture: (config: DraxPanGestureConfig) => DraxPanGesture;
8
+ //# sourceMappingURL=useDraxPanGesture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraxPanGesture.d.ts","sourceRoot":"","sources":["../../../../src/compat/useDraxPanGesture.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAiGlF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAC9B,MAAM,EAAE,oBAAoB,KACzB,cAEkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { useDraxContext } from './useDraxContext';
2
+ export { useDraxId } from './useDraxId';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { ReactNode, RefObject } from 'react';
2
+ import type { SharedValue } from 'react-native-reanimated';
3
+ import type { FlattenedHoverStyles } from '../HoverLayer';
4
+ import type { DragPhase, DraxProviderDragEvent, Position, SpatialEntry, ViewRegistryEntry } from '../types';
5
+ interface CallbackDispatchDeps {
6
+ getViewEntry: (id: string) => ViewRegistryEntry | undefined;
7
+ spatialIndexSV: SharedValue<SpatialEntry[]>;
8
+ scrollOffsetsSV: SharedValue<Position[]>;
9
+ draggedIdSV: SharedValue<string>;
10
+ receiverIdSV: SharedValue<string>;
11
+ rejectedReceiverIdSV: SharedValue<string>;
12
+ dragPhaseSV: SharedValue<DragPhase>;
13
+ hoverPositionSV: SharedValue<Position>;
14
+ grabOffsetSV: SharedValue<Position>;
15
+ startPositionSV: SharedValue<Position>;
16
+ setHoverContent: (content: ReactNode | null) => void;
17
+ hoverReadySV: SharedValue<boolean>;
18
+ hoverClearDeferredRef: {
19
+ current: boolean;
20
+ };
21
+ hoverStylesRef: RefObject<FlattenedHoverStyles | null>;
22
+ onProviderDragStart?: (event: DraxProviderDragEvent) => void;
23
+ onProviderDrag?: (event: DraxProviderDragEvent) => void;
24
+ onProviderDragEnd?: (event: DraxProviderDragEvent & {
25
+ cancelled: boolean;
26
+ }) => void;
27
+ droppedItemsRef: RefObject<Map<string, Set<string>>>;
28
+ }
29
+ /**
30
+ * Provides JS-thread callback dispatch functions that are invoked via runOnJS
31
+ * from gesture worklets. These handle ~5 calls per drag (start, receiver changes, end),
32
+ * NOT per frame.
33
+ */
34
+ export declare const useCallbackDispatch: (deps: CallbackDispatchDeps) => {
35
+ handleDragStart: (draggedId: string, absolutePosition: Position, _grabOffset: Position) => void;
36
+ handleReceiverChange: (oldReceiverId: string, newReceiverId: string, absolutePosition: Position, monitorIds?: string[]) => void;
37
+ handleDragEnd: (draggedId: string, receiverId: string, cancelled: boolean, finalMonitorIds?: string[]) => void;
38
+ };
39
+ export {};
40
+ //# sourceMappingURL=useCallbackDispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallbackDispatch.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCallbackDispatch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAM1D,OAAO,KAAK,EACV,SAAS,EAGT,qBAAqB,EAIrB,QAAQ,EACR,YAAY,EACZ,iBAAiB,EAClB,MAAM,UAAU,CAAC;AA2BlB,UAAU,oBAAoB;IAC5B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAC5D,cAAc,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,eAAe,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,qBAAqB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,cAAc,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAEvD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAEpF,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,oBAAoB;iCAqG/C,MAAM,oBACC,QAAQ,eACb,QAAQ;0CAuFN,MAAM,iBACN,MAAM,oBACH,QAAQ,eACb,MAAM,EAAE;+BAgOV,MAAM,cACL,MAAM,aACP,OAAO,oBACA,MAAM,EAAE;CA6L7B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { SharedValue } from 'react-native-reanimated';
2
+ /**
3
+ * Creates a Pan gesture for a draggable DraxView.
4
+ * Hit-testing runs entirely on the UI thread — zero runOnJS per frame
5
+ * unless the receiver changes.
6
+ *
7
+ * On RNGH v3, `enabledSV` and `longPressDelaySV` are SharedValues that
8
+ * reconfigure the native gesture handler on the UI thread — zero JS bridge.
9
+ * On RNGH v2, they are mirrored to plain values with gesture recreation on change.
10
+ */
11
+ export declare const useDragGesture: (id: string, viewSpatialIndexSV: SharedValue<number>, enabledSV: SharedValue<boolean>, longPressDelaySV: SharedValue<number>, lockDragXPosition?: boolean, lockDragYPosition?: boolean, dragBoundsSV?: SharedValue<{
12
+ x: number;
13
+ y: number;
14
+ width: number;
15
+ height: number;
16
+ } | null>, dragActivationFailOffset?: number, scrollHorizontal?: boolean) => import("react-native-gesture-handler").PanGesture;
17
+ //# sourceMappingURL=useDragGesture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDragGesture.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDragGesture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQ3D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GACzB,IAAI,MAAM,EACV,oBAAoB,WAAW,CAAC,MAAM,CAAC,EACvC,WAAW,WAAW,CAAC,OAAO,CAAC,EAC/B,kBAAkB,WAAW,CAAC,MAAM,CAAC,EACrC,oBAAoB,OAAO,EAC3B,oBAAoB,OAAO,EAC3B,eAAe,WAAW,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,EAC1F,2BAA2B,MAAM,EACjC,mBAAmB,OAAO,sDAqP3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const useDraxContext: () => import("../types").DraxContextValue;
2
+ //# sourceMappingURL=useDraxContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraxContext.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraxContext.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,2CAM1B,CAAC"}
@@ -1 +1,2 @@
1
1
  export declare const useDraxId: (explicitId?: string) => string;
2
+ //# sourceMappingURL=useDraxId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraxId.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraxId.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,GAAI,aAAa,MAAM,WAK5C,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Imperative methods for controlling and querying the Drax provider.
3
+ *
4
+ * Must be called within a `<DraxProvider>`.
5
+ */
6
+ export declare const useDraxMethods: () => {
7
+ requestPositionUpdate: () => void;
8
+ getDroppedItems: (receiverId?: string) => Map<string, Set<string>> | Set<string>;
9
+ clearDroppedItems: (receiverId?: string) => void;
10
+ isDragging: () => boolean;
11
+ getDraggedId: () => string | undefined;
12
+ };
13
+ //# sourceMappingURL=useDraxMethods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraxMethods.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraxMethods.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,cAAc;;mCAqBa,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;qCAY7C,MAAM;sBAWvB,OAAO;wBAOL,MAAM,GAAG,SAAS;CAY5C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Ref, RefObject } from 'react';
2
+ import type { NativeScrollEvent, NativeSyntheticEvent } from 'react-native';
3
+ import { FlatList, ScrollView } from 'react-native';
4
+ import type { DraxViewMeasurements, Position } from '../types';
5
+ type ScrollableComponents = FlatList<any> | ScrollView;
6
+ type DraxScrollHandlerArgs<T extends ScrollableComponents> = {
7
+ idProp?: string;
8
+ onContentSizeChangeProp?: (w: number, h: number) => void;
9
+ onScrollProp?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
10
+ externalRef?: Ref<T>;
11
+ doScroll: RefObject<() => void>;
12
+ };
13
+ export declare const useDraxScrollHandler: <T extends ScrollableComponents>({ idProp, onContentSizeChangeProp, onScrollProp, externalRef, doScroll, }: DraxScrollHandlerArgs<T>) => {
14
+ id: string;
15
+ containerMeasurementsRef: RefObject<DraxViewMeasurements | undefined>;
16
+ contentSizeRef: RefObject<Position | undefined>;
17
+ onContentSizeChange: (width: number, height: number) => void | undefined;
18
+ onMeasureContainer: (measurements: DraxViewMeasurements | undefined) => void;
19
+ onScroll: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
20
+ scrollRef: RefObject<T | null>;
21
+ scrollPosition: import("react-native-reanimated").SharedValue<Position>;
22
+ setScrollRefs: (instance: T | null) => void;
23
+ startScroll: () => void;
24
+ stopScroll: () => void;
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=useDraxScrollHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraxScrollHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDraxScrollHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI/D,KAAK,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAEvD,KAAK,qBAAqB,CAAC,CAAC,SAAS,oBAAoB,IAAI;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,oBAAoB,EAAE,2EAMlE,qBAAqB,CAAC,CAAC,CAAC;;;;iCAiBW,MAAM,UAAU,MAAM;uCAJhB,oBAAoB,GAAG,SAAS;sBASjD,oBAAoB,CAAC,iBAAiB,CAAC;;;8BAY/B,CAAC,GAAG,IAAI;;;CAwD1C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SortableBoardHandle, UseSortableBoardOptions } from '../types';
2
+ /**
3
+ * Board-level coordinator for cross-container sortable drag.
4
+ *
5
+ * Maintains a registry of columns (each with their own useSortableList)
6
+ * and tracks cross-container transfer state. The actual monitor callbacks
7
+ * are handled by SortableBoardContainer.
8
+ */
9
+ export declare const useSortableBoard: <TItem>(options: UseSortableBoardOptions<TItem>) => SortableBoardHandle<TItem>;
10
+ //# sourceMappingURL=useSortableBoard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortableBoard.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useSortableBoard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAInB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,EACpC,SAAS,uBAAuB,CAAC,KAAK,CAAC,KACtC,mBAAmB,CAAC,KAAK,CAyB3B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SortableListHandle, UseSortableListOptions } from '../types';
2
+ /**
3
+ * Core hook for list-agnostic sortable reordering.
4
+ *
5
+ * During drag, order changes are tracked in a ref (no React re-render)
6
+ * and items are visually repositioned via shift transforms (SharedValues).
7
+ * The data reorder is committed to state only on drop, while the hover
8
+ * view covers any layout transition.
9
+ */
10
+ export declare const useSortableList: <T>(options: UseSortableListOptions<T>) => SortableListHandle<T>;
11
+ //# sourceMappingURL=useSortableList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortableList.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useSortableList.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAMV,kBAAkB,EAGlB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AASlB;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,SAAS,sBAAsB,CAAC,CAAC,CAAC,KACjC,kBAAkB,CAAC,CAAC,CA6/BtB,CAAC"}