@hzblj/kara-components 0.16.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/lib/module/atoms/badge/badge.android.js +5 -0
  3. package/lib/module/atoms/badge/badge.android.js.map +1 -1
  4. package/lib/module/atoms/badge/badge.ios.js +2 -0
  5. package/lib/module/atoms/badge/badge.ios.js.map +1 -1
  6. package/lib/module/atoms/button/button-tokens.js +8 -0
  7. package/lib/module/atoms/button/button-tokens.js.map +1 -1
  8. package/lib/module/atoms/button/button.android.js +43 -15
  9. package/lib/module/atoms/button/button.android.js.map +1 -1
  10. package/lib/module/atoms/button/button.ios.js +66 -10
  11. package/lib/module/atoms/button/button.ios.js.map +1 -1
  12. package/lib/module/atoms/checkbox/checkbox.android.js +5 -1
  13. package/lib/module/atoms/checkbox/checkbox.android.js.map +1 -1
  14. package/lib/module/atoms/checkbox/checkbox.ios.js +3 -1
  15. package/lib/module/atoms/checkbox/checkbox.ios.js.map +1 -1
  16. package/lib/module/atoms/color-picker/color-picker.android.js +4 -0
  17. package/lib/module/atoms/color-picker/color-picker.android.js.map +1 -1
  18. package/lib/module/atoms/color-picker/color-picker.ios.js +24 -2
  19. package/lib/module/atoms/color-picker/color-picker.ios.js.map +1 -1
  20. package/lib/module/atoms/date-picker/date-picker.android.js +85 -10
  21. package/lib/module/atoms/date-picker/date-picker.android.js.map +1 -1
  22. package/lib/module/atoms/date-picker/date-picker.ios.js +9 -7
  23. package/lib/module/atoms/date-picker/date-picker.ios.js.map +1 -1
  24. package/lib/module/atoms/divider/divider.android.js +17 -4
  25. package/lib/module/atoms/divider/divider.android.js.map +1 -1
  26. package/lib/module/atoms/divider/divider.ios.js +4 -0
  27. package/lib/module/atoms/divider/divider.ios.js.map +1 -1
  28. package/lib/module/atoms/fab/fab.android.js +64 -8
  29. package/lib/module/atoms/fab/fab.android.js.map +1 -1
  30. package/lib/module/atoms/fab/fab.ios.js +68 -12
  31. package/lib/module/atoms/fab/fab.ios.js.map +1 -1
  32. package/lib/module/atoms/icon-button/icon-button.android.js +48 -5
  33. package/lib/module/atoms/icon-button/icon-button.android.js.map +1 -1
  34. package/lib/module/atoms/icon-button/icon-button.ios.js +60 -10
  35. package/lib/module/atoms/icon-button/icon-button.ios.js.map +1 -1
  36. package/lib/module/atoms/list/list.android.js +32 -4
  37. package/lib/module/atoms/list/list.android.js.map +1 -1
  38. package/lib/module/atoms/list/list.ios.js +15 -5
  39. package/lib/module/atoms/list/list.ios.js.map +1 -1
  40. package/lib/module/atoms/picker/picker.ios.js +27 -15
  41. package/lib/module/atoms/picker/picker.ios.js.map +1 -1
  42. package/lib/module/atoms/progress/progress.android.js +21 -7
  43. package/lib/module/atoms/progress/progress.android.js.map +1 -1
  44. package/lib/module/atoms/progress/progress.ios.js +5 -1
  45. package/lib/module/atoms/progress/progress.ios.js.map +1 -1
  46. package/lib/module/atoms/slider/slider.android.js +16 -2
  47. package/lib/module/atoms/slider/slider.android.js.map +1 -1
  48. package/lib/module/atoms/slider/slider.ios.js +22 -2
  49. package/lib/module/atoms/slider/slider.ios.js.map +1 -1
  50. package/lib/module/atoms/switch/switch.android.js +5 -1
  51. package/lib/module/atoms/switch/switch.android.js.map +1 -1
  52. package/lib/module/atoms/switch/switch.ios.js +3 -1
  53. package/lib/module/atoms/switch/switch.ios.js.map +1 -1
  54. package/lib/module/atoms/text/spans.js +2 -1
  55. package/lib/module/atoms/text/spans.js.map +1 -1
  56. package/lib/module/atoms/text/text.android.js +18 -6
  57. package/lib/module/atoms/text/text.android.js.map +1 -1
  58. package/lib/module/atoms/text/text.ios.js +6 -2
  59. package/lib/module/atoms/text/text.ios.js.map +1 -1
  60. package/lib/module/atoms/text-field/text-field-input.js +14 -0
  61. package/lib/module/atoms/text-field/text-field-input.js.map +1 -0
  62. package/lib/module/atoms/text-field/text-field.android.js +113 -6
  63. package/lib/module/atoms/text-field/text-field.android.js.map +1 -1
  64. package/lib/module/atoms/text-field/text-field.ios.js +75 -3
  65. package/lib/module/atoms/text-field/text-field.ios.js.map +1 -1
  66. package/lib/module/molecules/collapsible/collapsible.android.js +4 -3
  67. package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
  68. package/lib/module/molecules/collapsible/collapsible.ios.js +3 -1
  69. package/lib/module/molecules/collapsible/collapsible.ios.js.map +1 -1
  70. package/lib/module/molecules/radio-group/radio-group.android.js +10 -2
  71. package/lib/module/molecules/radio-group/radio-group.android.js.map +1 -1
  72. package/lib/module/molecules/radio-group/radio-group.ios.js +6 -2
  73. package/lib/module/molecules/radio-group/radio-group.ios.js.map +1 -1
  74. package/lib/module/molecules/search-bar/search-bar.js +9 -0
  75. package/lib/module/molecules/search-bar/search-bar.js.map +1 -1
  76. package/lib/module/molecules/stepper/stepper.android.js +25 -13
  77. package/lib/module/molecules/stepper/stepper.android.js.map +1 -1
  78. package/lib/module/molecules/stepper/stepper.ios.js +12 -6
  79. package/lib/module/molecules/stepper/stepper.ios.js.map +1 -1
  80. package/lib/module/organisms/action-sheet/action-sheet.android.js +16 -8
  81. package/lib/module/organisms/action-sheet/action-sheet.android.js.map +1 -1
  82. package/lib/module/organisms/action-sheet/action-sheet.ios.js +16 -3
  83. package/lib/module/organisms/action-sheet/action-sheet.ios.js.map +1 -1
  84. package/lib/module/organisms/alert/alert.android.js +4 -3
  85. package/lib/module/organisms/alert/alert.android.js.map +1 -1
  86. package/lib/module/organisms/alert/alert.ios.js +3 -2
  87. package/lib/module/organisms/alert/alert.ios.js.map +1 -1
  88. package/lib/module/organisms/context-menu/context-menu.android.js +3 -1
  89. package/lib/module/organisms/context-menu/context-menu.android.js.map +1 -1
  90. package/lib/module/organisms/context-menu/context-menu.ios.js +1 -0
  91. package/lib/module/organisms/context-menu/context-menu.ios.js.map +1 -1
  92. package/lib/module/organisms/fab-menu/fab-menu.android.js +3 -0
  93. package/lib/module/organisms/fab-menu/fab-menu.android.js.map +1 -1
  94. package/lib/module/organisms/fab-menu/fab-menu.ios.js +3 -0
  95. package/lib/module/organisms/fab-menu/fab-menu.ios.js.map +1 -1
  96. package/lib/module/organisms/menu/menu-parts.js +20 -0
  97. package/lib/module/organisms/menu/menu-parts.js.map +1 -0
  98. package/lib/module/organisms/menu/menu.android.js +51 -19
  99. package/lib/module/organisms/menu/menu.android.js.map +1 -1
  100. package/lib/module/organisms/menu/menu.ios.js +71 -8
  101. package/lib/module/organisms/menu/menu.ios.js.map +1 -1
  102. package/lib/module/organisms/sheet/sheet.js +2 -1
  103. package/lib/module/organisms/sheet/sheet.js.map +1 -1
  104. package/lib/typescript/atoms/badge/badge.types.d.ts +2 -0
  105. package/lib/typescript/atoms/button/button-tokens.d.ts +6 -2
  106. package/lib/typescript/atoms/button/button.types.d.ts +19 -5
  107. package/lib/typescript/atoms/checkbox/checkbox.types.d.ts +2 -0
  108. package/lib/typescript/atoms/color-picker/color-picker.types.d.ts +2 -0
  109. package/lib/typescript/atoms/date-picker/date-picker.ios.d.ts +5 -5
  110. package/lib/typescript/atoms/date-picker/date-picker.types.d.ts +30 -7
  111. package/lib/typescript/atoms/divider/divider.ios.d.ts +4 -0
  112. package/lib/typescript/atoms/divider/divider.types.d.ts +13 -2
  113. package/lib/typescript/atoms/fab/fab.types.d.ts +21 -4
  114. package/lib/typescript/atoms/icon-button/icon-button.types.d.ts +23 -4
  115. package/lib/typescript/atoms/list/list.types.d.ts +15 -1
  116. package/lib/typescript/atoms/picker/picker.ios.d.ts +5 -3
  117. package/lib/typescript/atoms/picker/picker.types.d.ts +11 -3
  118. package/lib/typescript/atoms/progress/progress.types.d.ts +13 -2
  119. package/lib/typescript/atoms/slider/slider.ios.d.ts +4 -0
  120. package/lib/typescript/atoms/slider/slider.types.d.ts +7 -0
  121. package/lib/typescript/atoms/switch/switch.types.d.ts +2 -0
  122. package/lib/typescript/atoms/text/spans.d.ts +2 -0
  123. package/lib/typescript/atoms/text/text.types.d.ts +9 -1
  124. package/lib/typescript/atoms/text-field/text-field-input.d.ts +7 -0
  125. package/lib/typescript/atoms/text-field/text-field.types.d.ts +77 -4
  126. package/lib/typescript/molecules/collapsible/collapsible.types.d.ts +2 -0
  127. package/lib/typescript/molecules/radio-group/radio-group.types.d.ts +4 -0
  128. package/lib/typescript/molecules/search-bar/search-bar.types.d.ts +11 -1
  129. package/lib/typescript/molecules/stepper/stepper.ios.d.ts +2 -1
  130. package/lib/typescript/molecules/stepper/stepper.types.d.ts +17 -0
  131. package/lib/typescript/organisms/action-sheet/action-sheet.ios.d.ts +4 -0
  132. package/lib/typescript/organisms/action-sheet/action-sheet.types.d.ts +8 -3
  133. package/lib/typescript/organisms/alert/alert.types.d.ts +8 -3
  134. package/lib/typescript/organisms/menu/menu-parts.d.ts +14 -0
  135. package/lib/typescript/organisms/menu/menu.types.d.ts +35 -7
  136. package/lib/typescript/organisms/sheet/sheet.types.d.ts +7 -1
  137. package/package.json +4 -4
  138. package/src/atoms/badge/badge.android.tsx +9 -2
  139. package/src/atoms/badge/badge.ios.tsx +2 -2
  140. package/src/atoms/badge/badge.types.ts +2 -0
  141. package/src/atoms/button/button-tokens.ts +6 -3
  142. package/src/atoms/button/button.android.tsx +35 -11
  143. package/src/atoms/button/button.ios.tsx +72 -8
  144. package/src/atoms/button/button.types.ts +20 -5
  145. package/src/atoms/checkbox/checkbox.android.tsx +5 -2
  146. package/src/atoms/checkbox/checkbox.ios.tsx +2 -2
  147. package/src/atoms/checkbox/checkbox.types.ts +2 -0
  148. package/src/atoms/color-picker/color-picker.android.tsx +10 -2
  149. package/src/atoms/color-picker/color-picker.ios.tsx +24 -1
  150. package/src/atoms/color-picker/color-picker.types.ts +2 -0
  151. package/src/atoms/date-picker/date-picker.android.tsx +86 -16
  152. package/src/atoms/date-picker/date-picker.ios.tsx +20 -8
  153. package/src/atoms/date-picker/date-picker.types.ts +31 -7
  154. package/src/atoms/divider/divider.android.tsx +14 -3
  155. package/src/atoms/divider/divider.ios.tsx +4 -0
  156. package/src/atoms/divider/divider.types.ts +14 -2
  157. package/src/atoms/fab/fab.android.tsx +61 -11
  158. package/src/atoms/fab/fab.ios.tsx +48 -13
  159. package/src/atoms/fab/fab.types.ts +22 -4
  160. package/src/atoms/icon-button/icon-button.android.tsx +60 -10
  161. package/src/atoms/icon-button/icon-button.ios.tsx +77 -8
  162. package/src/atoms/icon-button/icon-button.types.ts +24 -4
  163. package/src/atoms/list/list.android.tsx +26 -4
  164. package/src/atoms/list/list.ios.tsx +20 -5
  165. package/src/atoms/list/list.types.ts +16 -1
  166. package/src/atoms/picker/picker.ios.tsx +46 -16
  167. package/src/atoms/picker/picker.types.ts +12 -3
  168. package/src/atoms/progress/progress.android.tsx +32 -6
  169. package/src/atoms/progress/progress.ios.tsx +11 -5
  170. package/src/atoms/progress/progress.types.ts +13 -2
  171. package/src/atoms/slider/slider.android.tsx +18 -2
  172. package/src/atoms/slider/slider.ios.tsx +38 -2
  173. package/src/atoms/slider/slider.types.ts +7 -0
  174. package/src/atoms/switch/switch.android.tsx +5 -2
  175. package/src/atoms/switch/switch.ios.tsx +2 -2
  176. package/src/atoms/switch/switch.types.ts +2 -0
  177. package/src/atoms/text/spans.ts +2 -1
  178. package/src/atoms/text/text.android.tsx +20 -7
  179. package/src/atoms/text/text.ios.tsx +7 -0
  180. package/src/atoms/text/text.types.ts +10 -1
  181. package/src/atoms/text-field/text-field-input.ts +17 -0
  182. package/src/atoms/text-field/text-field.android.tsx +132 -9
  183. package/src/atoms/text-field/text-field.ios.tsx +110 -6
  184. package/src/atoms/text-field/text-field.types.ts +98 -4
  185. package/src/molecules/collapsible/collapsible.android.tsx +10 -2
  186. package/src/molecules/collapsible/collapsible.ios.tsx +8 -2
  187. package/src/molecules/collapsible/collapsible.types.ts +2 -0
  188. package/src/molecules/radio-group/radio-group.android.tsx +18 -4
  189. package/src/molecules/radio-group/radio-group.ios.tsx +19 -5
  190. package/src/molecules/radio-group/radio-group.types.ts +4 -0
  191. package/src/molecules/search-bar/search-bar.tsx +9 -0
  192. package/src/molecules/search-bar/search-bar.types.ts +12 -1
  193. package/src/molecules/stepper/stepper.android.tsx +24 -4
  194. package/src/molecules/stepper/stepper.ios.tsx +23 -8
  195. package/src/molecules/stepper/stepper.types.ts +17 -0
  196. package/src/organisms/action-sheet/action-sheet.android.tsx +23 -11
  197. package/src/organisms/action-sheet/action-sheet.ios.tsx +20 -3
  198. package/src/organisms/action-sheet/action-sheet.types.ts +8 -3
  199. package/src/organisms/alert/alert.android.tsx +11 -8
  200. package/src/organisms/alert/alert.ios.tsx +2 -1
  201. package/src/organisms/alert/alert.types.ts +8 -3
  202. package/src/organisms/context-menu/context-menu.android.tsx +3 -2
  203. package/src/organisms/context-menu/context-menu.ios.tsx +1 -0
  204. package/src/organisms/fab-menu/fab-menu.android.tsx +3 -0
  205. package/src/organisms/fab-menu/fab-menu.ios.tsx +9 -1
  206. package/src/organisms/menu/menu-parts.ts +21 -0
  207. package/src/organisms/menu/menu.android.tsx +39 -10
  208. package/src/organisms/menu/menu.ios.tsx +55 -5
  209. package/src/organisms/menu/menu.types.ts +30 -7
  210. package/src/organisms/sheet/sheet.tsx +2 -1
  211. package/src/organisms/sheet/sheet.types.ts +7 -1
@@ -3,19 +3,26 @@
3
3
  import { Slider as SwiftUISlider } from '@expo/ui/swift-ui';
4
4
  import { disabled as disabledModifier, tint } from '@expo/ui/swift-ui/modifiers';
5
5
  import { useAppTheme } from '@hzblj/kara-theme';
6
- import { useMemo } from 'react';
6
+ import { useCallback, useMemo, useRef } from 'react';
7
7
  import { useHostGuard } from "../../host-context.js";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
+ /**
10
+ * SwiftUI's slider. `onValueChangeEnd` is its `onEditingChanged(false)`, with the last value the drag reported: the
11
+ * controlled `value` can still be a render behind when the finger lifts.
12
+ */
9
13
  export const Slider = ({
10
14
  disabled = false,
11
15
  max = 1,
12
16
  min = 0,
13
17
  onValueChange,
18
+ onValueChangeEnd,
14
19
  step,
20
+ testID,
15
21
  value
16
22
  }) => {
17
23
  useHostGuard('Slider');
18
24
  const theme = useAppTheme();
25
+ const dragged = useRef(undefined);
19
26
  const modifiers = useMemo(() => {
20
27
  const list = [tint(theme.color('fill.accent.primary'))];
21
28
  if (disabled) {
@@ -23,12 +30,25 @@ export const Slider = ({
23
30
  }
24
31
  return list;
25
32
  }, [disabled, theme]);
33
+ const onChange = useCallback(next => {
34
+ dragged.current = next;
35
+ onValueChange?.(next);
36
+ }, [onValueChange]);
37
+ const onEditingChanged = useCallback(editing => {
38
+ const final = dragged.current ?? value;
39
+ dragged.current = undefined;
40
+ if (!editing) {
41
+ onValueChangeEnd?.(final);
42
+ }
43
+ }, [onValueChangeEnd, value]);
26
44
  return /*#__PURE__*/_jsx(SwiftUISlider, {
27
45
  max: max,
28
46
  min: min,
29
47
  modifiers: modifiers,
30
- onValueChange: onValueChange,
48
+ onEditingChanged: onValueChangeEnd ? onEditingChanged : undefined,
49
+ onValueChange: onChange,
31
50
  step: step,
51
+ testID: testID,
32
52
  value: value
33
53
  });
34
54
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Slider","SwiftUISlider","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","max","min","onValueChange","step","value","theme","modifiers","list","color","push"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,QAAO,mBAAmB;AACzD,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMT,MAAuB,GAAGA,CAAC;EACtCE,QAAQ,GAAG,KAAK;EAChBQ,GAAG,GAAG,CAAC;EACPC,GAAG,GAAG,CAAC;EACPC,aAAa;EACbC,IAAI;EACJC;AACW,CAAC,KAAK;EACjBP,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMQ,KAAK,GAAGV,WAAW,CAAC,CAAC;EAE3B,MAAMW,SAAS,GAAGV,OAAO,CAAC,MAAM;IAC9B,MAAMW,IAAI,GAAG,CAACb,IAAI,CAACW,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAIhB,QAAQ,EAAE;MACZe,IAAI,CAACE,IAAI,CAAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOc,IAAI;EACb,CAAC,EAAE,CAACf,QAAQ,EAAEa,KAAK,CAAC,CAAC;EAErB,oBACEN,IAAA,CAACR,aAAa;IAACS,GAAG,EAAEA,GAAI;IAACC,GAAG,EAAEA,GAAI;IAACK,SAAS,EAAEA,SAAU;IAACJ,aAAa,EAAEA,aAAc;IAACC,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA;EAAM,CAAE,CAAC;AAEvH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Slider","SwiftUISlider","disabled","disabledModifier","tint","useAppTheme","useCallback","useMemo","useRef","useHostGuard","jsx","_jsx","max","min","onValueChange","onValueChangeEnd","step","testID","value","theme","dragged","undefined","modifiers","list","color","push","onChange","next","current","onEditingChanged","editing","final"],"sourceRoot":"../../../../src","sources":["atoms/slider/slider.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,QAAO,mBAAmB;AACzD,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAO,OAAO;AAElD,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C;AACA;AACA;AACA;AACA,OAAO,MAAMX,MAAuB,GAAGA,CAAC;EACtCE,QAAQ,GAAG,KAAK;EAChBU,GAAG,GAAG,CAAC;EACPC,GAAG,GAAG,CAAC;EACPC,aAAa;EACbC,gBAAgB;EAChBC,IAAI;EACJC,MAAM;EACNC;AACW,CAAC,KAAK;EACjBT,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMU,KAAK,GAAGd,WAAW,CAAC,CAAC;EAC3B,MAAMe,OAAO,GAAGZ,MAAM,CAAqBa,SAAS,CAAC;EAErD,MAAMC,SAAS,GAAGf,OAAO,CAAC,MAAM;IAC9B,MAAMgB,IAAI,GAAG,CAACnB,IAAI,CAACe,KAAK,CAACK,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAItB,QAAQ,EAAE;MACZqB,IAAI,CAACE,IAAI,CAACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOoB,IAAI;EACb,CAAC,EAAE,CAACrB,QAAQ,EAAEiB,KAAK,CAAC,CAAC;EAErB,MAAMO,QAAQ,GAAGpB,WAAW,CACzBqB,IAAY,IAAK;IAChBP,OAAO,CAACQ,OAAO,GAAGD,IAAI;IACtBb,aAAa,GAAGa,IAAI,CAAC;EACvB,CAAC,EACD,CAACb,aAAa,CAChB,CAAC;EAED,MAAMe,gBAAgB,GAAGvB,WAAW,CACjCwB,OAAgB,IAAK;IACpB,MAAMC,KAAK,GAAGX,OAAO,CAACQ,OAAO,IAAIV,KAAK;IACtCE,OAAO,CAACQ,OAAO,GAAGP,SAAS;IAE3B,IAAI,CAACS,OAAO,EAAE;MACZf,gBAAgB,GAAGgB,KAAK,CAAC;IAC3B;EACF,CAAC,EACD,CAAChB,gBAAgB,EAAEG,KAAK,CAC1B,CAAC;EAED,oBACEP,IAAA,CAACV,aAAa;IACZW,GAAG,EAAEA,GAAI;IACTC,GAAG,EAAEA,GAAI;IACTS,SAAS,EAAEA,SAAU;IACrBO,gBAAgB,EAAEd,gBAAgB,GAAGc,gBAAgB,GAAGR,SAAU;IAClEP,aAAa,EAAEY,QAAS;IACxBV,IAAI,EAAEA,IAAK;IACXC,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Switch as ComposeSwitch, Row, Text } from '@expo/ui/jetpack-compose';
4
- import { clickable, fillMaxWidth } from '@expo/ui/jetpack-compose/modifiers';
4
+ import { clickable, fillMaxWidth, testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
5
5
  import { haptics } from '@hzblj/expo-rich-haptics';
6
6
  import { useAppTheme } from '@hzblj/kara-theme';
7
7
  import { useCallback, useMemo } from 'react';
@@ -20,6 +20,7 @@ export const Switch = ({
20
20
  disabled = false,
21
21
  label,
22
22
  onValueChange,
23
+ testID,
23
24
  value
24
25
  }) => {
25
26
  useHostGuard('Switch');
@@ -29,6 +30,8 @@ export const Switch = ({
29
30
  onValueChange?.(next);
30
31
  }, [onValueChange]);
31
32
  const rowModifiers = useMemo(() => disabled || !onValueChange ? [fillMaxWidth()] : [fillMaxWidth(), clickable(() => toggle(!value))], [disabled, onValueChange, toggle, value]);
33
+ // On the switch, not the row: the switch is its own toggleable node inside the row, and the one a test reads.
34
+ const controlModifiers = useMemo(() => testID ? [testIdModifier(testID)] : undefined, [testID]);
32
35
  const control = /*#__PURE__*/_jsx(ComposeSwitch, {
33
36
  colors: {
34
37
  checkedBorderColor: theme.color('fill.accent.primary'),
@@ -36,6 +39,7 @@ export const Switch = ({
36
39
  checkedTrackColor: theme.color('fill.accent.primary')
37
40
  },
38
41
  enabled: !disabled,
42
+ modifiers: controlModifiers,
39
43
  onCheckedChange: onValueChange ? toggle : NOOP,
40
44
  value: value
41
45
  });
@@ -1 +1 @@
1
- {"version":3,"names":["Switch","ComposeSwitch","Row","Text","clickable","fillMaxWidth","haptics","useAppTheme","useCallback","useMemo","useHostGuard","jsx","_jsx","jsxs","_jsxs","NOOP","undefined","disabled","label","onValueChange","value","theme","toggle","next","play","rowModifiers","control","colors","checkedBorderColor","color","checkedThumbColor","checkedTrackColor","enabled","onCheckedChange","horizontalArrangement","modifiers","verticalAlignment","children","colorString","style","typography","body"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,EAAEC,GAAG,EAAEC,IAAI,QAAO,0BAA0B;AAC3E,SAAQC,SAAS,EAAEC,YAAY,QAAO,oCAAoC;AAC1E,SAAQC,OAAO,QAAO,0BAA0B;AAChD,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,OAAO,QAAO,OAAO;AAE1C,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C;AACA,MAAMC,IAAI,GAAGA,CAAA,KAAMC,SAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMhB,MAAuB,GAAGA,CAAC;EAACiB,QAAQ,GAAG,KAAK;EAAEC,KAAK;EAAEC,aAAa;EAAEC;AAAkB,CAAC,KAAK;EACvGV,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMW,KAAK,GAAGd,WAAW,CAAC,CAAC;EAC3B,MAAMe,MAAM,GAAGd,WAAW,CACvBe,IAAa,IAAK;IACjBjB,OAAO,CAACkB,IAAI,CAACD,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7CJ,aAAa,GAAGI,IAAI,CAAC;EACvB,CAAC,EACD,CAACJ,aAAa,CAChB,CAAC;EACD,MAAMM,YAAY,GAAGhB,OAAO,CAC1B,MAAOQ,QAAQ,IAAI,CAACE,aAAa,GAAG,CAACd,YAAY,CAAC,CAAC,CAAC,GAAG,CAACA,YAAY,CAAC,CAAC,EAAED,SAAS,CAAC,MAAMkB,MAAM,CAAC,CAACF,KAAK,CAAC,CAAC,CAAE,EACzG,CAACH,QAAQ,EAAEE,aAAa,EAAEG,MAAM,EAAEF,KAAK,CACzC,CAAC;EACD,MAAMM,OAAO,gBACXd,IAAA,CAACX,aAAa;IACZ0B,MAAM,EAAE;MACNC,kBAAkB,EAAEP,KAAK,CAACQ,KAAK,CAAC,qBAAqB,CAAC;MACtDC,iBAAiB,EAAET,KAAK,CAACQ,KAAK,CAAC,mBAAmB,CAAC;MACnDE,iBAAiB,EAAEV,KAAK,CAACQ,KAAK,CAAC,qBAAqB;IACtD,CAAE;IACFG,OAAO,EAAE,CAACf,QAAS;IACnBgB,eAAe,EAAEd,aAAa,GAAGG,MAAM,GAAGP,IAAK;IAC/CK,KAAK,EAAEA;EAAM,CACd,CACF;EAED,IAAI,CAACF,KAAK,EAAE;IACV,OAAOQ,OAAO;EAChB;EAEA,oBACEZ,KAAA,CAACZ,GAAG;IAACgC,qBAAqB,EAAC,cAAc;IAACC,SAAS,EAAEV,YAAa;IAACW,iBAAiB,EAAC,QAAQ;IAAAC,QAAA,gBAC3FzB,IAAA,CAACT,IAAI;MAAC0B,KAAK,EAAER,KAAK,CAACiB,WAAW,CAACrB,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,CAAE;MAACsB,KAAK,EAAElB,KAAK,CAACmB,UAAU,CAACC,IAAK;MAAAJ,QAAA,EAC7GnB;IAAK,CACF,CAAC,EACNQ,OAAO;EAAA,CACL,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Switch","ComposeSwitch","Row","Text","clickable","fillMaxWidth","testID","testIdModifier","haptics","useAppTheme","useCallback","useMemo","useHostGuard","jsx","_jsx","jsxs","_jsxs","NOOP","undefined","disabled","label","onValueChange","value","theme","toggle","next","play","rowModifiers","controlModifiers","control","colors","checkedBorderColor","color","checkedThumbColor","checkedTrackColor","enabled","modifiers","onCheckedChange","horizontalArrangement","verticalAlignment","children","colorString","style","typography","body"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,IAAIC,aAAa,EAAEC,GAAG,EAAEC,IAAI,QAAO,0BAA0B;AAC3E,SAAQC,SAAS,EAAEC,YAAY,EAAEC,MAAM,IAAIC,cAAc,QAAO,oCAAoC;AACpG,SAAQC,OAAO,QAAO,0BAA0B;AAChD,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,WAAW,EAAEC,OAAO,QAAO,OAAO;AAE1C,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C;AACA,MAAMC,IAAI,GAAGA,CAAA,KAAMC,SAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMlB,MAAuB,GAAGA,CAAC;EAACmB,QAAQ,GAAG,KAAK;EAAEC,KAAK;EAAEC,aAAa;EAAEf,MAAM;EAAEgB;AAAkB,CAAC,KAAK;EAC/GV,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMW,KAAK,GAAGd,WAAW,CAAC,CAAC;EAC3B,MAAMe,MAAM,GAAGd,WAAW,CACvBe,IAAa,IAAK;IACjBjB,OAAO,CAACkB,IAAI,CAACD,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7CJ,aAAa,GAAGI,IAAI,CAAC;EACvB,CAAC,EACD,CAACJ,aAAa,CAChB,CAAC;EACD,MAAMM,YAAY,GAAGhB,OAAO,CAC1B,MAAOQ,QAAQ,IAAI,CAACE,aAAa,GAAG,CAAChB,YAAY,CAAC,CAAC,CAAC,GAAG,CAACA,YAAY,CAAC,CAAC,EAAED,SAAS,CAAC,MAAMoB,MAAM,CAAC,CAACF,KAAK,CAAC,CAAC,CAAE,EACzG,CAACH,QAAQ,EAAEE,aAAa,EAAEG,MAAM,EAAEF,KAAK,CACzC,CAAC;EACD;EACA,MAAMM,gBAAgB,GAAGjB,OAAO,CAAC,MAAOL,MAAM,GAAG,CAACC,cAAc,CAACD,MAAM,CAAC,CAAC,GAAGY,SAAU,EAAE,CAACZ,MAAM,CAAC,CAAC;EACjG,MAAMuB,OAAO,gBACXf,IAAA,CAACb,aAAa;IACZ6B,MAAM,EAAE;MACNC,kBAAkB,EAAER,KAAK,CAACS,KAAK,CAAC,qBAAqB,CAAC;MACtDC,iBAAiB,EAAEV,KAAK,CAACS,KAAK,CAAC,mBAAmB,CAAC;MACnDE,iBAAiB,EAAEX,KAAK,CAACS,KAAK,CAAC,qBAAqB;IACtD,CAAE;IACFG,OAAO,EAAE,CAAChB,QAAS;IACnBiB,SAAS,EAAER,gBAAiB;IAC5BS,eAAe,EAAEhB,aAAa,GAAGG,MAAM,GAAGP,IAAK;IAC/CK,KAAK,EAAEA;EAAM,CACd,CACF;EAED,IAAI,CAACF,KAAK,EAAE;IACV,OAAOS,OAAO;EAChB;EAEA,oBACEb,KAAA,CAACd,GAAG;IAACoC,qBAAqB,EAAC,cAAc;IAACF,SAAS,EAAET,YAAa;IAACY,iBAAiB,EAAC,QAAQ;IAAAC,QAAA,gBAC3F1B,IAAA,CAACX,IAAI;MAAC6B,KAAK,EAAET,KAAK,CAACkB,WAAW,CAACtB,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,CAAE;MAACuB,KAAK,EAAEnB,KAAK,CAACoB,UAAU,CAACC,IAAK;MAAAJ,QAAA,EAC7GpB;IAAK,CACF,CAAC,EACNS,OAAO;EAAA,CACL,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -10,6 +10,7 @@ export const Switch = ({
10
10
  disabled = false,
11
11
  label,
12
12
  onValueChange,
13
+ testID,
13
14
  value
14
15
  }) => {
15
16
  useHostGuard('Switch');
@@ -25,7 +26,8 @@ export const Switch = ({
25
26
  isOn: value,
26
27
  label: label,
27
28
  modifiers: modifiers,
28
- onIsOnChange: onValueChange
29
+ onIsOnChange: onValueChange,
30
+ testID: testID
29
31
  });
30
32
  };
31
33
  //# sourceMappingURL=switch.ios.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Toggle","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Switch","label","onValueChange","value","theme","modifiers","list","color","push","isOn","onIsOnChange"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EAACR,QAAQ,GAAG,KAAK;EAAES,KAAK;EAAEC,aAAa;EAAEC;AAAkB,CAAC,KAAK;EACvGN,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMO,KAAK,GAAGT,WAAW,CAAC,CAAC;EAE3B,MAAMU,SAAS,GAAGT,OAAO,CAAC,MAAM;IAC9B,MAAMU,IAAI,GAAG,CAACZ,IAAI,CAACU,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAIf,QAAQ,EAAE;MACZc,IAAI,CAACE,IAAI,CAACf,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOa,IAAI;EACb,CAAC,EAAE,CAACd,QAAQ,EAAEY,KAAK,CAAC,CAAC;EAErB,oBAAOL,IAAA,CAACR,MAAM;IAACkB,IAAI,EAAEN,KAAM;IAACF,KAAK,EAAEA,KAAM;IAACI,SAAS,EAAEA,SAAU;IAACK,YAAY,EAAER;EAAc,CAAE,CAAC;AACjG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Toggle","disabled","disabledModifier","tint","useAppTheme","useMemo","useHostGuard","jsx","_jsx","Switch","label","onValueChange","testID","value","theme","modifiers","list","color","push","isOn","onIsOnChange"],"sourceRoot":"../../../../src","sources":["atoms/switch/switch.ios.tsx"],"mappings":";;AAAA,SAAQA,MAAM,QAAO,mBAAmB;AACxC,SAAQC,QAAQ,IAAIC,gBAAgB,EAAEC,IAAI,QAAO,6BAA6B;AAC9E,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAE7B,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG/C,OAAO,MAAMC,MAAuB,GAAGA,CAAC;EAACR,QAAQ,GAAG,KAAK;EAAES,KAAK;EAAEC,aAAa;EAAEC,MAAM;EAAEC;AAAkB,CAAC,KAAK;EAC/GP,YAAY,CAAC,QAAQ,CAAC;EACtB,MAAMQ,KAAK,GAAGV,WAAW,CAAC,CAAC;EAE3B,MAAMW,SAAS,GAAGV,OAAO,CAAC,MAAM;IAC9B,MAAMW,IAAI,GAAG,CAACb,IAAI,CAACW,KAAK,CAACG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvD,IAAIhB,QAAQ,EAAE;MACZe,IAAI,CAACE,IAAI,CAAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC;IAEA,OAAOc,IAAI;EACb,CAAC,EAAE,CAACf,QAAQ,EAAEa,KAAK,CAAC,CAAC;EAErB,oBAAON,IAAA,CAACR,MAAM;IAACmB,IAAI,EAAEN,KAAM;IAACH,KAAK,EAAEA,KAAM;IAACK,SAAS,EAAEA,SAAU;IAACK,YAAY,EAAET,aAAc;IAACC,MAAM,EAAEA;EAAO,CAAE,CAAC;AACjH,CAAC","ignoreList":[]}
@@ -4,7 +4,8 @@ import { Children, isValidElement } from 'react';
4
4
 
5
5
  /** A run of the text: a string child, or a nested `Text` with a colour of its own. */
6
6
 
7
- const textOf = children => Children.toArray(children).map(child => typeof child === 'string' || typeof child === 'number' ? String(child) : '').join('');
7
+ /** The string and number children, joined: the text of a `Text` without spans, however JSX split it. */
8
+ export const textOf = children => Children.toArray(children).map(child => typeof child === 'string' || typeof child === 'number' ? String(child) : '').join('');
8
9
 
9
10
  /**
10
11
  * The children as runs when any of them is a nested `Text` (`type`, the platform's own component), `null` when they
@@ -1 +1 @@
1
- {"version":3,"names":["Children","isValidElement","textOf","children","toArray","map","child","String","join","spansOf","type","items","some","flatMap","text","color","props","spansKey","spans","hash","value","span","character","charCodeAt","Math","imul"],"sourceRoot":"../../../../src","sources":["atoms/text/spans.ts"],"mappings":";;AACA,SAAQA,QAAQ,EAAEC,cAAc,QAAuB,OAAO;;AAE9D;;AAGA,MAAMC,MAAM,GAAIC,QAAmB,IACjCH,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC,CACvBE,GAAG,CAACC,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAG,EAAG,CAAC,CAC3FE,IAAI,CAAC,EAAE,CAAC;;AAEb;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAGA,CAACN,QAAmB,EAAEO,IAAa,KAAwB;EAChF,MAAMC,KAAK,GAAGX,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC;EAExC,IAAI,CAACQ,KAAK,CAACC,IAAI,CAACN,KAAK,IAAI,aAAAL,cAAc,CAACK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,CAAC,EAAE;IACtE,OAAO,IAAI;EACb;EAEA,OAAOC,KAAK,CAACE,OAAO,CAAWP,KAAK,IAAI;IACtC,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,OAAO,CAAC;QAACQ,IAAI,EAAEP,MAAM,CAACD,KAAK;MAAC,CAAC,CAAC;IAChC;IACA,IAAI,aAAAL,cAAc,CAA6CK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,EAAE;MAC5F,OAAO,CAAC;QAACK,KAAK,EAAET,KAAK,CAACU,KAAK,CAACD,KAAK;QAAED,IAAI,EAAEZ,MAAM,CAACI,KAAK,CAACU,KAAK,CAACb,QAAQ;MAAC,CAAC,CAAC;IACzE;IACA,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;;AAED;AACA,OAAO,MAAMc,QAAQ,GAAGA,CAACF,KAAiB,EAAEG,KAAiC,EAAEJ,IAAY,KAAa;EACtG,IAAIK,IAAI,GAAG,UAAU;EACrB,MAAMC,KAAK,GAAGF,KAAK,GAAGA,KAAK,CAACb,GAAG,CAACgB,IAAI,IAAI,GAAGA,IAAI,CAACN,KAAK,IAAI,EAAE,IAAIM,IAAI,CAACP,IAAI,EAAE,CAAC,CAACN,IAAI,CAAC,GAAG,CAAC,GAAGM,IAAI;EAE5F,KAAK,MAAMQ,SAAS,IAAI,GAAGP,KAAK,IAAIK,KAAK,EAAE,EAAE;IAC3CD,IAAI,IAAIG,SAAS,CAACC,UAAU,CAAC,CAAC,CAAC;IAC/BJ,IAAI,GAAGK,IAAI,CAACC,IAAI,CAACN,IAAI,EAAE,UAAU,CAAC;EACpC;EAEA,OAAOA,IAAI,KAAK,CAAC;AACnB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Children","isValidElement","textOf","children","toArray","map","child","String","join","spansOf","type","items","some","flatMap","text","color","props","spansKey","spans","hash","value","span","character","charCodeAt","Math","imul"],"sourceRoot":"../../../../src","sources":["atoms/text/spans.ts"],"mappings":";;AACA,SAAQA,QAAQ,EAAEC,cAAc,QAAuB,OAAO;;AAE9D;;AAGA;AACA,OAAO,MAAMC,MAAM,GAAIC,QAAmB,IACxCH,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC,CACvBE,GAAG,CAACC,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAG,EAAG,CAAC,CAC3FE,IAAI,CAAC,EAAE,CAAC;;AAEb;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAGA,CAACN,QAAmB,EAAEO,IAAa,KAAwB;EAChF,MAAMC,KAAK,GAAGX,QAAQ,CAACI,OAAO,CAACD,QAAQ,CAAC;EAExC,IAAI,CAACQ,KAAK,CAACC,IAAI,CAACN,KAAK,IAAI,aAAAL,cAAc,CAACK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,CAAC,EAAE;IACtE,OAAO,IAAI;EACb;EAEA,OAAOC,KAAK,CAACE,OAAO,CAAWP,KAAK,IAAI;IACtC,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,OAAO,CAAC;QAACQ,IAAI,EAAEP,MAAM,CAACD,KAAK;MAAC,CAAC,CAAC;IAChC;IACA,IAAI,aAAAL,cAAc,CAA6CK,KAAK,CAAC,IAAIA,KAAK,CAACI,IAAI,KAAKA,IAAI,EAAE;MAC5F,OAAO,CAAC;QAACK,KAAK,EAAET,KAAK,CAACU,KAAK,CAACD,KAAK;QAAED,IAAI,EAAEZ,MAAM,CAACI,KAAK,CAACU,KAAK,CAACb,QAAQ;MAAC,CAAC,CAAC;IACzE;IACA,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;;AAED;AACA,OAAO,MAAMc,QAAQ,GAAGA,CAACF,KAAiB,EAAEG,KAAiC,EAAEJ,IAAY,KAAa;EACtG,IAAIK,IAAI,GAAG,UAAU;EACrB,MAAMC,KAAK,GAAGF,KAAK,GAAGA,KAAK,CAACb,GAAG,CAACgB,IAAI,IAAI,GAAGA,IAAI,CAACN,KAAK,IAAI,EAAE,IAAIM,IAAI,CAACP,IAAI,EAAE,CAAC,CAACN,IAAI,CAAC,GAAG,CAAC,GAAGM,IAAI;EAE5F,KAAK,MAAMQ,SAAS,IAAI,GAAGP,KAAK,IAAIK,KAAK,EAAE,EAAE;IAC3CD,IAAI,IAAIG,SAAS,CAACC,UAAU,CAAC,CAAC,CAAC;IAC/BJ,IAAI,GAAGK,IAAI,CAACC,IAAI,CAACN,IAAI,EAAE,UAAU,CAAC;EACpC;EAEA,OAAOA,IAAI,KAAK,CAAC;AACnB,CAAC","ignoreList":[]}
@@ -7,13 +7,18 @@ import { animateConfig, splitAccessibility, useAccessibilityModifiers, useSxModi
7
7
  import { duration, easing, springPhysics, useAppTheme } from '@hzblj/kara-theme';
8
8
  import { useMemo } from 'react';
9
9
  import { useHostGuard } from "../../host-context.js";
10
- import { spansOf } from "./spans.js";
10
+ import { spansOf, textOf } from "./spans.js";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
12
  const DECORATION = {
13
13
  none: 'none',
14
14
  strikethrough: 'lineThrough',
15
15
  underline: 'underline'
16
16
  };
17
+ const OVERFLOW = {
18
+ head: 'startEllipsis',
19
+ middle: 'middleEllipsis',
20
+ tail: 'ellipsis'
21
+ };
17
22
  const applyTransform = (children, transform) => {
18
23
  if (!transform || typeof children !== 'string') {
19
24
  return children;
@@ -66,6 +71,7 @@ export const Text = ({
66
71
  numberOfLines,
67
72
  testID,
68
73
  transform,
74
+ truncation = 'tail',
69
75
  variant = 'body',
70
76
  ...props
71
77
  }) => {
@@ -78,12 +84,16 @@ export const Text = ({
78
84
  const modifiers = useMemo(() => [...sxModifiers, ...(testID ? [testIdModifier(testID)] : []), ...accessibilityModifiers], [accessibilityModifiers, sxModifiers, testID]);
79
85
  const spans = useMemo(() => spansOf(children, Text), [children]);
80
86
  const animate = sx.animate === false ? undefined : sx.animate;
87
+ // Compose ellipsizes at the start or in the middle of a single line only, and clips a longer text: that ends at the
88
+ // tail instead.
89
+ const overflow = numberOfLines === 1 ? OVERFLOW[truncation] : 'ellipsis';
81
90
 
82
- // `@expo/ui`'s text takes spans but animates none, and sets no font features: with `animate`, kara's own Compose text
83
- // eases each span's colour, and with `monospacedDigit` asks the face for its tabular figures.
84
- if (animate !== undefined || monospacedDigit) {
91
+ // `@expo/ui`'s text takes spans but animates none, sets no font features and ellipsizes only at the end: with
92
+ // `animate`, kara's own Compose text eases each span's colour, with `monospacedDigit` asks the face for its tabular
93
+ // figures, and puts the ellipsis at the start or in the middle of a line.
94
+ if (animate !== undefined || monospacedDigit || overflow !== 'ellipsis') {
85
95
  const runs = spans ?? [{
86
- text: typeof children === 'string' || typeof children === 'number' ? String(children) : ''
96
+ text: textOf(children)
87
97
  }];
88
98
  return /*#__PURE__*/_jsx(AnimatedText, {
89
99
  animation: animate === undefined ? undefined : textAnimation(animateConfig(animate)),
@@ -100,13 +110,15 @@ export const Text = ({
100
110
  })),
101
111
  textAlign: align,
102
112
  textColor: theme.colorString(color),
103
- textDecoration: decorationOf(decoration)
113
+ textDecoration: decorationOf(decoration),
114
+ textOverflow: overflow
104
115
  });
105
116
  }
106
117
  return /*#__PURE__*/_jsx(ComposeText, {
107
118
  color: theme.colorString(color),
108
119
  maxLines: numberOfLines,
109
120
  modifiers: modifiers,
121
+ overflow: "ellipsis",
110
122
  style: {
111
123
  fontFamily: style.fontFamily,
112
124
  fontSize: style.fontSize,
@@ -1 +1 @@
1
- {"version":3,"names":["Text","ComposeText","testID","testIdModifier","AnimatedText","animateConfig","splitAccessibility","useAccessibilityModifiers","useSxModifiers","duration","easing","springPhysics","useAppTheme","useMemo","useHostGuard","spansOf","jsx","_jsx","DECORATION","none","strikethrough","underline","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","transformed","text","textAnimation","config","spring","dampingRatio","stiffness","type","milliseconds","curve","omega","Math","PI","delayMillis","delay","durationMillis","align","color","monospaced","monospacedDigit","numberOfLines","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","modifiers","spans","animate","runs","String","animation","fontFamily","fontFeatureSettings","fontSize","fontWeight","lineHeight","maxLines","map","span","colorString","textAlign","textColor","textDecoration","index"],"sourceRoot":"../../../../src","sources":["atoms/text/text.android.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Text","ComposeText","testID","testIdModifier","AnimatedText","animateConfig","splitAccessibility","useAccessibilityModifiers","useSxModifiers","duration","easing","springPhysics","useAppTheme","useMemo","useHostGuard","spansOf","textOf","jsx","_jsx","DECORATION","none","strikethrough","underline","OVERFLOW","head","middle","tail","applyTransform","children","transform","toUpperCase","toLowerCase","decorationOf","decoration","undefined","transformed","text","textAnimation","config","spring","dampingRatio","stiffness","type","milliseconds","curve","omega","Math","PI","delayMillis","delay","durationMillis","align","color","monospaced","monospacedDigit","numberOfLines","truncation","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","modifiers","spans","animate","overflow","runs","animation","fontFamily","fontFeatureSettings","fontSize","fontWeight","lineHeight","maxLines","map","span","colorString","textAlign","textColor","textDecoration","textOverflow","index"],"sourceRoot":"../../../../src","sources":["atoms/text/text.android.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Text as SwiftUIText } from '@expo/ui/swift-ui';
4
- import { foregroundStyle, lineLimit, lineSpacing, monospacedDigit as monospacedDigitModifier, multilineTextAlignment, strikethrough, textCase, underline } from '@expo/ui/swift-ui/modifiers';
4
+ import { foregroundStyle, lineLimit, lineSpacing, monospacedDigit as monospacedDigitModifier, multilineTextAlignment, strikethrough, textCase, truncationMode, underline } from '@expo/ui/swift-ui/modifiers';
5
5
  import { scaledFont } from '@hzblj/kara-native/swift-ui';
6
6
  import { splitAccessibility, textColorTransition, useAccessibilityModifiers, useSxModifiers } from '@hzblj/kara-sx';
7
7
  import { useAppTheme } from '@hzblj/kara-theme';
@@ -31,6 +31,7 @@ export const Text = ({
31
31
  numberOfLines,
32
32
  testID,
33
33
  transform,
34
+ truncation,
34
35
  variant = 'body',
35
36
  ...props
36
37
  }) => {
@@ -79,8 +80,11 @@ export const Text = ({
79
80
  if (numberOfLines !== undefined) {
80
81
  list.push(lineLimit(numberOfLines));
81
82
  }
83
+ if (truncation) {
84
+ list.push(truncationMode(truncation));
85
+ }
82
86
  return [...list, ...transition, ...sxModifiers, ...accessibilityModifiers];
83
- }, [accessibilityModifiers, align, color, decoration, monospacedDigit, numberOfLines, style, sxModifiers, theme, transform, transition]);
87
+ }, [accessibilityModifiers, align, color, decoration, monospacedDigit, numberOfLines, style, sxModifiers, theme, transform, transition, truncation]);
84
88
  return /*#__PURE__*/_jsx(SwiftUIText, {
85
89
  modifiers: modifiers,
86
90
  testID: testID,
@@ -1 +1 @@
1
- {"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","monospacedDigit","monospacedDigitModifier","multilineTextAlignment","strikethrough","textCase","underline","scaledFont","splitAccessibility","textColorTransition","useAccessibilityModifiers","useSxModifiers","useAppTheme","useMemo","useHostGuard","spansKey","spansOf","jsx","_jsx","ALIGNMENT","center","left","right","FRAME_ALIGNMENT","align","children","color","decoration","monospaced","numberOfLines","testID","transform","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","spans","animate","transition","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined","map","span","index","text"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Text","SwiftUIText","foregroundStyle","lineLimit","lineSpacing","monospacedDigit","monospacedDigitModifier","multilineTextAlignment","strikethrough","textCase","truncationMode","underline","scaledFont","splitAccessibility","textColorTransition","useAccessibilityModifiers","useSxModifiers","useAppTheme","useMemo","useHostGuard","spansKey","spansOf","jsx","_jsx","ALIGNMENT","center","left","right","FRAME_ALIGNMENT","align","children","color","decoration","monospaced","numberOfLines","testID","transform","truncation","variant","props","theme","style","monoTypography","typography","accessibility","sx","sxModifiers","accessibilityModifiers","spans","animate","transition","modifiers","list","family","fontFamily","size","fontSize","textStyle","scalesWith","weight","Math","max","lineHeight","push","isActive","pattern","undefined","map","span","index","text"],"sourceRoot":"../../../../src","sources":["atoms/text/text.ios.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ /** Keyboards for an address, where a capital or a correction the user did not type would only break it. */
4
+ const ADDRESS_KEYBOARDS = new Set(['email', 'url']);
5
+
6
+ /** The capitalisation asked for, else `none` for an address; `undefined` leaves the platform's own. */
7
+ export const capitalizationFor = (keyboard, autoCapitalize) => autoCapitalize ?? (ADDRESS_KEYBOARDS.has(keyboard) ? 'none' : undefined);
8
+
9
+ /** Autocorrection as asked for, else on for everything but an address. */
10
+ export const autoCorrectFor = (keyboard, autoCorrect) => autoCorrect ?? !ADDRESS_KEYBOARDS.has(keyboard);
11
+
12
+ /** A no-op for a ref call that lands after the native view has gone. */
13
+ export const ignoreDetachedView = () => undefined;
14
+ //# sourceMappingURL=text-field-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ADDRESS_KEYBOARDS","Set","capitalizationFor","keyboard","autoCapitalize","has","undefined","autoCorrectFor","autoCorrect","ignoreDetachedView"],"sourceRoot":"../../../../src","sources":["atoms/text-field/text-field-input.ts"],"mappings":";;AAEA;AACA,MAAMA,iBAAiD,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;AAEnF;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,QAA2B,EAC3BC,cAAmD,KACXA,cAAc,KAAKJ,iBAAiB,CAACK,GAAG,CAACF,QAAQ,CAAC,GAAG,MAAM,GAAGG,SAAS,CAAC;;AAElH;AACA,OAAO,MAAMC,cAAc,GAAGA,CAACJ,QAA2B,EAAEK,WAAgC,KAC1FA,WAAW,IAAI,CAACR,iBAAiB,CAACK,GAAG,CAACF,QAAQ,CAAC;;AAEjD;AACA,OAAO,MAAMM,kBAAkB,GAAGA,CAAA,KAAMH,SAAS","ignoreList":[]}
@@ -1,28 +1,122 @@
1
1
  "use strict";
2
2
 
3
3
  import { Column, Text as ComposeText, OutlinedTextField, useNativeState } from '@expo/ui/jetpack-compose';
4
+ import { semantics, testID as testIdModifier } from '@expo/ui/jetpack-compose/modifiers';
4
5
  import { useSxModifiers } from '@hzblj/kara-sx';
5
6
  import { useAppTheme } from '@hzblj/kara-theme';
7
+ import { useImperativeHandle, useMemo, useRef } from 'react';
6
8
  import { Glyph } from "../../glyph/index.js";
7
9
  import { useHostGuard } from "../../host-context.js";
10
+ import { autoCorrectFor, capitalizationFor, ignoreDetachedView } from "./text-field-input.js";
8
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ const KEYBOARD = {
13
+ decimal: 'decimal',
14
+ default: 'text',
15
+ email: 'email',
16
+ number: 'number',
17
+ phone: 'phone',
18
+ url: 'uri'
19
+ };
20
+
21
+ /**
22
+ * A `secure` field asks for the password keyboards: they suggest nothing and learn nothing, and they are what Android's
23
+ * autofill takes for a password field.
24
+ */
25
+ const SECURE_KEYBOARD = {
26
+ ...KEYBOARD,
27
+ default: 'password',
28
+ number: 'numberPassword'
29
+ };
30
+
31
+ /** Compose's autofill `ContentType`s, by the hint names `@expo/ui`'s `semantics` modifier maps to them. */
32
+ const AUTOFILL_HINT = {
33
+ addressCity: 'postal-address-locality',
34
+ countryName: 'country',
35
+ creditCardNumber: 'cc-number',
36
+ emailAddress: 'email',
37
+ familyName: 'family-name',
38
+ fullStreetAddress: 'street-address',
39
+ givenName: 'given-name',
40
+ name: 'name',
41
+ newPassword: 'new-password',
42
+ oneTimeCode: 'one-time-code',
43
+ password: 'password',
44
+ postalCode: 'postal-code',
45
+ streetAddressLine1: 'address-line1',
46
+ streetAddressLine2: 'address-line2',
47
+ telephoneNumber: 'tel',
48
+ username: 'username'
49
+ };
9
50
  export const TextField = ({
51
+ autoCapitalize,
52
+ autoCorrect,
53
+ autoFocus = false,
54
+ contentType,
10
55
  defaultValue = '',
11
56
  disabled = false,
12
57
  error = false,
58
+ keyboard = 'default',
13
59
  label,
60
+ maxLength,
14
61
  multiline = false,
15
62
  onChangeText,
16
- secure = false
63
+ onFocusChange,
64
+ onSubmit,
65
+ placeholder,
66
+ ref,
67
+ secure = false,
68
+ submitLabel,
69
+ testID
17
70
  }) => {
18
71
  useHostGuard('TextField');
19
72
  const theme = useAppTheme();
20
73
  const value = useNativeState(defaultValue);
21
- const modifiers = useSxModifiers({
74
+ const field = useRef(null);
75
+ const sxModifiers = useSxModifiers({
22
76
  wide: true
23
77
  });
24
78
  const invalid = Boolean(error);
25
79
  const message = typeof error === 'string' && error ? error : undefined;
80
+ const face = {
81
+ fontFamily: theme.typography.body.fontFamily,
82
+ fontWeight: theme.typography.body.fontWeight
83
+ };
84
+ const capitalization = capitalizationFor(keyboard, autoCapitalize) ?? 'none';
85
+ const corrects = !secure && autoCorrectFor(keyboard, autoCorrect);
86
+ const singleLine = !multiline;
87
+ const submits = singleLine && Boolean(onSubmit);
88
+ useImperativeHandle(ref, () => ({
89
+ blur: () => field.current?.blur().catch(ignoreDetachedView),
90
+ // The field reports no text set from code, so the change is reported here.
91
+ clear: () => {
92
+ field.current?.clear().catch(ignoreDetachedView);
93
+ onChangeText?.('');
94
+ },
95
+ focus: () => field.current?.focus().catch(ignoreDetachedView)
96
+ }), [onChangeText]);
97
+ const modifiers = useMemo(() => [...sxModifiers, ...(testID ? [testIdModifier(testID)] : []), ...(contentType ? [semantics({
98
+ contentType: AUTOFILL_HINT[contentType]
99
+ })] : [])], [contentType, sxModifiers, testID]);
100
+
101
+ /**
102
+ * A multiline field keeps the default action, a return key that starts a new line. A single-line one asked for
103
+ * `onSubmit` without a `submitLabel` gets `done`: Compose only runs the keyboard action it was given.
104
+ */
105
+ const keyboardOptions = useMemo(() => ({
106
+ autoCorrectEnabled: corrects,
107
+ capitalization,
108
+ imeAction: singleLine ? submitLabel ?? (submits ? 'done' : 'default') : 'default',
109
+ keyboardType: (secure ? SECURE_KEYBOARD : KEYBOARD)[keyboard]
110
+ }), [capitalization, corrects, keyboard, secure, singleLine, submitLabel, submits]);
111
+
112
+ // Only the action matching `imeAction` ever fires, so each one is the submit.
113
+ const keyboardActions = useMemo(() => submits && onSubmit ? {
114
+ onDone: onSubmit,
115
+ onGo: onSubmit,
116
+ onNext: onSubmit,
117
+ onSearch: onSubmit,
118
+ onSend: onSubmit
119
+ } : undefined, [onSubmit, submits]);
26
120
  return /*#__PURE__*/_jsxs(Column, {
27
121
  verticalArrangement: {
28
122
  spacedBy: 4
@@ -32,19 +126,32 @@ export const TextField = ({
32
126
  style: theme.typography.labelMedium,
33
127
  children: label
34
128
  }) : null, /*#__PURE__*/_jsxs(OutlinedTextField, {
129
+ autoFocus: autoFocus,
35
130
  enabled: !disabled,
36
131
  isError: invalid,
132
+ keyboardActions: keyboardActions,
133
+ keyboardOptions: keyboardOptions,
134
+ maxLength: maxLength,
37
135
  modifiers: modifiers,
136
+ onFocusChanged: onFocusChange,
38
137
  onValueChange: onChangeText,
39
- singleLine: !multiline,
138
+ ref: field,
139
+ singleLine: singleLine,
40
140
  textStyle: {
41
141
  color: theme.colorString('content.primary'),
42
- fontFamily: theme.typography.body.fontFamily,
43
- fontWeight: theme.typography.body.fontWeight
142
+ ...face
44
143
  },
45
144
  value: value,
46
145
  visualTransformation: secure ? 'password' : 'none',
47
- children: [invalid ? /*#__PURE__*/_jsx(OutlinedTextField.TrailingIcon, {
146
+ children: [placeholder ?
147
+ /*#__PURE__*/
148
+ // No colour of its own: Material's placeholder colour comes down to it, dimmed with the field.
149
+ _jsx(OutlinedTextField.Placeholder, {
150
+ children: /*#__PURE__*/_jsx(ComposeText, {
151
+ style: face,
152
+ children: placeholder
153
+ })
154
+ }) : null, invalid ? /*#__PURE__*/_jsx(OutlinedTextField.TrailingIcon, {
48
155
  children: /*#__PURE__*/_jsx(Glyph, {
49
156
  color: "content.destructive",
50
157
  name: "error"
@@ -1 +1 @@
1
- {"version":3,"names":["Column","Text","ComposeText","OutlinedTextField","useNativeState","useSxModifiers","useAppTheme","Glyph","useHostGuard","jsx","_jsx","jsxs","_jsxs","TextField","defaultValue","disabled","error","label","multiline","onChangeText","secure","theme","value","modifiers","wide","invalid","Boolean","message","undefined","verticalArrangement","spacedBy","children","color","colorString","style","typography","labelMedium","enabled","isError","onValueChange","singleLine","textStyle","fontFamily","body","fontWeight","visualTransformation","TrailingIcon","name","SupportingText","footnote"],"sourceRoot":"../../../../src","sources":["atoms/text-field/text-field.android.tsx"],"mappings":";;AAAA,SAAQA,MAAM,EAAEC,IAAI,IAAIC,WAAW,EAAEC,iBAAiB,EAAEC,cAAc,QAAO,0BAA0B;AACvG,SAAQC,cAAc,QAAO,gBAAgB;AAC7C,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,KAAK,QAAO,sBAAa;AACjC,SAAQC,YAAY,QAAO,uBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C,OAAO,MAAMC,SAA6B,GAAGA,CAAC;EAC5CC,YAAY,GAAG,EAAE;EACjBC,QAAQ,GAAG,KAAK;EAChBC,KAAK,GAAG,KAAK;EACbC,KAAK;EACLC,SAAS,GAAG,KAAK;EACjBC,YAAY;EACZC,MAAM,GAAG;AACK,CAAC,KAAK;EACpBZ,YAAY,CAAC,WAAW,CAAC;EACzB,MAAMa,KAAK,GAAGf,WAAW,CAAC,CAAC;EAC3B,MAAMgB,KAAK,GAAGlB,cAAc,CAACU,YAAY,CAAC;EAC1C,MAAMS,SAAS,GAAGlB,cAAc,CAAC;IAACmB,IAAI,EAAE;EAAI,CAAC,CAAC;EAC9C,MAAMC,OAAO,GAAGC,OAAO,CAACV,KAAK,CAAC;EAC9B,MAAMW,OAAO,GAAG,OAAOX,KAAK,KAAK,QAAQ,IAAIA,KAAK,GAAGA,KAAK,GAAGY,SAAS;EAEtE,oBACEhB,KAAA,CAACZ,MAAM;IAAC6B,mBAAmB,EAAE;MAACC,QAAQ,EAAE;IAAC,CAAE;IAAAC,QAAA,GACxCd,KAAK,gBACJP,IAAA,CAACR,WAAW;MACV8B,KAAK,EAAEX,KAAK,CAACY,WAAW,CAACR,OAAO,GAAG,qBAAqB,GAAG,mBAAmB,CAAE;MAChFS,KAAK,EAAEb,KAAK,CAACc,UAAU,CAACC,WAAY;MAAAL,QAAA,EAEnCd;IAAK,CACK,CAAC,GACZ,IAAI,eACRL,KAAA,CAACT,iBAAiB;MAChBkC,OAAO,EAAE,CAACtB,QAAS;MACnBuB,OAAO,EAAEb,OAAQ;MACjBF,SAAS,EAAEA,SAAU;MACrBgB,aAAa,EAAEpB,YAAa;MAC5BqB,UAAU,EAAE,CAACtB,SAAU;MACvBuB,SAAS,EAAE;QACTT,KAAK,EAAEX,KAAK,CAACY,WAAW,CAAC,iBAAiB,CAAC;QAC3CS,UAAU,EAAErB,KAAK,CAACc,UAAU,CAACQ,IAAI,CAACD,UAAU;QAC5CE,UAAU,EAAEvB,KAAK,CAACc,UAAU,CAACQ,IAAI,CAACC;MACpC,CAAE;MACFtB,KAAK,EAAEA,KAAM;MACbuB,oBAAoB,EAAEzB,MAAM,GAAG,UAAU,GAAG,MAAO;MAAAW,QAAA,GAElDN,OAAO,gBACNf,IAAA,CAACP,iBAAiB,CAAC2C,YAAY;QAAAf,QAAA,eAC7BrB,IAAA,CAACH,KAAK;UAACyB,KAAK,EAAC,qBAAqB;UAACe,IAAI,EAAC;QAAO,CAAE;MAAC,CACpB,CAAC,GAC/B,IAAI,EACPpB,OAAO,gBACNjB,IAAA,CAACP,iBAAiB,CAAC6C,cAAc;QAAAjB,QAAA,eAC/BrB,IAAA,CAACR,WAAW;UAAC8B,KAAK,EAAEX,KAAK,CAACY,WAAW,CAAC,qBAAqB,CAAE;UAACC,KAAK,EAAEb,KAAK,CAACc,UAAU,CAACc,QAAS;UAAAlB,QAAA,EAC5FJ;QAAO,CACG;MAAC,CACkB,CAAC,GACjC,IAAI;IAAA,CACS,CAAC;EAAA,CACd,CAAC;AAEb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Column","Text","ComposeText","OutlinedTextField","useNativeState","semantics","testID","testIdModifier","useSxModifiers","useAppTheme","useImperativeHandle","useMemo","useRef","Glyph","useHostGuard","autoCorrectFor","capitalizationFor","ignoreDetachedView","jsx","_jsx","jsxs","_jsxs","KEYBOARD","decimal","default","email","number","phone","url","SECURE_KEYBOARD","AUTOFILL_HINT","addressCity","countryName","creditCardNumber","emailAddress","familyName","fullStreetAddress","givenName","name","newPassword","oneTimeCode","password","postalCode","streetAddressLine1","streetAddressLine2","telephoneNumber","username","TextField","autoCapitalize","autoCorrect","autoFocus","contentType","defaultValue","disabled","error","keyboard","label","maxLength","multiline","onChangeText","onFocusChange","onSubmit","placeholder","ref","secure","submitLabel","theme","value","field","sxModifiers","wide","invalid","Boolean","message","undefined","face","fontFamily","typography","body","fontWeight","capitalization","corrects","singleLine","submits","blur","current","catch","clear","focus","modifiers","keyboardOptions","autoCorrectEnabled","imeAction","keyboardType","keyboardActions","onDone","onGo","onNext","onSearch","onSend","verticalArrangement","spacedBy","children","color","colorString","style","labelMedium","enabled","isError","onFocusChanged","onValueChange","textStyle","visualTransformation","Placeholder","TrailingIcon","SupportingText","footnote"],"sourceRoot":"../../../../src","sources":["atoms/text-field/text-field.android.tsx"],"mappings":"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","ignoreList":[]}