v1.0 with SW PWA enabled
This commit is contained in:
128
frontend/node_modules/@radix-ui/react-avatar/dist/index.mjs
generated
vendored
Normal file
128
frontend/node_modules/@radix-ui/react-avatar/dist/index.mjs
generated
vendored
Normal file
@ -0,0 +1,128 @@
|
||||
"use client";
|
||||
|
||||
// src/avatar.tsx
|
||||
import * as React from "react";
|
||||
import { createContextScope } from "@radix-ui/react-context";
|
||||
import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
|
||||
import { useLayoutEffect } from "@radix-ui/react-use-layout-effect";
|
||||
import { Primitive } from "@radix-ui/react-primitive";
|
||||
import { useIsHydrated } from "@radix-ui/react-use-is-hydrated";
|
||||
import { jsx } from "react/jsx-runtime";
|
||||
var AVATAR_NAME = "Avatar";
|
||||
var [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);
|
||||
var [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);
|
||||
var Avatar = React.forwardRef(
|
||||
(props, forwardedRef) => {
|
||||
const { __scopeAvatar, ...avatarProps } = props;
|
||||
const [imageLoadingStatus, setImageLoadingStatus] = React.useState("idle");
|
||||
return /* @__PURE__ */ jsx(
|
||||
AvatarProvider,
|
||||
{
|
||||
scope: __scopeAvatar,
|
||||
imageLoadingStatus,
|
||||
onImageLoadingStatusChange: setImageLoadingStatus,
|
||||
children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
Avatar.displayName = AVATAR_NAME;
|
||||
var IMAGE_NAME = "AvatarImage";
|
||||
var AvatarImage = React.forwardRef(
|
||||
(props, forwardedRef) => {
|
||||
const { __scopeAvatar, src, onLoadingStatusChange = () => {
|
||||
}, ...imageProps } = props;
|
||||
const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);
|
||||
const imageLoadingStatus = useImageLoadingStatus(src, imageProps);
|
||||
const handleLoadingStatusChange = useCallbackRef((status) => {
|
||||
onLoadingStatusChange(status);
|
||||
context.onImageLoadingStatusChange(status);
|
||||
});
|
||||
useLayoutEffect(() => {
|
||||
if (imageLoadingStatus !== "idle") {
|
||||
handleLoadingStatusChange(imageLoadingStatus);
|
||||
}
|
||||
}, [imageLoadingStatus, handleLoadingStatusChange]);
|
||||
return imageLoadingStatus === "loaded" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;
|
||||
}
|
||||
);
|
||||
AvatarImage.displayName = IMAGE_NAME;
|
||||
var FALLBACK_NAME = "AvatarFallback";
|
||||
var AvatarFallback = React.forwardRef(
|
||||
(props, forwardedRef) => {
|
||||
const { __scopeAvatar, delayMs, ...fallbackProps } = props;
|
||||
const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);
|
||||
const [canRender, setCanRender] = React.useState(delayMs === void 0);
|
||||
React.useEffect(() => {
|
||||
if (delayMs !== void 0) {
|
||||
const timerId = window.setTimeout(() => setCanRender(true), delayMs);
|
||||
return () => window.clearTimeout(timerId);
|
||||
}
|
||||
}, [delayMs]);
|
||||
return canRender && context.imageLoadingStatus !== "loaded" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;
|
||||
}
|
||||
);
|
||||
AvatarFallback.displayName = FALLBACK_NAME;
|
||||
function resolveLoadingStatus(image, src) {
|
||||
if (!image) {
|
||||
return "idle";
|
||||
}
|
||||
if (!src) {
|
||||
return "error";
|
||||
}
|
||||
if (image.src !== src) {
|
||||
image.src = src;
|
||||
}
|
||||
return image.complete && image.naturalWidth > 0 ? "loaded" : "loading";
|
||||
}
|
||||
function useImageLoadingStatus(src, { referrerPolicy, crossOrigin }) {
|
||||
const isHydrated = useIsHydrated();
|
||||
const imageRef = React.useRef(null);
|
||||
const image = (() => {
|
||||
if (!isHydrated) return null;
|
||||
if (!imageRef.current) {
|
||||
imageRef.current = new window.Image();
|
||||
}
|
||||
return imageRef.current;
|
||||
})();
|
||||
const [loadingStatus, setLoadingStatus] = React.useState(
|
||||
() => resolveLoadingStatus(image, src)
|
||||
);
|
||||
useLayoutEffect(() => {
|
||||
setLoadingStatus(resolveLoadingStatus(image, src));
|
||||
}, [image, src]);
|
||||
useLayoutEffect(() => {
|
||||
const updateStatus = (status) => () => {
|
||||
setLoadingStatus(status);
|
||||
};
|
||||
if (!image) return;
|
||||
const handleLoad = updateStatus("loaded");
|
||||
const handleError = updateStatus("error");
|
||||
image.addEventListener("load", handleLoad);
|
||||
image.addEventListener("error", handleError);
|
||||
if (referrerPolicy) {
|
||||
image.referrerPolicy = referrerPolicy;
|
||||
}
|
||||
if (typeof crossOrigin === "string") {
|
||||
image.crossOrigin = crossOrigin;
|
||||
}
|
||||
return () => {
|
||||
image.removeEventListener("load", handleLoad);
|
||||
image.removeEventListener("error", handleError);
|
||||
};
|
||||
}, [image, crossOrigin, referrerPolicy]);
|
||||
return loadingStatus;
|
||||
}
|
||||
var Root = Avatar;
|
||||
var Image = AvatarImage;
|
||||
var Fallback = AvatarFallback;
|
||||
export {
|
||||
Avatar,
|
||||
AvatarFallback,
|
||||
AvatarImage,
|
||||
Fallback,
|
||||
Image,
|
||||
Root,
|
||||
createAvatarScope
|
||||
};
|
||||
//# sourceMappingURL=index.mjs.map
|
||||
Reference in New Issue
Block a user