@webority/mobile-ui 0.9.1 → 0.11.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 (346) hide show
  1. package/android/src/newarch/java/com/webority/mobileui/pdfrasterizer/PdfRasterizerModule.kt +6 -7
  2. package/ios/PdfRasterizer.mm +36 -9
  3. package/lib/commonjs/components/BarChart/BarChart.js +1 -0
  4. package/lib/commonjs/components/BarChart/index.js +1 -0
  5. package/lib/commonjs/components/BarChart/scale.js +1 -0
  6. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  7. package/lib/commonjs/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  8. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  9. package/lib/commonjs/components/BottomSheet/index.js +1 -1
  10. package/lib/commonjs/components/BottomSheet/useSheetSwap.js +1 -0
  11. package/lib/commonjs/components/Card/Card.js +1 -1
  12. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  13. package/lib/commonjs/components/Composer/Composer.js +1 -0
  14. package/lib/commonjs/components/Composer/index.js +1 -0
  15. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -0
  16. package/lib/commonjs/components/DateSeparator/index.js +1 -0
  17. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  18. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  19. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  20. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  21. package/lib/commonjs/components/FormField/FormField.js +1 -1
  22. package/lib/commonjs/components/Input/Input.js +1 -1
  23. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  24. package/lib/commonjs/components/Menu/Menu.js +1 -0
  25. package/lib/commonjs/components/Menu/MenuSurface.js +1 -0
  26. package/lib/commonjs/components/Menu/focusHost.js +1 -0
  27. package/lib/commonjs/components/Menu/index.js +1 -0
  28. package/lib/commonjs/components/Menu/menuModel.js +1 -0
  29. package/lib/commonjs/components/Menu/useContextMenu.js +1 -0
  30. package/lib/commonjs/components/Menu/webOnly.js +1 -0
  31. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -0
  32. package/lib/commonjs/components/MessageBubble/index.js +1 -0
  33. package/lib/commonjs/components/MessageList/MessageList.js +1 -0
  34. package/lib/commonjs/components/MessageList/index.js +1 -0
  35. package/lib/commonjs/components/Notation/Notation.js +1 -1
  36. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -0
  37. package/lib/commonjs/components/OnboardingPager/index.js +1 -0
  38. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  39. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -0
  40. package/lib/commonjs/components/PaymentResult/index.js +1 -0
  41. package/lib/commonjs/components/PermissionPrompt/PermissionPrompt.js +1 -0
  42. package/lib/commonjs/components/PermissionPrompt/index.js +1 -0
  43. package/lib/commonjs/components/PermissionPrompt/usePermissionPrompt.js +1 -0
  44. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  45. package/lib/commonjs/components/Radio/Radio.js +1 -1
  46. package/lib/commonjs/components/Radio/RadioGroup.js +1 -1
  47. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -0
  48. package/lib/commonjs/components/ScannerOverlay/index.js +1 -0
  49. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  50. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -0
  51. package/lib/commonjs/components/SearchBar/highlight.js +1 -0
  52. package/lib/commonjs/components/SearchBar/index.js +1 -1
  53. package/lib/commonjs/components/SearchBar/useRecentSearches.js +1 -0
  54. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  55. package/lib/commonjs/components/Select/Select.js +1 -1
  56. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -0
  57. package/lib/commonjs/components/SignaturePad/index.js +1 -0
  58. package/lib/commonjs/components/SignaturePad/signatureGeometry.js +1 -0
  59. package/lib/commonjs/components/SignaturePad/writePng.js +1 -0
  60. package/lib/commonjs/components/SignaturePad/writePng.web.js +1 -0
  61. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -0
  62. package/lib/commonjs/components/Sparkline/geometry.js +1 -0
  63. package/lib/commonjs/components/Sparkline/index.js +1 -0
  64. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  65. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  66. package/lib/commonjs/components/Switch/Switch.js +1 -1
  67. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  68. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  69. package/lib/commonjs/components/Toast/Toast.js +1 -1
  70. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  71. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -0
  72. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  73. package/lib/commonjs/components/Tooltip/tooltipPosition.js +1 -0
  74. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -0
  75. package/lib/commonjs/components/TypingIndicator/index.js +1 -0
  76. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -0
  77. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -0
  78. package/lib/commonjs/components/WheelPicker/index.js +1 -0
  79. package/lib/commonjs/components/index.js +1 -1
  80. package/lib/commonjs/hooks/index.js +1 -1
  81. package/lib/commonjs/hooks/useRefreshControl.js +1 -0
  82. package/lib/commonjs/hooks/useScrollDirection.js +1 -0
  83. package/lib/commonjs/index.js +1 -1
  84. package/lib/commonjs/utils/announce.js +1 -0
  85. package/lib/commonjs/utils/hapticUtils.js +1 -1
  86. package/lib/commonjs/utils/index.js +1 -1
  87. package/lib/commonjs/utils/placement.js +1 -0
  88. package/lib/module/components/BarChart/BarChart.js +1 -0
  89. package/lib/module/components/BarChart/index.js +1 -0
  90. package/lib/module/components/BarChart/scale.js +1 -0
  91. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  92. package/lib/module/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  93. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  94. package/lib/module/components/BottomSheet/index.js +1 -1
  95. package/lib/module/components/BottomSheet/useSheetSwap.js +1 -0
  96. package/lib/module/components/Card/Card.js +1 -1
  97. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  98. package/lib/module/components/Composer/Composer.js +1 -0
  99. package/lib/module/components/Composer/index.js +1 -0
  100. package/lib/module/components/DateSeparator/DateSeparator.js +1 -0
  101. package/lib/module/components/DateSeparator/index.js +1 -0
  102. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  103. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  104. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  105. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  106. package/lib/module/components/FormField/FormField.js +1 -1
  107. package/lib/module/components/Input/Input.js +1 -1
  108. package/lib/module/components/ListItem/ListItem.js +1 -1
  109. package/lib/module/components/Menu/Menu.js +1 -0
  110. package/lib/module/components/Menu/MenuSurface.js +1 -0
  111. package/lib/module/components/Menu/focusHost.js +1 -0
  112. package/lib/module/components/Menu/index.js +1 -0
  113. package/lib/module/components/Menu/menuModel.js +1 -0
  114. package/lib/module/components/Menu/useContextMenu.js +1 -0
  115. package/lib/module/components/Menu/webOnly.js +1 -0
  116. package/lib/module/components/MessageBubble/MessageBubble.js +1 -0
  117. package/lib/module/components/MessageBubble/index.js +1 -0
  118. package/lib/module/components/MessageList/MessageList.js +1 -0
  119. package/lib/module/components/MessageList/index.js +1 -0
  120. package/lib/module/components/Notation/Notation.js +1 -1
  121. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -0
  122. package/lib/module/components/OnboardingPager/index.js +1 -0
  123. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  124. package/lib/module/components/PaymentResult/PaymentResult.js +1 -0
  125. package/lib/module/components/PaymentResult/index.js +1 -0
  126. package/lib/module/components/PermissionPrompt/PermissionPrompt.js +1 -0
  127. package/lib/module/components/PermissionPrompt/index.js +1 -0
  128. package/lib/module/components/PermissionPrompt/usePermissionPrompt.js +1 -0
  129. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  130. package/lib/module/components/Radio/Radio.js +1 -1
  131. package/lib/module/components/Radio/RadioGroup.js +1 -1
  132. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -0
  133. package/lib/module/components/ScannerOverlay/index.js +1 -0
  134. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  135. package/lib/module/components/SearchBar/SearchPanel.js +1 -0
  136. package/lib/module/components/SearchBar/highlight.js +1 -0
  137. package/lib/module/components/SearchBar/index.js +1 -1
  138. package/lib/module/components/SearchBar/useRecentSearches.js +1 -0
  139. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  140. package/lib/module/components/Select/Select.js +1 -1
  141. package/lib/module/components/SignaturePad/SignaturePad.js +1 -0
  142. package/lib/module/components/SignaturePad/index.js +1 -0
  143. package/lib/module/components/SignaturePad/signatureGeometry.js +1 -0
  144. package/lib/module/components/SignaturePad/writePng.js +1 -0
  145. package/lib/module/components/SignaturePad/writePng.web.js +1 -0
  146. package/lib/module/components/Sparkline/Sparkline.js +1 -0
  147. package/lib/module/components/Sparkline/geometry.js +1 -0
  148. package/lib/module/components/Sparkline/index.js +1 -0
  149. package/lib/module/components/Spinner/Spinner.js +1 -1
  150. package/lib/module/components/StatTile/StatTile.js +1 -1
  151. package/lib/module/components/Switch/Switch.js +1 -1
  152. package/lib/module/components/TagInput/TagInput.js +1 -1
  153. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  154. package/lib/module/components/Toast/Toast.js +1 -1
  155. package/lib/module/components/Toast/ToastProvider.js +1 -1
  156. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -0
  157. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  158. package/lib/module/components/Tooltip/tooltipPosition.js +1 -0
  159. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -0
  160. package/lib/module/components/TypingIndicator/index.js +1 -0
  161. package/lib/module/components/WheelPicker/Wheel.js +1 -0
  162. package/lib/module/components/WheelPicker/WheelPicker.js +1 -0
  163. package/lib/module/components/WheelPicker/index.js +1 -0
  164. package/lib/module/components/index.js +1 -1
  165. package/lib/module/hooks/index.js +1 -1
  166. package/lib/module/hooks/useRefreshControl.js +1 -0
  167. package/lib/module/hooks/useScrollDirection.js +1 -0
  168. package/lib/module/index.js +1 -1
  169. package/lib/module/utils/announce.js +1 -0
  170. package/lib/module/utils/hapticUtils.js +1 -1
  171. package/lib/module/utils/index.js +1 -1
  172. package/lib/module/utils/placement.js +1 -0
  173. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +62 -0
  174. package/lib/typescript/commonjs/components/BarChart/index.d.ts +3 -0
  175. package/lib/typescript/commonjs/components/BarChart/scale.d.ts +15 -0
  176. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  177. package/lib/typescript/commonjs/components/BottomNavigation/index.d.ts +1 -1
  178. package/lib/typescript/commonjs/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  179. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +34 -3
  180. package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +2 -0
  181. package/lib/typescript/commonjs/components/BottomSheet/useSheetSwap.d.ts +24 -0
  182. package/lib/typescript/commonjs/components/Card/Card.d.ts +9 -0
  183. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +4 -1
  184. package/lib/typescript/commonjs/components/Composer/Composer.d.ts +61 -0
  185. package/lib/typescript/commonjs/components/Composer/index.d.ts +3 -0
  186. package/lib/typescript/commonjs/components/DateSeparator/DateSeparator.d.ts +37 -0
  187. package/lib/typescript/commonjs/components/DateSeparator/index.d.ts +3 -0
  188. package/lib/typescript/commonjs/components/FileViewer/FileViewer.d.ts +1 -1
  189. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  190. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  191. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +9 -0
  192. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +46 -0
  193. package/lib/typescript/commonjs/components/Menu/MenuSurface.d.ts +30 -0
  194. package/lib/typescript/commonjs/components/Menu/focusHost.d.ts +9 -0
  195. package/lib/typescript/commonjs/components/Menu/index.d.ts +5 -0
  196. package/lib/typescript/commonjs/components/Menu/menuModel.d.ts +68 -0
  197. package/lib/typescript/commonjs/components/Menu/useContextMenu.d.ts +58 -0
  198. package/lib/typescript/commonjs/components/Menu/webOnly.d.ts +7 -0
  199. package/lib/typescript/commonjs/components/MessageBubble/MessageBubble.d.ts +87 -0
  200. package/lib/typescript/commonjs/components/MessageBubble/index.d.ts +3 -0
  201. package/lib/typescript/commonjs/components/MessageList/MessageList.d.ts +68 -0
  202. package/lib/typescript/commonjs/components/MessageList/index.d.ts +3 -0
  203. package/lib/typescript/commonjs/components/Notation/Notation.d.ts +10 -4
  204. package/lib/typescript/commonjs/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  205. package/lib/typescript/commonjs/components/OnboardingPager/index.d.ts +3 -0
  206. package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +2 -0
  207. package/lib/typescript/commonjs/components/PaymentResult/PaymentResult.d.ts +71 -0
  208. package/lib/typescript/commonjs/components/PaymentResult/index.d.ts +3 -0
  209. package/lib/typescript/commonjs/components/PermissionPrompt/PermissionPrompt.d.ts +39 -0
  210. package/lib/typescript/commonjs/components/PermissionPrompt/index.d.ts +5 -0
  211. package/lib/typescript/commonjs/components/PermissionPrompt/usePermissionPrompt.d.ts +44 -0
  212. package/lib/typescript/commonjs/components/PhoneNumberInput/PhoneNumberInput.d.ts +5 -2
  213. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +13 -4
  214. package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +5 -0
  215. package/lib/typescript/commonjs/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  216. package/lib/typescript/commonjs/components/ScannerOverlay/index.d.ts +3 -0
  217. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +35 -0
  218. package/lib/typescript/commonjs/components/SearchBar/SearchPanel.d.ts +49 -0
  219. package/lib/typescript/commonjs/components/SearchBar/highlight.d.ts +14 -0
  220. package/lib/typescript/commonjs/components/SearchBar/index.d.ts +3 -0
  221. package/lib/typescript/commonjs/components/SearchBar/useRecentSearches.d.ts +24 -0
  222. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +5 -1
  223. package/lib/typescript/commonjs/components/Select/Select.d.ts +4 -1
  224. package/lib/typescript/commonjs/components/SignaturePad/SignaturePad.d.ts +94 -0
  225. package/lib/typescript/commonjs/components/SignaturePad/index.d.ts +4 -0
  226. package/lib/typescript/commonjs/components/SignaturePad/signatureGeometry.d.ts +36 -0
  227. package/lib/typescript/commonjs/components/SignaturePad/writePng.d.ts +7 -0
  228. package/lib/typescript/commonjs/components/SignaturePad/writePng.web.d.ts +3 -0
  229. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +41 -0
  230. package/lib/typescript/commonjs/components/Sparkline/geometry.d.ts +20 -0
  231. package/lib/typescript/commonjs/components/Sparkline/index.d.ts +3 -0
  232. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +7 -1
  233. package/lib/typescript/commonjs/components/StatTile/StatTile.d.ts +24 -1
  234. package/lib/typescript/commonjs/components/StatTile/index.d.ts +1 -1
  235. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +11 -4
  236. package/lib/typescript/commonjs/components/TagInput/TagInput.d.ts +4 -0
  237. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +21 -0
  238. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +21 -0
  239. package/lib/typescript/commonjs/components/Toast/index.d.ts +1 -1
  240. package/lib/typescript/commonjs/components/Tooltip/RichTooltipBody.d.ts +27 -0
  241. package/lib/typescript/commonjs/components/Tooltip/Tooltip.d.ts +24 -0
  242. package/lib/typescript/commonjs/components/Tooltip/index.d.ts +1 -1
  243. package/lib/typescript/commonjs/components/Tooltip/tooltipPosition.d.ts +35 -0
  244. package/lib/typescript/commonjs/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  245. package/lib/typescript/commonjs/components/TypingIndicator/index.d.ts +3 -0
  246. package/lib/typescript/commonjs/components/WheelPicker/Wheel.d.ts +34 -0
  247. package/lib/typescript/commonjs/components/WheelPicker/WheelPicker.d.ts +73 -0
  248. package/lib/typescript/commonjs/components/WheelPicker/index.d.ts +3 -0
  249. package/lib/typescript/commonjs/components/index.d.ts +36 -8
  250. package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
  251. package/lib/typescript/commonjs/hooks/useRefreshControl.d.ts +75 -0
  252. package/lib/typescript/commonjs/hooks/useScrollDirection.d.ts +21 -0
  253. package/lib/typescript/commonjs/index.d.ts +4 -4
  254. package/lib/typescript/commonjs/specs/NativePdfRasterizer.d.ts +1 -1
  255. package/lib/typescript/commonjs/utils/announce.d.ts +14 -0
  256. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +1 -1
  257. package/lib/typescript/commonjs/utils/index.d.ts +2 -0
  258. package/lib/typescript/commonjs/utils/placement.d.ts +55 -0
  259. package/lib/typescript/module/components/BarChart/BarChart.d.ts +62 -0
  260. package/lib/typescript/module/components/BarChart/index.d.ts +3 -0
  261. package/lib/typescript/module/components/BarChart/scale.d.ts +15 -0
  262. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  263. package/lib/typescript/module/components/BottomNavigation/index.d.ts +1 -1
  264. package/lib/typescript/module/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  265. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +34 -3
  266. package/lib/typescript/module/components/BottomSheet/index.d.ts +2 -0
  267. package/lib/typescript/module/components/BottomSheet/useSheetSwap.d.ts +24 -0
  268. package/lib/typescript/module/components/Card/Card.d.ts +9 -0
  269. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +4 -1
  270. package/lib/typescript/module/components/Composer/Composer.d.ts +61 -0
  271. package/lib/typescript/module/components/Composer/index.d.ts +3 -0
  272. package/lib/typescript/module/components/DateSeparator/DateSeparator.d.ts +37 -0
  273. package/lib/typescript/module/components/DateSeparator/index.d.ts +3 -0
  274. package/lib/typescript/module/components/FileViewer/FileViewer.d.ts +1 -1
  275. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  276. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  277. package/lib/typescript/module/components/ListItem/ListItem.d.ts +9 -0
  278. package/lib/typescript/module/components/Menu/Menu.d.ts +46 -0
  279. package/lib/typescript/module/components/Menu/MenuSurface.d.ts +30 -0
  280. package/lib/typescript/module/components/Menu/focusHost.d.ts +9 -0
  281. package/lib/typescript/module/components/Menu/index.d.ts +5 -0
  282. package/lib/typescript/module/components/Menu/menuModel.d.ts +68 -0
  283. package/lib/typescript/module/components/Menu/useContextMenu.d.ts +58 -0
  284. package/lib/typescript/module/components/Menu/webOnly.d.ts +7 -0
  285. package/lib/typescript/module/components/MessageBubble/MessageBubble.d.ts +87 -0
  286. package/lib/typescript/module/components/MessageBubble/index.d.ts +3 -0
  287. package/lib/typescript/module/components/MessageList/MessageList.d.ts +68 -0
  288. package/lib/typescript/module/components/MessageList/index.d.ts +3 -0
  289. package/lib/typescript/module/components/Notation/Notation.d.ts +10 -4
  290. package/lib/typescript/module/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  291. package/lib/typescript/module/components/OnboardingPager/index.d.ts +3 -0
  292. package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +2 -0
  293. package/lib/typescript/module/components/PaymentResult/PaymentResult.d.ts +71 -0
  294. package/lib/typescript/module/components/PaymentResult/index.d.ts +3 -0
  295. package/lib/typescript/module/components/PermissionPrompt/PermissionPrompt.d.ts +39 -0
  296. package/lib/typescript/module/components/PermissionPrompt/index.d.ts +5 -0
  297. package/lib/typescript/module/components/PermissionPrompt/usePermissionPrompt.d.ts +44 -0
  298. package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +5 -2
  299. package/lib/typescript/module/components/Radio/Radio.d.ts +13 -4
  300. package/lib/typescript/module/components/Radio/RadioGroup.d.ts +5 -0
  301. package/lib/typescript/module/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  302. package/lib/typescript/module/components/ScannerOverlay/index.d.ts +3 -0
  303. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +35 -0
  304. package/lib/typescript/module/components/SearchBar/SearchPanel.d.ts +49 -0
  305. package/lib/typescript/module/components/SearchBar/highlight.d.ts +14 -0
  306. package/lib/typescript/module/components/SearchBar/index.d.ts +3 -0
  307. package/lib/typescript/module/components/SearchBar/useRecentSearches.d.ts +24 -0
  308. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +5 -1
  309. package/lib/typescript/module/components/Select/Select.d.ts +4 -1
  310. package/lib/typescript/module/components/SignaturePad/SignaturePad.d.ts +94 -0
  311. package/lib/typescript/module/components/SignaturePad/index.d.ts +4 -0
  312. package/lib/typescript/module/components/SignaturePad/signatureGeometry.d.ts +36 -0
  313. package/lib/typescript/module/components/SignaturePad/writePng.d.ts +7 -0
  314. package/lib/typescript/module/components/SignaturePad/writePng.web.d.ts +3 -0
  315. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +41 -0
  316. package/lib/typescript/module/components/Sparkline/geometry.d.ts +20 -0
  317. package/lib/typescript/module/components/Sparkline/index.d.ts +3 -0
  318. package/lib/typescript/module/components/Spinner/Spinner.d.ts +7 -1
  319. package/lib/typescript/module/components/StatTile/StatTile.d.ts +24 -1
  320. package/lib/typescript/module/components/StatTile/index.d.ts +1 -1
  321. package/lib/typescript/module/components/Switch/Switch.d.ts +11 -4
  322. package/lib/typescript/module/components/TagInput/TagInput.d.ts +4 -0
  323. package/lib/typescript/module/components/Toast/Toast.d.ts +21 -0
  324. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +21 -0
  325. package/lib/typescript/module/components/Toast/index.d.ts +1 -1
  326. package/lib/typescript/module/components/Tooltip/RichTooltipBody.d.ts +27 -0
  327. package/lib/typescript/module/components/Tooltip/Tooltip.d.ts +24 -0
  328. package/lib/typescript/module/components/Tooltip/index.d.ts +1 -1
  329. package/lib/typescript/module/components/Tooltip/tooltipPosition.d.ts +35 -0
  330. package/lib/typescript/module/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  331. package/lib/typescript/module/components/TypingIndicator/index.d.ts +3 -0
  332. package/lib/typescript/module/components/WheelPicker/Wheel.d.ts +34 -0
  333. package/lib/typescript/module/components/WheelPicker/WheelPicker.d.ts +73 -0
  334. package/lib/typescript/module/components/WheelPicker/index.d.ts +3 -0
  335. package/lib/typescript/module/components/index.d.ts +36 -8
  336. package/lib/typescript/module/hooks/index.d.ts +4 -0
  337. package/lib/typescript/module/hooks/useRefreshControl.d.ts +75 -0
  338. package/lib/typescript/module/hooks/useScrollDirection.d.ts +21 -0
  339. package/lib/typescript/module/index.d.ts +4 -4
  340. package/lib/typescript/module/specs/NativePdfRasterizer.d.ts +1 -1
  341. package/lib/typescript/module/utils/announce.d.ts +14 -0
  342. package/lib/typescript/module/utils/hapticUtils.d.ts +1 -1
  343. package/lib/typescript/module/utils/index.d.ts +2 -0
  344. package/lib/typescript/module/utils/placement.d.ts +55 -0
  345. package/package.json +3 -3
  346. package/src/specs/NativePdfRasterizer.ts +1 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");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 i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}const sizeMap={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:r,onPress:n,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:l,disabled:c=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:N}=(0,_usePressAnimation.usePressAnimation)({enabled:!c}),A=y.components.floatingActionButton,w=A?.edgeOffset??24,C=A?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const I=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??C)+x.bottom+w]}),k=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),E=r,z="string"==typeof i&&i.length>0,F=c?y.colors.surface.disabled:toneBackground(y,a),V=c?y.colors.text.disabled:toneForeground(y,a),D=(0,_react.useMemo)(()=>{if(!s)return null;const e=(l??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,l,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[D,{transform:[{translateY:I},{scale:j}],opacity:k},f,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(c)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),n()},onPressIn:S,onPressOut:N,disabled:c,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:c},"aria-disabled":c,testID:h,style:[R.base,z?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:F,opacity:c?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!c?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,E,z?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:V,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},_],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:r,actions:n,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:l,size:c="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[c],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,N=j?.bottomOffset??24,A=j?.secondaryGap??16,w=j?.staggerMs??50,C="boolean"==typeof i,[P,I]=(0,_react.useState)(o),k=C?i:P,E=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(E,0);const e=_reactNative.Animated.timing(E,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,E,y.motion.duration.normal,y.motion.easing.standard]);const z=m&&p;(0,_react.useEffect)(()=>{z&&k&&(C||I(!1),a?.(!1))},[z,k,C,a]);const F=E.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??N)+x.bottom+S]}),V=E.interpolate({inputRange:[0,1],outputRange:[1,0]}),D=(0,_react.useRef)((0,_index.createAnimatedValue)(k?1:0)).current,O=(0,_react.useRef)([]),[T,B]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=O.current;if(e.length!==n.length){if(e.length<n.length){const t=e.slice();for(let r=e.length;r<n.length;r+=1)t.push(new _reactNative.Animated.Value(k?1:0));O.current=t}else O.current=e.slice(0,n.length);B(e=>e+1)}},[n.length]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(D,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=O.current.map(e=>_reactNative.Animated.timing(e,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),r=k?t:[...t].reverse(),n=_reactNative.Animated.stagger(w,r);return n.start(),()=>{e.stop(),n.stop()}},[k,D,y.motion.duration.normal,y.motion.easing.standard,n.length,T,w]);const L=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),C||I(e),a?.(e)},[C,a,d]),M=(0,_react.useCallback)(()=>{L(!k)},[k,L]),H=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),e.onPress(),C||I(!1),a?.(!1)},[C,a,d]),q=(0,_react.useCallback)(()=>{k&&L(!1)},[k,L]),W=(0,_react.useMemo)(()=>{const e=(l??N)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,l,x.bottom,N,S]),slotOffset=e=>-(v.diameter+A)*(e+1),G=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),U=.78*v.diameter,$=(0,_react.useMemo)(()=>{const e=U+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+U/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,U,v.diameter,y.spacing.sm]),Y=D.interpolate({inputRange:[0,1],outputRange:[0,.4]}),Q=D.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:Y}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:q,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:z?"none":"box-none",style:[W,{transform:[{translateY:F}],opacity:V},g],accessibilityRole:"menu",testID:h,children:[n.map((e,t)=>{const r=O.current[t];if(!r)return null;const n=r.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=r.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,$],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},_],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[R.secondaryRow,G,{position:"absolute",bottom:0,opacity:r,transform:[{translateY:n},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>H(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:U/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:M,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:k},"aria-expanded":k,style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r?void 0:{transform:[{rotate:Q}]},children:k&&r?r:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.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,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}const sizeMap={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:n,onPress:r,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:c,disabled:l=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:_,labelStyle:f,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:A}=(0,_usePressAnimation.usePressAnimation)({enabled:!l}),N=y.components.floatingActionButton,w=N?.edgeOffset??24,C=N?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const E=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(c??C)+x.bottom+w]}),I=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),F=n,k="string"==typeof i&&i.length>0,z=l?y.colors.surface.disabled:toneBackground(y,a),O=l?y.colors.text.disabled:toneForeground(y,a),V=(0,_react.useMemo)(()=>{if(!s)return null;const e=(c??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,c,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V,{transform:[{translateY:E},{scale:j}],opacity:I},_,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(l)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),r()},onPressIn:S,onPressOut:A,disabled:l,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:l},"aria-disabled":l,testID:h,style:[R.base,k?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:z,opacity:l?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!l?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,F,k?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:O,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},f],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FAB_GROUP_MIN_ACTIONS=2,FAB_GROUP_MAX_ACTIONS=6,FAB_GROUP_RANGE="2 to 6",describeActionProblem=e=>e.length<2?`was given ${e.length} action(s); a menu holds 2 to 6.`:e.length>6?`was given ${e.length} actions; a menu holds 2 to 6, so only the first 6 are drawn.`:e.some(e=>"string"!=typeof e.label||""===e.label.trim())?"has an action without a visible `label`; every menu action needs one.":"",FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:n,actions:r,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:c,size:l="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:_,labelStyle:f,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[l],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,A=j?.bottomOffset??24,N=j?.secondaryGap??16,w=j?.staggerMs??50,C=(0,_react.useMemo)(()=>r.slice(0,6),[r]),P=C.length,E=(0,_react.useMemo)(()=>C.map((e,t)=>({action:e,index:t})).reverse(),[C]),I=__DEV__?describeActionProblem(r):"";(0,_react.useEffect)(()=>{__DEV__&&I&&console.warn(`[@webority/mobile-ui] FloatingActionButtonGroup ${I}`)},[I]);const F="boolean"==typeof i,[k,z]=(0,_react.useState)(o),O=F?i:k,V=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(V,0);const e=_reactNative.Animated.timing(V,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,V,y.motion.duration.normal,y.motion.easing.standard]);const D=m&&p;(0,_react.useEffect)(()=>{D&&O&&(F||z(!1),a?.(!1))},[D,O,F,a]);const B=V.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(c??A)+x.bottom+S]}),T=V.interpolate({inputRange:[0,1],outputRange:[1,0]}),M=(0,_react.useRef)((0,_index.createAnimatedValue)(O?1:0)).current,H=(0,_react.useRef)([]),[L,q]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=H.current;if(e.length!==P){if(e.length<P){const t=e.slice();for(let n=e.length;n<P;n+=1)t.push(new _reactNative.Animated.Value(O?1:0));H.current=t}else H.current=e.slice(0,P);q(e=>e+1)}},[P]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(M,{toValue:O?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=H.current.map(e=>_reactNative.Animated.timing(e,{toValue:O?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),n=O?t:[...t].reverse(),r=_reactNative.Animated.stagger(w,n);return r.start(),()=>{e.stop(),r.stop()}},[O,M,y.motion.duration.normal,y.motion.easing.standard,P,L,w]);const $=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),F||z(e),a?.(e)},[F,a,d]),G=(0,_react.useRef)(null),W=(0,_react.useRef)(O),U=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(W.current===O)return;W.current=O;const e=U.current;if(U.current=!1,D||e)return;const t=G.current;t&&("web"===_reactNative.Platform.OS?t.focus?.():_reactNative.AccessibilityInfo.sendAccessibilityEvent(t,"focus"));const n=1===P?"action":"actions";(0,_announce.announce)(O?`${u}, expanded, ${P} ${n}`:`${u}, collapsed`)},[O,D,u,P]);const Y=(0,_react.useCallback)(()=>{$(!O)},[O,$]),Q=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),U.current=!0,e.onPress(),F||z(!1),a?.(!1)},[F,a,d]),X=(0,_react.useCallback)(()=>{O&&$(!1)},[O,$]),J=(0,_react.useMemo)(()=>{const e=(c??A)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,c,x.bottom,A,S]),slotOffset=e=>-(v.diameter+N)*(e+1),K=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),Z=.78*v.diameter,ee=(0,_react.useMemo)(()=>{const e=Z+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+Z/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,Z,v.diameter,y.spacing.sm]),te=M.interpolate({inputRange:[0,1],outputRange:[0,.4]}),ne=M.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[O?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:O?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:te}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:X,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:D?"none":"box-none",style:[J,{transform:[{translateY:B}],opacity:T},g],accessibilityRole:"menu",testID:h,children:[E.map(({action:e,index:t})=>{const n=H.current[t];if(!n)return null;const r=n.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=n.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,ee],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},_],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},f],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:O?"auto":"none",accessibilityElementsHidden:!O,importantForAccessibility:O?"auto":"no-hide-descendants","aria-hidden":!O,style:[R.secondaryRow,K,{position:"absolute",bottom:0,opacity:n,transform:[{translateY:r},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>Q(e),focusable:O,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:Z,height:Z,borderRadius:Z/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:Z/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:G,onPress:Y,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:O},"aria-expanded":O,style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:n?void 0:{transform:[{rotate:ne}]},children:O&&n?n:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.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 n,l,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((l=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(l.get||l.set)?n(o,t,l):o[t]=e[t]);return o})(e,t)}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:r,help:i,helperText:n,error:l,required:o=!1,name:a,children:s,layout:u="stacked",helperLines:c,labelStyle:d,helperStyle:x,errorStyle:p,containerStyle:f,inputContainerStyle:_,accessibilityLabel:m,testID:h}=e,y=(0,_index.useTheme)(),F=(0,_react.useMemo)(()=>buildStyles(y),[y]),v=(0,_FormContext.useOptionalFormContext)(),b=null!=a&&null!=v,j=b?v.getFieldProps(a):null,S="function"==typeof s,g=b?S?j?.error:void 0:l,R=(0,_index2.fieldTextAsString)(b?j?.error:l),T=(0,_react.useRef)((0,_index.createAnimatedValue)(g?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(T,{toValue:g?1:0,duration:y.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[g,T,y.motion.duration.fast]);const w=(0,_react.useMemo)(()=>{if(m)return m;const e=(0,_index2.fieldTextAsString)(r);return e?R?`${e}, error: ${R}`:e:void 0},[m,r,R]),k=(0,_index2.hasFieldText)(r),q=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[F.label,"inline"!==u||(0,_index2.hasFieldText)(i)?null:F.labelInline,(0,_index2.hasFieldText)(i)?F.labelShrink:null,d],children:[r,o?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),N=k?(0,_index2.hasFieldText)(i)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[F.labelRow,"inline"===u?F.labelInline:null],children:[q,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[F.help,{marginLeft:y.spacing.xs}],children:i})]}):q:null,I="inline"===u?F.inputInline:F.inputStacked,W=(0,_index2.hasFieldText)(g),C=!W&&(0,_index2.hasFieldText)(n),L=(()=>{if(S)return j?s(j):null;if(b&&j&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return _react.default.cloneElement(e,{value:j.value,onChangeText:e=>{j.onChangeText(e),t?.(e)},onBlur:e=>{j.onBlur(),r?.(e)},onFocus:e=>{j.onFocus(),i?.(e)},error:j.error,ref:e=>v.registerField(a,e??null)})}return s})(),M=o&&!k&&_react.default.isValidElement(L)?_react.default.cloneElement(L,{required:!0}):L;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===u?F.rootInline:F.rootStacked,f],accessibilityLabel:w,accessibilityHint:R||void 0,testID:h,children:[N,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[I,_],children:M}),C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.helper,x],numberOfLines:c||void 0,children:n}):null,W?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[F.error,{opacity:T},p],numberOfLines:c||void 0,accessibilityLiveRegion:"polite",children:g}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.StyleSheet.create({rootStacked:{flexDirection:"column",gap:e.spacing.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.spacing.xs},label:{fontSize:e.typography.fontSize.sm,...(0,_index.fontFor)(e,"medium"),color:e.colors.text.secondary},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:e.components.formField?.inlineLabelWidth??"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary},error:{fontSize:e.typography.fontSize.sm,color:e.colors.toneText.error}});var _default=exports.default=FormField;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Notation=require("../Notation/Notation.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 n,o,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(l,t,o):l[t]=e[t]);return l})(e,t)}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:r,help:i,helperText:n,error:o,required:l=!1,name:a,children:s,layout:u="stacked",helperLines:c,labelStyle:d,helperStyle:x,errorStyle:_,containerStyle:p,inputContainerStyle:f,accessibilityLabel:m,testID:h}=e,y=(0,_index.useTheme)(),v=(0,_react.useMemo)(()=>buildStyles(y),[y]),j=(0,_FormContext.useOptionalFormContext)(),F=null!=a&&null!=j,S=F?j.getFieldProps(a):null,N="function"==typeof s,b=F?N?S?.error:void 0:o,g=(0,_index2.fieldTextAsString)(F?S?.error:o),R=(0,_react.useRef)((0,_index.createAnimatedValue)(b?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(R,{toValue:b?1:0,duration:y.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[b,R,y.motion.duration.fast]);const k=(0,_react.useMemo)(()=>{if(m)return m;const e=(0,_index2.fieldTextAsString)(r);return e?g?`${e}, error: ${g}`:e:void 0},[m,r,g]),T=(0,_Notation.useNotationInk)(d,y.typography.fontSize.sm,y.colors.text.secondary),I=(0,_Notation.useNotationInk)(x,y.typography.fontSize.sm,y.colors.text.tertiary),w=(0,_Notation.useNotationInk)(_,y.typography.fontSize.sm,y.colors.toneText.error),q=(0,_index2.hasFieldText)(r),C=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[v.label,"inline"!==u||(0,_index2.hasFieldText)(i)?null:v.labelInline,(0,_index2.hasFieldText)(i)?v.labelShrink:null,d],children:[(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:T,children:r}),l?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),z=q?(0,_index2.hasFieldText)(i)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[v.labelRow,"inline"===u?v.labelInline:null],children:[C,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[v.help,{marginLeft:y.spacing.xs}],children:i})]}):C:null,W="inline"===u?v.inputInline:v.inputStacked,L=(0,_index2.hasFieldText)(b),M=!L&&(0,_index2.hasFieldText)(n),O=(()=>{if(N)return S?s(S):null;if(F&&S&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return _react.default.cloneElement(e,{value:S.value,onChangeText:e=>{S.onChangeText(e),t?.(e)},onBlur:e=>{S.onBlur(),r?.(e)},onFocus:e=>{S.onFocus(),i?.(e)},error:S.error,ref:e=>j.registerField(a,e??null)})}return s})(),P=l&&!q&&_react.default.isValidElement(O)?_react.default.cloneElement(O,{required:!0}):O;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===u?v.rootInline:v.rootStacked,p],accessibilityLabel:k,accessibilityHint:g||void 0,testID:h,children:[z,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W,f],children:P}),M?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[v.helper,x],numberOfLines:c||void 0,children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:I,children:n})}):null,L?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[v.error,{opacity:R},_],numberOfLines:c||void 0,accessibilityLiveRegion:"polite",children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:w,children:b})}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.StyleSheet.create({rootStacked:{flexDirection:"column",gap:e.spacing.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.spacing.xs},label:{fontSize:e.typography.fontSize.sm,...(0,_index.fontFor)(e,"medium"),color:e.colors.text.secondary},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:e.components.formField?.inlineLabelWidth??"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary},error:{fontSize:e.typography.fontSize.sm,color:e.colors.toneText.error}});var _default=exports.default=FormField;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:r,onChangeText:o,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:p=!1,multiline:x=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:b,actionStyle:j,size:S="md",variant:F,labelMode:R,required:N=!1,maxLength:w,showCounter:I=!0,textAlign:z,format:T,parse:V,style:B,containerStyle:A,inputStyle:k,labelStyle:C,messageStyle:D,borderRadius:L,onFocus:q,onBlur:H,accessibilityLabel:M,testID:P,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=F??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=R??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||x,ae=ne?Math.round(.1*$.fontSize):0,re="string"==typeof r&&r.length>0,oe=(0,_FieldBase.hasFieldText)(l),le=!0===l||oe,se=(0,_FieldBase.hasFieldText)(s),de=oe||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),pe=!p&&!1!==E,xe=U||re||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{pe&&fe.current?.focus()},[pe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),be=G.components.input?.shakeOnError??!1,je=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!be)return void(je.current=le);let e;return le&&!je.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),je.current=le,()=>e?.stop()},[le,ve,be,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),q?.(e)},[q]),Fe=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Re=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Ne=(0,_react.useMemo)(()=>{const e=G.components.input?.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},[G.components.input?.fillColors,K]),we=G.colors.field.caret,Ie=L??G.components.input?.borderRadius,ze=G.components.input?.tintLabelOnFocus??!1,Te=U&&ze?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(g)||Boolean(m)||ie,Ae="underline"===K,ke=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:xe,required:N,variant:K,sizeTokens:$,leadingOffset:ke,trailingOffset:Be?$.iconSize+G.spacing.sm:0,textAlign:z,paddingLeft:Ae?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:ae,floatTrim:ne?2:0,color:Te,style:C}),De=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:p}),Le=De.color,qe=De.placeholderColor,He=N&&!ce&&!re&&"string"==typeof a&&a.length>0,Me=le?l:s,Pe=I&&"number"==typeof w&&"string"==typeof r?`${r.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=M??(0,_FieldBase.fieldTextAsString)(i)??a,Ge=G.colors.field,We=p?Ge.iconDisabled:U?Ge.iconFocused:Ge.icon,$e={focused:U,disabled:p,error:le,color:We,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Re,disabled:!pe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:We})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:qe},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:qe,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:v}):null,Qe=b?(0,_jsxRuntime.jsx)(_index4.Button,{variant:b.variant??"outline",tone:b.tone??"primary",size:S,title:b.label,leftIcon:b.icon,loading:b.loading,disabled:p||b.disabled,onPress:b.onPress,pressAnimation:!1,testID:b.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},j]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},B],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:N,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:p,error:le,filled:re,minHeight:ne?X:void 0,borderRadius:Ie,fillOverrides:Ne,leading:Je,leadingDivider:null!=f,paddingLeft:Ae?0:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:A,children:[Ke,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:Le,fontSize:$.fontSize,...De.weightStyle,paddingLeft:Ae?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},k],textAlign:z,placeholder:_e&&!xe||He?void 0:a,placeholderTextColor:qe,value:T&&null!=r?T(r):r,onChangeText:e=>{o&&o(V?V(e):e)},onFocus:Se,onBlur:Fe,editable:pe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Oe,accessibilityState:{disabled:p},"aria-disabled":p,testID:P,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:qe,fontSize:$.fontSize,weightStyle:De.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:z}):null]})]}),Ce.node]}),Qe]}),de||Pe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},D],children:Me})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Pe?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Pe}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:o,value:a,onChangeText:r,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:x=!1,multiline:p=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:j,actionStyle:b,size:S="md",variant:N,labelMode:R,required:F=!1,maxLength:w,showCounter:z=!0,textAlign:I,format:T,parse:V,style:k,containerStyle:B,inputStyle:A,labelStyle:C,messageStyle:q,borderRadius:D,onFocus:L,onBlur:H,accessibilityLabel:P,testID:M,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=N??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=R??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||p,oe=ne?Math.round(.1*$.fontSize):0,ae="string"==typeof a&&a.length>0,re=(0,_FieldBase.hasFieldText)(l),le=!0===l||re,se=(0,_FieldBase.hasFieldText)(s),de=re||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),xe=!x&&!1!==E,pe=U||ae||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{xe&&fe.current?.focus()},[xe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),je=G.components.input?.shakeOnError??!1,be=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!je)return void(be.current=le);let e;return le&&!be.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),be.current=le,()=>e?.stop()},[le,ve,je,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),L?.(e)},[L]),Ne=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Re=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Fe=(0,_react.useMemo)(()=>{const e=G.components.input?.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},[G.components.input?.fillColors,K]),we=G.colors.field.caret,ze=D??G.components.input?.borderRadius,Ie=G.components.input?.tintLabelOnFocus??!1,Te=U&&Ie?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),ke=Boolean(g)||Boolean(m)||ie,Be="underline"===K,Ae=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:pe,required:F,variant:K,sizeTokens:$,leadingOffset:Ae,trailingOffset:ke?$.iconSize+G.spacing.sm:0,textAlign:I,paddingLeft:Be?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:oe,floatTrim:ne?2:0,color:Te,style:C}),qe=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:x}),De=qe.color,Le=qe.placeholderColor,He=F&&!ce&&!ae&&"string"==typeof o&&o.length>0,Pe=le?l:s,Me=z&&"number"==typeof w&&"string"==typeof a?`${a.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=(0,_Notation.useNotationInk)(q,$.messageFontSize,Ee),Ge=P??(0,_FieldBase.fieldTextAsString)(i)??o,We=G.colors.field,$e=x?We.iconDisabled:U?We.iconFocused:We.icon,Xe={focused:U,disabled:x,error:le,color:$e,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,Xe),Je=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Re,disabled:!xe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:$e})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:Le},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Ke=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Qe=_reactNative.StyleSheet.flatten(h),Ue=Qe?.fontSize??$.fontSize,Ye=Qe?.color??Le,Ze=(0,_react.useMemo)(()=>({fontSize:Ue,color:Ye}),[Ue,Ye]),et=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:Le,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?oe:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?oe:void 0}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:Le,lineHeight:ne?J:void 0},h],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Ze,children:v})})}):null,tt=j?(0,_jsxRuntime.jsx)(_index4.Button,{variant:j.variant??"outline",tone:j.tone??"primary",size:S,title:j.label,leftIcon:j.icon,loading:j.loading,disabled:x||j.disabled,onPress:j.onPress,pressAnimation:!1,testID:j.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},b]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},k],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:F,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:x,error:le,filled:ae,minHeight:ne?X:void 0,borderRadius:ze,fillOverrides:Fe,leading:Ke,leadingDivider:null!=f,paddingLeft:Be?0:void 0,trailing:Je,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:B,children:[et,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:De,fontSize:$.fontSize,...qe.weightStyle,paddingLeft:Be?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?oe:void 0,textAlignVertical:ne?"top":"center"},A],textAlign:I,placeholder:_e&&!pe||He?void 0:o,placeholderTextColor:Le,value:T&&null!=a?T(a):a,onChangeText:e=>{r&&r(V?V(e):e)},onFocus:Se,onBlur:Ne,editable:xe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Ge,accessibilityState:{disabled:x},"aria-disabled":x,testID:M,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:o,color:Le,fontSize:$.fontSize,weightStyle:qe.weightStyle,align:ne?"top":"center",paddingTop:ne?oe:void 0,textAlign:I}):null]})]}),Ce.node]}),tt]}),de||Me?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},q],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Oe,children:Pe})})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Me?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Me}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,DEFAULT_BOX_SIZE=20,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=i.components.checkbox?.md?.boxSize??20,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.xs,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,rightPlacement:m="auto",selectable:x=!1,checked:h=!1,onCheckedChange:_,actions:g,onPress:p,haptic:j,selected:y=!1,disabled:b=!1,size:f="md",divider:S=!1,chevron:v=!1,leftActions:R,rightActions:w,accessibilityLabel:I,accessibilityHint:L,style:k,containerStyle:z,titleStyle:N,subtitleStyle:A,descriptionStyle:V,leftSlotStyle:F,rightSlotStyle:B,testID:C}=e,H=(0,_index.useTheme)(),P=(0,_react.useMemo)(()=>sizeFor(H,f),[H,f]),q=(0,_react.useMemo)(()=>buildStyles(H),[H]),{fontScale:D}=(0,_reactNative.useWindowDimensions)(),W=!!u&&("below"===m||"auto"===m&&D>1.2),T=x||!!p,E=T&&!b,{scale:O,pressIn:M,pressOut:G}=(0,_usePressAnimation.usePressAnimation)({enabled:E}),U=(0,_useFlickGuard.useFlickGuard)(),Z=I??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,K=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[f]})),X=x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:h,disabled:b}),K?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.selectionLeadContent,children:K}):null]}):K,J=null!=g&&!1!==g&&!(Array.isArray(g)&&0===g.length),Q=S&&!J,Y=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.row,{paddingVertical:P.paddingVertical,minHeight:P.minHeight,backgroundColor:y?H.colors.surface.selected:"transparent"},Q?q.divider:null,b?q.disabled:null,z],children:[X?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.leftSlot,F],children:X}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.title,{fontSize:P.titleSize,...(0,_index.fontFor)(H,"medium"),color:b?H.colors.text.disabled:H.colors.text.primary},N],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.subtitle,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.secondary},A],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.description,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.tertiary},V],numberOfLines:2,children:r}):null,W?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.rightBelow,B],children:u}):null]}),u&&!W||v?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.rightSlot,W?null:B],children:[W?null:u,v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u&&!W?q.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:b?H.colors.text.disabled:H.colors.text.tertiary})}):null]}):null]}),$=T?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:O}]},k],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(!E||U.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(j,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?_?.(!h):p?.(e)},onPressIn:e=>{U.onPressIn(e),M()},onPressOut:G,disabled:!E,accessibilityRole:x?"checkbox":"button",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:x?{checked:h,disabled:!E}:{selected:y,disabled:!E},"aria-disabled":!E,...x?{"aria-checked":h}:{"aria-selected":y},testID:C,android_ripple:{color:H.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?q.pressed:null,children:Y})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:{selected:y,disabled:b},"aria-selected":y,"aria-disabled":b,testID:C,style:k,children:Y}),ee=R&&R.length>0||w&&w.length>0,te=J?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[y?{backgroundColor:H.colors.surface.selected}:null,S?q.divider:null],children:[$,(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.actions,children:renderActions(g)})]}):$,ie=ee?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:R,rightActions:w,accessibilityLabel:Z,children:te}):te;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):ie});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,DEFAULT_BOX_SIZE=20,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=i.components.checkbox?.md?.boxSize??20,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.xs,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,rightPlacement:m="auto",selectable:x=!1,checked:h=!1,onCheckedChange:_,actions:g,onPress:p,haptic:j,selected:b=!1,disabled:f=!1,size:y="md",divider:v=!1,chevron:S=!1,leftActions:R,rightActions:w,contextMenu:I,accessibilityLabel:L,accessibilityHint:k,style:z,containerStyle:N,titleStyle:V,subtitleStyle:A,descriptionStyle:C,leftSlotStyle:F,rightSlotStyle:q,testID:B}=e,P=(0,_index.useTheme)(),H=(0,_react.useMemo)(()=>sizeFor(P,y),[P,y]),D=(0,_react.useMemo)(()=>buildStyles(P),[P]),{fontScale:M}=(0,_reactNative.useWindowDimensions)(),W=!!u&&("below"===m||"auto"===m&&M>1.2),T=(0,_useContextMenu.useContextMenu)(f?void 0:I,{haptic:j,testID:B}),E=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(t,T.hostRef),[t,T.hostRef]),O=x||!!p,G=O||T.enabled,U=G&&!f,{scale:Z,pressIn:K,pressOut:X}=(0,_usePressAnimation.usePressAnimation)({enabled:U}),J=(0,_useFlickGuard.useFlickGuard)(),Q=L??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,Y=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[y]})),$=x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:D.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:h,disabled:f}),Y?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.selectionLeadContent,children:Y}):null]}):Y,ee=null!=g&&!1!==g&&!(Array.isArray(g)&&0===g.length),te=v&&!ee,ie=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.row,{paddingVertical:H.paddingVertical,minHeight:H.minHeight,backgroundColor:b?P.colors.surface.selected:"transparent"},te?D.divider:null,f?D.disabled:null,N],children:[$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.leftSlot,F],children:$}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:D.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.title,{fontSize:H.titleSize,...(0,_index.fontFor)(P,"medium"),color:f?P.colors.text.disabled:P.colors.text.primary},V],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.subtitle,{fontSize:H.subtitleSize,color:f?P.colors.text.disabled:P.colors.text.secondary},A],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.description,{fontSize:H.subtitleSize,color:f?P.colors.text.disabled:P.colors.text.tertiary},C],numberOfLines:2,children:r}):null,W?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.rightBelow,q],children:u}):null]}),u&&!W||S?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.rightSlot,W?null:q],children:[W?null:u,S?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u&&!W?D.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:f?P.colors.text.disabled:P.colors.text.tertiary})}):null]}):null]}),se=G?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:Z}]},z],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:E,onPress:e=>{if(!U||!O||J.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(j,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?_?.(!h):p?.(e)},onPressIn:e=>{J.onPressIn(e),K()},onPressOut:X,disabled:!U,accessibilityRole:x?"checkbox":p?"button":void 0,accessibilityLabel:Q,accessibilityHint:k,accessibilityState:x?{checked:h,disabled:!U}:{selected:b,disabled:!U},"aria-disabled":!U,...x?{"aria-checked":h}:{"aria-selected":b},testID:B,android_ripple:{color:P.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?D.pressed:null,...T.hostProps,children:ie})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Q,accessibilityHint:k,accessibilityState:{selected:b,disabled:f},"aria-selected":b,"aria-disabled":f,testID:B,style:z,children:ie}),ne=R&&R.length>0||w&&w.length>0,re=ee?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[b?{backgroundColor:P.colors.surface.selected}:null,v?D.divider:null],children:[se,(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.actions,children:renderActions(g)})]}):se,le=ne?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:R,rightActions:w,accessibilityLabel:Q,children:re}):re;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):T.enabled?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[le,T.renderSurface((0,_jsxRuntime.jsx)(_reactNative.View,{style:D.preview,children:ie}))]}):le});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},preview:{flex:1,backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Menu=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_MenuSurface=require("./MenuSurface.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,u,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?a:r){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(u.get||u.set)?n(l,t,u):l[t]=e[t]);return l})(e,t)}const Menu=e=>{const{items:t,trigger:r,title:a,topActions:n,placement:u="bottom",presentation:l="auto",unavailable:s="disable",open:o,onOpenChange:i,haptic:c,accessibilityLabel:f,closeLabel:p="Close menu",backLabel:_="Back",testID:b}=e,[d,m]=(0,_useControllableState.useControllableState)({value:o,defaultValue:!1,onChange:i}),[j,x]=(0,_react.useState)(null),[M,R]=(0,_react.useState)(d),g=(0,_react.useRef)(null),h=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{d?(R(!0),g.current?.measureInWindow((e,t,r,a)=>{x({x:e,y:t,width:r,height:a})})):x(null)},[d]);const v=(0,_react.useCallback)(()=>m(!1),[m]),y=(0,_react.useCallback)(()=>h.current??g.current,[]),C=r.props,S=C.ref,k={ref:(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(S,h),[S]),"aria-expanded":d,onPress:e=>{C.onPress?.(e),m(!0)}},q=_react.default.cloneElement(r,k);return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{ref:g,collapsable:!1,testID:b,children:q}),M?(0,_jsxRuntime.jsx)(_MenuSurface.MenuSurface,{open:d,anchor:j,items:t,title:a,topActions:n,placement:u,presentation:l,unavailable:s,onClose:v,restoreFocusTo:y,haptic:c,accessibilityLabel:f,closeLabel:p,backLabel:_,testID:b}):null]})};exports.Menu=Menu;var _default=exports.default=Menu;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MenuSurface=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"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_placement=require("../../utils/placement.js"),_responsive=require("../../utils/responsive.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Divider/index.js"),_index3=require("../OptionSheet/index.js"),_index4=require("../Text/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_focusHost=require("./focusHost.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const MENU_MIN_WIDTH=180,MENU_MAX_WIDTH=280,ROW_MIN_HEIGHT=48,TOP_ACTION_MIN_HEIGHT=64,ICON_SIZE=20,PREVIEW_LIFT=1.02,BACK_KEY="__menu-back",TOP_PREFIX="__menu-top:",WEB_CHECKABLE_ROLE=(0,_webOnly.webOnly)({role:"menuitemcheckbox"}),MenuSurface=e=>{const{open:t,anchor:s,items:i,title:n,topActions:r,placement:o,presentation:a,unavailable:l,context:c=!1,preview:u,onClose:d,restoreFocusTo:_,haptic:m,accessibilityLabel:p,closeLabel:x,backLabel:b,testID:h}=e,f=(0,_index.useTheme)(),v=(0,_react.useMemo)(()=>buildStyles(f),[f]),y=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),j=(0,_reactNative.useWindowDimensions)(),R=(0,_useReducedMotion.useReducedMotion)(),g=(0,_react.useMemo)(()=>(0,_menuModel.visibleGroups)(i,l),[i,l]),w=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(r,l),[r,l]),I="sheet"===a||"auto"===a&&j.width<_responsive.Breakpoints.lg&&(0,_menuModel.wantsSheet)(g,w),[A,k]=(0,_react.useState)(null),[N,E]=(0,_react.useState)(null),S=(0,_react.useRef)(d);S.current=d;const T=(0,_react.useRef)(_);T.current=_;const C=(0,_react.useRef)(null),M=(0,_react.useRef)(!1),O=(0,_react.useRef)(!1),L=(0,_react.useRef)(new Map),H=(0,_react.useRef)(null),D=(0,_react.useCallback)(()=>{if(!M.current)return;M.current=!1;const e=C.current;C.current=null,e?e():(0,_focusHost.focusHost)(T.current?.())},[]);(0,_react.useEffect)(()=>{if(t)return O.current=!0,M.current=!1,C.current=null,(0,_placement.claimAnchoredSurface)(()=>S.current());O.current&&(O.current=!1,M.current=!0,k(null),E(null),I||"ios"===_reactNative.Platform.OS||D())},[t]);const P=(0,_react.useCallback)(e=>{if(e.disabled)return;const t=(0,_hapticUtils.resolveHaptic)(m,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.key!==BACK_KEY?e.submenu?k(e):(C.current=e.onPress??null,S.current()):k(null)},[m]),q=(0,_react.useMemo)(()=>({width:j.width,height:j.height,insets:y}),[j.width,j.height,y]),B=(0,_react.useMemo)(()=>{if(!s||!N)return null;const e=s.x+s.width/2>q.width/2?"end":"start";return(0,_placement.computePlacement)(s,N,q,o,{align:e})},[s,N,q,o]);let V=q.height-y.top-y.bottom-2*_placement.PLACEMENT_MARGIN;if(s&&B){const e=(0,_placement.placementRoom)(s,q);V="top"===B.placement?e.above:e.below}const F=Math.min(280,q.width-y.left-y.right-2*_placement.PLACEMENT_MARGIN),K=t&&null!==B,W=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,z=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!K)return(0,_index.setNativeValue)(W,0),void(0,_index.setNativeValue)(z,1);const e=[_reactNative.Animated.timing(W,{toValue:1,duration:f.motion.duration.fast,easing:_reactNative.Easing.bezier(...f.motion.easing.decelerate),useNativeDriver:!0})];c&&!R&&e.push(_reactNative.Animated.spring(z,{toValue:1.02,damping:f.motion.spring.snappy.damping,stiffness:f.motion.spring.snappy.stiffness,mass:f.motion.spring.snappy.mass,useNativeDriver:!0}));const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[K,c,R,W,z,f.motion]);const $=(0,_react.useCallback)(e=>{const{width:t,height:s}=e.nativeEvent.layout;E(e=>e&&e.width===t&&e.height===s?e:{width:t,height:s})},[]),G=c&&"top"===B?.placement,U=A?.submenu?[A.submenu]:g,Y=G?[...U].reverse().map(e=>[...e].reverse()):U,X=[];if(A)X.push({key:BACK_KEY,label:A.label});else for(const e of w)X.push({key:`${TOP_PREFIX}${e.key}`,label:e.label,item:e});for(const e of Y)for(const t of e)X.push({key:t.key,label:t.label,item:t});const Z=X[0]?.key;(0,_react.useEffect)(()=>{if(!K||I||!Z)return;const e=setTimeout(()=>(0,_focusHost.focusHost)(L.current.get(Z)),_focusHost.FOCUS_DELAY_MS);return()=>clearTimeout(e)},[K,I,Z]);const setItemRef=e=>t=>{t?L.current.set(e,t):L.current.delete(e)},J=(0,_webOnly.webOnly)({onKeyDown:e=>{const t=e.key??e.nativeEvent?.key??"",s=X.length,i=X.findIndex(e=>e.key===H.current);let n=-1;if("ArrowDown"===t)n=(i+1)%s;else if("ArrowUp"===t)n=i<=0?s-1:i-1;else if("Home"===t)n=0;else if("End"===t)n=s-1;else{if("ArrowLeft"===t&&A)return e.preventDefault?.(),void k(null);if("ArrowRight"===t&&X[i]?.item?.submenu)return e.preventDefault?.(),void P(X[i].item);if(1===t.length&&""!==t.trim()){const e=t.toLowerCase();for(let t=1;t<=s;t+=1){const r=(i+t)%s;if(X[r].label.toLowerCase().startsWith(e)){n=r;break}}}}n>=0&&(e.preventDefault?.(),(e=>{const t=X[e];t&&(0,_focusHost.focusHost)(L.current.get(t.key))})(n))}});if(I){const e=A?.submenu?[{key:BACK_KEY,label:b,icon:"chevron-left"},...A.submenu]:[...w,...g.flat()],s=new Set(e.filter(e=>e.checked).map(e=>e.key));return(0,_jsxRuntime.jsx)(_index3.OptionSheet,{open:t,onClose:d,onAfterClose:D,title:A?.label??n,options:e,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:e=>Boolean(e.disabled),destructiveOf:e=>Boolean(e.destructive),descriptionOf:e=>e.description,iconOf:e=>{const t=e;return(0,_slotIcon.renderSlotIcon)(t.icon,{color:t.destructive?f.colors.toneText.error:f.colors.text.secondary,size:20,disabled:Boolean(t.disabled)})},isSelected:e=>s.has(String(e)),onSelect:e=>P(e),accessibilityLabel:p??n,testID:h?`${h}-sheet`:void 0})}const inkFor=e=>e.disabled?f.colors.text.disabled:e.destructive?f.colors.toneText.error:f.colors.text.primary,Q=A?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(BACK_KEY),onPress:()=>k(null),onFocus:()=>{H.current=BACK_KEY},accessibilityRole:"menuitem",accessibilityLabel:`${b}, ${A.label}`,android_ripple:{color:f.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[v.row,e?v.pressed:null],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-left",size:20,color:f.colors.text.secondary})}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",weight:"semibold",numberOfLines:1,style:v.labels,children:A.label})]}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[n?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",accessibilityRole:"header",numberOfLines:2,style:v.title,children:n}):null,w.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.topRow,children:w.map(e=>{const t=`${TOP_PREFIX}${e.key}`,s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(t),onPress:()=>P(e),onFocus:()=>{H.current=t},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s},"aria-disabled":s,testID:e.testID,style:({pressed:e})=>[v.topAction,e?v.pressed:null],children:[(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:i,numberOfLines:1,children:e.label})]},t)})}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):null]});return(0,_jsxRuntime.jsxs)(_reactNative.Modal,{visible:t,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:d,onDismiss:D,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:[_reactNative.StyleSheet.absoluteFill,c?v.scrim:null],onPress:d,accessibilityRole:"button",accessibilityLabel:x,testID:h?`${h}-scrim`:void 0}),c&&u&&s?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",style:[v.preview,{left:s.x,top:s.y,width:s.width,height:s.height,transform:[{scale:z}]}],children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{accessibilityRole:"menu",accessibilityLabel:A?.label??p??n,onLayout:$,testID:h?`${h}-menu`:void 0,...J,style:[v.anchored,{left:B?.x??0,top:B?.y??0,maxWidth:F,opacity:K?W:0}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.surface,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[v.clip,{maxHeight:V}],children:[Q,(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:v.scroll,bounces:!1,keyboardShouldPersistTaps:"handled",children:Y.map((e,t)=>{const s=e.some(e=>null!=e.icon);return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[t>0?(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"}):null,e.map(e=>((e,t)=>{const s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(e.key),onPress:()=>P(e),onFocus:()=>{H.current=e.key},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s,checked:e.checked},"aria-disabled":s,"aria-checked":e.checked,...void 0!==e.checked?WEB_CHECKABLE_ROLE:null,android_ripple:{color:f.colors.surface.pressed,borderless:!1},testID:e.testID,style:({pressed:e})=>[v.row,e?v.pressed:null],children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:v.labels,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:i,numberOfLines:2,children:e.label}),e.description?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:2,children:e.description}):null]}),e.detail?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:e.detail}):null,e.checked?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"check",size:20,color:f.colors.primary}):null,e.submenu?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-right",size:20,color:f.colors.text.tertiary}):null]},e.key)})(e,s))]},e[0].key)})})]})})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})};exports.MenuSurface=MenuSurface;const buildStyles=e=>_reactNative.StyleSheet.create({scrim:{backgroundColor:e.colors.background.overlay},preview:{position:"absolute"},anchored:{position:"absolute",minWidth:180},surface:{backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadows.lg},clip:{borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},scroll:{flexGrow:0,flexShrink:1},title:{paddingHorizontal:e.spacing.md,paddingTop:e.spacing.sm,paddingBottom:e.spacing.xs},row:{flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:48,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},pressed:{backgroundColor:e.colors.surface.pressed},icon:{width:20,alignItems:"center"},labels:{flexGrow:1,flexShrink:1},topRow:{flexDirection:"row",padding:e.spacing.xs,gap:e.spacing.xs},topAction:{flexGrow:1,flexBasis:0,alignItems:"center",justifyContent:"center",gap:e.spacing.xs,minHeight:64,borderRadius:e.radius.sm,..._corners.smoothCorners}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.focusHost=exports.FOCUS_DELAY_MS=void 0;var _reactNative=require("react-native");const FOCUS_DELAY_MS=exports.FOCUS_DELAY_MS=150,isHost=e=>null!=e&&"function"==typeof e.measureInWindow,focusHost=e=>{"web"!==_reactNative.Platform.OS?isHost(e)&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(e,"focus"):e?.focus?.()};exports.focusHost=focusHost;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Menu",{enumerable:!0,get:function(){return _Menu.Menu}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _Menu.default}});var _Menu=_interopRequireWildcard(require("./Menu.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 u,o,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(u=r?n:t){if(u.has(e))return u.get(e);u.set(e,i)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?u(i,r,o):i[r]=e[r]);return i})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.wantsSheet=exports.visibleTopActions=exports.visibleGroups=exports.menuActions=exports.SHEET_ITEM_THRESHOLD=exports.MAX_TOP_ACTIONS=exports.MAX_GROUPS=exports.ACTION_PREFIX=void 0;var _mobileCore=require("@webority/mobile-core");const MAX_GROUPS=exports.MAX_GROUPS=3,MAX_TOP_ACTIONS=exports.MAX_TOP_ACTIONS=3,SHEET_ITEM_THRESHOLD=exports.SHEET_ITEM_THRESHOLD=7,ACTION_PREFIX=exports.ACTION_PREFIX="menu:",isGrouped=e=>e.length>0&&Array.isArray(e[0]),isShown=(e,o)=>!(e.hidden||"hide"===o&&e.disabled),visibleItem=(e,o)=>{if(!isShown(e,o))return null;if(!e.submenu)return e;const s=e.submenu.filter(e=>isShown(e,o));return s.length>0?{...e,submenu:s}:null},visibleGroups=(e,o)=>{const s=isGrouped(e)?e:[e];__DEV__&&s.length>MAX_GROUPS&&_mobileCore.Logger.warn(`[Menu] ${s.length} groups given; a menu keeps to ${MAX_GROUPS}.`);const t=[];for(const e of s){const s=[];for(const t of e){const e=visibleItem(t,o);e&&s.push(e)}s.length>0&&t.push(s)}return t};exports.visibleGroups=visibleGroups;const visibleTopActions=(e,o)=>{if(!e)return[];__DEV__&&e.length>MAX_TOP_ACTIONS&&_mobileCore.Logger.warn(`[Menu] topActions takes at most ${MAX_TOP_ACTIONS}; the rest are not shown.`);return e.slice(0,MAX_TOP_ACTIONS).filter(e=>isShown(e,o)&&!e.submenu)};exports.visibleTopActions=visibleTopActions;const wantsSheet=(e,o)=>{let s=o.length;for(const o of e)for(const e of o)if(s+=1,e.description)return!0;return s>SHEET_ITEM_THRESHOLD};exports.wantsSheet=wantsSheet;const menuActions=(e,o)=>{const s=[],add=(e,o)=>{if(e.disabled)return;if(e.submenu){for(const o of e.submenu)add(o,e);return}const t=e.accessibilityLabel??e.label;s.push({name:`${ACTION_PREFIX}${o?`${o.key}/`:""}${e.key}`,label:o?`${o.label}, ${t}`:t,item:e})};for(const e of o)add(e);for(const o of e)for(const e of o)add(e);return s};exports.menuActions=menuActions;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useContextMenu=void 0;var _react=require("react"),_hapticUtils=require("../../utils/hapticUtils.js"),_MenuSurface=require("./MenuSurface.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const useContextMenu=(e,t={})=>{const c=(0,_react.useRef)(null),[s,n]=(0,_react.useState)(!1),[a,r]=(0,_react.useState)(!1),[i,o]=(0,_react.useState)(null),u=e?.unavailable??"hide",l=e?.items,_=e?.topActions,p=(0,_react.useMemo)(()=>l?(0,_menuModel.visibleGroups)(l,u):[],[l,u]),b=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(_,u),[_,u]),m=(0,_react.useMemo)(()=>(0,_menuModel.menuActions)(p,b),[p,b]),h=p.length>0||b.length>0,M=(0,_react.useRef)(e);M.current=e;const v=(0,_react.useRef)(t);v.current=t;const d=(0,_react.useRef)(m);d.current=m;const f=(0,_react.useCallback)(e=>{e&&r(!0),n(e),M.current?.onOpenChange?.(e)},[]);(0,_react.useEffect)(()=>{!h&&s&&f(!1)},[h,s,f]);const x=(0,_react.useCallback)(()=>{c.current?.measureInWindow((e,t,c,s)=>{o({x:e,y:t,width:c,height:s}),f(!0)})},[f]),C=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v.current.haptic,"longPress");e&&(0,_hapticUtils.triggerHaptic)(e),x()},[x]),y=(0,_react.useCallback)(e=>{const t=d.current.find(t=>t.name===e.nativeEvent.actionName);if(!t)return void v.current.onAccessibilityAction?.(e);const c=(0,_hapticUtils.resolveHaptic)(v.current.haptic,"selection");c&&(0,_hapticUtils.triggerHaptic)(c),t.item.onPress?.()},[]),A=t.accessibilityActions,g=(0,_react.useMemo)(()=>[...A??[],...m.map(e=>({name:e.name,label:e.label}))],[A,m]),j=(0,_react.useMemo)(()=>h?{onLongPress:C,accessibilityActions:g,onAccessibilityAction:y,...(0,_webOnly.webOnly)({onContextMenu:e=>{e.preventDefault?.(),x()}})}:{},[h,C,g,y,x]),k=(0,_react.useCallback)(()=>f(!1),[f]),w=(0,_react.useCallback)(()=>c.current,[]);return{enabled:h,hostRef:c,hostProps:j,renderSurface:c=>e&&h&&a?(0,_jsxRuntime.jsx)(_MenuSurface.MenuSurface,{open:s,anchor:i,items:e.items,title:e.title,topActions:e.topActions,placement:e.placement??"bottom",presentation:e.presentation??"auto",unavailable:u,context:!0,preview:!1===e.preview?void 0:e.preview??c,onClose:k,restoreFocusTo:w,haptic:t.haptic,accessibilityLabel:e.accessibilityLabel,closeLabel:e.closeLabel??"Close menu",backLabel:e.backLabel??"Back",testID:t.testID?`${t.testID}-context`:void 0}):null}};exports.useContextMenu=useContextMenu;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.webOnly=void 0;var _reactNative=require("react-native");const webOnly=e=>"web"===_reactNative.Platform.OS?e:null;exports.webOnly=webOnly;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MessageBubble=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_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("../Markdown/index.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_BUBBLE_LABELS=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=Object.freeze({you:"You",sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",retry:"Try again",replyTo:e=>e?`Reply to ${e}`:"Reply"}),RUN_GAP=2,MAX_WIDTH="85%",STATUS_ICON=14,statusIcon=e=>{switch(e){case"sending":return"clock";case"sent":return"check";case"failed":return"alert-circle";default:return"check-check"}},statusColour=(e,t)=>{switch(t){case"read":return e.colors.toneText.info;case"failed":return e.colors.toneText.error;default:return e.colors.text.tertiary}},MessageBubble=({side:e,text:t,children:s,markdown:r=!1,groupPosition:i="single",author:n,time:a,status:o,replyTo:l,streaming:c=!1,error:u,onRetry:d,actions:x,onLongPress:_,footer:b,labels:m,haptic:p,style:g,testID:y})=>{const h=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(h),[h]),j=m?{...DEFAULT_MESSAGE_BUBBLE_LABELS,...m}:DEFAULT_MESSAGE_BUBBLE_LABELS,L="mine"===e,B="single"===i||"first"===i,T="single"===i||"last"===i,R=null==a?"":(0,_mobileCore.formatTime)(a),E=("failed"===o||Boolean(u))&&Boolean(d),v=L?j.you:n??"",S=(0,_react.useMemo)(()=>{const e=x?[...x]:[];return l?.onPress&&e.push({name:"openReply",label:j.replyTo(l.author),onPress:l.onPress}),E&&d&&e.push({name:"retry",label:j.retry,onPress:d}),e},[x,l,E,d,j]),A=!s||(x?.length??0)>0,M=o&&L?j[o]:"",P=[v,R,t,l?`${j.replyTo(l.author)}: ${l.text}`:"",M].filter(Boolean).join(", "),I=(0,_react.useRef)(c);(0,_react.useEffect)(()=>{I.current&&!c&&!u&&t&&(0,_announce.announce)(v?`${v}, ${t}`:t),I.current=c},[c,u,t,v]);const U=(0,_react.useRef)(u);(0,_react.useEffect)(()=>{u&&u!==U.current&&(0,_announce.announce)(u,{polite:!1}),U.current=u},[u]);const k=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(p,"longPress");e&&(0,_hapticUtils.triggerHaptic)(e),_?.()},[p,_]),q=(0,_react.useCallback)(e=>{S.find(t=>t.name===e.nativeEvent.actionName)?.onPress()},[S]),D=h.radius.xl,w=h.radius.xs,C=L?{borderTopRightRadius:B?D:w,borderBottomRightRadius:T?D:w}:{borderTopLeftRadius:B?D:w,borderBottomLeftRadius:T?D:w},$=s??(r?(0,_jsxRuntime.jsx)(_index4.Markdown,{children:t}):(0,_jsxRuntime.jsx)(_index5.Text,{variant:"body",children:t})),N=l?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:l.onPress,disabled:!l.onPress,accessibilityRole:l.onPress?"button":void 0,accessibilityLabel:`${j.replyTo(l.author)}: ${l.text}`,style:f.quote,children:[l.author?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",weight:"semibold",color:"link",numberOfLines:1,children:l.author}):null,(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"secondary",numberOfLines:2,children:l.text})]}):null,H=[f.bubble,L?f.mine:f.theirs,C],F=A?{accessible:!0,accessibilityLabel:P,accessibilityState:{busy:c},"aria-busy":c,accessibilityActions:S.map(({name:e,label:t})=>({name:e,label:t})),onAccessibilityAction:q}:{accessible:!1},z=(x?.length??0)>0?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onLongPress:k,delayLongPress:350,style:H,testID:y?`${y}-bubble`:void 0,...F,children:[N,$]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H,testID:y?`${y}-bubble`:void 0,...F,children:[N,$]}),G=T&&(""!==R||L&&o);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.root,L?f.rootMine:f.rootTheirs,{marginTop:B?h.spacing.sm:2},g],testID:y,children:[!L&&B&&n?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",style:f.author,numberOfLines:1,importantForAccessibility:A?"no-hide-descendants":"auto",accessibilityElementsHidden:A,children:n}):null,z,G?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.meta,L?f.metaMine:null],importantForAccessibility:A?"no-hide-descendants":"auto",accessibilityElementsHidden:A,children:[R?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",children:R}):null,L&&o?(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:statusIcon(o),size:14,color:statusColour(h,o),accessibilityLabel:j[o],testID:y?`${y}-status-${o}`:void 0}):null]}):null,u?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"error",style:L?f.endText:null,children:u}):null,E?(0,_jsxRuntime.jsx)(_index3.Button,{title:j.retry,variant:"link",size:"sm",leftIcon:"refresh-cw",onPress:d,testID:y?`${y}-retry`:void 0}):null,b]})};exports.MessageBubble=MessageBubble;const buildStyles=e=>_reactNative.StyleSheet.create({root:{maxWidth:"85%",gap:e.spacing.xs},rootMine:{alignSelf:"flex-end",alignItems:"flex-end"},rootTheirs:{alignSelf:"flex-start",alignItems:"flex-start"},author:{paddingHorizontal:e.spacing.md},bubble:{borderRadius:e.radius.xl,..._corners.smoothCorners,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm,gap:e.spacing.xs},mine:{backgroundColor:e.colors.primaryMuted},theirs:{backgroundColor:e.colors.background.secondary},quote:{borderLeftWidth:3,borderLeftColor:e.colors.primary,paddingLeft:e.spacing.sm,paddingVertical:e.spacing.xs},meta:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs,paddingHorizontal:e.spacing.xs},metaMine:{justifyContent:"flex-end"},endText:{textAlign:"right"}});var _default=exports.default=MessageBubble;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_MESSAGE_BUBBLE_LABELS",{enumerable:!0,get:function(){return _MessageBubble.DEFAULT_MESSAGE_BUBBLE_LABELS}}),Object.defineProperty(exports,"MessageBubble",{enumerable:!0,get:function(){return _MessageBubble.MessageBubble}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _MessageBubble.default}});var _MessageBubble=_interopRequireWildcard(require("./MessageBubble.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 u,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(u=r?n:t){if(u.has(e))return u.get(e);u.set(e,a)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?u(a,r,o):a[r]=e[r]);return a})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_MESSAGE_LIST_LABELS=void 0,exports.MessageList=MessageList,exports.default=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_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("../Badge/index.js"),_index3=require("../DateSeparator/index.js"),_index4=require("../IconButton/index.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_LIST_LABELS=exports.DEFAULT_MESSAGE_LIST_LABELS=Object.freeze({today:"Today",yesterday:"Yesterday",jumpToLatest:"Jump to the latest message",newMessages:e=>1===e?"1 new message":`${e} new messages`,unread:"New messages",loadingOlder:"Loading earlier messages"}),JUMP_AT=160,KEEP_POSITION={minIndexForVisible:0,autoscrollToTopThreshold:JUMP_AT},positionOf=(e,t)=>e?t?"middle":"last":t?"first":"single";function MessageList({messages:e,keyExtractor:t,renderMessage:n,getAuthorKey:s,getDate:r,firstUnreadKey:a,onLoadOlder:o,loadingOlder:i=!1,hasOlder:l=!0,typing:u,empty:c,getAnnouncement:d,followNew:_,keyboardAware:m=!0,keyboardOffset:x,labels:p,now:g,onScroll:j,contentContainerStyle:f,style:y,testID:b,...S}){const v=(0,_index.useTheme)(),L=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),h=(0,_useReducedMotion.useReducedMotion)(),E=(0,_react.useMemo)(()=>buildStyles(v),[v]),R=(0,_react.useMemo)(()=>({...DEFAULT_MESSAGE_LIST_LABELS,...p}),[p]),w=x??L.bottom,T=(0,_react.useRef)(null),A=(0,_react.useRef)(!1),[C,M]=(0,_react.useState)(!1),[I,N]=(0,_react.useState)(0),O=(0,_react.useMemo)(()=>{const n=r?e.map(e=>(0,_mobileCore.formatDate)(r(e))):null,o=s?e.map(s):null,i=void 0===a?-1:e.findIndex(e=>t(e)===a);return e.map((t,s)=>{const a=s===e.length-1,l=null!==n&&(a||n[s]!==n[s+1]),u=null!==o&&!a&&o[s+1]===o[s]&&!l&&s!==i,c=null!==o&&s>0&&o[s-1]===o[s]&&(null===n||n[s-1]===n[s])&&s-1!==i;return{groupPosition:positionOf(u,c),day:l&&r?(0,_index3.dayLabel)(r(t),{now:g,labels:R}):null,unread:s===i}})},[e,r,s,a,t,g,R]),k=(0,_react.useCallback)(()=>{T.current?.scrollToOffset({offset:0,animated:!h}),N(0)},[h]),q=e.length>0?t(e[0]):null,D=(0,_react.useRef)(q);(0,_react.useEffect)(()=>{const n=D.current;if(D.current=q,null===n||null===q||n===q)return;const s=e.findIndex(e=>t(e)===n);if(-1===s)return void N(0);const r=e.slice(0,s).reverse();for(const e of r){const t=d?.(e);t&&(0,_announce.announce)(t)}_&&r.some(_)?k():A.current&&N(e=>e+r.length)},[q]);const P=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y>JUMP_AT;t!==A.current&&(A.current=t,M(t),t||N(0)),j?.(e)},[j]),F=(0,_react.useCallback)(()=>{l&&!i&&o?.()},[l,i,o]),V=(0,_react.useCallback)(({item:e,index:t})=>{const s=O[t];return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s?.day?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:s.day}):null,s?.unread?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:R.unread,emphasis:!0}):null,n({item:e,index:t,groupPosition:s?.groupPosition??"single"})]})},[O,R.unread,n]),B=(0,_react.useCallback)(e=>t(e),[t]),U=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardChatScrollView,{...e,inverted:!0,offset:w}),[w]),K=I>0?`${R.newMessages(I)}. ${R.jumpToLatest}`:R.jumpToLatest;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[E.root,y],children:[(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",maintainVisibleContentPosition:KEEP_POSITION,...S,ref:T,data:e,renderItem:V,keyExtractor:B,inverted:!0,onScroll:P,onEndReached:o?F:void 0,ListHeaderComponent:u?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:u}):null,ListFooterComponent:i?(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm",accessibilityLabel:R.loadingOlder,style:E.older}):null,ListEmptyComponent:c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.fill,children:c}):null,renderScrollComponent:m?U:void 0,contentContainerStyle:[E.content,0===e.length?E.grow:null,f],testID:b}),C?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.jump,pointerEvents:"box-none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.jumpDisc,children:(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:"arrow-down",accessibilityLabel:K,variant:"ghost",tone:"neutral",onPress:k,testID:b?`${b}-jump`:void 0})}),I>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.count,pointerEvents:"none",importantForAccessibility:"no-hide-descendants",accessibilityElementsHidden:!0,children:(0,_jsxRuntime.jsx)(_index2.Badge,{value:I,max:99,tone:"primary",size:"sm"})}):null]}):null]})}const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},content:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},grow:{flexGrow:1},fill:{flex:1},older:{paddingVertical:e.spacing.md},jump:{position:"absolute",right:e.spacing.md,bottom:e.spacing.md},jumpDisc:{borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.background.elevated,...e.shadows.md},count:{position:"absolute",top:-e.spacing.xs,right:-e.spacing.xs}});var _default=exports.default=MessageList;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_MESSAGE_LIST_LABELS",{enumerable:!0,get:function(){return _MessageList.DEFAULT_MESSAGE_LIST_LABELS}}),Object.defineProperty(exports,"MessageList",{enumerable:!0,get:function(){return _MessageList.MessageList}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _MessageList.default}});var _MessageList=_interopRequireWildcard(require("./MessageList.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 i,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?i(o,t,s):o[t]=e[t]);return o})(e,t)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.sym=exports.parseNotation=exports.default=exports.NotationInkContext=exports.Notation=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const SUBSCRIPTED=/(?<![A-Za-z0-9_])([A-Za-z])_([A-Za-z0-9]+)(?![A-Za-z0-9_])/g,parseNotation=t=>{const e=String(t??""),n=[];let r=0;for(const t of e.matchAll(SUBSCRIPTED)){const o=t.index??0;o>r&&n.push({text:e.slice(r,o)}),n.push({text:t[1],sub:t[2]}),r=o+t[0].length}return r<e.length&&n.push({text:e.slice(r)}),n};exports.parseNotation=parseNotation;const SUB_DROP=.4,NotationInkContext=exports.NotationInkContext=(0,_react.createContext)(null),Subscript=({children:t,color:e})=>{const n=(0,_index.useTheme)(),r=(0,_react.useContext)(NotationInkContext),o=Math.round(.75*(r?.fontSize??n.typography.fontSize.sm));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{transform:[{translateY:Math.round(.4*o)}]},children:(0,_jsxRuntime.jsx)(_reactNative.Text,{maxFontSizeMultiplier:n.maxFontSizeMultiplier,style:[styles.sub,{fontSize:o,lineHeight:o,color:e??r?.color??n.colors.text.primary,...(0,_index.fontFor)(n,"normal")}],children:t})})},renderNotation=(t,e)=>parseNotation(t).map((t,n)=>t.sub?(0,_jsxRuntime.jsxs)(_react.Fragment,{children:[t.text,(0,_jsxRuntime.jsx)(Subscript,{color:e,children:t.sub})]},n):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.text},n)),Notation=({text:t,base:e,sub:n,desc:r,color:o,testID:s})=>null!=e?(0,_jsxRuntime.jsxs)(_reactNative.Text,{testID:s,children:[e,n?(0,_jsxRuntime.jsx)(Subscript,{color:o,children:n}):null,r?` ${r}`:null]}):(0,_jsxRuntime.jsx)(_reactNative.Text,{testID:s,children:"string"==typeof t||null==t?renderNotation(t??"",o):t.map((t,e)=>"string"==typeof t?(0,_jsxRuntime.jsx)(_react.Fragment,{children:renderNotation(t,o)},e):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.verbatim},e))});exports.Notation=Notation;const sym=(t,e,n,r)=>(0,_jsxRuntime.jsx)(Notation,{base:t,sub:e,desc:n,color:r});exports.sym=sym;const styles=_reactNative.StyleSheet.create({sub:{includeFontPadding:!1}});var _default=exports.default=Notation;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useNotationInk=exports.sym=exports.parseNotation=exports.default=exports.NotationInkContext=exports.Notation=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const SUBSCRIPTED=/(?<![A-Za-z0-9_])([A-Za-z])_([A-Za-z0-9]+)(?![A-Za-z0-9_])/g,parseNotation=t=>{const e=String(t??""),o=[];let n=0;for(const t of e.matchAll(SUBSCRIPTED)){const r=t.index??0;r>n&&o.push({text:e.slice(n,r)}),o.push({text:t[1],sub:t[2]}),n=r+t[0].length}return n<e.length&&o.push({text:e.slice(n)}),o};exports.parseNotation=parseNotation;const SUB_DROP=.4,NotationInkContext=exports.NotationInkContext=(0,_react.createContext)(null),useNotationInk=(t,e,o)=>{const n=_reactNative.StyleSheet.flatten(t),r=n?.fontSize??e,s=n?.color??o;return(0,_react.useMemo)(()=>({fontSize:r,color:s}),[r,s])};exports.useNotationInk=useNotationInk;const Subscript=({children:t,color:e})=>{const o=(0,_index.useTheme)(),n=(0,_react.useContext)(NotationInkContext),r=Math.round(.75*(n?.fontSize??o.typography.fontSize.sm));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{transform:[{translateY:Math.round(.4*r)}]},children:(0,_jsxRuntime.jsx)(_reactNative.Text,{maxFontSizeMultiplier:o.maxFontSizeMultiplier,style:[styles.sub,{fontSize:r,lineHeight:r,color:e??n?.color??o.colors.text.primary,...(0,_index.fontFor)(o,"normal")}],children:t})})},renderNotation=(t,e)=>parseNotation(t).map((t,o)=>t.sub?(0,_jsxRuntime.jsxs)(_react.Fragment,{children:[t.text,(0,_jsxRuntime.jsx)(Subscript,{color:e,children:t.sub})]},o):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.text},o)),Notation=({text:t,base:e,sub:o,desc:n,color:r,testID:s})=>null!=e?(0,_jsxRuntime.jsxs)(_reactNative.Text,{testID:s,children:[e,o?(0,_jsxRuntime.jsx)(Subscript,{color:r,children:o}):null,n?` ${n}`:null]}):(0,_jsxRuntime.jsx)(_reactNative.Text,{testID:s,children:"string"==typeof t||null==t?renderNotation(t??"",r):t.map((t,e)=>"string"==typeof t?(0,_jsxRuntime.jsx)(_react.Fragment,{children:renderNotation(t,r)},e):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.verbatim},e))});exports.Notation=Notation;const sym=(t,e,o,n)=>(0,_jsxRuntime.jsx)(Notation,{base:t,sub:e,desc:o,color:n});exports.sym=sym;const styles=_reactNative.StyleSheet.create({sub:{includeFontPadding:!1}});var _default=exports.default=Notation;
@@ -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)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:i,onAfterClose:r,title:o,options:a,sections:s,renderSectionHeader:n,renderOption:l,alphabetIndex:c=!1,searchPlaceholder:d="Search…",emptyText:u="No options",labelOf:p,getValue:m,disabledOf:h,destructiveOf:g,descriptionOf:x,iconOf:_,isSelected:y,onSelect:b,multi:f=!1,searchable:v=!1,searchSelectionColor:j,accessibilityLabel:R,optionStyle:S,selectedOptionStyle:N,optionTextStyle:T,selectedOptionTextStyle:C,testID:w}=e,k=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),V=(0,_react.useMemo)(()=>buildStyles(k),[k]),[z,D]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,P=Math.round(.7*L),[H,W]=(0,_react.useState)(t),O=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)((0,_index.createAnimatedValue)(P)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,B=(0,_react.useMemo)(()=>_reactNative.Animated.add(A,M),[A,M]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const E=(0,_react.useRef)(r);E.current=r;const F=(0,_react.useRef)(H);(0,_react.useEffect)(()=>{F.current&&!H&&"ios"!==_reactNative.Platform.OS&&E.current?.(),F.current=H},[H]),(0,_react.useEffect)(()=>{if(!H)return;t&&(0,_index.setNativeValue)(M,0);const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:1,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.spring(A,{toValue:0,damping:k.motion.spring.snappy.damping,stiffness:k.motion.spring.snappy.stiffness,mass:k.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:0,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(A,{toValue:P,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,H,O,A,M,P,k.motion.duration.fast,k.motion.easing.standard,k.motion.easing.accelerate,k.motion.spring.snappy]);const{handleGesture:q}=(0,_useDragToDismiss.useDragToDismiss)({drag:M,travel:P,onDismiss:i}),G=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[$,K]=(0,_react.useState)(0),J=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),U=H?Math.max(0,Math.round(J)):0,Y=Math.max(I.top,_reactNative.StatusBar.currentHeight??0)+k.spacing.sm,Z=U>0,Q=Z?Math.max(0,Math.min(P,($>0?$:L)-U-Y)):P;(0,_react.useEffect)(()=>{t||D("")},[t]);const X=(0,_react.useMemo)(()=>{const e=v?z.trim().toLowerCase():"",matches=t=>0===e.length||p(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!s)return a.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return s.forEach((e,i)=>{const r=e.options.filter(matches);if(0!==r.length){t.push({kind:"header",title:e.title});for(const e of r)t.push({kind:"option",option:e,section:i})}}),t},[v,z,a,s,p,x]),ee=(0,_react.useCallback)(()=>{i()},[i]),te=(0,_react.useRef)(null),ie=(0,_react.useMemo)(()=>{const e=new Map;if(!c)return e;let t=0;if(s)for(let e=X.length-1;e>=0;e-=1)if("header"===X[e].kind){t=e+1;break}for(let i=t;i<X.length;i+=1){const t=X[i];if("option"!==t.kind)continue;const r=p(t.option).trim().charAt(0).toUpperCase(),o=/^[A-Z]$/.test(r)?r:"#";e.has(o)||e.set(o,i)}return e},[c,X,s,p]),re=c&&ie.size>0&&0===z.trim().length,oe=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ie.has("#")?["#"]:[]],[ie]),ae=(0,_react.useCallback)(e=>{const t=ie.get(e);void 0!==t&&te.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ie]),se=(0,_react.useRef)(null),ne=(0,_react.useCallback)(()=>{null!==se.current&&(clearTimeout(se.current),se.current=null)},[]),le=(0,_react.useCallback)(e=>{te.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),ne(),se.current=setTimeout(()=>{se.current=null,te.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[ne]);(0,_react.useEffect)(()=>(H||ne(),ne),[H,ne]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:H,transparent:!0,animationType:"none",onRequestClose:ee,onDismiss:()=>E.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,onLayout:e=>K(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:k.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ee,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:w,accessibilityViewIsModal:!0,accessibilityLabel:R??o??"Options",style:[V.sheet,{maxHeight:Q,bottom:U,paddingBottom:Z?16:I.bottom+16,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius.xl,borderTopRightRadius:k.radius.xl,..._corners.smoothCorners,transform:[{translateY:B}],...k.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetHandle,{backgroundColor:k.components.select?.handleColor??k.components.bottomSheet?.handleColor??k.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sheetTitle,{color:k.colors.text.primary,fontSize:k.typography.fontSize.lg,fontWeight:k.typography.fontWeight.semibold,paddingHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:o}):null]})}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.searchWrap,{marginHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.searchBox,{backgroundColor:k.colors.background.secondary,borderColor:k.colors.border.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingHorizontal:k.spacing.md,gap:k.spacing.sm}],children:[(k.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:k.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:z,onChangeText:D,placeholder:d,placeholderTextColor:k.colors.text.tertiary,selectionColor:j??k.colors.border.focus,accessibilityLabel:"Search options",style:[V.searchInput,{color:k.colors.text.primary,fontSize:k.typography.fontSize.base,paddingVertical:k.spacing.sm}]}),z.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>D(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(k.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:k.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.listWrap,re?V.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:G,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:te,data:X,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(m(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[V.sectionHeader,{paddingHorizontal:k.spacing.lg,paddingTop:k.spacing.md}],children:n?n(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sectionTitle,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,i=p(t),r=m(t),o=x(t),a=_(t),s=y(r),c=h(t),d=g?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:c,android_ripple:{color:k.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:i,accessibilityState:{selected:s,disabled:c},"aria-selected":s,"aria-disabled":c,style:({pressed:e})=>[V.optionRow,{backgroundColor:s?k.colors.surface.selected:e?k.colors.surface.pressed:"transparent",opacity:c?.5:1,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md},S,s?N:null],children:[l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionTextWrap,children:l(t,{selected:s,disabled:c})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionIcon,children:a}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionLabel,{color:d?k.colors.toneText.error:s?k.colors.primary:k.colors.text.primary,fontSize:k.typography.fontSize.base,fontWeight:s?k.typography.fontWeight.semibold:k.typography.fontWeight.medium},T,s?C:null],children:i}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionDescription,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm}],numberOfLines:2,children:o}):null]})]}),f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.checkbox,{borderColor:s?k.colors.primary:k.colors.border.primary,backgroundColor:s?k.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.checkboxTick}):null}):s?"icon"===k.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.singleSelectedIcon,children:(k.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:k.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.singleSelectedDot,{backgroundColor:k.colors.primary}]}):null]})},onScrollToIndexFailed:le,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!re,style:re?V.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.empty,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm,paddingVertical:k.spacing.xl}],children:u})})}),re?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.rail,{paddingRight:k.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:oe.map(e=>{const t=ie.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>ae(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:V.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.railLetterText,{color:t?k.colors.primary:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetFooter,{borderTopColor:k.colors.border.secondary,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ee,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[V.doneButton,{backgroundColor:e?k.colors.primaryPressed:k.colors.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingVertical:k.spacing.sm,paddingHorizontal:k.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:k.colors.onPrimary,fontSize:k.typography.fontSize.base,fontWeight:k.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:16,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:10,paddingBottom:8},sheetHandle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:4},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:4},railLetter:{paddingHorizontal:4,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:12},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:2},checkbox:{width:22,height:22,borderRadius:6,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:12},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors.onPrimary,transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:4,..._corners.smoothCorners,marginLeft:12},singleSelectedIcon:{marginLeft:12},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:r,onAfterClose:i,onOpenChange:o,title:a,options:s,sections:n,renderSectionHeader:l,renderOption:c,alphabetIndex:d=!1,searchPlaceholder:u="Search…",emptyText:p="No options",labelOf:m,getValue:h,disabledOf:g,destructiveOf:x,descriptionOf:_,iconOf:y,isSelected:f,onSelect:b,multi:v=!1,searchable:j=!1,searchSelectionColor:R,accessibilityLabel:S,optionStyle:N,selectedOptionStyle:T,optionTextStyle:C,selectedOptionTextStyle:w,testID:k}=e,I=(0,_index.useTheme)(),V=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),z=(0,_react.useMemo)(()=>buildStyles(I),[I]),[D,L]=(0,_react.useState)(""),P=_reactNative.Dimensions.get("window").height,H=Math.round(.7*P),[W,O]=(0,_react.useState)(t),A=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(H)).current,B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,E=(0,_react.useMemo)(()=>_reactNative.Animated.add(M,B),[M,B]);(0,_react.useEffect)(()=>{t&&O(!0)},[t]);const F=(0,_react.useRef)(o);F.current=o;const q=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{q.current!==t&&(q.current=t,F.current?.(t))},[t]);const G=(0,_react.useRef)(i);G.current=i;const $=(0,_react.useRef)(W);(0,_react.useEffect)(()=>{$.current&&!W&&"ios"!==_reactNative.Platform.OS&&G.current?.(),$.current=W},[W]),(0,_react.useEffect)(()=>{if(!W)return;t&&(0,_index.setNativeValue)(B,0);const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(A,{toValue:1,duration:I.motion.duration.fast,easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.spring(M,{toValue:0,damping:I.motion.spring.snappy.damping,stiffness:I.motion.spring.snappy.stiffness,mass:I.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(A,{toValue:0,duration:I.motion.duration.fast,easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(M,{toValue:H,duration:I.motion.duration.fast,easing:_reactNative.Easing.bezier(...I.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&O(!1)}),()=>e.stop()},[t,W,A,M,B,H,I.motion.duration.fast,I.motion.easing.standard,I.motion.easing.accelerate,I.motion.spring.snappy]);const{handleGesture:K}=(0,_useDragToDismiss.useDragToDismiss)({drag:B,travel:H,onDismiss:r}),J=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[U,Y]=(0,_react.useState)(0),Z=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),Q=W?Math.max(0,Math.round(Z)):0,X=Math.max(V.top,_reactNative.StatusBar.currentHeight??0)+I.spacing.sm,ee=Q>0,te=ee?Math.max(0,Math.min(H,(U>0?U:P)-Q-X)):H;(0,_react.useEffect)(()=>{t||L("")},[t]);const re=(0,_react.useMemo)(()=>{const e=j?D.trim().toLowerCase():"",matches=t=>0===e.length||m(t).toLowerCase().includes(e)||(_(t)??"").toLowerCase().includes(e);if(!n)return s.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return n.forEach((e,r)=>{const i=e.options.filter(matches);if(0!==i.length){t.push({kind:"header",title:e.title});for(const e of i)t.push({kind:"option",option:e,section:r})}}),t},[j,D,s,n,m,_]),ie=(0,_react.useCallback)(()=>{r()},[r]),oe=(0,_react.useRef)(null),ae=(0,_react.useMemo)(()=>{const e=new Map;if(!d)return e;let t=0;if(n)for(let e=re.length-1;e>=0;e-=1)if("header"===re[e].kind){t=e+1;break}for(let r=t;r<re.length;r+=1){const t=re[r];if("option"!==t.kind)continue;const i=m(t.option).trim().charAt(0).toUpperCase(),o=/^[A-Z]$/.test(i)?i:"#";e.has(o)||e.set(o,r)}return e},[d,re,n,m]),se=d&&ae.size>0&&0===D.trim().length,ne=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ae.has("#")?["#"]:[]],[ae]),le=(0,_react.useCallback)(e=>{const t=ae.get(e);void 0!==t&&oe.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ae]),ce=(0,_react.useRef)(null),de=(0,_react.useCallback)(()=>{null!==ce.current&&(clearTimeout(ce.current),ce.current=null)},[]),ue=(0,_react.useCallback)(e=>{oe.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),de(),ce.current=setTimeout(()=>{ce.current=null,oe.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[de]);(0,_react.useEffect)(()=>(W||de(),de),[W,de]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:W,transparent:!0,animationType:"none",onRequestClose:ie,onDismiss:()=>G.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,onLayout:e=>Y(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:I.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ie,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:k,accessibilityViewIsModal:!0,accessibilityLabel:S??a??"Options",style:[z.sheet,{maxHeight:te,bottom:Q,paddingBottom:ee?16:V.bottom+16,backgroundColor:I.colors.background.elevated,borderTopLeftRadius:I.radius.xl,borderTopRightRadius:I.radius.xl,..._corners.smoothCorners,transform:[{translateY:E}],...I.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:K,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetHandle,{backgroundColor:I.components.select?.handleColor??I.components.bottomSheet?.handleColor??I.colors.border.primary}]})}),a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sheetTitle,{color:I.colors.text.primary,fontSize:I.typography.fontSize.lg,fontWeight:I.typography.fontWeight.semibold,paddingHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:a}):null]})}),j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.searchWrap,{marginHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.searchBox,{backgroundColor:I.colors.background.secondary,borderColor:I.colors.border.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingHorizontal:I.spacing.md,gap:I.spacing.sm}],children:[(I.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:I.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:D,onChangeText:L,placeholder:u,placeholderTextColor:I.colors.text.tertiary,selectionColor:R??I.colors.border.focus,accessibilityLabel:"Search options",style:[z.searchInput,{color:I.colors.text.primary,fontSize:I.typography.fontSize.base,paddingVertical:I.spacing.sm}]}),D.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>L(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(I.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:I.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.listWrap,se?z.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:J,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:oe,data:re,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(h(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[z.sectionHeader,{paddingHorizontal:I.spacing.lg,paddingTop:I.spacing.md}],children:l?l(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sectionTitle,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,r=m(t),i=h(t),o=_(t),a=y(t),s=f(i),n=g(t),d=x?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:n,android_ripple:{color:I.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{selected:s,disabled:n},"aria-selected":s,"aria-disabled":n,style:({pressed:e})=>[z.optionRow,{backgroundColor:s?I.colors.surface.selected:e?I.colors.surface.pressed:"transparent",opacity:n?.5:1,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md},N,s?T:null],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionTextWrap,children:c(t,{selected:s,disabled:n})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionIcon,children:a}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:z.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionLabel,{color:d?I.colors.toneText.error:s?I.colors.primary:I.colors.text.primary,fontSize:I.typography.fontSize.base,fontWeight:s?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},C,s?w:null],children:r}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionDescription,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm}],numberOfLines:2,children:o}):null]})]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.checkbox,{borderColor:s?I.colors.primary:I.colors.border.primary,backgroundColor:s?I.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.checkboxTick}):null}):s?"icon"===I.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.singleSelectedIcon,children:(I.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:I.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.singleSelectedDot,{backgroundColor:I.colors.primary}]}):null]})},onScrollToIndexFailed:ue,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!se,style:se?z.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.empty,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm,paddingVertical:I.spacing.xl}],children:p})})}),se?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.rail,{paddingRight:I.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:ne.map(e=>{const t=ae.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>le(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:z.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.railLetterText,{color:t?I.colors.primary:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetFooter,{borderTopColor:I.colors.border.secondary,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ie,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[z.doneButton,{backgroundColor:e?I.colors.primaryPressed:I.colors.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingVertical:I.spacing.sm,paddingHorizontal:I.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:I.colors.onPrimary,fontSize:I.typography.fontSize.base,fontWeight:I.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:16,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:10,paddingBottom:8},sheetHandle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:4},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:4},railLetter:{paddingHorizontal:4,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:12},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:2},checkbox:{width:22,height:22,borderRadius:6,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:12},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors.onPrimary,transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:4,..._corners.smoothCorners,marginLeft:12},singleSelectedIcon:{marginLeft:12},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
@@ -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.PermissionPrompt=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Text/index.js"),_usePermissionPrompt=require("./usePermissionPrompt.js"),_jsxRuntime=require("react/jsx-runtime");const ACCESS={camera:"Camera access",microphone:"Microphone access",photos:"Photo access",photosAdd:"Photo access",mediaLibrary:"Media library access",location:"Location access",locationAlways:"Location access",contacts:"Contacts access",calendar:"Calendar access",reminders:"Reminders access",notifications:"Notification access",bluetooth:"Bluetooth access",storage:"Storage access"},unavailableMessage=(e,t,i)=>{const s=ACCESS[e];return"unavailable"===t?`${s} is not available on this device.`:i?`${s} is off for this app. You can turn it on in Settings.`:`${s} is off, so this cannot be used right now.`},PermissionPrompt=({kind:e,title:t,reason:i,icon:s,onResult:n,fallback:a,haptic:r="selection",style:o,testID:c})=>{const l=(0,_index.useTheme)(),u=(0,_react.useMemo)(()=>buildStyles(l),[l]),d=(0,_usePermissionPrompt.usePermissionPrompt)(e,{onResult:n}),x=unavailableMessage(e,d.status,d.showSettings),m=(0,_react.useRef)(!1);if((0,_react.useEffect)(()=>{"explain"!==d.view?("unavailable"===d.view&&m.current&&(0,_announce.announce)(x),m.current=!1):m.current=!0},[d.view,x]),"explain"!==d.view&&"unavailable"!==d.view)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o,testID:c});const _="explain"===d.view;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.root,o],testID:c,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.header,children:[s?(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:s,size:"lg",tone:_?"primary":"neutral"}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",align:"center",children:t}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:_?i:x})]}),_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Continue",size:"lg",fullWidth:!0,loading:d.requesting,onPress:()=>{d.request()}}),d.cancellable?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Cancel",size:"lg",fullWidth:!0,variant:"ghost",tone:"neutral",disabled:d.requesting,onPress:d.cancel}):null]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[a?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:a.label,size:"lg",fullWidth:!0,onPress:a.onPress}):null,d.showSettings?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.link,children:(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Open Settings",variant:"link",onPress:()=>{d.openSettings()}})}):null]})]})};exports.PermissionPrompt=PermissionPrompt;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg,paddingVertical:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},actions:{gap:e.spacing.sm},link:{alignItems:"center",paddingVertical:e.spacing.sm}});var _default=exports.default=PermissionPrompt;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PermissionPrompt",{enumerable:!0,get:function(){return _PermissionPrompt.PermissionPrompt}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _PermissionPrompt.default}}),Object.defineProperty(exports,"usePermissionPrompt",{enumerable:!0,get:function(){return _usePermissionPrompt.usePermissionPrompt}});var _PermissionPrompt=_interopRequireWildcard(require("./PermissionPrompt.js")),_usePermissionPrompt=require("./usePermissionPrompt.js");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(i=r?o:t){if(i.has(e))return i.get(e);i.set(e,s)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((n=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(n.get||n.set)?i(s,r,n):s[r]=e[r]);return s})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.usePermissionPrompt=void 0;var _mobileCore=require("@webority/mobile-core"),_permissions=require("@webority/mobile-core/permissions"),_react=require("react"),_reactNative=require("react-native");const INITIAL={view:"pending",status:null,requesting:!1,answered:!1},isAuthorized=e=>"granted"===e||"limited"===e,canAsk=e=>"undetermined"===e||"denied"===e,settledView=e=>isAuthorized(e)?"authorized":"unavailable",safely=async(e,t,r)=>{try{return await r()}catch(r){return _mobileCore.Logger.error(`[@webority/mobile-ui] PermissionPrompt: ${e}(${t}) failed.`,r),"unavailable"}},usePermissionPrompt=(e,{onResult:t}={})=>{const[r,s]=(0,_react.useState)(INITIAL),i=(0,_react.useRef)(r);i.current=r;const n=(0,_react.useRef)(t);n.current=t;const a=(0,_react.useRef)(0),u=(0,_react.useRef)(!1),c="android"===_reactNative.Platform.OS,o=(0,_react.useCallback)(async t=>{if(u.current)return null;u.current=!0,s(e=>({...e,requesting:!0}));const r=await safely("request",e,()=>_permissions.Permissions.request(e));return u.current=!1,t!==a.current||(s({view:settledView(r),status:r,requesting:!1,answered:!0}),n.current?.(r)),r},[e]);(0,_react.useEffect)(()=>{a.current+=1;const t=a.current;s(INITIAL);return(async()=>{const r=await safely("check",e,()=>_permissions.Permissions.check(e));if(t===a.current){if(c&&"undetermined"===r){s({...INITIAL,status:r});return void(null===await o(t)&&t===a.current&&s({...INITIAL,view:"explain",status:r}))}canAsk(r)?s({...INITIAL,view:"explain",status:r}):(s({...INITIAL,view:settledView(r),status:r}),n.current?.(r))}})(),()=>{a.current+=1}},[e,c,o]);const l="unavailable"===r.view&&"blocked"===r.status&&!r.answered;(0,_react.useEffect)(()=>{if(!l)return;const t=a.current,r=_reactNative.AppState.addEventListener("change",r=>{"active"===r&&safely("check",e,()=>_permissions.Permissions.check(e)).then(e=>{t===a.current&&(isAuthorized(e)?(s({view:"authorized",status:e,requesting:!1,answered:!0}),n.current?.(e)):canAsk(e)&&s({...INITIAL,view:"explain",status:e}))})});return()=>r.remove()},[l,e]);const d=(0,_react.useCallback)(()=>o(a.current),[o]),m=(0,_react.useCallback)(()=>{const e=i.current;"explain"!==e.view||null===e.status||e.requesting||(s({...e,view:"unavailable",answered:!0}),n.current?.(e.status))},[]);return{view:r.view,status:r.status,requesting:r.requesting,cancellable:c,showSettings:l,request:d,cancel:m,openSettings:_permissions.Permissions.openSettings}};exports.usePermissionPrompt=usePermissionPrompt;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const o=e.replace(/[^0-9]/g,"");if(!o)return null;const n=(0,_mobileCore.splitPhoneNumber)(`+${o}`);let r=n?.callingCode,l=n?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>o.startsWith(e)),!r)return null;l=o.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===n?.country)?.iso??n?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:o,onChange:n,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:f="All countries",hiddenCountries:h,showFlag:g=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:S="IN",validation:v="any",maxLength:L,formatAsYouType:E=!0,countryLocked:I=!1,label:j,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:z=!1,size:w="md",variant:q,borderRadius:k,countrySheetTitle:M="Country code",haptic:V,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),J=(0,_react.useRef)(null),Q=(0,_react.useMemo)(()=>h?.length?m.filter(e=>!h.includes(e.iso)):m,[m,h]),X=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>Q.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:f,options:Q}]:void 0},[p,_,f,Q]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!g)return null;const o=(0,_mobileCore.countryFlagEmoji)(e.iso);return o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:o}):null},[x,g,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===v?"any":v):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,v]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,o=(0,_mobileCore.splitPhoneNumber)(e,i);if(!o)return null;const n=o.country??t,r=m.find(e=>e.iso===n);return{callingCode:r?.code??o.callingCode,nationalNumber:te(o.nationalNumber,n),iso:r?.iso??n}},[m,te]),oe=(0,_react.useMemo)(()=>{const e=Q.find(e=>e.iso===S)??Q[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof o?ie(o,t.iso)??t:o??t},[m,Q,S,o,ie]),ne=(0,_react.useCallback)(e=>{if(!1===v)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,v):e.nationalNumber.length>0},[v]),[re,le]=(0,_react.useState)(oe.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??oe.callingCode,nationalNumber:"",iso:re}},[r,m,re,oe.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),n?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:ne(e)})},[n,l,m,ne]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:oe,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{z||J.current?.focus()},[z]),[pe,_e]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[ge,xe]=(0,_react.useState)(!1),Ce=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{ge||(Ce.current=!1)},[ge]);const Ne=(0,_index4.resolveFieldSize)(Y,w),ye=(0,_index4.resolveFieldTextStyle)(Y,{disabled:z}),Se=q??Y.components.field?.defaultVariant??"outlined",ve="underline"===Se,Le=k??Y.components.phoneNumberInput?.borderRadius,Ee=Y.spacing.md,[Ie,je]=(0,_react.useState)(0),Fe=Ie+Ee+1+Ee,Oe=ue.nationalNumber.length>0,Te=D&&!j&&!Oe&&T.length>0,Ae=de||Oe,Pe=Boolean(j)&&"float"===F&&Ie>0,Re=(0,_useFloatingLabel.useFloatingLabel)({label:j,enabled:Pe,floated:Ae,required:D,variant:Se,sizeTokens:Ne,leadingOffset:Fe,paddingLeft:ve?0:Ne.paddingHorizontal,color:Y.colors.field.label,style:O}),De=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),ze=planOf(ue.iso),we=E&&ze?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,ze):ue.nationalNumber,qe=ee(ue.iso),ke=0===ue.nationalNumber.length||pe||!Number.isFinite(qe)?void 0:we.length+Math.max(0,qe-ue.nationalNumber.length),Me=ne(ue);(0,_react.useEffect)(()=>{Oe||he(!1)},[Oe]);const Ve=ze?(0,_mobileCore.maxNationalNumberLength)(ze,!1===v?"any":v):Number.POSITIVE_INFINITY,Be=ue.nationalNumber.length>=Ve,$e=P??(!1!==v&&!1!==R&&Oe&&!Me&&(fe||Be)?R||("mobile"===v?"Enter a valid mobile number":"Enter a valid number"):void 0),Ge=(0,_react.useRef)(Me),Ue=(0,_react.useRef)(ue);Ue.current=ue,(0,_react.useEffect)(()=>{Ge.current!==Me&&(Ge.current=Me,b?.(Me),Me&&d?.(formatE164(Ue.current)))},[Me,d,b]);const We=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!I&&Q.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[Q,I,ue,ie,te,ce]),He=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),xe(!1);const i=(0,_index3.resolveHaptic)(V,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,V,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>J.current?.focus(),blur:()=>J.current?.blur(),clear:()=>ce({...Ue.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ue.current,getE164:()=>formatE164(Ue.current),getFormatted:()=>{const e=Ue.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ue.current),getCountry:()=>m.find(e=>e.iso===Ue.current.iso)}),[m,ne,ce]);const Ye=z||I,Ke=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:w,variant:Se,borderRadius:Le,topNotch:Re.topNotch,focused:de,disabled:z,error:(0,_index4.hasFieldText)($e),filled:Oe,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:ve?0:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Ye||(Ce.current=!0,xe(!0))},disabled:Ye,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Ye},"aria-disabled":Ye,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;je(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(De,Ne.fontSize,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ye.color,fontSize:Ne.fontSize}],children:`+${ue.callingCode}`}),I?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:z?Y.colors.field.iconDisabled:Y.colors.field.icon,size:Ne.iconSize,open:ge})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:we,maxLength:ke,onChangeText:We,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;_e(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Oe&&!Ce.current&&he(!0),U?.()},editable:!z,placeholder:Pe&&!Ae||Te?void 0:T,placeholderTextColor:ye.placeholderColor,accessibilityLabel:B??j??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ye.color,fontSize:Ne.fontSize,...ye.weightStyle,paddingLeft:ve?0:void 0}],testID:H?`${H}-input`:void 0}),Te?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ye.placeholderColor,fontSize:Ne.fontSize,weightStyle:ye.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[j&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:w,required:D,children:j}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Ke,Re.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:w,error:(0,_index4.hasFieldText)($e),text:$e??A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:ge,onClose:()=>xe(!1),title:M,options:Q,sections:X,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.typography.fontSize.lg),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===De?.iso,onSelect:He,searchable:Q.length>8,searchPlaceholder:N,alphabetIndex:y??Q.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:2},flag:{includeFontPadding:!1,marginRight:4},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:0,margin:0,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const o=e.replace(/[^0-9]/g,"");if(!o)return null;const n=(0,_mobileCore.splitPhoneNumber)(`+${o}`);let r=n?.callingCode,l=n?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>o.startsWith(e)),!r)return null;l=o.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===n?.country)?.iso??n?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:o,onChange:n,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:f="All countries",hiddenCountries:h,showFlag:g=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:S="IN",validation:v="any",maxLength:L,formatAsYouType:E=!0,countryLocked:I=!1,label:j,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:z=!1,size:w="md",variant:q,borderRadius:k,countrySheetTitle:M="Country code",haptic:V,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),J=(0,_react.useRef)(null),Q=(0,_react.useMemo)(()=>h?.length?m.filter(e=>!h.includes(e.iso)):m,[m,h]),X=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>Q.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:f,options:Q}]:void 0},[p,_,f,Q]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!g)return null;const o=(0,_mobileCore.countryFlagEmoji)(e.iso);return o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:o}):null},[x,g,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===v?"any":v):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,v]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,o=(0,_mobileCore.splitPhoneNumber)(e,i);if(!o)return null;const n=o.country??t,r=m.find(e=>e.iso===n);return{callingCode:r?.code??o.callingCode,nationalNumber:te(o.nationalNumber,n),iso:r?.iso??n}},[m,te]),oe=(0,_react.useMemo)(()=>{const e=Q.find(e=>e.iso===S)??Q[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof o?ie(o,t.iso)??t:o??t},[m,Q,S,o,ie]),ne=(0,_react.useCallback)(e=>{if(!1===v)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,v):e.nationalNumber.length>0},[v]),[re,le]=(0,_react.useState)(oe.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??oe.callingCode,nationalNumber:"",iso:re}},[r,m,re,oe.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),n?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:ne(e)})},[n,l,m,ne]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:oe,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{z||J.current?.focus()},[z]),[pe,_e]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[ge,xe]=(0,_react.useState)(!1),Ce=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{ge||(Ce.current=!1)},[ge]);const Ne=(0,_index4.resolveFieldSize)(Y,w),ye=(0,_index4.resolveFieldTextStyle)(Y,{disabled:z}),Se=q??Y.components.field?.defaultVariant??"outlined",ve="underline"===Se,Le=k??Y.components.phoneNumberInput?.borderRadius,Ee=Y.spacing.md,[Ie,je]=(0,_react.useState)(0),Fe=Ie+Ee+1+Ee,Oe=ue.nationalNumber.length>0,Te=D&&!j&&!Oe&&T.length>0,Ae=de||Oe,Pe=Boolean(j)&&"float"===F&&Ie>0,Re=(0,_useFloatingLabel.useFloatingLabel)({label:j,enabled:Pe,floated:Ae,required:D,variant:Se,sizeTokens:Ne,leadingOffset:Fe,paddingLeft:ve?0:Ne.paddingHorizontal,color:Y.colors.field.label,style:O}),De=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),ze=planOf(ue.iso),we=E&&ze?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,ze):ue.nationalNumber,qe=ee(ue.iso),ke=0===ue.nationalNumber.length||pe||!Number.isFinite(qe)?void 0:we.length+Math.max(0,qe-ue.nationalNumber.length),Me=ne(ue);(0,_react.useEffect)(()=>{Oe||he(!1)},[Oe]);const Ve=ze?(0,_mobileCore.maxNationalNumberLength)(ze,!1===v?"any":v):Number.POSITIVE_INFINITY,Be=ue.nationalNumber.length>=Ve,$e=!1!==v&&!1!==R&&Oe&&!Me&&(fe||Be),Ge="mobile"===v?"Enter a valid mobile number":"Enter a valid number",Ue=(0,_index4.hasFieldText)(P)?P:$e?R||Ge:void 0,We=!0===P||(0,_index4.hasFieldText)(Ue),He=(0,_react.useRef)(Me),Ye=(0,_react.useRef)(ue);Ye.current=ue,(0,_react.useEffect)(()=>{He.current!==Me&&(He.current=Me,b?.(Me),Me&&d?.(formatE164(Ye.current)))},[Me,d,b]);const Ke=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!I&&Q.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[Q,I,ue,ie,te,ce]),Je=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),xe(!1);const i=(0,_index3.resolveHaptic)(V,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,V,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>J.current?.focus(),blur:()=>J.current?.blur(),clear:()=>ce({...Ye.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ye.current,getE164:()=>formatE164(Ye.current),getFormatted:()=>{const e=Ye.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ye.current),getCountry:()=>m.find(e=>e.iso===Ye.current.iso)}),[m,ne,ce]);const Qe=z||I,Xe=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:w,variant:Se,borderRadius:Le,topNotch:Re.topNotch,focused:de,disabled:z,error:We,filled:Oe,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:ve?0:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Qe||(Ce.current=!0,xe(!0))},disabled:Qe,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Qe},"aria-disabled":Qe,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;je(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(De,Ne.fontSize,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ye.color,fontSize:Ne.fontSize}],children:`+${ue.callingCode}`}),I?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:z?Y.colors.field.iconDisabled:Y.colors.field.icon,size:Ne.iconSize,open:ge})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:we,maxLength:ke,onChangeText:Ke,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;_e(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Oe&&!Ce.current&&he(!0),U?.()},editable:!z,placeholder:Pe&&!Ae||Te?void 0:T,placeholderTextColor:ye.placeholderColor,accessibilityLabel:B??j??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ye.color,fontSize:Ne.fontSize,...ye.weightStyle,paddingLeft:ve?0:void 0}],testID:H?`${H}-input`:void 0}),Te?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ye.placeholderColor,fontSize:Ne.fontSize,weightStyle:ye.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[j&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:w,required:D,children:j}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Xe,Re.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:w,error:We,text:We?Ue:A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:ge,onClose:()=>xe(!1),title:M,options:Q,sections:X,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.typography.fontSize.lg),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===De?.iso,onSelect:Je,searchable:Q.length>8,searchPlaceholder:N,alphabetIndex:y??Q.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:2},flag:{includeFontPadding:!1,marginRight:4},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:0,margin:0,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:R,testID:y,...m}=e,C=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(C),[C]),w=useRadioGroup();__DEV__&&void 0===i&&console.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const f=w?w.selectedValue===i:!!r,S=w&&w.disabled||s,v=toneColor(C,n),g=C.components.radio?.labelGap??10,G=u??a;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:e=>{if(S)return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),w?w.onChange(i):o?.(i)},disabled:S,accessibilityRole:"radio",accessibilityLabel:G,accessibilityHint:m.accessibilityHint??l,accessibilityState:{checked:f,disabled:S},"aria-checked":f,"aria-disabled":S,testID:y,hitSlop:6,...m,style:({pressed:e})=>[j.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?j.rowTop:null,{opacity:S?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:f,color:v,disabled:S&&!f,size:d,style:[!(0,_index2.hasFieldText)(c)||f||S?null:{borderColor:C.colors.field.borderError},b],dotStyle:h}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:a,description:l,error:c,disabled:S,labelLines:2,style:{marginLeft:g},labelStyle:R})]})});Radio.displayName="Radio";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},rowTop:{alignItems:"flex-start"}});var _default=exports.default=Radio;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:R,testID:y,...m}=e,C=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(C),[C]),S=useRadioGroup();__DEV__&&void 0===i&&console.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const j=S?S.selectedValue===i:!!r,w=S&&S.disabled||s,g=toneColor(C,n),v=C.components.radio?.labelGap??10,T=u??(0,_index2.fieldTextAsString)(a),G=!0===S?.error||!0===c||(0,_index2.hasFieldText)(c);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:e=>{if(w)return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),S?S.onChange(i):o?.(i)},disabled:w,accessibilityRole:"radio",accessibilityLabel:T,accessibilityHint:m.accessibilityHint??(0,_index2.fieldTextAsString)(l),accessibilityState:{checked:j,disabled:w},"aria-checked":j,"aria-disabled":w,testID:y,hitSlop:6,...m,style:({pressed:e})=>[f.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?f.rowTop:null,{opacity:w?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:j,color:g,disabled:w&&!j,size:d,style:[!G||j||w?null:{borderColor:C.colors.field.borderError},b],dotStyle:h}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:a,description:l,error:c,disabled:w,labelLines:2,style:{marginLeft:v},labelStyle:R})]})});Radio.displayName="Radio";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},rowTop:{alignItems:"flex-start"}});var _default=exports.default=Radio;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioGroup=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_Radio=require("./Radio.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroup=({value:e,defaultValue:a,onChange:i,children:t,disabled:r=!1,accessibilityLabel:o,style:s,testID:d})=>{const[u,l]=(0,_index.useControllableState)({value:e,defaultValue:a??void 0,onChange:i}),c=(0,_react.useMemo)(()=>({selectedValue:u,onChange:l,disabled:r}),[u,l,r]);return(0,_jsxRuntime.jsx)(_Radio.RadioGroupContext.Provider,{value:c,children:(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"radiogroup",accessibilityLabel:o,accessibilityState:{disabled:r},"aria-disabled":r,testID:d,style:s,children:t})})};exports.RadioGroup=RadioGroup,RadioGroup.displayName="RadioGroup";var _default=exports.default=RadioGroup;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioGroup=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_Radio=require("./Radio.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroup=({value:e,defaultValue:i,onChange:r,children:a,disabled:t=!1,error:o,accessibilityLabel:s,style:d,testID:u})=>{const[l,c]=(0,_index.useControllableState)({value:e,defaultValue:i??void 0,onChange:r}),n=!0===o||(0,_index2.hasFieldText)(o),x=(0,_react.useMemo)(()=>({selectedValue:l,onChange:c,disabled:t,error:n}),[l,c,t,n]);return(0,_jsxRuntime.jsxs)(_Radio.RadioGroupContext.Provider,{value:x,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"radiogroup",accessibilityLabel:s,accessibilityState:{disabled:t},"aria-disabled":t,testID:u,style:d,children:a}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{error:o})]})};exports.RadioGroup=RadioGroup,RadioGroup.displayName="RadioGroup";var _default=exports.default=RadioGroup;