react-native-system-ui 1.0.3 → 1.0.5

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 (263) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +1 -1
  3. package/dist/cjs/components/action-sheet/tokens.js +1 -1
  4. package/dist/cjs/components/action-sheet/types.js +1 -0
  5. package/dist/cjs/components/area/types.js +1 -0
  6. package/dist/cjs/components/avatar/types.js +1 -0
  7. package/dist/cjs/components/badge/types.js +1 -0
  8. package/dist/cjs/components/button/types.js +1 -0
  9. package/dist/cjs/components/calendar/tokens.js +1 -1
  10. package/dist/cjs/components/calendar/types.js +1 -0
  11. package/dist/cjs/components/cascader/tokens.js +1 -1
  12. package/dist/cjs/components/cascader/types.js +1 -0
  13. package/dist/cjs/components/cell/tokens.js +1 -1
  14. package/dist/cjs/components/cell/types.js +1 -0
  15. package/dist/cjs/components/checkbox/Checkbox.js +1 -1
  16. package/dist/cjs/components/checkbox/tokens.js +1 -1
  17. package/dist/cjs/components/checkbox/types.js +1 -0
  18. package/dist/cjs/components/circle/types.js +1 -0
  19. package/dist/cjs/components/collapse/Collapse.js +1 -1
  20. package/dist/cjs/components/collapse/tokens.js +1 -1
  21. package/dist/cjs/components/collapse/types.js +1 -0
  22. package/dist/cjs/components/config-provider/locale/types.js +1 -0
  23. package/dist/cjs/components/config-provider/types.js +1 -0
  24. package/dist/cjs/components/count-down/types.js +1 -0
  25. package/dist/cjs/components/datetime-picker/types.js +1 -0
  26. package/dist/cjs/components/dialog/Dialog.js +1 -1
  27. package/dist/cjs/components/dialog/tokens.js +1 -1
  28. package/dist/cjs/components/dialog/types.js +1 -0
  29. package/dist/cjs/components/divider/types.js +1 -0
  30. package/dist/cjs/components/empty/types.js +1 -0
  31. package/dist/cjs/components/error-boundary/types.js +1 -0
  32. package/dist/cjs/components/field/types.js +1 -0
  33. package/dist/cjs/components/flex/types.js +1 -0
  34. package/dist/cjs/components/form/Form.js +1 -1
  35. package/dist/cjs/components/form/FormItem.js +1 -1
  36. package/dist/cjs/components/form/FormList.js +1 -1
  37. package/dist/cjs/components/form/types.js +1 -0
  38. package/dist/cjs/components/grid/tokens.js +1 -1
  39. package/dist/cjs/components/grid/types.js +1 -0
  40. package/dist/cjs/components/image/tokens.js +1 -1
  41. package/dist/cjs/components/image/types.js +1 -0
  42. package/dist/cjs/components/image-preview/ImagePreview.js +1 -1
  43. package/dist/cjs/components/image-preview/types.js +1 -0
  44. package/dist/cjs/components/input/types.js +1 -0
  45. package/dist/cjs/components/loading/types.js +1 -0
  46. package/dist/cjs/components/nav-bar/NavBar.js +1 -1
  47. package/dist/cjs/components/nav-bar/tokens.js +1 -1
  48. package/dist/cjs/components/nav-bar/types.js +1 -0
  49. package/dist/cjs/components/notice-bar/NoticeBar.js +1 -1
  50. package/dist/cjs/components/notice-bar/types.js +1 -0
  51. package/dist/cjs/components/notify/types.js +1 -0
  52. package/dist/cjs/components/number-keyboard/tokens.js +1 -1
  53. package/dist/cjs/components/number-keyboard/types.js +1 -0
  54. package/dist/cjs/components/overlay/types.js +1 -0
  55. package/dist/cjs/components/password-input/tokens.js +1 -1
  56. package/dist/cjs/components/password-input/types.js +1 -0
  57. package/dist/cjs/components/picker/Picker.js +1 -1
  58. package/dist/cjs/components/picker/tokens.js +1 -1
  59. package/dist/cjs/components/picker/types.js +1 -0
  60. package/dist/cjs/components/popup/Popup.js +1 -1
  61. package/dist/cjs/components/popup/tokens.js +1 -1
  62. package/dist/cjs/components/popup/types.js +1 -0
  63. package/dist/cjs/components/portal/types.js +1 -0
  64. package/dist/cjs/components/progress/types.js +1 -0
  65. package/dist/cjs/components/radio/tokens.js +1 -1
  66. package/dist/cjs/components/radio/types.js +1 -0
  67. package/dist/cjs/components/safe-area-view/types.js +1 -0
  68. package/dist/cjs/components/search/tokens.js +1 -1
  69. package/dist/cjs/components/search/types.js +1 -0
  70. package/dist/cjs/components/selector/tokens.js +1 -1
  71. package/dist/cjs/components/selector/types.js +1 -0
  72. package/dist/cjs/components/share-sheet/ShareSheet.js +1 -1
  73. package/dist/cjs/components/share-sheet/tokens.js +1 -1
  74. package/dist/cjs/components/share-sheet/types.js +1 -0
  75. package/dist/cjs/components/sidebar/tokens.js +1 -1
  76. package/dist/cjs/components/sidebar/types.js +1 -0
  77. package/dist/cjs/components/skeleton/types.js +1 -0
  78. package/dist/cjs/components/slider/Slider.js +1 -1
  79. package/dist/cjs/components/slider/types.js +1 -0
  80. package/dist/cjs/components/space/types.js +1 -0
  81. package/dist/cjs/components/stepper/tokens.js +1 -1
  82. package/dist/cjs/components/stepper/types.js +1 -0
  83. package/dist/cjs/components/swiper/Swiper.js +1 -1
  84. package/dist/cjs/components/swiper/types.js +1 -0
  85. package/dist/cjs/components/switch/types.js +1 -0
  86. package/dist/cjs/components/tabbar/tokens.js +1 -1
  87. package/dist/cjs/components/tabbar/types.js +1 -0
  88. package/dist/cjs/components/tabs/Tabs.js +1 -1
  89. package/dist/cjs/components/tabs/tokens.js +1 -1
  90. package/dist/cjs/components/tabs/types.js +1 -0
  91. package/dist/cjs/components/tag/tokens.js +1 -1
  92. package/dist/cjs/components/tag/types.js +1 -0
  93. package/dist/cjs/components/theme.js +1 -0
  94. package/dist/cjs/components/toast/Toast.js +1 -1
  95. package/dist/cjs/components/toast/types.js +1 -0
  96. package/dist/cjs/components/typography/types.js +1 -0
  97. package/dist/cjs/components/water-mark/types.js +1 -0
  98. package/dist/cjs/design-system/presets.js +1 -1
  99. package/dist/cjs/design-system/tokens.js +1 -1
  100. package/dist/es/components/action-sheet/ActionSheet.js +1 -1
  101. package/dist/es/components/action-sheet/tokens.js +1 -1
  102. package/dist/es/components/action-sheet/types.js +1 -0
  103. package/dist/es/components/area/types.js +1 -0
  104. package/dist/es/components/avatar/types.js +1 -0
  105. package/dist/es/components/badge/types.js +1 -0
  106. package/dist/es/components/button/types.js +1 -0
  107. package/dist/es/components/calendar/tokens.js +1 -1
  108. package/dist/es/components/calendar/types.js +1 -0
  109. package/dist/es/components/cascader/tokens.js +1 -1
  110. package/dist/es/components/cascader/types.js +1 -0
  111. package/dist/es/components/cell/tokens.js +1 -1
  112. package/dist/es/components/cell/types.js +1 -0
  113. package/dist/es/components/checkbox/Checkbox.js +1 -1
  114. package/dist/es/components/checkbox/tokens.js +1 -1
  115. package/dist/es/components/checkbox/types.js +1 -0
  116. package/dist/es/components/circle/types.js +1 -0
  117. package/dist/es/components/collapse/Collapse.js +1 -1
  118. package/dist/es/components/collapse/tokens.js +1 -1
  119. package/dist/es/components/collapse/types.js +1 -0
  120. package/dist/es/components/config-provider/locale/types.js +1 -0
  121. package/dist/es/components/config-provider/types.js +1 -0
  122. package/dist/es/components/count-down/types.js +1 -0
  123. package/dist/es/components/datetime-picker/types.js +1 -0
  124. package/dist/es/components/dialog/Dialog.js +1 -1
  125. package/dist/es/components/dialog/tokens.js +1 -1
  126. package/dist/es/components/dialog/types.js +1 -0
  127. package/dist/es/components/divider/types.js +1 -0
  128. package/dist/es/components/empty/types.js +1 -0
  129. package/dist/es/components/error-boundary/types.js +1 -0
  130. package/dist/es/components/field/types.js +1 -0
  131. package/dist/es/components/flex/types.js +1 -0
  132. package/dist/es/components/form/Form.js +1 -1
  133. package/dist/es/components/form/FormItem.js +1 -1
  134. package/dist/es/components/form/FormList.js +1 -1
  135. package/dist/es/components/form/types.js +1 -0
  136. package/dist/es/components/grid/tokens.js +1 -1
  137. package/dist/es/components/grid/types.js +1 -0
  138. package/dist/es/components/image/tokens.js +1 -1
  139. package/dist/es/components/image/types.js +1 -0
  140. package/dist/es/components/image-preview/ImagePreview.js +1 -1
  141. package/dist/es/components/image-preview/types.js +1 -0
  142. package/dist/es/components/input/types.js +1 -0
  143. package/dist/es/components/loading/types.js +1 -0
  144. package/dist/es/components/nav-bar/NavBar.js +1 -1
  145. package/dist/es/components/nav-bar/tokens.js +1 -1
  146. package/dist/es/components/nav-bar/types.js +1 -0
  147. package/dist/es/components/notice-bar/NoticeBar.js +1 -1
  148. package/dist/es/components/notice-bar/types.js +1 -0
  149. package/dist/es/components/notify/types.js +1 -0
  150. package/dist/es/components/number-keyboard/tokens.js +1 -1
  151. package/dist/es/components/number-keyboard/types.js +1 -0
  152. package/dist/es/components/overlay/types.js +1 -0
  153. package/dist/es/components/password-input/tokens.js +1 -1
  154. package/dist/es/components/password-input/types.js +1 -0
  155. package/dist/es/components/picker/Picker.js +1 -1
  156. package/dist/es/components/picker/tokens.js +1 -1
  157. package/dist/es/components/picker/types.js +1 -0
  158. package/dist/es/components/popup/Popup.js +1 -1
  159. package/dist/es/components/popup/tokens.js +1 -1
  160. package/dist/es/components/popup/types.js +1 -0
  161. package/dist/es/components/portal/types.js +1 -0
  162. package/dist/es/components/progress/types.js +1 -0
  163. package/dist/es/components/radio/tokens.js +1 -1
  164. package/dist/es/components/radio/types.js +1 -0
  165. package/dist/es/components/safe-area-view/types.js +1 -0
  166. package/dist/es/components/search/tokens.js +1 -1
  167. package/dist/es/components/search/types.js +1 -0
  168. package/dist/es/components/selector/tokens.js +1 -1
  169. package/dist/es/components/selector/types.js +1 -0
  170. package/dist/es/components/share-sheet/ShareSheet.js +1 -1
  171. package/dist/es/components/share-sheet/tokens.js +1 -1
  172. package/dist/es/components/share-sheet/types.js +1 -0
  173. package/dist/es/components/sidebar/tokens.js +1 -1
  174. package/dist/es/components/sidebar/types.js +1 -0
  175. package/dist/es/components/skeleton/types.js +1 -0
  176. package/dist/es/components/slider/Slider.js +1 -1
  177. package/dist/es/components/slider/types.js +1 -0
  178. package/dist/es/components/space/types.js +1 -0
  179. package/dist/es/components/stepper/tokens.js +1 -1
  180. package/dist/es/components/stepper/types.js +1 -0
  181. package/dist/es/components/swiper/Swiper.js +1 -1
  182. package/dist/es/components/swiper/types.js +1 -0
  183. package/dist/es/components/switch/types.js +1 -0
  184. package/dist/es/components/tabbar/tokens.js +1 -1
  185. package/dist/es/components/tabbar/types.js +1 -0
  186. package/dist/es/components/tabs/Tabs.js +1 -1
  187. package/dist/es/components/tabs/tokens.js +1 -1
  188. package/dist/es/components/tabs/types.js +1 -0
  189. package/dist/es/components/tag/tokens.js +1 -1
  190. package/dist/es/components/tag/types.js +1 -0
  191. package/dist/es/components/theme.js +1 -0
  192. package/dist/es/components/toast/Toast.js +1 -1
  193. package/dist/es/components/toast/types.js +1 -0
  194. package/dist/es/components/typography/types.js +1 -0
  195. package/dist/es/components/water-mark/types.js +1 -0
  196. package/dist/es/design-system/presets.js +1 -1
  197. package/dist/es/design-system/tokens.js +1 -1
  198. package/dist/types/components/action-sheet/types.d.ts +87 -0
  199. package/dist/types/components/area/types.d.ts +20 -0
  200. package/dist/types/components/avatar/types.d.ts +62 -0
  201. package/dist/types/components/badge/types.d.ts +57 -0
  202. package/dist/types/components/button/types.d.ts +109 -0
  203. package/dist/types/components/calendar/types.d.ts +111 -0
  204. package/dist/types/components/cascader/types.d.ts +142 -0
  205. package/dist/types/components/cell/types.d.ts +112 -0
  206. package/dist/types/components/checkbox/types.d.ts +99 -0
  207. package/dist/types/components/circle/types.d.ts +51 -0
  208. package/dist/types/components/collapse/types.d.ts +45 -0
  209. package/dist/types/components/config-provider/locale/types.d.ts +130 -0
  210. package/dist/types/components/config-provider/types.d.ts +10 -0
  211. package/dist/types/components/count-down/types.d.ts +29 -0
  212. package/dist/types/components/datetime-picker/types.d.ts +38 -0
  213. package/dist/types/components/dialog/types.d.ts +70 -0
  214. package/dist/types/components/divider/types.d.ts +48 -0
  215. package/dist/types/components/empty/types.d.ts +44 -0
  216. package/dist/types/components/error-boundary/types.d.ts +18 -0
  217. package/dist/types/components/field/types.d.ts +86 -0
  218. package/dist/types/components/flex/types.d.ts +37 -0
  219. package/dist/types/components/form/Form.d.ts +6 -0
  220. package/dist/types/components/form/types.d.ts +68 -0
  221. package/dist/types/components/grid/types.d.ts +77 -0
  222. package/dist/types/components/image/types.d.ts +53 -0
  223. package/dist/types/components/image-preview/types.d.ts +55 -0
  224. package/dist/types/components/input/types.d.ts +42 -0
  225. package/dist/types/components/loading/types.d.ts +32 -0
  226. package/dist/types/components/nav-bar/tokens.d.ts +1 -1
  227. package/dist/types/components/nav-bar/types.d.ts +67 -0
  228. package/dist/types/components/notice-bar/types.d.ts +26 -0
  229. package/dist/types/components/notify/types.d.ts +64 -0
  230. package/dist/types/components/number-keyboard/types.d.ts +35 -0
  231. package/dist/types/components/overlay/types.d.ts +13 -0
  232. package/dist/types/components/password-input/types.d.ts +35 -0
  233. package/dist/types/components/picker/types.d.ts +73 -0
  234. package/dist/types/components/popup/types.d.ts +41 -0
  235. package/dist/types/components/portal/types.d.ts +1 -0
  236. package/dist/types/components/progress/types.d.ts +51 -0
  237. package/dist/types/components/radio/types.d.ts +95 -0
  238. package/dist/types/components/safe-area-view/types.d.ts +1 -0
  239. package/dist/types/components/search/types.d.ts +28 -0
  240. package/dist/types/components/selector/types.d.ts +74 -0
  241. package/dist/types/components/share-sheet/types.d.ts +26 -0
  242. package/dist/types/components/sidebar/types.d.ts +64 -0
  243. package/dist/types/components/skeleton/types.d.ts +45 -0
  244. package/dist/types/components/slider/types.d.ts +38 -0
  245. package/dist/types/components/space/types.d.ts +39 -0
  246. package/dist/types/components/stepper/types.d.ts +46 -0
  247. package/dist/types/components/swiper/types.d.ts +29 -0
  248. package/dist/types/components/switch/types.d.ts +33 -0
  249. package/dist/types/components/tabbar/types.d.ts +39 -0
  250. package/dist/types/components/tabs/types.d.ts +64 -0
  251. package/dist/types/components/tag/types.d.ts +69 -0
  252. package/dist/types/components/theme.d.ts +112 -0
  253. package/dist/types/components/toast/types.d.ts +1 -0
  254. package/dist/types/components/typography/types.d.ts +66 -0
  255. package/dist/types/components/water-mark/types.d.ts +58 -0
  256. package/dist/types/design-system/tokens.d.ts +1 -0
  257. package/package.json +3 -3
  258. package/dist/cjs/components/form/FormContext.js +0 -1
  259. package/dist/cjs/components/form/utils.js +0 -1
  260. package/dist/es/components/form/FormContext.js +0 -1
  261. package/dist/es/components/form/utils.js +0 -1
  262. package/dist/types/components/form/FormContext.d.ts +0 -2
  263. package/dist/types/components/form/utils.d.ts +0 -7
@@ -1 +1 @@
1
- import React,{useCallback,useContext,useEffect,useRef,useState}from"react";import{FormContext}from"./FormContext";import{FORM_ALL_FIELDS_KEY,getValueByName,serializeNamePath}from"./utils";const getList=(e,t)=>{const r=getValueByName(e.getFieldsValue(),t);return Array.isArray(r)?r:[]};export const FormList=({name:e,initialValue:t,children:r})=>{const s=useContext(FormContext),l=useRef(0),i=useRef([]),n=serializeNamePath(e),[a,c]=useState(()=>s?getList(s,e):[]),u=useCallback(e=>{const t=i.current;for(;t.length<e;)t.push(l.current++);t.length>e&&(i.current=t.slice(0,e))},[]),o=useCallback(()=>{s&&void 0===getValueByName(s.getFieldsValue(),e)&&void 0!==t&&s.setFieldValue(e,t)},[s,t,e]);useEffect(()=>{o()},[o]),useEffect(()=>{if(s?.subscribe)return s.subscribe((t,r)=>{if(FORM_ALL_FIELDS_KEY in t||n in t){const t=getValueByName(r,e),s=Array.isArray(t)?t:[];u(s.length),c(s)}})},[s,e,n,u]);const m=useCallback((t,r)=>{if(!s)return;const n=getList(s,e),a="number"==typeof r?r:n.length,c=[...n];c.splice(a,0,t),i.current.splice(a,0,l.current++),s.setFieldValue(e,c)},[s,e]),f=useCallback(t=>{if(!s)return;const r=getList(s,e);t<0||t>=r.length||(i.current.splice(t,1),s.setFieldValue(e,r.slice(0,t).concat(r.slice(t+1))))},[s,e]),g=useCallback((t,r)=>{if(!s)return;const l=getList(s,e);if(t===r||t<0||r<0||t>=l.length||r>=l.length)return;const n=[...l],a=n.splice(t,1)[0];n.splice(r,0,a);const[c]=i.current.splice(t,1);i.current.splice(r,0,c),s.setFieldValue(e,n)},[s,e]);if(!s)return null;u(a.length);const F=a.map((e,t)=>({name:t,key:i.current[t],isListField:!0}));return React.createElement(React.Fragment,null,r(F,{add:m,remove:f,move:g}))};FormList.displayName="Form.List";
1
+ import React,{useCallback,useContext,useEffect,useRef,useState}from"react";import{FormContext,FORM_ALL_FIELDS_KEY,getValueByName,serializeNamePath}from"./Form";const getList=(e,t)=>{const s=getValueByName(e.getFieldsValue(),t);return Array.isArray(s)?s:[]};export const FormList=({name:e,initialValue:t,children:s})=>{const r=useContext(FormContext),l=useRef(0),n=useRef([]),a=serializeNamePath(e),[i,c]=useState(()=>r?getList(r,e):[]),u=useCallback(e=>{const t=n.current;for(;t.length<e;)t.push(l.current++);t.length>e&&(n.current=t.slice(0,e))},[]),o=useCallback(()=>{r&&void 0===getValueByName(r.getFieldsValue(),e)&&void 0!==t&&r.setFieldValue(e,t)},[r,t,e]);useEffect(()=>{o()},[o]),useEffect(()=>{if(r?.subscribe)return r.subscribe((t,s)=>{if(FORM_ALL_FIELDS_KEY in t||a in t){const t=getValueByName(s,e),r=Array.isArray(t)?t:[];u(r.length),c(r)}})},[r,e,a,u]);const m=useCallback((t,s)=>{if(!r)return;const a=getList(r,e),i="number"==typeof s?s:a.length,c=[...a];c.splice(i,0,t),n.current.splice(i,0,l.current++),r.setFieldValue(e,c)},[r,e]),f=useCallback(t=>{if(!r)return;const s=getList(r,e);t<0||t>=s.length||(n.current.splice(t,1),r.setFieldValue(e,s.slice(0,t).concat(s.slice(t+1))))},[r,e]),g=useCallback((t,s)=>{if(!r)return;const l=getList(r,e);if(t===s||t<0||s<0||t>=l.length||s>=l.length)return;const a=[...l],i=a.splice(t,1)[0];a.splice(s,0,i);const[c]=n.current.splice(t,1);n.current.splice(s,0,c),r.setFieldValue(e,a)},[r,e]);if(!r)return null;u(i.length);const F=i.map((e,t)=>({name:t,key:n.current[t],isListField:!0}));return React.createElement(React.Fragment,null,s(F,{add:m,remove:f,move:g}))};FormList.displayName="Form.List";
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";export const createGridTokens=e=>{const{palette:t,spacing:o,fontSize:r,typography:i,opacity:n}=e;return{defaults:{columnNum:4,gutter:0,border:!0,center:!0,square:!1,direction:"vertical",reverse:!1,clickable:!1,iconSize:28,pressedOpacity:n.pressed,textNumberOfLines:2},layout:{container:{flexDirection:"row",flexWrap:"wrap"},border:{position:"absolute",left:0,right:0,height:1,zIndex:1},borderTop:{top:0},borderBottom:{bottom:0},itemContentBase:{justifyContent:"center"},itemVertical:{flexDirection:"column"},itemHorizontal:{flexDirection:"row",alignItems:"center"},itemCenter:{alignItems:"center"},itemReverseColumn:{flexDirection:"column-reverse"},itemReverseRow:{flexDirection:"row-reverse"},iconWrapper:{alignItems:"center",justifyContent:"center"},text:{textAlign:"center"},itemBorderRight:{width:1},itemBorderBottom:{height:1},itemContentSquare:{width:"100%",aspectRatio:1}},colors:{border:t.default[200],text:t.default[600],background:"#ffffff",active:t.default[100]},typography:{fontSize:r.sm,fontFamily:i.fontFamily,lineHeight:Math.round(r.sm*i.lineHeightMultiplier),fontWeight:i.weight.regular},spacing:{paddingHorizontal:o.sm,paddingVertical:o.md,iconGap:o.sm}}};export const useGridTokens=createComponentTokensHook("grid",createGridTokens);
1
+ import{createComponentTokensHook}from"../../design-system";export const createGridTokens=e=>{const{palette:t,spacing:r,fontSize:o,typography:i,opacity:n}=e,a=e.surface??"#ffffff";return{defaults:{columnNum:4,gutter:0,border:!0,center:!0,square:!1,direction:"vertical",reverse:!1,clickable:!1,iconSize:28,pressedOpacity:n.pressed,textNumberOfLines:2},layout:{container:{flexDirection:"row",flexWrap:"wrap"},border:{position:"absolute",left:0,right:0,height:1,zIndex:1},borderTop:{top:0},borderBottom:{bottom:0},itemContentBase:{justifyContent:"center"},itemVertical:{flexDirection:"column"},itemHorizontal:{flexDirection:"row",alignItems:"center"},itemCenter:{alignItems:"center"},itemReverseColumn:{flexDirection:"column-reverse"},itemReverseRow:{flexDirection:"row-reverse"},iconWrapper:{alignItems:"center",justifyContent:"center"},text:{textAlign:"center"},itemBorderRight:{width:1},itemBorderBottom:{height:1},itemContentSquare:{width:"100%",aspectRatio:1}},colors:{border:t.default[200],text:t.default[600],background:a,active:t.default[100]},typography:{fontSize:o.sm,fontFamily:i.fontFamily,lineHeight:Math.round(o.sm*i.lineHeightMultiplier),fontWeight:i.weight.regular},spacing:{paddingHorizontal:r.sm,paddingVertical:r.md,iconGap:r.sm}}};export const useGridTokens=createComponentTokensHook("grid",createGridTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createTokens=e=>{const{palette:o,spacing:t,fontSize:n,radii:i,typography:a}=e;return{defaults:{fit:"cover",showLoading:!0,showError:!0,loadingText:"Loading...",errorText:"Failed to load",iconSize:20,loadingIndicatorBaseSize:20,loadingLabelMarginTop:t.xs,roundRadius:i.full},layout:{container:{alignItems:"center",justifyContent:"center",overflow:"hidden"},overlay:{position:"absolute",top:0,right:0,bottom:0,left:0,alignItems:"center",justifyContent:"center"},label:{fontFamily:a.fontFamily,fontSize:n.xs},iconContainer:{alignItems:"center",justifyContent:"center"},absoluteFill:{position:"absolute",top:0,right:0,bottom:0,left:0}},colors:{background:"#ffffff",text:o.default[500],error:o.danger[500]}}};export const useImageTokens=createComponentTokensHook("image",createTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createTokens=e=>{const{palette:o,spacing:t,fontSize:n,radii:a,typography:i}=e,r=e.surface??"#ffffff";return{defaults:{fit:"cover",showLoading:!0,showError:!0,loadingText:"Loading...",errorText:"Failed to load",iconSize:20,loadingIndicatorBaseSize:20,loadingLabelMarginTop:t.xs,roundRadius:a.full},layout:{container:{alignItems:"center",justifyContent:"center",overflow:"hidden"},overlay:{position:"absolute",top:0,right:0,bottom:0,left:0,alignItems:"center",justifyContent:"center"},label:{fontFamily:i.fontFamily,fontSize:n.xs},iconContainer:{alignItems:"center",justifyContent:"center"},absoluteFill:{position:"absolute",top:0,right:0,bottom:0,left:0}},colors:{background:r,text:o.default[500],error:o.danger[500]}}};export const useImageTokens=createComponentTokensHook("image",createTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import{Image as RNImage,Platform,Pressable,StyleSheet,Text,View}from"react-native";import Popup from"../popup";import Swiper from"../swiper";import{useImagePreviewTokens}from"./tokens";import{isString,isText}from"../../utils/validate";const clampIndex=(e,t)=>t<=0?0:Math.max(0,Math.min(t-1,e)),indicatorSpacing={bottom:32},IS_WEB="web"===Platform.OS,TOUCH_MOVE_THRESHOLD=8,TOUCH_MOVE_THRESHOLD_SQUARED=64,ImageSlide=React.memo(e=>{const{source:t,rendered:n,pressableHandlers:a,index:r,total:o}=e;return React.createElement(Pressable,_extends({accessibilityRole:"image",accessibilityLabel:`image ${r+1} of ${o}`,style:S.slidePressable},a),n?React.createElement(RNImage,{source:t,resizeMode:"contain",style:S.image,accessible:!0,accessibilityRole:"image"}):React.createElement(View,{style:S.imagePlaceholder}))},(e,t)=>e.source===t.source&&e.rendered===t.rendered&&e.pressableHandlers===t.pressableHandlers&&e.index===t.index&&e.total===t.total),ImagePreviewImpl=(e,t)=>{const{visible:n,images:a=[],startPosition:r=0,tokensOverride:o,lazyRender:i=!1,lazyRenderBuffer:l=1,showIndex:s=!0,indexRender:c,showIndicators:d=!1,closeable:u=!1,closeIcon:p,closeIconPosition:m="top-right",closeOnlyClickCloseIcon:g=!1,overlay:x=!0,overlayStyle:f,closeOnBackPress:v,closeOnPopstate:y,zIndex:I,duration:b,safeAreaInsetTop:w=!0,safeAreaInsetBottom:R=!0,onChange:h,onClose:C,onClosed:P,beforeClose:E}=e,{colors:T,layout:k,radii:O,typography:H,spacing:M}=useImagePreviewTokens(o),z=useRef(null),B=useRef("close"),V=useRef(null),_=useRef(!1),A=a.length,[D,F]=useState(()=>clampIndex(r,A)),X=clampIndex(D,A),Y=useRef({images:a,index:X,beforeClose:E,onClose:C});Y.current={images:a,index:X,beforeClose:E,onClose:C};const $=useMemo(()=>a.map(e=>isString(e)?{uri:e}:e),[a]);useEffect(()=>{F(e=>clampIndex(e,A))},[A]),useEffect(()=>{if(!n)return;const e=clampIndex(r,A);if(F(e),"undefined"!=typeof requestAnimationFrame){const t=requestAnimationFrame(()=>{z.current?.swipeTo(e,!1)});return()=>cancelAnimationFrame(t)}},[A,r,n]);const j=useCallback(async e=>{const{beforeClose:t,images:n,index:a}=Y.current;if(!t)return!0;return!1!==await t({reason:e,index:a,image:n[a]})},[]),U=useCallback(async(e,t=!1)=>{const{onClose:n,images:a,index:r}=Y.current;if(!t){if(!await j(e))return}n?.({index:r,image:a[r]})},[j]),W=useCallback(async e=>(B.current=e,j(e)),[j]),L=useCallback(()=>{U(B.current,!0)},[U]);useImperativeHandle(t,()=>({swipeTo:(e,t=!0)=>{const n=clampIndex(e,A);F(n),z.current?.swipeTo(n,t)}}),[A]);const q=useRef(h);q.current=h;const N=useRef(X);N.current=X;const Q=useCallback(e=>{N.current!==e&&(F(e),q.current?.(e))},[]),G=useCallback(()=>{g||U("content")},[g,U]),J=useCallback(()=>{V.current=null,_.current=!1},[]),K=useCallback((e,t)=>{V.current={x:e,y:t},_.current=!1},[]),Z=useCallback((e,t)=>{const n=V.current;if(!n)return;const a=e-n.x,r=t-n.y;a*a+r*r>=64&&(_.current=!0)},[]),ee=useCallback((e,t)=>{const n=V.current,a=_.current;if(J(),!n||a)return;const r=e-n.x,o=t-n.y;r*r+o*o>=64||G()},[G,J]),te=useMemo(()=>{const e={onTouchStart:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&K(t,n)},onTouchMove:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&Z(t,n)},onTouchEnd:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&ee(t,n)},onTouchCancel:J};return IS_WEB&&(e.onMouseDown=e=>{const t=e.nativeEvent;null!=t?.pageX&&null!=t?.pageY&&K(t.pageX,t.pageY)},e.onMouseMove=e=>{const t=e.nativeEvent;1===t?.buttons&&null!=t?.pageX&&null!=t?.pageY&&Z(t.pageX,t.pageY)},e.onMouseUp=e=>{const t=e.nativeEvent;null!=t?.pageX&&null!=t?.pageY&&ee(t.pageX,t.pageY)}),e},[Z,K,J,ee]),ne=useCallback((e,t)=>{if(!s||0===t)return null;const n=`${e+1} / ${t}`;return React.createElement(View,{style:[S.index,{top:M.indexTop}],testID:"rv-image-preview-index"},React.createElement(View,{style:[S.indexBadge,{backgroundColor:T.indexBackground,borderRadius:O.indexBadge,paddingHorizontal:M.indexPaddingHorizontal,paddingVertical:M.indexPaddingVertical}]},(()=>{if(!c)return React.createElement(Text,{style:[S.indexText,{color:T.indexText,fontFamily:H.fontFamily,fontSize:H.indexTextSize}]},n);const a=c({index:e,len:t});return isText(a)?React.createElement(Text,{style:[S.indexText,{color:T.indexText,fontFamily:H.fontFamily,fontSize:H.indexTextSize}]},a):a})()))},[T.indexBackground,T.indexText,c,O.indexBadge,s,M.indexPaddingHorizontal,M.indexPaddingVertical,M.indexTop,H.indexTextSize]),ae=i?Math.max(0,0|l):0,re=useCallback((e,t)=>React.createElement(React.Fragment,null,ne(t,e),d&&e>1&&React.createElement(Swiper.PagIndicator,{total:e,current:t,activeColor:T.indicatorActive,inactiveColor:T.indicatorInactive,style:indicatorSpacing,testID:"rv-image-preview-indicators"})),[T.indicatorActive,T.indicatorInactive,ne,d]);return React.createElement(Popup,{visible:n,overlay:x,overlayStyle:f,closeOnOverlayPress:!g,closeOnBackPress:v,closeOnPopstate:y,zIndex:I,duration:b,closeable:u,closeIcon:p,closeIconPosition:m,stopPropagation:!1,round:!1,safeAreaInsetTop:w,safeAreaInsetBottom:R,overlayTestID:"rv-image-preview-overlay",style:[S.popup,{backgroundColor:T.transparent,padding:k.popupPadding,borderRadius:k.popupRadius}],beforeClose:W,onClose:L,onClosed:P},React.createElement(View,{style:[S.content,{backgroundColor:T.background}]},1===A&&ne(0,1),0===A?React.createElement(View,{style:S.empty,testID:"rv-image-preview-empty"}):React.createElement(Swiper,{ref:z,style:S.swiper,initialSwipe:clampIndex(r,A),loop:!1,autoplay:!1,touchable:A>1,indicator:re,onChange:Q,testID:"rv-image-preview-swiper"},$.map((e,t)=>React.createElement(Swiper.Item,{key:t,style:S.slide,testID:`rv-image-preview-slide-${t}`},React.createElement(ImageSlide,{source:e,rendered:!i||Math.abs(t-X)<=ae,pressableHandlers:te,index:t,total:$.length}))))))},ImagePreviewForwardRef=React.forwardRef(ImagePreviewImpl),ImagePreview=React.memo(ImagePreviewForwardRef);export default ImagePreview;const S=StyleSheet.create({popup:{position:"absolute",top:0,left:0,right:0,bottom:0,width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%"},content:{flex:1},swiper:{flex:1},slide:{justifyContent:"center",alignItems:"center",flex:1},slidePressable:{flex:1,width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},image:{width:"100%",height:"100%"},imagePlaceholder:{width:"100%",height:"100%"},empty:{flex:1},index:{position:"absolute",left:0,right:0,alignItems:"center",zIndex:1},indexBadge:{},indexText:{fontWeight:"500"}});
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import{Image as RNImage,Platform,Pressable,StyleSheet,Text,View}from"react-native";import Popup from"../popup";import Swiper from"../swiper";import{useImagePreviewTokens}from"./tokens";import{isString,isText}from"../../utils/validate";const clampIndex=(e,t)=>t<=0?0:Math.max(0,Math.min(t-1,e)),indicatorSpacing={bottom:32},IS_WEB="web"===Platform.OS,TOUCH_MOVE_THRESHOLD=8,TOUCH_MOVE_THRESHOLD_SQUARED=64,ImageSlide=React.memo(e=>{const{source:t,rendered:n,pressableHandlers:a,index:r,total:i}=e;return React.createElement(Pressable,_extends({accessibilityRole:"image",accessibilityLabel:`image ${r+1} of ${i}`,style:S.slidePressable},a),n?React.createElement(RNImage,{source:t,resizeMode:"contain",style:S.image,accessible:!0,accessibilityRole:"image"}):React.createElement(View,{style:S.imagePlaceholder}))},(e,t)=>e.source===t.source&&e.rendered===t.rendered&&e.pressableHandlers===t.pressableHandlers&&e.index===t.index&&e.total===t.total),ImagePreviewImpl=(e,t)=>{const{visible:n,images:a=[],startPosition:r=0,tokensOverride:i,lazyRender:o=!1,lazyRenderBuffer:l=1,showIndex:s=!0,indexRender:c,showIndicators:d=!1,closeable:u=!1,closeIcon:m,closeIconPosition:p="top-right",closeOnlyClickCloseIcon:g=!1,overlay:x=!0,overlayStyle:f,closeOnBackPress:v,closeOnPopstate:y,zIndex:I,duration:b,safeAreaInsetTop:w=!0,safeAreaInsetBottom:R=!0,onChange:h,onClose:C,onClosed:P,beforeClose:E}=e,{colors:T,layout:k,radii:O,typography:H,spacing:M}=useImagePreviewTokens(i),z=useRef(null),B=useRef("close"),F=useRef(null),V=useRef(!1),_=a.length,[A,D]=useState(()=>clampIndex(r,_)),X=clampIndex(A,_),Y=useRef({images:a,index:X,beforeClose:E,onClose:C});Y.current={images:a,index:X,beforeClose:E,onClose:C};const $=useMemo(()=>a.map(e=>isString(e)?{uri:e}:e),[a]);useEffect(()=>{D(e=>clampIndex(e,_))},[_]),useEffect(()=>{if(!n)return;const e=clampIndex(r,_);if(D(e),"undefined"!=typeof requestAnimationFrame){const t=requestAnimationFrame(()=>{z.current?.swipeTo(e,!1)});return()=>cancelAnimationFrame(t)}},[_,r,n]);const j=useCallback(async e=>{const{beforeClose:t,images:n,index:a}=Y.current;if(!t)return!0;return!1!==await t({reason:e,index:a,image:n[a]})},[]),U=useCallback(async(e,t=!1)=>{const{onClose:n,images:a,index:r}=Y.current;if(!t){if(!await j(e))return}n?.({index:r,image:a[r]})},[j]),W=useCallback(async e=>(B.current=e,j(e)),[j]),L=useCallback(()=>{U(B.current,!0)},[U]);useImperativeHandle(t,()=>({swipeTo:(e,t=!0)=>{const n=clampIndex(e,_);D(n),z.current?.swipeTo(n,t)}}),[_]);const q=useRef(h);q.current=h;const N=useRef(X);N.current=X;const Q=useCallback(e=>{N.current!==e&&(D(e),q.current?.(e))},[]),G=useCallback(()=>{g||U("content")},[g,U]),J=useCallback(()=>{F.current=null,V.current=!1},[]),K=useCallback((e,t)=>{F.current={x:e,y:t},V.current=!1},[]),Z=useCallback((e,t)=>{const n=F.current;if(!n)return;const a=e-n.x,r=t-n.y;a*a+r*r>=64&&(V.current=!0)},[]),ee=useCallback((e,t)=>{const n=F.current,a=V.current;if(J(),!n||a)return;const r=e-n.x,i=t-n.y;r*r+i*i>=64||G()},[G,J]),te=useMemo(()=>{const e={onTouchStart:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&K(t,n)},onTouchMove:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&Z(t,n)},onTouchEnd:e=>{const{pageX:t,pageY:n}=e.nativeEvent;null!=t&&null!=n&&ee(t,n)},onTouchCancel:J};return IS_WEB&&(e.onMouseDown=e=>{const t=e.nativeEvent;null!=t?.pageX&&null!=t?.pageY&&K(t.pageX,t.pageY)},e.onMouseMove=e=>{const t=e.nativeEvent;1===t?.buttons&&null!=t?.pageX&&null!=t?.pageY&&Z(t.pageX,t.pageY)},e.onMouseUp=e=>{const t=e.nativeEvent;null!=t?.pageX&&null!=t?.pageY&&ee(t.pageX,t.pageY)}),e},[Z,K,J,ee]),ne=useCallback((e,t)=>s&&0!==t?React.createElement(View,{style:[S.index,{top:M.indexTop}],testID:"rv-image-preview-index"},React.createElement(View,{style:[S.indexBadge,{backgroundColor:T.indexBackground,borderRadius:O.indexBadge,paddingHorizontal:M.indexPaddingHorizontal,paddingVertical:M.indexPaddingVertical}]},c?(()=>{const n=c({index:e,len:t});return isText(n)?React.createElement(Text,{style:[S.indexText,{color:T.indexText,fontFamily:H.fontFamily,fontSize:H.indexTextSize}]},n):n})():React.createElement(Text,{style:[S.indexText,{color:T.indexText,fontFamily:H.fontFamily,fontSize:H.indexTextSize}]},`${e+1} / ${t}`))):null,[T.indexBackground,T.indexText,c,O.indexBadge,s,M.indexPaddingHorizontal,M.indexPaddingVertical,M.indexTop,H.fontFamily,H.indexTextSize]),ae=o?Math.max(0,0|l):0,re=useCallback((e,t)=>React.createElement(React.Fragment,null,ne(t,e),d&&e>1&&React.createElement(Swiper.PagIndicator,{total:e,current:t,activeColor:T.indicatorActive,inactiveColor:T.indicatorInactive,style:indicatorSpacing,testID:"rv-image-preview-indicators"})),[T.indicatorActive,T.indicatorInactive,ne,d]);return React.createElement(Popup,{visible:n,overlay:x,overlayStyle:f,closeOnOverlayPress:!g,closeOnBackPress:v,closeOnPopstate:y,zIndex:I,duration:b,closeable:u,closeIcon:m,closeIconPosition:p,stopPropagation:!1,round:!1,safeAreaInsetTop:w,safeAreaInsetBottom:R,overlayTestID:"rv-image-preview-overlay",style:[S.popup,{backgroundColor:T.background,padding:k.popupPadding,borderRadius:k.popupRadius}],beforeClose:W,onClose:L,onClosed:P},React.createElement(View,{style:S.content},1===_&&ne(0,1),0===_?React.createElement(View,{style:S.empty,testID:"rv-image-preview-empty"}):React.createElement(Swiper,{ref:z,style:S.swiper,initialSwipe:clampIndex(r,_),loop:!1,autoplay:!1,touchable:_>1,indicator:re,onChange:Q,testID:"rv-image-preview-swiper"},$.map((e,t)=>React.createElement(Swiper.Item,{key:t,style:S.slide,testID:`rv-image-preview-slide-${t}`},React.createElement(ImageSlide,{source:e,rendered:!o||Math.abs(t-X)<=ae,pressableHandlers:te,index:t,total:$.length}))))))},ImagePreviewForwardRef=React.forwardRef(ImagePreviewImpl),ImagePreview=React.memo(ImagePreviewForwardRef);export default ImagePreview;const S=StyleSheet.create({popup:{position:"absolute",top:0,left:0,right:0,bottom:0,width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%"},content:{flex:1},swiper:{flex:1},slide:{justifyContent:"center",alignItems:"center",flex:1},slidePressable:{flex:1,width:"100%",height:"100%",justifyContent:"center",alignItems:"center"},image:{width:"100%",height:"100%"},imagePlaceholder:{width:"100%",height:"100%"},empty:{flex:1},index:{position:"absolute",left:0,right:0,alignItems:"center",zIndex:1},indexBadge:{},indexText:{fontWeight:"500"}});
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useState}from"react";import{Pressable,Text,View}from"react-native";import{ArrowLeft}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{createHairlineView}from"../../utils/hairline";import{isRenderable,isText,renderTextOrNode}from"../../utils";import{SafeAreaView}from"../safe-area-view";import{useNavBarTokens}from"./tokens";const NavBarBaseImpl=e=>{const{tokensOverride:t,title:r,description:a,children:o,leftText:i,rightText:l,leftIcon:s,rightIcon:n,leftArrow:c,fixed:d,placeholder:u,zIndex:f,border:y,safeAreaInsetTop:m,background:p,tintColor:b,titleStyle:g,descriptionStyle:h,sideStyle:R,onPressLeft:v,onClickLeft:x,onPressRight:w,onClickRight:B,style:k,...E}=e,T=useLocale(),L=useDirection(),N=useNavBarTokens(t),P=c??N.defaults.leftArrow,V=d??N.defaults.fixed,A=u??N.defaults.placeholder,S=f??N.defaults.zIndex,I=y??N.defaults.border,O=m??V,z=p??N.colors.background,F=v??x,C=w??B,[D,_]=useState(N.sizing.height),$=V&&A,W=useCallback(e=>{if(!$)return;const t=e.nativeEvent.layout.height;_(e=>Math.abs(e-t)<.5?e:t)},[$]),j=b??N.colors.text,H=b??N.colors.icon,M=useAriaPress({disabled:!F,onPress:F,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(i)?`${i}`:T?.vanNavBar?.back??"Back"}}),X=useAriaPress({disabled:!C,onPress:C,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(l)?`${l}`:T?.vanNavBar?.action??"Actions"}}),q=e=>{const t="left"===e,r=t?i:l,a=t?s:n,o=t?M:X,c=t?F:C,d=t?!0===P?React.createElement(ArrowLeft,{size:18,fill:H,color:H,style:"rtl"===L?{transform:[{scaleX:-1}]}:void 0}):isRenderable(P)&&P:null;if(!(!!c||isRenderable(d)||isRenderable(r)||isRenderable(a)))return React.createElement(View,{style:N.layout.sidePlaceholder});const u=React.createElement(React.Fragment,null,d,isRenderable(a)?a:null,isRenderable(r)?isText(r)?React.createElement(Text,{numberOfLines:1,style:[N.layout.sideText,{color:H,fontFamily:N.typography.fontFamily}]},r):r:null),f=[N.layout.side,!t&&N.layout.rightAlign,R];return c?React.createElement(Pressable,_extends({hitSlop:{top:8,right:8,bottom:8,left:8},testID:`rv-navbar-${e}`,style:f},o.interactionProps),u):React.createElement(View,{testID:`rv-navbar-${e}`,style:f},u)},G=isRenderable(o)?o:React.createElement(View,{style:N.layout.titleWrapper},isRenderable(r)&&renderTextOrNode(r,[N.layout.title,{color:j,fontFamily:N.typography.fontFamily,fontSize:N.typography.titleSize,fontWeight:N.typography.titleWeight},g],{numberOfLines:1}),isRenderable(a)&&renderTextOrNode(a,[N.layout.description,{color:b??N.colors.description,fontFamily:N.typography.fontFamily,fontSize:N.typography.descriptionSize},h],{numberOfLines:1})),J=React.createElement(View,{style:[N.layout.bar,{backgroundColor:z}],onLayout:O?void 0:W},q("left"),React.createElement(View,{style:N.layout.center},G),q("right"),I&&React.createElement(View,{style:createHairlineView({position:"bottom",color:N.colors.border,left:0,right:0})})),K=O?React.createElement(SafeAreaView,{onLayout:W,style:{backgroundColor:z}},J):J;return React.createElement(React.Fragment,null,$&&React.createElement(View,{testID:"rv-navbar-placeholder",style:{height:D}}),React.createElement(View,_extends({},E,{accessibilityRole:"navigation",style:[N.layout.container,V&&[N.layout.fixed,{zIndex:S}],k]}),K))},NavBarBase=React.memo(NavBarBaseImpl);NavBarBase.displayName="NavBar";export default NavBarBase;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{ArrowLeft}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{createHairlineView}from"../../utils/hairline";import{isRenderable,isText,renderTextOrNode}from"../../utils";import{SafeAreaView}from"../safe-area-view";import{useNavBarTokens}from"./tokens";const NavBarBaseImpl=e=>{const{tokensOverride:t,title:r,description:a,children:o,leftText:i,rightText:l,leftIcon:s,rightIcon:n,leftArrow:c,fixed:d,placeholder:u,zIndex:f,border:y,safeAreaInsetTop:m,background:p,tintColor:b,titleStyle:g,descriptionStyle:h,sideStyle:v,onPressLeft:R,onClickLeft:x,onPressRight:w,onClickRight:B,style:P,...k}=e,E=useLocale(),T=useDirection(),L=useNavBarTokens(t),N=c??L.defaults.leftArrow,S=d??L.defaults.fixed,V=u??L.defaults.placeholder,A=f??L.defaults.zIndex,I=y??L.defaults.border,O=m??S,z=p??L.colors.background,F=R??x,C=w??B,[D,_]=useState(L.sizing.height),$=S&&V,W=useCallback(e=>{if(!$)return;const t=e.nativeEvent.layout.height;_(e=>Math.abs(e-t)<.5?e:t)},[$]),j=b??L.colors.text,H=b??L.colors.icon,M=useAriaPress({disabled:!F,onPress:F,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(i)?`${i}`:E?.vanNavBar?.back??"Back"}}),X=useAriaPress({disabled:!C,onPress:C,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(l)?`${l}`:E?.vanNavBar?.action??"Actions"}}),q=e=>{const t="left"===e,r=t?i:l,a=t?s:n,o=t?M:X,c=t?F:C,d=t?!0===N?React.createElement(ArrowLeft,{size:18,fill:H,color:H,style:"rtl"===T?{transform:[{scaleX:-1}]}:void 0}):isRenderable(N)&&N:null;if(!(!!c||isRenderable(d)||isRenderable(r)||isRenderable(a)))return React.createElement(View,{style:L.layout.sidePlaceholder});const u=React.createElement(React.Fragment,null,d,isRenderable(a)?a:null,isRenderable(r)?isText(r)?React.createElement(Text,{numberOfLines:1,style:[L.layout.sideText,{color:H,fontFamily:L.typography.fontFamily}]},r):r:null),f=[L.layout.side,!t&&L.layout.rightAlign,v];return c?React.createElement(Pressable,_extends({hitSlop:{top:8,right:8,bottom:8,left:8},testID:`rv-navbar-${e}`,style:f},o.interactionProps),u):React.createElement(View,{testID:`rv-navbar-${e}`,style:f},u)},G=isRenderable(o)?o:React.createElement(View,{style:L.layout.titleWrapper},isRenderable(r)&&renderTextOrNode(r,[L.layout.title,{color:j,fontFamily:L.typography.fontFamily,fontSize:L.typography.titleSize,fontWeight:L.typography.titleWeight},g],{numberOfLines:1}),isRenderable(a)&&renderTextOrNode(a,[L.layout.description,{color:b??L.colors.description,fontFamily:L.typography.fontFamily,fontSize:L.typography.descriptionSize},h],{numberOfLines:1})),J=React.createElement(View,{style:[L.layout.bar,{backgroundColor:z}],onLayout:O?void 0:W},q("left"),React.createElement(View,{style:L.layout.center},G),q("right"),I&&React.createElement(View,{style:createHairlineView({position:"bottom",color:L.colors.border,left:0,right:0})})),K=O?React.createElement(SafeAreaView,{onLayout:W,style:{backgroundColor:z}},J):J;return React.createElement(React.Fragment,null,$&&React.createElement(View,{testID:"rv-navbar-placeholder",style:{height:D}}),React.createElement(View,_extends({},k,{accessibilityRole:"web"===Platform.OS?"navigation":void 0,style:[L.layout.container,S&&[L.layout.fixed,{zIndex:A}],P]}),K))},NavBarBase=React.memo(NavBarBaseImpl);NavBarBase.displayName="NavBar";export default NavBarBase;
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";export const createNavBarTokens=({palette:e,spacing:t,fontSize:i,typography:n})=>({defaults:{fixed:!1,placeholder:!1,border:!0,safeAreaInsetTop:!1,leftArrow:!1,zIndex:1},layout:{container:{width:"100%"},bar:{flexDirection:"row",alignItems:"center",minHeight:48,paddingHorizontal:t.md},center:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:12},side:{minWidth:60,flexDirection:"row",alignItems:"center",gap:4},rightAlign:{justifyContent:"flex-end"},sidePlaceholder:{minWidth:60},sideText:{fontSize:16},titleWrapper:{alignItems:"center"},title:{includeFontPadding:!1},description:{marginTop:2,includeFontPadding:!1},fixed:{position:"absolute",top:0,left:0,right:0}},colors:{background:"#ffffff",text:e.default[900],description:e.default[500],border:e.default[200],icon:e.default[700]},typography:{fontFamily:n.fontFamily,titleSize:i.lg,titleWeight:"600",descriptionSize:i.sm},sizing:{height:52}});export const useNavBarTokens=createComponentTokensHook("navBar",createNavBarTokens);
1
+ import{createComponentTokensHook}from"../../design-system";export const createNavBarTokens=e=>{const{palette:t,spacing:n,fontSize:i,typography:o}=e,r=e.surface??"#ffffff";return{defaults:{fixed:!1,placeholder:!1,border:!0,safeAreaInsetTop:!1,leftArrow:!1,zIndex:1},layout:{container:{width:"100%"},bar:{flexDirection:"row",alignItems:"center",minHeight:48,paddingHorizontal:n.md},center:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:12},side:{minWidth:60,flexDirection:"row",alignItems:"center",gap:4},rightAlign:{justifyContent:"flex-end"},sidePlaceholder:{minWidth:60},sideText:{fontSize:16},titleWrapper:{alignItems:"center"},title:{includeFontPadding:!1},description:{marginTop:2,includeFontPadding:!1},fixed:{position:"absolute",top:0,left:0,right:0}},colors:{background:r,text:t.default[900],description:t.default[500],border:t.default[200],icon:t.default[700]},typography:{fontFamily:o.fontFamily,titleSize:i.lg,titleWeight:"600",descriptionSize:i.sm},sizing:{height:52}}};export const useNavBarTokens=createComponentTokensHook("navBar",createNavBarTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>{if(!C)return[];if(f&&f.length)return f;const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]},[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>C?f&&f.length?f:(()=>{const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]})():[],[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createTokens=e=>{const{palette:o,spacing:t,radii:a,fontSize:r,typography:i}=e,n=o.primary.foreground??"#ffffff";return{colors:{background:o.default[100],title:o.default[700],keyBackground:"#ffffff",keyActiveBackground:o.default[50],keyText:o.default[900],keyTextActive:o.primary[600],closeBackground:o.primary[500],closeActiveBackground:o.primary[400],closeText:n,border:o.default[200]},spacing:{paddingHorizontal:t.ssm,paddingVertical:t.ssm,keyGap:t.ssm,titlePadding:t.md},sizing:{keyHeight:54,closeHeight:44,fontSize:28,defaultIconFontSize:30,auxFontSize:18,titleFontSize:r.md},typography:{fontFamily:i.fontFamily},radii:{key:a.xs},shadow:{color:"#000000",opacity:.08,radius:6,offsetY:0,elevation:6}}};export const useNumberKeyboardTokens=createComponentTokensHook("numberKeyboard",createTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createTokens=e=>{const{palette:o,spacing:t,radii:a,fontSize:r,typography:i}=e,n=e.surface??"#ffffff",s=o.primary.foreground??"#ffffff";return{colors:{background:o.default[100],title:o.default[700],keyBackground:n,keyActiveBackground:o.default[50],keyText:o.default[900],keyTextActive:o.primary[600],closeBackground:o.primary[500],closeActiveBackground:o.primary[400],closeText:s,border:o.default[200]},spacing:{paddingHorizontal:t.ssm,paddingVertical:t.ssm,keyGap:t.ssm,titlePadding:t.md},sizing:{keyHeight:54,closeHeight:44,fontSize:28,defaultIconFontSize:30,auxFontSize:18,titleFontSize:r.md},typography:{fontFamily:i.fontFamily},radii:{key:a.xs},shadow:{color:"#000000",opacity:.08,radius:6,offsetY:0,elevation:6}}};export const useNumberKeyboardTokens=createComponentTokensHook("numberKeyboard",createTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";const createPasswordInputTokens=e=>({colors:{border:e.palette.default[100],text:e.palette.default[900],muted:e.palette.default[500],error:e.palette.danger[500],cursor:e.palette.default[800],background:"#ffffff",transparent:"transparent"},radii:{wrapper:e.radii.sm,cellGutter:e.radii.none},sizing:{cellHeight:50,cellTextSize:e.fontSize.xl,maskSize:10,cursorWidth:StyleSheet.hairlineWidth||1,cursorHeightRatio:.4,cursorTopRatio:.3},typography:{fontFamily:e.typography.fontFamily,cellTextWeight:e.typography.weight.semiBold,infoSize:e.fontSize.sm,infoLineHeight:Math.round(e.fontSize.sm*e.typography.lineHeightMultiplier),infoWeight:e.typography.weight.regular},opacity:{disabled:.6,hidden:0},spacing:{infoMarginTop:e.spacing.sm,none:e.spacing.none}});export const usePasswordInputTokens=createComponentTokensHook("passwordInput",createPasswordInputTokens);
1
+ import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";const createPasswordInputTokens=e=>({colors:{border:e.palette.default[100],text:e.palette.default[900],muted:e.palette.default[500],error:e.palette.danger[500],cursor:e.palette.default[800],background:e.surface??"#ffffff",transparent:"transparent"},radii:{wrapper:e.radii.sm,cellGutter:e.radii.none},sizing:{cellHeight:50,cellTextSize:e.fontSize.xl,maskSize:10,cursorWidth:StyleSheet.hairlineWidth||1,cursorHeightRatio:.4,cursorTopRatio:.3},typography:{fontFamily:e.typography.fontFamily,cellTextWeight:e.typography.weight.semiBold,infoSize:e.fontSize.sm,infoLineHeight:Math.round(e.fontSize.sm*e.typography.lineHeightMultiplier),infoWeight:e.typography.weight.regular},opacity:{disabled:.6,hidden:0},spacing:{infoMarginTop:e.spacing.sm,none:e.spacing.none}});export const usePasswordInputTokens=createComponentTokensHook("passwordInput",createPasswordInputTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{withAlpha}from"../../utils/color";import{isFiniteNumber,isText}from"../../utils/validate";import{clamp,isObject,shallowEqualArray}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";export const toArrayValue=e=>Array.isArray(e)?e.filter(e=>null!=e):null==e?[]:[e];const isColumnWithOptions=e=>!!e&&isObject(e)&&"options"in e&&Array.isArray(e.options),hasChildren=e=>!!e&&isObject(e)&&Array.isArray(e.children)&&e.children.length>0;export const findEnabledIndex=(e,t)=>{if(!e.length)return-1;const n=Math.min(Math.max(t,0),e.length-1);if(!e[n]?.disabled)return n;for(let t=n+1;t<e.length;t+=1)if(!e[t]?.disabled)return t;for(let t=n-1;t>=0;t-=1)if(!e[t]?.disabled)return t;return-1};const normalizeMultiple=(e,t,n)=>{const r=[],o=[];return e.forEach((e,a)=>{const l=n[a],i=void 0!==t[a]?e.findIndex(e=>e.value===t[a]):-1,c=e.findIndex(e=>e.value===l),s=findEnabledIndex(e,c>=0?c:i>=0?i:0),u=s>=0?e[s]:void 0,m=c>=0&&!e[c]?.disabled;r[a]=m?l:u?.value??t[a]??e[0]?.value,o[a]=u}),{columns:e,values:r,options:o}},normalizeCascade=(e,t)=>{const n=[],r=[],o=[];let a=e,l=0;for(;a&&a.length&&l<10;){n.push(a);const e=t[l],i=a.findIndex(t=>t.value===e||String(t.value)===String(e)),c=findEnabledIndex(a,i>=0?i:0),s=c>=0?a[c]:a[0];if(r[l]=s?.value,o[l]=s,!s||!hasChildren(s))break;a=s.children,l+=1}return{columns:n,values:r,options:o}};export const prepareColumns=(e=[])=>{if(!Array.isArray(e)||0===e.length)return{type:"single",columnsList:[],defaults:[],cascadeRoot:[]};const t=e.every(e=>!Array.isArray(e)&&!isColumnWithOptions(e)),n=t&&e.some(e=>hasChildren(e));if(n)return{type:"cascade",columnsList:[],defaults:[],cascadeRoot:e};const r=e,o=[],a=[];return t&&!n?(o.push(e),a.push(void 0)):r.forEach(e=>{if(Array.isArray(e))o.push(e),a.push(void 0);else if(isColumnWithOptions(e)){const t=e;o.push(t.options??[]),a.push(t.defaultValue)}}),{type:"multiple",columnsList:o,defaults:a}};export const normalizePicker=(e,t=[])=>{const n=Array.isArray(t)?t:[];return"cascade"===e.type&&e.cascadeRoot?.length?normalizeCascade(e.cascadeRoot,n):normalizeMultiple(e.columnsList,e.defaults,n)};const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:a})=>{const l=a(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},l)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,a=clamp(e,o,0);let l=Math.round(-a/t);l=adjustIndex(l,r);return{index:l,snapOffset:indexToOffset(l,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const a=Math.abs(e/t),l=clamp(n+a/.0025*(e<0?-1:1),o,0),i=Math.round(-l/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:a,itemHeight:l,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*l,g=e.length,y=Math.max(0,g-1),R=-y*l,E=l*(2*i+1),v=clamp(t,0,y),x=findEnabledIndex(e,v),k=x>=0?x:v,C=2*i+1,w=g>20*C?32:m,I=g>4*C,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:l,top:l*i}],[l,i]),P=useRef(null),A=useRef(!1),M=useRef(0),O=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),D=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:a}=offsetToIndex(-t,l,g,e),i=-a;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,l,n,c,g]);useEffect(()=>{const e=k*l;f||h.current?.scrollTo({y:e,animated:!1})},[f,l,k]);const[H,z]=useState(()=>indexToOffset(k,l)),L=useRef(H),F=useRef(0),j=useRef(0),[_,q]=useState(0),[G,N]=useState(0),$=useRef(0),B=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{O(),oe(),re()},[O,oe,re]);const ae=useCallback(e=>{const t=getVelocityBucket(e);t!==$.current&&($.current=t,N(t))},[]),le=useCallback(e=>{const t=Date.now(),n=B.current;if(null!=n){const r=Math.max(1,t-n);ae(e/r)}B.current=t},[ae]);useEffect(()=>{if(!f)return;oe(),K.current=null,q(0);const e=indexToOffset(k,l);L.current=e,z(e)},[oe,f,l,k,q]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),q(0),ne(),n(e))},[oe,n,c,q]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,l);oe(),K.current=t,L.current=n,q(d),z(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,l,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;le(t);const n=t>0?1:-1,{index:r}=offsetToIndex(L.current,l,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,l,y,c,ce,g,le]),ue=clamp(Math.round(-H/l),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*C,8),r=2===G?4*C:1===G?2*C:0,o=Math.min(e+r,Math.max(6*C,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:l,active:o===k,disabled:!!t.disabled,renderItem:a}))}const o=t*l,i=(y-n)*l;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,l,y,a,k,g,C,ue,G,I]),de=useMemo(()=>({transform:[{translateY:H}]}),[H]),fe=useMemo(()=>_?{transitionProperty:"transform",transitionDuration:_+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[_]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),q(0),F.current=L.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;ae(t.vy);const n=clamp(F.current+t.dy,R,0);L.current=n,"undefined"!=typeof requestAnimationFrame?null==U.current&&(U.current=requestAnimationFrame(()=>{U.current=null,z(L.current)})):z(n)},onPanResponderRelease:(t,n)=>{if(c)return;ae(0);const r=Date.now()-j.current,o=n.dy;let a=clamp(F.current+o,R,0);shouldMomentum(o,r)&&(a=momentumTarget(o,r,F.current,l,R));const{index:i}=offsetToIndex(a,l,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),q(0)}}),[e,l,R,ne,te,c,ae,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{M.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{A.current=!1,O(),te()},[O,te]),ve=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;M.current=t,O(),P.current=setTimeout(()=>{A.current||(D(M.current,!0),ne())},80)},[O,D,ne,c]),xe=useCallback(()=>{A.current=!0,O(),te()},[O,te]),ke=useCallback(e=>{A.current=!1,O();const t=e.nativeEvent.contentOffset.y;M.current=t,D(t,!1),ne()},[O,D,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:w,decelerationRate:u,snapToInterval:l,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ve,onMomentumScrollBegin:xe,onMomentumScrollEnd:ke,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:l,active:t===k,disabled:!!e.disabled,renderItem:a}))))},WheelPicker=React.memo(WheelPickerInner);export function usePickerValue({columns:e,valueProp:t,defaultValue:n,emitConfirmOnAutoSelect:r=!0,onChange:o,onConfirm:a}){const l=useMemo(()=>prepareColumns(e),[e]),i=void 0!==t,c=useRef(o),s=useRef(a);c.current=o,s.current=a;const[u,m]=useState(()=>normalizePicker(l,toArrayValue(t??n)).values),d=useRef(u);d.current=u;const f=useCallback(e=>{d.current=e,m(e)},[]);useEffect(()=>{if(!i)return;const e=toArrayValue(t);shallowEqualArray(d.current,e)||f(e)},[f,i,t]);const p=useMemo(()=>normalizePicker(l,u),[l,u]);useEffect(()=>{i||shallowEqualArray(u,p.values)||(f(p.values),c.current?.(p.values,p.options),r&&s.current?.(p.values,p.options))},[f,r,u,i,p]);const h=useCallback((e,t)=>{const n=[...d.current];n[t]=e.value,"cascade"===l.type&&(n.length=t+1);const r=normalizePicker(l,n);shallowEqualArray(d.current,r.values)||(f(r.values),c.current?.(r.values,r.options))},[f,l]),b=useCallback(()=>{s.current?.(p.values,p.options)},[p]);return{preparedColumns:l,normalized:p,handleSelect:h,handleConfirm:b}}const getVisibleCount=e=>{const t=isFiniteNumber(e)?Math.max(3,Math.floor(e)):5;return t%2==0?t+1:t},GRADIENT_OVERLAY_ALPHA=.25,GRADIENT_STEPS=[.95,.75,.55,.35],GRADIENT_STEPS_REVERSED=[.35,.55,.75,.95],GradientMask=({height:e,color:t,position:n,maskType:r})=>{const o=[S.gMask,{height:e},"top"===n?{top:0}:{bottom:0}],a=withAlpha(t,.25);if("solid"===r)return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:withAlpha(t,.9)}]});if("web"===Platform.OS){const e="top"===n?"180deg":"0deg";return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a,backgroundImage:`linear-gradient(${e}, ${withAlpha(t,.98)}, ${withAlpha(t,.4)})`}]})}return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a}]},("top"===n?GRADIENT_STEPS:GRADIENT_STEPS_REVERSED).map((e,n)=>React.createElement(View,{key:n,style:{flex:1,backgroundColor:withAlpha(t,e)}})))},PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:a,optionRender:l,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((a-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:v}=u.colors,x={fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight},k=useCallback((e,n,r)=>{const{active:a=!1,disabled:s=!1}=r??{},u=s?E:a?R:v,m=l?l(e,{columnIndex:t,active:a}):e.label??e.value,d=i?.(e,{columnIndex:t,active:a}),f=c?.(e,{columnIndex:t,active:a});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,v,t,c,i,o,x,l]);return React.createElement(View,{style:[W.column,{height:o*a}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:k}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:a,defaultValue:l,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,emitConfirmOnAutoSelect:C=!0,maskColor:w,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:A,testID:M,...O}=e,W=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:D,handleSelect:H,handleConfirm:z,preparedColumns:L}=usePickerValue({columns:o,valueProp:a,defaultValue:l,emitConfirmOnAutoSelect:C,onChange:T,onConfirm:V}),F="cascade"===L.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},_=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),q=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},_(m,r.colors.cancel)),null==(G=i)?React.createElement(View,null):React.isValidElement(G)?React.createElement(View,{style:S.ttlW},G):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},G),React.createElement(Pressable,{onPress:z,accessibilityRole:"button"},_(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var G;const N=d*W,$=Math.max(1,Math.floor((W-1)/2)),B=d*$,Y=B,J=D.columns.length>0,K=w??r.colors.mask,Q=J?D.columns.map((e,t)=>{const n=F?`${t}-${D.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:D.values[t],itemHeight:d,visibleItemCount:W,decelerationRate:b,scrollEventThrottle:y,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,readOnly:h,swipeDuration:g,onSelect:H,tokens:r})}):null;return React.createElement(View,_extends({},O,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},A],testID:M}),"top"===s&&q,React.createElement(View,{style:[S.body,{height:N}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:B,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&q)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},gMask:{position:"absolute",left:0,right:0,zIndex:2},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{withAlpha}from"../../utils/color";import{isFiniteNumber,isText}from"../../utils/validate";import{clamp,isObject,shallowEqualArray}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";export const toArrayValue=e=>Array.isArray(e)?e.filter(e=>null!=e):null==e?[]:[e];const isColumnWithOptions=e=>!!e&&isObject(e)&&"options"in e&&Array.isArray(e.options),hasChildren=e=>!!e&&isObject(e)&&Array.isArray(e.children)&&e.children.length>0;export const findEnabledIndex=(e,t)=>{if(!e.length)return-1;const n=Math.min(Math.max(t,0),e.length-1);if(!e[n]?.disabled)return n;for(let t=n+1;t<e.length;t+=1)if(!e[t]?.disabled)return t;for(let t=n-1;t>=0;t-=1)if(!e[t]?.disabled)return t;return-1};const normalizeMultiple=(e,t,n)=>{const r=[],o=[];return e.forEach((e,a)=>{const l=n[a],i=void 0!==t[a]?e.findIndex(e=>e.value===t[a]):-1,c=e.findIndex(e=>e.value===l),s=findEnabledIndex(e,c>=0?c:i>=0?i:0),u=s>=0?e[s]:void 0,m=c>=0&&!e[c]?.disabled;r[a]=m?l:u?.value??t[a]??e[0]?.value,o[a]=u}),{columns:e,values:r,options:o}},normalizeCascade=(e,t)=>{const n=[],r=[],o=[];let a=e,l=0;for(;a&&a.length&&l<10;){n.push(a);const e=t[l],i=a.findIndex(t=>t.value===e||String(t.value)===String(e)),c=findEnabledIndex(a,i>=0?i:0),s=c>=0?a[c]:a[0];if(r[l]=s?.value,o[l]=s,!s||!hasChildren(s))break;a=s.children,l+=1}return{columns:n,values:r,options:o}};export const prepareColumns=(e=[])=>{if(!Array.isArray(e)||0===e.length)return{type:"single",columnsList:[],defaults:[],cascadeRoot:[]};const t=e.every(e=>!Array.isArray(e)&&!isColumnWithOptions(e)),n=t&&e.some(e=>hasChildren(e));if(n)return{type:"cascade",columnsList:[],defaults:[],cascadeRoot:e};const r=e,o=[],a=[];return t&&!n?(o.push(e),a.push(void 0)):r.forEach(e=>{if(Array.isArray(e))o.push(e),a.push(void 0);else if(isColumnWithOptions(e)){const t=e;o.push(t.options??[]),a.push(t.defaultValue)}}),{type:"multiple",columnsList:o,defaults:a}};export const normalizePicker=(e,t=[])=>{const n=Array.isArray(t)?t:[];return"cascade"===e.type&&e.cascadeRoot?.length?normalizeCascade(e.cascadeRoot,n):normalizeMultiple(e.columnsList,e.defaults,n)};const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:a})=>{const l=a(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},l)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,a=clamp(e,o,0);let l=Math.round(-a/t);l=adjustIndex(l,r);return{index:l,snapOffset:indexToOffset(l,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const a=Math.abs(e/t),l=clamp(n+a/.0025*(e<0?-1:1),o,0),i=Math.round(-l/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:a,itemHeight:l,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*l,g=e.length,y=Math.max(0,g-1),R=-y*l,E=l*(2*i+1),v=clamp(t,0,y),x=findEnabledIndex(e,v),k=x>=0?x:v,C=2*i+1,w=g>20*C?32:m,I=g>4*C,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:l,top:l*i}],[l,i]),P=useRef(null),A=useRef(!1),M=useRef(0),O=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),D=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:a}=offsetToIndex(-t,l,g,e),i=-a;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,l,n,c,g]);useEffect(()=>{const e=k*l;f||h.current?.scrollTo({y:e,animated:!1})},[f,l,k]);const[H,z]=useState(()=>indexToOffset(k,l)),L=useRef(H),F=useRef(0),j=useRef(0),[_,q]=useState(0),[G,N]=useState(0),$=useRef(0),B=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{O(),oe(),re()},[O,oe,re]);const ae=useCallback(e=>{const t=getVelocityBucket(e);t!==$.current&&($.current=t,N(t))},[]),le=useCallback(e=>{const t=Date.now(),n=B.current;if(null!=n){const r=Math.max(1,t-n);ae(e/r)}B.current=t},[ae]);useEffect(()=>{if(!f)return;oe(),K.current=null,q(0);const e=indexToOffset(k,l);L.current=e,z(e)},[oe,f,l,k,q]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),q(0),ne(),n(e))},[oe,n,c,q]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,l);oe(),K.current=t,L.current=n,q(d),z(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,l,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;le(t);const n=t>0?1:-1,{index:r}=offsetToIndex(L.current,l,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,l,y,c,ce,g,le]),ue=clamp(Math.round(-H/l),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*C,8),r=2===G?4*C:1===G?2*C:0,o=Math.min(e+r,Math.max(6*C,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:l,active:o===k,disabled:!!t.disabled,renderItem:a}))}const o=t*l,i=(y-n)*l;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,l,y,a,k,g,C,ue,G,I]),de=useMemo(()=>({transform:[{translateY:H}]}),[H]),fe=useMemo(()=>_?{transitionProperty:"transform",transitionDuration:_+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[_]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),q(0),F.current=L.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;ae(t.vy);const n=clamp(F.current+t.dy,R,0);L.current=n,"undefined"==typeof requestAnimationFrame?z(n):null!=U.current||(U.current=requestAnimationFrame(()=>{U.current=null,z(L.current)}))},onPanResponderRelease:(t,n)=>{if(c)return;ae(0);const r=Date.now()-j.current,o=n.dy;let a=clamp(F.current+o,R,0);shouldMomentum(o,r)&&(a=momentumTarget(o,r,F.current,l,R));const{index:i}=offsetToIndex(a,l,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),q(0)}}),[e,l,R,ne,te,c,ae,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{M.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{A.current=!1,O(),te()},[O,te]),ve=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;M.current=t,O(),P.current=setTimeout(()=>{A.current||(D(M.current,!0),ne())},80)},[O,D,ne,c]),xe=useCallback(()=>{A.current=!0,O(),te()},[O,te]),ke=useCallback(e=>{A.current=!1,O();const t=e.nativeEvent.contentOffset.y;M.current=t,D(t,!1),ne()},[O,D,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:w,decelerationRate:u,snapToInterval:l,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ve,onMomentumScrollBegin:xe,onMomentumScrollEnd:ke,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:l,active:t===k,disabled:!!e.disabled,renderItem:a}))))},WheelPicker=React.memo(WheelPickerInner);export function usePickerValue({columns:e,valueProp:t,defaultValue:n,emitConfirmOnAutoSelect:r=!0,onChange:o,onConfirm:a}){const l=useMemo(()=>prepareColumns(e),[e]),i=void 0!==t,c=useRef(o),s=useRef(a);c.current=o,s.current=a;const[u,m]=useState(()=>normalizePicker(l,toArrayValue(t??n)).values),d=useRef(u);d.current=u;const f=useCallback(e=>{d.current=e,m(e)},[]);useEffect(()=>{if(!i)return;const e=toArrayValue(t);shallowEqualArray(d.current,e)||f(e)},[f,i,t]);const p=useMemo(()=>normalizePicker(l,u),[l,u]);useEffect(()=>{i||shallowEqualArray(u,p.values)||(f(p.values),c.current?.(p.values,p.options),r&&s.current?.(p.values,p.options))},[f,r,u,i,p]);const h=useCallback((e,t)=>{const n=[...d.current];n[t]=e.value,"cascade"===l.type&&(n.length=t+1);const r=normalizePicker(l,n);shallowEqualArray(d.current,r.values)||(f(r.values),c.current?.(r.values,r.options))},[f,l]),b=useCallback(()=>{s.current?.(p.values,p.options)},[p]);return{preparedColumns:l,normalized:p,handleSelect:h,handleConfirm:b}}const getVisibleCount=e=>{const t=isFiniteNumber(e)?Math.max(3,Math.floor(e)):5;return t%2==0?t+1:t},GRADIENT_OVERLAY_ALPHA=.25,GRADIENT_STEPS=[.95,.75,.55,.35],GRADIENT_STEPS_REVERSED=[.35,.55,.75,.95],GradientMask=({height:e,color:t,position:n,maskType:r})=>{const o=[S.gMask,{height:e},"top"===n?{top:0}:{bottom:0}],a=withAlpha(t,.25);if("solid"===r)return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:withAlpha(t,.9)}]});if("web"===Platform.OS){const e="top"===n?"180deg":"0deg";return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a,backgroundImage:`linear-gradient(${e}, ${withAlpha(t,.98)}, ${withAlpha(t,.4)})`}]})}return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a}]},("top"===n?GRADIENT_STEPS:GRADIENT_STEPS_REVERSED).map((e,n)=>React.createElement(View,{key:n,style:{flex:1,backgroundColor:withAlpha(t,e)}})))},PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:a,optionRender:l,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((a-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:v}=u.colors,x={fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight},k=useCallback((e,n,r)=>{const{active:a=!1,disabled:s=!1}=r??{},u=s?E:a?R:v,m=l?l(e,{columnIndex:t,active:a}):e.label??e.value,d=i?.(e,{columnIndex:t,active:a}),f=c?.(e,{columnIndex:t,active:a});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,v,t,c,i,o,x,l]);return React.createElement(View,{style:[W.column,{height:o*a}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:k}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:a,defaultValue:l,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,emitConfirmOnAutoSelect:C=!0,maskColor:w,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:A,testID:M,...O}=e,W=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:D,handleSelect:H,handleConfirm:z,preparedColumns:L}=usePickerValue({columns:o,valueProp:a,defaultValue:l,emitConfirmOnAutoSelect:C,onChange:T,onConfirm:V}),F="cascade"===L.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},_=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),q=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},_(m,r.colors.cancel)),null==(G=i)?React.createElement(View,null):React.isValidElement(G)?React.createElement(View,{style:S.ttlW},G):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},G),React.createElement(Pressable,{onPress:z,accessibilityRole:"button"},_(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var G;const N=d*W,$=Math.max(1,Math.floor((W-1)/2)),B=d*$,Y=B,J=D.columns.length>0,K=w??r.colors.mask,Q=J?D.columns.map((e,t)=>{const n=F?`${t}-${D.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:D.values[t],itemHeight:d,visibleItemCount:W,decelerationRate:b,scrollEventThrottle:y,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,readOnly:h,swipeDuration:g,onSelect:H,tokens:r})}):null;return React.createElement(View,_extends({},O,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},A],testID:M}),"top"===s&&q,React.createElement(View,{style:[S.body,{height:N}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:B,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&q)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},gMask:{position:"absolute",left:0,right:0,zIndex:2},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createPickerTokens=e=>{const{palette:t,spacing:o,fontSize:i,typography:a,radii:n}=e;return{defaults:{itemHeight:44,visibleItemCount:5,showToolbar:!0,toolbarPosition:"top",swipeDuration:700,maskType:"gradient"},colors:{background:"#ffffff",indicator:t.default[200]??"#ebedf0",text:t.default[900],textMuted:t.default[900],textDisabled:t.default[400],confirm:t.primary[600],cancel:t.default[600],mask:"#ffffff",loadingMask:"rgba(255,255,255,0.65)"},spacing:{toolbarHeight:44,actionPadding:o.lg},typography:{optionSize:i.md,toolbarSize:i.md,fontFamily:a.fontFamily,optionWeight:a.weight.regular,toolbarWeight:a.weight.medium},radius:{toolbar:n.none,container:n.xs}}};export const usePickerTokens=createComponentTokensHook("picker",createPickerTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createPickerTokens=e=>{const{palette:t,spacing:o,fontSize:a,typography:i,radii:n}=e,r=e.surface??"#ffffff";return{defaults:{itemHeight:44,visibleItemCount:5,showToolbar:!0,toolbarPosition:"top",swipeDuration:700,maskType:"gradient"},colors:{background:r,indicator:t.default[200]??"#ebedf0",text:t.default[900],textMuted:t.default[900],textDisabled:t.default[400],confirm:t.primary[600],cancel:t.default[600],mask:r,loadingMask:"rgba(255,255,255,0.65)"},spacing:{toolbarHeight:44,actionPadding:o.lg},typography:{optionSize:a.md,toolbarSize:a.md,fontFamily:i.fontFamily,optionWeight:i.weight.regular,toolbarWeight:i.weight.medium},radius:{toolbar:n.none,container:n.xs}}};export const usePickerTokens=createComponentTokensHook("picker",createPickerTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Platform,Pressable,StyleSheet,Text,View,useWindowDimensions}from"react-native";import{SafeAreaView}from"../safe-area-view";import{addPopStateListener,nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{isRenderable,isText}from"../../utils/validate";import{Cross}from"react-native-system-icon";import Portal from"../portal/Portal";import{useAriaOverlay,useOverlayStack}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{usePopupTokens}from"./tokens";const AnimatedPressable=Animated.createAnimatedComponent(Pressable),EASE_OUT=Easing.bezier(.075,.82,.165,1),EASE_IN=Easing.bezier(.55,.055,.675,.19),CAPTURE=()=>!0,placementConfig={top:{container:{justifyContent:"flex-start",alignItems:"center"},axis:"y"},bottom:{container:{justifyContent:"flex-end",alignItems:"center"},axis:"y"},left:{container:{justifyContent:"center",alignItems:"flex-start"},axis:"x"},right:{container:{justifyContent:"center",alignItems:"flex-end"},axis:"x"},center:{container:{justifyContent:"center",alignItems:"center"},axis:"y"}},buildRadius=(e,t,o)=>{if(e)return"top"===t?{borderBottomLeftRadius:o,borderBottomRightRadius:o}:"bottom"===t?{borderTopLeftRadius:o,borderTopRightRadius:o}:"left"===t?{borderTopRightRadius:o,borderBottomRightRadius:o}:"right"===t?{borderTopLeftRadius:o,borderBottomLeftRadius:o}:{borderRadius:o}},hiddenStyle={opacity:0,shadowOpacity:0,shadowRadius:0,elevation:0},PopupImpl=e=>{const t=useLocale(),o=useDirection(),{visible:n,placement:i,position:r,title:a,description:s,tokensOverride:l,overlay:c=!0,overlayStyle:u,overlayAccessibilityLabel:d=t?.vanPopup?.closeOverlay??"Close overlay",closeOnOverlayPress:p,closeOnClickOverlay:m,overlayTestID:f="popup-overlay",closeable:g=!1,closeIcon:y,closeIconPosition:R="top-right",round:b,safeArea:h=!1,safeAreaInsetTop:v=!1,safeAreaInsetBottom:C,lockScroll:E=!0,destroyOnClose:I=!0,duration:P=300,zIndex:O,closeOnBackPress:x=!1,closeOnPopstate:A=!1,children:w,beforeClose:k,onClickOverlay:T,onClose:z,onOpen:W,onOpened:L,onClosed:V,stopPropagation:B=!0,style:D,contentAnimationStyle:H,...M}=e,j=i??r??"center",F=m??p??!0,_="center"===j,U=C??!1,N=usePopupTokens(l),X=useReducedMotion(),Y=useRef({onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:k,onClickOverlay:T});Y.current={onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:k,onClickOverlay:T};const q=useMemo(()=>{const e=createPlatformShadow(N.shadow),{colors:t,spacing:o,typography:n,layout:i}=N;return{popup:{backgroundColor:t.background,padding:o.padding,...e},title:{color:t.title,fontFamily:n.fontFamily,fontSize:n.titleSize,fontWeight:n.titleWeight,marginHorizontal:o.descriptionHorizontal,textAlign:"center"},titleWrap:{marginTop:o.titleTop,marginBottom:o.titleBottom,marginHorizontal:o.descriptionHorizontal,alignItems:"center"},desc:{color:t.description,fontFamily:n.fontFamily,fontSize:n.descriptionSize,lineHeight:n.descriptionLineHeight},descWrap:{marginHorizontal:o.descriptionHorizontal,marginBottom:o.descriptionBottom},closeBase:{minWidth:o.closeIconSize,minHeight:o.closeIconSize,padding:o.closeIconPadding},closeDef:{width:o.closeIconSize,height:o.closeIconSize},side:{width:i.sideWidth,maxWidth:i.maxWidth},center:{minWidth:i.minWidth,maxWidth:i.centerMaxWidth}}},[N]),[G,J]=useState(n),[K,Q]=useState(n),Z=n||K,$=F&&(z||k),ee=useRef(new Animated.Value(0)).current,te=useRef(null),oe=useRef(0),ne=useRef(n),ie=useRef(!1),re="top"===j||"bottom"===j,ae="left"===j||"right"===j,se="top"===j||"left"===j?-1:1,le=useCallback((e,t)=>{oe.current+=1;const o=oe.current;te.current?.stop();const n=t?0:P,i=Animated.timing(ee,{toValue:e?1:0,duration:n,easing:e?EASE_OUT:EASE_IN,useNativeDriver:nativeDriverEnabled,isInteraction:!1});te.current=i,i.start(({finished:t})=>{t&&o===oe.current&&(e?Y.current.onOpened?.():(Q(!1),I&&J(!1),Y.current.onClosed?.()))})},[I,P,ee]);useEffect(()=>{n?(J(!0),Q(!0),le(!0,X)):ne.current&&le(!1,X)},[le,n,X]),useEffect(()=>{n&&!ne.current&&Y.current.onOpen?.(),ne.current=n},[n]),useEffect(()=>()=>{te.current?.stop()},[]);const ce=useCallback(async e=>{if(!ie.current){ie.current=!0;try{if(Y.current.beforeClose){if(!1===await Y.current.beforeClose(e))return}Y.current.onClose?.()}finally{ie.current=!1}}},[]);useEffect(()=>{if(A)return addPopStateListener(()=>{n&&ce("close")})},[A,ce,n]);const ue=useCallback(()=>{Y.current.onClickOverlay?.(),F&&ce("overlay")},[ce,F]),de=useCallback(()=>ce("close-icon"),[ce]),pe=useCallback(()=>ce("close"),[ce]),{zIndex:me}=useOverlayStack({visible:Z,onClose:pe,closeOnBack:x,lockScroll:E,zIndex:O,type:"popup"}),{overlayRef:fe,overlayProps:ge}=useAriaOverlay({isOpen:Z,onClose:()=>ce("overlay"),isDismissable:F,overlayProps:{..."android"===Platform.OS?{}:{accessibilityRole:"dialog"},accessibilityLiveRegion:"polite"}}),{onLayout:ye,...Re}=ge,be=useMemo(()=>B?{...Re,onStartShouldSetResponder:CAPTURE}:Re,[Re,B]),he=placementConfig[j],Se=buildRadius(b,j,N.radius.round),{width:ve,height:Ce}=useWindowDimensions(),Ee=ae?ve:re?Ce:0,Ie=useMemo(()=>{if(_)return null;const e=[Ee*se,0];return"y"===he.axis?{translateY:ee.interpolate({inputRange:[0,1],outputRange:e})}:{translateX:ee.interpolate({inputRange:[0,1],outputRange:e})}},[he.axis,se,Ee,_,ee]),Pe=useMemo(()=>Ie?[Ie]:[],[Ie]),Oe=useMemo(()=>{const e=H?.transform,t=Array.isArray(e)?[...Pe,...e]:Pe,o={...H,transform:t};return _?{...o,opacity:ee}:null==H?.opacity?{...o,opacity:1}:o},[Pe,H,_,ee]),[xe,Ae]=useState(0),we=useCallback(e=>Ae(e.nativeEvent.layout.height),[]),ke=G||n,Te=!Z,ze=isRenderable(a)||isRenderable(s),We=useMemo(()=>{if(!ze)return null;const e=N.spacing.closeIconRight+N.spacing.closeIconSize,t=g&&R.startsWith("top-")?R.endsWith("right")?{paddingRight:e}:{paddingLeft:e}:void 0,o=(e,t,o)=>isRenderable(e)?isText(e)?React.createElement(Text,{style:t},e):React.createElement(View,{style:o},e):null;return React.createElement(View,{style:[S.header,t]},o(a,[S.title,q.title],q.titleWrap),o(s,[S.desc,q.desc],q.descWrap))},[g,R,s,q,ze,a,N.spacing.closeIconRight,N.spacing.closeIconSize]),Le=useMemo(()=>{if(!g)return null;const e=null!=y,t=R.includes("bottom")?{bottom:N.spacing.closeIconTop}:{top:N.spacing.closeIconTop+xe},n="rtl"===o,i=R.endsWith("left")?n?{right:N.spacing.closeIconRight}:{left:N.spacing.closeIconRight}:n?{left:N.spacing.closeIconRight}:{right:N.spacing.closeIconRight};return React.createElement(Pressable,{style:[S.closeBase,q.closeBase,t,i,!e&&q.closeDef],hitSlop:8,onPress:de},e?y:React.createElement(Cross,{size:22,fill:N.colors.closeIcon,color:N.colors.closeIcon}))},[y,R,g,q,de,xe,N.colors.closeIcon,N.spacing.closeIconRight,N.spacing.closeIconTop]),Ve=ze?React.createElement(React.Fragment,null,We,w):w;if(!ke)return null;const Be=me??O,De=h?React.createElement(SafeAreaView,null,Ve):React.createElement(React.Fragment,null,v&&React.createElement(SafeAreaView,{edge:"top",onLayout:we,pointerEvents:"none"}),Ve,U&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}));return React.createElement(Portal,null,React.createElement(View,{style:[S.root,Be?{zIndex:Be}:void 0],pointerEvents:"box-none"},React.createElement(View,{style:[S.ctr,he.container],pointerEvents:Z?"auto":"none",accessibilityViewIsModal:Z,accessibilityLiveRegion:"polite",onAccessibilityEscape:pe},c&&Z?React.createElement(AnimatedPressable,_extends({testID:f,style:[S.ovl,{backgroundColor:N.colors.overlay,opacity:ee},u],renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,pointerEvents:Z?"auto":"none"},$?{accessibilityRole:"button",accessibilityLabel:d,accessibilityHint:t?.vanPopup?.closeHint??"Double-tap to close"}:{accessible:!1},{onPress:ue})):null,!c&&E&&Z?React.createElement(View,{style:S.lock,pointerEvents:"auto",onStartShouldSetResponder:CAPTURE,onMoveShouldSetResponder:CAPTURE}):null,React.createElement(Animated.View,_extends({ref:fe},be,{onLayout:ye,renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,style:[q.popup,_&&q.center,re&&S.popV,ae&&q.side,Se,Oe,D,Te&&hiddenStyle]},M),Le,De))))},S=StyleSheet.create({root:{...StyleSheet.absoluteFillObject,justifyContent:"center"},ctr:{flex:1},ovl:{...StyleSheet.absoluteFillObject,opacity:0},header:{width:"100%"},title:{includeFontPadding:!1},desc:{includeFontPadding:!1},popV:{alignSelf:"stretch"},closeBase:{position:"absolute",zIndex:999,alignItems:"center",justifyContent:"center"},lock:{...StyleSheet.absoluteFillObject}});export const Popup=React.memo(PopupImpl);export default Popup;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Platform,Pressable,StyleSheet,Text,View,useWindowDimensions}from"react-native";import{SafeAreaView}from"../safe-area-view";import{addPopStateListener,nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{isRenderable,isText}from"../../utils/validate";import{Cross}from"react-native-system-icon";import Portal from"../portal/Portal";import{useAriaOverlay,useOverlayStack}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{usePopupTokens}from"./tokens";const AnimatedPressable=Animated.createAnimatedComponent(Pressable),EASE_OUT=Easing.bezier(.075,.82,.165,1),EASE_IN=Easing.bezier(.55,.055,.675,.19),CAPTURE=()=>!0,placementConfig={top:{container:{justifyContent:"flex-start",alignItems:"center"},axis:"y"},bottom:{container:{justifyContent:"flex-end",alignItems:"center"},axis:"y"},left:{container:{justifyContent:"center",alignItems:"flex-start"},axis:"x"},right:{container:{justifyContent:"center",alignItems:"flex-end"},axis:"x"},center:{container:{justifyContent:"center",alignItems:"center"},axis:"y"}},buildRadius=(e,t,o)=>e?"top"===t?{borderBottomLeftRadius:o,borderBottomRightRadius:o}:"bottom"===t?{borderTopLeftRadius:o,borderTopRightRadius:o}:"left"===t?{borderTopRightRadius:o,borderBottomRightRadius:o}:"right"===t?{borderTopLeftRadius:o,borderBottomLeftRadius:o}:{borderRadius:o}:void 0,hiddenStyle={opacity:0,shadowOpacity:0,shadowRadius:0,elevation:0},PopupImpl=e=>{const t=useLocale(),o=useDirection(),{visible:n,placement:i,position:r,title:a,description:s,tokensOverride:l,overlay:c=!0,overlayStyle:u,overlayAccessibilityLabel:d=t?.vanPopup?.closeOverlay??"Close overlay",closeOnOverlayPress:p,closeOnClickOverlay:m,overlayTestID:f="popup-overlay",closeable:g=!1,closeIcon:y,closeIconPosition:R="top-right",round:b,safeArea:h=!1,safeAreaInsetTop:v=!1,safeAreaInsetBottom:C,lockScroll:E=!0,destroyOnClose:I=!0,duration:P=300,zIndex:O,closeOnBackPress:x=!1,closeOnPopstate:A=!1,children:w,beforeClose:k,onClickOverlay:T,onClose:z,onOpen:W,onOpened:L,onClosed:V,stopPropagation:B=!0,style:D,contentAnimationStyle:H,...M}=e,j=i??r??"center",F=m??p??!0,_="center"===j,U=C??!1,N=usePopupTokens(l),X=useReducedMotion(),Y=useRef({onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:k,onClickOverlay:T});Y.current={onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:k,onClickOverlay:T};const q=useMemo(()=>{const e=createPlatformShadow(N.shadow),{colors:t,spacing:o,typography:n,layout:i}=N;return{popup:{backgroundColor:t.background,padding:o.padding,...e},title:{color:t.title,fontFamily:n.fontFamily,fontSize:n.titleSize,fontWeight:n.titleWeight,marginHorizontal:o.descriptionHorizontal,textAlign:"center"},titleWrap:{marginTop:o.titleTop,marginBottom:o.titleBottom,marginHorizontal:o.descriptionHorizontal,alignItems:"center"},desc:{color:t.description,fontFamily:n.fontFamily,fontSize:n.descriptionSize,lineHeight:n.descriptionLineHeight},descWrap:{marginHorizontal:o.descriptionHorizontal,marginBottom:o.descriptionBottom},closeBase:{minWidth:o.closeIconSize,minHeight:o.closeIconSize,padding:o.closeIconPadding},closeDef:{width:o.closeIconSize,height:o.closeIconSize},side:{width:i.sideWidth,maxWidth:i.maxWidth},center:{minWidth:i.minWidth,maxWidth:i.centerMaxWidth}}},[N]),[G,J]=useState(n),[K,Q]=useState(n),Z=n||K,$=F&&(z||k),ee=useRef(new Animated.Value(0)).current,te=useRef(null),oe=useRef(0),ne=useRef(n),ie=useRef(!1),re="top"===j||"bottom"===j,ae="left"===j||"right"===j,se="top"===j||"left"===j?-1:1,le=useCallback((e,t)=>{oe.current+=1;const o=oe.current;te.current?.stop();const n=t?0:P,i=Animated.timing(ee,{toValue:e?1:0,duration:n,easing:e?EASE_OUT:EASE_IN,useNativeDriver:nativeDriverEnabled,isInteraction:!1});te.current=i,i.start(({finished:t})=>{t&&o===oe.current&&(e?Y.current.onOpened?.():(Q(!1),I&&J(!1),Y.current.onClosed?.()))})},[I,P,ee]);useEffect(()=>{n?(J(!0),Q(!0),le(!0,X)):ne.current&&le(!1,X)},[le,n,X]),useEffect(()=>{n&&!ne.current&&Y.current.onOpen?.(),ne.current=n},[n]),useEffect(()=>()=>{te.current?.stop()},[]);const ce=useCallback(async e=>{if(!ie.current){ie.current=!0;try{if(Y.current.beforeClose){if(!1===await Y.current.beforeClose(e))return}Y.current.onClose?.()}finally{ie.current=!1}}},[]);useEffect(()=>{if(A)return addPopStateListener(()=>{n&&ce("close")})},[A,ce,n]);const ue=useCallback(()=>{Y.current.onClickOverlay?.(),F&&ce("overlay")},[ce,F]),de=useCallback(()=>ce("close-icon"),[ce]),pe=useCallback(()=>ce("close"),[ce]),{zIndex:me}=useOverlayStack({visible:Z,onClose:pe,closeOnBack:x,lockScroll:E,zIndex:O,type:"popup"}),{overlayRef:fe,overlayProps:ge}=useAriaOverlay({isOpen:Z,onClose:()=>ce("overlay"),isDismissable:F,overlayProps:{..."android"===Platform.OS?{}:{accessibilityRole:"dialog"},accessibilityLiveRegion:"polite"}}),{onLayout:ye,...Re}=ge,be=useMemo(()=>B?{...Re,onStartShouldSetResponder:CAPTURE}:Re,[Re,B]),he=placementConfig[j],Se=buildRadius(b,j,N.radius.round),{width:ve,height:Ce}=useWindowDimensions(),Ee=ae?ve:re?Ce:0,Ie=useMemo(()=>{if(_)return null;const e=[Ee*se,0];return"y"===he.axis?{translateY:ee.interpolate({inputRange:[0,1],outputRange:e})}:{translateX:ee.interpolate({inputRange:[0,1],outputRange:e})}},[he.axis,se,Ee,_,ee]),Pe=useMemo(()=>Ie?[Ie]:[],[Ie]),Oe=useMemo(()=>{const e=H?.transform,t=Array.isArray(e)?[...Pe,...e]:Pe,o={...H,transform:t};return _?{...o,opacity:ee}:null==H?.opacity?{...o,opacity:1}:o},[Pe,H,_,ee]),[xe,Ae]=useState(0),we=useCallback(e=>Ae(e.nativeEvent.layout.height),[]),ke=G||n,Te=!Z,ze=isRenderable(a)||isRenderable(s),We=useMemo(()=>{if(!ze)return null;const e=N.spacing.closeIconRight+N.spacing.closeIconSize,t=g&&R.startsWith("top-")?R.endsWith("right")?{paddingRight:e}:{paddingLeft:e}:void 0,o=(e,t,o)=>isRenderable(e)?isText(e)?React.createElement(Text,{style:t},e):React.createElement(View,{style:o},e):null;return React.createElement(View,{style:[S.header,t]},o(a,[S.title,q.title],q.titleWrap),o(s,[S.desc,q.desc],q.descWrap))},[g,R,s,q,ze,a,N.spacing.closeIconRight,N.spacing.closeIconSize]),Le=useMemo(()=>{if(!g)return null;const e=null!=y,t=R.includes("bottom")?{bottom:N.spacing.closeIconTop}:{top:N.spacing.closeIconTop+xe},n="rtl"===o,i=R.endsWith("left")?n?{right:N.spacing.closeIconRight}:{left:N.spacing.closeIconRight}:n?{left:N.spacing.closeIconRight}:{right:N.spacing.closeIconRight};return React.createElement(Pressable,{style:[S.closeBase,q.closeBase,t,i,!e&&q.closeDef],hitSlop:8,onPress:de},e?y:React.createElement(Cross,{size:22,fill:N.colors.closeIcon,color:N.colors.closeIcon}))},[y,R,g,q,de,xe,N.colors.closeIcon,N.spacing.closeIconRight,N.spacing.closeIconTop]),Ve=ze?React.createElement(React.Fragment,null,We,w):w;if(!ke)return null;const Be=me??O,De=h?React.createElement(SafeAreaView,null,Ve):React.createElement(React.Fragment,null,v&&React.createElement(SafeAreaView,{edge:"top",onLayout:we,pointerEvents:"none"}),Ve,U&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}));return React.createElement(Portal,null,React.createElement(View,{style:[S.root,Be?{zIndex:Be}:void 0],pointerEvents:"box-none"},React.createElement(View,{style:[S.ctr,he.container],pointerEvents:Z?"auto":"none",accessibilityViewIsModal:Z,accessibilityLiveRegion:"polite",onAccessibilityEscape:pe},c&&Z?React.createElement(AnimatedPressable,_extends({testID:f,style:[S.ovl,{backgroundColor:N.colors.overlay,opacity:ee},u],renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,pointerEvents:Z?"auto":"none"},$?{accessibilityRole:"button",accessibilityLabel:d,accessibilityHint:t?.vanPopup?.closeHint??"Double-tap to close"}:{accessible:!1},{onPress:ue})):null,!c&&E&&Z?React.createElement(View,{style:S.lock,pointerEvents:"auto",onStartShouldSetResponder:CAPTURE,onMoveShouldSetResponder:CAPTURE}):null,React.createElement(Animated.View,_extends({ref:fe},be,{onLayout:ye,renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,style:[q.popup,_&&q.center,re&&S.popV,ae&&q.side,Se,Oe,D,Te&&hiddenStyle]},M),Le,De))))},S=StyleSheet.create({root:{...StyleSheet.absoluteFillObject,justifyContent:"center"},ctr:{flex:1},ovl:{...StyleSheet.absoluteFillObject,opacity:0},header:{width:"100%"},title:{includeFontPadding:!1},desc:{includeFontPadding:!1},popV:{alignSelf:"stretch"},closeBase:{position:"absolute",zIndex:999,alignItems:"center",justifyContent:"center"},lock:{...StyleSheet.absoluteFillObject}});export const Popup=React.memo(PopupImpl);export default Popup;
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";export const createPopupTokens=o=>{const{palette:e,spacing:t,radii:i,fontSize:n,typography:s}=o;return{colors:{overlay:"rgba(0,0,0,0.5)",background:"#ffffff",title:e.default[900],description:e.default[500],closeIcon:e.default[300]},radius:{round:i.lg,shadow:18},spacing:{padding:t.lg,titleTop:t.xl,titleBottom:t.md,descriptionHorizontal:t.xl,descriptionBottom:t.md,closeIconTop:t.md,closeIconRight:t.md,closeIconSize:36,closeIconPadding:t.ssm},typography:{fontFamily:s.fontFamily,titleSize:n.md,titleWeight:s.weight.medium,descriptionSize:n.sm,descriptionLineHeight:20},shadow:{color:"rgba(0,0,0,0.25)",opacity:.35,radius:18,offsetY:8,elevation:24},layout:{maxWidth:420,minWidth:260,centerMaxWidth:360,sideWidth:"80%"}}};export const usePopupTokens=createComponentTokensHook("popup",createPopupTokens);
1
+ import{createComponentTokensHook}from"../../design-system";export const createPopupTokens=o=>{const{palette:e,spacing:t,radii:i,fontSize:n,typography:s}=o;return{colors:{overlay:"rgba(0,0,0,0.5)",background:o.surface??"#ffffff",title:e.default[900],description:e.default[500],closeIcon:e.default[300]},radius:{round:i.lg,shadow:18},spacing:{padding:t.lg,titleTop:t.xl,titleBottom:t.md,descriptionHorizontal:t.xl,descriptionBottom:t.md,closeIconTop:t.md,closeIconRight:t.md,closeIconSize:36,closeIconPadding:t.ssm},typography:{fontFamily:s.fontFamily,titleSize:n.md,titleWeight:s.weight.medium,descriptionSize:n.sm,descriptionLineHeight:20},shadow:{color:"rgba(0,0,0,0.25)",opacity:.35,radius:18,offsetY:8,elevation:24},layout:{maxWidth:420,minWidth:260,centerMaxWidth:360,sideWidth:"80%"}}};export const usePopupTokens=createComponentTokensHook("popup",createPopupTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";const centered={justifyContent:"center",alignItems:"center"},createRadioTokens=e=>{const{palette:r,spacing:o,fontSize:t,typography:i}=e;return{defaults:{iconSize:20,labelPosition:"right",shape:"round",labelDisabled:!1,groupDisabled:!1,groupDirection:"vertical"},layout:{container:{flexDirection:"row",alignItems:"center"},iconWrapper:centered,labelWrapper:{flexShrink:1},icon:centered,label:{includeFontPadding:!1},groupHorizontal:{flexDirection:"row",flexWrap:"wrap",alignItems:"center"},groupVertical:{flexDirection:"column"},groupItem:{flexShrink:0}},colors:{border:r.default[400],background:"#ffffff",checkedBackground:r.primary[500],disabledBorder:r.default[300],disabledBackground:r.default[100],checkmark:r.primary.foreground??"#ffffff",label:r.default.foreground??"#111827",labelDisabled:r.default[400]},typography:{fontSize:t.md,fontFamily:i.fontFamily,fontWeight:i.weight.medium,lineHeightMultiplier:i.lineHeightMultiplier},sizing:{dotScale:.5},radii:{round:999,square:2},borders:{width:StyleSheet.hairlineWidth},spacing:{gap:o.sm,groupGap:o.sm}}};export const useRadioTokens=createComponentTokensHook("radio",createRadioTokens);
1
+ import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";const centered={justifyContent:"center",alignItems:"center"},createRadioTokens=e=>{const{palette:r,spacing:o,fontSize:t,typography:i}=e,n=e.surface??"#ffffff";return{defaults:{iconSize:20,labelPosition:"right",shape:"round",labelDisabled:!1,groupDisabled:!1,groupDirection:"vertical"},layout:{container:{flexDirection:"row",alignItems:"center"},iconWrapper:centered,labelWrapper:{flexShrink:1},icon:centered,label:{includeFontPadding:!1},groupHorizontal:{flexDirection:"row",flexWrap:"wrap",alignItems:"center"},groupVertical:{flexDirection:"column"},groupItem:{flexShrink:0}},colors:{border:r.default[400],background:n,checkedBackground:r.primary[500],disabledBorder:r.default[300],disabledBackground:r.default[100],checkmark:r.primary.foreground??"#ffffff",label:r.default.foreground??"#111827",labelDisabled:r.default[400]},typography:{fontSize:t.md,fontFamily:i.fontFamily,fontWeight:i.weight.medium,lineHeightMultiplier:i.lineHeightMultiplier},sizing:{dotScale:.5},radii:{round:999,square:2},borders:{width:StyleSheet.hairlineWidth},spacing:{gap:o.sm,groupGap:o.sm}}};export const useRadioTokens=createComponentTokensHook("radio",createRadioTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createSearchTokens=e=>{const{palette:a,spacing:o,radii:n,fontSize:t}=e;return{defaults:{shape:"square",clearTrigger:"focus"},colors:{background:"#ffffff",contentBackground:"#ffffff",label:a.default[600],action:a.primary[500],icon:a.default[400]},spacing:{paddingHorizontal:o.md,paddingVertical:o.sm,labelGap:o.sm,actionGap:o.sm,contentPaddingHorizontal:o.sm,contentPaddingVertical:o.xs,none:o.none},radius:{square:n.md,round:n.pill},typography:{label:t.sm,labelWeight:"500",action:t.sm,actionWeight:"500"},opacity:{actionPressed:.6},icon:{size:t.md}}};export const useSearchTokens=createComponentTokensHook("search",createSearchTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createSearchTokens=e=>{const{palette:a,spacing:o,radii:n,fontSize:t}=e,r=e.surface??"#ffffff";return{defaults:{shape:"square",clearTrigger:"focus"},colors:{background:r,contentBackground:r,label:a.default[600],action:a.primary[500],icon:a.default[400]},spacing:{paddingHorizontal:o.md,paddingVertical:o.sm,labelGap:o.sm,actionGap:o.sm,contentPaddingHorizontal:o.sm,contentPaddingVertical:o.xs,none:o.none},radius:{square:n.md,round:n.pill},typography:{label:t.sm,labelWeight:"500",action:t.sm,actionWeight:"500"},opacity:{actionPressed:.6},icon:{size:t.md}}};export const useSearchTokens=createComponentTokensHook("search",createSearchTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{Platform}from"react-native";import{createComponentTokensHook}from"../../design-system";const createSelectorTokens=({palette:e,spacing:t,radii:o,typography:r,fontSize:i})=>({defaults:{columns:3,multiple:!1,showCheckMark:!0,disabled:!1},layout:{container:{flexDirection:"row",flexWrap:"wrap"},pressable:"web"===Platform.OS?{outlineStyle:"solid",outlineWidth:0}:{},item:{flex:1,borderWidth:0,justifyContent:"center",alignItems:"center",overflow:"hidden"},label:{includeFontPadding:!1,textAlign:"center"},description:{includeFontPadding:!1,textAlign:"center"},checkMark:{position:"absolute",right:1,bottom:1,fontSize:8,includeFontPadding:!1},checkMarkTriangle:{position:"absolute",right:0,bottom:0,width:0,height:0,borderTopColor:"transparent",borderLeftColor:"transparent"}},colors:{border:"transparent",borderActive:"transparent",background:"#ffffff",backgroundActive:e.primary[50],text:e.default[900],textActive:e.primary[600],description:e.default[500],disabledText:e.default[400],check:e.primary[600],checkForeground:e.primary.foreground??"#fff"},typography:{fontSize:i.md,descriptionSize:i.sm,fontFamily:r.fontFamily,fontWeight:r.weight.medium},radii:{item:o.xs},spacing:{gap:t.sm,paddingVertical:t.sm,paddingHorizontal:t.lg,descriptionMarginTop:t.xxs},states:{disabledOpacity:.45}});export const useSelectorTokens=createComponentTokensHook("selector",createSelectorTokens);
1
+ import{Platform}from"react-native";import{createComponentTokensHook}from"../../design-system";const createSelectorTokens=e=>{const{palette:t,spacing:o,radii:r,typography:i,fontSize:n}=e,a=e.surface??"#ffffff";return{defaults:{columns:3,multiple:!1,showCheckMark:!0,disabled:!1},layout:{container:{flexDirection:"row",flexWrap:"wrap"},pressable:"web"===Platform.OS?{outlineStyle:"solid",outlineWidth:0}:{},item:{flex:1,borderWidth:0,justifyContent:"center",alignItems:"center",overflow:"hidden"},label:{includeFontPadding:!1,textAlign:"center"},description:{includeFontPadding:!1,textAlign:"center"},checkMark:{position:"absolute",right:1,bottom:1,fontSize:8,includeFontPadding:!1},checkMarkTriangle:{position:"absolute",right:0,bottom:0,width:0,height:0,borderTopColor:"transparent",borderLeftColor:"transparent"}},colors:{border:"transparent",borderActive:"transparent",background:a,backgroundActive:t.primary[50],text:t.default[900],textActive:t.primary[600],description:t.default[500],disabledText:t.default[400],check:t.primary[600],checkForeground:t.primary.foreground??"#fff"},typography:{fontSize:n.md,descriptionSize:n.sm,fontFamily:i.fontFamily,fontWeight:i.weight.medium},radii:{item:r.xs},spacing:{gap:o.sm,paddingVertical:o.sm,paddingHorizontal:o.lg,descriptionMarginTop:o.xxs},states:{disabledOpacity:.45}}};export const useSelectorTokens=createComponentTokensHook("selector",createSelectorTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo,useRef}from"react";import{Pressable,StyleSheet,View}from"react-native";import{useAriaPress}from"../../hooks";import{createHairlineView}from"../../utils/hairline";import{isFiniteNumber,isText,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useShareSheetTokens}from"./tokens";const no=e=>e&&0!==e.length?Array.isArray(e[0])?e:[e]:[],ShareSheetOptionItem=React.memo(({option:e,index:t,columns:o,tokens:n,onSelect:i})=>{const r={width:100/o+"%"},a={width:n.sizing.icon,height:n.sizing.icon},c=useAriaPress({onPress:()=>i(e,t),extraProps:{accessibilityRole:"menuitem",accessibilityLabel:isText(e.name)?String(e.name):void 0,testID:`rv-share-sheet-item-${t}`}}),s=isText(e.icon)?renderTextOrNode(e.icon,[]):e.icon;return React.createElement(Pressable,_extends({style:[S.o,r]},c.interactionProps),React.createElement(View,{style:[S.ic,a,{marginHorizontal:n.spacing.iconMarginHorizontal}]},s),isValidNode(e.name)&&renderTextOrNode(e.name,[S.ot,{color:n.colors.option,fontFamily:n.typography.fontFamily,fontSize:n.typography.option,paddingHorizontal:n.spacing.optionTextPaddingHorizontal}]),isValidNode(e.description)&&(isText(e.description)?renderTextOrNode(e.description,[S.od,{color:n.colors.optionDesc,fontFamily:n.typography.fontFamily,marginTop:n.spacing.gap,fontSize:n.typography.optionDesc,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]):React.createElement(View,{style:[S.odn,{marginTop:n.spacing.gap,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]},e.description)))}),ShareSheetCancel=React.memo(({cancelText:e,tokens:t,onPress:o})=>{const n=useAriaPress({onPress:o,extraProps:{testID:"rv-share-sheet-cancel",accessibilityRole:"button"}});return React.createElement(View,{style:{backgroundColor:t.colors.divider}},React.createElement(Pressable,_extends({style:[S.c,{backgroundColor:t.colors.background,paddingVertical:t.spacing.cancelPaddingVertical,marginTop:t.spacing.cancelMarginTop}]},n.interactionProps),renderTextOrNode(e,[S.ct,{color:t.colors.option,fontFamily:t.typography.fontFamily,fontSize:t.typography.cancel}])))}),ShareSheetImpl=e=>{const t=useLocale(),{visible:o,title:n,description:i,cancelText:r=t?.vanShareSheet?.cancel??t?.cancel??"Cancel",options:a,columns:c=4,closeOnSelect:s=!0,safeAreaInsetBottom:l=!0,children:p,tokensOverride:d,onSelect:g,onCancel:m,onClose:h,lockScroll:y=!0,overlay:u=!0,round:f=!0,style:T,placement:x,position:P,...b}=e,R=useShareSheetTokens(d),k=no(a),V=isFiniteNumber(c)?Math.max(1,Math.floor(c)):4,w=isValidNode(n),z=isValidNode(i),v=isValidNode(r),N=useRef(m),C=useRef(h),E=useRef(g);N.current=m,C.current=h,E.current=g;const I=useCallback(e=>{e&&N.current?.(),C.current?.()},[]),M=useCallback((e,t)=>{E.current?.(e,t),e.onPress?.(e),s&&I()},[I,s]),O=useCallback(()=>I(!0),[I]),F=[S.w,{backgroundColor:R.colors.background}],H=[S.or,{paddingLeft:R.spacing.gap,paddingVertical:12}],A=useMemo(()=>{if(!k.length)return null;let e=0;return k.map((t,o)=>React.createElement(View,{key:o},o>0&&React.createElement(View,{style:createHairlineView({position:"top",color:R.colors.border,left:R.spacing.horizontal,right:R.spacing.horizontal})}),React.createElement(View,{style:H},t.map(t=>{const o=e++;return React.createElement(ShareSheetOptionItem,{key:t.key??o,option:t,index:o,columns:V,tokens:R,onSelect:M})}))))},[k,H,M,V,R]),D=useMemo(()=>w||z?React.createElement(View,{style:[S.h,{paddingTop:R.spacing.headerPaddingTop,paddingHorizontal:R.spacing.headerPaddingHorizontal,paddingBottom:R.spacing.headerPaddingBottom}]},w&&(isText(n)?renderTextOrNode(n,[S.t,{color:R.colors.title,fontFamily:R.typography.fontFamily,fontSize:R.typography.title,marginTop:R.spacing.titleMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},n)),z&&(isText(i)?renderTextOrNode(i,[S.d,{color:R.colors.description,fontFamily:R.typography.fontFamily,fontSize:R.typography.description,marginTop:R.spacing.descriptionMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},i))):null,[i,z,w,n,R.colors.description,R.colors.title,R.spacing.descriptionMarginTop,R.spacing.headerPaddingBottom,R.spacing.headerPaddingHorizontal,R.spacing.headerPaddingTop,R.spacing.nodeMarginTop,R.spacing.titleMarginTop,R.typography.description,R.typography.fontFamily,R.typography.title]),_=[{padding:R.spacing.popupPadding},T];return React.createElement(Popup,_extends({},b,{visible:o,placement:"bottom",round:f,safeAreaInsetBottom:l,overlay:u,lockScroll:y,onClose:O,style:_}),React.createElement(View,{accessibilityRole:"menu",style:F},D,A,p,v&&React.createElement(ShareSheetCancel,{cancelText:r,tokens:R,onPress:O})))},S=StyleSheet.create({w:{width:"100%"},h:{alignItems:"center"},t:{fontWeight:"normal",textAlign:"center"},d:{textAlign:"center"},n:{alignItems:"center"},or:{flexDirection:"row",flexWrap:"wrap"},o:{alignItems:"center",justifyContent:"center"},ic:{alignItems:"center",justifyContent:"center"},ot:{fontWeight:"500",textAlign:"center"},od:{textAlign:"center"},odn:{alignItems:"center"},c:{alignItems:"center"},ct:{fontWeight:"500"}}),ShareSheet=React.memo(ShareSheetImpl);ShareSheet.displayName="ShareSheet";export default ShareSheet;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo,useRef}from"react";import{Platform,Pressable,StyleSheet,View}from"react-native";import{useAriaPress}from"../../hooks";import{createHairlineView}from"../../utils/hairline";import{isFiniteNumber,isText,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useShareSheetTokens}from"./tokens";const no=e=>e&&0!==e.length?Array.isArray(e[0])?e:[e]:[],ShareSheetOptionItem=React.memo(({option:e,index:t,columns:o,tokens:n,onSelect:i})=>{const r={width:100/o+"%"},a={width:n.sizing.icon,height:n.sizing.icon},c=useAriaPress({onPress:()=>i(e,t),extraProps:{accessibilityRole:"web"===Platform.OS?"menuitem":"button",accessibilityLabel:isText(e.name)?String(e.name):void 0,testID:`rv-share-sheet-item-${t}`}}),s=isText(e.icon)?renderTextOrNode(e.icon,[]):e.icon;return React.createElement(Pressable,_extends({style:[S.o,r]},c.interactionProps),React.createElement(View,{style:[S.ic,a,{marginHorizontal:n.spacing.iconMarginHorizontal}]},s),isValidNode(e.name)&&renderTextOrNode(e.name,[S.ot,{color:n.colors.option,fontFamily:n.typography.fontFamily,fontSize:n.typography.option,paddingHorizontal:n.spacing.optionTextPaddingHorizontal}]),isValidNode(e.description)&&(isText(e.description)?renderTextOrNode(e.description,[S.od,{color:n.colors.optionDesc,fontFamily:n.typography.fontFamily,marginTop:n.spacing.gap,fontSize:n.typography.optionDesc,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]):React.createElement(View,{style:[S.odn,{marginTop:n.spacing.gap,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]},e.description)))}),ShareSheetCancel=React.memo(({cancelText:e,tokens:t,onPress:o})=>{const n=useAriaPress({onPress:o,extraProps:{testID:"rv-share-sheet-cancel",accessibilityRole:"button"}});return React.createElement(View,{style:{backgroundColor:t.colors.divider}},React.createElement(Pressable,_extends({style:[S.c,{backgroundColor:t.colors.background,paddingVertical:t.spacing.cancelPaddingVertical,marginTop:t.spacing.cancelMarginTop}]},n.interactionProps),renderTextOrNode(e,[S.ct,{color:t.colors.option,fontFamily:t.typography.fontFamily,fontSize:t.typography.cancel}])))}),ShareSheetImpl=e=>{const t=useLocale(),{visible:o,title:n,description:i,cancelText:r=t?.vanShareSheet?.cancel??t?.cancel??"Cancel",options:a,columns:c=4,closeOnSelect:s=!0,safeAreaInsetBottom:l=!0,children:p,tokensOverride:d,onSelect:g,onCancel:m,onClose:h,lockScroll:y=!0,overlay:u=!0,round:f=!0,style:T,placement:x,position:P,...b}=e,R=useShareSheetTokens(d),k=no(a),w=isFiniteNumber(c)?Math.max(1,Math.floor(c)):4,V=isValidNode(n),z=isValidNode(i),v=isValidNode(r),N=useRef(m),C=useRef(h),E=useRef(g);N.current=m,C.current=h,E.current=g;const O=useCallback(e=>{e&&N.current?.(),C.current?.()},[]),I=useCallback((e,t)=>{E.current?.(e,t),e.onPress?.(e),s&&O()},[O,s]),M=useCallback(()=>O(!0),[O]),F=[S.w,{backgroundColor:R.colors.background}],H=[S.or,{paddingLeft:R.spacing.gap,paddingVertical:12}],A=useMemo(()=>{if(!k.length)return null;let e=0;return k.map((t,o)=>React.createElement(View,{key:o},o>0&&React.createElement(View,{style:createHairlineView({position:"top",color:R.colors.border,left:R.spacing.horizontal,right:R.spacing.horizontal})}),React.createElement(View,{style:H},t.map(t=>{const o=e++;return React.createElement(ShareSheetOptionItem,{key:t.key??o,option:t,index:o,columns:w,tokens:R,onSelect:I})}))))},[k,H,I,w,R]),D=useMemo(()=>V||z?React.createElement(View,{style:[S.h,{paddingTop:R.spacing.headerPaddingTop,paddingHorizontal:R.spacing.headerPaddingHorizontal,paddingBottom:R.spacing.headerPaddingBottom}]},V&&(isText(n)?renderTextOrNode(n,[S.t,{color:R.colors.title,fontFamily:R.typography.fontFamily,fontSize:R.typography.title,marginTop:R.spacing.titleMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},n)),z&&(isText(i)?renderTextOrNode(i,[S.d,{color:R.colors.description,fontFamily:R.typography.fontFamily,fontSize:R.typography.description,marginTop:R.spacing.descriptionMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},i))):null,[i,z,V,n,R.colors.description,R.colors.title,R.spacing.descriptionMarginTop,R.spacing.headerPaddingBottom,R.spacing.headerPaddingHorizontal,R.spacing.headerPaddingTop,R.spacing.nodeMarginTop,R.spacing.titleMarginTop,R.typography.description,R.typography.fontFamily,R.typography.title]),_=[{padding:R.spacing.popupPadding},T];return React.createElement(Popup,_extends({},b,{visible:o,placement:"bottom",round:f,safeAreaInsetBottom:l,overlay:u,lockScroll:y,onClose:M,style:_}),React.createElement(View,{accessibilityRole:"menu",style:F},D,A,p,v&&React.createElement(ShareSheetCancel,{cancelText:r,tokens:R,onPress:M})))},S=StyleSheet.create({w:{width:"100%"},h:{alignItems:"center"},t:{fontWeight:"normal",textAlign:"center"},d:{textAlign:"center"},n:{alignItems:"center"},or:{flexDirection:"row",flexWrap:"wrap"},o:{alignItems:"center",justifyContent:"center"},ic:{alignItems:"center",justifyContent:"center"},ot:{fontWeight:"500",textAlign:"center"},od:{textAlign:"center"},odn:{alignItems:"center"},c:{alignItems:"center"},ct:{fontWeight:"500"}}),ShareSheet=React.memo(ShareSheetImpl);ShareSheet.displayName="ShareSheet";export default ShareSheet;
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createTokens=o=>{const{palette:e,spacing:n,fontSize:t,typography:i}=o;return{colors:{background:"#ffffff",title:e.default[900],description:e.default[500],option:e.default[900],optionDesc:e.default[500],border:e.default[200],divider:e.default[100]},spacing:{horizontal:n.md,vertical:n.sm,gap:n.xs,popupPadding:0,headerPaddingTop:n.sm,headerPaddingHorizontal:n.lg,headerPaddingBottom:n.md,titleMarginTop:n.xs,descriptionMarginTop:n.xs,nodeMarginTop:n.xs,iconMarginHorizontal:n.md,optionTextPaddingHorizontal:n.xs,optionDescPaddingHorizontal:n.lg,cancelPaddingVertical:14,cancelMarginTop:n.sm},sizing:{icon:48},typography:{fontFamily:i.fontFamily,title:t.md,description:t.xs,option:t.xs,optionDesc:t.xxs,cancel:t.md}}};export const useShareSheetTokens=createComponentTokensHook("shareSheet",createTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createTokens=o=>{const{palette:e,spacing:n,fontSize:t,typography:a}=o;return{colors:{background:o.surface??"#ffffff",title:e.default[900],description:e.default[500],option:e.default[900],optionDesc:e.default[500],border:e.default[200],divider:e.default[100]},spacing:{horizontal:n.md,vertical:n.sm,gap:n.xs,popupPadding:0,headerPaddingTop:n.sm,headerPaddingHorizontal:n.lg,headerPaddingBottom:n.md,titleMarginTop:n.xs,descriptionMarginTop:n.xs,nodeMarginTop:n.xs,iconMarginHorizontal:n.md,optionTextPaddingHorizontal:n.xs,optionDescPaddingHorizontal:n.lg,cancelPaddingVertical:14,cancelMarginTop:n.sm},sizing:{icon:48},typography:{fontFamily:a.fontFamily,title:t.md,description:t.xs,option:t.xs,optionDesc:t.xxs,cancel:t.md}}};export const useShareSheetTokens=createComponentTokensHook("shareSheet",createTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";export const createSidebarTokens=e=>{const{palette:t,fontSize:i,typography:o}=e,n=StyleSheet.hairlineWidth;return{defaults:{disabled:!1},layout:{container:{flexDirection:"row"},side:{},content:{flex:1,minWidth:0},item:{flexDirection:"row",alignItems:"center",paddingHorizontal:16},indicatorWrapper:{width:12,alignItems:"center"},itemContent:{flex:1,paddingVertical:12},indicator:{height:20},titleRow:{flexDirection:"row",alignItems:"center",gap:8},badge:{marginLeft:4},dot:{width:6,height:6,borderRadius:3},title:{includeFontPadding:!1}},colors:{background:"#ffffff",border:t.default[200],title:t.default[800],titleActive:t.primary[600],disabled:t.default[400],indicator:t.primary[600]},typography:{fontFamily:o.fontFamily,fontSize:i.sm,fontWeight:o.weight.medium,contentFontSize:i.sm},sizing:{width:120,itemHeight:48,indicatorWidth:4},borders:{width:n}}};export const useSidebarTokens=createComponentTokensHook("sidebar",createSidebarTokens);
1
+ import{StyleSheet}from"react-native";import{createComponentTokensHook}from"../../design-system";export const createSidebarTokens=e=>{const{palette:t,fontSize:i,typography:o}=e,n=e.surface??"#ffffff",r=StyleSheet.hairlineWidth;return{defaults:{disabled:!1},layout:{container:{flexDirection:"row"},side:{},content:{flex:1,minWidth:0},item:{flexDirection:"row",alignItems:"center",paddingHorizontal:16},indicatorWrapper:{width:12,alignItems:"center"},itemContent:{flex:1,paddingVertical:12},indicator:{height:20},titleRow:{flexDirection:"row",alignItems:"center",gap:8},badge:{marginLeft:4},dot:{width:6,height:6,borderRadius:3},title:{includeFontPadding:!1}},colors:{background:n,border:t.default[200],title:t.default[800],titleActive:t.primary[600],disabled:t.default[400],indicator:t.primary[600]},typography:{fontFamily:o.fontFamily,fontSize:i.sm,fontWeight:o.weight.medium,contentFontSize:i.sm},sizing:{width:120,itemHeight:48,indicatorWidth:4},borders:{width:r}}};export const useSidebarTokens=createComponentTokensHook("sidebar",createSidebarTokens);
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}import{useSlider,useSliderThumb}from"@react-native-aria/slider";import{isRTL}from"@react-native-aria/utils";import{useSliderState}from"@react-stately/slider";import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Platform,Pressable,StyleSheet,View}from"react-native";import{useSliderTokens}from"./tokens";import{parseNumber}from"../../utils/number";import{createHairlineView}from"../../utils/hairline";import{clamp,renderTextOrNode}from"../../utils";import{isFunction,isFiniteNumber,isText}from"../../utils/validate";import{useAriaPress}from"../../hooks";const isSameLayout=(e,t)=>e.width===t.width&&e.height===t.height&&e.x===t.x&&e.y===t.y,normalizeValue=(e,t,r,n)=>{if(t){const t=Array.isArray(e)?e:isFiniteNumber(e)?[r,e]:[r,r],i=isFiniteNumber(t[0])?clamp(t[0],r,n):r,a=isFiniteNumber(t[1]??t[0])?clamp(t[1]??t[0],r,n):r;return i<=a?[i,a]:[a,i]}const i=Array.isArray(e)?e[0]:e;return[isFiniteNumber(i)?clamp(i,r,n):r]},toSliderValue=(e,t,r)=>{if(t){const t=e[0]??r;return[t,e[1]??t]}return e[0]??r},createAccessibilityProps=e=>{if(!e)return{};const{role:t,"aria-value":r,accessibilityActions:n,onAccessibilityAction:i,disabled:a}=e;return{accessible:!0,accessibilityRole:t??"adjustable",accessibilityValue:r,accessibilityActions:n,onAccessibilityAction:i,accessibilityState:{disabled:a}}},defaultNumberFormatter="undefined"!=typeof Intl&&isFunction(Intl.NumberFormat)?new Intl.NumberFormat:{format:e=>String(e)},START_KEYS=["onResponderGrant","onPanResponderGrant"],MOVE_KEYS=["onResponderMove","onPanResponderMove"],END_KEYS=["onResponderRelease","onResponderTerminate","onPanResponderRelease","onPanResponderTerminate"],useTrackLayout=()=>{const e=useRef(null),t=useRef(null),[r,n]=useState({width:0,height:0,x:0,y:0}),i=useCallback(r=>{const{layout:i}=r.nativeEvent,a={width:Math.max(i.width,1),height:Math.max(i.height,1),x:i.x??0,y:i.y??0};n(e=>isSameLayout(e,a)?e:a),"web"===Platform.OS&&"undefined"!=typeof requestAnimationFrame&&null==t.current&&(t.current=requestAnimationFrame(()=>{t.current=null;const r=e.current;r?.measureInWindow&&r.measureInWindow((e,t,r,i)=>{const a={width:Math.max(r,1),height:Math.max(i,1),x:e,y:t};n(e=>isSameLayout(e,a)?e:a)})}))},[]);return useEffect(()=>()=>{null!=t.current&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(t.current),t.current=null},[]),{trackRef:e,trackLayout:r,handleTrackLayout:i}},ThumbNode=React.memo(({index:e,orientation:t,ariaReverse:r,trackLayout:n,isDisabled:i,state:a,size:o,activeColor:s,content:u,visualPercent:c,thumbBackgroundColor:l,thumbElevation:m,indicatorSize:d,indicatorColor:h,webGestureStyle:b,enhanceHandlers:f})=>{const p=useRef(null),{thumbProps:v,inputProps:y}=useSliderThumb({index:e,trackLayout:n,inputRef:p,isDisabled:i,orientation:t},a,r),g=v,R=f(g,e)??g??{},w=-o/2,x={width:o,height:o,borderRadius:o/2,borderColor:s,transform:[{translateX:w},{translateY:w}],..."vertical"===t?{top:`${c}%`,left:"50%"}:{left:`${c}%`,top:"50%"},...u?{}:{backgroundColor:l,elevation:m}},k={width:d,height:d,borderRadius:d/2,backgroundColor:h},E=createAccessibilityProps(y);return React.createElement(View,_extends({},R,E,{pointerEvents:i?"none":"auto",style:[u?S.thw:S.t,b,x]}),null!=u?isText(u)?renderTextOrNode(u,[]):u:React.createElement(View,{style:k}),!u&&React.createElement(View,{style:createHairlineView({position:"all",color:s,borderRadius:o/2})}))});ThumbNode.displayName="ThumbNode";const SliderImpl=e=>{const{value:t,min:r=0,max:n=100,step:i=1,range:a=!1,vertical:o=!1,reverse:s=!1,disabled:u=!1,readOnly:c=!1,activeColor:l,inactiveColor:m,barHeight:d,trackHeight:h,buttonSize:b,thumbSize:f,tokensOverride:p,button:v,leftButton:y,rightButton:g,thumb:R,leftThumb:w,rightThumb:x,ariaLabel:k,onChange:E,onChangeAfter:F,onDragStart:M,onDragEnd:C,style:T,onLayout:A,...N}=e,V=useSliderTokens(p),P=o?"vertical":"horizontal",{trackRef:z,trackLayout:L,handleTrackLayout:_}=useTrackLayout(),D=parseNumber(r,0),O=parseNumber(n,100),I=parseNumber(i,1),Y=I>0?I:1,K=Math.max(0,parseNumber(d??h,V.track.height)),j=Math.max(0,parseNumber(b??f,V.thumb.size)),H=u||c,$=l??V.colors.active,B=m??V.colors.inactive,q=Math.max(O-D,1e-5),G=normalizeValue(t,a,D,O),W=void 0!==t,X=useRef(E),J=useRef(F),Q=useRef(M),U=useRef(C);X.current=E,J.current=F,Q.current=M,U.current=C;const Z=useCallback(e=>toSliderValue(e,a,D),[a,D]),ee=useCallback(e=>{X.current?.(Z(e))},[Z]),te=useCallback(e=>{J.current?.(Z(e))},[Z]),re=useMemo(()=>({minValue:D,maxValue:O,step:Y,isDisabled:H,numberFormatter:defaultNumberFormatter,orientation:P,value:W?G:void 0,defaultValue:W?void 0:G,onChange:ee,onChangeEnd:te}),[H,ee,te,W,G,P,O,D,Y]),ne=useSliderState(re),ie="horizontal"===P?s||isRTL():s,ae="horizontal"===P?ie:s,{trackProps:oe}=useSlider({orientation:P,isDisabled:H,"aria-label":k??"Slider"},ne,L,ae),se=oe,{style:ue,onLayout:ce,...le}=se,me=useCallback(e=>{_(e),ce?.(e)},[_,ce]),de=useCallback(e=>{if(H)return;if(!ne.values.every((e,t)=>!ne.isThumbDragging(t)))return;const{locationX:t,locationY:r,pageX:n,pageY:i}=e.nativeEvent,a=isFiniteNumber(t)?t:isFiniteNumber(n)?n-(L.x??0):0,o=isFiniteNumber(r)?r:isFiniteNumber(i)?i-(L.y??0):0,u="vertical"===P?L.height:L.width,c=("vertical"===P?o:a)/Math.max(u,1),l="vertical"===P?s?c:1-c:ie?1-c:c,m=ne.getPercentValue(Math.min(1,Math.max(0,l))),d=ne.values.reduce((e,t,r)=>Math.abs(t-m)<Math.abs(ne.values[e]-m)?r:e,0);d>=0&&ne.isThumbEditable(d)&&(e.preventDefault?.(),ne.setFocusedThumb(d),ne.setThumbDragging(d,!0),ne.setThumbValue(d,m),ne.setThumbDragging(d,!1))},[H,P,s,ie,ne,L.height,L.width,L.x,L.y]),{interactionProps:he}=useAriaPress({disabled:H,onPress:de,extraProps:le}),be=Z(ne.values),fe=useRef(be),pe=useRef([]),ve=useRef([]),ye=useRef([]),ge=useRef([]),Se=useRef(new WeakMap);fe.current=be,useEffect(()=>()=>{const e="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;if(e){for(const t of ye.current)null!=t&&e(t);ye.current=[],ge.current=[]}},[]);const Re=useCallback((e,t)=>{if(!e)return e;if(!Q.current&&!U.current)return e;const r=Se.current.get(e),n=r?.get(t);if(n)return n;if(!(START_KEYS.some(t=>isFunction(e[t]))||MOVE_KEYS.some(t=>isFunction(e[t]))||END_KEYS.some(t=>isFunction(e[t]))))return e;const i={...e},a="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,o="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;for(const e of MOVE_KEYS){const r=i[e];if(!isFunction(r))continue;const n=r;i[e]=(...e)=>{a?(ge.current[t]=e,null==ye.current[t]&&(ye.current[t]=a(()=>{ye.current[t]=null;const e=ge.current[t];e&&(ge.current[t]=null,n(...e))}))):n(...e)}}const s=(e,t)=>{if(!t)return;const r=i[e];i[e]=(...e)=>{isFunction(r)&&r(...e),t(e[0])}},u=(e,t)=>{if(!t)return;const r=i[e];i[e]=(...e)=>{t(e[0]),isFunction(r)&&r(...e)}};for(const e of START_KEYS)s(e,()=>{pe.current[t]=!1,ve.current[t]=fe.current});for(const e of MOVE_KEYS)u(e,e=>{pe.current[t]||(pe.current[t]=!0,Q.current?.(e,ve.current[t]??fe.current))});const c=e=>{pe.current[t]&&(pe.current[t]=!1,ve.current[t]=void 0,U.current?.(e,fe.current));const r=ye.current[t];null!=r&&o&&(o(r),ye.current[t]=null),ge.current[t]=null};for(const e of END_KEYS)s(e,c);const l=r??new Map;return l.set(t,i),r||Se.current.set(e,l),i},[]),we=ne.values,xe=useMemo(()=>we.map(e=>((e??D)-D)/q*100),[D,q,we]),ke=useMemo(()=>xe.map(e=>"vertical"===P?s?e:100-e:ie?100-e:e),[P,s,ie,xe]),Ee=useMemo(()=>{const e=ke[0]??0,t=ke[1]??e;return a&&ke.length>1?{offset:Math.min(e,t),size:Math.max(e,t)-Math.min(e,t)}:("horizontal"===P?!ie:s)?{offset:0,size:e}:{offset:e,size:100-e}},[P,a,s,ie,ke]),{track:{radius:Fe}}=V,Me=useMemo(()=>({backgroundColor:$,borderRadius:Fe,..."vertical"===P?{left:0,width:"100%",height:`${Math.max(Ee.size,0)}%`,top:`${Math.max(Ee.offset,0)}%`}:{top:0,height:"100%",width:`${Math.max(Ee.size,0)}%`,left:`${Math.max(Ee.offset,0)}%`}}),[Ee.offset,Ee.size,P,$,Fe]),Ce=useMemo(()=>"vertical"===P?[S.tv,{width:K,backgroundColor:B,alignSelf:"center"}]:[S.th,{height:K,backgroundColor:B}],[P,B,K]),Te=isFunction(v)?v({value:be}):v??R,Ae=y??w??Te,Ne=g??x??Te,Ve=useCallback((e,t)=>t>1?0===e?Ae:Ne:Te,[Ae,Ne,Te]),Pe="web"===Platform.OS?{touchAction:"horizontal"===P?"pan-y":"pan-x",userSelect:"none"}:void 0,ze=[S.tp,"vertical"===P?S.tpv:null,Pe],Le=useCallback(e=>[ze,ue(e)],[ze,ue]),_e=ue&&isFunction(ue)?Le:[ze,ue],{spacing:{containerPaddingVertical:De},layout:{verticalMinHeight:Oe,verticalWidth:Ie},states:{disabledOpacity:Ye}}=V,Ke=[S.c,{paddingVertical:De},"vertical"===P&&[S.vc,{minHeight:Oe,width:Ie}],u&&{opacity:Ye},T];return React.createElement(View,_extends({style:Ke,onLayout:A},N),React.createElement(View,{style:[S.tw,"vertical"===P&&S.twv]},React.createElement(Pressable,_extends({ref:z},he,{disabled:H,onLayout:me,style:_e}),React.createElement(View,{style:[S.tb,{borderRadius:Fe},...Ce]},React.createElement(View,{style:[S.a,Me]}))),we.map((e,t)=>React.createElement(ThumbNode,{key:`thumb-${t}`,index:t,orientation:P,ariaReverse:ae,trackLayout:L,isDisabled:H,state:ne,size:j,activeColor:$,content:Ve(t,we.length),visualPercent:ke[t]??0,thumbBackgroundColor:V.colors.thumbBackground,thumbElevation:V.thumb.elevation,indicatorSize:V.thumb.indicatorSize,indicatorColor:V.colors.thumbIndicator,webGestureStyle:Pe,enhanceHandlers:Re}))))},S=StyleSheet.create({c:{position:"relative",justifyContent:"center",width:"100%"},vc:{height:"100%",alignItems:"center",paddingVertical:0},tw:{width:"100%",justifyContent:"center",position:"relative"},twv:{flex:1,justifyContent:"center",alignItems:"center",width:"100%"},tp:{width:"100%",justifyContent:"center"},tpv:{flex:1,alignItems:"center"},tb:{overflow:"hidden",position:"relative"},th:{width:"100%"},tv:{height:"100%"},a:{position:"absolute"},t:{position:"absolute",alignItems:"center",justifyContent:"center"},thw:{position:"absolute",alignItems:"center",justifyContent:"center"}});export const Slider=React.memo(SliderImpl);export default Slider;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}import{useSlider,useSliderThumb}from"@react-native-aria/slider";import{isRTL}from"@react-native-aria/utils";import{useSliderState}from"@react-stately/slider";import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Platform,Pressable,StyleSheet,View}from"react-native";import{useSliderTokens}from"./tokens";import{parseNumber}from"../../utils/number";import{createHairlineView}from"../../utils/hairline";import{clamp,renderTextOrNode}from"../../utils";import{isFunction,isFiniteNumber,isText}from"../../utils/validate";import{useAriaPress}from"../../hooks";const isSameLayout=(e,t)=>e.width===t.width&&e.height===t.height&&e.x===t.x&&e.y===t.y,normalizeValue=(e,t,r,n)=>t?(()=>{const t=Array.isArray(e)?e:isFiniteNumber(e)?[r,e]:[r,r],i=isFiniteNumber(t[0])?clamp(t[0],r,n):r,a=isFiniteNumber(t[1]??t[0])?clamp(t[1]??t[0],r,n):r;return i<=a?[i,a]:[a,i]})():(()=>{const t=Array.isArray(e)?e[0]:e;return[isFiniteNumber(t)?clamp(t,r,n):r]})(),toSliderValue=(e,t,r)=>t?[e[0]??r,e[1]??e[0]??r]:e[0]??r,createAccessibilityProps=e=>e?(()=>{const{role:t,"aria-value":r,accessibilityActions:n,onAccessibilityAction:i,disabled:a}=e;return{accessible:!0,accessibilityRole:t??"adjustable",accessibilityValue:r,accessibilityActions:n,onAccessibilityAction:i,accessibilityState:{disabled:a}}})():{},defaultNumberFormatter="undefined"!=typeof Intl&&isFunction(Intl.NumberFormat)?new Intl.NumberFormat:{format:e=>String(e)},START_KEYS=["onResponderGrant","onPanResponderGrant"],MOVE_KEYS=["onResponderMove","onPanResponderMove"],END_KEYS=["onResponderRelease","onResponderTerminate","onPanResponderRelease","onPanResponderTerminate"],useTrackLayout=()=>{const e=useRef(null),t=useRef(null),[r,n]=useState({width:0,height:0,x:0,y:0}),i=useCallback(r=>{const{layout:i}=r.nativeEvent,a={width:Math.max(i.width,1),height:Math.max(i.height,1),x:i.x??0,y:i.y??0};n(e=>isSameLayout(e,a)?e:a),"web"===Platform.OS&&"undefined"!=typeof requestAnimationFrame&&null==t.current&&(t.current=requestAnimationFrame(()=>{t.current=null;const r=e.current;r?.measureInWindow&&r.measureInWindow((e,t,r,i)=>{const a={width:Math.max(r,1),height:Math.max(i,1),x:e,y:t};n(e=>isSameLayout(e,a)?e:a)})}))},[]);return useEffect(()=>()=>{null!=t.current&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(t.current),t.current=null},[]),{trackRef:e,trackLayout:r,handleTrackLayout:i}},ThumbNode=React.memo(({index:e,orientation:t,ariaReverse:r,trackLayout:n,isDisabled:i,state:a,size:o,activeColor:s,content:u,visualPercent:c,thumbBackgroundColor:l,thumbElevation:m,indicatorSize:d,indicatorColor:h,webGestureStyle:b,enhanceHandlers:f})=>{const p=useRef(null),{thumbProps:v,inputProps:y}=useSliderThumb({index:e,trackLayout:n,inputRef:p,isDisabled:i,orientation:t},a,r),g=v,R=f(g,e)??g??{},w=-o/2,x={width:o,height:o,borderRadius:o/2,borderColor:s,transform:[{translateX:w},{translateY:w}],..."vertical"===t?{top:`${c}%`,left:"50%"}:{left:`${c}%`,top:"50%"},...u?{}:{backgroundColor:l,elevation:m}},k={width:d,height:d,borderRadius:d/2,backgroundColor:h},E=createAccessibilityProps(y);return React.createElement(View,_extends({},R,E,{pointerEvents:i?"none":"auto",style:[u?S.thw:S.t,b,x]}),null!=u?isText(u)?renderTextOrNode(u,[]):u:React.createElement(View,{style:k}),!u&&React.createElement(View,{style:createHairlineView({position:"all",color:s,borderRadius:o/2})}))});ThumbNode.displayName="ThumbNode";const SliderImpl=e=>{const{value:t,min:r=0,max:n=100,step:i=1,range:a=!1,vertical:o=!1,reverse:s=!1,disabled:u=!1,readOnly:c=!1,activeColor:l,inactiveColor:m,barHeight:d,trackHeight:h,buttonSize:b,thumbSize:f,tokensOverride:p,button:v,leftButton:y,rightButton:g,thumb:R,leftThumb:w,rightThumb:x,ariaLabel:k,onChange:E,onChangeAfter:F,onDragStart:M,onDragEnd:C,style:T,onLayout:A,...N}=e,V=useSliderTokens(p),P=o?"vertical":"horizontal",{trackRef:z,trackLayout:L,handleTrackLayout:_}=useTrackLayout(),D=parseNumber(r,0),O=parseNumber(n,100),I=parseNumber(i,1),Y=I>0?I:1,K=Math.max(0,parseNumber(d??h,V.track.height)),j=Math.max(0,parseNumber(b??f,V.thumb.size)),H=u||c,$=l??V.colors.active,B=m??V.colors.inactive,q=Math.max(O-D,1e-5),G=normalizeValue(t,a,D,O),W=void 0!==t,X=useRef(E),J=useRef(F),Q=useRef(M),U=useRef(C);X.current=E,J.current=F,Q.current=M,U.current=C;const Z=useCallback(e=>toSliderValue(e,a,D),[a,D]),ee=useCallback(e=>{X.current?.(Z(e))},[Z]),te=useCallback(e=>{J.current?.(Z(e))},[Z]),re=useMemo(()=>({minValue:D,maxValue:O,step:Y,isDisabled:H,numberFormatter:defaultNumberFormatter,orientation:P,value:W?G:void 0,defaultValue:W?void 0:G,onChange:ee,onChangeEnd:te}),[H,ee,te,W,G,P,O,D,Y]),ne=useSliderState(re),ie="horizontal"===P?s||isRTL():s,ae="horizontal"===P?ie:s,{trackProps:oe}=useSlider({orientation:P,isDisabled:H,"aria-label":k??"Slider"},ne,L,ae),se=oe,{style:ue,onLayout:ce,...le}=se,me=useCallback(e=>{_(e),ce?.(e)},[_,ce]),de=useCallback(e=>{if(H)return;if(!ne.values.every((e,t)=>!ne.isThumbDragging(t)))return;const{locationX:t,locationY:r,pageX:n,pageY:i}=e.nativeEvent,a=isFiniteNumber(t)?t:isFiniteNumber(n)?n-(L.x??0):0,o=isFiniteNumber(r)?r:isFiniteNumber(i)?i-(L.y??0):0,u="vertical"===P?L.height:L.width,c=("vertical"===P?o:a)/Math.max(u,1),l="vertical"===P?s?c:1-c:ie?1-c:c,m=ne.getPercentValue(Math.min(1,Math.max(0,l))),d=ne.values.reduce((e,t,r)=>Math.abs(t-m)<Math.abs(ne.values[e]-m)?r:e,0);d>=0&&ne.isThumbEditable(d)&&(e.preventDefault?.(),ne.setFocusedThumb(d),ne.setThumbDragging(d,!0),ne.setThumbValue(d,m),ne.setThumbDragging(d,!1))},[H,P,s,ie,ne,L.height,L.width,L.x,L.y]),{interactionProps:he}=useAriaPress({disabled:H,onPress:de,extraProps:le}),be=Z(ne.values),fe=useRef(be),pe=useRef([]),ve=useRef([]),ye=useRef([]),ge=useRef([]),Se=useRef(new WeakMap);fe.current=be,useEffect(()=>()=>{const e="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;if(e){for(const t of ye.current)null!=t&&e(t);ye.current=[],ge.current=[]}},[]);const Re=useCallback((e,t)=>{if(!e)return e;if(!Q.current&&!U.current)return e;const r=Se.current.get(e),n=r?.get(t);if(n)return n;if(!(START_KEYS.some(t=>isFunction(e[t]))||MOVE_KEYS.some(t=>isFunction(e[t]))||END_KEYS.some(t=>isFunction(e[t]))))return e;const i={...e},a="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,o="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;for(const e of MOVE_KEYS){const r=i[e];if(!isFunction(r))continue;const n=r;i[e]=(...e)=>{a?(ge.current[t]=e,null==ye.current[t]&&(ye.current[t]=a(()=>{ye.current[t]=null;const e=ge.current[t];e&&(ge.current[t]=null,n(...e))}))):n(...e)}}const s=(e,t)=>{if(!t)return;const r=i[e];i[e]=(...e)=>{isFunction(r)&&r(...e),t(e[0])}},u=(e,t)=>{if(!t)return;const r=i[e];i[e]=(...e)=>{t(e[0]),isFunction(r)&&r(...e)}};for(const e of START_KEYS)s(e,()=>{pe.current[t]=!1,ve.current[t]=fe.current});for(const e of MOVE_KEYS)u(e,e=>{pe.current[t]||(pe.current[t]=!0,Q.current?.(e,ve.current[t]??fe.current))});const c=e=>{pe.current[t]&&(pe.current[t]=!1,ve.current[t]=void 0,U.current?.(e,fe.current));const r=ye.current[t];null!=r&&o&&(o(r),ye.current[t]=null),ge.current[t]=null};for(const e of END_KEYS)s(e,c);const l=r??new Map;return l.set(t,i),r||Se.current.set(e,l),i},[]),we=ne.values,xe=useMemo(()=>we.map(e=>((e??D)-D)/q*100),[D,q,we]),ke=useMemo(()=>xe.map(e=>"vertical"===P?s?e:100-e:ie?100-e:e),[P,s,ie,xe]),Ee=useMemo(()=>{const e=ke[0]??0,t=ke[1]??e;return a&&ke.length>1?{offset:Math.min(e,t),size:Math.max(e,t)-Math.min(e,t)}:("horizontal"===P?!ie:s)?{offset:0,size:e}:{offset:e,size:100-e}},[P,a,s,ie,ke]),{track:{radius:Fe}}=V,Me=useMemo(()=>({backgroundColor:$,borderRadius:Fe,..."vertical"===P?{left:0,width:"100%",height:`${Math.max(Ee.size,0)}%`,top:`${Math.max(Ee.offset,0)}%`}:{top:0,height:"100%",width:`${Math.max(Ee.size,0)}%`,left:`${Math.max(Ee.offset,0)}%`}}),[Ee.offset,Ee.size,P,$,Fe]),Ce=useMemo(()=>"vertical"===P?[S.tv,{width:K,backgroundColor:B,alignSelf:"center"}]:[S.th,{height:K,backgroundColor:B}],[P,B,K]),Te=isFunction(v)?v({value:be}):v??R,Ae=y??w??Te,Ne=g??x??Te,Ve=useCallback((e,t)=>t>1?0===e?Ae:Ne:Te,[Ae,Ne,Te]),Pe="web"===Platform.OS?{touchAction:"horizontal"===P?"pan-y":"pan-x",userSelect:"none"}:void 0,ze=[S.tp,"vertical"===P?S.tpv:null,Pe],Le=useCallback(e=>[ze,ue(e)],[ze,ue]),_e=ue&&isFunction(ue)?Le:[ze,ue],{spacing:{containerPaddingVertical:De},layout:{verticalMinHeight:Oe,verticalWidth:Ie},states:{disabledOpacity:Ye}}=V,Ke=[S.c,{paddingVertical:De},"vertical"===P&&[S.vc,{minHeight:Oe,width:Ie}],u&&{opacity:Ye},T];return React.createElement(View,_extends({style:Ke,onLayout:A},N),React.createElement(View,{style:[S.tw,"vertical"===P&&S.twv]},React.createElement(Pressable,_extends({ref:z},he,{disabled:H,onLayout:me,style:_e}),React.createElement(View,{style:[S.tb,{borderRadius:Fe},...Ce]},React.createElement(View,{style:[S.a,Me]}))),we.map((e,t)=>React.createElement(ThumbNode,{key:`thumb-${t}`,index:t,orientation:P,ariaReverse:ae,trackLayout:L,isDisabled:H,state:ne,size:j,activeColor:$,content:Ve(t,we.length),visualPercent:ke[t]??0,thumbBackgroundColor:V.colors.thumbBackground,thumbElevation:V.thumb.elevation,indicatorSize:V.thumb.indicatorSize,indicatorColor:V.colors.thumbIndicator,webGestureStyle:Pe,enhanceHandlers:Re}))))},S=StyleSheet.create({c:{position:"relative",justifyContent:"center",width:"100%"},vc:{height:"100%",alignItems:"center",paddingVertical:0},tw:{width:"100%",justifyContent:"center",position:"relative"},twv:{flex:1,justifyContent:"center",alignItems:"center",width:"100%"},tp:{width:"100%",justifyContent:"center"},tpv:{flex:1,alignItems:"center"},tb:{overflow:"hidden",position:"relative"},th:{width:"100%"},tv:{height:"100%"},a:{position:"absolute"},t:{position:"absolute",alignItems:"center",justifyContent:"center"},thw:{position:"absolute",alignItems:"center",justifyContent:"center"}});export const Slider=React.memo(SliderImpl);export default Slider;
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ export{};
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";const createStepperTokens=e=>{const{palette:t,radii:o,fontSize:n,opacity:a,typography:r}=e,s=t.primary.foreground??"#ffffff";return{defaults:{theme:"default",showInput:!0,showPlus:!0,showMinus:!0,longPress:!0,inputWidth:32,buttonSize:28},colors:{active:t.default[200],background:t.default[100],buttonIcon:t.default[900],buttonDisabledBackground:"#ffffff",buttonDisabledIcon:t.default[400],roundTheme:t.primary[500],roundThemeText:s,roundThemeBackground:"#ffffff",inputText:t.default[900],inputDisabledText:t.default[400],inputDisabledBackground:t.default[100],transparent:"transparent"},radii:{default:o.md},typography:{fontFamily:r.fontFamily,fontSize:n.md,fontWeight:r.weight.semiBold},opacity:{disabled:a.disabled,roundDisabled:.3,pressed:a.pressed},spacing:{gap:2,none:e.spacing.none}}};export const useStepperTokens=createComponentTokensHook("stepper",createStepperTokens);
1
+ import{createComponentTokensHook}from"../../design-system";const createStepperTokens=e=>{const{palette:t,radii:o,fontSize:n,opacity:a,typography:r}=e,s=e.surface??"#ffffff",d=t.primary.foreground??"#ffffff";return{defaults:{theme:"default",showInput:!0,showPlus:!0,showMinus:!0,longPress:!0,inputWidth:32,buttonSize:28},colors:{active:t.default[200],background:t.default[100],buttonIcon:t.default[900],buttonDisabledBackground:s,buttonDisabledIcon:t.default[400],roundTheme:t.primary[500],roundThemeText:d,roundThemeBackground:s,inputText:t.default[900],inputDisabledText:t.default[400],inputDisabledBackground:t.default[100],transparent:"transparent"},radii:{default:o.md},typography:{fontFamily:r.fontFamily,fontSize:n.md,fontWeight:r.weight.semiBold},opacity:{disabled:a.disabled,roundDisabled:.3,pressed:a.pressed},spacing:{gap:2,none:e.spacing.none}}};export const useStepperTokens=createComponentTokensHook("stepper",createStepperTokens);
@@ -0,0 +1 @@
1
+ export{};