@hanzogui/avatar 2.0.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.
- package/LICENSE +21 -0
- package/dist/cjs/Avatar.cjs +154 -0
- package/dist/cjs/Avatar.native.js +172 -0
- package/dist/cjs/Avatar.native.js.map +1 -0
- package/dist/cjs/index.cjs +18 -0
- package/dist/cjs/index.native.js +21 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/esm/Avatar.mjs +115 -0
- package/dist/esm/Avatar.mjs.map +1 -0
- package/dist/esm/Avatar.native.js +130 -0
- package/dist/esm/Avatar.native.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +2 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/jsx/Avatar.mjs +115 -0
- package/dist/jsx/Avatar.mjs.map +1 -0
- package/dist/jsx/Avatar.native.js +172 -0
- package/dist/jsx/Avatar.native.js.map +1 -0
- package/dist/jsx/index.js +2 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +2 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +21 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/package.json +57 -0
- package/src/Avatar.tsx +212 -0
- package/src/index.ts +1 -0
- package/types/Avatar.d.ts +105 -0
- package/types/index.d.ts +2 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 Nate Wienert
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf,
|
|
6
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var Avatar_exports = {};
|
|
33
|
+
__export(Avatar_exports, {
|
|
34
|
+
Avatar: () => Avatar,
|
|
35
|
+
AvatarFallback: () => AvatarFallback,
|
|
36
|
+
AvatarFallbackFrame: () => AvatarFallbackFrame,
|
|
37
|
+
AvatarFrame: () => AvatarFrame,
|
|
38
|
+
AvatarImage: () => AvatarImage,
|
|
39
|
+
createAvatarScope: () => createAvatarScope
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(Avatar_exports);
|
|
42
|
+
var import_gui_core = require("@hanzo/gui-core"),
|
|
43
|
+
import_gui_create_context = require("@hanzo/gui-create-context"),
|
|
44
|
+
import_gui_helpers = require("@hanzo/gui-helpers"),
|
|
45
|
+
import_gui_image = require("@hanzo/gui-image"),
|
|
46
|
+
import_gui_shapes = require("@hanzo/gui-shapes"),
|
|
47
|
+
import_gui_stacks = require("@hanzo/gui-stacks"),
|
|
48
|
+
React = __toESM(require("react"), 1),
|
|
49
|
+
import_jsx_runtime = require("react/jsx-runtime");
|
|
50
|
+
const AVATAR_NAME = "Avatar",
|
|
51
|
+
[createAvatarContext, createAvatarScope] = (0, import_gui_create_context.createContextScope)(AVATAR_NAME),
|
|
52
|
+
[AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME),
|
|
53
|
+
IMAGE_NAME = "AvatarImage",
|
|
54
|
+
AvatarImage = React.forwardRef((props, forwardedRef) => {
|
|
55
|
+
const {
|
|
56
|
+
__scopeAvatar,
|
|
57
|
+
src,
|
|
58
|
+
source,
|
|
59
|
+
onLoadingStatusChange = () => {},
|
|
60
|
+
...imageProps
|
|
61
|
+
} = props,
|
|
62
|
+
context = useAvatarContext(IMAGE_NAME, __scopeAvatar),
|
|
63
|
+
[status, setStatus] = React.useState("idle"),
|
|
64
|
+
shapeSize = (0, import_gui_core.getVariableValue)((0, import_gui_shapes.getShapeSize)(context.size,
|
|
65
|
+
// @ts-expect-error
|
|
66
|
+
{
|
|
67
|
+
tokens: (0, import_gui_core.getTokens)()
|
|
68
|
+
})?.width),
|
|
69
|
+
resolvedSrc = src || (source && typeof source == "object" && "uri" in source ? source.uri : source);
|
|
70
|
+
return React.useEffect(() => {
|
|
71
|
+
setStatus(resolvedSrc ? "idle" : "error");
|
|
72
|
+
}, [resolvedSrc]), React.useEffect(() => {
|
|
73
|
+
onLoadingStatusChange(status), context.onImageLoadingStatusChange(status);
|
|
74
|
+
}, [status]), resolvedSrc ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_stacks.YStack, {
|
|
75
|
+
fullscreen: !0,
|
|
76
|
+
zIndex: 1,
|
|
77
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_image.Image, {
|
|
78
|
+
position: "absolute",
|
|
79
|
+
top: 0,
|
|
80
|
+
left: 0,
|
|
81
|
+
right: 0,
|
|
82
|
+
bottom: 0,
|
|
83
|
+
objectFit: "cover",
|
|
84
|
+
...(typeof shapeSize == "number" && !Number.isNaN(shapeSize) && {
|
|
85
|
+
width: shapeSize,
|
|
86
|
+
height: shapeSize
|
|
87
|
+
}),
|
|
88
|
+
...imageProps,
|
|
89
|
+
ref: forwardedRef,
|
|
90
|
+
src: resolvedSrc,
|
|
91
|
+
onError: () => {
|
|
92
|
+
setStatus("error");
|
|
93
|
+
},
|
|
94
|
+
onLoad: () => {
|
|
95
|
+
setStatus("loaded");
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
}) : null;
|
|
99
|
+
});
|
|
100
|
+
AvatarImage.displayName = IMAGE_NAME;
|
|
101
|
+
const FALLBACK_NAME = "AvatarFallback",
|
|
102
|
+
AvatarFallbackFrame = (0, import_gui_core.styled)(import_gui_stacks.YStack, {
|
|
103
|
+
name: FALLBACK_NAME,
|
|
104
|
+
position: "absolute",
|
|
105
|
+
fullscreen: !0,
|
|
106
|
+
zIndex: 0
|
|
107
|
+
}),
|
|
108
|
+
AvatarFallback = AvatarFallbackFrame.styleable((props, forwardedRef) => {
|
|
109
|
+
const {
|
|
110
|
+
__scopeAvatar,
|
|
111
|
+
delayMs,
|
|
112
|
+
...fallbackProps
|
|
113
|
+
} = props,
|
|
114
|
+
context = useAvatarContext(FALLBACK_NAME, __scopeAvatar),
|
|
115
|
+
[canRender, setCanRender] = React.useState(delayMs === void 0);
|
|
116
|
+
return React.useEffect(() => {
|
|
117
|
+
if (delayMs !== void 0) {
|
|
118
|
+
const timerId = setTimeout(() => setCanRender(!0), delayMs);
|
|
119
|
+
return () => clearTimeout(timerId);
|
|
120
|
+
}
|
|
121
|
+
}, [delayMs]), canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarFallbackFrame, {
|
|
122
|
+
...fallbackProps,
|
|
123
|
+
ref: forwardedRef
|
|
124
|
+
}) : null;
|
|
125
|
+
});
|
|
126
|
+
AvatarFallback.displayName = FALLBACK_NAME;
|
|
127
|
+
const AvatarFrame = (0, import_gui_core.styled)(import_gui_shapes.Square, {
|
|
128
|
+
name: AVATAR_NAME,
|
|
129
|
+
position: "relative",
|
|
130
|
+
overflow: "hidden"
|
|
131
|
+
}),
|
|
132
|
+
Avatar = (0, import_gui_helpers.withStaticProperties)(React.forwardRef((props, forwardedRef) => {
|
|
133
|
+
const {
|
|
134
|
+
__scopeAvatar,
|
|
135
|
+
size = "$true",
|
|
136
|
+
...avatarProps
|
|
137
|
+
} = props,
|
|
138
|
+
[imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
|
139
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarProvider, {
|
|
140
|
+
size,
|
|
141
|
+
scope: __scopeAvatar,
|
|
142
|
+
imageLoadingStatus,
|
|
143
|
+
onImageLoadingStatusChange: setImageLoadingStatus,
|
|
144
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarFrame, {
|
|
145
|
+
size,
|
|
146
|
+
...avatarProps,
|
|
147
|
+
ref: forwardedRef
|
|
148
|
+
})
|
|
149
|
+
});
|
|
150
|
+
}), {
|
|
151
|
+
Image: AvatarImage,
|
|
152
|
+
Fallback: AvatarFallback
|
|
153
|
+
});
|
|
154
|
+
Avatar.displayName = AVATAR_NAME;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf,
|
|
8
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: !0
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
__copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: !0
|
|
30
|
+
}) : target, mod)),
|
|
31
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: !0
|
|
33
|
+
}), mod);
|
|
34
|
+
var Avatar_exports = {};
|
|
35
|
+
__export(Avatar_exports, {
|
|
36
|
+
Avatar: () => Avatar,
|
|
37
|
+
AvatarFallback: () => AvatarFallback,
|
|
38
|
+
AvatarFallbackFrame: () => AvatarFallbackFrame,
|
|
39
|
+
AvatarFrame: () => AvatarFrame,
|
|
40
|
+
AvatarImage: () => AvatarImage,
|
|
41
|
+
createAvatarScope: () => createAvatarScope
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(Avatar_exports);
|
|
44
|
+
var import_jsx_runtime = require("react/jsx-runtime"),
|
|
45
|
+
import_gui_core = require("@hanzo/gui-core"),
|
|
46
|
+
import_gui_create_context = require("@hanzo/gui-create-context"),
|
|
47
|
+
import_gui_helpers = require("@hanzo/gui-helpers"),
|
|
48
|
+
import_gui_image = require("@hanzo/gui-image"),
|
|
49
|
+
import_gui_shapes = require("@hanzo/gui-shapes"),
|
|
50
|
+
import_gui_stacks = require("@hanzo/gui-stacks"),
|
|
51
|
+
React = __toESM(require("react"), 1);
|
|
52
|
+
function _type_of(obj) {
|
|
53
|
+
"@swc/helpers - typeof";
|
|
54
|
+
|
|
55
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
56
|
+
}
|
|
57
|
+
var AVATAR_NAME = "Avatar",
|
|
58
|
+
[createAvatarContext, createAvatarScope] = (0, import_gui_create_context.createContextScope)(AVATAR_NAME),
|
|
59
|
+
[AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME),
|
|
60
|
+
IMAGE_NAME = "AvatarImage",
|
|
61
|
+
AvatarImage = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
62
|
+
var _getShapeSize,
|
|
63
|
+
{
|
|
64
|
+
__scopeAvatar,
|
|
65
|
+
src,
|
|
66
|
+
source,
|
|
67
|
+
onLoadingStatusChange = function () {},
|
|
68
|
+
...imageProps
|
|
69
|
+
} = props,
|
|
70
|
+
context = useAvatarContext(IMAGE_NAME, __scopeAvatar),
|
|
71
|
+
[status, setStatus] = React.useState("idle"),
|
|
72
|
+
shapeSize = (0, import_gui_core.getVariableValue)((_getShapeSize = (0, import_gui_shapes.getShapeSize)(context.size,
|
|
73
|
+
// @ts-expect-error
|
|
74
|
+
{
|
|
75
|
+
tokens: (0, import_gui_core.getTokens)()
|
|
76
|
+
})) === null || _getShapeSize === void 0 ? void 0 : _getShapeSize.width),
|
|
77
|
+
resolvedSrc = src || (source && (typeof source > "u" ? "undefined" : _type_of(source)) === "object" && "uri" in source ? source.uri : source);
|
|
78
|
+
return React.useEffect(function () {
|
|
79
|
+
setStatus(resolvedSrc ? "idle" : "error");
|
|
80
|
+
}, [resolvedSrc]), React.useEffect(function () {
|
|
81
|
+
onLoadingStatusChange(status), context.onImageLoadingStatusChange(status);
|
|
82
|
+
}, [status]), resolvedSrc ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_stacks.YStack, {
|
|
83
|
+
fullscreen: !0,
|
|
84
|
+
zIndex: 1,
|
|
85
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_image.Image, {
|
|
86
|
+
position: "absolute",
|
|
87
|
+
top: 0,
|
|
88
|
+
left: 0,
|
|
89
|
+
right: 0,
|
|
90
|
+
bottom: 0,
|
|
91
|
+
objectFit: "cover",
|
|
92
|
+
...(typeof shapeSize == "number" && !Number.isNaN(shapeSize) && {
|
|
93
|
+
width: shapeSize,
|
|
94
|
+
height: shapeSize
|
|
95
|
+
}),
|
|
96
|
+
...imageProps,
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
ref: forwardedRef,
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
src: resolvedSrc,
|
|
101
|
+
// onLoadStart={() => {
|
|
102
|
+
// // setStatus('loading')
|
|
103
|
+
// }}
|
|
104
|
+
onError: function () {
|
|
105
|
+
setStatus("error");
|
|
106
|
+
},
|
|
107
|
+
onLoad: function () {
|
|
108
|
+
setStatus("loaded");
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
}) : null;
|
|
112
|
+
});
|
|
113
|
+
AvatarImage.displayName = IMAGE_NAME;
|
|
114
|
+
var FALLBACK_NAME = "AvatarFallback",
|
|
115
|
+
AvatarFallbackFrame = (0, import_gui_core.styled)(import_gui_stacks.YStack, {
|
|
116
|
+
name: FALLBACK_NAME,
|
|
117
|
+
position: "absolute",
|
|
118
|
+
fullscreen: !0,
|
|
119
|
+
zIndex: 0
|
|
120
|
+
}),
|
|
121
|
+
AvatarFallback = AvatarFallbackFrame.styleable(function (props, forwardedRef) {
|
|
122
|
+
var {
|
|
123
|
+
__scopeAvatar,
|
|
124
|
+
delayMs,
|
|
125
|
+
...fallbackProps
|
|
126
|
+
} = props,
|
|
127
|
+
context = useAvatarContext(FALLBACK_NAME, __scopeAvatar),
|
|
128
|
+
[canRender, setCanRender] = React.useState(delayMs === void 0);
|
|
129
|
+
return React.useEffect(function () {
|
|
130
|
+
if (delayMs !== void 0) {
|
|
131
|
+
var timerId = setTimeout(function () {
|
|
132
|
+
return setCanRender(!0);
|
|
133
|
+
}, delayMs);
|
|
134
|
+
return function () {
|
|
135
|
+
return clearTimeout(timerId);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}, [delayMs]), canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarFallbackFrame, {
|
|
139
|
+
...fallbackProps,
|
|
140
|
+
ref: forwardedRef
|
|
141
|
+
}) : null;
|
|
142
|
+
});
|
|
143
|
+
AvatarFallback.displayName = FALLBACK_NAME;
|
|
144
|
+
var AvatarFrame = (0, import_gui_core.styled)(import_gui_shapes.Square, {
|
|
145
|
+
name: AVATAR_NAME,
|
|
146
|
+
position: "relative",
|
|
147
|
+
overflow: "hidden"
|
|
148
|
+
}),
|
|
149
|
+
Avatar = (0, import_gui_helpers.withStaticProperties)(/* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
150
|
+
var {
|
|
151
|
+
__scopeAvatar,
|
|
152
|
+
size = "$true",
|
|
153
|
+
...avatarProps
|
|
154
|
+
} = props,
|
|
155
|
+
[imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
|
156
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarProvider, {
|
|
157
|
+
size,
|
|
158
|
+
scope: __scopeAvatar,
|
|
159
|
+
imageLoadingStatus,
|
|
160
|
+
onImageLoadingStatusChange: setImageLoadingStatus,
|
|
161
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(AvatarFrame, {
|
|
162
|
+
size,
|
|
163
|
+
...avatarProps,
|
|
164
|
+
ref: forwardedRef
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
}), {
|
|
168
|
+
Image: AvatarImage,
|
|
169
|
+
Fallback: AvatarFallback
|
|
170
|
+
});
|
|
171
|
+
Avatar.displayName = AVATAR_NAME;
|
|
172
|
+
//# sourceMappingURL=Avatar.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Avatar_exports","__export","Avatar","AvatarFallback","AvatarFallbackFrame","AvatarFrame","AvatarImage","createAvatarScope","module","exports","import_jsx_runtime","require","import_gui_core","import_gui_create_context","import_gui_helpers","import_gui_image","import_gui_shapes","import_gui_stacks","React","__toESM","_type_of","obj","Symbol","constructor","AVATAR_NAME","createAvatarContext","createContextScope","AvatarProvider","useAvatarContext","IMAGE_NAME","forwardRef","props","forwardedRef","_getShapeSize","__scopeAvatar","src","source","onLoadingStatusChange","imageProps","context","status","setStatus","useState","shapeSize","getVariableValue","getShapeSize","size","tokens","getTokens","width","resolvedSrc","uri","useEffect","onImageLoadingStatusChange","jsx","YStack","fullscreen","zIndex","children","Image","position","top","left","right","bottom","objectFit","Number","isNaN","height","ref","onError","onLoad","displayName","FALLBACK_NAME","styled","name","styleable","delayMs","fallbackProps","canRender","setCanRender","timerId","setTimeout","clearTimeout","imageLoadingStatus","Square","overflow","withStaticProperties","avatarProps","setImageLoadingStatus","scope"],"sources":["../../src/Avatar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
7
|
+
get: () => from[key],
|
|
8
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
9
|
+
});
|
|
10
|
+
return to;
|
|
11
|
+
},
|
|
12
|
+
__reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
13
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
14
|
+
value: !0
|
|
15
|
+
}), mod);
|
|
16
|
+
var index_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(index_exports);
|
|
18
|
+
__reExport(index_exports, require("./Avatar.cjs"), module.exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
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") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
9
|
+
get: () => from[key],
|
|
10
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
11
|
+
});
|
|
12
|
+
return to;
|
|
13
|
+
},
|
|
14
|
+
__reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
16
|
+
value: !0
|
|
17
|
+
}), mod);
|
|
18
|
+
var index_exports = {};
|
|
19
|
+
module.exports = __toCommonJS(index_exports);
|
|
20
|
+
__reExport(index_exports, require("./Avatar.native.js"), module.exports);
|
|
21
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","module","exports"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAP,YAAc,CAAAK,aAAA","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { getTokens, getVariableValue, styled } from "@hanzo/gui-core";
|
|
2
|
+
import { createContextScope } from "@hanzo/gui-create-context";
|
|
3
|
+
import { withStaticProperties } from "@hanzo/gui-helpers";
|
|
4
|
+
import { Image } from "@hanzo/gui-image";
|
|
5
|
+
import { Square, getShapeSize } from "@hanzo/gui-shapes";
|
|
6
|
+
import { YStack } from "@hanzo/gui-stacks";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
const AVATAR_NAME = "Avatar",
|
|
10
|
+
[createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME),
|
|
11
|
+
[AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME),
|
|
12
|
+
IMAGE_NAME = "AvatarImage",
|
|
13
|
+
AvatarImage = React.forwardRef((props, forwardedRef) => {
|
|
14
|
+
const {
|
|
15
|
+
__scopeAvatar,
|
|
16
|
+
src,
|
|
17
|
+
source,
|
|
18
|
+
onLoadingStatusChange = () => {},
|
|
19
|
+
...imageProps
|
|
20
|
+
} = props,
|
|
21
|
+
context = useAvatarContext(IMAGE_NAME, __scopeAvatar),
|
|
22
|
+
[status, setStatus] = React.useState("idle"),
|
|
23
|
+
shapeSize = getVariableValue(getShapeSize(context.size,
|
|
24
|
+
// @ts-expect-error
|
|
25
|
+
{
|
|
26
|
+
tokens: getTokens()
|
|
27
|
+
})?.width),
|
|
28
|
+
resolvedSrc = src || (source && typeof source == "object" && "uri" in source ? source.uri : source);
|
|
29
|
+
return React.useEffect(() => {
|
|
30
|
+
setStatus(resolvedSrc ? "idle" : "error");
|
|
31
|
+
}, [resolvedSrc]), React.useEffect(() => {
|
|
32
|
+
onLoadingStatusChange(status), context.onImageLoadingStatusChange(status);
|
|
33
|
+
}, [status]), resolvedSrc ? /* @__PURE__ */jsx(YStack, {
|
|
34
|
+
fullscreen: !0,
|
|
35
|
+
zIndex: 1,
|
|
36
|
+
children: /* @__PURE__ */jsx(Image, {
|
|
37
|
+
position: "absolute",
|
|
38
|
+
top: 0,
|
|
39
|
+
left: 0,
|
|
40
|
+
right: 0,
|
|
41
|
+
bottom: 0,
|
|
42
|
+
objectFit: "cover",
|
|
43
|
+
...(typeof shapeSize == "number" && !Number.isNaN(shapeSize) && {
|
|
44
|
+
width: shapeSize,
|
|
45
|
+
height: shapeSize
|
|
46
|
+
}),
|
|
47
|
+
...imageProps,
|
|
48
|
+
ref: forwardedRef,
|
|
49
|
+
src: resolvedSrc,
|
|
50
|
+
onError: () => {
|
|
51
|
+
setStatus("error");
|
|
52
|
+
},
|
|
53
|
+
onLoad: () => {
|
|
54
|
+
setStatus("loaded");
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
}) : null;
|
|
58
|
+
});
|
|
59
|
+
AvatarImage.displayName = IMAGE_NAME;
|
|
60
|
+
const FALLBACK_NAME = "AvatarFallback",
|
|
61
|
+
AvatarFallbackFrame = styled(YStack, {
|
|
62
|
+
name: FALLBACK_NAME,
|
|
63
|
+
position: "absolute",
|
|
64
|
+
fullscreen: !0,
|
|
65
|
+
zIndex: 0
|
|
66
|
+
}),
|
|
67
|
+
AvatarFallback = AvatarFallbackFrame.styleable((props, forwardedRef) => {
|
|
68
|
+
const {
|
|
69
|
+
__scopeAvatar,
|
|
70
|
+
delayMs,
|
|
71
|
+
...fallbackProps
|
|
72
|
+
} = props,
|
|
73
|
+
context = useAvatarContext(FALLBACK_NAME, __scopeAvatar),
|
|
74
|
+
[canRender, setCanRender] = React.useState(delayMs === void 0);
|
|
75
|
+
return React.useEffect(() => {
|
|
76
|
+
if (delayMs !== void 0) {
|
|
77
|
+
const timerId = setTimeout(() => setCanRender(!0), delayMs);
|
|
78
|
+
return () => clearTimeout(timerId);
|
|
79
|
+
}
|
|
80
|
+
}, [delayMs]), canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */jsx(AvatarFallbackFrame, {
|
|
81
|
+
...fallbackProps,
|
|
82
|
+
ref: forwardedRef
|
|
83
|
+
}) : null;
|
|
84
|
+
});
|
|
85
|
+
AvatarFallback.displayName = FALLBACK_NAME;
|
|
86
|
+
const AvatarFrame = styled(Square, {
|
|
87
|
+
name: AVATAR_NAME,
|
|
88
|
+
position: "relative",
|
|
89
|
+
overflow: "hidden"
|
|
90
|
+
}),
|
|
91
|
+
Avatar = withStaticProperties(React.forwardRef((props, forwardedRef) => {
|
|
92
|
+
const {
|
|
93
|
+
__scopeAvatar,
|
|
94
|
+
size = "$true",
|
|
95
|
+
...avatarProps
|
|
96
|
+
} = props,
|
|
97
|
+
[imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
|
98
|
+
return /* @__PURE__ */jsx(AvatarProvider, {
|
|
99
|
+
size,
|
|
100
|
+
scope: __scopeAvatar,
|
|
101
|
+
imageLoadingStatus,
|
|
102
|
+
onImageLoadingStatusChange: setImageLoadingStatus,
|
|
103
|
+
children: /* @__PURE__ */jsx(AvatarFrame, {
|
|
104
|
+
size,
|
|
105
|
+
...avatarProps,
|
|
106
|
+
ref: forwardedRef
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
}), {
|
|
110
|
+
Image: AvatarImage,
|
|
111
|
+
Fallback: AvatarFallback
|
|
112
|
+
});
|
|
113
|
+
Avatar.displayName = AVATAR_NAME;
|
|
114
|
+
export { Avatar, AvatarFallback, AvatarFallbackFrame, AvatarFrame, AvatarImage, createAvatarScope };
|
|
115
|
+
//# sourceMappingURL=Avatar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getTokens","getVariableValue","styled","createContextScope","withStaticProperties","Image","Square","getShapeSize","YStack","React","jsx","AVATAR_NAME","createAvatarContext","createAvatarScope","AvatarProvider","useAvatarContext","IMAGE_NAME","AvatarImage","forwardRef","props","forwardedRef","__scopeAvatar","src","source","onLoadingStatusChange","imageProps","context","status","setStatus","useState","shapeSize","size","tokens","width","resolvedSrc","uri","useEffect","onImageLoadingStatusChange","fullscreen","zIndex","children","position","top","left","right","bottom","objectFit","Number","isNaN","height","ref","onError","onLoad","displayName","FALLBACK_NAME","AvatarFallbackFrame","name","AvatarFallback","styleable","delayMs","fallbackProps","canRender","setCanRender","timerId","setTimeout","clearTimeout","imageLoadingStatus","AvatarFrame","overflow","Avatar","avatarProps","setImageLoadingStatus","scope","Fallback"],"sources":["../../src/Avatar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getTokens, getVariableValue, styled } from "@hanzo/gui-core";
|
|
3
|
+
import { createContextScope } from "@hanzo/gui-create-context";
|
|
4
|
+
import { withStaticProperties } from "@hanzo/gui-helpers";
|
|
5
|
+
import { Image } from "@hanzo/gui-image";
|
|
6
|
+
import { Square, getShapeSize } from "@hanzo/gui-shapes";
|
|
7
|
+
import { YStack } from "@hanzo/gui-stacks";
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
function _type_of(obj) {
|
|
10
|
+
"@swc/helpers - typeof";
|
|
11
|
+
|
|
12
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
13
|
+
}
|
|
14
|
+
var AVATAR_NAME = "Avatar",
|
|
15
|
+
[createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME),
|
|
16
|
+
[AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME),
|
|
17
|
+
IMAGE_NAME = "AvatarImage",
|
|
18
|
+
AvatarImage = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
19
|
+
var _getShapeSize,
|
|
20
|
+
{
|
|
21
|
+
__scopeAvatar,
|
|
22
|
+
src,
|
|
23
|
+
source,
|
|
24
|
+
onLoadingStatusChange = function () {},
|
|
25
|
+
...imageProps
|
|
26
|
+
} = props,
|
|
27
|
+
context = useAvatarContext(IMAGE_NAME, __scopeAvatar),
|
|
28
|
+
[status, setStatus] = React.useState("idle"),
|
|
29
|
+
shapeSize = getVariableValue((_getShapeSize = getShapeSize(context.size,
|
|
30
|
+
// @ts-expect-error
|
|
31
|
+
{
|
|
32
|
+
tokens: getTokens()
|
|
33
|
+
})) === null || _getShapeSize === void 0 ? void 0 : _getShapeSize.width),
|
|
34
|
+
resolvedSrc = src || (source && (typeof source > "u" ? "undefined" : _type_of(source)) === "object" && "uri" in source ? source.uri : source);
|
|
35
|
+
return React.useEffect(function () {
|
|
36
|
+
setStatus(resolvedSrc ? "idle" : "error");
|
|
37
|
+
}, [resolvedSrc]), React.useEffect(function () {
|
|
38
|
+
onLoadingStatusChange(status), context.onImageLoadingStatusChange(status);
|
|
39
|
+
}, [status]), resolvedSrc ? /* @__PURE__ */_jsx(YStack, {
|
|
40
|
+
fullscreen: !0,
|
|
41
|
+
zIndex: 1,
|
|
42
|
+
children: /* @__PURE__ */_jsx(Image, {
|
|
43
|
+
position: "absolute",
|
|
44
|
+
top: 0,
|
|
45
|
+
left: 0,
|
|
46
|
+
right: 0,
|
|
47
|
+
bottom: 0,
|
|
48
|
+
objectFit: "cover",
|
|
49
|
+
...(typeof shapeSize == "number" && !Number.isNaN(shapeSize) && {
|
|
50
|
+
width: shapeSize,
|
|
51
|
+
height: shapeSize
|
|
52
|
+
}),
|
|
53
|
+
...imageProps,
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
ref: forwardedRef,
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
src: resolvedSrc,
|
|
58
|
+
// onLoadStart={() => {
|
|
59
|
+
// // setStatus('loading')
|
|
60
|
+
// }}
|
|
61
|
+
onError: function () {
|
|
62
|
+
setStatus("error");
|
|
63
|
+
},
|
|
64
|
+
onLoad: function () {
|
|
65
|
+
setStatus("loaded");
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
}) : null;
|
|
69
|
+
});
|
|
70
|
+
AvatarImage.displayName = IMAGE_NAME;
|
|
71
|
+
var FALLBACK_NAME = "AvatarFallback",
|
|
72
|
+
AvatarFallbackFrame = styled(YStack, {
|
|
73
|
+
name: FALLBACK_NAME,
|
|
74
|
+
position: "absolute",
|
|
75
|
+
fullscreen: !0,
|
|
76
|
+
zIndex: 0
|
|
77
|
+
}),
|
|
78
|
+
AvatarFallback = AvatarFallbackFrame.styleable(function (props, forwardedRef) {
|
|
79
|
+
var {
|
|
80
|
+
__scopeAvatar,
|
|
81
|
+
delayMs,
|
|
82
|
+
...fallbackProps
|
|
83
|
+
} = props,
|
|
84
|
+
context = useAvatarContext(FALLBACK_NAME, __scopeAvatar),
|
|
85
|
+
[canRender, setCanRender] = React.useState(delayMs === void 0);
|
|
86
|
+
return React.useEffect(function () {
|
|
87
|
+
if (delayMs !== void 0) {
|
|
88
|
+
var timerId = setTimeout(function () {
|
|
89
|
+
return setCanRender(!0);
|
|
90
|
+
}, delayMs);
|
|
91
|
+
return function () {
|
|
92
|
+
return clearTimeout(timerId);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}, [delayMs]), canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */_jsx(AvatarFallbackFrame, {
|
|
96
|
+
...fallbackProps,
|
|
97
|
+
ref: forwardedRef
|
|
98
|
+
}) : null;
|
|
99
|
+
});
|
|
100
|
+
AvatarFallback.displayName = FALLBACK_NAME;
|
|
101
|
+
var AvatarFrame = styled(Square, {
|
|
102
|
+
name: AVATAR_NAME,
|
|
103
|
+
position: "relative",
|
|
104
|
+
overflow: "hidden"
|
|
105
|
+
}),
|
|
106
|
+
Avatar = withStaticProperties(/* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
|
|
107
|
+
var {
|
|
108
|
+
__scopeAvatar,
|
|
109
|
+
size = "$true",
|
|
110
|
+
...avatarProps
|
|
111
|
+
} = props,
|
|
112
|
+
[imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
|
113
|
+
return /* @__PURE__ */_jsx(AvatarProvider, {
|
|
114
|
+
size,
|
|
115
|
+
scope: __scopeAvatar,
|
|
116
|
+
imageLoadingStatus,
|
|
117
|
+
onImageLoadingStatusChange: setImageLoadingStatus,
|
|
118
|
+
children: /* @__PURE__ */_jsx(AvatarFrame, {
|
|
119
|
+
size,
|
|
120
|
+
...avatarProps,
|
|
121
|
+
ref: forwardedRef
|
|
122
|
+
})
|
|
123
|
+
});
|
|
124
|
+
}), {
|
|
125
|
+
Image: AvatarImage,
|
|
126
|
+
Fallback: AvatarFallback
|
|
127
|
+
});
|
|
128
|
+
Avatar.displayName = AVATAR_NAME;
|
|
129
|
+
export { Avatar, AvatarFallback, AvatarFallbackFrame, AvatarFrame, AvatarImage, createAvatarScope };
|
|
130
|
+
//# sourceMappingURL=Avatar.native.js.map
|