@radix-ui/react-avatar 1.0.3-rc.5 → 1.0.3-rc.6
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/index.d.mts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as Radix from "@radix-ui/react-primitive";
|
|
3
|
+
import { Primitive } from "@radix-ui/react-primitive";
|
|
4
|
+
export const createAvatarScope: import("@radix-ui/react-context").CreateScope;
|
|
5
|
+
type ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
|
|
6
|
+
type PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;
|
|
7
|
+
export interface AvatarProps extends PrimitiveSpanProps {
|
|
8
|
+
}
|
|
9
|
+
export const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
|
|
10
|
+
type PrimitiveImageProps = Radix.ComponentPropsWithoutRef<typeof Primitive.img>;
|
|
11
|
+
export interface AvatarImageProps extends PrimitiveImageProps {
|
|
12
|
+
onLoadingStatusChange?: (status: ImageLoadingStatus) => void;
|
|
13
|
+
}
|
|
14
|
+
export const AvatarImage: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
15
|
+
export interface AvatarFallbackProps extends PrimitiveSpanProps {
|
|
16
|
+
delayMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>>;
|
|
19
|
+
export const Root: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLSpanElement>>;
|
|
20
|
+
export const Image: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
21
|
+
export const Fallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>>;
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -113,4 +113,4 @@ const $cddcb0b647441e34$export$fb8d7f40caaeea67 = $cddcb0b647441e34$export$69fff
|
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
export {$cddcb0b647441e34$export$90370d16b488820f as createAvatarScope, $cddcb0b647441e34$export$e2255cf6045e8d47 as Avatar, $cddcb0b647441e34$export$2cd8ae1985206fe8 as AvatarImage, $cddcb0b647441e34$export$69fffb6a9571fbfe as AvatarFallback, $cddcb0b647441e34$export$be92b6f5f03c0fe9 as Root, $cddcb0b647441e34$export$3e431a229df88919 as Image, $cddcb0b647441e34$export$fb8d7f40caaeea67 as Fallback};
|
|
116
|
-
//# sourceMappingURL=index.
|
|
116
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/avatar/src/index.ts","packages/react/avatar/src/Avatar.tsx"],"sourcesContent":["export {\n createAvatarScope,\n //\n Avatar,\n AvatarImage,\n AvatarFallback,\n //\n Root,\n Image,\n Fallback,\n} from './Avatar';\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps } from './Avatar';\n","import * as React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Avatar\n * -----------------------------------------------------------------------------------------------*/\n\nconst AVATAR_NAME = 'Avatar';\n\ntype ScopedProps<P> = P & { __scopeAvatar?: Scope };\nconst [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\n\ntype ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\ntype AvatarContextValue = {\n imageLoadingStatus: ImageLoadingStatus;\n onImageLoadingStatusChange(status: ImageLoadingStatus): void;\n};\n\nconst [AvatarProvider, useAvatarContext] = createAvatarContext<AvatarContextValue>(AVATAR_NAME);\n\ntype AvatarElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface AvatarProps extends PrimitiveSpanProps {}\n\nconst Avatar = React.forwardRef<AvatarElement, AvatarProps>(\n (props: ScopedProps<AvatarProps>, forwardedRef) => {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState<ImageLoadingStatus>('idle');\n return (\n <AvatarProvider\n scope={__scopeAvatar}\n imageLoadingStatus={imageLoadingStatus}\n onImageLoadingStatusChange={setImageLoadingStatus}\n >\n <Primitive.span {...avatarProps} ref={forwardedRef} />\n </AvatarProvider>\n );\n }\n);\n\nAvatar.displayName = AVATAR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AvatarImage\n * -----------------------------------------------------------------------------------------------*/\n\nconst IMAGE_NAME = 'AvatarImage';\n\ntype AvatarImageElement = React.ElementRef<typeof Primitive.img>;\ntype PrimitiveImageProps = Radix.ComponentPropsWithoutRef<typeof Primitive.img>;\ninterface AvatarImageProps extends PrimitiveImageProps {\n onLoadingStatusChange?: (status: ImageLoadingStatus) => void;\n}\n\nconst AvatarImage = React.forwardRef<AvatarImageElement, AvatarImageProps>(\n (props: ScopedProps<AvatarImageProps>, forwardedRef) => {\n const { __scopeAvatar, src, onLoadingStatusChange = () => {}, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n const imageLoadingStatus = useImageLoadingStatus(src);\n const handleLoadingStatusChange = useCallbackRef((status: ImageLoadingStatus) => {\n onLoadingStatusChange(status);\n context.onImageLoadingStatusChange(status);\n });\n\n useLayoutEffect(() => {\n if (imageLoadingStatus !== 'idle') {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n\n return imageLoadingStatus === 'loaded' ? (\n <Primitive.img {...imageProps} ref={forwardedRef} src={src} />\n ) : null;\n }\n);\n\nAvatarImage.displayName = IMAGE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AvatarFallback\n * -----------------------------------------------------------------------------------------------*/\n\nconst FALLBACK_NAME = 'AvatarFallback';\n\ntype AvatarFallbackElement = React.ElementRef<typeof Primitive.span>;\ninterface AvatarFallbackProps extends PrimitiveSpanProps {\n delayMs?: number;\n}\n\nconst AvatarFallback = React.forwardRef<AvatarFallbackElement, AvatarFallbackProps>(\n (props: ScopedProps<AvatarFallbackProps>, forwardedRef) => {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\n\n React.useEffect(() => {\n if (delayMs !== undefined) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n\n return canRender && context.imageLoadingStatus !== 'loaded' ? (\n <Primitive.span {...fallbackProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nAvatarFallback.displayName = FALLBACK_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useImageLoadingStatus(src?: string) {\n const [loadingStatus, setLoadingStatus] = React.useState<ImageLoadingStatus>('idle');\n\n React.useEffect(() => {\n if (!src) {\n setLoadingStatus('error');\n return;\n }\n\n let isMounted = true;\n const image = new window.Image();\n\n const updateStatus = (status: ImageLoadingStatus) => () => {\n if (!isMounted) return;\n setLoadingStatus(status);\n };\n\n setLoadingStatus('loading');\n image.onload = updateStatus('loaded');\n image.onerror = updateStatus('error');\n image.src = src;\n\n return () => {\n isMounted = false;\n };\n }, [src]);\n\n return loadingStatus;\n}\nconst Root = Avatar;\nconst Image = AvatarImage;\nconst Fallback = AvatarFallback;\n\nexport {\n createAvatarScope,\n //\n Avatar,\n AvatarImage,\n AvatarFallback,\n //\n Root,\n Image,\n Fallback,\n};\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps };\n"],"names":["createAvatarScope","Avatar","AvatarImage","AvatarFallback","Root","Image","Fallback","React","createContextScope","useCallbackRef","useLayoutEffect","Primitive","AVATAR_NAME","createAvatarContext","AvatarProvider","useAvatarContext","forwardRef","props","forwardedRef","__scopeAvatar","avatarProps","imageLoadingStatus","setImageLoadingStatus","useState","IMAGE_NAME","src","onLoadingStatusChange","imageProps","context","useImageLoadingStatus","handleLoadingStatusChange","status","onImageLoadingStatusChange","FALLBACK_NAME","delayMs","fallbackProps","canRender","setCanRender","undefined","useEffect","timerId","window","setTimeout","clearTimeout","loadingStatus","setLoadingStatus","isMounted","image","updateStatus","onload","onerror"],"version":3,"file":"index.module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/avatar/src/index.ts","packages/react/avatar/src/Avatar.tsx"],"sourcesContent":["export {\n createAvatarScope,\n //\n Avatar,\n AvatarImage,\n AvatarFallback,\n //\n Root,\n Image,\n Fallback,\n} from './Avatar';\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps } from './Avatar';\n","import * as React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Avatar\n * -----------------------------------------------------------------------------------------------*/\n\nconst AVATAR_NAME = 'Avatar';\n\ntype ScopedProps<P> = P & { __scopeAvatar?: Scope };\nconst [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\n\ntype ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\ntype AvatarContextValue = {\n imageLoadingStatus: ImageLoadingStatus;\n onImageLoadingStatusChange(status: ImageLoadingStatus): void;\n};\n\nconst [AvatarProvider, useAvatarContext] = createAvatarContext<AvatarContextValue>(AVATAR_NAME);\n\ntype AvatarElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface AvatarProps extends PrimitiveSpanProps {}\n\nconst Avatar = React.forwardRef<AvatarElement, AvatarProps>(\n (props: ScopedProps<AvatarProps>, forwardedRef) => {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState<ImageLoadingStatus>('idle');\n return (\n <AvatarProvider\n scope={__scopeAvatar}\n imageLoadingStatus={imageLoadingStatus}\n onImageLoadingStatusChange={setImageLoadingStatus}\n >\n <Primitive.span {...avatarProps} ref={forwardedRef} />\n </AvatarProvider>\n );\n }\n);\n\nAvatar.displayName = AVATAR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AvatarImage\n * -----------------------------------------------------------------------------------------------*/\n\nconst IMAGE_NAME = 'AvatarImage';\n\ntype AvatarImageElement = React.ElementRef<typeof Primitive.img>;\ntype PrimitiveImageProps = Radix.ComponentPropsWithoutRef<typeof Primitive.img>;\ninterface AvatarImageProps extends PrimitiveImageProps {\n onLoadingStatusChange?: (status: ImageLoadingStatus) => void;\n}\n\nconst AvatarImage = React.forwardRef<AvatarImageElement, AvatarImageProps>(\n (props: ScopedProps<AvatarImageProps>, forwardedRef) => {\n const { __scopeAvatar, src, onLoadingStatusChange = () => {}, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n const imageLoadingStatus = useImageLoadingStatus(src);\n const handleLoadingStatusChange = useCallbackRef((status: ImageLoadingStatus) => {\n onLoadingStatusChange(status);\n context.onImageLoadingStatusChange(status);\n });\n\n useLayoutEffect(() => {\n if (imageLoadingStatus !== 'idle') {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n\n return imageLoadingStatus === 'loaded' ? (\n <Primitive.img {...imageProps} ref={forwardedRef} src={src} />\n ) : null;\n }\n);\n\nAvatarImage.displayName = IMAGE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AvatarFallback\n * -----------------------------------------------------------------------------------------------*/\n\nconst FALLBACK_NAME = 'AvatarFallback';\n\ntype AvatarFallbackElement = React.ElementRef<typeof Primitive.span>;\ninterface AvatarFallbackProps extends PrimitiveSpanProps {\n delayMs?: number;\n}\n\nconst AvatarFallback = React.forwardRef<AvatarFallbackElement, AvatarFallbackProps>(\n (props: ScopedProps<AvatarFallbackProps>, forwardedRef) => {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\n\n React.useEffect(() => {\n if (delayMs !== undefined) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n\n return canRender && context.imageLoadingStatus !== 'loaded' ? (\n <Primitive.span {...fallbackProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nAvatarFallback.displayName = FALLBACK_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useImageLoadingStatus(src?: string) {\n const [loadingStatus, setLoadingStatus] = React.useState<ImageLoadingStatus>('idle');\n\n React.useEffect(() => {\n if (!src) {\n setLoadingStatus('error');\n return;\n }\n\n let isMounted = true;\n const image = new window.Image();\n\n const updateStatus = (status: ImageLoadingStatus) => () => {\n if (!isMounted) return;\n setLoadingStatus(status);\n };\n\n setLoadingStatus('loading');\n image.onload = updateStatus('loaded');\n image.onerror = updateStatus('error');\n image.src = src;\n\n return () => {\n isMounted = false;\n };\n }, [src]);\n\n return loadingStatus;\n}\nconst Root = Avatar;\nconst Image = AvatarImage;\nconst Fallback = AvatarFallback;\n\nexport {\n createAvatarScope,\n //\n Avatar,\n AvatarImage,\n AvatarFallback,\n //\n Root,\n Image,\n Fallback,\n};\nexport type { AvatarProps, AvatarImageProps, AvatarFallbackProps };\n"],"names":["createAvatarScope","Avatar","AvatarImage","AvatarFallback","Root","Image","Fallback","React","createContextScope","useCallbackRef","useLayoutEffect","Primitive","AVATAR_NAME","createAvatarContext","AvatarProvider","useAvatarContext","forwardRef","props","forwardedRef","__scopeAvatar","avatarProps","imageLoadingStatus","setImageLoadingStatus","useState","IMAGE_NAME","src","onLoadingStatusChange","imageProps","context","useImageLoadingStatus","handleLoadingStatusChange","status","onImageLoadingStatusChange","FALLBACK_NAME","delayMs","fallbackProps","canRender","setCanRender","undefined","useEffect","timerId","window","setTimeout","clearTimeout","loadingStatus","setLoadingStatus","isMounted","image","updateStatus","onload","onerror"],"version":3,"file":"index.mjs.map"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radix-ui/react-avatar",
|
|
3
|
-
"version": "1.0.3-rc.
|
|
3
|
+
"version": "1.0.3-rc.6",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"import": {
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
9
|
+
"default": "./dist/index.mjs"
|
|
10
|
+
},
|
|
11
|
+
"require": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"source": "./src/index.ts",
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"module": "./dist/index.mjs",
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
9
21
|
"files": [
|
|
10
22
|
"dist",
|
|
11
23
|
"README.md"
|
|
@@ -17,10 +29,10 @@
|
|
|
17
29
|
},
|
|
18
30
|
"dependencies": {
|
|
19
31
|
"@babel/runtime": "^7.13.10",
|
|
20
|
-
"@radix-ui/react-context": "1.0.
|
|
21
|
-
"@radix-ui/react-primitive": "1.0.3-rc.
|
|
22
|
-
"@radix-ui/react-use-callback-ref": "1.0.
|
|
23
|
-
"@radix-ui/react-use-layout-effect": "1.0.
|
|
32
|
+
"@radix-ui/react-context": "1.0.1-rc.1",
|
|
33
|
+
"@radix-ui/react-primitive": "1.0.3-rc.6",
|
|
34
|
+
"@radix-ui/react-use-callback-ref": "1.0.1-rc.1",
|
|
35
|
+
"@radix-ui/react-use-layout-effect": "1.0.1-rc.1"
|
|
24
36
|
},
|
|
25
37
|
"peerDependencies": {
|
|
26
38
|
"react": "^16.8 || ^17.0 || ^18.0",
|