@oxyhq/bloom 0.69.1 → 0.71.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 (56) hide show
  1. package/lib/commonjs/context-menu/index.web.js +51 -3
  2. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  3. package/lib/commonjs/dialog/SheetShell.js +7 -1
  4. package/lib/commonjs/dialog/SheetShell.js.map +1 -1
  5. package/lib/commonjs/menu/index.web.js +47 -10
  6. package/lib/commonjs/menu/index.web.js.map +1 -1
  7. package/lib/commonjs/overlay/dropdown-placement.js +62 -0
  8. package/lib/commonjs/overlay/dropdown-placement.js.map +1 -0
  9. package/lib/commonjs/select/index.web.js +82 -5
  10. package/lib/commonjs/select/index.web.js.map +1 -1
  11. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js +32 -18
  12. package/lib/commonjs/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  13. package/lib/module/context-menu/index.web.js +52 -4
  14. package/lib/module/context-menu/index.web.js.map +1 -1
  15. package/lib/module/dialog/SheetShell.js +7 -1
  16. package/lib/module/dialog/SheetShell.js.map +1 -1
  17. package/lib/module/menu/index.web.js +47 -10
  18. package/lib/module/menu/index.web.js.map +1 -1
  19. package/lib/module/overlay/dropdown-placement.js +58 -0
  20. package/lib/module/overlay/dropdown-placement.js.map +1 -0
  21. package/lib/module/select/index.web.js +83 -6
  22. package/lib/module/select/index.web.js.map +1 -1
  23. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js +33 -19
  24. package/lib/module/zoomable-image-gallery/ZoomableImageGallery.js.map +1 -1
  25. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/dialog/SheetShell.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/menu/index.web.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/overlay/dropdown-placement.d.ts +55 -0
  29. package/lib/typescript/commonjs/overlay/dropdown-placement.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/select/index.web.d.ts +1 -1
  31. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/select/types.d.ts +6 -0
  33. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  35. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  36. package/lib/typescript/module/dialog/SheetShell.d.ts.map +1 -1
  37. package/lib/typescript/module/menu/index.web.d.ts.map +1 -1
  38. package/lib/typescript/module/overlay/dropdown-placement.d.ts +55 -0
  39. package/lib/typescript/module/overlay/dropdown-placement.d.ts.map +1 -0
  40. package/lib/typescript/module/select/index.web.d.ts +1 -1
  41. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  42. package/lib/typescript/module/select/types.d.ts +6 -0
  43. package/lib/typescript/module/select/types.d.ts.map +1 -1
  44. package/lib/typescript/module/zoomable-image-gallery/ZoomableImageGallery.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/__tests__/SelectItemLabel.test.tsx +46 -0
  47. package/src/__tests__/SheetShell.test.tsx +82 -0
  48. package/src/__tests__/dropdown-placement.test.ts +90 -0
  49. package/src/__tests__/optional-peer-imports.test.ts +31 -12
  50. package/src/context-menu/index.web.tsx +47 -3
  51. package/src/dialog/SheetShell.tsx +5 -0
  52. package/src/menu/index.web.tsx +45 -16
  53. package/src/overlay/dropdown-placement.ts +88 -0
  54. package/src/select/index.web.tsx +92 -5
  55. package/src/select/types.ts +6 -0
  56. package/src/zoomable-image-gallery/ZoomableImageGallery.tsx +29 -16
@@ -7,6 +7,7 @@ import { Text } from "../typography/index.js";
7
7
  import { Portal } from "../portal/index.web.js";
8
8
  import { createDropdownZIndex } from "../styles/z-index.js";
9
9
  import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
10
+ import { resolveDropdownPlacement } from "../overlay/dropdown-placement.js";
10
11
  import { bloomShadowStyle } from '../design-tokens/shadows';
11
12
  import { MenuContext, ItemContext, useMenuContext, useMenuItemContext } from "./context.js";
12
13
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
@@ -140,24 +141,49 @@ export function MenuContent({
140
141
  const theme = useTheme();
141
142
  const context = useMenuContext();
142
143
  const [position, setPosition] = useState(null);
144
+ // The mounted dropdown node, as STATE rather than a bare ref: positioning has
145
+ // to measure it, and `Portal` renders null on its first pass (it resolves its
146
+ // host in its own layout effect), so the node lands one render after
147
+ // `isOpen` flips. An effect keyed only on `isOpen` would measure nothing.
148
+ const [dropdownNode, setDropdownNode] = useState(null);
149
+ const attachDropdown = useCallback(node => {
150
+ // The shared ref stays in sync — `Menu`'s outside-pointerdown check reads it.
151
+ if (context.dropdownRef) {
152
+ context.dropdownRef.current = node;
153
+ }
154
+ setDropdownNode(node);
155
+ }, [context.dropdownRef]);
143
156
  useLayoutEffect(() => {
144
157
  if (!context.isOpen || typeof window === 'undefined') {
145
158
  return;
146
159
  }
147
160
  const triggerNode = context.triggerRef?.current;
148
- if (!triggerNode?.getBoundingClientRect) {
161
+ if (!triggerNode?.getBoundingClientRect || !dropdownNode) {
149
162
  return;
150
163
  }
151
164
  const updatePosition = () => {
152
165
  const rect = triggerNode.getBoundingClientRect();
153
- const width = Math.max(180, rect.width);
154
- const availableRight = window.innerWidth - VIEWPORT_GUTTER;
155
- const left = Math.min(Math.max(VIEWPORT_GUTTER, rect.right - width), Math.max(VIEWPORT_GUTTER, availableRight - width));
156
- const top = Math.min(rect.bottom + MENU_OFFSET, Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER));
166
+ // Measured BEFORE `minWidth` is applied, so the final surface can only be
167
+ // wider than this and a wider surface wraps less, so the measured height
168
+ // is an upper bound. Erring that way flips early in a tie, never late.
169
+ const surface = dropdownNode.getBoundingClientRect();
170
+ const width = Math.max(surface.width, rect.width);
157
171
  setPosition({
158
172
  position: WEB_POSITION_FIXED,
159
- top,
160
- left,
173
+ ...resolveDropdownPlacement({
174
+ anchor: rect,
175
+ size: {
176
+ width,
177
+ height: surface.height
178
+ },
179
+ viewport: {
180
+ width: window.innerWidth,
181
+ height: window.innerHeight
182
+ },
183
+ offset: MENU_OFFSET,
184
+ gutter: VIEWPORT_GUTTER,
185
+ align: 'end'
186
+ }),
161
187
  right: undefined,
162
188
  bottom: undefined,
163
189
  minWidth: width
@@ -170,13 +196,13 @@ export function MenuContent({
170
196
  window.removeEventListener('resize', updatePosition);
171
197
  window.removeEventListener('scroll', updatePosition, true);
172
198
  };
173
- }, [context.isOpen, context.triggerRef]);
199
+ }, [context.isOpen, context.triggerRef, dropdownNode]);
174
200
  if (!context.isOpen) {
175
201
  return null;
176
202
  }
177
203
  return /*#__PURE__*/_jsx(Portal, {
178
204
  children: /*#__PURE__*/_jsx(View, {
179
- ref: context.dropdownRef,
205
+ ref: attachDropdown,
180
206
  style: [styles.dropdown, {
181
207
  backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
182
208
  borderColor: theme.colors.borderLight,
@@ -285,6 +311,14 @@ const styles = StyleSheet.create({
285
311
  zIndex: menuZIndex.root
286
312
  },
287
313
  dropdown: {
314
+ // Fixed from the outset, not only once positioned: the `Portal` root is a
315
+ // block container, so a static child would stretch to the full viewport
316
+ // width and the pre-position measurement would under-read the height (less
317
+ // wrapping at a width the surface never actually has). A fixed box
318
+ // shrink-wraps to the same width it ends up with.
319
+ position: WEB_POSITION_FIXED,
320
+ top: 0,
321
+ left: 0,
288
322
  borderRadius: 8,
289
323
  padding: 4,
290
324
  borderWidth: 1,
@@ -304,7 +338,10 @@ const styles = StyleSheet.create({
304
338
  borderRadius: 6,
305
339
  overflow: 'hidden',
306
340
  paddingHorizontal: 10,
307
- minHeight: 32
341
+ // Matches the native sheet row (`index.tsx`). Bloom's web build is what
342
+ // renders on touch tablets, where this dropdown — not the sheet — is the
343
+ // menu, so the row carries the same 44dp target on both platforms.
344
+ minHeight: 44
308
345
  },
309
346
  webItemText: {
310
347
  flex: 1,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","WEB_POSITION_FIXED","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","window","triggerNode","getBoundingClientRect","updatePosition","rect","width","Math","max","availableRight","innerWidth","left","min","right","top","bottom","innerHeight","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","height","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Menu","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","MenuTrigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","MenuContent","theme","position","setPosition","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","size","height","viewport","innerWidth","innerHeight","offset","gutter","align","right","bottom","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","portaledDropdown","MenuItem","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","MenuItemText","webItemText","color","textTertiary","text","MenuItemIcon","icon","Comp","fill","iconLeft","iconRight","textSecondary","MenuGroup","MenuDivider","divider","create","zIndex","top","left","borderRadius","padding","borderWidth","overflow","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Placement arithmetic for a portaled dropdown surface — shared by the web
5
+ * `Menu` and `ContextMenu` forks, which anchor differently (a trigger's rect
6
+ * vs. a right-click point) but need the same fit / flip / clamp decision.
7
+ *
8
+ * Internal: deliberately NOT re-exported from `overlay/index.ts`. The web forks
9
+ * import it directly, the same way `dialog/SheetShell` is shared without
10
+ * becoming public API.
11
+ *
12
+ * Kept as a pure function so the arithmetic is unit-testable on its own — the
13
+ * DOM half (measuring the surface before positioning it) is the call site's
14
+ * job and is verified in a browser.
15
+ */
16
+
17
+ /** Viewport-relative box the surface is positioned against. A right-click point is a zero-area anchor. */
18
+
19
+ /**
20
+ * Clamp into `[min, max]`, resolving an inverted range to `min`.
21
+ *
22
+ * The range inverts exactly when the surface is larger than the viewport minus
23
+ * its gutters. Preferring `min` then pins the surface to the top/left gutter and
24
+ * lets it overflow the far edge, so its FIRST rows stay reachable — the opposite
25
+ * choice would push its start off-screen and strand every row.
26
+ */
27
+ function clamp(value, min, max) {
28
+ return Math.max(min, Math.min(value, max));
29
+ }
30
+
31
+ /**
32
+ * Resolve the viewport-relative `top`/`left` for a dropdown surface.
33
+ *
34
+ * Vertical: sit below the anchor when it fits, else flip above it, else clamp
35
+ * into the viewport. Horizontal: align per `align`, then clamp into the
36
+ * viewport.
37
+ */
38
+ export function resolveDropdownPlacement({
39
+ anchor,
40
+ size,
41
+ viewport,
42
+ offset,
43
+ gutter,
44
+ align
45
+ }) {
46
+ const below = anchor.bottom + offset;
47
+ const above = anchor.top - offset - size.height;
48
+ const fitsBelow = below + size.height <= viewport.height - gutter;
49
+ const fitsAbove = above >= gutter;
50
+ const top = fitsBelow ? below : fitsAbove ? above : clamp(below, gutter, viewport.height - gutter - size.height);
51
+ const preferredLeft = align === 'end' ? anchor.right - size.width : anchor.left;
52
+ const left = clamp(preferredLeft, gutter, viewport.width - gutter - size.width);
53
+ return {
54
+ top,
55
+ left
56
+ };
57
+ }
58
+ //# sourceMappingURL=dropdown-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clamp","value","min","max","Math","resolveDropdownPlacement","anchor","size","viewport","offset","gutter","align","below","bottom","above","top","height","fitsBelow","fitsAbove","preferredLeft","right","width","left"],"sourceRoot":"../../../src","sources":["overlay/dropdown-placement.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EAC9D,OAAOC,IAAI,CAACD,GAAG,CAACD,GAAG,EAAEE,IAAI,CAACF,GAAG,CAACD,KAAK,EAAEE,GAAG,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,wBAAwBA,CAAC;EACvCC,MAAM;EACNC,IAAI;EACJC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC;AACsB,CAAC,EAAqB;EAC5C,MAAMC,KAAK,GAAGN,MAAM,CAACO,MAAM,GAAGJ,MAAM;EACpC,MAAMK,KAAK,GAAGR,MAAM,CAACS,GAAG,GAAGN,MAAM,GAAGF,IAAI,CAACS,MAAM;EAE/C,MAAMC,SAAS,GAAGL,KAAK,GAAGL,IAAI,CAACS,MAAM,IAAIR,QAAQ,CAACQ,MAAM,GAAGN,MAAM;EACjE,MAAMQ,SAAS,GAAGJ,KAAK,IAAIJ,MAAM;EAEjC,MAAMK,GAAG,GAAGE,SAAS,GACjBL,KAAK,GACLM,SAAS,GACPJ,KAAK,GACLd,KAAK,CAACY,KAAK,EAAEF,MAAM,EAAEF,QAAQ,CAACQ,MAAM,GAAGN,MAAM,GAAGH,IAAI,CAACS,MAAM,CAAC;EAElE,MAAMG,aAAa,GAAGR,KAAK,KAAK,KAAK,GAAGL,MAAM,CAACc,KAAK,GAAGb,IAAI,CAACc,KAAK,GAAGf,MAAM,CAACgB,IAAI;EAC/E,MAAMA,IAAI,GAAGtB,KAAK,CAACmB,aAAa,EAAET,MAAM,EAAEF,QAAQ,CAACa,KAAK,GAAGX,MAAM,GAAGH,IAAI,CAACc,KAAK,CAAC;EAE/E,OAAO;IAAEN,GAAG;IAAEO;EAAK,CAAC;AACtB","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React, { createContext, useContext, useId, useMemo, useState } from 'react';
3
+ import React, { createContext, useCallback, useContext, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import { Pressable, StyleSheet, View } from 'react-native';
5
5
  import { useTheme } from "../theme/use-theme.js";
6
6
  import { Text } from "../typography/index.js";
@@ -8,6 +8,7 @@ import { Backdrop } from "../overlay/index.js";
8
8
  import { Portal } from "../portal/index.web.js";
9
9
  import { createOverlayZIndex } from "../styles/z-index.js";
10
10
  import { WEB_POSITION_FIXED } from "../styles/web-view-style.js";
11
+ import { resolveDropdownPlacement } from "../overlay/dropdown-placement.js";
11
12
  import { bloomShadowStyle } from '../design-tokens/shadows';
12
13
  import { useInteractionState } from "../hooks/useInteractionState.js";
13
14
  import { ChevronBottom_Stroke2_Corner0_Rounded as ChevronDownIcon } from "../icons/Chevron.js";
@@ -16,6 +17,8 @@ import { defaultItemValueExtractor, ItemContext, useSelectItemContext } from "./
16
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
18
  export { useSelectItemContext };
18
19
  const selectZIndex = createOverlayZIndex();
20
+ const VIEWPORT_GUTTER = 8;
21
+ const SELECT_OFFSET = 6;
19
22
 
20
23
  // ---------------------------------------------------------------------------
21
24
  // Context
@@ -42,13 +45,15 @@ export function Select({
42
45
  disabled
43
46
  }) {
44
47
  const [isOpen, setIsOpen] = useState(false);
48
+ const triggerRef = useRef(null);
45
49
  const ctx = useMemo(() => ({
46
50
  value,
47
51
  onValueChange,
48
52
  disabled,
49
53
  isOpen,
50
54
  open: () => setIsOpen(true),
51
- close: () => setIsOpen(false)
55
+ close: () => setIsOpen(false),
56
+ triggerRef
52
57
  }), [value, onValueChange, disabled, isOpen]);
53
58
  return /*#__PURE__*/_jsx(SelectContext.Provider, {
54
59
  value: ctx,
@@ -93,6 +98,7 @@ export function SelectTrigger({
93
98
  pressed: false
94
99
  },
95
100
  props: {
101
+ ref: ctx.triggerRef,
96
102
  onPress: ctx.open,
97
103
  onFocus,
98
104
  onBlur,
@@ -101,6 +107,7 @@ export function SelectTrigger({
101
107
  });
102
108
  }
103
109
  return /*#__PURE__*/_jsx(Pressable, {
110
+ ref: ctx.triggerRef,
104
111
  onPress: ctx.open,
105
112
  onFocus: onFocus,
106
113
  onBlur: onBlur,
@@ -166,6 +173,58 @@ export function SelectContent({
166
173
  }) {
167
174
  const ctx = useSelectContext();
168
175
  const theme = useTheme();
176
+ const [position, setPosition] = useState(null);
177
+ // The mounted dropdown node, as STATE rather than a bare ref: positioning has
178
+ // to measure it, and `Portal` renders null on its first pass (it resolves its
179
+ // host in its own layout effect), so the node lands one render after `isOpen`
180
+ // flips. An effect keyed only on `isOpen` would measure nothing.
181
+ const [dropdownNode, setDropdownNode] = useState(null);
182
+ const attachDropdown = useCallback(node => {
183
+ setDropdownNode(node);
184
+ }, []);
185
+
186
+ // Anchored to the trigger, left edges aligned, and never off-screen: sit below
187
+ // when it fits, flip above when it doesn't, clamp when neither. Before this the
188
+ // dropdown had no `top`/`left` at all, so it rendered at the `Portal` root's
189
+ // origin — the viewport's top-left corner — however far from its trigger.
190
+ useLayoutEffect(() => {
191
+ if (!ctx.isOpen || typeof window === 'undefined') return;
192
+ const triggerNode = ctx.triggerRef.current;
193
+ if (!triggerNode?.getBoundingClientRect || !dropdownNode) return;
194
+ const updatePosition = () => {
195
+ const rect = triggerNode.getBoundingClientRect();
196
+ // Measured BEFORE `minWidth` is applied, so the final surface can only be
197
+ // wider than this — and a wider surface wraps less, so the measured height
198
+ // is an upper bound. Erring that way flips early in a tie, never late.
199
+ const surface = dropdownNode.getBoundingClientRect();
200
+ const width = Math.max(surface.width, rect.width);
201
+ setPosition({
202
+ position: WEB_POSITION_FIXED,
203
+ ...resolveDropdownPlacement({
204
+ anchor: rect,
205
+ size: {
206
+ width,
207
+ height: surface.height
208
+ },
209
+ viewport: {
210
+ width: window.innerWidth,
211
+ height: window.innerHeight
212
+ },
213
+ offset: SELECT_OFFSET,
214
+ gutter: VIEWPORT_GUTTER,
215
+ align: 'start'
216
+ }),
217
+ minWidth: width
218
+ });
219
+ };
220
+ updatePosition();
221
+ window.addEventListener('resize', updatePosition);
222
+ window.addEventListener('scroll', updatePosition, true);
223
+ return () => {
224
+ window.removeEventListener('resize', updatePosition);
225
+ window.removeEventListener('scroll', updatePosition, true);
226
+ };
227
+ }, [ctx.isOpen, ctx.triggerRef, dropdownNode]);
169
228
  if (!ctx.isOpen) return null;
170
229
  return /*#__PURE__*/_jsxs(Portal, {
171
230
  children: [/*#__PURE__*/_jsx(Backdrop, {
@@ -173,13 +232,14 @@ export function SelectContent({
173
232
  onPress: ctx.close,
174
233
  accessibilityLabel: "Close selection"
175
234
  }), /*#__PURE__*/_jsx(View, {
235
+ ref: attachDropdown,
176
236
  accessibilityRole: "list",
177
237
  accessibilityLabel: label,
178
238
  style: [styles.dropdown, {
179
239
  backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
180
240
  borderColor: theme.colors.borderLight,
181
241
  ...bloomShadowStyle('m')
182
- }],
242
+ }, position],
183
243
  children: items.map((item, index) => /*#__PURE__*/_jsx(React.Fragment, {
184
244
  children: renderItem(item, index, ctx.value)
185
245
  }, valueExtractor(item)))
@@ -194,6 +254,7 @@ export function SelectContent({
194
254
  export function SelectItem({
195
255
  ref,
196
256
  value,
257
+ label,
197
258
  children,
198
259
  style
199
260
  }) {
@@ -218,7 +279,12 @@ export function SelectItem({
218
279
  }), [isSelected, hovered, focused]);
219
280
  return /*#__PURE__*/_jsx(Pressable, {
220
281
  ref: ref,
221
- accessibilityRole: "radio",
282
+ accessibilityRole: "radio"
283
+ // The native fork has always applied this; web declared `label` and then
284
+ // dropped it, leaving every option a `role="radio"` with no accessible
285
+ // name for a screen reader to announce.
286
+ ,
287
+ accessibilityLabel: label,
222
288
  accessibilityState: {
223
289
  checked: isSelected
224
290
  },
@@ -322,7 +388,14 @@ const styles = StyleSheet.create({
322
388
  pointerEvents: 'auto'
323
389
  },
324
390
  dropdown: {
325
- position: 'absolute',
391
+ // Fixed from the outset, not only once positioned: the `Portal` root is a
392
+ // block container, so a static child would stretch to the full viewport
393
+ // width and the pre-position measurement would under-read the height (less
394
+ // wrapping at a width the surface never actually has). A fixed box
395
+ // shrink-wraps to the same width it ends up with.
396
+ position: WEB_POSITION_FIXED,
397
+ top: 0,
398
+ left: 0,
326
399
  zIndex: selectZIndex.surface,
327
400
  borderRadius: 8,
328
401
  borderWidth: 1,
@@ -336,7 +409,11 @@ const styles = StyleSheet.create({
336
409
  item: {
337
410
  position: 'relative',
338
411
  flexDirection: 'row',
339
- minHeight: 25,
412
+ // Matches the native sheet row (`index.tsx`) and the web `Menu` row. Bloom's
413
+ // web build is what renders on touch tablets, where this dropdown — not the
414
+ // sheet — is the select, so the row carries the same 44dp target on both
415
+ // platforms.
416
+ minHeight: 44,
340
417
  paddingLeft: 30,
341
418
  paddingRight: 8,
342
419
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","useId","useMemo","useState","Pressable","StyleSheet","View","useTheme","Text","Backdrop","Portal","createOverlayZIndex","WEB_POSITION_FIXED","bloomShadowStyle","useInteractionState","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDownIcon","Check_Stroke2_Corner0_Rounded","CheckIcon","defaultItemValueExtractor","ItemContext","useSelectItemContext","jsx","_jsx","jsxs","_jsxs","selectZIndex","SelectContext","displayName","useSelectContext","ctx","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","open","close","Provider","SelectTrigger","label","theme","triggerId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","numberOfLines","valueText","color","text","textSecondary","SelectIcon","size","fill","SelectContent","items","renderItem","valueExtractor","backdrop","dropdown","isDark","backgroundSecondary","background","borderLight","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","create","flexDirection","position","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","top","left","right","bottom","zIndex","pointerEvents","surface","overflow","padding","minWidth","minHeight","paddingLeft","paddingRight","width","height","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useCallback","useContext","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Backdrop","Portal","createOverlayZIndex","WEB_POSITION_FIXED","resolveDropdownPlacement","bloomShadowStyle","useInteractionState","ChevronBottom_Stroke2_Corner0_Rounded","ChevronDownIcon","Check_Stroke2_Corner0_Rounded","CheckIcon","defaultItemValueExtractor","ItemContext","useSelectItemContext","jsx","_jsx","jsxs","_jsxs","selectZIndex","VIEWPORT_GUTTER","SELECT_OFFSET","SelectContext","displayName","useSelectContext","ctx","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","triggerRef","open","close","Provider","SelectTrigger","label","theme","triggerId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","numberOfLines","valueText","color","text","textSecondary","SelectIcon","size","fill","SelectContent","items","renderItem","valueExtractor","position","setPosition","dropdownNode","setDropdownNode","attachDropdown","node","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","anchor","height","viewport","innerWidth","innerHeight","offset","gutter","align","minWidth","addEventListener","removeEventListener","backdrop","dropdown","isDark","backgroundSecondary","background","borderLight","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","create","flexDirection","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","top","left","right","bottom","zIndex","pointerEvents","overflow","padding","minHeight","paddingLeft","paddingRight","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import { View, Text, StyleSheet, Pressable, Platform, ScrollView, Share, useWindowDimensions } from 'react-native';
5
5
  import { Image } from 'expo-image';
6
6
  import Animated, { useSharedValue, useAnimatedStyle, withSpring, withTiming, runOnJS, Easing } from 'react-native-reanimated';
@@ -122,8 +122,6 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
122
122
  // shrinks back to it. Never overwritten by the drag gesture.
123
123
  const originScale = useSharedValue(1);
124
124
  const pagerRef = useRef(null);
125
- // Latch the index the pager must land on once it has mounted + laid out.
126
- const pendingIndexRef = useRef(0);
127
125
  // Mirror of `activeIndex` readable synchronously from callbacks/worklets
128
126
  // (`handleDismiss` runs via `runOnJS` and from `Pressable.onPress`, where the
129
127
  // state closure can be stale). Kept in lockstep by `setActiveIndexBoth`.
@@ -315,8 +313,8 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
315
313
  }, [activeFit, fadeOutCenter, flyBackTo, images, measureThumb, SCREEN_HEIGHT, SCREEN_WIDTH]);
316
314
 
317
315
  // Reveal the swipeable pager once the open animation has settled. The index it
318
- // lands on is held in `pendingIndexRef` (set synchronously in `open`) and
319
- // applied in `onPagerLayout`.
316
+ // lands on is `activeIndexRef` (set synchronously in `open`), seated by the
317
+ // layout effect below.
320
318
  const revealPager = useCallback(() => {
321
319
  setPagerReady(true);
322
320
  }, []);
@@ -340,7 +338,6 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
340
338
  if (r !== undefined) initialRatios[i] = r;
341
339
  });
342
340
  setPageRatios(initialRatios);
343
- pendingIndexRef.current = safeIndex;
344
341
 
345
342
  // Resolve the opening ratio if it was not yet known, then re-fit.
346
343
  if (knownRatio === undefined) {
@@ -527,17 +524,35 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
527
524
  updateIndexFromOffset(event.nativeEvent.contentOffset.x);
528
525
  }, [updateIndexFromOffset]);
529
526
 
530
- // When the pager mounts, jump it to the open index without animation so the
531
- // swap from the open-image to the pager is seamless.
532
- const onPagerLayout = useCallback(() => {
533
- const idx = pendingIndexRef.current;
534
- if (idx > 0) {
535
- pagerRef.current?.scrollTo({
536
- x: idx * SCREEN_WIDTH,
537
- animated: false
538
- });
539
- }
540
- }, [SCREEN_WIDTH]);
527
+ // Re-seat the pager on the CURRENT page, without animation, whenever it mounts
528
+ // or the page width changes.
529
+ //
530
+ // Rotation is the case that needs this: the pager's retained scroll offset is
531
+ // in PIXELS, so when `SCREEN_WIDTH` changes the page widths change underneath
532
+ // a stale offset and the pager lands between two pages — showing the wrong
533
+ // image while the counter and dots still point at the right one. Nothing else
534
+ // corrects it: `contentOffset` below is only an initial value, and `pageTo`
535
+ // runs only on an explicit page change. Reading the index from
536
+ // `activeIndexRef` (rather than the index the viewer was opened at) is what
537
+ // makes it land on the page the user is actually looking at.
538
+ //
539
+ // This is a layout EFFECT rather than the pager's `onLayout` on purpose. The
540
+ // pages are sized from `SCREEN_WIDTH`, so the scroll offset is only meaningful
541
+ // once React has committed a render carrying the new width. `onLayout` fires
542
+ // from a different signal (the pager's own frame) than the one that resizes
543
+ // the pages (`useWindowDimensions`), and the two are not ordered against each
544
+ // other — so an `onLayout` handler can run holding the previous `SCREEN_WIDTH`
545
+ // and re-seat the pager to the offset it already had. Keying the effect on
546
+ // `SCREEN_WIDTH` makes the two agree by construction, and running it before
547
+ // paint keeps the corrected offset from being visible as a jump.
548
+ useLayoutEffect(() => {
549
+ if (!pagerReady) return;
550
+ pagerRef.current?.scrollTo({
551
+ x: activeIndexRef.current * SCREEN_WIDTH,
552
+ y: 0,
553
+ animated: false
554
+ });
555
+ }, [pagerReady, SCREEN_WIDTH]);
541
556
 
542
557
  // Double-tap toggles zoom: reset when already zoomed, else zoom to the tapped
543
558
  // point (biased toward it, clamped near the image center). `x`/`y` are local
@@ -716,10 +731,9 @@ const ZoomableImageGalleryInner = /*#__PURE__*/React.forwardRef(({
716
731
  scrollEnabled: !isZoomed,
717
732
  showsHorizontalScrollIndicator: false,
718
733
  contentOffset: {
719
- x: pendingIndexRef.current * SCREEN_WIDTH,
734
+ x: activeIndexRef.current * SCREEN_WIDTH,
720
735
  y: 0
721
736
  },
722
- onLayout: onPagerLayout,
723
737
  onMomentumScrollEnd: onPagerScroll,
724
738
  ...(Platform.OS === 'web' ? {
725
739
  onScroll: onPagerScroll