@oxy.so/bloom 4.18.0 → 4.19.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 (192) hide show
  1. package/docs/adoption-matrix.mdx +5 -5
  2. package/docs/overlay.mdx +32 -0
  3. package/docs/portal.mdx +37 -0
  4. package/docs/rating.mdx +19 -2
  5. package/docs/select.mdx +10 -0
  6. package/lib/commonjs/bottom-sheet/BottomSheet.web.js +1 -0
  7. package/lib/commonjs/bottom-sheet/BottomSheet.web.js.map +1 -1
  8. package/lib/commonjs/chat-list/parts.js +1 -1
  9. package/lib/commonjs/chat-list/parts.js.map +1 -1
  10. package/lib/commonjs/chat-screen/ChatBackground.js +6 -6
  11. package/lib/commonjs/chat-screen/ChatBackground.js.map +1 -1
  12. package/lib/commonjs/dialog/Dialog.js +5 -0
  13. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  14. package/lib/commonjs/dialog/Dialog.web.js +4 -1
  15. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  16. package/lib/commonjs/index.js +7 -0
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/index.web.js +7 -0
  19. package/lib/commonjs/index.web.js.map +1 -1
  20. package/lib/commonjs/location-puck/LocationPuck.js +1 -1
  21. package/lib/commonjs/location-puck/LocationPuck.js.map +1 -1
  22. package/lib/commonjs/mail-list/parts.js +1 -1
  23. package/lib/commonjs/mail-list/parts.js.map +1 -1
  24. package/lib/commonjs/media-card/parts.js +1 -1
  25. package/lib/commonjs/media-card/parts.js.map +1 -1
  26. package/lib/commonjs/overlay/Overlay.js +23 -4
  27. package/lib/commonjs/overlay/Overlay.js.map +1 -1
  28. package/lib/commonjs/overlay/OverlayInertBoundary.js +78 -0
  29. package/lib/commonjs/overlay/OverlayInertBoundary.js.map +1 -0
  30. package/lib/commonjs/overlay/index.js +14 -0
  31. package/lib/commonjs/overlay/index.js.map +1 -1
  32. package/lib/commonjs/overlay/modal-registry.js +104 -0
  33. package/lib/commonjs/overlay/modal-registry.js.map +1 -0
  34. package/lib/commonjs/overlay/use-hardware-back.js +32 -0
  35. package/lib/commonjs/overlay/use-hardware-back.js.map +1 -0
  36. package/lib/commonjs/overlay/use-modal-overlay-active.js +33 -0
  37. package/lib/commonjs/overlay/use-modal-overlay-active.js.map +1 -0
  38. package/lib/commonjs/portal/index.js +7 -0
  39. package/lib/commonjs/portal/index.js.map +1 -1
  40. package/lib/commonjs/portal/index.web.js +7 -0
  41. package/lib/commonjs/portal/index.web.js.map +1 -1
  42. package/lib/commonjs/rating/Rating.js +33 -2
  43. package/lib/commonjs/rating/Rating.js.map +1 -1
  44. package/lib/commonjs/search/Search.js +36 -3
  45. package/lib/commonjs/search/Search.js.map +1 -1
  46. package/lib/commonjs/settings-modal/SettingsModal.js +19 -12
  47. package/lib/commonjs/settings-modal/SettingsModal.js.map +1 -1
  48. package/lib/commonjs/teleport/PortalHost.js +1 -1
  49. package/lib/commonjs/zoomable-media-gallery/ZoomableMediaGallery.js +32 -12
  50. package/lib/commonjs/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -1
  51. package/lib/module/bottom-sheet/BottomSheet.web.js +1 -0
  52. package/lib/module/bottom-sheet/BottomSheet.web.js.map +1 -1
  53. package/lib/module/chat-list/parts.js +1 -1
  54. package/lib/module/chat-list/parts.js.map +1 -1
  55. package/lib/module/chat-screen/ChatBackground.js +6 -6
  56. package/lib/module/chat-screen/ChatBackground.js.map +1 -1
  57. package/lib/module/dialog/Dialog.js +5 -0
  58. package/lib/module/dialog/Dialog.js.map +1 -1
  59. package/lib/module/dialog/Dialog.web.js +4 -1
  60. package/lib/module/dialog/Dialog.web.js.map +1 -1
  61. package/lib/module/index.js +1 -1
  62. package/lib/module/index.js.map +1 -1
  63. package/lib/module/index.web.js +1 -1
  64. package/lib/module/index.web.js.map +1 -1
  65. package/lib/module/location-puck/LocationPuck.js +1 -1
  66. package/lib/module/location-puck/LocationPuck.js.map +1 -1
  67. package/lib/module/mail-list/parts.js +1 -1
  68. package/lib/module/mail-list/parts.js.map +1 -1
  69. package/lib/module/media-card/parts.js +1 -1
  70. package/lib/module/media-card/parts.js.map +1 -1
  71. package/lib/module/overlay/Overlay.js +23 -4
  72. package/lib/module/overlay/Overlay.js.map +1 -1
  73. package/lib/module/overlay/OverlayInertBoundary.js +73 -0
  74. package/lib/module/overlay/OverlayInertBoundary.js.map +1 -0
  75. package/lib/module/overlay/index.js +2 -0
  76. package/lib/module/overlay/index.js.map +1 -1
  77. package/lib/module/overlay/modal-registry.js +96 -0
  78. package/lib/module/overlay/modal-registry.js.map +1 -0
  79. package/lib/module/overlay/use-hardware-back.js +29 -0
  80. package/lib/module/overlay/use-hardware-back.js.map +1 -0
  81. package/lib/module/overlay/use-modal-overlay-active.js +28 -0
  82. package/lib/module/overlay/use-modal-overlay-active.js.map +1 -0
  83. package/lib/module/portal/index.js +4 -0
  84. package/lib/module/portal/index.js.map +1 -1
  85. package/lib/module/portal/index.web.js +4 -0
  86. package/lib/module/portal/index.web.js.map +1 -1
  87. package/lib/module/rating/Rating.js +32 -2
  88. package/lib/module/rating/Rating.js.map +1 -1
  89. package/lib/module/search/Search.js +37 -4
  90. package/lib/module/search/Search.js.map +1 -1
  91. package/lib/module/settings-modal/SettingsModal.js +20 -13
  92. package/lib/module/settings-modal/SettingsModal.js.map +1 -1
  93. package/lib/module/teleport/PortalHost.js +1 -1
  94. package/lib/module/zoomable-media-gallery/ZoomableMediaGallery.js +32 -12
  95. package/lib/module/zoomable-media-gallery/ZoomableMediaGallery.js.map +1 -1
  96. package/lib/typescript/commonjs/bottom-sheet/BottomSheet.web.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts +2 -1
  98. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/index.d.ts +1 -1
  100. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/index.web.d.ts +1 -1
  102. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/overlay/Overlay.d.ts +1 -1
  104. package/lib/typescript/commonjs/overlay/Overlay.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/overlay/OverlayInertBoundary.d.ts +6 -0
  106. package/lib/typescript/commonjs/overlay/OverlayInertBoundary.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/overlay/index.d.ts +3 -1
  108. package/lib/typescript/commonjs/overlay/index.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/overlay/modal-registry.d.ts +53 -0
  110. package/lib/typescript/commonjs/overlay/modal-registry.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/overlay/types.d.ts +36 -0
  112. package/lib/typescript/commonjs/overlay/types.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/overlay/use-hardware-back.d.ts +11 -0
  114. package/lib/typescript/commonjs/overlay/use-hardware-back.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/overlay/use-modal-overlay-active.d.ts +7 -0
  116. package/lib/typescript/commonjs/overlay/use-modal-overlay-active.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/portal/index.d.ts +2 -0
  118. package/lib/typescript/commonjs/portal/index.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/portal/index.web.d.ts +2 -0
  120. package/lib/typescript/commonjs/portal/index.web.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/rating/Rating.d.ts +9 -1
  122. package/lib/typescript/commonjs/rating/Rating.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/rating/types.d.ts +9 -0
  124. package/lib/typescript/commonjs/rating/types.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/search/Search.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/select/types.d.ts +7 -0
  127. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/settings-modal/SettingsModal.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/teleport/PortalHost.d.ts +1 -1
  130. package/lib/typescript/commonjs/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -1
  131. package/lib/typescript/module/bottom-sheet/BottomSheet.web.d.ts.map +1 -1
  132. package/lib/typescript/module/dialog/Dialog.web.d.ts +2 -1
  133. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  134. package/lib/typescript/module/index.d.ts +1 -1
  135. package/lib/typescript/module/index.d.ts.map +1 -1
  136. package/lib/typescript/module/index.web.d.ts +1 -1
  137. package/lib/typescript/module/index.web.d.ts.map +1 -1
  138. package/lib/typescript/module/overlay/Overlay.d.ts +1 -1
  139. package/lib/typescript/module/overlay/Overlay.d.ts.map +1 -1
  140. package/lib/typescript/module/overlay/OverlayInertBoundary.d.ts +6 -0
  141. package/lib/typescript/module/overlay/OverlayInertBoundary.d.ts.map +1 -0
  142. package/lib/typescript/module/overlay/index.d.ts +3 -1
  143. package/lib/typescript/module/overlay/index.d.ts.map +1 -1
  144. package/lib/typescript/module/overlay/modal-registry.d.ts +53 -0
  145. package/lib/typescript/module/overlay/modal-registry.d.ts.map +1 -0
  146. package/lib/typescript/module/overlay/types.d.ts +36 -0
  147. package/lib/typescript/module/overlay/types.d.ts.map +1 -1
  148. package/lib/typescript/module/overlay/use-hardware-back.d.ts +11 -0
  149. package/lib/typescript/module/overlay/use-hardware-back.d.ts.map +1 -0
  150. package/lib/typescript/module/overlay/use-modal-overlay-active.d.ts +7 -0
  151. package/lib/typescript/module/overlay/use-modal-overlay-active.d.ts.map +1 -0
  152. package/lib/typescript/module/portal/index.d.ts +2 -0
  153. package/lib/typescript/module/portal/index.d.ts.map +1 -1
  154. package/lib/typescript/module/portal/index.web.d.ts +2 -0
  155. package/lib/typescript/module/portal/index.web.d.ts.map +1 -1
  156. package/lib/typescript/module/rating/Rating.d.ts +9 -1
  157. package/lib/typescript/module/rating/Rating.d.ts.map +1 -1
  158. package/lib/typescript/module/rating/types.d.ts +9 -0
  159. package/lib/typescript/module/rating/types.d.ts.map +1 -1
  160. package/lib/typescript/module/search/Search.d.ts.map +1 -1
  161. package/lib/typescript/module/select/types.d.ts +7 -0
  162. package/lib/typescript/module/select/types.d.ts.map +1 -1
  163. package/lib/typescript/module/settings-modal/SettingsModal.d.ts.map +1 -1
  164. package/lib/typescript/module/teleport/PortalHost.d.ts +1 -1
  165. package/lib/typescript/module/zoomable-media-gallery/ZoomableMediaGallery.d.ts.map +1 -1
  166. package/package.json +1 -1
  167. package/src/bottom-sheet/BottomSheet.web.tsx +6 -2
  168. package/src/chat-list/parts.tsx +1 -1
  169. package/src/chat-screen/ChatBackground.tsx +6 -6
  170. package/src/dialog/Dialog.tsx +9 -1
  171. package/src/dialog/Dialog.web.tsx +7 -4
  172. package/src/index.ts +1 -0
  173. package/src/index.web.ts +1 -0
  174. package/src/location-puck/LocationPuck.tsx +1 -1
  175. package/src/mail-list/parts.tsx +1 -1
  176. package/src/media-card/parts.tsx +1 -1
  177. package/src/overlay/Overlay.tsx +36 -14
  178. package/src/overlay/OverlayInertBoundary.tsx +72 -0
  179. package/src/overlay/index.ts +3 -1
  180. package/src/overlay/modal-registry.ts +101 -0
  181. package/src/overlay/types.ts +37 -0
  182. package/src/overlay/use-hardware-back.ts +27 -0
  183. package/src/overlay/use-modal-overlay-active.ts +31 -0
  184. package/src/portal/index.ts +5 -0
  185. package/src/portal/index.web.ts +5 -0
  186. package/src/rating/Rating.tsx +37 -2
  187. package/src/rating/types.ts +9 -0
  188. package/src/search/Search.tsx +42 -4
  189. package/src/select/types.ts +7 -0
  190. package/src/settings-modal/SettingsModal.tsx +20 -15
  191. package/src/teleport/PortalHost.tsx +1 -1
  192. package/src/zoomable-media-gallery/ZoomableMediaGallery.tsx +33 -12
@@ -50,6 +50,8 @@ import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
50
50
  import { StyledView } from "../styles/styled-primitives.js";
51
51
  import { SurfaceLevelProvider } from "../styles/surface-levels.js";
52
52
  import { layerForRank } from "./stack.js";
53
+ import { useHardwareBack } from "./use-hardware-back.js";
54
+ import { useModalOverlayRegistration } from "./use-modal-overlay-active.js";
53
55
  import { useOverlayLayer } from "./use-overlay-layer.js";
54
56
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
55
57
  const AnimatedBlurView = Animated.createAnimatedComponent(BlurView);
@@ -106,8 +108,14 @@ export function OverlayRoot({
106
108
  className,
107
109
  style,
108
110
  testID,
109
- zIndex
111
+ zIndex,
112
+ onRequestClose,
113
+ modal = false
110
114
  }) {
115
+ // On the root rather than in each surface: every portaled surface mounts one
116
+ // inside its open guard, so this is the one place that cannot be forgotten.
117
+ // The gallery once forgot it and Android back finished the whole activity.
118
+ useHardwareBack(onRequestClose);
111
119
  // Split into two components rather than branching on the hook: a pinned root
112
120
  // must not CONSUME a rank either. The toast host is pinned and mounts for the
113
121
  // whole life of the app, so holding a rank would keep the live set permanently
@@ -117,12 +125,14 @@ export function OverlayRoot({
117
125
  className: className,
118
126
  style: style,
119
127
  testID: testID,
128
+ modal: modal,
120
129
  children: children
121
130
  }) : /*#__PURE__*/_jsx(PinnedOverlayRoot, {
122
131
  zIndex: zIndex,
123
132
  className: className,
124
133
  style: style,
125
134
  testID: testID,
135
+ modal: modal,
126
136
  children: children
127
137
  });
128
138
  }
@@ -130,7 +140,8 @@ function StackedOverlayRoot({
130
140
  children,
131
141
  className,
132
142
  style,
133
- testID
143
+ testID,
144
+ modal
134
145
  }) {
135
146
  const layer = useOverlayLayer();
136
147
  return /*#__PURE__*/_jsx(OverlayRootView, {
@@ -138,6 +149,7 @@ function StackedOverlayRoot({
138
149
  className: className,
139
150
  style: style,
140
151
  testID: testID,
152
+ modal: modal,
141
153
  children: children
142
154
  });
143
155
  }
@@ -146,7 +158,8 @@ function PinnedOverlayRoot({
146
158
  className,
147
159
  style,
148
160
  testID,
149
- zIndex
161
+ zIndex,
162
+ modal
150
163
  }) {
151
164
  // Outside the stack, so descendants must not read stack depths from it
152
165
  // either — every slot is the pinned depth.
@@ -160,6 +173,7 @@ function PinnedOverlayRoot({
160
173
  className: className,
161
174
  style: style,
162
175
  testID: testID,
176
+ modal: modal,
163
177
  children: children
164
178
  });
165
179
  }
@@ -168,12 +182,17 @@ function OverlayRootView({
168
182
  className,
169
183
  style,
170
184
  testID,
171
- layer
185
+ layer,
186
+ modal
172
187
  }) {
188
+ // Android cannot confine TalkBack from this side of the outlet — the app's
189
+ // `OverlayInertBoundary` hides the content once it hears a modal is open.
190
+ useModalOverlayRegistration(modal);
173
191
  return /*#__PURE__*/_jsx(OverlayLayerContext.Provider, {
174
192
  value: layer,
175
193
  children: /*#__PURE__*/_jsx(StyledView, {
176
194
  pointerEvents: "box-none",
195
+ accessibilityViewIsModal: modal && Platform.OS !== 'web' ? true : undefined,
177
196
  className: className,
178
197
  style: [styles.root, {
179
198
  zIndex: layer.root
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","memo","useContext","useMemo","BlurView","useWindowedBlurTarget","Platform","Pressable","StyleSheet","View","Animated","useAnimatedStyle","WEB_POSITION_FIXED","StyledView","SurfaceLevelProvider","layerForRank","useOverlayLayer","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedBlurView","createAnimatedComponent","OverlayLayerContext","displayName","useOverlayLayerContext","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","children","className","style","testID","zIndex","undefined","StackedOverlayRoot","PinnedOverlayRoot","layer","OverlayRootView","root","backdrop","surface","Provider","value","pointerEvents","styles","level","AnimatedBackdropLayers","blurTarget","progress","blurIntensity","blurTint","dimColor","dimOpacity","staticOpacity","layerStyle","blurFade","opacity","dimFade","intensity","tint","blurMethod","absoluteFill","backgroundColor","StaticBackdropLayers","Backdrop","onPress","disabled","accessibilityLabel","inert","flat","flatten","styleOpacity","styleBackground","rootStyle","resolvedDimColor","layerProps","focusable","accessibilityRole","create","position","OS","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["overlay/Overlay.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","memo","useContext","useMemo","BlurView","useWindowedBlurTarget","Platform","Pressable","StyleSheet","View","Animated","useAnimatedStyle","WEB_POSITION_FIXED","StyledView","SurfaceLevelProvider","layerForRank","useHardwareBack","useModalOverlayRegistration","useOverlayLayer","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedBlurView","createAnimatedComponent","OverlayLayerContext","displayName","useOverlayLayerContext","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","children","className","style","testID","zIndex","onRequestClose","modal","undefined","StackedOverlayRoot","PinnedOverlayRoot","layer","OverlayRootView","root","backdrop","surface","Provider","value","pointerEvents","accessibilityViewIsModal","OS","styles","level","AnimatedBackdropLayers","blurTarget","progress","blurIntensity","blurTint","dimColor","dimOpacity","staticOpacity","layerStyle","blurFade","opacity","dimFade","intensity","tint","blurMethod","absoluteFill","backgroundColor","StaticBackdropLayers","Backdrop","onPress","disabled","accessibilityLabel","inert","flat","flatten","styleOpacity","styleBackground","rootStyle","resolvedDimColor","layerProps","focusable","accessibilityRole","create","position","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["overlay/Overlay.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `OverlayInertBoundary` — the app content's half of a modal overlay.
5
+ *
6
+ * A modal Bloom surface renders at the portal outlet, which is the app
7
+ * content's SIBLING. It can mark itself modal (`accessibilityViewIsModal`, which
8
+ * iOS honours by hiding the siblings), but it cannot hide the app on Android:
9
+ * TalkBack only skips a subtree whose OWN root says
10
+ * `importantForAccessibility="no-hide-descendants"`, and that root belongs to
11
+ * the app. Without it, TalkBack walked from the settings modal straight into
12
+ * the Home feed behind it (OxyHQ/Mention#1126).
13
+ *
14
+ * The app wraps its content — everything that is NOT the `PortalOutlet` — in
15
+ * this boundary. While any modal overlay is open (`./modal-registry.ts`) it
16
+ * takes that content out of the accessibility tree:
17
+ *
18
+ * - Android: `importantForAccessibility="no-hide-descendants"`.
19
+ * - iOS: `accessibilityElementsHidden`, alongside the surface's own
20
+ * `accessibilityViewIsModal` (either alone is enough; both costs nothing).
21
+ * - Web: `inert`, which removes the subtree from the tab order AND the
22
+ * accessibility tree, plus `aria-hidden` for engines that lag on `inert`.
23
+ * The web portal root is a child of `document.body`, never of the app
24
+ * root, so the surface itself is untouched. Web dialogs set no focus trap
25
+ * of their own, so nothing is applied twice.
26
+ *
27
+ * Layout: on web the boundary is `display: contents`, so it generates no box
28
+ * and a document-scrolling page lays out exactly as without it. On native it is
29
+ * a `flex: 1` view — the content it wraps already fills the root there — and it
30
+ * is never collapsed, because flattening a layout-only view would drop the
31
+ * accessibility prop the moment it is needed.
32
+ */
33
+ import { Platform, StyleSheet, View } from 'react-native';
34
+ import { useModalOverlayActive } from "./use-modal-overlay-active.js";
35
+ import { jsx as _jsx } from "react/jsx-runtime";
36
+ export function OverlayInertBoundary({
37
+ children,
38
+ style,
39
+ testID
40
+ }) {
41
+ const active = useModalOverlayActive();
42
+ if (Platform.OS === 'web') {
43
+ return /*#__PURE__*/_jsx(View, {
44
+ testID: testID,
45
+ style: [styles.web, style],
46
+ "aria-hidden": active ? true : undefined,
47
+ ...(active ? {
48
+ inert: true
49
+ } : null),
50
+ children: children
51
+ });
52
+ }
53
+ return /*#__PURE__*/_jsx(View, {
54
+ testID: testID,
55
+ collapsable: false,
56
+ style: [styles.native, style],
57
+ importantForAccessibility: active ? 'no-hide-descendants' : 'auto',
58
+ accessibilityElementsHidden: active,
59
+ children: children
60
+ });
61
+ }
62
+ OverlayInertBoundary.displayName = 'OverlayInertBoundary';
63
+ const styles = StyleSheet.create({
64
+ native: {
65
+ flex: 1
66
+ },
67
+ // No box of its own on web: the wrapped content lays out against the
68
+ // boundary's parent, flex tree or document scroll alike.
69
+ web: {
70
+ display: 'contents'
71
+ }
72
+ });
73
+ //# sourceMappingURL=OverlayInertBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","StyleSheet","View","useModalOverlayActive","jsx","_jsx","OverlayInertBoundary","children","style","testID","active","OS","styles","web","undefined","inert","collapsable","native","importantForAccessibility","accessibilityElementsHidden","displayName","create","flex","display"],"sourceRoot":"../../../src","sources":["overlay/OverlayInertBoundary.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAGzD,SAASC,qBAAqB,QAAQ,+BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEnE,OAAO,SAASC,oBAAoBA,CAAC;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAkC,CAAC,EAAE;EAC3F,MAAMC,MAAM,GAAGP,qBAAqB,CAAC,CAAC;EAEtC,IAAIH,QAAQ,CAACW,EAAE,KAAK,KAAK,EAAE;IACzB,oBACEN,IAAA,CAACH,IAAI;MACHO,MAAM,EAAEA,MAAO;MACfD,KAAK,EAAE,CAACI,MAAM,CAACC,GAAG,EAAEL,KAAK,CAAE;MAC3B,eAAaE,MAAM,GAAG,IAAI,GAAGI,SAAU;MAAA,IAClCJ,MAAM,GAAG;QAAEK,KAAK,EAAE;MAAK,CAAC,GAAG,IAAI;MAAAR,QAAA,EAEnCA;IAAQ,CACL,CAAC;EAEX;EAEA,oBACEF,IAAA,CAACH,IAAI;IACHO,MAAM,EAAEA,MAAO;IACfO,WAAW,EAAE,KAAM;IACnBR,KAAK,EAAE,CAACI,MAAM,CAACK,MAAM,EAAET,KAAK,CAAE;IAC9BU,yBAAyB,EAAER,MAAM,GAAG,qBAAqB,GAAG,MAAO;IACnES,2BAA2B,EAAET,MAAO;IAAAH,QAAA,EAEnCA;EAAQ,CACL,CAAC;AAEX;AAEAD,oBAAoB,CAACc,WAAW,GAAG,sBAAsB;AAEzD,MAAMR,MAAM,GAAGX,UAAU,CAACoB,MAAM,CAAC;EAC/BJ,MAAM,EAAE;IAAEK,IAAI,EAAE;EAAE,CAAC;EACnB;EACA;EACAT,GAAG,EAAE;IAAEU,OAAO,EAAE;EAAW;AAC7B,CAAC,CAAC","ignoreList":[]}
@@ -2,5 +2,7 @@
2
2
 
3
3
  export { layerForRank, OVERLAY_STACK_BAND, OVERLAY_STACK_BASE, OVERLAY_STACK_MAX_RANK, TOAST_LAYER_Z } from "./stack.js";
4
4
  export { useOverlayLayer } from "./use-overlay-layer.js";
5
+ export { useModalOverlayActive } from "./use-modal-overlay-active.js";
6
+ export { OverlayInertBoundary } from "./OverlayInertBoundary.js";
5
7
  export { useOverlayLayerContext, BACKDROP_BLUR_INTENSITY, BACKDROP_DIM_OPACITY, OverlayRoot, Backdrop } from "./Overlay.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["layerForRank","OVERLAY_STACK_BAND","OVERLAY_STACK_BASE","OVERLAY_STACK_MAX_RANK","TOAST_LAYER_Z","useOverlayLayer","useOverlayLayerContext","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","Backdrop"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":";;AAAA,SACEA,YAAY,EACZC,kBAAkB,EAClBC,kBAAkB,EAClBC,sBAAsB,EACtBC,aAAa,QAER,YAAS;AAChB,SAASC,eAAe,QAAQ,wBAAqB;AACrD,SACEC,sBAAsB,EACtBC,uBAAuB,EACvBC,oBAAoB,EACpBC,WAAW,EACXC,QAAQ,QACH,cAAW","ignoreList":[]}
1
+ {"version":3,"names":["layerForRank","OVERLAY_STACK_BAND","OVERLAY_STACK_BASE","OVERLAY_STACK_MAX_RANK","TOAST_LAYER_Z","useOverlayLayer","useModalOverlayActive","OverlayInertBoundary","useOverlayLayerContext","BACKDROP_BLUR_INTENSITY","BACKDROP_DIM_OPACITY","OverlayRoot","Backdrop"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":";;AAAA,SACEA,YAAY,EACZC,kBAAkB,EAClBC,kBAAkB,EAClBC,sBAAsB,EACtBC,aAAa,QAER,YAAS;AAChB,SAASC,eAAe,QAAQ,wBAAqB;AACrD,SAASC,qBAAqB,QAAQ,+BAA4B;AAClE,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SACEC,sBAAsB,EACtBC,uBAAuB,EACvBC,oBAAoB,EACpBC,WAAW,EACXC,QAAQ,QACH,cAAW","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Which MODAL overlays are open right now, as a subscribable store.
5
+ *
6
+ * ## Why this exists
7
+ *
8
+ * A modal surface has to keep a screen reader inside it. iOS can do that from
9
+ * the overlay's side: `accessibilityViewIsModal` on the `OverlayRoot` hides its
10
+ * siblings, and at the native portal outlet the app content IS a sibling.
11
+ * Android has no equivalent. TalkBack keeps walking into the app behind the
12
+ * open surface (OxyHQ/Mention#1126: the Home feed stayed reachable under the
13
+ * settings modal), and the only switch that stops it —
14
+ * `importantForAccessibility="no-hide-descendants"` — has to sit ON the app
15
+ * content. A portaled surface cannot reach that view: the outlet renders it as
16
+ * the content's sibling, not its ancestor.
17
+ *
18
+ * So the knowledge travels the other way. Every `OverlayRoot` with `modal`
19
+ * registers here while it is mounted, and `OverlayInertBoundary` — which the
20
+ * app wraps around its own content — subscribes and hides what it wraps while
21
+ * anything modal is open.
22
+ *
23
+ * Non-modal overlays (menus, popovers, tooltips, toasts, the shell drawers)
24
+ * never register: the content under an anchored menu must stay reachable.
25
+ *
26
+ * Tokens rather than a counter so StrictMode's mount/unmount/remount and an
27
+ * unmatched release can never drift the count: a token is either in the set or
28
+ * not.
29
+ */
30
+
31
+ /**
32
+ * `globalThis`-anchored for the same reason as `./stack.ts`: the surfaces that
33
+ * register (`./dialog`, `./settings-modal`, …) and the boundary the app mounts
34
+ * (`./portal`) are imported through different subpaths, and a bundler can
35
+ * resolve those through different export conditions. Two physical copies of
36
+ * this module would each keep their own set, and the boundary would never hear
37
+ * about the surfaces.
38
+ */
39
+ function registry() {
40
+ globalThis.__oxy_so_bloom_modal_overlays__ ??= {
41
+ live: new Set(),
42
+ listeners: new Set()
43
+ };
44
+ return globalThis.__oxy_so_bloom_modal_overlays__;
45
+ }
46
+ function notify(reg) {
47
+ for (const listener of Array.from(reg.listeners)) listener();
48
+ }
49
+
50
+ /**
51
+ * Mark a modal overlay as open. Returns its release. Called from an effect in
52
+ * `OverlayRoot`, which React balances even under StrictMode.
53
+ */
54
+ export function registerModalOverlay(token) {
55
+ const reg = registry();
56
+ const wasActive = reg.live.size > 0;
57
+ reg.live.add(token);
58
+ if (!wasActive) notify(reg);
59
+ return () => {
60
+ const current = registry();
61
+ if (!current.live.delete(token)) return;
62
+ if (current.live.size === 0) notify(current);
63
+ };
64
+ }
65
+
66
+ /** Whether any modal overlay is open. */
67
+ export function hasActiveModalOverlays() {
68
+ return registry().live.size > 0;
69
+ }
70
+
71
+ /** How many modal overlays are open. Exported for tests. */
72
+ export function activeModalOverlayCount() {
73
+ return registry().live.size;
74
+ }
75
+
76
+ /**
77
+ * Subscribe to changes in `hasActiveModalOverlays()`. Listeners fire only when
78
+ * the answer flips — a second modal opening over a first changes nothing for
79
+ * the content underneath.
80
+ */
81
+ export function subscribeModalOverlays(listener) {
82
+ const reg = registry();
83
+ reg.listeners.add(listener);
84
+ return () => {
85
+ registry().listeners.delete(listener);
86
+ };
87
+ }
88
+
89
+ /** Test seam — drops all open modals, notifying current subscribers. */
90
+ export function resetModalOverlays() {
91
+ const reg = registry();
92
+ const wasActive = reg.live.size > 0;
93
+ reg.live.clear();
94
+ if (wasActive) notify(reg);
95
+ }
96
+ //# sourceMappingURL=modal-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["registry","globalThis","__oxy_so_bloom_modal_overlays__","live","Set","listeners","notify","reg","listener","Array","from","registerModalOverlay","token","wasActive","size","add","current","delete","hasActiveModalOverlays","activeModalOverlayCount","subscribeModalOverlays","resetModalOverlays","clear"],"sourceRoot":"../../../src","sources":["overlay/modal-registry.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,QAAQA,CAAA,EAAkB;EACjCC,UAAU,CAACC,+BAA+B,KAAK;IAAEC,IAAI,EAAE,IAAIC,GAAG,CAAC,CAAC;IAAEC,SAAS,EAAE,IAAID,GAAG,CAAC;EAAE,CAAC;EACxF,OAAOH,UAAU,CAACC,+BAA+B;AACnD;AAEA,SAASI,MAAMA,CAACC,GAAkB,EAAQ;EACxC,KAAK,MAAMC,QAAQ,IAAIC,KAAK,CAACC,IAAI,CAACH,GAAG,CAACF,SAAS,CAAC,EAAEG,QAAQ,CAAC,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASG,oBAAoBA,CAACC,KAAa,EAAc;EAC9D,MAAML,GAAG,GAAGP,QAAQ,CAAC,CAAC;EACtB,MAAMa,SAAS,GAAGN,GAAG,CAACJ,IAAI,CAACW,IAAI,GAAG,CAAC;EACnCP,GAAG,CAACJ,IAAI,CAACY,GAAG,CAACH,KAAK,CAAC;EACnB,IAAI,CAACC,SAAS,EAAEP,MAAM,CAACC,GAAG,CAAC;EAC3B,OAAO,MAAM;IACX,MAAMS,OAAO,GAAGhB,QAAQ,CAAC,CAAC;IAC1B,IAAI,CAACgB,OAAO,CAACb,IAAI,CAACc,MAAM,CAACL,KAAK,CAAC,EAAE;IACjC,IAAII,OAAO,CAACb,IAAI,CAACW,IAAI,KAAK,CAAC,EAAER,MAAM,CAACU,OAAO,CAAC;EAC9C,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,sBAAsBA,CAAA,EAAY;EAChD,OAAOlB,QAAQ,CAAC,CAAC,CAACG,IAAI,CAACW,IAAI,GAAG,CAAC;AACjC;;AAEA;AACA,OAAO,SAASK,uBAAuBA,CAAA,EAAW;EAChD,OAAOnB,QAAQ,CAAC,CAAC,CAACG,IAAI,CAACW,IAAI;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,sBAAsBA,CAACZ,QAAoB,EAAc;EACvE,MAAMD,GAAG,GAAGP,QAAQ,CAAC,CAAC;EACtBO,GAAG,CAACF,SAAS,CAACU,GAAG,CAACP,QAAQ,CAAC;EAC3B,OAAO,MAAM;IACXR,QAAQ,CAAC,CAAC,CAACK,SAAS,CAACY,MAAM,CAACT,QAAQ,CAAC;EACvC,CAAC;AACH;;AAEA;AACA,OAAO,SAASa,kBAAkBA,CAAA,EAAS;EACzC,MAAMd,GAAG,GAAGP,QAAQ,CAAC,CAAC;EACtB,MAAMa,SAAS,GAAGN,GAAG,CAACJ,IAAI,CAACW,IAAI,GAAG,CAAC;EACnCP,GAAG,CAACJ,IAAI,CAACmB,KAAK,CAAC,CAAC;EAChB,IAAIT,SAAS,EAAEP,MAAM,CAACC,GAAG,CAAC;AAC5B","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { BackHandler, Platform } from 'react-native';
5
+
6
+ /**
7
+ * Consume Android's hardware back for as long as the caller is mounted with a
8
+ * handler, calling the CURRENT `onBack` (read through a ref, so a new closure
9
+ * each render does not re-register and lose its place in the LIFO order).
10
+ *
11
+ * `BackHandler` runs the newest listener first, so surfaces opened later close
12
+ * first. No-op off Android and when `BackHandler` is absent (web bundles, and
13
+ * some test environments' react-native mocks).
14
+ */
15
+ export function useHardwareBack(onBack) {
16
+ const onBackRef = useRef(onBack);
17
+ onBackRef.current = onBack;
18
+ const active = onBack !== undefined;
19
+ useEffect(() => {
20
+ if (!active || Platform.OS !== 'android') return;
21
+ if (typeof BackHandler?.addEventListener !== 'function') return;
22
+ const subscription = BackHandler.addEventListener('hardwareBackPress', () => {
23
+ onBackRef.current?.();
24
+ return true;
25
+ });
26
+ return () => subscription.remove();
27
+ }, [active]);
28
+ }
29
+ //# sourceMappingURL=use-hardware-back.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","BackHandler","Platform","useHardwareBack","onBack","onBackRef","current","active","undefined","OS","addEventListener","subscription","remove"],"sourceRoot":"../../../src","sources":["overlay/use-hardware-back.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,cAAc;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,MAAgC,EAAQ;EACtE,MAAMC,SAAS,GAAGL,MAAM,CAACI,MAAM,CAAC;EAChCC,SAAS,CAACC,OAAO,GAAGF,MAAM;EAC1B,MAAMG,MAAM,GAAGH,MAAM,KAAKI,SAAS;EAEnCT,SAAS,CAAC,MAAM;IACd,IAAI,CAACQ,MAAM,IAAIL,QAAQ,CAACO,EAAE,KAAK,SAAS,EAAE;IAC1C,IAAI,OAAOR,WAAW,EAAES,gBAAgB,KAAK,UAAU,EAAE;IACzD,MAAMC,YAAY,GAAGV,WAAW,CAACS,gBAAgB,CAAC,mBAAmB,EAAE,MAAM;MAC3EL,SAAS,CAACC,OAAO,GAAG,CAAC;MACrB,OAAO,IAAI;IACb,CAAC,CAAC;IACF,OAAO,MAAMK,YAAY,CAACC,MAAM,CAAC,CAAC;EACpC,CAAC,EAAE,CAACL,MAAM,CAAC,CAAC;AACd","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * `useModalOverlayActive` — whether any modal Bloom overlay is open.
5
+ *
6
+ * Re-renders only when the answer flips. See `./modal-registry.ts` for who
7
+ * registers and why.
8
+ */
9
+ import { useEffect, useSyncExternalStore } from 'react';
10
+ import { hasActiveModalOverlays, registerModalOverlay, subscribeModalOverlays } from "./modal-registry.js";
11
+
12
+ /** `false` on the server: nothing is open before hydration. */
13
+ const serverSnapshot = () => false;
14
+ export function useModalOverlayActive() {
15
+ return useSyncExternalStore(subscribeModalOverlays, hasActiveModalOverlays, serverSnapshot);
16
+ }
17
+
18
+ /**
19
+ * Register as an open modal overlay while mounted and `modal` is true. Used by
20
+ * `OverlayRoot`; exported only within the family.
21
+ */
22
+ export function useModalOverlayRegistration(modal) {
23
+ useEffect(() => {
24
+ if (!modal) return undefined;
25
+ return registerModalOverlay({});
26
+ }, [modal]);
27
+ }
28
+ //# sourceMappingURL=use-modal-overlay-active.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useSyncExternalStore","hasActiveModalOverlays","registerModalOverlay","subscribeModalOverlays","serverSnapshot","useModalOverlayActive","useModalOverlayRegistration","modal","undefined"],"sourceRoot":"../../../src","sources":["overlay/use-modal-overlay-active.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,oBAAoB,QAAQ,OAAO;AAEvD,SACEC,sBAAsB,EACtBC,oBAAoB,EACpBC,sBAAsB,QACjB,qBAAkB;;AAEzB;AACA,MAAMC,cAAc,GAAGA,CAAA,KAAM,KAAK;AAElC,OAAO,SAASC,qBAAqBA,CAAA,EAAY;EAC/C,OAAOL,oBAAoB,CAACG,sBAAsB,EAAEF,sBAAsB,EAAEG,cAAc,CAAC;AAC7F;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASE,2BAA2BA,CAACC,KAAc,EAAQ;EAChER,SAAS,CAAC,MAAM;IACd,IAAI,CAACQ,KAAK,EAAE,OAAOC,SAAS;IAC5B,OAAON,oBAAoB,CAAC,CAAC,CAAC,CAAC;EACjC,CAAC,EAAE,CAACK,KAAK,CAAC,CAAC;AACb","ignoreList":[]}
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  export { PortalProvider, PortalOutlet, Portal } from './Portal';
4
+ // The app-content half of a modal overlay: wrap everything EXCEPT the
5
+ // `PortalOutlet` in it. Lives in `overlay/` (it reads the modal registry) and is
6
+ // offered here because this is the subpath the app root already imports.
7
+ export { OverlayInertBoundary } from "../overlay/OverlayInertBoundary.js";
4
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PortalProvider","PortalOutlet","Portal"],"sourceRoot":"../../../src","sources":["portal/index.ts"],"mappings":";;AAAA,SACEA,cAAc,EACdC,YAAY,EACZC,MAAM,QACD,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["PortalProvider","PortalOutlet","Portal","OverlayInertBoundary"],"sourceRoot":"../../../src","sources":["portal/index.ts"],"mappings":";;AAAA,SACEA,cAAc,EACdC,YAAY,EACZC,MAAM,QACD,UAAU;AACjB;AACA;AACA;AACA,SAASC,oBAAoB,QAAQ,oCAAiC","ignoreList":[]}
@@ -6,4 +6,8 @@
6
6
  // changing that barrel or the set of web-forked subpaths.
7
7
 
8
8
  export { PortalProvider, PortalOutlet, Portal } from "./Portal.web.js";
9
+ // The app-content half of a modal overlay: wrap everything EXCEPT the
10
+ // `PortalOutlet` in it. Lives in `overlay/` (it reads the modal registry) and is
11
+ // offered here because this is the subpath the app root already imports.
12
+ export { OverlayInertBoundary } from "../overlay/OverlayInertBoundary.js";
9
13
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["PortalProvider","PortalOutlet","Portal"],"sourceRoot":"../../../src","sources":["portal/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SACEA,cAAc,EACdC,YAAY,EACZC,MAAM,QACD,iBAAc","ignoreList":[]}
1
+ {"version":3,"names":["PortalProvider","PortalOutlet","Portal","OverlayInertBoundary"],"sourceRoot":"../../../src","sources":["portal/index.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SACEA,cAAc,EACdC,YAAY,EACZC,MAAM,QACD,iBAAc;AACrB;AACA;AACA;AACA,SAASC,oBAAoB,QAAQ,oCAAiC","ignoreList":[]}
@@ -25,7 +25,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
25
  * `variant="stars"` draws five stars before the value instead of one, 2px
26
26
  * apart, each filled to its share of the value: the unfilled star in
27
27
  * `emptyStarColor` (border), and over it the filled star clipped to the
28
- * fraction. The clip is anchored with a LOGICAL inset (`insetInlineStart`) so a
28
+ * fraction. The fill comes from `fillValue` when given, else from `value`
29
+ * (parsed by `parseRatingValue` when it is a localised string). The clip is anchored with a LOGICAL inset (`insetInlineStart`) so a
29
30
  * right-to-left row fills from the right — the root carries
30
31
  * `useDirectionProps()` for react-native-web to resolve it.
31
32
  *
@@ -58,11 +59,39 @@ const IS_WEB = Platform.OS === 'web';
58
59
  const STAR_COUNT = 5;
59
60
  const STAR_GAP = 2;
60
61
 
62
+ /**
63
+ * Bidi isolates and marks (U+2066–U+2069 LRI/RLI/FSI/PDI, U+200E/U+200F
64
+ * LRM/RLM, U+061C ALM) a localised string is wrapped in. None of them are
65
+ * part of the number.
66
+ */
67
+ const FORMAT_CHARACTERS = /[\u2066-\u2069\u200E\u200F\u061C]/g;
68
+ /** Arabic-Indic (U+0660) and extended Arabic-Indic (U+06F0) digit zeros. */
69
+ const ARABIC_ZERO = 0x0660;
70
+ const EXTENDED_ARABIC_ZERO = 0x06f0;
71
+
72
+ /**
73
+ * The number a drawn rating value stands for, for the `stars` fill: a number
74
+ * is itself; a string is read after dropping bidi/format characters, with a
75
+ * comma or Arabic decimal separator (U+066B) accepted as the decimal point and
76
+ * Arabic-Indic digits accepted — so "4,5" wrapped in FSI…PDI is 4.5. Otherwise it is
77
+ * `Number()`'s reading, so anything unreadable is `NaN` (no fill).
78
+ */
79
+ export function parseRatingValue(value) {
80
+ if (typeof value === 'number') return value;
81
+ const text = value.replace(FORMAT_CHARACTERS, '').trim().replace(/[\u0660-\u0669]/g, d => String(d.charCodeAt(0) - ARABIC_ZERO)).replace(/[\u06F0-\u06F9]/g, d => String(d.charCodeAt(0) - EXTENDED_ARABIC_ZERO)).replace(/[,\u066B]/, '.');
82
+ return Number(text);
83
+ }
84
+
61
85
  /** How much of star `index` (0-based) a rating fills, `0..1`. */
62
86
  export function starFill(rating, index) {
63
87
  if (!Number.isFinite(rating)) return 0;
64
88
  return Math.min(1, Math.max(0, rating - index));
65
89
  }
90
+
91
+ /** A fill on the five-star scale, clamped to `0..5`; `NaN` stays `NaN` (no fill). */
92
+ function clampRating(rating) {
93
+ return Math.min(STAR_COUNT, Math.max(0, rating));
94
+ }
66
95
  function StarRow({
67
96
  rating,
68
97
  size,
@@ -123,6 +152,7 @@ function RatingComponent({
123
152
  starColor,
124
153
  countColor,
125
154
  emptyStarColor,
155
+ fillValue,
126
156
  accessibilityLabel,
127
157
  style,
128
158
  testID
@@ -152,7 +182,7 @@ function RatingComponent({
152
182
  gap: 4
153
183
  }, style],
154
184
  children: [variant === 'stars' && rated ? /*#__PURE__*/_jsx(StarRow, {
155
- rating: typeof value === 'number' ? value : Number(value),
185
+ rating: clampRating(fillValue ?? parseRatingValue(value)),
156
186
  size: config.star,
157
187
  fill: starPaint,
158
188
  empty: emptyStarColor ?? theme.colors.border,
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","Platform","View","RiStarFill","useDirectionProps","useTheme","Text","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","star","value","count","medium","formatRatingValue","Number","isInteger","toFixed","String","Math","round","IS_WEB","OS","STAR_COUNT","STAR_GAP","starFill","rating","index","isFinite","min","max","StarRow","size","fill","empty","testID","style","flexDirection","alignItems","gap","children","Array","from","length","_","share","width","height","undefined","position","top","bottom","insetInlineStart","overflow","RatingComponent","countStyle","reviewsLabel","newLabel","variant","color","starColor","countColor","emptyStarColor","accessibilityLabel","theme","directionProps","textColor","colors","text","starPaint","countPaint","textSecondary","config","rated","shownValue","hasCount","countText","name","accessible","role","border","fontVariant","Rating","displayName"],"sourceRoot":"../../../src","sources":["rating/Rating.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAE7C,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SAASC,IAAI,QAAQ,wBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAIrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,WAAmG,GAAG;EAC1GC,KAAK,EAAE;IAAEC,IAAI,EAAE,EAAE;IAAEC,KAAK,EAAE,iBAAiB;IAAEC,KAAK,EAAE;EAAiB,CAAC;EACtEC,MAAM,EAAE;IAAEH,IAAI,EAAE,EAAE;IAAEC,KAAK,EAAE,eAAe;IAAEC,KAAK,EAAE;EAAe;AACpE,CAAC;;AAED;AACA,OAAO,SAASE,iBAAiBA,CAACH,KAAsB,EAAU;EAChE,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOA,KAAK;EAC3C,IAAII,MAAM,CAACC,SAAS,CAACL,KAAK,CAAC,EAAE,OAAOA,KAAK,CAACM,OAAO,CAAC,CAAC,CAAC;EACpD,OAAOC,MAAM,CAACC,IAAI,CAACC,KAAK,CAACT,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC9C;AAEA,MAAMU,MAAM,GAAGvB,QAAQ,CAACwB,EAAE,KAAK,KAAK;;AAEpC;AACA,MAAMC,UAAU,GAAG,CAAC;AACpB,MAAMC,QAAQ,GAAG,CAAC;;AAElB;AACA,OAAO,SAASC,QAAQA,CAACC,MAAc,EAAEC,KAAa,EAAU;EAC9D,IAAI,CAACZ,MAAM,CAACa,QAAQ,CAACF,MAAM,CAAC,EAAE,OAAO,CAAC;EACtC,OAAOP,IAAI,CAACU,GAAG,CAAC,CAAC,EAAEV,IAAI,CAACW,GAAG,CAAC,CAAC,EAAEJ,MAAM,GAAGC,KAAK,CAAC,CAAC;AACjD;AAEA,SAASI,OAAOA,CAAC;EACfL,MAAM;EACNM,IAAI;EACJC,IAAI;EACJC,KAAK;EACLC;AAOF,CAAC,EAAE;EACD,oBACE9B,IAAA,CAACN,IAAI;IAACqC,KAAK,EAAE;MAAEC,aAAa,EAAE,KAAK;MAAEC,UAAU,EAAE,QAAQ;MAAEC,GAAG,EAAEf;IAAS,CAAE;IAACW,MAAM,EAAEA,MAAO;IAAAK,QAAA,EACxFC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEpB;IAAW,CAAC,EAAE,CAACqB,CAAC,EAAEjB,KAAK,KAAK;MAChD,MAAMkB,KAAK,GAAGpB,QAAQ,CAACC,MAAM,EAAEC,KAAK,CAAC;MACrC,oBACEpB,KAAA,CAACR,IAAI;QAAaqC,KAAK,EAAE;UAAEU,KAAK,EAAEd,IAAI;UAAEe,MAAM,EAAEf;QAAK,CAAE;QAAAQ,QAAA,gBACrDnC,IAAA,CAACL,UAAU;UAAC8C,KAAK,EAAEd,IAAK;UAACe,MAAM,EAAEf,IAAK;UAACC,IAAI,EAAEC;QAAM,CAAE,CAAC,EACrDW,KAAK,GAAG,CAAC,gBACRxC,IAAA,CAACN,IAAI;UACHoC,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,IAAIR,KAAK,EAAE,GAAGqB,SAAU;UAClDZ,KAAK,EAAE;YACLa,QAAQ,EAAE,UAAU;YACpBC,GAAG,EAAE,CAAC;YACNC,MAAM,EAAE,CAAC;YACTC,gBAAgB,EAAE,CAAC;YACnBN,KAAK,EAAEd,IAAI,GAAGa,KAAK;YACnBQ,QAAQ,EAAE,QAAQ;YAClBf,UAAU,EAAE;UACd,CAAE;UAAAE,QAAA,eAEFnC,IAAA,CAACL,UAAU;YAAC8C,KAAK,EAAEd,IAAK;YAACe,MAAM,EAAEf,IAAK;YAACC,IAAI,EAAEA;UAAK,CAAE;QAAC,CACjD,CAAC,GACL,IAAI;MAAA,GAjBCN,KAkBL,CAAC;IAEX,CAAC;EAAC,CACE,CAAC;AAEX;AAEA,SAAS2B,eAAeA,CAAC;EACvB3C,KAAK;EACLC,KAAK;EACL2C,UAAU,GAAG,aAAa;EAC1BC,YAAY,GAAG,SAAS;EACxBC,QAAQ,GAAG,KAAK;EAChBzB,IAAI,GAAG,QAAQ;EACf0B,OAAO,GAAG,SAAS;EACnBC,KAAK;EACLC,SAAS;EACTC,UAAU;EACVC,cAAc;EACdC,kBAAkB;EAClB3B,KAAK;EACLD;AACW,CAAC,EAAE;EACd,MAAM6B,KAAK,GAAG9D,QAAQ,CAAC,CAAC;EACxB,MAAM+D,cAAc,GAAGhE,iBAAiB,CAAC,CAAC;EAC1C,MAAMiE,SAAS,GAAGP,KAAK,IAAIK,KAAK,CAACG,MAAM,CAACC,IAAI;EAC5C,MAAMC,SAAS,GAAGT,SAAS,IAAIM,SAAS;EACxC,MAAMI,UAAU,GAAGT,UAAU,IAAIF,KAAK,IAAIK,KAAK,CAACG,MAAM,CAACI,aAAa;EACpE,MAAMC,MAAM,GAAGhE,WAAW,CAACwB,IAAI,CAAC;EAChC,MAAMyC,KAAK,GAAG9D,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;EAC3C,MAAM+D,UAAU,GAAGD,KAAK,GAAG3D,iBAAiB,CAACH,KAAK,CAAC,GAAG8C,QAAQ;EAC9D,MAAMkB,QAAQ,GAAGF,KAAK,IAAI7D,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE;EACvD,MAAMgE,SAAS,GAAGD,QAAQ,GACtBpB,UAAU,KAAK,SAAS,GACtB,KAAK3C,KAAK,IAAI4C,YAAY,EAAE,GAC5B,IAAI5C,KAAK,GAAG,GACd,IAAI;EACR,MAAMiE,IAAI,GACRd,kBAAkB,KACjBU,KAAK,GACF,SAASC,UAAU,YAAYC,QAAQ,GAAG,KAAK/D,KAAK,IAAI4C,YAAY,EAAE,GAAG,EAAE,EAAE,GAC7EC,QAAQ,CAAC;EAEf,oBACElD,KAAA,CAACR,IAAI;IAAA,GACCkE,cAAc;IAClB9B,MAAM,EAAEA,MAAO;IACf2C,UAAU;IACVf,kBAAkB,EAAEc,IAAK;IAAA,IACpBxD,MAAM,GAAG;MAAE0D,IAAI,EAAE;IAAe,CAAC,GAAG,IAAI;IAC7C3C,KAAK,EAAE,CAAC;MAAEC,aAAa,EAAE,KAAK;MAAEC,UAAU,EAAE,QAAQ;MAAEC,GAAG,EAAE;IAAE,CAAC,EAAEH,KAAK,CAAE;IAAAI,QAAA,GAEtEkB,OAAO,KAAK,OAAO,IAAIe,KAAK,gBAC3BpE,IAAA,CAAC0B,OAAO;MACNL,MAAM,EAAE,OAAOf,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGI,MAAM,CAACJ,KAAK,CAAE;MAC1DqB,IAAI,EAAEwC,MAAM,CAAC9D,IAAK;MAClBuB,IAAI,EAAEoC,SAAU;MAChBnC,KAAK,EAAE4B,cAAc,IAAIE,KAAK,CAACG,MAAM,CAACa,MAAO;MAC7C7C,MAAM,EAAEA,MAAM,GAAG,GAAGA,MAAM,QAAQ,GAAGa;IAAU,CAChD,CAAC,GACAU,OAAO,KAAK,OAAO,GAAG,IAAI,gBAC5BrD,IAAA,CAACL,UAAU;MAAC8C,KAAK,EAAE0B,MAAM,CAAC9D,IAAK;MAACqC,MAAM,EAAEyB,MAAM,CAAC9D,IAAK;MAACuB,IAAI,EAAEoC;IAAU,CAAE,CACxE,eACDhE,IAAA,CAACF,IAAI;MAACuD,OAAO,EAAEc,MAAM,CAAC7D,KAAM;MAACyB,KAAK,EAAE;QAAEuB,KAAK,EAAEO,SAAS;QAAEe,WAAW,EAAE,CAAC,cAAc;MAAE,CAAE;MAAAzC,QAAA,EACrFkC;IAAU,CACP,CAAC,EACNE,SAAS,IAAI,IAAI,iBAChBvE,IAAA,CAACF,IAAI;MAACuD,OAAO,EAAEc,MAAM,CAAC5D,KAAM;MAACwB,KAAK,EAAE;QAAEuB,KAAK,EAAEW;MAAW,CAAE;MAAA9B,QAAA,EACvDoC;IAAS,CACN,CACP;EAAA,CACG,CAAC;AAEX;AAEA,OAAO,MAAMM,MAAM,gBAAGrF,IAAI,CAACyD,eAAe,CAAC;AAC3C4B,MAAM,CAACC,WAAW,GAAG,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","Platform","View","RiStarFill","useDirectionProps","useTheme","Text","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","star","value","count","medium","formatRatingValue","Number","isInteger","toFixed","String","Math","round","IS_WEB","OS","STAR_COUNT","STAR_GAP","FORMAT_CHARACTERS","ARABIC_ZERO","EXTENDED_ARABIC_ZERO","parseRatingValue","text","replace","trim","d","charCodeAt","starFill","rating","index","isFinite","min","max","clampRating","StarRow","size","fill","empty","testID","style","flexDirection","alignItems","gap","children","Array","from","length","_","share","width","height","undefined","position","top","bottom","insetInlineStart","overflow","RatingComponent","countStyle","reviewsLabel","newLabel","variant","color","starColor","countColor","emptyStarColor","fillValue","accessibilityLabel","theme","directionProps","textColor","colors","starPaint","countPaint","textSecondary","config","rated","shownValue","hasCount","countText","name","accessible","role","border","fontVariant","Rating","displayName"],"sourceRoot":"../../../src","sources":["rating/Rating.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef } from 'react';
3
+ import { forwardRef, useCallback, useMemo, useRef } from 'react';
4
4
  import { Platform, View } from 'react-native';
5
+ import { mergeRefs } from "../hooks/merge-refs.js";
5
6
  import { useTheme } from "../theme/use-theme.js";
6
7
  import { atoms as a } from "../styles/index.js";
7
8
  import { borderRadius } from "../styles/tokens.js";
@@ -14,10 +15,41 @@ export const Search = /*#__PURE__*/forwardRef(function Search({
14
15
  value,
15
16
  label = 'Search',
16
17
  onClearText,
18
+ onFocus,
19
+ onPressIn,
17
20
  ...rest
18
21
  }, ref) {
19
22
  const theme = useTheme();
20
23
  const showClear = value != null && value.length > 0;
24
+
25
+ // Select-on-focus, done here rather than through RN's `selectTextOnFocus`.
26
+ // On Android that prop does not select on focus: it arms a one-shot flag and
27
+ // calls `selectAll()` on the input's NEXT layout while focused. An
28
+ // autofocused search lays out nothing after focusing until the first
29
+ // keystroke mounts the clear button and pads the input for it — and that
30
+ // layout selects everything, so the SECOND keystroke replaced the query.
31
+ // Typing "mention" in one burst left "on" (OxyHQ/Mention#1126). Now a
32
+ // press-driven focus selects the current query once, immediately, and a
33
+ // programmatic focus (autoFocus, `ref.focus()`) selects nothing. Web never
34
+ // selected on focus and still does not.
35
+ const inputRef = useRef(null);
36
+ const refs = useMemo(() => mergeRefs([inputRef, ref]), [ref]);
37
+ const pressedRef = useRef(false);
38
+ const valueRef = useRef(value);
39
+ valueRef.current = value;
40
+ const handlePressIn = useCallback(event => {
41
+ pressedRef.current = true;
42
+ onPressIn?.(event);
43
+ }, [onPressIn]);
44
+ const handleFocus = useCallback(event => {
45
+ onFocus?.(event);
46
+ const pressed = pressedRef.current;
47
+ pressedRef.current = false;
48
+ const length = valueRef.current?.length ?? 0;
49
+ if (pressed && Platform.OS !== 'web' && length > 0) {
50
+ inputRef.current?.setSelection(0, length);
51
+ }
52
+ }, [onFocus]);
21
53
  return /*#__PURE__*/_jsxs(View, {
22
54
  style: [a.w_full, a.relative],
23
55
  children: [/*#__PURE__*/_jsxs(TextField, {
@@ -25,13 +57,12 @@ export const Search = /*#__PURE__*/forwardRef(function Search({
25
57
  children: [/*#__PURE__*/_jsx(TextFieldIcon, {
26
58
  icon: MagnifyingGlassIcon
27
59
  }), /*#__PURE__*/_jsx(TextFieldInput, {
28
- inputRef: ref,
60
+ inputRef: refs,
29
61
  label: label,
30
62
  value: value,
31
63
  placeholder: label,
32
64
  returnKeyType: "search",
33
65
  keyboardAppearance: theme.mode === 'light' ? 'light' : 'dark',
34
- selectTextOnFocus: Platform.OS !== 'web',
35
66
  autoFocus: false,
36
67
  accessibilityRole: "search",
37
68
  autoCorrect: false,
@@ -40,7 +71,9 @@ export const Search = /*#__PURE__*/forwardRef(function Search({
40
71
  style: showClear ? {
41
72
  paddingRight: 24
42
73
  } : undefined,
43
- ...rest
74
+ ...rest,
75
+ onPressIn: handlePressIn,
76
+ onFocus: handleFocus
44
77
  })]
45
78
  }), showClear && /*#__PURE__*/_jsx(View, {
46
79
  style: [a.absolute, a.z_20, a.my_auto, a.inset_0, a.justify_center, a.pr_sm, {