@oxyhq/bloom 1.13.0 → 1.14.1

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/media-flight.mdx +15 -6
  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/media-flight/MediaSurface.js +51 -10
  17. package/lib/commonjs/media-flight/MediaSurface.js.map +1 -1
  18. package/lib/commonjs/media-flight/constants.js +32 -7
  19. package/lib/commonjs/media-flight/constants.js.map +1 -1
  20. package/lib/commonjs/tab-bar/TabBarBase.js +87 -13
  21. package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -1
  22. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js +5 -0
  23. package/lib/commonjs/tab-bar/expo-router/RouterTabBar.js.map +1 -1
  24. package/lib/commonjs/theme/color-scope/ColorScope.js +42 -12
  25. package/lib/commonjs/theme/color-scope/ColorScope.js.map +1 -1
  26. package/lib/commonjs/theme/color-scope/ColorScope.web.js +2 -8
  27. package/lib/commonjs/theme/color-scope/ColorScope.web.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/media-flight/MediaSurface.js +52 -11
  39. package/lib/module/media-flight/MediaSurface.js.map +1 -1
  40. package/lib/module/media-flight/constants.js +31 -6
  41. package/lib/module/media-flight/constants.js.map +1 -1
  42. package/lib/module/tab-bar/TabBarBase.js +89 -15
  43. package/lib/module/tab-bar/TabBarBase.js.map +1 -1
  44. package/lib/module/tab-bar/expo-router/RouterTabBar.js +5 -0
  45. package/lib/module/tab-bar/expo-router/RouterTabBar.js.map +1 -1
  46. package/lib/module/theme/color-scope/ColorScope.js +45 -13
  47. package/lib/module/theme/color-scope/ColorScope.js.map +1 -1
  48. package/lib/module/theme/color-scope/ColorScope.web.js +3 -9
  49. package/lib/module/theme/color-scope/ColorScope.web.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/media-flight/MediaSurface.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/media-flight/constants.d.ts +30 -6
  63. package/lib/typescript/commonjs/media-flight/constants.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/media-flight/types.d.ts +7 -2
  65. package/lib/typescript/commonjs/media-flight/types.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
  68. package/lib/typescript/commonjs/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/tab-bar/types.d.ts +36 -5
  70. package/lib/typescript/commonjs/tab-bar/types.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/theme/color-scope/ColorScope.d.ts +36 -2
  72. package/lib/typescript/commonjs/theme/color-scope/ColorScope.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/theme/color-scope/ColorScope.web.d.ts +6 -2
  74. package/lib/typescript/commonjs/theme/color-scope/ColorScope.web.d.ts.map +1 -1
  75. package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
  76. package/lib/typescript/module/avatar/AvatarRing.d.ts +4 -3
  77. package/lib/typescript/module/avatar/AvatarRing.d.ts.map +1 -1
  78. package/lib/typescript/module/avatar/index.d.ts +3 -1
  79. package/lib/typescript/module/avatar/index.d.ts.map +1 -1
  80. package/lib/typescript/module/avatar/resolve-shape.d.ts +17 -0
  81. package/lib/typescript/module/avatar/resolve-shape.d.ts.map +1 -0
  82. package/lib/typescript/module/avatar/shape-paths.d.ts +27 -0
  83. package/lib/typescript/module/avatar/shape-paths.d.ts.map +1 -0
  84. package/lib/typescript/module/avatar/types.d.ts +30 -3
  85. package/lib/typescript/module/avatar/types.d.ts.map +1 -1
  86. package/lib/typescript/module/media-flight/MediaSurface.d.ts.map +1 -1
  87. package/lib/typescript/module/media-flight/constants.d.ts +30 -6
  88. package/lib/typescript/module/media-flight/constants.d.ts.map +1 -1
  89. package/lib/typescript/module/media-flight/types.d.ts +7 -2
  90. package/lib/typescript/module/media-flight/types.d.ts.map +1 -1
  91. package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -1
  92. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts +5 -0
  93. package/lib/typescript/module/tab-bar/expo-router/RouterTabBar.d.ts.map +1 -1
  94. package/lib/typescript/module/tab-bar/types.d.ts +36 -5
  95. package/lib/typescript/module/tab-bar/types.d.ts.map +1 -1
  96. package/lib/typescript/module/theme/color-scope/ColorScope.d.ts +36 -2
  97. package/lib/typescript/module/theme/color-scope/ColorScope.d.ts.map +1 -1
  98. package/lib/typescript/module/theme/color-scope/ColorScope.web.d.ts +6 -2
  99. package/lib/typescript/module/theme/color-scope/ColorScope.web.d.ts.map +1 -1
  100. package/package.json +1 -1
  101. package/src/avatar/Avatar.tsx +27 -10
  102. package/src/avatar/AvatarRing.tsx +21 -14
  103. package/src/avatar/index.ts +7 -0
  104. package/src/avatar/resolve-shape.ts +33 -0
  105. package/src/avatar/shape-paths.ts +150 -0
  106. package/src/avatar/types.ts +32 -3
  107. package/src/media-flight/MediaSurface.tsx +60 -14
  108. package/src/media-flight/constants.ts +31 -6
  109. package/src/media-flight/types.ts +7 -2
  110. package/src/tab-bar/TabBarBase.tsx +110 -17
  111. package/src/tab-bar/expo-router/RouterTabBar.tsx +5 -0
  112. package/src/tab-bar/types.ts +36 -5
  113. package/src/theme/color-scope/ColorScope.tsx +53 -12
  114. package/src/theme/color-scope/ColorScope.web.tsx +10 -8
package/README.md CHANGED
@@ -65,7 +65,7 @@ Required by specific surfaces, and by more of them than you would guess:
65
65
  |---|---|---|
66
66
  | `react-native-reanimated` | `>=3.13.0` | `Dialog`, `BottomSheet`, `toast`, `Loading`, on the web too |
67
67
  | `react-native-gesture-handler` | `>=2.16.1` | `Dialog`, `BottomSheet`, swipe to dismiss on toasts |
68
- | `react-native-svg` | `>=13.0.0` | icons, `Avatar` in `squircle` shape |
68
+ | `react-native-svg` | `>=13.0.0` | icons, `Avatar` in any non-circular shape |
69
69
  | `react-native-keyboard-controller` | `>=1.11.4` | keyboard aware surfaces |
70
70
  | `expo`, `expo-blur`, `expo-font`, `expo-haptics`, `expo-image`, `expo-symbols` | see `package.json` | native effects, fonts, haptics, images and SF Symbols |
71
71
  | `expo-glass-effect` | `>=0.1.9` | glass surfaces |
package/docs/avatar.mdx CHANGED
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  title: Avatar
3
- description: Image avatar with initials fallback, verified badge, and squircle option.
3
+ description: Image avatar with initials fallback, verified badge, and a registry of clip shapes.
4
4
  order: 12
5
5
  ---
6
6
 
7
7
  # Avatar
8
8
 
9
- Display a user's avatar. Accepts a URL, an `ImageSourcePropType`, or no image at all — falls back to a colored circle with the first letter of `name` (deterministic per name). Optional verified badge. Optional squircle shape.
9
+ Display a user's avatar. Accepts a URL, an `ImageSourcePropType`, or no image at all — falls back to a colored circle with the first letter of `name` (deterministic per name). Optional verified badge. Clips to a circle, a squircle, one of the named shapes, or an outline you supply.
10
10
 
11
11
  ## Basic
12
12
 
@@ -36,13 +36,54 @@ Custom badge:
36
36
  <Avatar uri={user.avatarUrl} verified verifiedIcon={<StarIcon />} size={64} />
37
37
  ```
38
38
 
39
- ## Squircle shape
39
+ ## Shapes
40
40
 
41
41
  ```tsx
42
42
  <Avatar uri={user.avatarUrl} shape="squircle" size={56} />
43
43
  ```
44
44
 
45
- Requires `react-native-svg`. Matches the iOS app-icon shape — a softened super-ellipse.
45
+ `'squircle'` matches the iOS app-icon shape — a softened super-ellipse.
46
+
47
+ Beyond it there is a registry of named outlines, for apps that let people pick
48
+ how their avatar is cut:
49
+
50
+ ```tsx
51
+ <Avatar uri={user.avatarUrl} shape="heart" size={56} />
52
+ <Avatar uri={user.avatarUrl} shape="pentagon" size={56} />
53
+ <Avatar uri={user.avatarUrl} shape="6-sided-cookie" size={56} />
54
+ ```
55
+
56
+ `AVATAR_SHAPE_LABELS` gives every name with a display label, in a sensible
57
+ order, so a picker does not have to hardcode the list:
58
+
59
+ ```tsx
60
+ import { AVATAR_SHAPE_LABELS } from '@oxyhq/bloom/avatar';
61
+
62
+ AVATAR_SHAPE_LABELS.map(({ name, label }) => (
63
+ <Pressable key={name} onPress={() => setShape(name)}>
64
+ <Avatar uri={user.avatarUrl} shape={name} size={44} />
65
+ <Text>{label}</Text>
66
+ </Pressable>
67
+ ));
68
+ ```
69
+
70
+ For anything not in the registry, pass your own outline. `viewBox` is the side
71
+ length of the square space the path is drawn in, so a path written over a
72
+ 0–100 grid needs no rescaling:
73
+
74
+ ```tsx
75
+ <Avatar
76
+ uri={user.avatarUrl}
77
+ shape={{ d: 'M50 2L96 50L50 98L4 50Z', viewBox: 100 }}
78
+ size={56}
79
+ />
80
+ ```
81
+
82
+ Every shape except `'circle'` clips through `react-native-svg`; a circle is
83
+ drawn with `borderRadius` and never touches the SVG renderer. A `ring` follows
84
+ whichever outline the avatar uses. A shape name that does not resolve falls
85
+ back to a circle rather than rendering an empty clip — which matters when a
86
+ persisted user preference outlives the build that offered it.
46
87
 
47
88
  ## Pressable
48
89
 
@@ -75,7 +116,7 @@ When no `source`, `uri`, or `name` resolves, you can fully control the placehold
75
116
  | `size?` | `number` | `40` | Diameter in dp. |
76
117
  | `verified?` | `boolean` | `false` | Show a verified badge bottom-right. |
77
118
  | `verifiedIcon?` | `React.ReactNode` | check icon | Custom badge node. |
78
- | `shape?` | `'circle' \| 'squircle'` | `'circle'` | `'squircle'` needs `react-native-svg`. |
119
+ | `shape?` | `'circle' \| 'squircle' \| AvatarShapeName \| AvatarShapePath` | `'circle'` | A built-in name or your own `{ d, viewBox }` outline. Anything but `'circle'` needs `react-native-svg`. |
79
120
  | `style?` | `StyleProp<ViewStyle>` | — | Container style. |
80
121
  | `imageStyle?` | `StyleProp<ImageStyle>` | — | Image style (circle only). |
81
122
  | `placeholderColor?` | `string` | derived | Override placeholder background. |
package/docs/index.mdx CHANGED
@@ -28,7 +28,7 @@ Also required:
28
28
 
29
29
  - `react-native-reanimated >= 3.13` (`Dialog`, `BottomSheet`, `toast`, `Loading`) — on web too
30
30
  - `react-native-gesture-handler >= 2.16.1` (`Dialog`, `BottomSheet`, toast swipe-to-dismiss) — native also needs the app root wrapped in `GestureHandlerRootView`
31
- - `react-native-svg >= 13` (Bloom icons, Avatar `squircle` shape)
31
+ - `react-native-svg >= 13` (Bloom icons, all non-circular Avatar shapes)
32
32
 
33
33
  ## What's inside
34
34
 
@@ -372,14 +372,23 @@ Three things about the props Bloom passes:
372
372
  and expo-video answers it by emptying the source — which pauses the element
373
373
  without an event, which is what stops an outgoing surface from pausing the one
374
374
  the viewer just landed on.
375
- - **Memoise the slot.** It is part of what a host publishes to the layer,
376
- compared by identity.
375
+ - **Memoise the slot.** It is compared by identity, and on web it is part of
376
+ what a host publishes to the layer. Listing the state it reads — `isWatched`
377
+ above — is the whole requirement: a slot that changes when those change is
378
+ memoised, and Bloom does not ask for more.
377
379
 
378
380
  All three fail silently and only in production, so Bloom says so in development
379
- instead: a slot that changes identity five times warns once about `useCallback`,
380
- and a media element that does not fill its wrapper warns once with both
381
- rectangles. Neither is a gate — they are the three trap-doors of this contract
382
- turned into three messages.
381
+ instead: a slot that arrives NEW on five consecutive renders inside half a
382
+ second warns once about `useCallback`, and a media element that does not fill
383
+ its wrapper warns once with both rectangles. Neither is a gate — they are the
384
+ three trap-doors of this contract turned into three messages.
385
+
386
+ Consecutive and fast, never a lifetime total. A slot rebuilt per render changes
387
+ as fast as its row renders; one memoised over changing state changes at the
388
+ speed of a finger, however long the surface lives. Counting total changes cannot
389
+ tell them apart, so it eventually accuses every correct consumer of the one
390
+ thing it is already doing — measured against a reel, where each activation of a
391
+ slide legitimately rebuilt the slot and four of them tripped the old counter.
383
392
 
384
393
  **The invariant that keeps this a primitive and not a coupling:** Bloom decides
385
394
  `player`, `style` and `contentFit`, and those three are exactly the three that
package/docs/tab-bar.mdx CHANGED
@@ -123,6 +123,40 @@ Two things about this shape are load-bearing:
123
123
 
124
124
  `renderFadingTabScreen` is a drop-in for `TabSlot`'s `renderFn`: identical to expo-router's default render, plus a fade and a micro-scale on the screen becoming focused. It is the only place `react-native-screens` is used.
125
125
 
126
+ ## Driven by a pager
127
+
128
+ `TabSlot` cross-fades screens; it does not translate them. An app that pages its tab screens side by side — the Instagram gesture — owns that motion itself, and then the highlight has to move with the finger rather than spring to a settled index once the navigation commits. `activeProgress` is that seam: a shared value the pager writes every frame, in TAB UNITS.
129
+
130
+ With `react-native-pager-view`, the value the bar wants is `position + offset` off `onPageScroll`, which reanimated can read on the UI thread — no bridge hop, no JS frame:
131
+
132
+ ```tsx
133
+ const progress = useSharedValue(0);
134
+
135
+ const onPageScroll = usePageScrollHandler({
136
+ onPageScroll: (event) => {
137
+ 'worklet';
138
+ // 1.4 = 40% of the way from the second tab to the third.
139
+ progress.value = event.position + event.offset;
140
+ },
141
+ }, [progress]);
142
+
143
+ <TabBar
144
+ activeIndex={activeIndex} // -1 on a screen that is not a tab → the highlight fades out
145
+ activeProgress={progress} // where the highlight IS, every frame
146
+ onIndexChange={selectTab}
147
+ >
148
+ ```
149
+
150
+ Three things about this are load-bearing:
151
+
152
+ - **It says where, not whether.** Selection stays with whichever path is already in play — `activeIndex` when the bar is controlled, per-button `isFocused` when it is not. So a fractional value is an ordinary position here, while a fractional `activeIndex` still means [no selection](#no-selection); the two props answer different questions and each has exactly one writer.
153
+ - **Keep it truthful.** While it is supplied, the controlled effect, the focus effect and a button's own press all stop writing the position. Nothing else will put the highlight back where the route says it is, so the driver must spring it to the settled index after a commit **and** after any navigation it did not cause — a deep link, a back gesture, a notification tap.
154
+ - **Scrubbing still wins.** A finger dragging along the pill is direct manipulation of the bar, not a request for a page, so it overrides the driver while it is down and reports through `onIndexChange` on release like any other selection.
155
+
156
+ <Callout variant="warning" title="A pager and `activeIndex` are not two writers">
157
+ The rule that made `RouterTabBar` omit `activeIndex` — two writers on one shared value — does not apply here, because `activeProgress` and `activeIndex` do not write the same thing. Position has one writer (the driver), visibility has one writer (`activeIndex` or `isFocused`). Passing a pager's progress alongside either is correct and is the intended shape.
158
+ </Callout>
159
+
126
160
  ## Minimizing on scroll
127
161
 
128
162
  Screens opt in with `useMinimizeOnScroll()`, which returns a scroll handler for `Animated.ScrollView`. Scrolling down minimizes the bar to icons only; scrolling up, or being near the top, expands it.
@@ -347,6 +381,7 @@ The tail gradient is derived from the theme's page background, so it works on li
347
381
  |------|------|---------|-------------|
348
382
  | `children` | `ReactNode` | — | The `TabBarButton`s, in bar order. |
349
383
  | `activeIndex?` | `number` | — | **Controlled path.** The focused tab; an index that names no tab (`-1`, past the last, fractional) hides the highlight — see [No selection](#no-selection). Omit it with a router — use per-button `isFocused` instead. |
384
+ | `activeProgress?` | `SharedValue<number>` | — | **Driven path.** The highlight's live position in tab units, on the UI thread — a pager writes its page position here and the highlight tracks the finger 1:1. Says WHERE, never WHETHER: pair it with `activeIndex` or per-button `isFocused` for selection. See [Driven by a pager](#driven-by-a-pager). |
350
385
  | `onIndexChange?` | `(index: number) => void` | — | Called with the chosen index on tap, on scrub release, or on keyboard / assistive-technology activation. |
351
386
  | `onIndexLongPress?` | `(index: number) => void` | — | Called with the index under the finger after a 500ms hold. Does not select. The gesture is armed only when this is supplied. |
352
387
  | `theme?` | `Partial<TabBarTheme>` | — | Partial override of the token-resolved theme. |
@@ -14,7 +14,7 @@ var _zIndex = require("../styles/z-index.js");
14
14
  var _context2 = require("./context.js");
15
15
  var _LiveBadge = require("./LiveBadge.js");
16
16
  var _AvatarRing = require("./AvatarRing.js");
17
- var _squirclePath = require("./squircle-path.js");
17
+ var _resolveShape = require("./resolve-shape.js");
18
18
  var _defaultAvatar = _interopRequireDefault(require("./default-avatar.js"));
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -44,10 +44,20 @@ function getNameColor(name) {
44
44
  // consumers compiling Bloom's source files directly.
45
45
 
46
46
  let clipIdCounter = 0;
47
- function SquircleImage({
47
+
48
+ /**
49
+ * Renders the avatar image clipped to an arbitrary outline.
50
+ *
51
+ * The path and the SVG viewport share one coordinate space, so a 0–1 squircle
52
+ * and a 0–100 named shape both work without rewriting their numbers: the
53
+ * viewport is declared at the path's own scale and the whole thing is drawn at
54
+ * `size` pixels.
55
+ */
56
+ function ClippedImage({
48
57
  uri,
49
58
  fallbackSource,
50
59
  size,
60
+ shape,
51
61
  fallbackColor,
52
62
  placeholderIcon,
53
63
  name,
@@ -65,6 +75,7 @@ function SquircleImage({
65
75
  name: name
66
76
  });
67
77
  }
78
+ const span = shape.viewBox ?? 1;
68
79
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
69
80
  children: [uri && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
70
81
  source: {
@@ -75,18 +86,18 @@ function SquircleImage({
75
86
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
76
87
  width: size,
77
88
  height: size,
78
- viewBox: "0 0 1 1",
89
+ viewBox: `0 0 ${span} ${span}`,
79
90
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Defs, {
80
91
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.ClipPath, {
81
92
  id: clipId,
82
93
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
83
- d: _squirclePath.SQUIRCLE_PATH
94
+ d: shape.d
84
95
  })
85
96
  })
86
97
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Image, {
87
98
  href: href,
88
- width: 1,
89
- height: 1,
99
+ width: span,
100
+ height: span,
90
101
  preserveAspectRatio: "xMidYMid slice",
91
102
  clipPath: `url(#${clipId})`
92
103
  })]
@@ -171,6 +182,10 @@ const AvatarComponent = ({
171
182
  const theme = (0, _useTheme.useTheme)();
172
183
  const placeholderConfig = (0, _context2.useAvatarPlaceholder)();
173
184
  const radius = size / 2;
185
+ // `null` means "a circle", which is drawn with borderRadius and never reaches
186
+ // the SVG renderer. Memoised so an inline `shape={{ d: … }}` object literal
187
+ // does not produce a new clip descriptor on every render.
188
+ const clipShape = (0, _react.useMemo)(() => (0, _resolveShape.resolveAvatarShape)(shape), [shape]);
174
189
  const hasName = typeof name === 'string' && name.trim().length > 0;
175
190
  // Priority: explicit placeholderColor > deterministic color from name > theme default.
176
191
  const fallbackColor = placeholderColor || (hasName ? getNameColor(name) : theme.colors.backgroundTertiary);
@@ -243,7 +258,7 @@ const AvatarComponent = ({
243
258
  const showLiveBadge = live && size > 16 && !hideLiveBadge;
244
259
  const ringElement = resolvedRing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarRing.AvatarRing, {
245
260
  size: size,
246
- shape: shape,
261
+ shape: clipShape,
247
262
  colors: resolvedRing.colors,
248
263
  width: ringWidth,
249
264
  gap: ringGap,
@@ -258,10 +273,11 @@ const AvatarComponent = ({
258
273
  width: size,
259
274
  height: size
260
275
  }],
261
- children: [shape === 'squircle' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(SquircleImage, {
276
+ children: [clipShape ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ClippedImage, {
262
277
  uri: effectiveUri,
263
278
  fallbackSource: fallbackSource,
264
279
  size: size,
280
+ shape: clipShape,
265
281
  fallbackColor: fallbackColor,
266
282
  placeholderIcon: resolvedPlaceholderIcon,
267
283
  name: name,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_useTheme","_useInteractionState","_context","_zIndex","_context2","_LiveBadge","_AvatarRing","_squirclePath","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","clipIdCounter","SquircleImage","uri","fallbackSource","size","fallbackColor","placeholderIcon","onError","clipId","useMemo","href","jsx","CircleFallback","icon","jsxs","Fragment","children","Image","source","style","styles","errorDetector","width","height","viewBox","Defs","ClipPath","id","Path","d","SQUIRCLE_PATH","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","AvatarComponent","variant","verified","verifiedIcon","shape","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","ring","testID","errored","setErrored","useState","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveBadgeColor","negative","resolvedRing","gap","ringWidth","ringGap","outer","getRingOuterSize","showLiveBadge","ringElement","AvatarRing","gradientDirection","avatarBox","imageContainer","StyleSheet","absoluteFill","verifiedBadge","LiveBadge","label","textColor","negativeForeground","content","container","Pressable","accessibilityRole","accessibilityLabel","create","opacity","position","bottom","right","zIndex","Z_INDEX","raised","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_useTheme","_useInteractionState","_context","_zIndex","_context2","_LiveBadge","_AvatarRing","_resolveShape","_defaultAvatar","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NAME_AVATAR_COLORS","getInitial","name","trimmed","trim","firstCodePoint","toUpperCase","getNameColor","hash","length","charCodeAt","index","Math","abs","clipIdCounter","ClippedImage","uri","fallbackSource","size","shape","fallbackColor","placeholderIcon","onError","clipId","useMemo","href","jsx","CircleFallback","icon","span","viewBox","jsxs","Fragment","children","Image","source","style","styles","errorDetector","width","height","Defs","ClipPath","id","Path","d","preserveAspectRatio","clipPath","radius","hasName","initialStyle","color","fontSize","round","fontWeight","lineHeight","textAlign","includeFontPadding","View","borderRadius","backgroundColor","justifyContent","alignItems","overflow","Text","allowFontScaling","numberOfLines","DEFAULT_AVATAR_IMAGE","resizeMode","AvatarComponent","variant","verified","verifiedIcon","imageStyle","placeholderColor","onPress","live","hideLiveBadge","liveLabel","liveColor","ring","testID","errored","setErrored","useState","state","pressed","onIn","onPressIn","onOut","onPressOut","useInteractionState","theme","useTheme","placeholderConfig","useAvatarPlaceholder","clipShape","resolveAvatarShape","colors","backgroundTertiary","resolvedPlaceholderIcon","undefined","prevSourceRef","useRef","prevUriRef","prevVariantRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","effectiveUri","imageSource","liveBadgeColor","negative","resolvedRing","gap","ringWidth","ringGap","outer","getRingOuterSize","showLiveBadge","ringElement","AvatarRing","gradientDirection","avatarBox","imageContainer","StyleSheet","absoluteFill","verifiedBadge","LiveBadge","label","textColor","negativeForeground","content","container","Pressable","accessibilityRole","accessibilityLabel","create","opacity","position","bottom","right","zIndex","Z_INDEX","raised","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactNative = require("react-native");
10
10
  var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
11
11
  var _zIndex = require("../styles/z-index.js");
12
- var _squirclePath = require("./squircle-path.js");
13
12
  var _jsxRuntime = require("react/jsx-runtime");
14
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
14
  // Module counter for unique gradient element ids — mirrors the `clipIdCounter`
@@ -82,10 +81,10 @@ const AvatarRingComponent = ({
82
81
  // box; drawn as a plain border it is a full circle → radius `outer / 2`.
83
82
  const ringRadius = outer / 2;
84
83
 
85
- // SVG is only needed for gradients (both shapes) and for the squircle
86
- // outline. A solid circle ring is a plain bordered View — cheaper, and it
87
- // keeps the common case off the SVG renderer entirely.
88
- const needsSvg = wantsGradient || shape === 'squircle';
84
+ // SVG is only needed for gradients and for non-circular outlines. A solid
85
+ // circle ring is a plain bordered View — cheaper, and it keeps the common
86
+ // case off the SVG renderer entirely.
87
+ const needsSvg = wantsGradient || shape !== null;
89
88
  if (!needsSvg) {
90
89
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
91
90
  pointerEvents: "none",
@@ -124,22 +123,24 @@ const AvatarRingComponent = ({
124
123
  const overlayStyle = [_reactNative.StyleSheet.absoluteFill, {
125
124
  zIndex: gap > 0 ? _zIndex.Z_INDEX.base : _zIndex.Z_INDEX.raised
126
125
  }];
127
- if (shape === 'squircle') {
128
- // The path lives in 0–1 space, so the stroke width is expressed in the same
129
- // units; center-stroking it and letting the viewport clip the outer half
130
- // yields a ~`width`-px band on the inner edge of the outer box.
126
+ if (shape !== null) {
127
+ // The path lives in its own square space, so the stroke width has to be
128
+ // expressed in those units too: one unit is `outer / span` px. Center-
129
+ // stroking and letting the viewport clip the outer half yields a
130
+ // ~`width`-px band on the inner edge of the outer box, hence the doubling.
131
+ const span = shape.viewBox ?? 1;
131
132
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
132
133
  pointerEvents: "none",
133
134
  style: overlayStyle,
134
135
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
135
136
  width: outer,
136
137
  height: outer,
137
- viewBox: "0 0 1 1",
138
+ viewBox: `0 0 ${span} ${span}`,
138
139
  children: [gradientDefs, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
139
- d: _squirclePath.SQUIRCLE_PATH,
140
+ d: shape.d,
140
141
  fill: "none",
141
142
  stroke: stroke,
142
- strokeWidth: width / outer * 2
143
+ strokeWidth: width / outer * 2 * span
143
144
  })]
144
145
  })
145
146
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_zIndex","_squirclePath","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ringGradientIdCounter","getRingOuterSize","size","width","gap","gradientCoords","direction","x1","y1","x2","y2","AvatarRingComponent","shape","colors","gradientDirection","gradientId","useMemo","colorList","Array","isArray","wantsGradient","length","solidColor","outer","ringRadius","needsSvg","jsx","View","pointerEvents","style","position","top","left","height","borderRadius","borderColor","borderWidth","zIndex","Z_INDEX","base","raised","stroke","coords","gradientDefs","Defs","children","LinearGradient","id","map","color","index","Stop","offset","stopColor","overlayStyle","StyleSheet","absoluteFill","jsxs","viewBox","Path","d","SQUIRCLE_PATH","fill","strokeWidth","Circle","cx","cy","AvatarRing","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/AvatarRing.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSvg","_zIndex","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ringGradientIdCounter","getRingOuterSize","size","width","gap","gradientCoords","direction","x1","y1","x2","y2","AvatarRingComponent","shape","colors","gradientDirection","gradientId","useMemo","colorList","Array","isArray","wantsGradient","length","solidColor","outer","ringRadius","needsSvg","jsx","View","pointerEvents","style","position","top","left","height","borderRadius","borderColor","borderWidth","zIndex","Z_INDEX","base","raised","stroke","coords","gradientDefs","Defs","children","LinearGradient","id","map","color","index","Stop","offset","stopColor","overlayStyle","StyleSheet","absoluteFill","span","viewBox","jsxs","Path","d","fill","strokeWidth","Circle","cx","cy","AvatarRing","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/AvatarRing.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAH,uBAAA,CAAAC,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAA4C,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAI5C;AACA;AACA;AACA,IAAIkB,qBAAqB,GAAG,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,KAAa,EAAEC,GAAW,EAAU;EACjF,OAAOA,GAAG,GAAG,CAAC,GAAGF,IAAI,GAAG,CAAC,IAAIC,KAAK,GAAGC,GAAG,CAAC,GAAGF,IAAI;AAClD;AAiBA,SAASG,cAAcA,CAACC,SAAsC,EAAE;EAC9D,QAAQA,SAAS;IACf,KAAK,YAAY;MACf,OAAO;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE;MAAI,CAAC;IAC/C,KAAK,UAAU;MACb,OAAO;QAAEH,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE;MAAI,CAAC;IAC/C,KAAK,UAAU;IACf;MACE,OAAO;QAAEH,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE,GAAG;QAAEC,EAAE,EAAE;MAAI,CAAC;EACjD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAA8C,GAAGA,CAAC;EACtDT,IAAI;EACJU,KAAK;EACLC,MAAM;EACNV,KAAK;EACLC,GAAG;EACHU;AACF,CAAC,KAAK;EACJ,MAAMC,UAAU,GAAG,IAAAC,cAAO,EAAC,MAAM,kBAAkBhB,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC;EAEjF,MAAMiB,SAAS,GAAGC,KAAK,CAACC,OAAO,CAACN,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;EAC3D,MAAMO,aAAa,GAAGH,SAAS,CAACI,MAAM,IAAI,CAAC;EAC3C,MAAMC,UAAU,GAAGL,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS;EAE5C,MAAMM,KAAK,GAAGtB,gBAAgB,CAACC,IAAI,EAAEC,KAAK,EAAEC,GAAG,CAAC;EAChD;EACA;EACA,MAAMoB,UAAU,GAAGD,KAAK,GAAG,CAAC;;EAE5B;EACA;EACA;EACA,MAAME,QAAQ,GAAGL,aAAa,IAAIR,KAAK,KAAK,IAAI;EAEhD,IAAI,CAACa,QAAQ,EAAE;IACb,oBACE,IAAA7C,WAAA,CAAA8C,GAAA,EAACjD,YAAA,CAAAkD,IAAI;MACHC,aAAa,EAAC,MAAM;MACpBC,KAAK,EAAE;QACLC,QAAQ,EAAE,UAAU;QACpBC,GAAG,EAAE,CAAC;QACNC,IAAI,EAAE,CAAC;QACP7B,KAAK,EAAEoB,KAAK;QACZU,MAAM,EAAEV,KAAK;QACbW,YAAY,EAAEV,UAAU;QACxBW,WAAW,EAAEb,UAAU;QACvBc,WAAW,EAAEjC,KAAK;QAClBkC,MAAM,EAAEjC,GAAG,GAAG,CAAC,GAAGkC,eAAO,CAACC,IAAI,GAAGD,eAAO,CAACE;MAC3C;IAAE,CACH,CAAC;EAEN;EAEA,MAAMC,MAAM,GAAGrB,aAAa,GAAG,QAAQL,UAAU,GAAG,GAAGO,UAAU;EACjE,MAAMoB,MAAM,GAAGrC,cAAc,CAACS,iBAAiB,CAAC;EAChD,MAAM6B,YAAY,GAAGvB,aAAa,gBAChC,IAAAxC,WAAA,CAAA8C,GAAA,EAAChD,eAAA,CAAAkE,IAAI;IAAAC,QAAA,eACH,IAAAjE,WAAA,CAAA8C,GAAA,EAAChD,eAAA,CAAAoE,cAAc;MAACC,EAAE,EAAEhC,UAAW;MAACR,EAAE,EAAEmC,MAAM,CAACnC,EAAG;MAACC,EAAE,EAAEkC,MAAM,CAAClC,EAAG;MAACC,EAAE,EAAEiC,MAAM,CAACjC,EAAG;MAACC,EAAE,EAAEgC,MAAM,CAAChC,EAAG;MAAAmC,QAAA,EACxF5B,SAAS,CAAC+B,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,kBAC1B,IAAAtE,WAAA,CAAA8C,GAAA,EAAChD,eAAA,CAAAyE,IAAI;QAEHC,MAAM,EAAEnC,SAAS,CAACI,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG6B,KAAK,IAAIjC,SAAS,CAACI,MAAM,GAAG,CAAC,CAAE;QACpEgC,SAAS,EAAEJ;MAAM,GAFZ,GAAGlC,UAAU,IAAImC,KAAK,EAG5B,CACF;IAAC,CACY;EAAC,CACb,CAAC,GACL,IAAI;;EAER;EACA;EACA;EACA,MAAMI,YAAY,GAAG,CACnBC,uBAAU,CAACC,YAAY,EACvB;IAAEnB,MAAM,EAAEjC,GAAG,GAAG,CAAC,GAAGkC,eAAO,CAACC,IAAI,GAAGD,eAAO,CAACE;EAAO,CAAC,CACpD;EAED,IAAI5B,KAAK,KAAK,IAAI,EAAE;IAClB;IACA;IACA;IACA;IACA,MAAM6C,IAAI,GAAG7C,KAAK,CAAC8C,OAAO,IAAI,CAAC;IAC/B,oBACE,IAAA9E,WAAA,CAAA8C,GAAA,EAACjD,YAAA,CAAAkD,IAAI;MAACC,aAAa,EAAC,MAAM;MAACC,KAAK,EAAEyB,YAAa;MAAAT,QAAA,eAC7C,IAAAjE,WAAA,CAAA+E,IAAA,EAACjF,eAAA,CAAAa,OAAG;QAACY,KAAK,EAAEoB,KAAM;QAACU,MAAM,EAAEV,KAAM;QAACmC,OAAO,EAAE,OAAOD,IAAI,IAAIA,IAAI,EAAG;QAAAZ,QAAA,GAC9DF,YAAY,eACb,IAAA/D,WAAA,CAAA8C,GAAA,EAAChD,eAAA,CAAAkF,IAAI;UACHC,CAAC,EAAEjD,KAAK,CAACiD,CAAE;UACXC,IAAI,EAAC,MAAM;UACXrB,MAAM,EAAEA,MAAO;UACfsB,WAAW,EAAG5D,KAAK,GAAGoB,KAAK,GAAI,CAAC,GAAGkC;QAAK,CACzC,CAAC;MAAA,CACC;IAAC,CACF,CAAC;EAEX;EAEA,oBACE,IAAA7E,WAAA,CAAA8C,GAAA,EAACjD,YAAA,CAAAkD,IAAI;IAACC,aAAa,EAAC,MAAM;IAACC,KAAK,EAAEyB,YAAa;IAAAT,QAAA,eAC7C,IAAAjE,WAAA,CAAA+E,IAAA,EAACjF,eAAA,CAAAa,OAAG;MAACY,KAAK,EAAEoB,KAAM;MAACU,MAAM,EAAEV,KAAM;MAACmC,OAAO,EAAE,OAAOnC,KAAK,IAAIA,KAAK,EAAG;MAAAsB,QAAA,GAChEF,YAAY,eACb,IAAA/D,WAAA,CAAA8C,GAAA,EAAChD,eAAA,CAAAsF,MAAM;QACLC,EAAE,EAAE1C,KAAK,GAAG,CAAE;QACd2C,EAAE,EAAE3C,KAAK,GAAG,CAAE;QACdvC,CAAC,EAAE,CAACuC,KAAK,GAAGpB,KAAK,IAAI,CAAE;QACvB2D,IAAI,EAAC,MAAM;QACXrB,MAAM,EAAEA,MAAO;QACfsB,WAAW,EAAE5D;MAAM,CACpB,CAAC;IAAA,CACC;EAAC,CACF,CAAC;AAEX,CAAC;AAEM,MAAMgE,UAAU,GAAAC,OAAA,CAAAD,UAAA,gBAAG,IAAAE,WAAI,EAAC1D,mBAAmB,CAAC;AACnDwD,UAAU,CAACG,WAAW,GAAG,YAAY","ignoreList":[]}
@@ -3,6 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "AVATAR_SHAPE_LABELS", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _shapePaths.AVATAR_SHAPE_LABELS;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "AVATAR_SHAPE_PATHS", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _shapePaths.AVATAR_SHAPE_PATHS;
16
+ }
17
+ });
6
18
  Object.defineProperty(exports, "Avatar", {
7
19
  enumerable: true,
8
20
  get: function () {
@@ -15,6 +27,12 @@ Object.defineProperty(exports, "AvatarPlaceholderProvider", {
15
27
  return _context.AvatarPlaceholderProvider;
16
28
  }
17
29
  });
30
+ Object.defineProperty(exports, "NAMED_SHAPE_VIEW_BOX", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _shapePaths.NAMED_SHAPE_VIEW_BOX;
34
+ }
35
+ });
18
36
  Object.defineProperty(exports, "defaultAvatarSource", {
19
37
  enumerable: true,
20
38
  get: function () {
@@ -24,4 +42,5 @@ Object.defineProperty(exports, "defaultAvatarSource", {
24
42
  var _Avatar = require("./Avatar.js");
25
43
  var _context = require("./context.js");
26
44
  var _defaultAvatar = require("./default-avatar.js");
45
+ var _shapePaths = require("./shape-paths.js");
27
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Avatar","require","_context","_defaultAvatar"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAQA,IAAAE,cAAA,GAAAF,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Avatar","require","_context","_defaultAvatar","_shapePaths"],"sourceRoot":"../../../src","sources":["avatar/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AASA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolveAvatarShape = resolveAvatarShape;
7
+ var _squirclePath = require("./squircle-path.js");
8
+ var _shapePaths = require("./shape-paths.js");
9
+ /**
10
+ * A shape reduced to what the renderers need: either nothing (a circle, drawn
11
+ * with `borderRadius` and no SVG at all) or one outline plus the size of the
12
+ * square space it is drawn in.
13
+ */
14
+
15
+ /**
16
+ * Turns the public `shape` prop into an outline.
17
+ *
18
+ * Returns `null` for a circle so callers can keep the cheap `borderRadius`
19
+ * path — the common case never touches `react-native-svg`. An unknown string
20
+ * also returns `null`: a shape name that does not resolve should degrade to a
21
+ * plain circular avatar, never to a blank hole where a face should be.
22
+ */
23
+ function resolveAvatarShape(shape) {
24
+ if (!shape || shape === 'circle') return null;
25
+ if (typeof shape !== 'string') {
26
+ return {
27
+ d: shape.d,
28
+ viewBox: shape.viewBox ?? 1
29
+ };
30
+ }
31
+ if (shape === 'squircle') {
32
+ return {
33
+ d: _squirclePath.SQUIRCLE_PATH,
34
+ viewBox: 1
35
+ };
36
+ }
37
+ const named = _shapePaths.AVATAR_SHAPE_PATHS[shape];
38
+ return named ? {
39
+ d: named,
40
+ viewBox: _shapePaths.NAMED_SHAPE_VIEW_BOX
41
+ } : null;
42
+ }
43
+ //# sourceMappingURL=resolve-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_squirclePath","require","_shapePaths","resolveAvatarShape","shape","d","viewBox","SQUIRCLE_PATH","named","AVATAR_SHAPE_PATHS","NAMED_SHAPE_VIEW_BOX"],"sourceRoot":"../../../src","sources":["avatar/resolve-shape.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,KAAgD,EAAuB;EACxG,IAAI,CAACA,KAAK,IAAIA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;EAE7C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO;MAAEC,CAAC,EAAED,KAAK,CAACC,CAAC;MAAEC,OAAO,EAAEF,KAAK,CAACE,OAAO,IAAI;IAAE,CAAC;EACpD;EAEA,IAAIF,KAAK,KAAK,UAAU,EAAE;IACxB,OAAO;MAAEC,CAAC,EAAEE,2BAAa;MAAED,OAAO,EAAE;IAAE,CAAC;EACzC;EAEA,MAAME,KAAK,GAAGC,8BAAkB,CAACL,KAAK,CAAC;EACvC,OAAOI,KAAK,GAAG;IAAEH,CAAC,EAAEG,KAAK;IAAEF,OAAO,EAAEI;EAAqB,CAAC,GAAG,IAAI;AACnE","ignoreList":[]}