@tamagui/avatar 2.7.7 → 3.0.0-beta.1091.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.
- package/dist/cjs/Avatar.cjs +102 -122
- package/dist/cjs/Avatar.native.cjs +146 -0
- package/dist/cjs/Avatar.native.js +106 -142
- package/dist/cjs/Avatar.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -11
- package/dist/cjs/index.native.cjs +20 -0
- package/dist/cjs/index.native.js +9 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/Avatar.mjs +83 -94
- package/dist/esm/Avatar.mjs.map +1 -1
- package/dist/esm/Avatar.native.js +87 -115
- package/dist/esm/Avatar.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/jsx/Avatar.mjs +83 -94
- package/dist/jsx/Avatar.mjs.map +1 -1
- package/dist/jsx/Avatar.native.cjs +146 -0
- package/dist/jsx/Avatar.native.js +106 -142
- package/dist/jsx/Avatar.native.js.map +1 -1
- package/dist/jsx/index.js +1 -2
- package/dist/jsx/index.mjs +1 -2
- package/dist/jsx/index.native.cjs +20 -0
- package/dist/jsx/index.native.js +9 -10
- package/dist/jsx/index.native.js.map +1 -1
- package/package.json +12 -11
- package/src/Avatar.tsx +32 -29
- package/types/Avatar.d.ts +53 -58
- package/types/Avatar.d.ts.map +1 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
|
@@ -7,40 +7,33 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
9
|
var __export = (target, all) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
14
|
};
|
|
15
15
|
var __copyProps = (to, from, except, desc) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
23
|
};
|
|
24
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
-
value: mod,
|
|
31
|
-
enumerable: true
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
25
|
+
value: mod,
|
|
26
|
+
enumerable: true
|
|
32
27
|
}) : target, mod));
|
|
33
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
34
|
-
value: true
|
|
35
|
-
}), mod);
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
29
|
var Avatar_exports = {};
|
|
37
30
|
__export(Avatar_exports, {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
Avatar: () => Avatar,
|
|
32
|
+
AvatarFallback: () => AvatarFallback,
|
|
33
|
+
AvatarFallbackFrame: () => AvatarFallbackFrame,
|
|
34
|
+
AvatarFrame: () => AvatarFrame,
|
|
35
|
+
AvatarImage: () => AvatarImage,
|
|
36
|
+
createAvatarScope: () => createAvatarScope
|
|
44
37
|
});
|
|
45
38
|
module.exports = __toCommonJS(Avatar_exports);
|
|
46
39
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -51,134 +44,105 @@ var import_image = require("@tamagui/image");
|
|
|
51
44
|
var import_shapes = require("@tamagui/shapes");
|
|
52
45
|
var import_stacks = require("@tamagui/stacks");
|
|
53
46
|
var React = __toESM(require("react"), 1);
|
|
54
|
-
function _type_of(obj) {
|
|
55
|
-
"@swc/helpers - typeof";
|
|
56
|
-
|
|
57
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
58
|
-
}
|
|
59
47
|
var AVATAR_NAME = "Avatar";
|
|
60
48
|
var [createAvatarContext, createAvatarScope] = (0, import_create_context.createContextScope)(AVATAR_NAME);
|
|
61
49
|
var [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);
|
|
62
50
|
var IMAGE_NAME = "AvatarImage";
|
|
63
|
-
var AvatarImage =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
height: "100%",
|
|
107
|
-
...imageProps,
|
|
108
|
-
// @ts-ignore
|
|
109
|
-
ref: forwardedRef,
|
|
110
|
-
// @ts-ignore
|
|
111
|
-
src: resolvedSrc,
|
|
112
|
-
// onLoadStart={() => {
|
|
113
|
-
// // setStatus('loading')
|
|
114
|
-
// }}
|
|
115
|
-
onError: function () {
|
|
116
|
-
setStatus("error");
|
|
117
|
-
},
|
|
118
|
-
onLoad: function () {
|
|
119
|
-
setStatus("loaded");
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
});
|
|
51
|
+
var AvatarImage = (0, import_core.createRefComponent)(function(props, forwardedRef) {
|
|
52
|
+
var { __scopeAvatar, src, source, onLoadingStatusChange = function() {}, ...imageProps } = props;
|
|
53
|
+
var context = useAvatarContext(IMAGE_NAME, __scopeAvatar);
|
|
54
|
+
var [status, setStatus] = React.useState("idle");
|
|
55
|
+
var resolvedSrc = src || (source && typeof source === "object" && "uri" in source ? source.uri : source);
|
|
56
|
+
React.useEffect(function() {
|
|
57
|
+
if (!resolvedSrc) {
|
|
58
|
+
setStatus("error");
|
|
59
|
+
} else {
|
|
60
|
+
setStatus("idle");
|
|
61
|
+
}
|
|
62
|
+
}, [resolvedSrc]);
|
|
63
|
+
React.useEffect(function() {
|
|
64
|
+
onLoadingStatusChange(status);
|
|
65
|
+
context.onImageLoadingStatusChange(status);
|
|
66
|
+
}, [status]);
|
|
67
|
+
if (!resolvedSrc) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
|
|
71
|
+
position: "absolute",
|
|
72
|
+
inset: 0,
|
|
73
|
+
zIndex: 1,
|
|
74
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_image.Image, {
|
|
75
|
+
position: "absolute",
|
|
76
|
+
top: 0,
|
|
77
|
+
left: 0,
|
|
78
|
+
right: 0,
|
|
79
|
+
bottom: 0,
|
|
80
|
+
objectFit: "cover",
|
|
81
|
+
width: "100%",
|
|
82
|
+
height: "100%",
|
|
83
|
+
...imageProps,
|
|
84
|
+
ref: forwardedRef,
|
|
85
|
+
src: resolvedSrc,
|
|
86
|
+
onError: function() {
|
|
87
|
+
setStatus("error");
|
|
88
|
+
},
|
|
89
|
+
onLoad: function() {
|
|
90
|
+
setStatus("loaded");
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
});
|
|
123
94
|
});
|
|
124
95
|
AvatarImage.displayName = IMAGE_NAME;
|
|
125
96
|
var FALLBACK_NAME = "AvatarFallback";
|
|
126
97
|
var AvatarFallbackFrame = (0, import_core.styled)(import_stacks.YStack, {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
98
|
+
displayName: FALLBACK_NAME,
|
|
99
|
+
position: "absolute",
|
|
100
|
+
inset: 0,
|
|
101
|
+
zIndex: 0
|
|
131
102
|
});
|
|
132
|
-
var AvatarFallback =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarFallbackFrame, {
|
|
151
|
-
...fallbackProps,
|
|
152
|
-
ref: forwardedRef
|
|
153
|
-
}) : null;
|
|
103
|
+
var AvatarFallback = (0, import_core.createStyledHOC)(AvatarFallbackFrame, function(props, forwardedRef) {
|
|
104
|
+
var { __scopeAvatar, delay, ...fallbackProps } = props;
|
|
105
|
+
var context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);
|
|
106
|
+
var [canRender, setCanRender] = React.useState(delay === void 0);
|
|
107
|
+
React.useEffect(function() {
|
|
108
|
+
if (delay !== void 0) {
|
|
109
|
+
var timerId = setTimeout(function() {
|
|
110
|
+
return setCanRender(true);
|
|
111
|
+
}, delay);
|
|
112
|
+
return function() {
|
|
113
|
+
return clearTimeout(timerId);
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}, [delay]);
|
|
117
|
+
return canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarFallbackFrame, {
|
|
118
|
+
...fallbackProps,
|
|
119
|
+
ref: forwardedRef
|
|
120
|
+
}) : null;
|
|
154
121
|
});
|
|
155
122
|
AvatarFallback.displayName = FALLBACK_NAME;
|
|
156
123
|
var AvatarFrame = (0, import_core.styled)(import_shapes.Square, {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
124
|
+
displayName: AVATAR_NAME,
|
|
125
|
+
position: "relative",
|
|
126
|
+
overflow: "hidden"
|
|
160
127
|
});
|
|
161
|
-
var Avatar = (0, import_helpers.withStaticProperties)(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
...avatarProps,
|
|
176
|
-
ref: forwardedRef
|
|
177
|
-
})
|
|
178
|
-
});
|
|
128
|
+
var Avatar = (0, import_helpers.withStaticProperties)((0, import_core.createRefComponent)(function(props, forwardedRef) {
|
|
129
|
+
var { __scopeAvatar, size = true, ...avatarProps } = props;
|
|
130
|
+
var [imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
|
131
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarProvider, {
|
|
132
|
+
size,
|
|
133
|
+
scope: __scopeAvatar,
|
|
134
|
+
imageLoadingStatus,
|
|
135
|
+
onImageLoadingStatusChange: setImageLoadingStatus,
|
|
136
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarFrame, {
|
|
137
|
+
size,
|
|
138
|
+
...avatarProps,
|
|
139
|
+
ref: forwardedRef
|
|
140
|
+
})
|
|
141
|
+
});
|
|
179
142
|
}), {
|
|
180
|
-
|
|
181
|
-
|
|
143
|
+
Image: AvatarImage,
|
|
144
|
+
Fallback: AvatarFallback
|
|
182
145
|
});
|
|
183
146
|
Avatar.displayName = AVATAR_NAME;
|
|
147
|
+
|
|
184
148
|
//# sourceMappingURL=Avatar.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Avatar.native.js","names":[],"sources":["jsx/Avatar.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar Avatar_exports = {};\n__export(Avatar_exports, {\n Avatar: () => Avatar,\n AvatarFallback: () => AvatarFallback,\n AvatarFallbackFrame: () => AvatarFallbackFrame,\n AvatarFrame: () => AvatarFrame,\n AvatarImage: () => AvatarImage,\n createAvatarScope: () => createAvatarScope\n});\nmodule.exports = __toCommonJS(Avatar_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_core = require(\"@tamagui/core\");\nvar import_create_context = require(\"@tamagui/create-context\");\nvar import_helpers = require(\"@tamagui/helpers\");\nvar import_image = require(\"@tamagui/image\");\nvar import_shapes = require(\"@tamagui/shapes\");\nvar import_stacks = require(\"@tamagui/stacks\");\nvar React = __toESM(require(\"react\"), 1);\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = (0, import_create_context.createContextScope)(AVATAR_NAME);\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = (0, import_core.createRefComponent)(function(props, forwardedRef) {\n var { __scopeAvatar, src, source, onLoadingStatusChange = function() {\n }, ...imageProps } = props;\n var context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n var [status, setStatus] = React.useState(\"idle\");\n var resolvedSrc = src || (source && typeof source === \"object\" && \"uri\" in source ? source.uri : source);\n React.useEffect(function() {\n if (!resolvedSrc) {\n setStatus(\"error\");\n } else {\n setStatus(\"idle\");\n }\n }, [\n resolvedSrc\n ]);\n React.useEffect(function() {\n onLoadingStatusChange(status);\n context.onImageLoadingStatusChange(status);\n }, [\n status\n ]);\n if (!resolvedSrc) {\n return null;\n }\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {\n position: \"absolute\",\n inset: 0,\n zIndex: 1,\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_image.Image, {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n objectFit: \"cover\",\n // fill the frame. previously the image was sized to\n // getShapeSize(context.size) — but that resolves a numeric `size`\n // (e.g. <Avatar size={16} />) as a size-TOKEN index (tokens.size[16]),\n // so it got the token-scale value (~224px) instead of 16px, blowing\n // the image far past its frame; object-fit:cover then showed a\n // blurry mis-cropped corner. the frame already owns the size, so the\n // image just fills it — correct for numeric and token sizes alike.\n width: \"100%\",\n height: \"100%\",\n ...imageProps,\n // @ts-ignore\n ref: forwardedRef,\n // @ts-ignore\n src: resolvedSrc,\n // onLoadStart={() => {\n // // setStatus('loading')\n // }}\n onError: function() {\n setStatus(\"error\");\n },\n onLoad: function() {\n setStatus(\"loaded\");\n }\n })\n });\n});\nAvatarImage.displayName = IMAGE_NAME;\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallbackFrame = (0, import_core.styled)(import_stacks.YStack, {\n displayName: FALLBACK_NAME,\n position: \"absolute\",\n inset: 0,\n zIndex: 0\n});\nvar AvatarFallback = (0, import_core.createStyledHOC)(AvatarFallbackFrame, function(props, forwardedRef) {\n var { __scopeAvatar, delay, ...fallbackProps } = props;\n var context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n var [canRender, setCanRender] = React.useState(delay === void 0);\n React.useEffect(function() {\n if (delay !== void 0) {\n var timerId = setTimeout(function() {\n return setCanRender(true);\n }, delay);\n return function() {\n return clearTimeout(timerId);\n };\n }\n }, [\n delay\n ]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarFallbackFrame, {\n ...fallbackProps,\n ref: forwardedRef\n }) : null;\n});\nAvatarFallback.displayName = FALLBACK_NAME;\nvar AvatarFrame = (0, import_core.styled)(import_shapes.Square, {\n displayName: AVATAR_NAME,\n position: \"relative\",\n overflow: \"hidden\"\n});\nvar Avatar = (0, import_helpers.withStaticProperties)((0, import_core.createRefComponent)(function(props, forwardedRef) {\n var { __scopeAvatar, size = true, ...avatarProps } = props;\n var [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarProvider, {\n size,\n scope: __scopeAvatar,\n imageLoadingStatus,\n onImageLoadingStatusChange: setImageLoadingStatus,\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AvatarFrame, {\n size,\n ...avatarProps,\n ref: forwardedRef\n })\n });\n}), {\n Image: AvatarImage,\n Fallback: AvatarFallback\n});\nAvatar.displayName = AVATAR_NAME;\n//# sourceMappingURL=Avatar.js.map\n"],"mappings":"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"}
|
package/dist/jsx/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from "./Avatar.mjs"
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export * from "./Avatar.mjs"
|
package/dist/jsx/index.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from "./Avatar.mjs"
|
|
2
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
export * from "./Avatar.mjs"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __copyProps = (to, from, except, desc) => {
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
9
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
10
|
+
get: () => from[key],
|
|
11
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var index_exports = {};
|
|
19
|
+
module.exports = __toCommonJS(index_exports);
|
|
20
|
+
__reExport(index_exports, require("./Avatar.native.js"), module.exports);
|
package/dist/jsx/index.native.js
CHANGED
|
@@ -5,19 +5,18 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
7
|
var __copyProps = (to, from, except, desc) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
9
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
10
|
+
get: () => from[key],
|
|
11
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
15
|
};
|
|
16
16
|
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
17
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
18
|
-
value: true
|
|
19
|
-
}), mod);
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
18
|
var index_exports = {};
|
|
21
19
|
module.exports = __toCommonJS(index_exports);
|
|
22
20
|
__reExport(index_exports, require("./Avatar.native.js"), module.exports);
|
|
21
|
+
|
|
23
22
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"index.native.js","names":[],"sources":["jsx/index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar index_exports = {};\nmodule.exports = __toCommonJS(index_exports);\n__reExport(index_exports, require(\"./Avatar\"), module.exports);\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,cAAc,QAAQ,KAAK,kBAAkB,YAAY,QAAQ,KAAK,SAAS,GAAG,gBAAgB,YAAY,cAAc,KAAK,SAAS;AAC9I,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,gBAAgB,CAAC;AACrB,OAAO,UAAU,aAAa,aAAa;AAC3C,WAAW,eAAe,QAAQ,oBAAU,GAAG,OAAO,OAAO"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/avatar",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-beta.1091.1",
|
|
4
|
+
"license": "MIT",
|
|
4
5
|
"source": "src/index.ts",
|
|
5
6
|
"files": [
|
|
6
7
|
"src",
|
|
@@ -34,18 +35,18 @@
|
|
|
34
35
|
"clean:build": "tamagui-build clean:build"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
|
-
"@tamagui/core": "
|
|
38
|
-
"@tamagui/create-context": "
|
|
39
|
-
"@tamagui/helpers": "
|
|
40
|
-
"@tamagui/image": "
|
|
41
|
-
"@tamagui/shapes": "
|
|
42
|
-
"@tamagui/stacks": "
|
|
43
|
-
"@tamagui/text": "
|
|
38
|
+
"@tamagui/core": "3.0.0-beta.1091.1",
|
|
39
|
+
"@tamagui/create-context": "3.0.0-beta.1091.1",
|
|
40
|
+
"@tamagui/helpers": "3.0.0-beta.1091.1",
|
|
41
|
+
"@tamagui/image": "3.0.0-beta.1091.1",
|
|
42
|
+
"@tamagui/shapes": "3.0.0-beta.1091.1",
|
|
43
|
+
"@tamagui/stacks": "3.0.0-beta.1091.1",
|
|
44
|
+
"@tamagui/text": "3.0.0-beta.1091.1"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@tamagui/build": "
|
|
47
|
-
"react": "
|
|
48
|
-
"react-native": "0.
|
|
47
|
+
"@tamagui/build": "3.0.0-beta.1091.1",
|
|
48
|
+
"react": "19.2.3",
|
|
49
|
+
"react-native": "0.86.2"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
|
51
52
|
"react": ">=19"
|
package/src/Avatar.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// forked from radix https://github.com/radix-ui/primitives/blob/main/packages/react/avatar/src/Avatar.tsx
|
|
2
2
|
|
|
3
3
|
import type { GetProps, SizeTokens, TamaguiElement } from '@tamagui/core'
|
|
4
|
-
import { styled } from '@tamagui/core'
|
|
4
|
+
import { createStyledHOC, styled, createRefComponent } from '@tamagui/core'
|
|
5
5
|
import type { Scope } from '@tamagui/create-context'
|
|
6
6
|
import { createContextScope } from '@tamagui/create-context'
|
|
7
7
|
import { withStaticProperties } from '@tamagui/helpers'
|
|
@@ -19,7 +19,8 @@ const [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME)
|
|
|
19
19
|
type ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'
|
|
20
20
|
|
|
21
21
|
type AvatarContextValue = {
|
|
22
|
-
size
|
|
22
|
+
// mirrors the frame's own size prop; nothing reads it for shape math anymore
|
|
23
|
+
size: AvatarProps['size'] | true
|
|
23
24
|
imageLoadingStatus: ImageLoadingStatus
|
|
24
25
|
onImageLoadingStatusChange(status: ImageLoadingStatus): void
|
|
25
26
|
}
|
|
@@ -37,7 +38,7 @@ type AvatarImageProps = Partial<ImageProps> & {
|
|
|
37
38
|
onLoadingStatusChange?: (status: ImageLoadingStatus) => void
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
const AvatarImage =
|
|
41
|
+
const AvatarImage = createRefComponent<TamaguiElement, AvatarImageProps>(
|
|
41
42
|
(props: ScopedProps<AvatarImageProps>, forwardedRef) => {
|
|
42
43
|
const {
|
|
43
44
|
__scopeAvatar,
|
|
@@ -74,7 +75,7 @@ const AvatarImage = React.forwardRef<TamaguiElement, AvatarImageProps>(
|
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
return (
|
|
77
|
-
<YStack
|
|
78
|
+
<YStack position="absolute" inset={0} zIndex={1}>
|
|
78
79
|
<Image
|
|
79
80
|
position="absolute"
|
|
80
81
|
top={0}
|
|
@@ -120,35 +121,37 @@ AvatarImage.displayName = IMAGE_NAME
|
|
|
120
121
|
const FALLBACK_NAME = 'AvatarFallback'
|
|
121
122
|
|
|
122
123
|
export const AvatarFallbackFrame = styled(YStack, {
|
|
123
|
-
|
|
124
|
+
displayName: FALLBACK_NAME,
|
|
124
125
|
position: 'absolute',
|
|
125
|
-
|
|
126
|
+
inset: 0,
|
|
126
127
|
zIndex: 0,
|
|
127
128
|
})
|
|
128
129
|
|
|
129
130
|
type AvatarFallbackExtraProps = {
|
|
130
|
-
|
|
131
|
+
/** The delay in milliseconds before the fallback renders. */
|
|
132
|
+
delay?: number
|
|
131
133
|
}
|
|
132
134
|
type AvatarFallbackProps = GetProps<typeof AvatarFallbackFrame> & AvatarFallbackExtraProps
|
|
133
135
|
|
|
134
|
-
const AvatarFallback =
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
React.useEffect(() => {
|
|
142
|
-
if (delayMs !== undefined) {
|
|
143
|
-
const timerId = setTimeout(() => setCanRender(true), delayMs)
|
|
144
|
-
return () => clearTimeout(timerId)
|
|
145
|
-
}
|
|
146
|
-
}, [delayMs])
|
|
136
|
+
const AvatarFallback = createStyledHOC(
|
|
137
|
+
AvatarFallbackFrame,
|
|
138
|
+
(props: ScopedProps<AvatarFallbackExtraProps>, forwardedRef) => {
|
|
139
|
+
const { __scopeAvatar, delay, ...fallbackProps } = props
|
|
140
|
+
const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar)
|
|
141
|
+
const [canRender, setCanRender] = React.useState(delay === undefined)
|
|
147
142
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
143
|
+
React.useEffect(() => {
|
|
144
|
+
if (delay !== undefined) {
|
|
145
|
+
const timerId = setTimeout(() => setCanRender(true), delay)
|
|
146
|
+
return () => clearTimeout(timerId)
|
|
147
|
+
}
|
|
148
|
+
}, [delay])
|
|
149
|
+
|
|
150
|
+
return canRender && context.imageLoadingStatus !== 'loaded' ? (
|
|
151
|
+
<AvatarFallbackFrame {...fallbackProps} ref={forwardedRef} />
|
|
152
|
+
) : null
|
|
153
|
+
}
|
|
154
|
+
)
|
|
152
155
|
|
|
153
156
|
AvatarFallback.displayName = FALLBACK_NAME
|
|
154
157
|
|
|
@@ -157,7 +160,7 @@ AvatarFallback.displayName = FALLBACK_NAME
|
|
|
157
160
|
* -----------------------------------------------------------------------------------------------*/
|
|
158
161
|
|
|
159
162
|
export const AvatarFrame = styled(Square, {
|
|
160
|
-
|
|
163
|
+
displayName: AVATAR_NAME,
|
|
161
164
|
position: 'relative',
|
|
162
165
|
overflow: 'hidden',
|
|
163
166
|
})
|
|
@@ -170,19 +173,19 @@ type AvatarProps = GetProps<typeof AvatarFrame>
|
|
|
170
173
|
*
|
|
171
174
|
* @example
|
|
172
175
|
* ```tsx
|
|
173
|
-
* <Avatar circular size="
|
|
176
|
+
* <Avatar circular size="10">
|
|
174
177
|
* <Avatar.Image
|
|
175
178
|
* aria-label="Cam"
|
|
176
179
|
* src="https://images.unsplash.com/photo-1548142813-c348350df52b?&w=150&h=150&dpr=2&q=80"
|
|
177
180
|
* />
|
|
178
|
-
* <Avatar.Fallback backgroundColor="
|
|
181
|
+
* <Avatar.Fallback backgroundColor="blue10" />
|
|
179
182
|
* </Avatar>
|
|
180
183
|
* ```
|
|
181
184
|
*/
|
|
182
185
|
const Avatar = withStaticProperties(
|
|
183
|
-
|
|
186
|
+
createRefComponent<TamaguiElement, AvatarProps>(
|
|
184
187
|
(props: ScopedProps<AvatarProps>, forwardedRef) => {
|
|
185
|
-
const { __scopeAvatar, size =
|
|
188
|
+
const { __scopeAvatar, size = true, ...avatarProps } = props
|
|
186
189
|
const [imageLoadingStatus, setImageLoadingStatus] =
|
|
187
190
|
React.useState<ImageLoadingStatus>('idle')
|
|
188
191
|
return (
|