@webority/mobile-ui 0.9.1 → 0.10.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 (283) hide show
  1. package/lib/commonjs/components/BarChart/BarChart.js +1 -0
  2. package/lib/commonjs/components/BarChart/index.js +1 -0
  3. package/lib/commonjs/components/BarChart/scale.js +1 -0
  4. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  5. package/lib/commonjs/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  6. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  7. package/lib/commonjs/components/BottomSheet/index.js +1 -1
  8. package/lib/commonjs/components/BottomSheet/useSheetSwap.js +1 -0
  9. package/lib/commonjs/components/Card/Card.js +1 -1
  10. package/lib/commonjs/components/Composer/Composer.js +1 -0
  11. package/lib/commonjs/components/Composer/index.js +1 -0
  12. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -0
  13. package/lib/commonjs/components/DateSeparator/index.js +1 -0
  14. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  15. package/lib/commonjs/components/Input/Input.js +1 -1
  16. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  17. package/lib/commonjs/components/Menu/Menu.js +1 -0
  18. package/lib/commonjs/components/Menu/MenuSurface.js +1 -0
  19. package/lib/commonjs/components/Menu/focusHost.js +1 -0
  20. package/lib/commonjs/components/Menu/index.js +1 -0
  21. package/lib/commonjs/components/Menu/menuModel.js +1 -0
  22. package/lib/commonjs/components/Menu/useContextMenu.js +1 -0
  23. package/lib/commonjs/components/Menu/webOnly.js +1 -0
  24. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -0
  25. package/lib/commonjs/components/MessageBubble/index.js +1 -0
  26. package/lib/commonjs/components/MessageList/MessageList.js +1 -0
  27. package/lib/commonjs/components/MessageList/index.js +1 -0
  28. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -0
  29. package/lib/commonjs/components/OnboardingPager/index.js +1 -0
  30. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -0
  31. package/lib/commonjs/components/PaymentResult/index.js +1 -0
  32. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -0
  33. package/lib/commonjs/components/ScannerOverlay/index.js +1 -0
  34. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  35. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -0
  36. package/lib/commonjs/components/SearchBar/highlight.js +1 -0
  37. package/lib/commonjs/components/SearchBar/index.js +1 -1
  38. package/lib/commonjs/components/SearchBar/useRecentSearches.js +1 -0
  39. package/lib/commonjs/components/Select/Select.js +1 -1
  40. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -0
  41. package/lib/commonjs/components/SignaturePad/index.js +1 -0
  42. package/lib/commonjs/components/SignaturePad/signatureGeometry.js +1 -0
  43. package/lib/commonjs/components/SignaturePad/writePng.js +1 -0
  44. package/lib/commonjs/components/SignaturePad/writePng.web.js +1 -0
  45. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -0
  46. package/lib/commonjs/components/Sparkline/geometry.js +1 -0
  47. package/lib/commonjs/components/Sparkline/index.js +1 -0
  48. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  49. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  50. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  51. package/lib/commonjs/components/Toast/Toast.js +1 -1
  52. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  53. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -0
  54. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  55. package/lib/commonjs/components/Tooltip/tooltipPosition.js +1 -0
  56. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -0
  57. package/lib/commonjs/components/TypingIndicator/index.js +1 -0
  58. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -0
  59. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -0
  60. package/lib/commonjs/components/WheelPicker/index.js +1 -0
  61. package/lib/commonjs/components/index.js +1 -1
  62. package/lib/commonjs/hooks/index.js +1 -1
  63. package/lib/commonjs/hooks/useRefreshControl.js +1 -0
  64. package/lib/commonjs/hooks/useScrollDirection.js +1 -0
  65. package/lib/commonjs/index.js +1 -1
  66. package/lib/commonjs/utils/announce.js +1 -0
  67. package/lib/commonjs/utils/hapticUtils.js +1 -1
  68. package/lib/commonjs/utils/index.js +1 -1
  69. package/lib/commonjs/utils/placement.js +1 -0
  70. package/lib/module/components/BarChart/BarChart.js +1 -0
  71. package/lib/module/components/BarChart/index.js +1 -0
  72. package/lib/module/components/BarChart/scale.js +1 -0
  73. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  74. package/lib/module/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  75. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  76. package/lib/module/components/BottomSheet/index.js +1 -1
  77. package/lib/module/components/BottomSheet/useSheetSwap.js +1 -0
  78. package/lib/module/components/Card/Card.js +1 -1
  79. package/lib/module/components/Composer/Composer.js +1 -0
  80. package/lib/module/components/Composer/index.js +1 -0
  81. package/lib/module/components/DateSeparator/DateSeparator.js +1 -0
  82. package/lib/module/components/DateSeparator/index.js +1 -0
  83. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  84. package/lib/module/components/Input/Input.js +1 -1
  85. package/lib/module/components/ListItem/ListItem.js +1 -1
  86. package/lib/module/components/Menu/Menu.js +1 -0
  87. package/lib/module/components/Menu/MenuSurface.js +1 -0
  88. package/lib/module/components/Menu/focusHost.js +1 -0
  89. package/lib/module/components/Menu/index.js +1 -0
  90. package/lib/module/components/Menu/menuModel.js +1 -0
  91. package/lib/module/components/Menu/useContextMenu.js +1 -0
  92. package/lib/module/components/Menu/webOnly.js +1 -0
  93. package/lib/module/components/MessageBubble/MessageBubble.js +1 -0
  94. package/lib/module/components/MessageBubble/index.js +1 -0
  95. package/lib/module/components/MessageList/MessageList.js +1 -0
  96. package/lib/module/components/MessageList/index.js +1 -0
  97. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -0
  98. package/lib/module/components/OnboardingPager/index.js +1 -0
  99. package/lib/module/components/PaymentResult/PaymentResult.js +1 -0
  100. package/lib/module/components/PaymentResult/index.js +1 -0
  101. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -0
  102. package/lib/module/components/ScannerOverlay/index.js +1 -0
  103. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  104. package/lib/module/components/SearchBar/SearchPanel.js +1 -0
  105. package/lib/module/components/SearchBar/highlight.js +1 -0
  106. package/lib/module/components/SearchBar/index.js +1 -1
  107. package/lib/module/components/SearchBar/useRecentSearches.js +1 -0
  108. package/lib/module/components/Select/Select.js +1 -1
  109. package/lib/module/components/SignaturePad/SignaturePad.js +1 -0
  110. package/lib/module/components/SignaturePad/index.js +1 -0
  111. package/lib/module/components/SignaturePad/signatureGeometry.js +1 -0
  112. package/lib/module/components/SignaturePad/writePng.js +1 -0
  113. package/lib/module/components/SignaturePad/writePng.web.js +1 -0
  114. package/lib/module/components/Sparkline/Sparkline.js +1 -0
  115. package/lib/module/components/Sparkline/geometry.js +1 -0
  116. package/lib/module/components/Sparkline/index.js +1 -0
  117. package/lib/module/components/Spinner/Spinner.js +1 -1
  118. package/lib/module/components/StatTile/StatTile.js +1 -1
  119. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  120. package/lib/module/components/Toast/Toast.js +1 -1
  121. package/lib/module/components/Toast/ToastProvider.js +1 -1
  122. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -0
  123. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  124. package/lib/module/components/Tooltip/tooltipPosition.js +1 -0
  125. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -0
  126. package/lib/module/components/TypingIndicator/index.js +1 -0
  127. package/lib/module/components/WheelPicker/Wheel.js +1 -0
  128. package/lib/module/components/WheelPicker/WheelPicker.js +1 -0
  129. package/lib/module/components/WheelPicker/index.js +1 -0
  130. package/lib/module/components/index.js +1 -1
  131. package/lib/module/hooks/index.js +1 -1
  132. package/lib/module/hooks/useRefreshControl.js +1 -0
  133. package/lib/module/hooks/useScrollDirection.js +1 -0
  134. package/lib/module/index.js +1 -1
  135. package/lib/module/utils/announce.js +1 -0
  136. package/lib/module/utils/hapticUtils.js +1 -1
  137. package/lib/module/utils/index.js +1 -1
  138. package/lib/module/utils/placement.js +1 -0
  139. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +62 -0
  140. package/lib/typescript/commonjs/components/BarChart/index.d.ts +3 -0
  141. package/lib/typescript/commonjs/components/BarChart/scale.d.ts +15 -0
  142. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  143. package/lib/typescript/commonjs/components/BottomNavigation/index.d.ts +1 -1
  144. package/lib/typescript/commonjs/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  145. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +34 -3
  146. package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +2 -0
  147. package/lib/typescript/commonjs/components/BottomSheet/useSheetSwap.d.ts +24 -0
  148. package/lib/typescript/commonjs/components/Card/Card.d.ts +9 -0
  149. package/lib/typescript/commonjs/components/Composer/Composer.d.ts +61 -0
  150. package/lib/typescript/commonjs/components/Composer/index.d.ts +3 -0
  151. package/lib/typescript/commonjs/components/DateSeparator/DateSeparator.d.ts +37 -0
  152. package/lib/typescript/commonjs/components/DateSeparator/index.d.ts +3 -0
  153. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  154. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  155. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +9 -0
  156. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +46 -0
  157. package/lib/typescript/commonjs/components/Menu/MenuSurface.d.ts +30 -0
  158. package/lib/typescript/commonjs/components/Menu/focusHost.d.ts +9 -0
  159. package/lib/typescript/commonjs/components/Menu/index.d.ts +5 -0
  160. package/lib/typescript/commonjs/components/Menu/menuModel.d.ts +68 -0
  161. package/lib/typescript/commonjs/components/Menu/useContextMenu.d.ts +58 -0
  162. package/lib/typescript/commonjs/components/Menu/webOnly.d.ts +7 -0
  163. package/lib/typescript/commonjs/components/MessageBubble/MessageBubble.d.ts +87 -0
  164. package/lib/typescript/commonjs/components/MessageBubble/index.d.ts +3 -0
  165. package/lib/typescript/commonjs/components/MessageList/MessageList.d.ts +68 -0
  166. package/lib/typescript/commonjs/components/MessageList/index.d.ts +3 -0
  167. package/lib/typescript/commonjs/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  168. package/lib/typescript/commonjs/components/OnboardingPager/index.d.ts +3 -0
  169. package/lib/typescript/commonjs/components/PaymentResult/PaymentResult.d.ts +71 -0
  170. package/lib/typescript/commonjs/components/PaymentResult/index.d.ts +3 -0
  171. package/lib/typescript/commonjs/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  172. package/lib/typescript/commonjs/components/ScannerOverlay/index.d.ts +3 -0
  173. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +35 -0
  174. package/lib/typescript/commonjs/components/SearchBar/SearchPanel.d.ts +49 -0
  175. package/lib/typescript/commonjs/components/SearchBar/highlight.d.ts +14 -0
  176. package/lib/typescript/commonjs/components/SearchBar/index.d.ts +3 -0
  177. package/lib/typescript/commonjs/components/SearchBar/useRecentSearches.d.ts +24 -0
  178. package/lib/typescript/commonjs/components/Select/Select.d.ts +2 -1
  179. package/lib/typescript/commonjs/components/SignaturePad/SignaturePad.d.ts +94 -0
  180. package/lib/typescript/commonjs/components/SignaturePad/index.d.ts +4 -0
  181. package/lib/typescript/commonjs/components/SignaturePad/signatureGeometry.d.ts +36 -0
  182. package/lib/typescript/commonjs/components/SignaturePad/writePng.d.ts +7 -0
  183. package/lib/typescript/commonjs/components/SignaturePad/writePng.web.d.ts +3 -0
  184. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +41 -0
  185. package/lib/typescript/commonjs/components/Sparkline/geometry.d.ts +20 -0
  186. package/lib/typescript/commonjs/components/Sparkline/index.d.ts +3 -0
  187. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +7 -1
  188. package/lib/typescript/commonjs/components/StatTile/StatTile.d.ts +24 -1
  189. package/lib/typescript/commonjs/components/StatTile/index.d.ts +1 -1
  190. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +21 -0
  191. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +21 -0
  192. package/lib/typescript/commonjs/components/Toast/index.d.ts +1 -1
  193. package/lib/typescript/commonjs/components/Tooltip/RichTooltipBody.d.ts +27 -0
  194. package/lib/typescript/commonjs/components/Tooltip/Tooltip.d.ts +24 -0
  195. package/lib/typescript/commonjs/components/Tooltip/index.d.ts +1 -1
  196. package/lib/typescript/commonjs/components/Tooltip/tooltipPosition.d.ts +35 -0
  197. package/lib/typescript/commonjs/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  198. package/lib/typescript/commonjs/components/TypingIndicator/index.d.ts +3 -0
  199. package/lib/typescript/commonjs/components/WheelPicker/Wheel.d.ts +34 -0
  200. package/lib/typescript/commonjs/components/WheelPicker/WheelPicker.d.ts +73 -0
  201. package/lib/typescript/commonjs/components/WheelPicker/index.d.ts +3 -0
  202. package/lib/typescript/commonjs/components/index.d.ts +34 -8
  203. package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
  204. package/lib/typescript/commonjs/hooks/useRefreshControl.d.ts +75 -0
  205. package/lib/typescript/commonjs/hooks/useScrollDirection.d.ts +21 -0
  206. package/lib/typescript/commonjs/index.d.ts +4 -4
  207. package/lib/typescript/commonjs/utils/announce.d.ts +14 -0
  208. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +1 -1
  209. package/lib/typescript/commonjs/utils/index.d.ts +2 -0
  210. package/lib/typescript/commonjs/utils/placement.d.ts +55 -0
  211. package/lib/typescript/module/components/BarChart/BarChart.d.ts +62 -0
  212. package/lib/typescript/module/components/BarChart/index.d.ts +3 -0
  213. package/lib/typescript/module/components/BarChart/scale.d.ts +15 -0
  214. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  215. package/lib/typescript/module/components/BottomNavigation/index.d.ts +1 -1
  216. package/lib/typescript/module/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  217. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +34 -3
  218. package/lib/typescript/module/components/BottomSheet/index.d.ts +2 -0
  219. package/lib/typescript/module/components/BottomSheet/useSheetSwap.d.ts +24 -0
  220. package/lib/typescript/module/components/Card/Card.d.ts +9 -0
  221. package/lib/typescript/module/components/Composer/Composer.d.ts +61 -0
  222. package/lib/typescript/module/components/Composer/index.d.ts +3 -0
  223. package/lib/typescript/module/components/DateSeparator/DateSeparator.d.ts +37 -0
  224. package/lib/typescript/module/components/DateSeparator/index.d.ts +3 -0
  225. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  226. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  227. package/lib/typescript/module/components/ListItem/ListItem.d.ts +9 -0
  228. package/lib/typescript/module/components/Menu/Menu.d.ts +46 -0
  229. package/lib/typescript/module/components/Menu/MenuSurface.d.ts +30 -0
  230. package/lib/typescript/module/components/Menu/focusHost.d.ts +9 -0
  231. package/lib/typescript/module/components/Menu/index.d.ts +5 -0
  232. package/lib/typescript/module/components/Menu/menuModel.d.ts +68 -0
  233. package/lib/typescript/module/components/Menu/useContextMenu.d.ts +58 -0
  234. package/lib/typescript/module/components/Menu/webOnly.d.ts +7 -0
  235. package/lib/typescript/module/components/MessageBubble/MessageBubble.d.ts +87 -0
  236. package/lib/typescript/module/components/MessageBubble/index.d.ts +3 -0
  237. package/lib/typescript/module/components/MessageList/MessageList.d.ts +68 -0
  238. package/lib/typescript/module/components/MessageList/index.d.ts +3 -0
  239. package/lib/typescript/module/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  240. package/lib/typescript/module/components/OnboardingPager/index.d.ts +3 -0
  241. package/lib/typescript/module/components/PaymentResult/PaymentResult.d.ts +71 -0
  242. package/lib/typescript/module/components/PaymentResult/index.d.ts +3 -0
  243. package/lib/typescript/module/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  244. package/lib/typescript/module/components/ScannerOverlay/index.d.ts +3 -0
  245. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +35 -0
  246. package/lib/typescript/module/components/SearchBar/SearchPanel.d.ts +49 -0
  247. package/lib/typescript/module/components/SearchBar/highlight.d.ts +14 -0
  248. package/lib/typescript/module/components/SearchBar/index.d.ts +3 -0
  249. package/lib/typescript/module/components/SearchBar/useRecentSearches.d.ts +24 -0
  250. package/lib/typescript/module/components/Select/Select.d.ts +2 -1
  251. package/lib/typescript/module/components/SignaturePad/SignaturePad.d.ts +94 -0
  252. package/lib/typescript/module/components/SignaturePad/index.d.ts +4 -0
  253. package/lib/typescript/module/components/SignaturePad/signatureGeometry.d.ts +36 -0
  254. package/lib/typescript/module/components/SignaturePad/writePng.d.ts +7 -0
  255. package/lib/typescript/module/components/SignaturePad/writePng.web.d.ts +3 -0
  256. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +41 -0
  257. package/lib/typescript/module/components/Sparkline/geometry.d.ts +20 -0
  258. package/lib/typescript/module/components/Sparkline/index.d.ts +3 -0
  259. package/lib/typescript/module/components/Spinner/Spinner.d.ts +7 -1
  260. package/lib/typescript/module/components/StatTile/StatTile.d.ts +24 -1
  261. package/lib/typescript/module/components/StatTile/index.d.ts +1 -1
  262. package/lib/typescript/module/components/Toast/Toast.d.ts +21 -0
  263. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +21 -0
  264. package/lib/typescript/module/components/Toast/index.d.ts +1 -1
  265. package/lib/typescript/module/components/Tooltip/RichTooltipBody.d.ts +27 -0
  266. package/lib/typescript/module/components/Tooltip/Tooltip.d.ts +24 -0
  267. package/lib/typescript/module/components/Tooltip/index.d.ts +1 -1
  268. package/lib/typescript/module/components/Tooltip/tooltipPosition.d.ts +35 -0
  269. package/lib/typescript/module/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  270. package/lib/typescript/module/components/TypingIndicator/index.d.ts +3 -0
  271. package/lib/typescript/module/components/WheelPicker/Wheel.d.ts +34 -0
  272. package/lib/typescript/module/components/WheelPicker/WheelPicker.d.ts +73 -0
  273. package/lib/typescript/module/components/WheelPicker/index.d.ts +3 -0
  274. package/lib/typescript/module/components/index.d.ts +34 -8
  275. package/lib/typescript/module/hooks/index.d.ts +4 -0
  276. package/lib/typescript/module/hooks/useRefreshControl.d.ts +75 -0
  277. package/lib/typescript/module/hooks/useScrollDirection.d.ts +21 -0
  278. package/lib/typescript/module/index.d.ts +4 -4
  279. package/lib/typescript/module/utils/announce.d.ts +14 -0
  280. package/lib/typescript/module/utils/hapticUtils.d.ts +1 -1
  281. package/lib/typescript/module/utils/index.d.ts +2 -0
  282. package/lib/typescript/module/utils/placement.d.ts +55 -0
  283. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OnboardingPager=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Carousel/index.js"),_index4=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const ONBOARDING_MAX_PAGES=6,CONTROL_HEIGHT=44,DOT_SIZE=8,DOT_ACTIVE_WIDTH=24,defaultStep=(e,t)=>`Step ${e} of ${t}`,OnboardingPager=({pages:e,onDone:t,onSkip:n,doneLabel:i="Get started",labels:a,safeArea:r=!0,haptic:o,testID:s})=>{const c=(0,_index.useTheme)(),l=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),u=(0,_useReducedMotion.useReducedMotion)(),d=(0,_react.useMemo)(()=>buildStyles(c),[c]),x=(0,_react.useMemo)(()=>e.slice(0,6),[e]),g=x.length,_=a?.step??defaultStep,p=(0,_react.useRef)(null),[m,b]=(0,_react.useState)(0),j=m>=g-1,y=(0,_react.useCallback)(e=>{e<0||e>=g||p.current?.scrollTo(e,!u)},[g,u]),v=(0,_react.useCallback)(e=>y(m+e),[y,m]),h=(0,_react.useCallback)(()=>{j?t():y(m+1)},[j,t,y,m]),f=(0,_react.useRef)(m);(0,_react.useEffect)(()=>{if(f.current===m)return;f.current=m;const e=x[m];e&&(0,_announce.announce)(`${_(m+1,g)}, ${e.title}`)},[m,x,g,_]);const R=(0,_react.useCallback)((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:d.page,contentContainerStyle:d.pageContent,showsVerticalScrollIndicator:!1,bounces:!1,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityLabel:`${_(t+1,g)}, ${e.title}. ${e.body}`,style:d.pageGroup,children:[e.art?(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.art,children:e.art}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h2",align:"center",children:e.title}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:e.body})]})}),[d,_,g]);return 0===g?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[d.root,r?{paddingTop:l.top,paddingBottom:l.bottom}:null],testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.skipRow,children:(0,_jsxRuntime.jsx)(_index2.Button,{title:a?.skip??"Skip",variant:"ghost",tone:"neutral",hitSlop:{top:2,bottom:2,left:8,right:8},haptic:o,onPress:n,testID:s?`${s}-skip`:void 0})}),(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:p,data:x,renderItem:R,keyExtractor:e=>e.key,onIndexChange:b,showPagination:!1,containerStyle:d.carousel,testID:s?`${s}-pages`:void 0}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:d.footer,children:[g>1?(0,_jsxRuntime.jsx)(PageControl,{keys:x.map(e=>e.key),index:m,label:a?.pageControl??"Page",valueText:_(m+1,g),reduceMotion:u,theme:c,onStep:v,testID:s?`${s}-dots`:void 0}):null,(0,_jsxRuntime.jsx)(_index2.Button,{title:j?i:a?.next??"Next",size:"lg",fullWidth:!0,haptic:o,onPress:h,testID:s?`${s}-next`:void 0})]})]})};exports.OnboardingPager=OnboardingPager,OnboardingPager.displayName="OnboardingPager";const PageControl=({keys:e,index:t,label:n,valueText:i,reduceMotion:a,theme:r,onStep:o,testID:s})=>{const c=(0,_react.useCallback)(e=>{"increment"===e.nativeEvent.actionName?o(1):"decrement"===e.nativeEvent.actionName&&o(-1)},[o]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:n,accessibilityValue:{min:0,max:e.length-1,now:t,text:i},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:c,style:controlStyles.control,testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:controlStyles.dots,pointerEvents:"none",children:e.map((e,n)=>(0,_jsxRuntime.jsx)(Dot,{active:n===t,reduceMotion:a,theme:r},e))}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.back,onPress:()=>o(-1),testID:s?`${s}-back`:void 0}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.forward,onPress:()=>o(1),testID:s?`${s}-forward`:void 0})]})},Dot=({active:e,reduceMotion:t,theme:n})=>{const i=(0,_react.useRef)((0,_index.createAnimatedValue)(e?1:0)).current;return(0,_react.useEffect)(()=>{const a=_reactNative.Animated.timing(i,{toValue:e?1:0,duration:t?0:n.motion.duration.normal,easing:_reactNative.Easing.bezier(...n.motion.easing.standard),useNativeDriver:!1});return a.start(),()=>a.stop()},[e,t,i,n]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:i.interpolate({inputRange:[0,1],outputRange:[8,24]}),height:8,marginHorizontal:n.spacing.xs,borderRadius:4,..._corners.smoothCorners,backgroundColor:i.interpolate({inputRange:[0,1],outputRange:[n.colors.border.primary,n.colors.primary]})}})},controlStyles=_reactNative.StyleSheet.create({control:{alignSelf:"center",height:44,minWidth:88,alignItems:"center",justifyContent:"center"},dots:{flexDirection:"row",alignItems:"center"},back:{position:"absolute",top:0,bottom:0,start:0,width:"50%"},forward:{position:"absolute",top:0,bottom:0,end:0,width:"50%"}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,backgroundColor:e.colors.background.primary},skipRow:{minHeight:44,paddingHorizontal:e.spacing.lg,alignItems:"flex-end",justifyContent:"center"},carousel:{flex:1},page:{flex:1},pageContent:{flexGrow:1,justifyContent:"center",paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.lg},pageGroup:{alignItems:"center",gap:e.spacing.md},art:{alignItems:"center",marginBottom:e.spacing.xl},footer:{paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.lg,gap:e.spacing.sm}});var _default=exports.default=OnboardingPager;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"OnboardingPager",{enumerable:!0,get:function(){return _OnboardingPager.OnboardingPager}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _OnboardingPager.default}});var _OnboardingPager=_interopRequireWildcard(require("./OnboardingPager.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var o,a,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(o=r?n:t){if(o.has(e))return o.get(e);o.set(e,i)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((a=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(a.get||a.set)?o(i,r,a):i[r]=e[r]);return i})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PaymentResult=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../Confetti/index.js"),_index6=require("../Descriptions/index.js"),_index7=require("../StatusBadge/index.js"),_index8=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}const STATUS={success:{icon:"check-circle",badge:"Success",tone:"success",title:"Payment successful"},pending:{icon:"clock",badge:"Pending",tone:"neutral",title:"Payment pending"},failed:{icon:"x-circle",badge:"Failed",tone:"error",title:"Payment failed"},refunded:{icon:"refresh-cw",badge:"Refunded",tone:"info",title:"Payment refunded"}},MARK_SIZE=72,ICON_SIZE=36,TINT_OPACITY=.14,DEFAULT_REFUND_DAYS=5,CONFETTI_PIECES=60,SETTLE_WINDOW="Most payments confirm in a few minutes. Your bank can take up to 48 hours.",REFRESH_HINT="Tap Check status to see the latest.",PENDING_WARNING="Do not pay again. If money has left your account, it will either complete or come back to you.",istStamp=e=>(0,_mobileCore.formatDateTime)(e,{zone:"IST",zoneLabel:!0}),markColors=(e,t)=>{const{colors:n}=e;switch(t){case"success":return{fill:(0,_color.tintOf)(n.success,.14,n.background.secondary),ink:n.toneText.success};case"failed":return{fill:(0,_color.tintOf)(n.error,.14,n.background.secondary),ink:n.toneText.error};case"refunded":return{fill:(0,_color.tintOf)(n.info,.14,n.background.secondary),ink:n.toneText.info};default:return{fill:n.background.tertiary,ink:n.text.secondary}}},failedLead=(e,t,n,r)=>{if(!0===e){return`${t} will return to your account within ${n} working days.${r?` Reference ${r}.`:""}`}return!1===e?"No money was taken from your account. You can try again.":"We could not confirm whether money left your account. Check your bank statement before you try again."},leadFor=(e,t,n)=>{switch(e){case"success":return"Your payment has been received. Keep this receipt for your records.";case"pending":return"Your bank has not confirmed this payment yet.";case"refunded":return`${t} has been returned to your account.`;default:return n}},renderAction=e=>(0,_jsxRuntime.jsx)(_index4.Button,{title:e.title,size:"lg",fullWidth:!0,variant:e.variant,tone:e.tone,leftIcon:e.icon,loading:e.loading,onPress:e.onPress},e.key),PaymentResult=({status:e,amount:t,currency:n="INR",payee:r,reference:i,paidAt:a,method:o,rows:s,debited:c,refundDays:l=5,settlesBy:u,title:d,message:m,onShare:_,onDownload:p,onDone:y,onRetry:f,onRefresh:x,refreshing:h=!1,celebrate:g=!0,haptic:b=!0,style:v,testID:j})=>{const R=(0,_index2.useTheme)(),k=(0,_index.useReducedMotion)(),N=(0,_react.useMemo)(()=>buildStyles(R),[R]),w=(0,_react.useRef)(null),T=(0,_react.useRef)(null),S=STATUS[e],I=(0,_react.useMemo)(()=>markColors(R,e),[R,e]),P=d??S.title,C=(0,_mobileCore.formatMinor)(t,{currency:n,dropZeroDecimals:!0}),D=failedLead(c,C,l,i),E=m??leadFor(e,C,D),q=`${P}, ${C}${r&&"refunded"!==e?` to ${r}`:""}`,A=void 0===u?SETTLE_WINDOW:`Expected to settle by ${istStamp(u)}.`;(0,_react.useEffect)(()=>{T.current!==e&&(T.current=e,(0,_announce.announce)(q,{polite:"failed"!==e}),b&&("success"===e?(0,_hapticUtils.triggerHaptic)("confirm"):"failed"===e&&(0,_hapticUtils.triggerHaptic)("reject")),"success"===e&&g&&w.current?.start())},[e]);const W=(0,_reactNativeReanimated.useSharedValue)(.9),M=(0,_reactNativeReanimated.useSharedValue)(0),O=R.motion.duration.normal;(0,_react.useEffect)(()=>(k?(W.value=1,M.value=1):"success"===e?(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.6,W.value=(0,_reactNativeReanimated.withSpring)(1,{damping:12,stiffness:160})):(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.9,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O})),()=>{(0,_reactNativeReanimated.cancelAnimation)(W),(0,_reactNativeReanimated.cancelAnimation)(M)}),[e,k,W,M,O]);const V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:M.value,transform:[{scale:W.value}]})),$=(0,_react.useMemo)(()=>{const e=[];if(r&&e.push({key:"payee",label:"Paid to",value:r}),o&&e.push({key:"method",label:"Method",value:o}),i){const t=/^\d+$/.test(i);e.push({key:"reference",label:"Reference",value:(0,_jsxRuntime.jsx)(_index8.Text,{selectable:!0,accessibilityLabel:t?i.split("").join(" "):void 0,style:N.tabular,children:i})})}void 0!==a&&e.push({key:"paidAt",label:"Date and time",value:istStamp(a)});for(const t of s??[])void 0!==t.value&&null!==t.value&&""!==t.value&&e.push(t);return e},[r,o,i,a,s,N.tabular]),F="pending"===e&&x?{key:"refresh",title:"Check status",onPress:x,icon:"refresh-cw",loading:h}:null,H=y?{key:"done",title:"Done",onPress:y}:null,U=("failed"===e&&!1===c&&f?{key:"retry",title:"Try again",onPress:f,icon:"refresh-cw"}:null)??F??H,L=H&&U!==H?{...H,variant:"ghost",tone:"neutral"}:null,B=[];return _&&B.push({key:"share",title:"Share receipt",onPress:_,icon:"share",variant:"outline",tone:"neutral"}),p&&B.push({key:"download",title:"Download",onPress:p,icon:"download",variant:"outline",tone:"neutral"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.root,v],testID:j,accessibilityRole:"summary",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.header,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.mark,{backgroundColor:I.fill},V],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:S.icon,size:36,color:I.ink})}),(0,_jsxRuntime.jsx)(_index7.StatusBadge,{label:S.badge,tone:S.tone}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h3",align:"center",children:P}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h1",align:"center",style:N.tabular,children:C}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"body",color:"secondary",align:"center",children:E})]}),"pending"===e?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.note,children:[(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:A}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",weight:"semibold",children:PENDING_WARNING}),F?(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:REFRESH_HINT}):null]}):null,$.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.receipt,children:(0,_jsxRuntime.jsx)(_index6.Descriptions,{items:$,columns:2,bordered:!0})}):null,U||B.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.actions,children:[U?renderAction(U):null,B.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pair,children:B.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pairItem,children:renderAction(e)},e.key))}):null,L?renderAction(L):null]}):null,"success"===e&&g?(0,_jsxRuntime.jsx)(_index5.Confetti,{ref:w,count:60,preset:"pop"}):null]})};exports.PaymentResult=PaymentResult;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},mark:{width:72,height:72,borderRadius:36,alignItems:"center",justifyContent:"center",marginBottom:e.spacing.xs,..._corners.smoothCorners},tabular:{fontVariant:["tabular-nums"]},note:{gap:e.spacing.xs,padding:e.spacing.md,borderRadius:e.radius.md,backgroundColor:e.colors.background.secondary,..._corners.smoothCorners},receipt:{paddingHorizontal:e.spacing.md,borderRadius:e.radius.lg,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:e.colors.border.secondary,backgroundColor:e.colors.background.primary,..._corners.smoothCorners},actions:{gap:e.spacing.sm},pair:{flexDirection:"row",gap:e.spacing.sm},pairItem:{flex:1}});var _default=exports.default=PaymentResult;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PaymentResult",{enumerable:!0,get:function(){return _PaymentResult.PaymentResult}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _PaymentResult.default}});var _PaymentResult=_interopRequireWildcard(require("./PaymentResult.js"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var u,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(u=t?n:r){if(u.has(e))return u.get(e);u.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?u(a,t,o):a[t]=e[t]);return a})(e,t)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:l,onGallery:c,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),g=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),p=(0,_useReducedMotion.useReducedMotion)(),f=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.normal;(0,_react.useEffect)(()=>{if(R.setValue(1),p)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,p,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:k}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${k}`)}},[n,a,A,E,C,M,V,k]);const P=Math.max(240,Math.min(u,y.width-2*x.spacing.xl)),L=(y.width-P)/2,q=Math.max(x.spacing.md,(y.height-P)/2-.06*y.height),O=y.width>0&&y.height>0,I={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.error:x.colors.onOverlay,width:32,height:32},F="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.error}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors.onSuccess:x.colors.onError,children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors.onOverlay,children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[f.root,!b&&{backgroundColor:x.colors.background.primary},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&O?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:q+P,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,width:L,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:L+P,right:0,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:P,height:P,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.mark,I,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[f.message,{top:q+P+x.spacing.md}],children:F})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors.text.tertiary}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:k,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[f.bar,{paddingBottom:Math.max(g.bottom,x.spacing.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.background.overlay},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.spacing.xl},pill:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.full,..._corners.smoothCorners},panel:{..._reactNative.StyleSheet.absoluteFill,justifyContent:"center"},bar:{position:"absolute",left:0,right:0,bottom:0,flexDirection:"row",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:e.spacing.sm,paddingHorizontal:e.spacing.md}});var _default=exports.default=ScannerOverlay;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ScannerOverlay",{enumerable:!0,get:function(){return _ScannerOverlay.ScannerOverlay}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _ScannerOverlay.default}});var _ScannerOverlay=_interopRequireWildcard(require("./ScannerOverlay.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?a(u,r,o):u[r]=e[r]);return u})(e,r)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:a,onSubmit:s,placeholder:l="Search…",autoFocus:r=!1,disabled:o=!1,onClear:c,leftIcon:n,debounceMs:d,size:u="md",variant:_,borderRadius:b,label:f,labelMode:p="top",labelStyle:h,haptic:v,style:x,inputStyle:g,accessibilityLabel:m,testID:S,...y}=e,j=(0,_index.useTheme)(),F=_??j.components.searchBar?.defaultVariant??j.components.field?.defaultVariant??"filled",R="underline"===F,B=(0,_FieldBase.resolveFieldSize)(j,u),I={...B,...j.components.searchBar?.[u]??{}},z=(0,_FieldBase.resolveFieldTextStyle)(j,{disabled:o}),C=(0,_react.useRef)(null),q=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(C,t),[t]),L=(0,_react.useCallback)(()=>{o||C.current?.focus()},[o]),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),w="string"==typeof i?i:"",[T,k]=(0,_react.useState)(!1),[D,H]=(0,_react.useState)(w),V=(0,_useDebounce.useDebounce)(D,d??0);(0,_react.useEffect)(()=>{void 0!==d&&w!==D&&H(w)},[w,d]);const M=(0,_react.useRef)(w);(0,_react.useEffect)(()=>{void 0!==d&&V!==M.current&&(M.current=V,a(V))},[V,d,a]);const P=(0,_react.useCallback)(e=>{void 0===d?a(e):H(e)},[d,a]),U=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==d&&(H(""),M.current=""),a(""),c?.()},[v,d,a,c]),E=(0,_react.useCallback)(()=>{s?.(void 0!==d?D:w)},[s,d,D,w]),O=void 0!==d?D:w,A=O.length>0,W={size:I.iconSize,color:o?j.colors.text.disabled:j.colors.text.tertiary,disabled:o},K=n?(0,_slotIcon.renderSlotIcon)(n,W):(j.icons?.search??_defaultIcons.defaultIcons.search)(W),G=Boolean(f)&&"float"===p,J=(0,_useFloatingLabel.useFloatingLabel)({label:f,enabled:G,floated:T||A,variant:F,sizeTokens:{...B,...I},leadingOffset:I.iconSize+j.spacing.md,trailingOffset:A?I.iconSize+j.spacing.md:0,paddingLeft:R?0:I.paddingHorizontal,color:j.colors.field.label,style:h}),Q=A&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:U,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(j.icons?.close??_defaultIcons.defaultIcons.close)({size:I.iconSize,color:j.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:x,testID:S,children:[f&&!G?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:u,style:h,children:f}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:u,variant:F,focused:T,disabled:o,filled:A,minHeight:I.minHeight,paddingHorizontal:R?0:I.paddingHorizontal,borderRadius:b??I.borderRadius,leading:K,trailing:Q,topNotch:J.topNotch,onPress:L,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:m??l,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:q,style:[N.input,{fontSize:I.fontSize,color:z.color,...z.weightStyle},g],value:O,onChangeText:P,onSubmitEditing:E,onFocus:()=>k(!0),onBlur:()=>k(!1),placeholder:!G||T||A?l:void 0,placeholderTextColor:z.placeholderColor,autoFocus:r,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(j,F).borderFocusedRepresentative,accessibilityLabel:m??l,accessibilityState:{disabled:o},"aria-disabled":o,...y})}),J.node]})})]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,a)=>{const{value:t,onChangeText:l,onSubmit:s,onFocus:r,onBlur:c,placeholder:i="Search…",autoFocus:n=!1,disabled:o=!1,onClear:u,leftIcon:d,debounceMs:_,size:b="md",variant:h,borderRadius:p,label:S,labelMode:g="top",labelStyle:f,scopes:v,scope:m,onScopeChange:x,recents:R,recentsTitle:j="Recent searches",maxRecents:C=DEFAULT_PANEL_ROWS,onSelectRecent:y,onRemoveRecent:F,onClearRecents:B,suggestions:k,maxSuggestions:L=DEFAULT_PANEL_ROWS,onSelectSuggestion:z,haptic:I,style:q,inputStyle:E,accessibilityLabel:P,testID:T,...N}=e,H=(0,_index.useTheme)(),D=h??H.components.searchBar?.defaultVariant??H.components.field?.defaultVariant??"filled",w="underline"===D,A=(0,_FieldBase.resolveFieldSize)(H,b),U={...A,...H.components.searchBar?.[b]??{}},M=(0,_FieldBase.resolveFieldTextStyle)(H,{disabled:o}),O=(0,_react.useRef)(null),V=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(O,a),[a]),W=(0,_react.useCallback)(()=>{o||O.current?.focus()},[o]),$=(0,_react.useMemo)(()=>buildStyles(H),[H]),K="string"==typeof t?t:"",[G,J]=(0,_react.useState)(!1),Q=(0,_react.useCallback)(e=>{J(!0),r?.(e)},[r]),X=(0,_react.useCallback)(e=>{J(!1),c?.(e)},[c]),[Y,Z]=(0,_react.useState)(K),ee=(0,_useDebounce.useDebounce)(Y,_??0);(0,_react.useEffect)(()=>{void 0!==_&&K!==Y&&Z(K)},[K,_]);const ae=(0,_react.useRef)(K);(0,_react.useEffect)(()=>{void 0!==_&&ee!==ae.current&&(ae.current=ee,l(ee))},[ee,_,l]);const te=(0,_react.useCallback)(e=>{void 0===_?l(e):Z(e)},[_,l]),le=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(I,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==_&&(Z(""),ae.current=""),l(""),u?.()},[I,_,l,u]),se=(0,_react.useCallback)(()=>{s?.(void 0!==_?Y:K)},[s,_,Y,K]),re=void 0!==_?Y:K,ce=re.length>0,[ie,ne]=(0,_useControllableState.useControllableState)({value:m,defaultValue:v?.[0]?.value??"",onChange:x}),oe=(0,_react.useCallback)(e=>{ne(e);const a=v?.find(a=>a.value===e)?.label;a&&(0,_announce.announce)(`Searching ${a}`)},[v,ne]),[ue,de]=(0,_react.useState)(!1),_e=(0,_react.useRef)(null),be=(0,_react.useCallback)(()=>{_e.current&&(clearTimeout(_e.current),_e.current=null)},[]),he=(0,_react.useCallback)(()=>{be(),de(!0)},[be]),pe=(0,_react.useCallback)(()=>{be(),_e.current=setTimeout(()=>de(!1),50)},[be]);(0,_react.useEffect)(()=>be,[be]);const Se=!o&&(G||ue),ge=(0,_react.useMemo)(()=>(R??[]).slice(0,C),[R,C]),fe=(0,_react.useMemo)(()=>(k??[]).slice(0,L).map(_SearchPanel.normalizeSuggestion),[k,L]),ve=Se&&!ce&&ge.length>0,me=Se&&ce&&fe.length>0,xe=me?fe.length:0;(0,_react.useEffect)(()=>{xe>0&&(0,_announce.announce)(1===xe?"1 suggestion":`${xe} suggestions`)},[xe]);const Re=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(I,"selection");e&&(0,_hapticUtils.triggerHaptic)(e)},[I]),je=(0,_react.useCallback)(e=>{Re(),O.current?.blur(),de(!1),y?.(e)},[Re,y]),Ce=(0,_react.useCallback)(e=>{Re(),O.current?.blur(),de(!1),z?.(e)},[Re,z]),ye=(0,_react.useCallback)(e=>{Re(),F?.(e),(0,_announce.announce)(`Removed ${e}`),W()},[Re,F,W]),Fe=(0,_react.useCallback)(()=>{Re(),B?.(),(0,_announce.announce)("Recent searches cleared"),W()},[Re,B,W]),Be={size:U.iconSize,color:o?H.colors.text.disabled:H.colors.text.tertiary,disabled:o},ke=d?(0,_slotIcon.renderSlotIcon)(d,Be):(H.icons?.search??_defaultIcons.defaultIcons.search)(Be),Le=Boolean(S)&&"float"===g,ze=(0,_useFloatingLabel.useFloatingLabel)({label:S,enabled:Le,floated:G||ce,variant:D,sizeTokens:{...A,...U},leadingOffset:U.iconSize+H.spacing.md,trailingOffset:ce?U.iconSize+H.spacing.md:0,paddingLeft:w?0:U.paddingHorizontal,color:H.colors.field.label,style:f}),Ie=ce&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:le,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(H.icons?.close??_defaultIcons.defaultIcons.close)({size:U.iconSize,color:H.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q,testID:T,children:[S&&!Le?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:b,style:f,children:S}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:b,variant:D,focused:G,disabled:o,filled:ce,minHeight:U.minHeight,paddingHorizontal:w?0:U.paddingHorizontal,borderRadius:p??U.borderRadius,leading:ke,trailing:Ie,topNotch:ze.topNotch,onPress:W,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:P??i,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:V,style:[$.input,{fontSize:U.fontSize,color:M.color,...M.weightStyle},E],value:re,onChangeText:te,onSubmitEditing:se,onFocus:Q,onBlur:X,placeholder:!Le||G||ce?i:void 0,placeholderTextColor:M.placeholderColor,autoFocus:n,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(H,D).borderFocusedRepresentative,accessibilityLabel:P??i,accessibilityState:{disabled:o},"aria-disabled":o,...N})}),ze.node]})}),v&&v.length>0?(0,_jsxRuntime.jsx)(_SearchPanel.SearchScopeBar,{scopes:v,scope:ie||(v[0]?.value??""),disabled:o,haptic:I,onChange:oe}):null,ve?(0,_jsxRuntime.jsx)(_SearchPanel.SearchRecents,{recents:ge,title:j,onSelect:je,onRemove:F?ye:void 0,onClear:B?Fe:void 0,onHold:he,onRelease:pe}):null,me?(0,_jsxRuntime.jsx)(_SearchPanel.SearchSuggestions,{suggestions:fe,query:re,onSelect:Ce,onHold:he,onRelease:pe}):null]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeSuggestion=exports.SearchSuggestions=exports.SearchScopeBar=exports.SearchRecents=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Chip/index.js"),_index4=require("../Text/index.js"),_highlight=require("./highlight.js"),_jsxRuntime=require("react/jsx-runtime");const TOUCH=44,ICON=18,normalizeSuggestion=e=>"string"==typeof e?{text:e}:e;exports.normalizeSuggestion=normalizeSuggestion;const SearchScopeBar=({scopes:e,scope:s,disabled:t,haptic:i,onChange:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:o.scopes,accessibilityLabel:"Search scope",children:e.map(e=>(0,_jsxRuntime.jsx)(_index3.Chip,{label:e.label,selected:e.value===s,disabled:t,haptic:i,onPress:()=>n(e.value),containerStyle:o.scopeChip},e.value))})};exports.SearchScopeBar=SearchScopeBar;const SearchRecents=({recents:e,title:s,onSelect:t,onRemove:i,onClear:n,onHold:r,onRelease:o})=>{const l=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>buildStyles(l),[l]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.list,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.header,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",accessibilityRole:"header",style:a.headerTitle,children:s}),n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:"Clear all recent searches",style:a.clearAll,children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",color:"link",children:"Clear all"})}):null]}),e.map(e=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:e,accessibilityHint:"Searches again",android_ripple:{color:l.colors.surface.pressed},style:({pressed:e})=>[a.rowMain,e?{backgroundColor:l.colors.surface.pressed}:null],children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"history",size:18,color:l.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",numberOfLines:1,style:a.rowText,children:e})]}),i?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:`Remove ${e} from recent searches`,style:a.remove,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"x",size:18,color:l.colors.text.secondary})}):null]},e))]})};exports.SearchRecents=SearchRecents;const SuggestionRow=(0,_react.memo)(({item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o})=>{const l=(0,_highlight.splitHighlight)(e.text,s),a=e.icon?(0,_slotIcon.renderSlotIcon)(e.icon,{size:18,color:r.colors.text.tertiary,disabled:!1}):(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"search",size:18,color:r.colors.text.tertiary});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:i,onPressOut:n,accessibilityRole:"button",accessibilityLabel:e.subtitle?`${e.text}, ${e.subtitle}`:e.text,android_ripple:{color:r.colors.surface.pressed},style:({pressed:e})=>[o.rowMain,o.suggestion,e?{backgroundColor:r.colors.surface.pressed}:null],children:[a,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.rowText,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",numberOfLines:1,children:l.map(e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:e.match?o.match:void 0,children:e.text},e.start))}),e.subtitle?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",numberOfLines:1,children:e.subtitle}):null]})]})});SuggestionRow.displayName="SuggestionRow";const SearchSuggestions=({suggestions:e,query:s,onSelect:t,onHold:i,onRelease:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o.list,children:e.map(e=>(0,_jsxRuntime.jsx)(SuggestionRow,{item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o},e.id??e.text))})};exports.SearchSuggestions=SearchSuggestions;const buildStyles=e=>({..._reactNative.StyleSheet.create({scopes:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingTop:e.spacing.sm},scopeChip:{minHeight:44},list:{width:"100%",paddingTop:e.spacing.xs},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:44,paddingHorizontal:e.spacing.xs},headerTitle:{flex:1},clearAll:{minHeight:44,minWidth:44,justifyContent:"center",alignItems:"flex-end"},row:{flexDirection:"row",alignItems:"center"},rowMain:{flex:1,flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:44,paddingHorizontal:e.spacing.xs},suggestion:{paddingVertical:e.spacing.xs},rowText:{flex:1},remove:{width:44,height:44,alignItems:"center",justifyContent:"center"}}),match:{...(0,_index.fontFor)(e,"bold"),color:e.colors.text.primary}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.splitHighlight=void 0;const MAX_TOKENS=8,escapeRegExp=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),splitHighlight=(t,e)=>{const s=e.trim().split(/\s+/).filter(Boolean).slice(0,8).sort((t,e)=>e.length-t.length);if(!t||0===s.length)return[{text:t,match:!1,start:0}];const l=new RegExp(s.map(escapeRegExp).join("|"),"gi"),i=[];let h=0,c=l.exec(t);for(;null!==c;){const e=c.index,s=e+c[0].length;e>h&&i.push({text:t.slice(h,e),match:!1,start:h});const g=i[i.length-1];g?.match&&e===h?g.text+=c[0]:i.push({text:c[0],match:!0,start:e}),h=s,c=l.exec(t)}return h<t.length&&i.push({text:t.slice(h),match:!1,start:h}),i.length>0?i:[{text:t,match:!1,start:0}]};exports.splitHighlight=splitHighlight;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SearchBar",{enumerable:!0,get:function(){return _SearchBar.SearchBar}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _SearchBar.default}});var _SearchBar=_interopRequireWildcard(require("./SearchBar.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?a(u,r,o):u[r]=e[r]);return u})(e,r)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SearchBar",{enumerable:!0,get:function(){return _SearchBar.SearchBar}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _SearchBar.default}}),Object.defineProperty(exports,"useRecentSearches",{enumerable:!0,get:function(){return _useRecentSearches.useRecentSearches}});var _SearchBar=_interopRequireWildcard(require("./SearchBar.js")),_useRecentSearches=require("./useRecentSearches.js");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,u,c={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return c;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,c)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((u=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(u.get||u.set)?a(c,r,u):c[r]=e[r]);return c})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRecentSearches=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react");const DEFAULT_MAX=8,isStringList=e=>Array.isArray(e)&&e.every(e=>"string"==typeof e),useRecentSearches=(e,r)=>{const t=r?.max??8,[c,s]=(0,_react.useState)([]),a=(0,_react.useRef)([]),n=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{let r=!1;return n.current=!1,a.current=[],s([]),_mobileCore.Storage.getJson(e).then(e=>{if(r||n.current||!isStringList(e))return;const c=e.slice(0,t);a.current=c,s(c)}),()=>{r=!0}},[e]);const o=(0,_react.useCallback)(r=>{n.current=!0,a.current=r,s(r),_mobileCore.Storage.setJson(e,r)},[e]);return{recents:c,add:(0,_react.useCallback)(e=>{const r=e.trim();if(!r)return;const c=r.toLowerCase(),s=a.current.filter(e=>e.toLowerCase()!==c);o([r,...s].slice(0,t))},[o,t]),remove:(0,_react.useCallback)(e=>{o(a.current.filter(r=>r!==e))},[o]),clear:(0,_react.useCallback)(()=>{const e=a.current;return o([]),e},[o]),replace:(0,_react.useCallback)(e=>{o(e.slice(0,t))},[o,t])}};exports.useRecentSearches=useRecentSearches;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:r,getOptionDisabled:n,getOptionDescription:o,getOptionIcon:s,placeholder:a,searchable:c=!1,haptic:d,label:u,help:x,title:p,required:_=!1,error:b,helperText:h,prefix:S,numberOfLines:f=1,disabled:g=!1,size:v="md",variant:m,leftIcon:j,rightIcon:y,chevronColor:F,chevronSize:C,borderRadius:O,accessibilityLabel:R,labelStyle:V,style:k,triggerStyle:z,textStyle:B,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,testID:H}=e,L=!0===e.multi,w=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),M=(0,_react.useCallback)(e=>r?r(e):e.value,[r]),D=(0,_react.useCallback)(e=>n?n(e):!0===e.disabled,[n]),P=(0,_react.useCallback)(e=>o?o(e):e.description,[o]),E=(0,_react.useCallback)(e=>s?s(e):e.icon,[s]),A=(0,_index.useTheme)(),$=(0,_react.useMemo)(()=>buildStyles(A),[A]),G=(0,_FieldBase.resolveFieldSize)(A,v),J=(0,_FieldBase.resolveFieldTextStyle)(A,{disabled:g}),K=m??A.components.select?.defaultVariant??A.components.field?.defaultVariant??"outlined",Q=(0,_react.useMemo)(()=>{const e=A.components.select?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[A.components.select?.fillColors,K]),U=O??A.components.select?.borderRadius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(L){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[L,e.value]),Z=(0,_react.useMemo)(()=>{if(L){const t=e.value??[];return i.filter(e=>containsValue(t,M(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(M(e),t));return l?[l]:[]},[L,i,e.value,M]),ee=(0,_react.useCallback)(()=>{if(g)return;const e=(0,_index2.resolveHaptic)(d,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[g,d]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(D(t))return;const i=M(t),l=(0,_index2.resolveHaptic)(d,"selection");if(l&&(0,_index2.triggerHaptic)(l),L){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[L,e,te,D,M,d]),le=0===Z.length?a??"Select…":Z.map(e=>w(e)).join(", "),re=0===Z.length,ne=!0===b||(0,_FieldBase.hasFieldText)(b),oe=(0,_FieldBase.hasFieldText)(u),se=(0,_FieldBase.fieldTextAsString)(u),ae=Math.round(1.4*G.fontSize),ce={color:g?A.colors.field.iconDisabled:W?A.colors.field.iconFocused:A.colors.field.icon,size:G.iconSize,disabled:g,focused:W,error:ne},de=0===Z.length?a??"No selection":`Selected: ${Z.map(e=>w(e)).join(", ")}`,ue=R??`${se??"Select"}. ${de}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[$.container,k],testID:H,children:[oe?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:v,required:_,help:x,style:V,children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:v,variant:K,disabled:g,error:ne,filled:Z.length>0,onPress:ee,borderRadius:U,fillOverrides:Q,paddingHorizontal:"underline"===K?0:void 0,accessibilityRole:"button",accessibilityLabel:ue,accessibilityState:{disabled:g,expanded:W},"aria-disabled":g,"aria-expanded":W,style:z,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ae,leading:j?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(j,ce)}):null,trailing:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ce)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(g?A.colors.text.disabled:A.colors.text.tertiary),size:C??G.iconSize,open:W,style:$.chevron}),children:[(0,_FieldBase.hasFieldText)(S)?"string"==typeof S||"number"==typeof S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,marginRight:A.spacing.xs}],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[$.prefixNode,{minHeight:1===f?void 0:ae,justifyContent:"center",marginRight:A.spacing.xs}],children:S}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[$.triggerText,{color:re?J.placeholderColor:J.color,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,...J.weightStyle},B],numberOfLines:f,children:[le,re&&_&&!oe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:v,error:ne,text:ne?b:h}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,title:p??se,accessibilityLabel:se??(oe?p:void 0)??a??"Options",options:i,labelOf:w,getValue:M,disabledOf:D,descriptionOf:P,iconOf:E,isSelected:Y,onSelect:ie,multi:L,searchable:c,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(A,K,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:o,getOptionDisabled:r,getOptionDescription:n,getOptionIcon:s,placeholder:a,searchable:c=!1,haptic:d,label:u,help:x,title:p,required:_=!1,error:h,helperText:S,prefix:f,numberOfLines:b=1,disabled:v=!1,size:g="md",variant:m,leftIcon:j,rightIcon:y,chevronColor:F,chevronSize:C,borderRadius:R,accessibilityLabel:O,labelStyle:z,style:k,triggerStyle:N,textStyle:V,optionStyle:T,selectedOptionStyle:B,optionTextStyle:I,selectedOptionTextStyle:q,testID:H}=e,L=!0===e.multi,w=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),M=(0,_react.useCallback)(e=>o?o(e):e.value,[o]),P=(0,_react.useCallback)(e=>r?r(e):!0===e.disabled,[r]),D=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),E=(0,_react.useCallback)(e=>s?s(e):e.icon,[s]),A=(0,_index.useTheme)(),$=(0,_react.useMemo)(()=>buildStyles(A),[A]),G=(0,_FieldBase.resolveFieldSize)(A,g),J=(0,_FieldBase.resolveFieldTextStyle)(A,{disabled:v}),K=m??A.components.select?.defaultVariant??A.components.field?.defaultVariant??"outlined",Q=(0,_react.useMemo)(()=>{const e=A.components.select?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[A.components.select?.fillColors,K]),U=R??A.components.select?.borderRadius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(L){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[L,e.value]),Z=(0,_react.useMemo)(()=>{if(L){const t=e.value??[];return i.filter(e=>containsValue(t,M(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(M(e),t));return l?[l]:[]},[L,i,e.value,M]),ee=(0,_react.useCallback)(()=>{if(v)return;const e=(0,_index2.resolveHaptic)(d,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[v,d]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(P(t))return;const i=M(t),l=(0,_index2.resolveHaptic)(d,"selection");if(l&&(0,_index2.triggerHaptic)(l),L){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[L,e,te,P,M,d]),le=0===Z.length?a??"Select…":Z.map(e=>w(e)).join(", "),oe=0===Z.length,re=!0===h||(0,_FieldBase.hasFieldText)(h),ne=(0,_FieldBase.hasFieldText)(u),se=(0,_FieldBase.fieldTextAsString)(u),ae=Math.round(1.4*G.fontSize),ce=(0,_react.useMemo)(()=>({fontSize:G.fontSize,color:J.placeholderColor}),[G.fontSize,J.placeholderColor]),de={color:v?A.colors.field.iconDisabled:W?A.colors.field.iconFocused:A.colors.field.icon,size:G.iconSize,disabled:v,focused:W,error:re},ue=0===Z.length?a??"No selection":`Selected: ${Z.map(e=>w(e)).join(", ")}`,xe=O??`${se??"Select"}. ${ue}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[$.container,k],testID:H,children:[ne?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:g,required:_,help:x,style:z,children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:g,variant:K,disabled:v,error:re,filled:Z.length>0,onPress:ee,borderRadius:U,fillOverrides:Q,paddingHorizontal:"underline"===K?0:void 0,accessibilityRole:"button",accessibilityLabel:xe,accessibilityState:{disabled:v,expanded:W},"aria-disabled":v,"aria-expanded":W,style:N,slotAlign:1===b?"center":"top",slotLineHeight:1===b?void 0:ae,leading:j?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(j,de)}):null,trailing:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,de)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(v?A.colors.text.disabled:A.colors.text.tertiary),size:C??G.iconSize,open:W,style:$.chevron}),children:[(0,_FieldBase.hasFieldText)(f)?"string"==typeof f||"number"==typeof f?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===b?void 0:ae,marginRight:A.spacing.xs}],children:f}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[$.prefixNode,{minHeight:1===b?void 0:ae,justifyContent:"center",marginRight:A.spacing.xs}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===b?void 0:ae}],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:ce,children:f})})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[$.triggerText,{color:oe?J.placeholderColor:J.color,fontSize:G.fontSize,lineHeight:1===b?void 0:ae,...J.weightStyle},V],numberOfLines:b,children:[le,oe&&_&&!ne?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:g,error:re,text:re?h:S}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,title:p??se,accessibilityLabel:se??(ne?p:void 0)??a??"Options",options:i,labelOf:w,getValue:M,disabledOf:P,descriptionOf:D,iconOf:E,isSelected:Y,onSelect:ie,multi:L,searchable:c,optionStyle:T,selectedOptionStyle:B,optionTextStyle:I,selectedOptionTextStyle:q,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(A,K,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SignaturePad=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Input/index.js"),_index4=require("../Text/index.js"),_signatureGeometry=require("./signatureGeometry.js"),_writePng=require("./writePng"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,i,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(a=t?r:n){if(a.has(e))return a.get(e);a.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?a(o,t,i):o[t]=e[t]);return o})(e,t)}const DEFAULT_LABELS={pad:"Signature pad",padHint:"Draw with one finger. To sign without drawing, use the type your name action.",caption:"Sign above the line. To start with an up or down stroke, rest your finger a moment first.",typedCaption:"Your typed name is used as your signature.",undo:"Undo",clear:"Clear",typeInstead:"Type your name instead",drawInstead:"Draw instead",typedLabel:"Type your name",typedPlaceholder:"Your full name",empty:"Not signed",signed:"Signed",typingAnnouncement:"Signing by typing your name. Your typed name is used as your signature. Choose Draw instead to sign with your finger.",drawingAnnouncement:"Signing by drawing. Use one finger on the pad.",clearedAnnouncement:"Signature cleared",undoneAnnouncement:"Last stroke removed",emptyError:"Add a signature first."},STROKE_WIDTH=2.5,SIDEWAYS_TO_DRAW=6,UPRIGHT_TO_SCROLL=8,REST_TO_DRAW_MS=200,MIN_POINT_GAP=.8,DEFAULT_HEIGHT=180,DEFAULT_NAME_LENGTH=100,MAX_EXPORT_SCALE=3,MIN_TARGET=44,BASELINE_OPACITY=.3,DISABLED_OPACITY=.5,TARGET_STYLE={minHeight:44},defaultScriptFont=()=>_reactNative.Platform.select({ios:"Snell Roundhand",default:"cursive"}),cssFontStack=e=>"cursive"===e?"cursive":`'${e}', cursive`,useScreenReader=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(n=>{e&&t(n)});const n=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,n.remove()}},[]),e},StrokePath=(0,_react.memo)(({points:e,color:t})=>(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:(0,_signatureGeometry.strokePath)(e),stroke:t,strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}));StrokePath.displayName="SignaturePadStroke";const SignaturePad=exports.SignaturePad=(0,_react.forwardRef)((e,t)=>{const{initialStrokes:n,onChange:r,initialTypedName:a="",onTypedNameChange:i,defaultMode:o="draw",onModeChange:s,onEmptyChange:c,allowTyped:u=!0,signedBy:d,signedAt:l,height:_=DEFAULT_HEIGHT,maxNameLength:p=DEFAULT_NAME_LENGTH,inkColor:g,paperColor:m,scriptFontFamily:y,labels:h,haptic:x="selection",disabled:f=!1,style:v,testID:S}=e,w=(0,_index.useTheme)(),T=g??_index.lightTheme.colors.text.primary,b=m??_index.lightTheme.colors.background.elevated,R=y??defaultScriptFont(),E=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...h}),[h]),j=useScreenReader(),A=(0,_react.useRef)(null),[C,N]=(0,_react.useState)(0),[I,L]=(0,_react.useState)(()=>(n??[]).map((e,t)=>({id:t+1,points:[...e]}))),P=(0,_react.useRef)(I),k=(0,_react.useRef)(I.length),D=(0,_react.useRef)(null),G=(0,_react.useRef)(null),[M,O]=(0,_react.useState)(u?o:"draw"),[F,H]=(0,_react.useState)(a),[q,W]=(0,_react.useState)(null),B=(0,_react.useRef)(!1),Y=(0,_react.useRef)({onChange:r,onTypedNameChange:i,onModeChange:s,onEmptyChange:c});(0,_react.useEffect)(()=>{Y.current={onChange:r,onTypedNameChange:i,onModeChange:s,onEmptyChange:c}});const U="draw"===M&&!f,$="draw"===M?0===I.length:0===F.trim().length,z=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{z.current!==$&&(z.current=$,Y.current.onEmptyChange?.($))},[$]);const V=(0,_react.useCallback)(e=>{P.current=e,L(e)},[]),K=(0,_react.useCallback)(()=>{W(Date.now()),Y.current.onChange?.(P.current.map(e=>e.points))},[]),X=(0,_react.useMemo)(()=>{const pan=e=>_reactNativeGestureHandler.Gesture.Pan().enabled(U).runOnJS(!0).onBegin(e=>{D.current=(0,_signatureGeometry.pointOf)(e.x,e.y)}).onStart(t=>{G.current=e,k.current+=1;const n=(0,_signatureGeometry.pointOf)(t.x,t.y);V([...P.current,{id:k.current,points:[D.current??n,n]}])}).onUpdate(t=>{if(G.current!==e)return;const n=P.current[P.current.length-1],r=(0,_signatureGeometry.pointOf)(t.x,t.y);(0,_signatureGeometry.distanceBetween)(n.points[n.points.length-1],r)<.8||V([...P.current.slice(0,-1),{...n,points:[...n.points,r]}])}).onFinalize(()=>{G.current===e&&(G.current=null,K())}),e=pan("sideways").activeOffsetX([-6,6]).failOffsetY([-8,8]),t=pan("rested").activateAfterLongPress(200);return _reactNativeGestureHandler.Gesture.Race(e,t)},[U,V,K]),J=(0,_react.useCallback)(e=>{O(e),Y.current.onModeChange?.(e),(0,_announce.announce)("type"===e?E.typingAnnouncement:E.drawingAnnouncement)},[E.typingAnnouncement,E.drawingAnnouncement]);(0,_react.useEffect)(()=>{j&&u&&!B.current&&"draw"===M&&0===P.current.length&&J("type")},[j,u,M,J]);const Q=(0,_react.useCallback)(()=>{B.current=!0,J("draw"===M?"type":"draw")},[M,J]),Z=(0,_react.useCallback)(e=>{H(e),W(Date.now()),Y.current.onTypedNameChange?.(e)},[]),ee=(0,_react.useCallback)(()=>{"type"===M?Z(""):(V([]),K()),(0,_announce.announce)(E.clearedAnnouncement)},[M,Z,V,K,E.clearedAnnouncement]),te=(0,_react.useCallback)(()=>{"draw"===M&&0!==P.current.length&&(V(P.current.slice(0,-1)),K(),(0,_announce.announce)(E.undoneAnnouncement))},[M,V,K,E.undoneAnnouncement]),ne=C||_signatureGeometry.FALLBACK_WIDTH;(0,_react.useImperativeHandle)(t,()=>({toFile:()=>new Promise((e,t)=>{if($)return void t(new Error(E.emptyError));if(!A.current)return void t(new Error("The signature pad is not on screen."));const n=Math.min(3,Math.max(1,_reactNative.PixelRatio.get()));A.current.toDataURL(n=>{try{e((0,_writePng.writePng)(n))}catch(e){t(e)}},{width:ne*n,height:_*n})}),toSvg:()=>(0,_signatureGeometry.buildSignatureSvg)({width:ne,height:_,mode:M,strokes:I.map(e=>e.points),typedName:F,ink:T,paper:b,strokeWidth:2.5,fontFamily:cssFontStack(R)}),clear:ee,undo:te,isEmpty:()=>$}),[$,E.emptyError,ne,_,M,I,F,T,b,R,ee,te]);const re=(0,_react.useMemo)(()=>[{name:"undo",label:E.undo},{name:"clear",label:E.clear},...u?[{name:"toggleMode",label:"draw"===M?E.typeInstead:E.drawInstead}]:[]],[E.undo,E.clear,E.typeInstead,E.drawInstead,u,M]),ae=(0,_react.useCallback)(e=>{if(f)return;const{actionName:t}=e.nativeEvent;"undo"===t?te():"clear"===t?ee():"toggleMode"===t&&u&&Q()},[f,te,ee,Q,u]),ie=(0,_react.useCallback)(e=>{N(e.nativeEvent.layout.width)},[]),oe=(0,_react.useMemo)(()=>_reactNative.StyleSheet.create({root:{gap:w.spacing.sm},pad:{height:_,borderWidth:w.colors.border.width,borderColor:w.colors.border.primary,borderRadius:w.radius.md,..._corners.smoothCorners,overflow:"hidden",backgroundColor:b,opacity:f?.5:1},baseline:{position:"absolute",left:w.spacing.md,right:w.spacing.md,top:_*_signatureGeometry.BASELINE_RATIO,height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:T,opacity:.3},actions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:w.spacing.xs},trailing:{flexDirection:"row",alignItems:"center",gap:w.spacing.xs}}),[w,_,b,T,f]),se=F.trim(),ce=l??q,ue=d&&!$?`Signed by ${d}${ce?`, ${(0,_mobileCore.formatDateTime)(ce)}`:""}`:null,de="type"===M&&se?`${E.pad}. ${se}`:E.pad;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[oe.root,v],testID:S,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:X,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.pad,onLayout:ie,accessible:!0,accessibilityRole:"image",accessibilityLabel:de,accessibilityHint:"draw"===M?E.padHint:void 0,accessibilityValue:{text:$?E.empty:E.signed},accessibilityState:{disabled:f},"aria-disabled":f,accessibilityActions:re,onAccessibilityAction:ae,children:[(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:A,width:"100%",height:_,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:b}),"draw"===M?I.map(e=>(0,_jsxRuntime.jsx)(StrokePath,{points:e.points,color:T},e.id)):null,"type"===M&&se?(0,_jsxRuntime.jsx)(_reactNativeSvg.Text,{x:ne/2,y:_*_signatureGeometry.BASELINE_RATIO,fontSize:(0,_signatureGeometry.typedFontSize)(ne,se),fontFamily:R,textAnchor:"middle",fill:T,children:se}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:oe.baseline})]})}),"type"===M?(0,_jsxRuntime.jsx)(_index3.Input,{label:E.typedLabel,placeholder:E.typedPlaceholder,value:F,onChangeText:Z,maxLength:p,disabled:f,autoComplete:"name",textContentType:"name",autoCapitalize:"words",autoCorrect:!1,returnKeyType:"done",testID:S?`${S}-name`:void 0}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:"draw"===M?E.caption:E.typedCaption}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.actions,children:[u?(0,_jsxRuntime.jsx)(_index2.Button,{title:"draw"===M?E.typeInstead:E.drawInstead,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:Q,testID:S?`${S}-mode`:void 0}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),"draw"===M&&I.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.trailing,children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:E.undo,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:te,testID:S?`${S}-undo`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:E.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:ee,testID:S?`${S}-clear`:void 0})]}):null,"type"===M&&se?(0,_jsxRuntime.jsx)(_index2.Button,{title:E.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:ee,testID:S?`${S}-clear`:void 0}):null]}),ue?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",children:ue}):null]})});SignaturePad.displayName="SignaturePad";var _default=exports.default=SignaturePad;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SignaturePad",{enumerable:!0,get:function(){return _SignaturePad.SignaturePad}});var _SignaturePad=require("./SignaturePad.js");
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.typedFontSize=exports.strokePath=exports.pointOf=exports.escapeXml=exports.distanceBetween=exports.buildSignatureSvg=exports.FALLBACK_WIDTH=exports.BASELINE_RATIO=void 0;const FALLBACK_WIDTH=exports.FALLBACK_WIDTH=320,MIN_FONT_SIZE=18,MAX_FONT_SIZE=56,SCRIPT_ADVANCE=.5,TYPED_WIDTH_SHARE=.88,BASELINE_RATIO=exports.BASELINE_RATIO=.7,oneDecimal=t=>Math.round(10*t)/10,pointOf=(t,e)=>[oneDecimal(t),oneDecimal(e)];exports.pointOf=pointOf;const distanceBetween=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1]);exports.distanceBetween=distanceBetween;const format=t=>t.toFixed(1),strokePath=t=>{if(0===t.length)return"";const[e,...o]=t,r=[`M${format(e[0])} ${format(e[1])}`];if(0===o.length)return r.push(`L${format(e[0])} ${format(e[1])}`),r.join(" ");if(1===o.length)return r.push(`L${format(o[0][0])} ${format(o[0][1])}`),r.join(" ");for(let t=0;t<o.length-1;t+=1){const e=o[t],n=o[t+1],s=(e[0]+n[0])/2,a=(e[1]+n[1])/2;r.push(`Q${format(e[0])} ${format(e[1])} ${format(s)} ${format(a)}`)}const n=o[o.length-1];return r.push(`L${format(n[0])} ${format(n[1])}`),r.join(" ")};exports.strokePath=strokePath;const typedFontSize=(t,e)=>{const o=Math.max(1,e.length),r=Math.floor(.88*t/(.5*o));return Math.min(56,Math.max(18,r))};exports.typedFontSize=typedFontSize;const escapeXml=t=>t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");exports.escapeXml=escapeXml;const buildSignatureSvg=t=>{const{width:e,height:o,mode:r,strokes:n,typedName:s,ink:a,paper:i,strokeWidth:p,fontFamily:l}=t,h=Math.round(e),c=Math.round(o),m=[`<rect x="0" y="0" width="${h}" height="${c}" fill="${escapeXml(i)}"/>`];if("type"===r){const t=s.trim();t&&m.push(`<text x="${h/2}" y="${format(c*BASELINE_RATIO)}" text-anchor="middle" font-family="${escapeXml(l)}" font-size="${typedFontSize(h,t)}" fill="${escapeXml(a)}">${escapeXml(t)}</text>`)}else for(const t of n)m.push(`<path d="${strokePath(t)}" fill="none" stroke="${escapeXml(a)}" stroke-width="${p}" stroke-linecap="round" stroke-linejoin="round"/>`);return`<svg xmlns="http://www.w3.org/2000/svg" width="${h}" height="${c}" viewBox="0 0 ${h} ${c}">${m.join("")}</svg>`};exports.buildSignatureSvg=buildSignatureSvg;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.writePng=void 0;const writePng=e=>{const{File:t,Paths:r}=require("expo-file-system"),i=new t(r.cache,`signature-${Date.now().toString(36)}.png`);return i.create({intermediates:!0,overwrite:!0}),i.write(e,{encoding:"base64"}),i.uri};exports.writePng=writePng;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.writePng=void 0;const writePng=e=>`data:image/png;base64,${e}`;exports.writePng=writePng;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Sparkline=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_geometry=require("./geometry.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,o,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(a=t?i:r){if(a.has(e))return a.get(e);a.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?a(l,t,o):l[t]=e[t]);return l})(e,t)}const DOT_RADIUS=3,lineColor=(e,t)=>"neutral"===t?e.colors.text.secondary:e.colors.toneText[t],defaultFormat=e=>(0,_mobileCore.formatNumber)(e),Sparkline=exports.Sparkline=(0,_react.forwardRef)((e,t)=>{const{data:r,tone:i="primary",color:a,fill:o=!1,highlightLast:l=!0,height:n=32,width:s,strokeWidth:c=2,label:u,formatLabel:d=defaultFormat,accessibilityLabel:f,style:_,testID:h}=e,m=(0,_index.useTheme)(),[p,v]=(0,_react.useState)(0),y=s??p,x=(0,_react.useCallback)(e=>{if(void 0===s){const t=Math.round(e.nativeEvent.layout.width);v(e=>e===t?e:t)}},[s]),g=Math.max(3,c/2)+1,j=(0,_react.useMemo)(()=>(0,_geometry.sparklineGeometry)(r,y,n,g),[r,y,n,g]),b=a??lineColor(m,i),k=(0,_react.useMemo)(()=>{if(void 0!==f)return f;const e=(0,_geometry.finiteValues)(r),t=u?`${u}, `:"";if(0===e.length)return`${t}no data`;if(1===e.length)return`${t}${d(e[0])}`;return`${t}from ${d(e[0])} to ${d(e[e.length-1])}, low ${d(Math.min(...e))}, high ${d(Math.max(...e))}`},[f,r,d,u]);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"image",accessibilityLabel:k,testID:h,onLayout:x,style:[styles.root,void 0===s?styles.stretch:{width:s},{height:n},_],children:""===j.line?null:(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{width:y,height:n,viewBox:`0 0 ${y} ${n}`,children:[o?(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:j.area,fill:b,fillOpacity:.14,stroke:"none"}):null,(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:j.line,fill:"none",stroke:b,strokeWidth:c,strokeLinecap:"round",strokeLinejoin:"round",testID:h?`${h}-line`:void 0}),l&&j.last?(0,_jsxRuntime.jsx)(_reactNativeSvg.Circle,{cx:j.last.x,cy:j.last.y,r:3,fill:b,testID:h?`${h}-dot`:void 0}):null]})})});Sparkline.displayName="Sparkline";const styles=_reactNative.StyleSheet.create({root:{overflow:"hidden"},stretch:{alignSelf:"stretch"}});var _default=exports.default=Sparkline;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.sparklineGeometry=exports.finiteValues=void 0;const finite=e=>e.filter(e=>Number.isFinite(e)),round=e=>(Math.round(100*e)/100).toString(),sparklineGeometry=(e,t,n,r)=>{const i=finite(e);if(0===i.length||t<=0||n<=0)return{line:"",area:"",last:null};const o=Math.min(...i),a=Math.max(...i),s=Math.max(0,t-2*r),l=Math.max(0,n-2*r),u=a-o,p=i.map((e,o)=>({x:1===i.length?t/2:r+o*s/(i.length-1),y:0===u?n/2:r+(a-e)/u*l})),x=p.map((e,t)=>`${0===t?"M":"L"}${round(e.x)} ${round(e.y)}`).join(" "),d=p[0],m=p[p.length-1];return{line:x,area:`${x} L${round(m.x)} ${round(n)} L${round(d.x)} ${round(n)} Z`,last:m}};exports.sparklineGeometry=sparklineGeometry;const finiteValues=exports.finiteValues=finite;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Sparkline",{enumerable:!0,get:function(){return _Sparkline.Sparkline}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _Sparkline.default}});var _Sparkline=_interopRequireWildcard(require("./Sparkline.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=r?n:t){if(i.has(e))return i.get(e);i.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?i(u,r,o):u[r]=e[r]);return u})(e,r)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Spinner=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_squircle=require("../../utils/squircle.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:20,md:32,lg:48},DOT_COUNT=3,DOT_STAGGER_MS=150,DOT_CYCLE_MS=600,Dot=({size:e,color:t,delay:i,duration:r})=>{const a=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;return(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(a,{toValue:1.4,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(a,{toValue:1,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[a,i,r]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:e/2,..._corners.smoothCorners,backgroundColor:t,transform:[{scale:a}]}})},Spinner=exports.Spinner=(0,_react.forwardRef)((e,t)=>{const{size:i="md",color:r,message:a,overlay:n=!1,backdropColor:s,variant:o="circular",accessibilityLabel:l,style:c,testID:u}=e,d=(0,_index.useTheme)(),m=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(m,{toValue:1,duration:d.motion.duration.normal,easing:_reactNative.Easing.bezier(...d.motion.easing.standard),useNativeDriver:!0}).start()},[m,d]);const _=(0,_react.useMemo)(()=>buildStyles(d),[d]),g=sizeMap[i],v=r??d.colors.primary,y=s??d.colors.background.overlay,x=(0,_react.useMemo)(()=>{if("dots"===o){const e=Math.max(6,Math.round(g/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:v,delay:150*i,duration:600},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:v,size:"sm"===i?"small":"large",style:{width:g,height:g}})},[o,i,g,v,_.dotsRow]),h=l??a??"Loading",p=(0,_SquircleFill.useSquircle)(n,d.radius.lg),j=p.active&&p.size?{borderRadius:(0,_squircle.squircleHostRadius)(p.size.width,p.size.height,d.radius.lg)}:null,b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:"polite",accessibilityLabel:h,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:p.onLayout,style:[n?_.overlayContent:_.inlineContent,j,{opacity:m}],children:[p.active&&p.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:p.size.width,height:p.size.height,radius:d.radius.lg,fill:d.colors.background.elevated}):null,x,a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.message,{color:d.colors.text.primary,fontSize:d.typography.fontSize.base,fontWeight:d.typography.fontWeight.medium,marginTop:d.spacing.md}],numberOfLines:2,children:a}):null]});return n?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"auto",style:[_.overlay,{backgroundColor:y},c],children:b}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_.inline,c],children:b})});Spinner.displayName="Spinner";const buildStyles=e=>_reactNative.StyleSheet.create({inline:{alignItems:"center",justifyContent:"center"},inlineContent:{alignItems:"center",justifyContent:"center"},overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3},overlayContent:{alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.elevated,borderRadius:e.radius.lg,..._corners.smoothCorners,paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.xl,minWidth:140,...e.shadows.lg},dotsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},message:{textAlign:"center"}});var _default=exports.default=Spinner;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Spinner=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_squircle=require("../../utils/squircle.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:20,md:32,lg:48},CONTAINER_RATIO=1.5,DOT_COUNT=3,DOT_STAGGER_MS=150,DOT_CYCLE_MS=600,Dot=({size:e,color:t,delay:i,duration:r})=>{const n=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;return(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(n,{toValue:1.4,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(n,{toValue:1,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[n,i,r]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:e/2,..._corners.smoothCorners,backgroundColor:t,transform:[{scale:n}]}})},Spinner=exports.Spinner=(0,_react.forwardRef)((e,t)=>{const{size:i="md",color:r,message:n,overlay:a=!1,backdropColor:s,variant:o="circular",accessibilityLabel:c,style:l,testID:u}=e,d="contained"===o,g=a&&!d,_=(0,_index.useTheme)(),m=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(m,{toValue:1,duration:_.motion.duration.normal,easing:_reactNative.Easing.bezier(..._.motion.easing.standard),useNativeDriver:!0}).start()},[m,_]);const y=(0,_react.useMemo)(()=>buildStyles(_),[_]),v=sizeMap[i],h=r??_.colors.primary,x=s??_.colors.background.overlay,p=(0,_react.useMemo)(()=>{if("contained"===o){const e=Math.round(1.5*v);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[y.container,{width:e,height:e,borderRadius:e/2,backgroundColor:(0,_color.blendOf)(h,.14,_.colors.background.elevated,_.colors.background.secondary)}],children:(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:h,size:"sm"===i?"small":"large",style:{width:v,height:v}})})}if("dots"===o){const e=Math.max(6,Math.round(v/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[y.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:h,delay:150*i,duration:600},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:h,size:"sm"===i?"small":"large",style:{width:v,height:v}})},[o,i,v,h,y.dotsRow,y.container,_.colors.background.elevated,_.colors.background.secondary]),j=c??n??"Loading",f=(0,_react.useRef)(j);f.current=j,(0,_react.useEffect)(()=>{d&&(0,_announce.announce)(f.current)},[d]);const b=(0,_SquircleFill.useSquircle)(g,_.radius.lg),N=b.active&&b.size?{borderRadius:(0,_squircle.squircleHostRadius)(b.size.width,b.size.height,_.radius.lg)}:null;let R=y.inlineContent;g?R=y.overlayContent:d&&(R=y.containedContent);const S=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:d?"none":"polite",accessibilityLabel:j,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:b.onLayout,style:[R,N,{opacity:m}],children:[b.active&&b.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:b.size.width,height:b.size.height,radius:_.radius.lg,fill:_.colors.background.elevated}):null,p,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[y.message,{color:_.colors.text.primary,fontSize:_.typography.fontSize.base,fontWeight:_.typography.fontWeight.medium,marginTop:_.spacing.md}],numberOfLines:2,children:n}):null]});return g?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"auto",style:[y.overlay,{backgroundColor:x},l],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d?y.containedFill:y.inline,l],children:S})});Spinner.displayName="Spinner";const buildStyles=e=>_reactNative.StyleSheet.create({inline:{alignItems:"center",justifyContent:"center"},inlineContent:{alignItems:"center",justifyContent:"center"},containedFill:{flex:1,alignSelf:"stretch",alignItems:"center",justifyContent:"center",minHeight:Math.round(1.5*sizeMap.lg)+2*e.spacing.xl},containedContent:{alignItems:"center",justifyContent:"center",paddingHorizontal:e.spacing.lg},container:{alignItems:"center",justifyContent:"center"},overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3},overlayContent:{alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.elevated,borderRadius:e.radius.lg,..._corners.smoothCorners,paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.xl,minWidth:140,...e.shadows.lg},dotsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},message:{textAlign:"center"}});var _default=exports.default=Spinner;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.StatTile=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../Card/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const isText=e=>"string"==typeof e||"number"==typeof e,StatTile=exports.StatTile=(0,_react.forwardRef)((e,t)=>{const{label:i,value:n,icon:s,iconVariant:r,tone:a="primary",caption:x,onPress:l,loading:d=!1,accessibilityLabel:c,style:o,testID:u}=e,_=(0,_index.useTheme)(),j=c??(isText(n)?`${i}, ${n}`:void 0);return d?(0,_jsxRuntime.jsx)(_index2.Card,{ref:t,variant:"outlined",style:o,testID:u,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:_.spacing.md}],children:[void 0===s?null:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:12}),(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"35%",height:24,style:{marginTop:_.spacing.xs}})]})]})}):(0,_jsxRuntime.jsx)(_index2.Card,{ref:t,variant:"outlined",onPress:l,accessibilityLabel:j,style:o,testID:u,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:_.spacing.md}],children:[void 0===s?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:s,iconVariant:r,tone:a}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:i}),isText(n)?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"h3",numberOfLines:1,children:n}):n,null==x||""===x?null:isText(x)?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",numberOfLines:1,children:x}):x]})]})})});StatTile.displayName="StatTile";const styles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},text:{flex:1,minWidth:0}});var _default=exports.default=StatTile;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.StatTile=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Card/index.js"),_index4=require("../IconBadge/index.js"),_index5=require("../Skeleton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const isText=e=>"string"==typeof e||"number"==typeof e,TREND_ICON={up:"arrow-up",down:"arrow-down",flat:"minus"},TREND_WORD={up:"up",down:"down",flat:"no change"},TREND_SIGN={up:"+",down:"-",flat:""},percentText=e=>(0,_mobileCore.formatPercent)(Math.abs(e),{scale:"percent",maximumFractionDigits:1}),trendFigure=e=>"number"==typeof e.value?`${TREND_SIGN[e.direction]}${percentText(e.value)}`:e.value,trendSpoken=e=>{const t=[TREND_WORD[e.direction]];return"flat"!==e.direction&&t.push("number"==typeof e.value?percentText(e.value):e.value),e.period&&t.push(e.period),t.join(" ")},StatTile=exports.StatTile=(0,_react.forwardRef)((e,t)=>{const{label:i,value:n,icon:r,iconVariant:s,tone:a="primary",caption:o,trend:l,sparkline:x,onPress:c,loading:d=!1,accessibilityLabel:u,style:_,testID:p}=e,m=(0,_index.useTheme)(),j=l?`, ${trendSpoken(l)}`:"",h=u??(isText(n)?`${i}, ${n}${j}`:void 0),y=!!l&&l.direction===(l.goodWhen??"up"),v=l&&"flat"!==l.direction?y?"success":"error":"secondary",T="secondary"===v?m.colors.text.secondary:m.colors.toneText[v];return d?(0,_jsxRuntime.jsx)(_index3.Card,{ref:t,variant:"outlined",style:_,testID:p,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:m.spacing.md}],children:[void 0===r?null:(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"circle",width:40,height:40}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"text",width:"50%",height:12}),(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"text",width:"35%",height:24,style:{marginTop:m.spacing.xs}})]})]})}):(0,_jsxRuntime.jsx)(_index3.Card,{ref:t,variant:"outlined",onPress:c,accessibilityLabel:h,style:_,testID:p,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:m.spacing.md}],children:[void 0===r?null:(0,_jsxRuntime.jsx)(_index4.IconBadge,{icon:r,iconVariant:s,tone:a}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:i}),isText(n)?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"h3",numberOfLines:1,children:n}):n,l?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.trend,{columnGap:m.spacing.xxs}],testID:p?`${p}-trend`:void 0,children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:TREND_ICON[l.direction],size:"xs",color:T}),(0,_jsxRuntime.jsxs)(_index6.Text,{variant:"caption",color:v,numberOfLines:2,style:styles.text,children:[trendFigure(l),l.period?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"tertiary",children:` ${l.period}`}):null]})]}):null,null==o||""===o?null:isText(o)?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"tertiary",numberOfLines:1,children:o}):o,null==x?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginTop:m.spacing.sm},children:x})]})]})})});StatTile.displayName="StatTile";const styles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},text:{flex:1,minWidth:0},trend:{flexDirection:"row",alignItems:"center"}});var _default=exports.default=StatTile;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TimePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_PickerTrigger=require("../PickerTrigger/PickerTrigger.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const ITEM_HEIGHT=40,VISIBLE_ITEMS=5,PICKER_HEIGHT=200,CENTER_OFFSET=Math.floor(2.5),HAPTIC_DEBOUNCE_MS=35,range=(e,t,i=1)=>{const a=[];for(let r=e;r<=t;r+=i)a.push(r);return a},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,i)=>"24h"===i?e:"AM"===t?12===e?0:e:12===e?12:e+12,from24h=(e,t)=>"24h"===t?{displayHour:e,period:"AM"}:0===e?{displayHour:12,period:"AM"}:12===e?{displayHour:12,period:"PM"}:e>12?{displayHour:e-12,period:"PM"}:{displayHour:e,period:"AM"},clampMinuteToStep=(e,t)=>{const i=Math.round(e/t)*t;return Math.min(59,Math.max(0,i))},Wheel=({kind:e,label:t,data:i,selectedIndex:a,onIndexChange:r,formatItem:n,theme:s,haptic:o,testID:c})=>{const l=(0,_react.useRef)(null),u=(0,_react.useRef)((0,_index.createAnimatedValue)(40*a)).current,d=(0,_react.useRef)(a),m=(0,_react.useRef)(0);(0,_react.useEffect)(()=>{if(d.current!==a){d.current=a;const e=40*a;(0,_index.setNativeValue)(u,e),requestAnimationFrame(()=>{l.current?.scrollToOffset({offset:e,animated:!1})})}},[a,u]);const p=s.components.timePicker?.hapticDebounceMs??35,h=(0,_react.useMemo)(()=>_reactNative.Animated.event([{nativeEvent:{contentOffset:{y:u}}}],{useNativeDriver:!0,listener:e=>{const t=e.nativeEvent.contentOffset.y,a=Math.round(t/40);if(a!==d.current&&a>=0&&a<i.length){const e=Date.now();if(e-m.current>=p){const t=(0,_hapticUtils.resolveHaptic)(o,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),m.current=e}d.current=a}}}),[u,i.length,o,p]),_=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y,n=Math.max(0,Math.min(i.length-1,Math.round(t/40)));n!==a&&r(n)},[i.length,r,a]),g=(0,_react.useCallback)(e=>{const t=e.nativeEvent.actionName;if("increment"===t){const e=Math.min(i.length-1,a+1);e!==a&&r(e)}else if("decrement"===t){const e=Math.max(0,a-1);e!==a&&r(e)}},[i.length,r,a]),x=(0,_react.useCallback)(({item:e,index:t})=>{const i=_reactNative.Animated.subtract(_reactNative.Animated.divide(u,40),t),r=i.interpolate({inputRange:[-2,-1,0,1,2],outputRange:[.3,.6,1,.6,.3],extrapolate:"clamp"}),o=i.interpolate({inputRange:[-2,-1,0,1,2],outputRange:[.85,.95,1.05,.95,.85],extrapolate:"clamp"}),c=t===a;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.wheelItem,{opacity:r,transform:[{scale:o}]}],accessible:!1,importantForAccessibility:"no",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:s.typography.fontSize.xl,color:c?s.colors.text.primary:s.colors.text.secondary,fontWeight:c?s.typography.fontWeight.semibold:s.typography.fontWeight.medium,letterSpacing:s.typography.letterSpacing.normal}],children:n(e)})})},[u,a,s,n]),y=(0,_react.useCallback)((t,i)=>`${e}-${String(t)}-${i}`,[e]),f=(0,_react.useCallback)((e,t)=>({length:40,offset:40*t,index:t}),[]),v=n(i[a]??"");return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.wheelColumn,testID:c,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:styles.wheelA11yLayer,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:t,accessibilityValue:{text:v},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:g}),(0,_jsxRuntime.jsx)(_reactNative.Animated.FlatList,{ref:l,data:i,keyExtractor:y,renderItem:x,getItemLayout:f,showsVerticalScrollIndicator:!1,snapToInterval:40,snapToAlignment:"start",decelerationRate:"fast",bounces:!1,scrollEventThrottle:16,onScroll:h,onMomentumScrollEnd:_,contentContainerStyle:{paddingVertical:40*CENTER_OFFSET},initialScrollIndex:a,style:styles.wheelList,importantForAccessibility:"no-hide-descendants"})]})},TimePicker=e=>{const{visible:t,value:i,onChange:a,onClose:r,format:n="12h",minuteStep:s=1,title:o="Select Time",confirmLabel:c="Confirm",cancelLabel:l="Cancel",testID:u,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:h,label:_,placeholder:g,helperText:x,error:y,required:f,disabled:v,size:b,variant:j,clearable:N,onClear:R,formatValue:S,triggerStyle:C,haptic:w}=e,T=void 0!==e.visible,[k,I]=(0,_react.useState)(!1),M=T?t:k,A=T?u:u?`${u}-modal`:void 0,D=(0,_index.useTheme)(),E=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),H=(0,_react.useMemo)(()=>buildStyles(D),[D]),P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,V=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,L=(0,_react.useRef)(0),F=(0,_react.useCallback)(()=>{T?r?.():I(!1)},[T,r]),O=(0,_react.useCallback)(()=>{_reactNative.Animated.parallel([_reactNative.Animated.timing(P,{toValue:0,duration:D.motion.duration.fast,easing:_reactNative.Easing.bezier(...D.motion.easing.accelerate),useNativeDriver:!1}),_reactNative.Animated.timing(V,{toValue:40,duration:D.motion.duration.fast,easing:_reactNative.Easing.bezier(...D.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>F())},[F,P,V,D.motion.duration.fast,D.motion.easing.accelerate]),{handleGesture:q}=(0,_useDragToDismiss.useDragToDismiss)({drag:B,travel:()=>L.current||320,onDismiss:O}),W=(0,_react.useMemo)(()=>"24h"===n?range(0,23):range(1,12),[n]),$=(0,_react.useMemo)(()=>range(0,59,s),[s]),z=(0,_react.useMemo)(()=>["AM","PM"],[]),G=(0,_react.useMemo)(()=>{const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,s),{displayHour:r,period:o}=from24h(e,n);return{displayHour:r,minute:a,period:o,hour24:e}},[i,n,s]),[U,K]=(0,_react.useState)(()=>{const e=W.indexOf(G.displayHour);return e>=0?e:0}),[Y,J]=(0,_react.useState)(()=>{const e=$.indexOf(G.minute);return e>=0?e:0}),[Q,X]=(0,_react.useState)(()=>"PM"===G.period?1:0);(0,_react.useEffect)(()=>{if(!M)return;const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,s),{displayHour:r,period:o}=from24h(e,n),c=W.indexOf(r);K(c>=0?c:0);const l=$.indexOf(a);J(l>=0?l:0),X("PM"===o?1:0)},[M,i,n,s,W,$]),(0,_react.useEffect)(()=>{let e;return M?(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(P,{toValue:1,duration:D.motion.duration.normal,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!1}),_reactNative.Animated.spring(V,{toValue:0,damping:D.motion.spring.snappy.damping,stiffness:D.motion.spring.snappy.stiffness,mass:D.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()):(P.setValue(0),(0,_index.setNativeValue)(V,40),(0,_index.setNativeValue)(B,0)),()=>e?.stop()},[M,P,V,B,D.motion]);const Z=(0,_react.useCallback)(e=>{"ios"!==_reactNative.Platform.OS&&"android"!==_reactNative.Platform.OS||_reactNative.AccessibilityInfo.announceForAccessibility(e)},[]),ee=(0,_react.useCallback)(e=>{K(e),Z(`Hour ${W[e]}`)},[W,Z]),te=(0,_react.useCallback)(e=>{J(e),Z(`${$[e]} minutes`)},[$,Z]),ie=(0,_react.useCallback)(e=>{X(e),Z(z[e]??"")},[z,Z]),ae=(0,_react.useCallback)(()=>{!1!==w&&(0,_hapticUtils.triggerHaptic)("selection"),O()},[O,w]),re=(0,_react.useCallback)(()=>{const e=W[U]??0,t=z[Q]??"AM",i=to24h(e,t,n),r=$[Y]??0;!1!==w&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),a?.({hour:i,minute:r}),O()},[W,U,z,Q,$,Y,n,a,O,w]),ne=(0,_react.useMemo)(()=>{const e=W[U]??0,t=$[Y]??0;if("24h"===n)return`${pad2(e)}:${pad2(t)}`;const i=z[Q]??"AM";return`${pad2(e)}:${pad2(t)} ${i}`},[W,U,$,Y,z,Q,n]),se=(0,_react.useCallback)(e=>pad2(Number(e)),[]),oe=(0,_react.useCallback)(e=>pad2(Number(e)),[]),ce=(0,_react.useCallback)(e=>String(e),[]),le=(0,_react.useCallback)(e=>{if("24h"===n)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:i}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${i}`},[n]),ue=!T&&i&&Number.isFinite(i.hour)&&Number.isFinite(i.minute)?(S??le)(i):void 0,de=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:M,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:O,testID:A,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,style:H.backdrop,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:O,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[H.sheet,{paddingBottom:Math.max(E.bottom,D.spacing.lg),transform:[{translateY:_reactNative.Animated.add(V,B)}]},d,m],onLayout:e=>{L.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[H.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${ne}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:H.summary,children:ne})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H.wheelsRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:H.selectionBand,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.bandLine}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[H.bandLine,H.bandLineBottom]})]}),(0,_jsxRuntime.jsx)(Wheel,{kind:"hour",label:"Hour",data:W,selectedIndex:U,onIndexChange:ee,formatItem:se,theme:D,haptic:w,testID:"time-picker-hour"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:H.separator,children:":"}),(0,_jsxRuntime.jsx)(Wheel,{kind:"minute",label:"Minute",data:$,selectedIndex:Y,onIndexChange:te,formatItem:oe,theme:D,haptic:w,testID:"time-picker-minute"}),"12h"===n?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.spacer}),(0,_jsxRuntime.jsx)(Wheel,{kind:"period",label:"Period",data:z,selectedIndex:Q,onIndexChange:ie,formatItem:ce,theme:D,haptic:w,testID:"time-picker-period"})]}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:l,haptic:!1,variant:"ghost",tone:"neutral",onPress:ae,style:[H.footerBtn,h],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:c,variant:"solid",tone:"primary",haptic:!1,onPress:re,style:[H.footerBtn,h],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})});return T?de:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:_,placeholder:g,helperText:x,error:y,required:f,disabled:v,size:b,variant:j,clearable:N,onClear:R,value:ue,onPress:()=>I(!0),triggerStyle:C,testID:u}),de]})};exports.TimePicker=TimePicker;const styles=_reactNative.StyleSheet.create({wheelColumn:{width:64,height:200,overflow:"hidden"},wheelList:{flexGrow:0,height:200},wheelItem:{height:40,alignItems:"center",justifyContent:"center"},wheelA11yLayer:{..._reactNative.StyleSheet.absoluteFill,zIndex:2}}),buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:e.colors.background.overlay,justifyContent:"flex-end"},sheet:{backgroundColor:e.colors.background.elevated,borderTopLeftRadius:e.radius.xl,borderTopRightRadius:e.radius.xl,..._corners.smoothCorners,paddingTop:e.spacing.sm,paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.xl,shadowColor:t.shadowColor,shadowOffset:t.shadowOffset,shadowOpacity:t.shadowOpacity,shadowRadius:t.shadowRadius,elevation:t.elevation},handle:{alignSelf:"center",width:e.components.timePicker?.handleWidth??36,height:e.components.timePicker?.handleHeight??4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.border.secondary,marginBottom:e.spacing.sm},title:{textAlign:"center",fontSize:e.typography.fontSize.lg,fontWeight:e.typography.fontWeight.semibold,color:e.colors.text.primary,marginBottom:e.spacing.sm},summaryWrap:{alignItems:"center",marginBottom:e.spacing.md},summary:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.primary,letterSpacing:e.typography.letterSpacing.wide},wheelsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",height:200,position:"relative",marginBottom:e.spacing.lg},selectionBand:{position:"absolute",left:0,right:0,top:40*CENTER_OFFSET,height:40,justifyContent:"space-between"},bandLine:{height:2*_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.primary,opacity:.85},bandLineBottom:{},separator:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.text.primary,paddingHorizontal:e.spacing.xs},spacer:{width:e.spacing.md},footer:{flexDirection:"row",justifyContent:"flex-end",alignItems:"center",gap:e.spacing.sm},footerBtn:{paddingHorizontal:e.spacing.lg}})};var _default=exports.default=TimePicker;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TimePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_PickerTrigger=require("../PickerTrigger/PickerTrigger.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_index2=require("../WheelPicker/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const range=(e,t,i=1)=>{const a=[];for(let r=e;r<=t;r+=i)a.push(r);return a},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,i)=>"24h"===i?e:"AM"===t?12===e?0:e:12===e?12:e+12,from24h=(e,t)=>"24h"===t?{displayHour:e,period:"AM"}:0===e?{displayHour:12,period:"AM"}:12===e?{displayHour:12,period:"PM"}:e>12?{displayHour:e-12,period:"PM"}:{displayHour:e,period:"AM"},clampMinuteToStep=(e,t)=>{const i=Math.round(e/t)*t;return Math.min(59,Math.max(0,i))},TimePicker=e=>{const{visible:t,value:i,onChange:a,onClose:r,format:s="12h",minuteStep:n=1,title:o="Select Time",confirmLabel:l="Confirm",cancelLabel:c="Cancel",testID:u,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:g,label:h,placeholder:_,helperText:x,error:f,required:v,disabled:y,size:b,variant:j,clearable:N,onClear:M,formatValue:k,triggerStyle:R,haptic:S}=e,T=void 0!==e.visible,[D,P]=(0,_react.useState)(!1),C=T?t:D,w=T?u:u?`${u}-modal`:void 0,H=(0,_index.useTheme)(),A=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),q=(0,_react.useMemo)(()=>buildStyles(H),[H]),V=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,B=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,$=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,I=(0,_react.useRef)(0),L=(0,_react.useCallback)(()=>{T?r?.():P(!1)},[T,r]),O=(0,_react.useCallback)(()=>{_reactNative.Animated.parallel([_reactNative.Animated.timing(V,{toValue:0,duration:H.motion.duration.fast,easing:_reactNative.Easing.bezier(...H.motion.easing.accelerate),useNativeDriver:!1}),_reactNative.Animated.timing(B,{toValue:40,duration:H.motion.duration.fast,easing:_reactNative.Easing.bezier(...H.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>L())},[L,V,B,H.motion.duration.fast,H.motion.easing.accelerate]),{handleGesture:z}=(0,_useDragToDismiss.useDragToDismiss)({drag:$,travel:()=>I.current||320,onDismiss:O}),W=(0,_react.useMemo)(()=>"24h"===s?range(0,23):range(1,12),[s]),F=(0,_react.useMemo)(()=>range(0,59,n),[n]),E=(0,_react.useMemo)(()=>["AM","PM"],[]),G=(0,_react.useMemo)(()=>{const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s);return{displayHour:r,minute:a,period:o,hour24:e}},[i,s,n]),[U,Y]=(0,_react.useState)(()=>{const e=W.indexOf(G.displayHour);return e>=0?e:0}),[J,K]=(0,_react.useState)(()=>{const e=F.indexOf(G.minute);return e>=0?e:0}),[Q,X]=(0,_react.useState)(()=>"PM"===G.period?1:0);(0,_react.useEffect)(()=>{if(!C)return;const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s),l=W.indexOf(r);Y(l>=0?l:0);const c=F.indexOf(a);K(c>=0?c:0),X("PM"===o?1:0)},[C,i,s,n,W,F]),(0,_react.useEffect)(()=>{let e;return C?(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(V,{toValue:1,duration:H.motion.duration.normal,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!1}),_reactNative.Animated.spring(B,{toValue:0,damping:H.motion.spring.snappy.damping,stiffness:H.motion.spring.snappy.stiffness,mass:H.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()):(V.setValue(0),(0,_index.setNativeValue)(B,40),(0,_index.setNativeValue)($,0)),()=>e?.stop()},[C,V,B,$,H.motion]);const Z=(0,_react.useCallback)((e,t)=>{"hour"===e?Y(Math.max(0,W.indexOf(Number(t)))):"minute"===e?K(Math.max(0,F.indexOf(Number(t)))):X("PM"===t?1:0)},[W,F]),ee=(0,_react.useCallback)(()=>{!1!==S&&(0,_hapticUtils.triggerHaptic)("selection"),O()},[O,S]),te=(0,_react.useCallback)(()=>{const e=W[U]??0,t=E[Q]??"AM",i=to24h(e,t,s),r=F[J]??0;!1!==S&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),a?.({hour:i,minute:r}),O()},[W,U,E,Q,F,J,s,a,O,S]),ie=(0,_react.useMemo)(()=>{const e=W[U]??0,t=F[J]??0;if("24h"===s)return`${pad2(e)}:${pad2(t)}`;const i=E[Q]??"AM";return`${pad2(e)}:${pad2(t)} ${i}`},[W,U,F,J,E,Q,s]),ae=(0,_react.useMemo)(()=>W.map(e=>({value:e,label:pad2(e),accessibilityLabel:`Hour ${e}`})),[W]),re=(0,_react.useMemo)(()=>F.map(e=>({value:e,label:pad2(e),accessibilityLabel:`${e} minutes`})),[F]),se=(0,_react.useMemo)(()=>E.map(e=>({value:e,label:e})),[E]),ne=(0,_react.useMemo)(()=>{const e=[{key:"hour",label:"Hour",items:ae,value:W[U]??0,separator:":",testID:"time-picker-hour"},{key:"minute",label:"Minute",items:re,value:F[J]??0,gapAfter:"12h"===s?H.spacing.md:void 0,testID:"time-picker-minute"}];return"12h"===s&&e.push({key:"period",label:"Period",items:se,value:E[Q]??"AM",testID:"time-picker-period"}),e},[ae,re,se,W,U,F,J,E,Q,s,H.spacing.md]),oe=(0,_react.useCallback)(e=>{if("24h"===s)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:i}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${i}`},[s]),le=!T&&i&&Number.isFinite(i.hour)&&Number.isFinite(i.minute)?(k??oe)(i):void 0,ce=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:C,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:O,testID:w,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,style:q.backdrop,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:O,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[q.sheet,{paddingBottom:Math.max(A.bottom,H.spacing.lg),transform:[{translateY:_reactNative.Animated.add(B,$)}]},d,m],onLayout:e=>{I.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:z,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${ie}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:q.summary,children:ie})}),(0,_jsxRuntime.jsx)(_index2.WheelPicker,{columns:ne,onChange:Z,haptic:S,style:q.wheels}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:c,haptic:!1,variant:"ghost",tone:"neutral",onPress:ee,style:[q.footerBtn,g],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:l,variant:"solid",tone:"primary",haptic:!1,onPress:te,style:[q.footerBtn,g],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})});return T?ce:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:h,placeholder:_,helperText:x,error:f,required:v,disabled:y,size:b,variant:j,clearable:N,onClear:M,value:le,onPress:()=>P(!0),triggerStyle:R,testID:u}),ce]})};exports.TimePicker=TimePicker;const buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:e.colors.background.overlay,justifyContent:"flex-end"},sheet:{backgroundColor:e.colors.background.elevated,borderTopLeftRadius:e.radius.xl,borderTopRightRadius:e.radius.xl,..._corners.smoothCorners,paddingTop:e.spacing.sm,paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.xl,shadowColor:t.shadowColor,shadowOffset:t.shadowOffset,shadowOpacity:t.shadowOpacity,shadowRadius:t.shadowRadius,elevation:t.elevation},handle:{alignSelf:"center",width:e.components.timePicker?.handleWidth??36,height:e.components.timePicker?.handleHeight??4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.border.secondary,marginBottom:e.spacing.sm},title:{textAlign:"center",fontSize:e.typography.fontSize.lg,fontWeight:e.typography.fontWeight.semibold,color:e.colors.text.primary,marginBottom:e.spacing.sm},summaryWrap:{alignItems:"center",marginBottom:e.spacing.md},summary:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.primary,letterSpacing:e.typography.letterSpacing.wide},wheels:{marginBottom:e.spacing.lg},footer:{flexDirection:"row",justifyContent:"flex-end",alignItems:"center",gap:e.spacing.sm},footerBtn:{paddingHorizontal:e.spacing.lg}})};var _default=exports.default=TimePicker;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SWIPE_DISMISS_THRESHOLD=80,DEFAULT_SWIPE_VELOCITY_THRESHOLD=.5,DEFAULT_STACK_OFFSET=8,DEFAULT_STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,Toast=({toast:e,index:t,onDismiss:i,shownAt:a})=>{const r=(0,_index.useTheme)(),n=e.variant??"default",s=e.position??"bottom",o=(0,_react.useMemo)(()=>buildStyles(r),[r]),c=(0,_react.useMemo)(()=>tintFor(r,n),[r,n]),l=(0,_react.useMemo)(()=>inkFor(r,n),[r,n]),d=r.components.toast,u=d?.iconCircleSize??28,m=d?.iconCircleBorderRadius??14,p=d?.iconGlyphFontSize??16,_=d?.tintBarWidth??0,g=d?.swipeDismissThreshold??80,f=d?.swipeVelocityThreshold??.5,v=d?.stackOffset??8,x=d?.stackScaleStep??.04,h=d?.stackMinScale??.9,y=d?.defaultDurationMs??3e3,N=d?.enableSwipeDismiss??!0,S=d?.enterSpringDamping??18,b=d?.enterSpringStiffness??180,R=d?.enterSpringMass??1,T="top"===s?-120:120,A=(0,_react.useRef)((0,_index.createAnimatedValue)(T)).current,w=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,j=(0,_react.useRef)(!1),V="top"===s?t*v:-t*v,M=Math.max(1-t*x,h),C=(0,_react.useRef)((0,_index.createAnimatedValue)(V)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(C,V)},[V,C]);const E=(0,_react.useMemo)(()=>_reactNative.Animated.add(A,C),[A,C]),dismiss=()=>{j.current||(j.current=!0,_reactNative.Animated.parallel([_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0}),_reactNative.Animated.timing(A,{toValue:T,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>i(e.id)))};(0,_react.useEffect)(()=>{const t=_reactNative.Animated.parallel([_reactNative.Animated.spring(A,{toValue:0,damping:S,stiffness:b,mass:R,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]);t.start();const i=e.duration??y;if(i>0){const e=void 0===a?0:Date.now()-a,r=setTimeout(()=>dismiss(),Math.max(i-e,0));return()=>{t.stop(),clearTimeout(r)}}return()=>t.stop()},[]);const L=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(w,t.dx);const i=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(D,i)},onPanResponderTerminate:()=>{_reactNative.Animated.parallel([_reactNative.Animated.spring(w,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,a)=>{if(Math.abs(a.dx)>g||Math.abs(a.vx)>f){const t=a.dx>=0?1:-1;_reactNative.Animated.parallel([_reactNative.Animated.timing(w,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,useNativeDriver:!0})]).start(()=>{j.current=!0,i(e.id)})}else _reactNative.Animated.parallel([_reactNative.Animated.spring(w,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(D,{toValue:1,useNativeDriver:!0})]).start()}}),[w,D,g,f,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,i,e.id]),F=e.description?`${e.message}. ${e.description}`:e.message;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...N?L.panHandlers:{},accessibilityRole:"alert",accessibilityLiveRegion:"assertive",accessibilityLabel:F,testID:e.testID,style:[o.container,{backgroundColor:r.colors.background.elevated,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.spacing.md,...r.shadows.md,shadowColor:r.shadows.md.shadowColor,opacity:D,transform:[{translateY:E},{translateX:w},{scale:M}]},e.style,e.containerStyle],children:[_>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[o.tintBar,{width:_,backgroundColor:c}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(n);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[o.iconCircle,{width:u,height:u,borderRadius:m,..._corners.smoothCorners,backgroundColor:c+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.iconGlyph,{color:l,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.message,{color:r.colors.text.primary,fontSize:r.typography.fontSize.base,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.description,{color:r.colors.text.secondary,fontSize:r.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.action.label,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[o.actionBtn,{backgroundColor:t?r.colors.surface.pressed:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:c,fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]})]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"error":return e.colors.error;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors.text.primary}},inkFor=(e,t)=>{switch(t){case"success":return e.colors.toneText.success;case"error":return e.colors.toneText.error;case"warning":return e.colors.toneText.warning;case"info":return e.colors.toneText.info;default:return e.colors.text.primary}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"error":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:4},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:8},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:12},iconGlyph:{fontWeight:"700",lineHeight:18},textBlock:{flex:1,paddingRight:8},message:{lineHeight:20},description:{marginTop:2,lineHeight:18},actionBtn:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,..._corners.smoothCorners,marginLeft:8}});var _default=exports.default=Toast;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SWIPE_DISMISS_THRESHOLD=80,DEFAULT_SWIPE_VELOCITY_THRESHOLD=.5,DEFAULT_STACK_OFFSET=8,DEFAULT_STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,WEB_ACTION_MIN_DURATION_MS=8e3,COUNTDOWN_BAR_HEIGHT=3,ACTION_HIT_SLOP={top:8,bottom:8,left:8,right:8},DISMISS_ACTIONS=[{name:"dismiss",label:"Dismiss"}],Toast=({toast:e,index:t,onDismiss:i,shownAt:a,runtime:n})=>{const r=(0,_index.useTheme)(),s=e.variant??"default",o=e.position??"bottom",c=(0,_react.useMemo)(()=>buildStyles(r),[r]),l=(0,_react.useMemo)(()=>tintFor(r,s),[r,s]),u=(0,_react.useMemo)(()=>inkFor(r,s),[r,s]),d=r.components.toast,m=d?.iconCircleSize??28,_=d?.iconCircleBorderRadius??14,p=d?.iconGlyphFontSize??16,g=d?.tintBarWidth??0,v=d?.swipeDismissThreshold??80,h=d?.swipeVelocityThreshold??.5,f=d?.stackOffset??8,x=d?.stackScaleStep??.04,N=d?.stackMinScale??.9,b=d?.defaultDurationMs??3e3,S=d?.enableSwipeDismiss??!0,y=d?.enterSpringDamping??18,A=d?.enterSpringStiffness??180,R=d?.enterSpringMass??1,w="top"===o?-120:120,T=(0,_react.useRef)((0,_index.createAnimatedValue)(w)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,C=(0,_react.useRef)(!1),j="top"===o?t*f:-t*f,V=Math.max(1-t*x,N),E=(0,_react.useRef)((0,_index.createAnimatedValue)(j)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(E,j)},[j,E]);const I=(0,_react.useMemo)(()=>_reactNative.Animated.add(T,E),[T,E]),k=(0,_useReducedMotion.useReducedMotion)(),O=void 0!==e.action,L=e.duration??b,P=L>0&&O&&"web"===_reactNative.Platform.OS?Math.max(L,8e3):L,F=P<=0||O&&!0===n?.screenReaderOn,B=!0===e.countdown&&!F,H=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,z=(0,_react.useRef)({initialised:!1,timer:null,remaining:0,startedAt:0}),U=(0,_react.useRef)({touch:!1,pan:!1,hover:!1}),G=(0,_react.useRef)(()=>{}),q=(0,_react.useRef)({id:e.id,totalMs:P,shownAt:a,runtime:n,persistent:F,animateBar:!1});q.current={id:e.id,totalMs:P,shownAt:a,runtime:n,persistent:F,animateBar:B&&!k};const W=(0,_react.useCallback)(()=>{const e=z.current,t=q.current,i=U.current;if(!e.initialised){e.initialised=!0;const i=t.runtime?.readRemaining(t.id),a=void 0===t.shownAt?0:Date.now()-t.shownAt;e.remaining=i??(t.totalMs>0?Math.max(t.totalMs-a,0):0),t.totalMs>0&&e.remaining<t.totalMs&&(0,_index.setNativeValue)(H,e.remaining/t.totalMs)}const a=!(t.persistent||C.current||i.touch||i.pan||i.hover);a&&null===e.timer?(e.startedAt=Date.now(),e.timer=setTimeout(()=>{e.timer=null,e.remaining=0,G.current()},e.remaining),t.animateBar&&_reactNative.Animated.timing(H,{toValue:0,duration:e.remaining,easing:_reactNative.Easing.linear,useNativeDriver:!0}).start()):a||null===e.timer||(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0),H.stopAnimation())},[H]),dismiss=()=>{C.current||(C.current=!0,W(),_reactNative.Animated.parallel([_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0}),_reactNative.Animated.timing(T,{toValue:w,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>i(e.id)))};G.current=dismiss,(0,_react.useEffect)(()=>{const e=_reactNative.Animated.parallel([_reactNative.Animated.spring(T,{toValue:0,damping:y,stiffness:A,mass:R,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[]),(0,_react.useEffect)(()=>{W()},[F,W]),(0,_react.useEffect)(()=>()=>{const e=z.current,t=q.current;null!==e.timer&&(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0)),H.stopAnimation(),e.initialised&&t.totalMs>0&&!C.current&&t.runtime?.writeRemaining(t.id,e.remaining)},[H]);const $=(0,_react.useCallback)((e,t)=>{U.current[e]=t,W()},[W]),K=(0,_react.useCallback)(()=>$("touch",!0),[$]),X=(0,_react.useCallback)(e=>$("touch",(e.nativeEvent.touches?.length??0)>0),[$]),Y=(0,_react.useCallback)(()=>$("hover",!0),[$]),J=(0,_react.useCallback)(()=>$("hover",!1),[$]),Q=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderGrant:()=>$("pan",!0),onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(M,t.dx);const i=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(D,i)},onPanResponderTerminate:()=>{$("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.spring(M,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,a)=>{if(Math.abs(a.dx)>v||Math.abs(a.vx)>h){const t=a.dx>=0?1:-1;C.current=!0,$("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.timing(M,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,useNativeDriver:!0})]).start(()=>i(e.id))}else $("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.spring(M,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(D,{toValue:1,useNativeDriver:!0})]).start()}}),[M,D,$,v,h,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,i,e.id]),Z={accessibilityActions:DISMISS_ACTIONS,onAccessibilityAction:e=>{"dismiss"===e.nativeEvent.actionName&&dismiss()}},[ee,te]=(0,_react.useState)(0),ie=(0,_react.useMemo)(()=>H.interpolate({inputRange:[0,1],outputRange:[-ee,0]}),[H,ee]),ae=e.description?`${e.message}. ${e.description}`:e.message,ne=e.action&&B?`${e.action.label}, ${Math.ceil(P/1e3)} seconds`:e.action?.label;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...S?Q.panHandlers:{},...O?{}:{accessible:!0,...Z},..."web"===_reactNative.Platform.OS?{onPointerEnter:Y,onPointerLeave:J}:{},onTouchStart:K,onTouchEnd:X,onTouchCancel:X,accessibilityLabel:ae,testID:e.testID,style:[c.container,{backgroundColor:r.colors.background.elevated,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.spacing.md,...r.shadows.md,shadowColor:r.shadows.md.shadowColor,opacity:D,transform:[{translateY:I},{translateX:M},{scale:V}]},e.style,e.containerStyle],children:[g>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.tintBar,{width:g,backgroundColor:l}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(s);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.iconCircle,{width:m,height:m,borderRadius:_,..._corners.smoothCorners,backgroundColor:l+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.iconGlyph,{color:u,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.message,{color:r.colors.text.primary,fontSize:r.typography.fontSize.base,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.description,{color:r.colors.text.secondary,fontSize:r.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:ne,hitSlop:ACTION_HIT_SLOP,...Z,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[c.actionBtn,{backgroundColor:t?r.colors.surface.pressed:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:l,fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]}),B?(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",onLayout:e=>te(e.nativeEvent.layout.width),testID:"toast-countdown",style:[c.countdownTrack,{backgroundColor:l+"22"}],children:[k?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.countdownFill,{backgroundColor:l}]}):null,!k&&ee>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[c.countdownFill,{backgroundColor:l,transform:[{translateX:ie}]}]}):null]}):null]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"error":return e.colors.error;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors.text.primary}},inkFor=(e,t)=>{switch(t){case"success":return e.colors.toneText.success;case"error":return e.colors.toneText.error;case"warning":return e.colors.toneText.warning;case"info":return e.colors.toneText.info;default:return e.colors.text.primary}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"error":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:4},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:8},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:12},iconGlyph:{fontWeight:"700",lineHeight:18},textBlock:{flex:1,paddingRight:8},message:{lineHeight:20},description:{marginTop:2,lineHeight:18},countdownTrack:{position:"absolute",left:0,right:0,bottom:0,height:3,overflow:"hidden"},countdownFill:{position:"absolute",left:0,right:0,top:0,bottom:0},actionBtn:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,..._corners.smoothCorners,marginLeft:8}});var _default=exports.default=Toast;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useToast=exports.toast=exports.ToastProvider=exports.ToastHost=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Toast=_interopRequireDefault(require("./Toast.js")),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}const MAX_VISIBLE=3,ToastContext=(0,_react.createContext)(null),ToastHostContext=(0,_react.createContext)(null);let nextId=0;const makeId=()=>(nextId+=1,`toast-${Date.now().toString(36)}-${nextId.toString(36)}`),defaultHaptic=t=>{switch(t){case"error":return"notificationError";case"success":return"notificationSuccess";case"warning":return"notificationWarning";default:return"selection"}},resolveHaptics=(t,e)=>{if(!1===t)return!1;const o=t?.[e??"default"];return void 0===o?defaultHaptic(e):o};let nextHostId=0;const makeHostId=()=>(nextHostId+=1,nextHostId);let providerCount=0,activeApi=null;const setActiveApi=t=>{activeApi=t},getActiveApi=()=>activeApi,ToastProvider=({children:t,maxVisible:e=3,topOffset:o,bottomOffset:s,defaultDuration:r,haptics:a})=>{const i=(0,_react.useRef)({defaultDuration:r,haptics:a});i.current={defaultDuration:r,haptics:a};const[n,u]=(0,_react.useState)([]),[c,l]=(0,_react.useState)([]),d=(0,_react.useCallback)(t=>{u(e=>e.filter(e=>e.id!==t))},[]),p=(0,_react.useCallback)(()=>{u([])},[]),_=(0,_react.useCallback)(t=>{const o=makeId(),{defaultDuration:s,haptics:r}=i.current,a={...t,duration:t.duration??s,id:o,shownAt:Date.now()},n=void 0!==t.haptic?t.haptic:resolveHaptics(r,t.variant);return!1!==n&&(0,_hapticUtils.triggerHaptic)(n),u(t=>{const o=[...t,a];return o.length>e?o.slice(o.length-e):o}),o},[e]),f=(0,_react.useMemo)(()=>({show:_,hide:d,hideAll:p}),[_,d,p]);(0,_react.useEffect)(()=>(providerCount+=1,setActiveApi(f),()=>{providerCount-=1,providerCount<=0&&(providerCount=0,setActiveApi(null))}),[f]);const x=(0,_react.useCallback)(t=>{l(e=>[...e,t])},[]),m=(0,_react.useCallback)(t=>{l(e=>e.filter(e=>e!==t))},[]),v=c.length>0?c[c.length-1]:null,h=(0,_react.useMemo)(()=>({register:x,unregister:m,activeHostId:v,queue:n,hide:d,topOffset:o,bottomOffset:s}),[x,m,v,n,d,o,s]);return(0,_jsxRuntime.jsx)(ToastContext.Provider,{value:f,children:(0,_jsxRuntime.jsxs)(ToastHostContext.Provider,{value:h,children:[t,null===v?(0,_jsxRuntime.jsx)(ToastLayers,{queue:n,onDismiss:d,topOffset:o,bottomOffset:s}):null]})})};exports.ToastProvider=ToastProvider;let warnedHost=!1;const warnHostWithoutProvider=()=>{warnedHost||(warnedHost=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] <ToastHost /> rendered outside a <ToastProvider />; it renders nothing. Mount a provider near your app root."))},ToastHost=()=>{const t=(0,_react.useContext)(ToastHostContext),[e]=(0,_react.useState)(makeHostId),o=t?.register,s=t?.unregister;return(0,_react.useEffect)(()=>{if(o&&s)return o(e),()=>s(e);warnHostWithoutProvider()},[o,s,e]),t&&t.activeHostId===e?(0,_jsxRuntime.jsx)(ToastLayers,{queue:t.queue,onDismiss:t.hide,topOffset:t.topOffset,bottomOffset:t.bottomOffset}):null};exports.ToastHost=ToastHost;const ToastLayers=({queue:t,onDismiss:e,topOffset:o,bottomOffset:s})=>{const r=(0,_index.useTheme)(),a=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),i=(0,_react.useMemo)(()=>buildStyles(),[]),n=t.filter(t=>"top"===(t.position??"bottom")),u=t.filter(t=>"bottom"===(t.position??"bottom"));return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-top",pointerEvents:"box-none",style:[i.layer,i.top,{top:(o??a.top)+r.spacing.sm,paddingHorizontal:r.spacing.md}],children:n.map((t,o)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:t,index:n.length-1-o,shownAt:t.shownAt,onDismiss:e},t.id))}),(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-bottom",pointerEvents:"box-none",style:[i.layer,i.bottom,{bottom:(s??a.bottom)+r.spacing.sm,paddingHorizontal:r.spacing.md}],children:u.map((t,o)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:t,index:u.length-1-o,shownAt:t.shownAt,onDismiss:e},t.id))})]})},useToast=()=>{const t=(0,_react.useContext)(ToastContext);if(!t)throw new Error("useToast must be used within a <ToastProvider>.");return t};exports.useToast=useToast;let warned=!1;const warnNoProvider=()=>{warned||(warned=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] No <ToastProvider /> mounted; toast() calls are no-ops. Mount a provider near your app root."))},proxy=t=>{const e=getActiveApi();return e?t(e):(warnNoProvider(),"")},toast=exports.toast={show:t=>proxy(e=>e.show(t)),success:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"success"})),error:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"error"})),warning:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"warning"})),info:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"info"})),hideAll:()=>{const t=getActiveApi();t?t.hideAll():warnNoProvider()}},buildStyles=()=>_reactNative.StyleSheet.create({layer:{position:"absolute",left:0,right:0},top:{alignItems:"stretch"},bottom:{alignItems:"stretch"}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useToast=exports.toast=exports.ToastProvider=exports.ToastHost=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Toast=_interopRequireDefault(require("./Toast.js")),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const MAX_VISIBLE=3,UNDO_DEFAULT_DURATION_MS=6e3,UNDO_MIN_DURATION_MS=6e3,ToastContext=(0,_react.createContext)(null),ToastHostContext=(0,_react.createContext)(null);let nextId=0;const makeId=()=>(nextId+=1,`toast-${Date.now().toString(36)}-${nextId.toString(36)}`),defaultHaptic=e=>{switch(e){case"error":return"notificationError";case"success":return"notificationSuccess";case"warning":return"notificationWarning";default:return"selection"}},resolveHaptics=(e,t)=>{if(!1===e)return!1;const r=e?.[t??"default"];return void 0===r?defaultHaptic(t):r};let nextHostId=0;const makeHostId=()=>(nextHostId+=1,nextHostId),useScreenReaderEnabled=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{if("web"===_reactNative.Platform.OS)return;let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(r=>{e&&t(r)});const r=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,r.remove()}},[]),e};let providerCount=0,activeApi=null;const setActiveApi=e=>{activeApi=e},getActiveApi=()=>activeApi,ToastProvider=({children:e,maxVisible:t=3,topOffset:r,bottomOffset:o,defaultDuration:s,haptics:n})=>{const a=(0,_react.useRef)({defaultDuration:s,haptics:n});a.current={defaultDuration:s,haptics:n};const[i,u]=(0,_react.useState)([]),[c,d]=(0,_react.useState)([]),l=useScreenReaderEnabled(),p=(0,_react.useRef)(new Map),_=(0,_react.useRef)(new Map);(0,_react.useEffect)(()=>{const e=new Set(i.map(e=>e.id));for(const[t,r]of[...p.current])e.has(t)||(p.current.delete(t),r());for(const t of[..._.current.keys()])e.has(t)||_.current.delete(t)},[i]),(0,_react.useEffect)(()=>{const e=p.current;return()=>{for(const[t,r]of[...e])e.delete(t),r()}},[]);const f=(0,_react.useMemo)(()=>({screenReaderOn:l,readRemaining:e=>_.current.get(e),writeRemaining:(e,t)=>{_.current.set(e,t)}}),[l]),m=(0,_react.useCallback)(e=>{u(t=>t.filter(t=>t.id!==e))},[]),x=(0,_react.useCallback)(()=>{u([])},[]),v=(0,_react.useCallback)(e=>{const r=makeId(),{defaultDuration:o,haptics:s}=a.current,n={...e,duration:e.duration??o,id:r,shownAt:Date.now()},i=void 0!==e.haptic?e.haptic:resolveHaptics(s,e.variant);return!1!==i&&(0,_hapticUtils.triggerHaptic)(i),(0,_announce.announce)(e.description?`${e.message}. ${e.description}`:e.message,{polite:"error"!==e.variant}),u(r=>{const o=[...void 0===e.key?r:r.filter(t=>t.key!==e.key),n];return o.length>t?o.slice(o.length-t):o}),r},[t]),h=(0,_react.useCallback)((e,t)=>{const{onUndo:r,onCommit:o,undoLabel:s,duration:n,...a}=t,i={id:""},u=v({...a,message:e,duration:0===n?0:Math.max(n??6e3,6e3),countdown:!0,action:{label:s??"Undo",onPress:()=>{p.current.delete(i.id),r()}}});return i.id=u,o&&p.current.set(u,o),u},[v]),g=(0,_react.useMemo)(()=>({show:v,undo:h,hide:m,hideAll:x}),[v,h,m,x]);(0,_react.useEffect)(()=>(providerCount+=1,setActiveApi(g),()=>{providerCount-=1,providerCount<=0&&(providerCount=0,setActiveApi(null))}),[g]);const w=(0,_react.useCallback)(e=>{d(t=>[...t,e])},[]),b=(0,_react.useCallback)(e=>{d(t=>t.filter(t=>t!==e))},[]),T=c.length>0?c[c.length-1]:null,A=(0,_react.useMemo)(()=>({register:w,unregister:b,activeHostId:T,queue:i,hide:m,topOffset:r,bottomOffset:o,runtime:f}),[w,b,T,i,m,r,o,f]);return(0,_jsxRuntime.jsx)(ToastContext.Provider,{value:g,children:(0,_jsxRuntime.jsxs)(ToastHostContext.Provider,{value:A,children:[e,null===T?(0,_jsxRuntime.jsx)(ToastLayers,{queue:i,onDismiss:m,topOffset:r,bottomOffset:o,runtime:f}):null]})})};exports.ToastProvider=ToastProvider;let warnedHost=!1;const warnHostWithoutProvider=()=>{warnedHost||(warnedHost=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] <ToastHost /> rendered outside a <ToastProvider />; it renders nothing. Mount a provider near your app root."))},ToastHost=()=>{const e=(0,_react.useContext)(ToastHostContext),[t]=(0,_react.useState)(makeHostId),r=e?.register,o=e?.unregister;return(0,_react.useEffect)(()=>{if(r&&o)return r(t),()=>o(t);warnHostWithoutProvider()},[r,o,t]),e&&e.activeHostId===t?(0,_jsxRuntime.jsx)(ToastLayers,{queue:e.queue,onDismiss:e.hide,topOffset:e.topOffset,bottomOffset:e.bottomOffset,runtime:e.runtime}):null};exports.ToastHost=ToastHost;const ToastLayers=({queue:e,onDismiss:t,topOffset:r,bottomOffset:o,runtime:s})=>{const n=(0,_index.useTheme)(),a=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),i=(0,_react.useMemo)(()=>buildStyles(),[]),u=e.filter(e=>"top"===(e.position??"bottom")),c=e.filter(e=>"bottom"===(e.position??"bottom"));return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-top",pointerEvents:"box-none",style:[i.layer,i.top,{top:(r??a.top)+n.spacing.sm,paddingHorizontal:n.spacing.md}],children:u.map((e,r)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:e,index:u.length-1-r,shownAt:e.shownAt,runtime:s,onDismiss:t},e.id))}),(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-bottom",pointerEvents:"box-none",style:[i.layer,i.bottom,{bottom:(o??a.bottom)+n.spacing.sm,paddingHorizontal:n.spacing.md}],children:c.map((e,r)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:e,index:c.length-1-r,shownAt:e.shownAt,runtime:s,onDismiss:t},e.id))})]})},useToast=()=>{const e=(0,_react.useContext)(ToastContext);if(!e)throw new Error("useToast must be used within a <ToastProvider>.");return e};exports.useToast=useToast;let warned=!1;const warnNoProvider=()=>{warned||(warned=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] No <ToastProvider /> mounted; toast() calls are no-ops. Mount a provider near your app root."))},proxy=e=>{const t=getActiveApi();return t?e(t):(warnNoProvider(),"")},toast=exports.toast={show:e=>proxy(t=>t.show(e)),undo:(e,t)=>proxy(r=>r.undo(e,t)),success:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"success"})),error:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"error"})),warning:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"warning"})),info:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"info"})),hideAll:()=>{const e=getActiveApi();e?e.hideAll():warnNoProvider()}},buildStyles=()=>_reactNative.StyleSheet.create({layer:{position:"absolute",left:0,right:0},top:{alignItems:"stretch"},bottom:{alignItems:"stretch"}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RichTooltipBody=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const RichTooltipBody=({title:e,content:i,action:t,onAction:s,focusRef:r,actionRef:n,messageStyle:o})=>{const a=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildStyles(a),[a]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.card,children:[e?(0,_jsxRuntime.jsx)(_index3.Text,{ref:r,variant:"label",weight:"semibold",accessibilityRole:"header",children:e}):null,"string"==typeof i?(0,_jsxRuntime.jsx)(_index3.Text,{ref:e?void 0:r,variant:"bodySmall",color:"secondary",style:o,children:i}):i,t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.actions,children:(0,_jsxRuntime.jsx)(_index2.Button,{ref:n,title:t.label,variant:"ghost",size:"sm",accessibilityLabel:t.accessibilityLabel,onPress:s})}):null]})};exports.RichTooltipBody=RichTooltipBody;const buildStyles=e=>_reactNative.StyleSheet.create({card:{gap:e.spacing.xs,paddingHorizontal:e.spacing.md,paddingTop:e.spacing.md,paddingBottom:e.spacing.sm,backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadows.lg},actions:{flexDirection:"row",justifyContent:"flex-end",marginTop:e.spacing.xs}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Tooltip=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,a,n={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return n;if(o=t?i:r){if(o.has(e))return o.get(e);o.set(e,n)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?o(n,t,a):n[t]=e[t]);return n})(e,t)}const DEFAULT_TOOLTIP_GAP=8,DEFAULT_SCREEN_PADDING=8,DEFAULT_PRESS_AUTO_HIDE_MS=4e3,DEFAULT_ARROW_HALF_WIDTH=4,DEFAULT_ARROW_HEIGHT=6,DEFAULT_ARROW_CORNER_PADDING=12,DEFAULT_MAX_WIDTH=240,DEFAULT_LINE_HEIGHT=18,Tooltip=e=>{const{content:t,children:r,placement:i="auto",trigger:o="longPress",visible:a,onVisibleChange:n,hideOnContentPress:s=!0,maxWidth:l,showArrow:c=!0,accessibilityLabel:u,style:d,containerStyle:p,arrowStyle:h,messageStyle:m,testID:_}=e,f=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(f),[f]),b=f.components.tooltip,x=b?.gap??8,y=b?.screenPadding??8,v=b?.pressAutoHideMs??4e3,w=b?.arrowHalfWidth??4,T=b?.arrowHeight??6,R=b?.arrowCornerPadding??12,A=b?.lineHeight??18,j=l??b?.maxWidth??240,N=b?.enableScaleAnimation??!1,M=b?.exitDurationMs??150,D="manual"===o||"boolean"==typeof a,[E,P]=(0,_react.useState)(!1),S=D?Boolean(a):E,[L,C]=(0,_react.useState)(null),[W,O]=(0,_react.useState)({width:0,height:0}),H=(0,_react.useRef)(null),F=(0,_react.useRef)((0,_index.createAnimatedValue)(S?1:N?.85:1)).current,I=(0,_react.useRef)((0,_index.createAnimatedValue)(S?1:0)).current,V=(0,_react.useRef)(null),k=(0,_react.useRef)(!1),q=(0,_react.useCallback)(e=>{D||P(e),n?.(e)},[D,n]),U=(0,_react.useCallback)(()=>{H.current&&H.current.measureInWindow((e,t,r,i)=>{C({x:e,y:t,width:r,height:i})})},[]),z=(0,_react.useCallback)(e=>{U(),q(!0)},[U,q]),G=(0,_react.useCallback)(()=>{q(!1)},[q]);(0,_react.useEffect)(()=>{if(!k.current)return k.current=!0,S&&(U(),"press"===o&&(V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{G()},v))),()=>{V.current&&(clearTimeout(V.current),V.current=null)};let e;if(S){U();const t=[_reactNative.Animated.timing(I,{toValue:1,duration:f.motion.duration.fast,useNativeDriver:!0})];N&&t.push(_reactNative.Animated.spring(F,{toValue:1,damping:f.motion.spring.snappy.damping,stiffness:f.motion.spring.snappy.stiffness,mass:f.motion.spring.snappy.mass,useNativeDriver:!0})),e=_reactNative.Animated.parallel(t),e.start(),"press"===o&&(V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{G()},v))}else{const t=[_reactNative.Animated.timing(I,{toValue:0,duration:M,easing:_reactNative.Easing.bezier(...f.motion.easing.accelerate),useNativeDriver:!0})];N&&t.push(_reactNative.Animated.timing(F,{toValue:.85,duration:M,easing:_reactNative.Easing.bezier(...f.motion.easing.accelerate),useNativeDriver:!0})),e=_reactNative.Animated.parallel(t),e.start(),V.current&&(clearTimeout(V.current),V.current=null)}return()=>{e?.stop(),V.current&&(clearTimeout(V.current),V.current=null)}},[S]);const B=(0,_react.useMemo)(()=>{const e=_reactNative.Dimensions.get("window");if(!L)return{top:y,left:y,placement:"bottom",arrowOffset:0};const t=W.width||Math.min(j,e.width-2*y),r=W.height||0;let o;if("auto"===i){const t={top:L.y,bottom:e.height-(L.y+L.height),left:L.x,right:e.width-(L.x+L.width)},r=Math.max(t.top,t.bottom,t.left,t.right);o=r===t.bottom?"bottom":r===t.top?"top":r===t.right?"right":"left"}else o=i;let a=0,n=0;"top"===o?(a=L.y-r-x,n=L.x+L.width/2-t/2):"bottom"===o?(a=L.y+L.height+x,n=L.x+L.width/2-t/2):"left"===o?(a=L.y+L.height/2-r/2,n=L.x-t-x):(a=L.y+L.height/2-r/2,n=L.x+L.width+x),n=Math.max(y,Math.min(n,e.width-t-y)),a=Math.max(y,Math.min(a,e.height-r-y));let s=0;if("top"===o||"bottom"===o){const e=L.x+L.width/2-n,r=R,i=Math.max(r,t-R);s=Math.max(r,Math.min(e,i))}else{const e=L.y+L.height/2-a,t=R,i=Math.max(t,r-R);s=Math.max(t,Math.min(e,i))}return{top:a,left:n,placement:o,arrowOffset:s}},[L,W,i,j,y,x,R]),X={};if("longPress"===o)X.onLongPress=z,X.accessibilityHint="Long press for more info";else if("press"===o){const e=r.props.onPress;X.onPress=t=>{e?.(t),z(t)}}const J=_react.default.cloneElement(r,X),K=u??("string"==typeof t?t:"Tooltip"),Q=(0,_react.useMemo)(()=>{if(!c)return null;const e=f.colors.background.inverse,t={position:"absolute",width:0,height:0,backgroundColor:"transparent",borderStyle:"solid",borderLeftWidth:w,borderRightWidth:w,borderBottomWidth:T,borderTopWidth:0,borderLeftColor:"transparent",borderRightColor:"transparent",borderTopColor:"transparent",borderBottomColor:e};return"top"===B.placement?{...t,bottom:-T,left:B.arrowOffset-w,transform:[{rotate:"180deg"}]}:"bottom"===B.placement?{...t,top:-T,left:B.arrowOffset-w}:"left"===B.placement?{...t,right:-T,top:B.arrowOffset-w,transform:[{rotate:"90deg"}]}:{...t,left:-T,top:B.arrowOffset-w,transform:[{rotate:"-90deg"}]}},[c,B,f,w,T]);return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{ref:H,collapsable:!1,onLayout:U,testID:_,children:J}),(0,_jsxRuntime.jsxs)(_reactNative.Modal,{visible:S,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:G,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:s?G:void 0,accessibilityLabel:"Close tooltip",accessibilityRole:"button",children:S?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{accessibilityRole:"tooltip",accessibilityLiveRegion:"polite",accessibilityLabel:K,onLayout:e=>{const{width:t,height:r}=e.nativeEvent.layout;t===W.width&&r===W.height||O({width:t,height:r})},style:[{position:"absolute",top:B.top,left:B.left,maxWidth:j,opacity:I,transform:[{scale:F}]},d,p],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.tooltip,{backgroundColor:f.colors.background.inverse,borderRadius:f.radius.md,..._corners.smoothCorners,paddingHorizontal:f.spacing.md,paddingVertical:f.spacing.sm,...f.shadows.lg,shadowColor:f.shadows.lg.shadowColor}],children:"string"==typeof t?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:f.colors.text.inverse,fontSize:f.typography.fontSize.sm,lineHeight:A},m],children:t}):t}),Q?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Q,h],pointerEvents:"none"}):null]}):null}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})]})};exports.Tooltip=Tooltip;const buildStyles=e=>_reactNative.StyleSheet.create({tooltip:{overflow:"hidden"}});var _default=exports.default=Tooltip;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Tooltip=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_placement=require("../../utils/placement.js"),_focusHost=require("../Menu/focusHost.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_RichTooltipBody=require("./RichTooltipBody.js"),_tooltipPosition=require("./tooltipPosition.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,a,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(o=t?i:r){if(o.has(e))return o.get(e);o.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?o(s,t,a):s[t]=e[t]);return s})(e,t)}const DEFAULT_TOOLTIP_GAP=8,DEFAULT_SCREEN_PADDING=8,DEFAULT_PRESS_AUTO_HIDE_MS=4e3,DEFAULT_ARROW_HALF_WIDTH=4,DEFAULT_ARROW_HEIGHT=6,DEFAULT_ARROW_CORNER_PADDING=12,DEFAULT_MAX_WIDTH=240,RICH_MAX_WIDTH=280,DEFAULT_LINE_HEIGHT=18,Tooltip=e=>{const{content:t,children:r,variant:i="plain",title:o,action:a,placement:s="auto",visible:n,onVisibleChange:c,hideOnContentPress:l=!0,maxWidth:u,showArrow:_=!0,accessibilityLabel:d,style:p,containerStyle:f,arrowStyle:m,messageStyle:h,closeLabel:g="Close tooltip",testID:v}=e,b="rich"===i,R=e.trigger??(b?"press":"longPress"),y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),T=(0,_reactNative.useWindowDimensions)(),j=(0,_react.useMemo)(()=>buildStyles(y),[y]),w=y.components.tooltip,A=w?.gap??8,N=w?.screenPadding??8,S=w?.pressAutoHideMs??4e3,P=w?.arrowHalfWidth??4,C=w?.arrowHeight??6,D=w?.arrowCornerPadding??12,E=w?.lineHeight??18,H=u??(b?280:w?.maxWidth??240),L="press"===R&&!b,W=w?.enableScaleAnimation??!1,O=w?.exitDurationMs??150,M="manual"===R||"boolean"==typeof n,[q,F]=(0,_react.useState)(!1),I=M?Boolean(n):q,[k,V]=(0,_react.useState)(null),[U,B]=(0,_react.useState)({width:0,height:0}),z=(0,_react.useRef)(null),G=(0,_react.useRef)(null),X=(0,_react.useRef)(null),Y=(0,_react.useRef)(null),J=(0,_react.useRef)(null),K=(0,_react.useRef)(!1),Q=(0,_react.useRef)(!1),Z=(0,_react.useRef)((0,_index.createAnimatedValue)(I?1:W?.85:1)).current,$=(0,_react.useRef)((0,_index.createAnimatedValue)(I?1:0)).current,ee=(0,_react.useRef)(null),te=(0,_react.useRef)(!1),re=(0,_react.useCallback)(e=>{M||F(e),c?.(e)},[M,c]),ie=(0,_react.useCallback)(()=>{z.current&&z.current.measureInWindow((e,t,r,i)=>{V({x:e,y:t,width:r,height:i})})},[]),oe=(0,_react.useCallback)(e=>{ie(),re(!0)},[ie,re]),ae=(0,_react.useCallback)(()=>{re(!1)},[re]),se=(0,_react.useRef)(ae);se.current=ae;const ne=(0,_react.useCallback)(()=>{if(!K.current)return;K.current=!1;const e=J.current;J.current=null,e?e():b&&(0,_focusHost.focusHost)(G.current??z.current)},[b]);(0,_react.useEffect)(()=>{if(I)return Q.current=!0,K.current=!1,(0,_placement.claimAnchoredSurface)(()=>se.current());Q.current&&(Q.current=!1,K.current=!0,"ios"!==_reactNative.Platform.OS&&ne())},[I]);const ce=(0,_react.useCallback)(()=>{J.current=a?.onPress??null,ae()},[a,ae]);(0,_react.useEffect)(()=>{if(!te.current)return te.current=!0,I&&(ie(),L&&(ee.current&&clearTimeout(ee.current),ee.current=setTimeout(()=>{ae()},S))),()=>{ee.current&&(clearTimeout(ee.current),ee.current=null)};let e;if(I){ie();const t=[_reactNative.Animated.timing($,{toValue:1,duration:y.motion.duration.fast,useNativeDriver:!0})];W&&t.push(_reactNative.Animated.spring(Z,{toValue:1,damping:y.motion.spring.snappy.damping,stiffness:y.motion.spring.snappy.stiffness,mass:y.motion.spring.snappy.mass,useNativeDriver:!0})),e=_reactNative.Animated.parallel(t),e.start(),L&&(ee.current&&clearTimeout(ee.current),ee.current=setTimeout(()=>{ae()},S))}else{const t=[_reactNative.Animated.timing($,{toValue:0,duration:O,easing:_reactNative.Easing.bezier(...y.motion.easing.accelerate),useNativeDriver:!0})];W&&t.push(_reactNative.Animated.timing(Z,{toValue:.85,duration:O,easing:_reactNative.Easing.bezier(...y.motion.easing.accelerate),useNativeDriver:!0})),e=_reactNative.Animated.parallel(t),e.start(),ee.current&&(clearTimeout(ee.current),ee.current=null)}return()=>{e?.stop(),ee.current&&(clearTimeout(ee.current),ee.current=null)}},[I]);const handleContentLayout=e=>{const{width:t,height:r}=e.nativeEvent.layout;t===U.width&&r===U.height||B({width:t,height:r})},le=(0,_react.useMemo)(()=>(0,_tooltipPosition.resolveTooltipPosition)({anchor:k,size:U,placement:s,rich:b,viewport:{width:T.width,height:T.height,insets:x},maxWidth:H,gap:A,padding:N,arrowCornerPadding:D}),[k,U,s,b,T.width,T.height,x,H,A,N,D]),ue=I&&null!==k&&U.width>0;(0,_react.useEffect)(()=>{if(!b||!ue)return;const e="web"===_reactNative.Platform.OS?Y:X,t=setTimeout(()=>(0,_focusHost.focusHost)(e.current),_focusHost.FOCUS_DELAY_MS);return()=>clearTimeout(t)},[b,ue]);const _e=r.props,de=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(_e.ref,G),[_e.ref]),pe={};"longPress"!==R||_e.contextMenu?"press"===R&&(pe.onPress=e=>{_e.onPress?.(e),oe(e)}):(pe.onLongPress=oe,pe.accessibilityHint="Long press for more info"),b&&(pe.ref=de);const fe=_react.default.cloneElement(r,pe),me=d??("string"==typeof t?t:"Tooltip"),he=(0,_react.useMemo)(()=>{if(!_)return null;const e=b?y.colors.background.elevated:y.colors.background.inverse,t={position:"absolute",width:0,height:0,backgroundColor:"transparent",borderStyle:"solid",borderLeftWidth:P,borderRightWidth:P,borderBottomWidth:C,borderTopWidth:0,borderLeftColor:"transparent",borderRightColor:"transparent",borderTopColor:"transparent",borderBottomColor:e};return"top"===le.placement?{...t,bottom:-C,left:le.arrowOffset-P,transform:[{rotate:"180deg"}]}:"bottom"===le.placement?{...t,top:-C,left:le.arrowOffset-P}:"left"===le.placement?{...t,right:-C,top:le.arrowOffset-P,transform:[{rotate:"90deg"}]}:{...t,left:-C,top:le.arrowOffset-P,transform:[{rotate:"-90deg"}]}},[_,le,y,b,P,C]),ge={position:"absolute",top:le.top,left:le.left,maxWidth:H,opacity:ue?$:0,transform:[{scale:Z}]},ve=he?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[he,m],pointerEvents:"none"}):null;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{ref:z,collapsable:!1,onLayout:ie,testID:v,children:fe}),(0,_jsxRuntime.jsxs)(_reactNative.Modal,{visible:I,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:ae,onDismiss:ne,children:[b?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:l?ae:void 0,accessibilityLabel:g,accessibilityRole:"button"}),I?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{onLayout:handleContentLayout,style:[ge,p,f],children:[(0,_jsxRuntime.jsx)(_RichTooltipBody.RichTooltipBody,{title:o,content:t,action:a,onAction:ce,focusRef:X,actionRef:Y,messageStyle:h}),ve]}):null]}):(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:l?ae:void 0,accessibilityLabel:g,accessibilityRole:"button",children:I?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{accessibilityRole:"tooltip",accessibilityLiveRegion:"polite",accessibilityLabel:me,onLayout:handleContentLayout,style:[ge,p,f],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[j.tooltip,{backgroundColor:y.colors.background.inverse,borderRadius:y.radius.md,..._corners.smoothCorners,paddingHorizontal:y.spacing.md,paddingVertical:y.spacing.sm,...y.shadows.lg,shadowColor:y.shadows.lg.shadowColor}],children:"string"==typeof t?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.inverse,fontSize:y.typography.fontSize.sm,lineHeight:E},h],children:t}):t}),ve]}):null}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})]})};exports.Tooltip=Tooltip;const buildStyles=e=>_reactNative.StyleSheet.create({tooltip:{overflow:"hidden"}});var _default=exports.default=Tooltip;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveTooltipPosition=void 0;var _placement=require("../../utils/placement.js");const clamp=(t,e,o)=>Math.max(e,Math.min(t,o)),roomiestSide=(t,e)=>{const o={top:t.y,bottom:e.height-(t.y+t.height),left:t.x,right:e.width-(t.x+t.width)},i=Math.max(o.top,o.bottom,o.left,o.right);return i===o.bottom?"bottom":i===o.top?"top":i===o.right?"right":"left"},resolveTooltipPosition=t=>{const{anchor:e,size:o,placement:i,rich:r,viewport:a,maxWidth:l,gap:n,padding:p}=t;if(!e)return{top:p,left:p,placement:"bottom",arrowOffset:0};const{insets:h}=a,s=o.width||Math.min(l,a.width-2*p),m=o.height||0,c=h.top+p,f=a.height-h.bottom-p-m;let d;if(d=r?"top"===i||"bottom"===i?i:"auto":"auto"===i?roomiestSide(e,a):i,"left"!==d&&"right"!==d){const o={gap:n,margin:p},i=(0,_placement.computePlacement)(e,{width:s,height:m},a,d,o),r=e.x+e.width/2;return{top:clamp(i.y,c,f),left:i.x,placement:i.placement,arrowOffset:(0,_placement.arrowOffset)(r,i.x,s,t.arrowCornerPadding)}}const g="left"===d?e.x-s-n:e.x+e.width+n,w=a.width-h.right-p-s,x=clamp(g,h.left+p,w),u=clamp(e.y+e.height/2-m/2,c,f),b=e.y+e.height/2;return{top:u,left:x,placement:d,arrowOffset:(0,_placement.arrowOffset)(b,u,m,t.arrowCornerPadding)}};exports.resolveTooltipPosition=resolveTooltipPosition;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TypingIndicator=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(a=t?r:i){if(a.has(e))return a.get(e);a.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?a(s,t,n):s[t]=e[t]);return s})(e,t)}const DOT=6,DIM=.3,PULSE_MS=400,STAGGER_MS=160,STILL_OPACITY=[1,.65,.3],Dot=({index:e,still:t,colour:i})=>{const r=(0,_reactNativeReanimated.useSharedValue)(.3);(0,_react.useEffect)(()=>{if(!t)return r.value=(0,_reactNativeReanimated.withDelay)(160*e,(0,_reactNativeReanimated.withRepeat)((0,_reactNativeReanimated.withSequence)((0,_reactNativeReanimated.withTiming)(1,{duration:400}),(0,_reactNativeReanimated.withTiming)(.3,{duration:400})),-1)),()=>(0,_reactNativeReanimated.cancelAnimation)(r)},[t,e,r]);const a=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:r.value}));return(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[styles.dot,{backgroundColor:i},t?{opacity:STILL_OPACITY[e]}:a]})},TypingIndicator=({label:e,accessibilityLabel:t,bubble:i=!0,style:r,testID:a})=>{const n=(0,_index.useTheme)(),s=(0,_react.useMemo)(()=>buildStyles(n),[n]),o=(0,_useReducedMotion.useReducedMotion)(),c=n.colors.text.tertiary;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[s.root,i?s.bubble:null,r],accessible:!0,accessibilityRole:"progressbar",accessibilityLabel:e??t??"Typing",accessibilityState:{busy:!0},"aria-busy":!0,testID:a,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:s.dots,children:[0,1,2].map(e=>(0,_jsxRuntime.jsx)(Dot,{index:e,still:o,colour:c},e))}),e?(0,_jsxRuntime.jsx)(_index2.Text,{variant:"bodySmall",color:"secondary",children:e}):null]})};exports.TypingIndicator=TypingIndicator;const styles=_reactNative.StyleSheet.create({dot:{width:6,height:6,borderRadius:3,..._corners.smoothCorners}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",alignSelf:"flex-start",gap:e.spacing.sm,marginTop:e.spacing.sm},bubble:{backgroundColor:e.colors.background.secondary,borderRadius:e.radius.xl,..._corners.smoothCorners,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm+e.spacing.xs},dots:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs}});var _default=exports.default=TypingIndicator;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"TypingIndicator",{enumerable:!0,get:function(){return _TypingIndicator.TypingIndicator}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _TypingIndicator.default}});var _TypingIndicator=_interopRequireWildcard(require("./TypingIndicator.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=r?n:t){if(i.has(e))return i.get(e);i.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?i(u,r,o):u[r]=e[r]);return u})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Wheel=exports.WHEEL_VISIBLE_ITEMS=exports.WHEEL_CENTER_OFFSET=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");const WHEEL_VISIBLE_ITEMS=exports.WHEEL_VISIBLE_ITEMS=5,WHEEL_CENTER_OFFSET=exports.WHEEL_CENTER_OFFSET=Math.floor(WHEEL_VISIBLE_ITEMS/2),HAPTIC_DEBOUNCE_MS=35,WEB_SETTLE_MS=120,SCALE_STOPS=[-2,-1,0,1,2],WheelRow=(0,_react.memo)(({label:e,index:t,scrollY:a,itemHeight:r,selected:i,theme:n,reducedMotion:s,onPress:c})=>{const{opacity:l,scale:o}=(0,_react.useMemo)(()=>{const e=_reactNative.Animated.subtract(_reactNative.Animated.divide(a,r),t);return{opacity:e.interpolate({inputRange:SCALE_STOPS,outputRange:[.3,.6,1,.6,.3],extrapolate:"clamp"}),scale:e.interpolate({inputRange:SCALE_STOPS,outputRange:[.85,.95,1.05,.95,.85],extrapolate:"clamp"})}},[a,r,t]),u=(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:1,maxFontSizeMultiplier:1.5,style:{fontSize:n.typography.fontSize.xl,color:i?n.colors.text.primary:n.colors.text.secondary,fontWeight:i?n.typography.fontWeight.semibold:n.typography.fontWeight.medium,letterSpacing:n.typography.letterSpacing.normal},children:e});return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.row,{height:r},s?{opacity:l}:{opacity:l,transform:[{scale:o}]}],accessible:!1,importantForAccessibility:"no",children:c?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{focusable:!1,accessible:!1,onPress:()=>c(t),style:styles.rowPress,children:u}):u})}),Wheel=({label:e,items:t,selectedIndex:a,onIndexChange:r,itemHeight:i,width:n,theme:s,haptic:c,disabled:l,reducedMotion:o,testID:u})=>{const d="web"===_reactNative.Platform.OS,m=(0,_react.useRef)(null),_=(0,_react.useRef)((0,_index.createAnimatedValue)(a*i)).current,h=(0,_react.useRef)(a*i),E=(0,_react.useRef)(a*i),f=(0,_react.useRef)(a),y=(0,_react.useRef)(0),b=(0,_react.useRef)(null),p=(0,_react.useRef)(()=>{}),x=s.components.timePicker?.hapticDebounceMs??35,S=t.length-1;(0,_react.useEffect)(()=>{f.current=a;const e=a*i;if(E.current===e)return;if(E.current=e,Math.abs(h.current-e)<1)return;h.current=e,d||(0,_index.setNativeValue)(_,e);const t=requestAnimationFrame(()=>{m.current?.scrollToOffset({offset:e,animated:!1})});return()=>cancelAnimationFrame(t)},[a,i,_,d]),(0,_react.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);const v=(0,_react.useCallback)((e,i)=>{if(!(e===a||e<0||e>S)){if("accessibility"===i){const e=(0,_hapticUtils.resolveHaptic)(c,"denseTick");e&&(0,_hapticUtils.triggerHaptic)(e)}if("keyboard"!==i){const a=t[e];a&&(0,_announce.announce)(a.accessibilityLabel??a.label)}r(e)}},[a,S,t,c,r]);p.current=()=>{b.current=null;const e=Math.max(0,Math.min(S,Math.round(h.current/i))),t=e*i;Math.abs(h.current-t)>=1&&m.current?.scrollToOffset({offset:t,animated:!o}),v(e,"scroll")};const g=(0,_react.useMemo)(()=>_reactNative.Animated.event([{nativeEvent:{contentOffset:{y:_}}}],{useNativeDriver:!d,listener:e=>{const t=e.nativeEvent.contentOffset.y;h.current=t;const a=Math.round(t/i);if(a!==f.current&&a>=0&&a<=S){const e=Date.now();if(e-y.current>=x){const t=(0,_hapticUtils.resolveHaptic)(c,"denseTick");t&&(0,_hapticUtils.triggerHaptic)(t),y.current=e}f.current=a}d&&(b.current&&clearTimeout(b.current),b.current=setTimeout(()=>p.current(),120))}}),[_,i,S,c,x,d]),M=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y;v(Math.max(0,Math.min(S,Math.round(t/i))),"scroll")},[v,S,i]),T=(0,_react.useCallback)(e=>{if(l)return;const t=e.nativeEvent.actionName;"increment"===t?v(Math.min(S,a+1),"accessibility"):"decrement"===t&&v(Math.max(0,a-1),"accessibility")},[l,v,S,a]),I=(0,_react.useCallback)(e=>{l||m.current?.scrollToOffset({offset:e*i,animated:!o})},[l,i,o]),L=(0,_react.useCallback)(({item:e,index:t})=>(0,_jsxRuntime.jsx)(WheelRow,{label:e.label,index:t,scrollY:_,itemHeight:i,selected:t===a,theme:s,reducedMotion:o,onPress:d?I:void 0}),[_,i,a,s,o,d,I]),R=(0,_react.useCallback)((e,t)=>`${String(e.value)}-${t}`,[]),j=(0,_react.useCallback)((e,t)=>({length:i,offset:i*t,index:t}),[i]),w=t[a]?t[a].accessibilityLabel??t[a].label:"",N=d?{focusable:!0,role:"spinbutton","aria-label":e,"aria-valuetext":w,"aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":S,"aria-disabled":l,onKeyDown:e=>{if(l)return;const t={ArrowDown:Math.min(S,a+1),PageDown:Math.min(S,a+1),ArrowUp:Math.max(0,a-1),PageUp:Math.max(0,a-1),Home:0,End:S}[e.key];void 0!==t&&(e.preventDefault?.(),v(t,"keyboard"))}}:void 0;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[void 0===n?styles.columnFlex:{width:n},{height:i*WHEEL_VISIBLE_ITEMS},styles.column,l?styles.disabled:null],testID:u,...N,children:[d?null:(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:styles.a11yLayer,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:e,accessibilityValue:{text:w},accessibilityState:{disabled:Boolean(l)},"aria-disabled":Boolean(l),accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:T}),(0,_jsxRuntime.jsx)(_reactNative.Animated.FlatList,{ref:m,data:t,keyExtractor:R,renderItem:L,getItemLayout:j,showsVerticalScrollIndicator:!1,snapToInterval:i,snapToAlignment:"start",decelerationRate:"fast",bounces:!1,scrollEnabled:!l,nestedScrollEnabled:!0,scrollEventThrottle:16,onScroll:g,onMomentumScrollEnd:M,contentContainerStyle:{paddingVertical:i*WHEEL_CENTER_OFFSET},initialScrollIndex:a,style:[styles.list,{height:i*WHEEL_VISIBLE_ITEMS}],importantForAccessibility:"no-hide-descendants","aria-hidden":!0})]})};exports.Wheel=Wheel;const styles=_reactNative.StyleSheet.create({column:{overflow:"hidden"},columnFlex:{flex:1},disabled:{opacity:.5},list:{flexGrow:0},row:{alignItems:"center",justifyContent:"center"},rowPress:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",flex:1},a11yLayer:{..._reactNative.StyleSheet.absoluteFill,zIndex:2}});