@oxyhq/bloom 1.12.0 → 1.14.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 (114) hide show
  1. package/README.md +1 -1
  2. package/docs/avatar.mdx +46 -5
  3. package/docs/index.mdx +1 -1
  4. package/docs/layout.mdx +21 -35
  5. package/docs/tab-bar.mdx +35 -0
  6. package/lib/commonjs/avatar/Avatar.js +24 -8
  7. package/lib/commonjs/avatar/Avatar.js.map +1 -1
  8. package/lib/commonjs/avatar/AvatarRing.js +13 -12
  9. package/lib/commonjs/avatar/AvatarRing.js.map +1 -1
  10. package/lib/commonjs/avatar/index.js +19 -0
  11. package/lib/commonjs/avatar/index.js.map +1 -1
  12. package/lib/commonjs/avatar/resolve-shape.js +43 -0
  13. package/lib/commonjs/avatar/resolve-shape.js.map +1 -0
  14. package/lib/commonjs/avatar/shape-paths.js +174 -0
  15. package/lib/commonjs/avatar/shape-paths.js.map +1 -0
  16. package/lib/commonjs/fab/Fab.js +4 -55
  17. package/lib/commonjs/fab/Fab.js.map +1 -1
  18. package/lib/commonjs/fab/Fab.web.js +1 -29
  19. package/lib/commonjs/fab/Fab.web.js.map +1 -1
  20. package/lib/commonjs/layout/bottom-edge.js +47 -92
  21. package/lib/commonjs/layout/bottom-edge.js.map +1 -1
  22. package/lib/commonjs/layout/index.js +0 -6
  23. package/lib/commonjs/layout/index.js.map +1 -1
  24. package/lib/commonjs/tab-bar/TabBarBase.js +59 -29
  25. package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -1
  26. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js +5 -0
  27. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js.map +1 -1
  28. package/lib/module/avatar/Avatar.js +24 -8
  29. package/lib/module/avatar/Avatar.js.map +1 -1
  30. package/lib/module/avatar/AvatarRing.js +13 -12
  31. package/lib/module/avatar/AvatarRing.js.map +1 -1
  32. package/lib/module/avatar/index.js +1 -0
  33. package/lib/module/avatar/index.js.map +1 -1
  34. package/lib/module/avatar/resolve-shape.js +40 -0
  35. package/lib/module/avatar/resolve-shape.js.map +1 -0
  36. package/lib/module/avatar/shape-paths.js +170 -0
  37. package/lib/module/avatar/shape-paths.js.map +1 -0
  38. package/lib/module/fab/Fab.js +6 -57
  39. package/lib/module/fab/Fab.js.map +1 -1
  40. package/lib/module/fab/Fab.web.js +2 -30
  41. package/lib/module/fab/Fab.web.js.map +1 -1
  42. package/lib/module/layout/bottom-edge.js +47 -91
  43. package/lib/module/layout/bottom-edge.js.map +1 -1
  44. package/lib/module/layout/index.js +1 -1
  45. package/lib/module/layout/index.js.map +1 -1
  46. package/lib/module/tab-bar/TabBarBase.js +60 -30
  47. package/lib/module/tab-bar/TabBarBase.js.map +1 -1
  48. package/lib/module/tab-bar/expo-router/RouterTabBar.js +5 -0
  49. package/lib/module/tab-bar/expo-router/RouterTabBar.js.map +1 -1
  50. package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/avatar/AvatarRing.d.ts +4 -3
  52. package/lib/typescript/commonjs/avatar/AvatarRing.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/avatar/index.d.ts +3 -1
  54. package/lib/typescript/commonjs/avatar/index.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/avatar/resolve-shape.d.ts +17 -0
  56. package/lib/typescript/commonjs/avatar/resolve-shape.d.ts.map +1 -0
  57. package/lib/typescript/commonjs/avatar/shape-paths.d.ts +27 -0
  58. package/lib/typescript/commonjs/avatar/shape-paths.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/avatar/types.d.ts +30 -3
  60. package/lib/typescript/commonjs/avatar/types.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/fab/Fab.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/fab/Fab.web.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/layout/bottom-edge.d.ts +31 -57
  64. package/lib/typescript/commonjs/layout/bottom-edge.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/layout/index.d.ts +1 -1
  66. package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
  69. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/tab-bar/types.d.ts +36 -5
  71. package/lib/typescript/commonjs/tab-bar/types.d.ts.map +1 -1
  72. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  73. package/lib/typescript/module/avatar/AvatarRing.d.ts +4 -3
  74. package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -1
  75. package/lib/typescript/module/avatar/index.d.ts +3 -1
  76. package/lib/typescript/module/avatar/index.d.ts.map +1 -1
  77. package/lib/typescript/module/avatar/resolve-shape.d.ts +17 -0
  78. package/lib/typescript/module/avatar/resolve-shape.d.ts.map +1 -0
  79. package/lib/typescript/module/avatar/shape-paths.d.ts +27 -0
  80. package/lib/typescript/module/avatar/shape-paths.d.ts.map +1 -0
  81. package/lib/typescript/module/avatar/types.d.ts +30 -3
  82. package/lib/typescript/module/avatar/types.d.ts.map +1 -1
  83. package/lib/typescript/module/fab/Fab.d.ts.map +1 -1
  84. package/lib/typescript/module/fab/Fab.web.d.ts.map +1 -1
  85. package/lib/typescript/module/layout/bottom-edge.d.ts +31 -57
  86. package/lib/typescript/module/layout/bottom-edge.d.ts.map +1 -1
  87. package/lib/typescript/module/layout/index.d.ts +1 -1
  88. package/lib/typescript/module/layout/index.d.ts.map +1 -1
  89. package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -1
  90. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
  91. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
  92. package/lib/typescript/module/tab-bar/types.d.ts +36 -5
  93. package/lib/typescript/module/tab-bar/types.d.ts.map +1 -1
  94. package/package.json +1 -1
  95. package/src/avatar/Avatar.tsx +27 -10
  96. package/src/avatar/AvatarRing.tsx +21 -14
  97. package/src/avatar/index.ts +7 -0
  98. package/src/avatar/resolve-shape.ts +33 -0
  99. package/src/avatar/shape-paths.ts +150 -0
  100. package/src/avatar/types.ts +32 -3
  101. package/src/fab/Fab.tsx +4 -57
  102. package/src/fab/Fab.web.tsx +2 -31
  103. package/src/layout/bottom-edge.tsx +54 -108
  104. package/src/layout/index.ts +1 -6
  105. package/src/tab-bar/TabBarBase.tsx +74 -37
  106. package/src/tab-bar/expo-router/RouterTabBar.tsx +5 -0
  107. package/src/tab-bar/types.ts +36 -5
  108. package/src/__tests__/support/collision-fixture-barrel.ts +0 -20
  109. package/src/__tests__/support/constructed-style-sheets.ts +0 -68
  110. package/src/__tests__/support/press-host.ts +0 -30
  111. package/src/__tests__/support/rendered-style.ts +0 -99
  112. package/src/__tests__/support/unread-hook-fixture.ts +0 -33
  113. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +0 -7682
  114. package/src/theme/__tests__/fixtures/color-engine-golden.json +0 -1
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BottomEdgeProvider = BottomEdgeProvider;
7
- exports.useBottomEdgeCollapsed = useBottomEdgeCollapsed;
8
7
  exports.useBottomEdgeInset = useBottomEdgeInset;
9
8
  exports.useClaimBottomEdge = useClaimBottomEdge;
10
9
  var _react = require("react");
@@ -38,32 +37,27 @@ var _jsxRuntime = require("react/jsx-runtime");
38
37
  * edge, so two surfaces at that edge overlap rather than stack; the tallest is
39
38
  * what a new surface has to clear. Summing would strand it at twice the height.
40
39
  *
41
- * ## A size and a state, because they travel differently
42
- *
43
- * A surface that collapses — the tab bar minimizes 58 -> 44 on scroll publishes
44
- * two things, and only one of them is a measurement:
45
- *
46
- * - RESERVED (`useBottomEdgeInset`) never shrinks while the claimant is
47
- * mounted. It is what must be kept permanently free: a list's bottom
48
- * padding, a toast stack's offset. Shrinking it on collapse would jitter a
49
- * list's content size on every scroll and jump a toast 14px mid-display,
50
- * because the bar re-expands the instant the user scrolls back up.
51
- * - COLLAPSED (`useBottomEdgeCollapsed`) is a boolean, deliberately, and this
52
- * is the part that was learned the hard way. It first shipped as a live
53
- * PIXEL height so a FAB could ride down with the bar — and it felt broken on
54
- * a device. The bar animates on the UI thread; a React consumer learns about
55
- * the change through `runOnJS` plus two render passes, so its motion STARTS
56
- * one to three frames late, worst exactly while scrolling because that is
57
- * when the JS thread is busiest. No spring config fixes a variable start
58
- * delay.
59
- *
60
- * Two things moving together betray that lag; a state change does not. A reader
61
- * that FADES on this boolean has no spatial relationship to violate, so the same
62
- * few frames of latency are imperceptible. That is why the channel is a state and
63
- * not a geometry: it is the shape of signal that survives the trip to the JS
64
- * thread. Anything that genuinely must track the collapse per-frame has to read
65
- * the tab bar's own shared value on the UI thread instead — React state is the
66
- * wrong transport for it, at any width.
40
+ * ## What does NOT belong here: the collapse
41
+ *
42
+ * The tab bar minimizes 58 -> 44 on scroll, and this registry twice tried to
43
+ * publish that so a FAB could react first as a live pixel height (1.11.0), then
44
+ * as a boolean (1.12.0). Both felt wrong on a device, for the same reason, and
45
+ * the reason is structural rather than a matter of tuning:
46
+ *
47
+ * the bar animates on the UI thread, while anything reading it from here
48
+ * arrives via `runOnJS` plus two React render passes.
49
+ *
50
+ * So a consumer's reaction STARTS one to three frames after the bar's, and the
51
+ * delay is variable worst exactly while scrolling, because that is when the JS
52
+ * thread is busiest. Fading instead of moving does not hide it either: the eye
53
+ * still sees two pieces of chrome change at different moments.
54
+ *
55
+ * A collapse is MOTION, and motion that must stay in lock-step with a
56
+ * reanimated animation has to travel as a shared value on the UI thread. React
57
+ * state is the wrong transport at any width, so it is not offered here at all.
58
+ * The app owns that signal — Mention drives its header, its bar and its FAB from
59
+ * one `SharedValue` through `useAnimatedStyle` and this registry stays what it
60
+ * is good at: GEOMETRY. Where things are, not when they move.
67
61
  *
68
62
  * ## Why an external store
69
63
  *
@@ -77,25 +71,17 @@ var _jsxRuntime = require("react/jsx-runtime");
77
71
  function createBottomEdgeStore() {
78
72
  const claims = new Map();
79
73
  const listeners = new Set();
80
- let reserved = 0;
81
- let collapsed = false;
74
+ let inset = 0;
82
75
  const recompute = () => {
83
- let nextReserved = 0;
84
- // ANY claimant collapsing collapses the edge. With the one floating bar this
85
- // is written for the two readings coincide; where they would not, "something
86
- // at this edge just retracted" is still the signal a reader wants, and it is
87
- // the safe direction — a FAB that fades when it did not strictly have to
88
- // beats one that stays put over a bar that left.
89
- let nextCollapsed = false;
90
- for (const claim of claims.values()) {
91
- if (claim.reserved > nextReserved) nextReserved = claim.reserved;
92
- if (claim.collapsed) nextCollapsed = true;
76
+ let next = 0;
77
+ for (const height of claims.values()) {
78
+ if (height > next) next = height;
93
79
  }
94
- // Bail before notifying: a re-registration at an unchanged footprint (every
95
- // render of a claimant that did not move) must not re-render every reader.
96
- if (nextReserved === reserved && nextCollapsed === collapsed) return;
97
- reserved = nextReserved;
98
- collapsed = nextCollapsed;
80
+ // Bail before notifying: a re-registration at an unchanged height (every
81
+ // render of a claimant whose footprint did not move) must not re-render
82
+ // every reader.
83
+ if (next === inset) return;
84
+ inset = next;
99
85
  for (const listener of listeners) listener();
100
86
  };
101
87
  return {
@@ -105,15 +91,10 @@ function createBottomEdgeStore() {
105
91
  listeners.delete(onChange);
106
92
  };
107
93
  },
108
- getReserved: () => reserved,
109
- getCollapsed: () => collapsed,
110
- claim(id, nextReserved, nextCollapsed) {
111
- const existing = claims.get(id);
112
- if (existing?.reserved === nextReserved && existing.collapsed === nextCollapsed) return;
113
- claims.set(id, {
114
- reserved: nextReserved,
115
- collapsed: nextCollapsed
116
- });
94
+ getInset: () => inset,
95
+ claim(id, height) {
96
+ if (claims.get(id) === height) return;
97
+ claims.set(id, height);
117
98
  recompute();
118
99
  },
119
100
  release(id) {
@@ -145,18 +126,15 @@ BottomEdgeProvider.displayName = 'BottomEdgeProvider';
145
126
  // would resubscribe `useSyncExternalStore` on every render.
146
127
  const NO_SUBSCRIPTION = () => () => {};
147
128
  const NO_INSET = () => 0;
148
- const NO_COLLAPSE = () => false;
149
129
 
150
130
  /**
151
- * How much of the bottom edge is permanently RESERVED, in px.
131
+ * How much of the bottom edge is already occupied, in px.
152
132
  *
153
- * Never shrinks while its claimant is mounted, so it is the number for anything
154
- * that must not move as the user scrolls — a list's bottom padding, a toast
155
- * stack's offset:
133
+ * Add it to whatever offset the surface would otherwise use:
156
134
  *
157
135
  * ```tsx
158
- * const reserved = useBottomEdgeInset();
159
- * <FlatList contentContainerStyle={{ paddingBottom: reserved + 12 }} />
136
+ * const occupied = useBottomEdgeInset();
137
+ * <View style={{ position: 'absolute', bottom: windowEdgeGap(insets.bottom) + occupied }} />
160
138
  * ```
161
139
  *
162
140
  * `0` outside a provider, and `0` on the first commit even inside one — a claim
@@ -166,50 +144,27 @@ const NO_COLLAPSE = () => false;
166
144
  */
167
145
  function useBottomEdgeInset() {
168
146
  const store = (0, _react.useContext)(BottomEdgeContext);
169
- return (0, _react.useSyncExternalStore)(store?.subscribe ?? NO_SUBSCRIPTION, store?.getReserved ?? NO_INSET, store?.getReserved ?? NO_INSET);
170
- }
171
-
172
- /**
173
- * Whether the surface owning the bottom edge is currently COLLAPSED — the tab
174
- * bar minimized on scroll.
175
- *
176
- * A boolean rather than a live height, on purpose: see the note at the top of
177
- * this file. A reader should FADE or otherwise change state on it, never try to
178
- * stay geometrically locked to the collapsing surface — that lock is what a
179
- * React-state channel cannot deliver, because the surface animates on the UI
180
- * thread and this arrives one to three frames later.
181
- *
182
- * ```tsx
183
- * const collapsed = useBottomEdgeCollapsed();
184
- * // fade out; do not chase the bar's new top edge
185
- * ```
186
- *
187
- * `false` outside a provider.
188
- */
189
- function useBottomEdgeCollapsed() {
190
- const store = (0, _react.useContext)(BottomEdgeContext);
191
- return (0, _react.useSyncExternalStore)(store?.subscribe ?? NO_SUBSCRIPTION, store?.getCollapsed ?? NO_COLLAPSE, store?.getCollapsed ?? NO_COLLAPSE);
147
+ return (0, _react.useSyncExternalStore)(store?.subscribe ?? NO_SUBSCRIPTION, store?.getInset ?? NO_INSET, store?.getInset ?? NO_INSET);
192
148
  }
193
149
 
194
150
  /**
195
- * Claim the bottom edge for as long as the caller is mounted.
151
+ * Claim `height` px of the bottom edge for as long as the caller is mounted.
196
152
  *
197
153
  * The claimant owns its own placement — claiming does not move it. It declares
198
- * the space it occupies so that everything reading the edge stays off it. Pass
199
- * the FULL footprint (the surface's height plus the gap it holds off the window
200
- * edge), which is the same number the surface positions itself with, and keep it
201
- * at the surface's FULL size even while collapsed: `reserved` is what must stay
202
- * permanently free, and the collapse is reported separately by `collapsed`.
154
+ * the space it occupies so that everything reading `useBottomEdgeInset()` stays
155
+ * off it. Pass the FULL footprint (the surface's height plus the gap it holds
156
+ * off the window edge), which is the same number the surface positions itself
157
+ * with.
203
158
  *
204
159
  * A no-op outside a provider, so a surface stays usable standalone.
205
160
  */
206
- function useClaimBottomEdge(reserved, collapsed = false) {
161
+ function useClaimBottomEdge(height) {
207
162
  const store = (0, _react.useContext)(BottomEdgeContext);
208
163
  const id = (0, _react.useId)();
209
164
  (0, _react.useEffect)(() => {
210
165
  if (!store) return;
211
- store.claim(id, reserved, collapsed);
166
+ store.claim(id, height);
212
167
  return () => store.release(id);
213
- }, [store, id, reserved, collapsed]);
168
+ }, [store, id, height]);
214
169
  }
215
170
  //# sourceMappingURL=bottom-edge.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_jsxRuntime","createBottomEdgeStore","claims","Map","listeners","Set","reserved","collapsed","recompute","nextReserved","nextCollapsed","claim","values","listener","subscribe","onChange","add","delete","getReserved","getCollapsed","id","existing","get","set","release","BottomEdgeContext","createContext","BottomEdgeProvider","children","store","useState","jsx","Provider","value","displayName","NO_SUBSCRIPTION","NO_INSET","NO_COLLAPSE","useBottomEdgeInset","useContext","useSyncExternalStore","useBottomEdgeCollapsed","useClaimBottomEdge","useId","useEffect"],"sourceRoot":"../../../src","sources":["layout/bottom-edge.tsx"],"mappings":";;;;;;;;;AAgEA,IAAAA,MAAA,GAAAC,OAAA;AAQe,IAAAC,WAAA,GAAAD,OAAA;AAxEf;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;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;AACA;AACA;AACA;;AAgCA,SAASE,qBAAqBA,CAAA,EAAoB;EAChD,MAAMC,MAAM,GAAG,IAAIC,GAAG,CAAgB,CAAC;EACvC,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EACvC,IAAIC,QAAQ,GAAG,CAAC;EAChB,IAAIC,SAAS,GAAG,KAAK;EAErB,MAAMC,SAAS,GAAGA,CAAA,KAAM;IACtB,IAAIC,YAAY,GAAG,CAAC;IACpB;IACA;IACA;IACA;IACA;IACA,IAAIC,aAAa,GAAG,KAAK;IACzB,KAAK,MAAMC,KAAK,IAAIT,MAAM,CAACU,MAAM,CAAC,CAAC,EAAE;MACnC,IAAID,KAAK,CAACL,QAAQ,GAAGG,YAAY,EAAEA,YAAY,GAAGE,KAAK,CAACL,QAAQ;MAChE,IAAIK,KAAK,CAACJ,SAAS,EAAEG,aAAa,GAAG,IAAI;IAC3C;IACA;IACA;IACA,IAAID,YAAY,KAAKH,QAAQ,IAAII,aAAa,KAAKH,SAAS,EAAE;IAC9DD,QAAQ,GAAGG,YAAY;IACvBF,SAAS,GAAGG,aAAa;IACzB,KAAK,MAAMG,QAAQ,IAAIT,SAAS,EAAES,QAAQ,CAAC,CAAC;EAC9C,CAAC;EAED,OAAO;IACLC,SAASA,CAACC,QAAQ,EAAE;MAClBX,SAAS,CAACY,GAAG,CAACD,QAAQ,CAAC;MACvB,OAAO,MAAM;QACXX,SAAS,CAACa,MAAM,CAACF,QAAQ,CAAC;MAC5B,CAAC;IACH,CAAC;IACDG,WAAW,EAAEA,CAAA,KAAMZ,QAAQ;IAC3Ba,YAAY,EAAEA,CAAA,KAAMZ,SAAS;IAC7BI,KAAKA,CAACS,EAAE,EAAEX,YAAY,EAAEC,aAAa,EAAE;MACrC,MAAMW,QAAQ,GAAGnB,MAAM,CAACoB,GAAG,CAACF,EAAE,CAAC;MAC/B,IAAIC,QAAQ,EAAEf,QAAQ,KAAKG,YAAY,IAAIY,QAAQ,CAACd,SAAS,KAAKG,aAAa,EAAE;MACjFR,MAAM,CAACqB,GAAG,CAACH,EAAE,EAAE;QAAEd,QAAQ,EAAEG,YAAY;QAAEF,SAAS,EAAEG;MAAc,CAAC,CAAC;MACpEF,SAAS,CAAC,CAAC;IACb,CAAC;IACDgB,OAAOA,CAACJ,EAAE,EAAE;MACV,IAAI,CAAClB,MAAM,CAACe,MAAM,CAACG,EAAE,CAAC,EAAE;MACxBZ,SAAS,CAAC,CAAC;IACb;EACF,CAAC;AACH;AAEA,MAAMiB,iBAAiB,gBAAG,IAAAC,oBAAa,EAAyB,IAAI,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAC;EAAEC;AAA4B,CAAC,EAAE;EAClE,MAAM,CAACC,KAAK,CAAC,GAAG,IAAAC,eAAQ,EAAC7B,qBAAqB,CAAC;EAC/C,oBAAO,IAAAD,WAAA,CAAA+B,GAAA,EAACN,iBAAiB,CAACO,QAAQ;IAACC,KAAK,EAAEJ,KAAM;IAAAD,QAAA,EAAEA;EAAQ,CAA6B,CAAC;AAC1F;AAEAD,kBAAkB,CAACO,WAAW,GAAG,oBAAoB;;AAErD;AACA;AACA,MAAMC,eAAe,GAAGA,CAAA,KAAM,MAAM,CAAC,CAAC;AACtC,MAAMC,QAAQ,GAAGA,CAAA,KAAM,CAAC;AACxB,MAAMC,WAAW,GAAGA,CAAA,KAAM,KAAK;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAA,EAAW;EAC3C,MAAMT,KAAK,GAAG,IAAAU,iBAAU,EAACd,iBAAiB,CAAC;EAC3C,OAAO,IAAAe,2BAAoB,EACzBX,KAAK,EAAEf,SAAS,IAAIqB,eAAe,EACnCN,KAAK,EAAEX,WAAW,IAAIkB,QAAQ,EAC9BP,KAAK,EAAEX,WAAW,IAAIkB,QACxB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,sBAAsBA,CAAA,EAAY;EAChD,MAAMZ,KAAK,GAAG,IAAAU,iBAAU,EAACd,iBAAiB,CAAC;EAC3C,OAAO,IAAAe,2BAAoB,EACzBX,KAAK,EAAEf,SAAS,IAAIqB,eAAe,EACnCN,KAAK,EAAEV,YAAY,IAAIkB,WAAW,EAClCR,KAAK,EAAEV,YAAY,IAAIkB,WACzB,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,kBAAkBA,CAACpC,QAAgB,EAAEC,SAAS,GAAG,KAAK,EAAQ;EAC5E,MAAMsB,KAAK,GAAG,IAAAU,iBAAU,EAACd,iBAAiB,CAAC;EAC3C,MAAML,EAAE,GAAG,IAAAuB,YAAK,EAAC,CAAC;EAElB,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACf,KAAK,EAAE;IACZA,KAAK,CAAClB,KAAK,CAACS,EAAE,EAAEd,QAAQ,EAAEC,SAAS,CAAC;IACpC,OAAO,MAAMsB,KAAK,CAACL,OAAO,CAACJ,EAAE,CAAC;EAChC,CAAC,EAAE,CAACS,KAAK,EAAET,EAAE,EAAEd,QAAQ,EAAEC,SAAS,CAAC,CAAC;AACtC","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_jsxRuntime","createBottomEdgeStore","claims","Map","listeners","Set","inset","recompute","next","height","values","listener","subscribe","onChange","add","delete","getInset","claim","id","get","set","release","BottomEdgeContext","createContext","BottomEdgeProvider","children","store","useState","jsx","Provider","value","displayName","NO_SUBSCRIPTION","NO_INSET","useBottomEdgeInset","useContext","useSyncExternalStore","useClaimBottomEdge","useId","useEffect"],"sourceRoot":"../../../src","sources":["layout/bottom-edge.tsx"],"mappings":"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","ignoreList":[]}
@@ -15,12 +15,6 @@ Object.defineProperty(exports, "EDGE_GAP", {
15
15
  return _edge.EDGE_GAP;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "useBottomEdgeCollapsed", {
19
- enumerable: true,
20
- get: function () {
21
- return _bottomEdge.useBottomEdgeCollapsed;
22
- }
23
- });
24
18
  Object.defineProperty(exports, "useBottomEdgeInset", {
25
19
  enumerable: true,
26
20
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_edge","require","_bottomEdge"],"sourceRoot":"../../../src","sources":["layout/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_edge","require","_bottomEdge"],"sourceRoot":"../../../src","sources":["layout/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA","ignoreList":[]}
@@ -49,6 +49,7 @@ function TabBarBody({
49
49
  Blur,
50
50
  children,
51
51
  activeIndex,
52
+ activeProgress,
52
53
  onIndexChange,
53
54
  onIndexLongPress,
54
55
  theme: themeOverrides,
@@ -128,6 +129,28 @@ function TabBarBody({
128
129
  // a legitimate effect (external-system sync), the same shape `Tabs` uses for
129
130
  // its underline. The focus-driven path is handled per-button instead — see
130
131
  // `TabBarButtonBody`.
132
+ // DRIVEN path: a pager owns the highlight's position and writes it every
133
+ // frame, so the position is COPIED rather than sprung — a spring chasing a
134
+ // per-frame value lags behind the finger, which is the whole thing this path
135
+ // exists to avoid.
136
+ //
137
+ // `useAnimatedReaction` cannot be called conditionally, so an unsupplied
138
+ // `activeProgress` is stood in for by a shared value nothing ever writes and
139
+ // the reaction returns early. `driven` changing flips the identity of `source`
140
+ // too, and both are in the deps array, so the reaction re-registers either
141
+ // way.
142
+ //
143
+ // Scrubbing still wins: a finger on the BAR is a direct manipulation of the
144
+ // bar and must not be fought by the pager's settle animation.
145
+ // (Deps: see the CRITICAL note below.)
146
+ const idleProgress = (0, _reactNativeReanimated.useSharedValue)(0);
147
+ const driven = activeProgress !== undefined;
148
+ const source = activeProgress ?? idleProgress;
149
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => source.value, value => {
150
+ if (!driven) return;
151
+ if (isDragging.value) return;
152
+ slideIndex.value = value;
153
+ }, [source, driven, isDragging, slideIndex]);
131
154
  (0, _react.useEffect)(() => {
132
155
  if (activeIndex === undefined) return;
133
156
  // While scrubbing the finger owns the highlight; never fight it.
@@ -148,9 +171,16 @@ function TabBarBody({
148
171
  // stale index would animate out of a position the user never saw, and would
149
172
  // light up every tab in between on the way. Interrupted mid-fade it is
150
173
  // still on screen, so from there it slides as it always does.
151
- slideIndex.value = highlightOpacity.value === 0 ? activeIndex : (0, _reactNativeReanimated.withSpring)(activeIndex, _shared.SLIDE_SPRING);
174
+ //
175
+ // On the DRIVEN path this effect keeps owning visibility and gives up the
176
+ // position: the driver is already writing `slideIndex` every frame, and a
177
+ // spring started here would drag the capsule across the bar between two of
178
+ // its writes.
179
+ if (!driven) {
180
+ slideIndex.value = highlightOpacity.value === 0 ? activeIndex : (0, _reactNativeReanimated.withSpring)(activeIndex, _shared.SLIDE_SPRING);
181
+ }
152
182
  highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
153
- }, [activeIndex, hasSelection, slideIndex, highlightOpacity, isDragging]);
183
+ }, [activeIndex, hasSelection, driven, slideIndex, highlightOpacity, isDragging]);
154
184
 
155
185
  // Scrubbing: the highlight tracks the finger 1:1 while dragging (no spring —
156
186
  // it must feel attached), haptic ticks fire on boundary crossings, and
@@ -216,7 +246,14 @@ function TabBarBody({
216
246
  const index = Math.round(indexAtX(event.x, progress.value));
217
247
  // Same rule as the controlled path above: appear at the tapped tab when
218
248
  // hidden, slide to it when already on screen.
219
- slideIndex.value = highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
249
+ //
250
+ // A tap is a discrete writer, so on the DRIVEN path it stands down like
251
+ // the others and the driver carries the highlight to the tapped tab.
252
+ // The scrub is the one gesture that does not: a finger dragging the
253
+ // pill is manipulating the bar itself, not asking for a page.
254
+ if (!driven) {
255
+ slideIndex.value = highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
256
+ }
220
257
  highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
221
258
  (0, _context.setMinimized)(minimized, 0);
222
259
  (0, _reactNativeReanimated.runOnJS)(selectIndex)(index);
@@ -236,7 +273,7 @@ function TabBarBody({
236
273
  (0, _reactNativeReanimated.runOnJS)(longPressIndex)(Math.round(indexAtX(event.x, progress.value)));
237
274
  });
238
275
  return _reactNativeGestureHandler.Gesture.Race(pan, tap, longPress);
239
- }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, isDragging, lastTicked, slideIndex, highlightOpacity, minimized, progress]);
276
+ }, [barOuterWidth, tabCount, selectIndex, hasLongPress, longPressIndex, tick, driven, isDragging, lastTicked, slideIndex, highlightOpacity, minimized, progress]);
240
277
 
241
278
  // CRITICAL — every shared value and every scalar a mapper READS must appear
242
279
  // in its dependency array. On web WITHOUT the react-native-worklets babel
@@ -311,29 +348,13 @@ function TabBarBody({
311
348
  // its own layout can never drift from where the bar actually sits.
312
349
  const bottomOffset = (0, _edge.windowEdgeGap)(insets.bottom);
313
350
 
314
- // Whether the bar has settled into its minimized size, as REACT state.
315
- //
316
- // Reacting on `target` rather than on `progress` is what keeps this cheap:
317
- // `target` is the binary 0/1 the minimize spring is heading for, so this fires
318
- // twice per scroll gesture instead of once per frame. Crossing `progress > 0.5`
319
- // would work too and would cost the same, but it would report the change
320
- // halfway through the animation rather than when it was decided.
321
- const [isMinimized, setIsMinimized] = (0, _react.useState)(false);
322
- (0, _reactNativeReanimated.useAnimatedReaction)(() => minimized.target.value, (target, previous) => {
323
- if (target !== previous) (0, _reactNativeReanimated.runOnJS)(setIsMinimized)(target === 1);
324
- }, [minimized]);
325
-
326
351
  // Publish what the bar occupies so anything else at this edge stacks above it
327
- // rather than behind it. Same numbers `useTabBarFootprint` reports, derived
328
- // from the same geometry, so a consumer reading either can never disagree with
329
- // where the bar actually sits.
330
- //
331
- // RESERVED stays the EXPANDED height even while minimized: the bar re-expands
332
- // the moment the user scrolls back up, so anything that permanently reserves
333
- // space (a list's bottom padding, a toast) must keep room for the full pill or
334
- // it would jitter on every scroll. The collapse travels as its own STATE — see
335
- // `layout/bottom-edge` for why it is a boolean and not the live height.
336
- (0, _bottomEdge.useClaimBottomEdge)(bottomOffset + _shared.EXPANDED_HEIGHT, isMinimized);
352
+ // rather than behind it. Same number `useTabBarFootprint` reports, derived from
353
+ // the same two values, so a consumer reading either can never disagree with
354
+ // where the bar actually sits. The EXPANDED height on purpose: the bar
355
+ // minimizes on scroll and re-expands, so claiming the minimized height would
356
+ // drop a FAB onto the pill the moment the user scrolled back up.
357
+ (0, _bottomEdge.useClaimBottomEdge)(bottomOffset + _shared.EXPANDED_HEIGHT);
337
358
 
338
359
  // How centring and the animated inset compose: centring is STATIC and belongs
339
360
  // to the wrap, the inset stays ANIMATED on the pill inside it. The wrap is
@@ -356,8 +377,9 @@ function TabBarBody({
356
377
  isDragging,
357
378
  theme,
358
379
  activeIndex,
380
+ driven,
359
381
  selectIndex
360
- }), [slideIndex, highlightOpacity, isDragging, theme, activeIndex, selectIndex]);
382
+ }), [slideIndex, highlightOpacity, isDragging, theme, activeIndex, driven, selectIndex]);
361
383
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
362
384
  ...viewProps,
363
385
  pointerEvents: "box-none",
@@ -431,6 +453,10 @@ function TabBarButtonBody({
431
453
  (0, _react.useEffect)(() => {
432
454
  if (isFocused === undefined || !isFocused || !bar) return;
433
455
  if (bar.isDragging.value) return;
456
+ // A driver owns the position — see `TabBarProps.activeProgress`. It is
457
+ // already tracking this same focus change; springing from here as well would
458
+ // be a second writer on one shared value.
459
+ if (bar.driven) return;
434
460
  bar.slideIndex.value = (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
435
461
  }, [isFocused, index, bar]);
436
462
 
@@ -492,8 +518,12 @@ function TabBarButtonBody({
492
518
  // for assistive-technology activation (VoiceOver) and keyboard focus.
493
519
  if (bar) {
494
520
  // Appear at the tab when hidden, slide to it when visible — the same
495
- // rule the tap gesture and the controlled path follow.
496
- bar.slideIndex.value = bar.highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
521
+ // rule the tap gesture and the controlled path follow. Skipped on the
522
+ // driven path, where the position belongs to the driver and this
523
+ // press will reach it as an ordinary selection.
524
+ if (!bar.driven) {
525
+ bar.slideIndex.value = bar.highlightOpacity.value === 0 ? index : (0, _reactNativeReanimated.withSpring)(index, _shared.SLIDE_SPRING);
526
+ }
497
527
  bar.highlightOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _shared.HIGHLIGHT_FADE);
498
528
  }
499
529
  (0, _context.setMinimized)(minimized, 0);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSafeAreaContext","_useHaptics","_bottomEdge","_edge","_context","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BarContext","createContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","useSafeAreaInsets","width","windowWidth","useWindowDimensions","minimized","useMinimizeState","progress","tabCount","Math","max","Children","count","hasSelection","undefined","Number","isInteger","slideIndex","useSharedValue","highlightOpacity","isDragging","lastTicked","useTabBarTheme","impact","useHaptics","barOuterWidth","BAR_MARGIN","min","tick","useCallback","selectIndex","index","longPressIndex","hasLongPress","useEffect","value","withTiming","HIGHLIGHT_FADE","withSpring","SLIDE_SPRING","gesture","useMemo","indexAtX","x","minimizedValue","sideInset","interpolate","MINIMIZED_INSET","Extrapolation","CLAMP","barWidth","itemWidth","ROW_PAD_H","raw","pan","Gesture","Pan","activeOffsetX","failOffsetY","onStart","event","round","setMinimized","onUpdate","rounded","runOnJS","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","LONG_PRESS_MIN_DURATION","barStyle","useAnimatedStyle","height","EXPANDED_HEIGHT","MINIMIZED_HEIGHT","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","top","opacity","transform","translateX","bottomOffset","windowEdgeGap","bottom","isMinimized","setIsMinimized","useState","useAnimatedReaction","target","previous","useClaimBottomEdge","constrainedWrapStyle","alignSelf","barContext","jsxs","View","pointerEvents","styles","root","jsx","direction","intensity","position","left","right","BLUR_BLEED","barWrap","marginBottom","GestureDetector","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","useContext","standaloneTheme","focused","activeGlyphStyle","proximity","abs","labelStyle","color","activeTint","inactiveTint","interpolateColor","boxStyle","Pressable","accessibilityLabel","label","state","button","itemBox","tint","size","ICON_SIZE","active","StyleSheet","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","ITEM_PAD_V","overflow","fontSize","LABEL_FONT_SIZE","fontWeight","marginTop","ITEM_GAP"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_reactNativeSafeAreaContext","_useHaptics","_bottomEdge","_edge","_context","_shared","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BarContext","createContext","TabBarBody","Surface","Blur","children","activeIndex","activeProgress","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","useSafeAreaInsets","width","windowWidth","useWindowDimensions","minimized","useMinimizeState","progress","tabCount","Math","max","Children","count","hasSelection","undefined","Number","isInteger","slideIndex","useSharedValue","highlightOpacity","isDragging","lastTicked","useTabBarTheme","impact","useHaptics","barOuterWidth","BAR_MARGIN","min","tick","useCallback","selectIndex","index","longPressIndex","hasLongPress","idleProgress","driven","source","useAnimatedReaction","value","useEffect","withTiming","HIGHLIGHT_FADE","withSpring","SLIDE_SPRING","gesture","useMemo","indexAtX","x","minimizedValue","sideInset","interpolate","MINIMIZED_INSET","Extrapolation","CLAMP","barWidth","itemWidth","ROW_PAD_H","raw","pan","Gesture","Pan","activeOffsetX","failOffsetY","onStart","event","round","setMinimized","onUpdate","rounded","runOnJS","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","LONG_PRESS_MIN_DURATION","barStyle","useAnimatedStyle","height","EXPANDED_HEIGHT","MINIMIZED_HEIGHT","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","HIGHLIGHT_EXPANDED","HIGHLIGHT_MINIMIZED","top","opacity","transform","translateX","bottomOffset","windowEdgeGap","bottom","useClaimBottomEdge","constrainedWrapStyle","alignSelf","barContext","jsxs","View","pointerEvents","styles","root","jsx","direction","intensity","position","left","right","BLUR_BLEED","barWrap","marginBottom","GestureDetector","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","useContext","standaloneTheme","focused","activeGlyphStyle","proximity","abs","labelStyle","color","activeTint","inactiveTint","interpolateColor","boxStyle","Pressable","accessibilityLabel","label","state","button","itemBox","tint","size","ICON_SIZE","active","StyleSheet","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","ITEM_PAD_V","overflow","fontSize","LABEL_FONT_SIZE","fontWeight","marginTop","ITEM_GAP"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
@@ -24,6 +24,11 @@ var _jsxRuntime = require("react/jsx-runtime");
24
24
  * by each trigger's own focus (see `RouterTabBarButton`), which is what keeps it
25
25
  * correct through deep links, back gestures and any other programmatic
26
26
  * navigation. Setting both would put two writers on one shared value.
27
+ *
28
+ * `activeProgress` is NOT omitted, and that is not an oversight. It answers a
29
+ * different question — where the highlight is, not whether there is one — so a
30
+ * router-focused bar whose screens are PAGED can pass it and keep the focus
31
+ * path for selection. See `TabBarProps.activeProgress`.
27
32
  */
28
33
 
29
34
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_jsxRuntime","RouterTabBar","asChild","_asChild","props","jsx","TabBar","displayName","RouterTabBarButton","item","index","href","_href","TabBarButton"],"sourceRoot":"../../../../src","sources":["tab-bar/expo-router/RouterTabBar.tsx"],"mappings":";;;;;;;AAaA,IAAAA,MAAA,GAAAC,OAAA;AAAgD,IAAAC,WAAA,GAAAD,OAAA;AAbhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAAC;EAC3B;EACA;EACA;EACAC,OAAO,EAAEC,QAAQ;EACjB,GAAGC;AACc,CAAC,EAAE;EACpB,oBAAO,IAAAJ,WAAA,CAAAK,GAAA,EAACP,MAAA,CAAAQ,MAAM;IAAA,GAAKF;EAAK,CAAG,CAAC;AAC9B;AAEAH,YAAY,CAACM,WAAW,GAAG,cAAc;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAC;EACjCC,IAAI;EACJC,KAAK;EACL;EACA;EACA;EACAC,IAAI,EAAEC,KAAK;EACX,GAAGR;AACoB,CAAC,EAAE;EAC1B,oBAAO,IAAAJ,WAAA,CAAAK,GAAA,EAACP,MAAA,CAAAe,YAAY;IAAA,GAAKT,KAAK;IAAEK,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC9D;AAEAF,kBAAkB,CAACD,WAAW,GAAG,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["_index","require","_jsxRuntime","RouterTabBar","asChild","_asChild","props","jsx","TabBar","displayName","RouterTabBarButton","item","index","href","_href","TabBarButton"],"sourceRoot":"../../../../src","sources":["tab-bar/expo-router/RouterTabBar.tsx"],"mappings":";;;;;;;AAaA,IAAAA,MAAA,GAAAC,OAAA;AAAgD,IAAAC,WAAA,GAAAD,OAAA;AAbhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAAC;EAC3B;EACA;EACA;EACAC,OAAO,EAAEC,QAAQ;EACjB,GAAGC;AACc,CAAC,EAAE;EACpB,oBAAO,IAAAJ,WAAA,CAAAK,GAAA,EAACP,MAAA,CAAAQ,MAAM;IAAA,GAAKF;EAAK,CAAG,CAAC;AAC9B;AAEAH,YAAY,CAACM,WAAW,GAAG,cAAc;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAC;EACjCC,IAAI;EACJC,KAAK;EACL;EACA;EACA;EACAC,IAAI,EAAEC,KAAK;EACX,GAAGR;AACoB,CAAC,EAAE;EAC1B,oBAAO,IAAAJ,WAAA,CAAAK,GAAA,EAACP,MAAA,CAAAe,YAAY;IAAA,GAAKT,KAAK;IAAEK,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA;EAAM,CAAE,CAAC;AAC9D;AAEAF,kBAAkB,CAACD,WAAW,GAAG,oBAAoB","ignoreList":[]}
@@ -10,7 +10,7 @@ import { Z_INDEX } from "../styles/z-index.js";
10
10
  import { useAvatarPlaceholder } from "./context.js";
11
11
  import { LiveBadge } from "./LiveBadge.js";
12
12
  import { AvatarRing, getRingOuterSize } from "./AvatarRing.js";
13
- import { SQUIRCLE_PATH } from "./squircle-path.js";
13
+ import { resolveAvatarShape } from "./resolve-shape.js";
14
14
  // Google Contacts-inspired palette used to pick a deterministic background
15
15
  // color for name-based placeholder avatars.
16
16
  const NAME_AVATAR_COLORS = ['#D93025', '#E8710A', '#F9AB00', '#1E8E3E', '#12B5CB', '#1A73E8', '#7627BB', '#C5221F', '#0B8043', '#A142F4'];
@@ -37,10 +37,20 @@ function getNameColor(name) {
37
37
  import DEFAULT_AVATAR_IMAGE from "./default-avatar.js";
38
38
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
39
39
  let clipIdCounter = 0;
40
- function SquircleImage({
40
+
41
+ /**
42
+ * Renders the avatar image clipped to an arbitrary outline.
43
+ *
44
+ * The path and the SVG viewport share one coordinate space, so a 0–1 squircle
45
+ * and a 0–100 named shape both work without rewriting their numbers: the
46
+ * viewport is declared at the path's own scale and the whole thing is drawn at
47
+ * `size` pixels.
48
+ */
49
+ function ClippedImage({
41
50
  uri,
42
51
  fallbackSource,
43
52
  size,
53
+ shape,
44
54
  fallbackColor,
45
55
  placeholderIcon,
46
56
  name,
@@ -58,6 +68,7 @@ function SquircleImage({
58
68
  name: name
59
69
  });
60
70
  }
71
+ const span = shape.viewBox ?? 1;
61
72
  return /*#__PURE__*/_jsxs(_Fragment, {
62
73
  children: [uri && /*#__PURE__*/_jsx(Image, {
63
74
  source: {
@@ -68,18 +79,18 @@ function SquircleImage({
68
79
  }), /*#__PURE__*/_jsxs(Svg, {
69
80
  width: size,
70
81
  height: size,
71
- viewBox: "0 0 1 1",
82
+ viewBox: `0 0 ${span} ${span}`,
72
83
  children: [/*#__PURE__*/_jsx(Defs, {
73
84
  children: /*#__PURE__*/_jsx(ClipPath, {
74
85
  id: clipId,
75
86
  children: /*#__PURE__*/_jsx(Path, {
76
- d: SQUIRCLE_PATH
87
+ d: shape.d
77
88
  })
78
89
  })
79
90
  }), /*#__PURE__*/_jsx(SvgImage, {
80
91
  href: href,
81
- width: 1,
82
- height: 1,
92
+ width: span,
93
+ height: span,
83
94
  preserveAspectRatio: "xMidYMid slice",
84
95
  clipPath: `url(#${clipId})`
85
96
  })]
@@ -164,6 +175,10 @@ const AvatarComponent = ({
164
175
  const theme = useTheme();
165
176
  const placeholderConfig = useAvatarPlaceholder();
166
177
  const radius = size / 2;
178
+ // `null` means "a circle", which is drawn with borderRadius and never reaches
179
+ // the SVG renderer. Memoised so an inline `shape={{ d: … }}` object literal
180
+ // does not produce a new clip descriptor on every render.
181
+ const clipShape = useMemo(() => resolveAvatarShape(shape), [shape]);
167
182
  const hasName = typeof name === 'string' && name.trim().length > 0;
168
183
  // Priority: explicit placeholderColor > deterministic color from name > theme default.
169
184
  const fallbackColor = placeholderColor || (hasName ? getNameColor(name) : theme.colors.backgroundTertiary);
@@ -236,7 +251,7 @@ const AvatarComponent = ({
236
251
  const showLiveBadge = live && size > 16 && !hideLiveBadge;
237
252
  const ringElement = resolvedRing ? /*#__PURE__*/_jsx(AvatarRing, {
238
253
  size: size,
239
- shape: shape,
254
+ shape: clipShape,
240
255
  colors: resolvedRing.colors,
241
256
  width: ringWidth,
242
257
  gap: ringGap,
@@ -251,10 +266,11 @@ const AvatarComponent = ({
251
266
  width: size,
252
267
  height: size
253
268
  }],
254
- children: [shape === 'squircle' ? /*#__PURE__*/_jsx(SquircleImage, {
269
+ children: [clipShape ? /*#__PURE__*/_jsx(ClippedImage, {
255
270
  uri: effectiveUri,
256
271
  fallbackSource: fallbackSource,
257
272
  size: size,
273
+ shape: clipShape,
258
274
  fallbackColor: fallbackColor,
259
275
  placeholderIcon: resolvedPlaceholderIcon,
260
276
  name: name,