@sheinx/base 3.5.0-beta.4 → 3.5.0-beta.5

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.
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarProps } from './avatar.type';
3
+ declare const Avatar: (props: AvatarProps) => JSX.Element;
4
+ export default Avatar;
5
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["avatar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAE3D,QAAA,MAAM,MAAM,UAAW,WAAW,gBA4HjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _context = require("./context");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ var _excluded = ["jssStyle", "className", "children", "style", "src", "alt", "icon", "gap", "shape", "srcSet", "draggable", "size", "crossOrigin", "onError"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
22
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
24
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
25
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
26
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
27
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
28
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
+ var Avatar = function Avatar(props) {
30
+ var _jssStyle$avatar;
31
+ var jssStyle = props.jssStyle,
32
+ className = props.className,
33
+ children = props.children,
34
+ style = props.style,
35
+ src = props.src,
36
+ alt = props.alt,
37
+ icon = props.icon,
38
+ _props$gap = props.gap,
39
+ gap = _props$gap === void 0 ? 4 : _props$gap,
40
+ shapeProp = props.shape,
41
+ srcSet = props.srcSet,
42
+ draggable = props.draggable,
43
+ sizeProp = props.size,
44
+ crossOrigin = props.crossOrigin,
45
+ onError = props.onError,
46
+ rest = _objectWithoutProperties(props, _excluded);
47
+ var _useState = (0, _react.useState)(1),
48
+ _useState2 = _slicedToArray(_useState, 2),
49
+ scale = _useState2[0],
50
+ setScale = _useState2[1];
51
+ var _useState3 = (0, _react.useState)(false),
52
+ _useState4 = _slicedToArray(_useState3, 2),
53
+ mounted = _useState4[0],
54
+ setMounted = _useState4[1];
55
+ var _useState5 = (0, _react.useState)(true),
56
+ _useState6 = _slicedToArray(_useState5, 2),
57
+ isImgExist = _useState6[0],
58
+ setIsImgExist = _useState6[1];
59
+ var avatarRef = (0, _react.useRef)(null);
60
+ var childrenRef = (0, _react.useRef)(null);
61
+ var avatarContext = (0, _react.useContext)(_context.AvatarContext);
62
+ var shape = shapeProp || avatarContext.shape || 'circle';
63
+ var size = sizeProp || avatarContext.size;
64
+ var hasImageElement = /*#__PURE__*/(0, _react.isValidElement)(src);
65
+ var avatarClasses = (jssStyle === null || jssStyle === void 0 || (_jssStyle$avatar = jssStyle.avatar) === null || _jssStyle$avatar === void 0 ? void 0 : _jssStyle$avatar.call(jssStyle)) || {};
66
+ var rootClass = (0, _classnames.default)(className, avatarClasses.wrapper, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, avatarClasses.circle, shape === 'circle'), avatarClasses.square, shape === 'square'), avatarClasses.image, hasImageElement || src), avatarClasses.small, size === 'small'), avatarClasses.large, size === 'large'), avatarClasses.icon, !!icon));
67
+ var setScaleByChildren = function setScaleByChildren() {
68
+ if (!childrenRef.current || !avatarRef.current) return;
69
+ var avatarWidth = avatarRef.current.offsetWidth;
70
+ var childrenWidth = childrenRef.current.offsetWidth;
71
+ if (childrenWidth !== 0 && avatarWidth !== 0) {
72
+ if (gap * 2 < avatarWidth) {
73
+ setScale(avatarWidth - gap * 2 < childrenWidth ? (avatarWidth - gap * 2) / childrenWidth : 1);
74
+ }
75
+ }
76
+ };
77
+ var handleImageLoadError = function handleImageLoadError() {
78
+ var errorFlag = (onError === null || onError === void 0 ? void 0 : onError()) || false;
79
+ if (errorFlag !== false) {
80
+ setIsImgExist(false);
81
+ }
82
+ };
83
+ var renderChildren = function renderChildren() {
84
+ if (typeof src === 'string' && isImgExist) {
85
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
86
+ src: src,
87
+ alt: alt,
88
+ draggable: draggable,
89
+ srcSet: srcSet,
90
+ crossOrigin: crossOrigin,
91
+ onError: handleImageLoadError
92
+ });
93
+ }
94
+ if (hasImageElement) {
95
+ return src;
96
+ }
97
+ if (icon) {
98
+ return icon;
99
+ }
100
+ var className = (0, _classnames.default)(icon ? avatarClasses.icon : avatarClasses.string);
101
+ if (mounted || scale !== 1) {
102
+ var transform = "scale(".concat(scale, ")");
103
+ var childrenStyle = {
104
+ transform: transform,
105
+ msTransform: transform,
106
+ WebkitTransform: transform
107
+ };
108
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
109
+ style: childrenStyle,
110
+ className: className,
111
+ ref: childrenRef,
112
+ children: children
113
+ });
114
+ }
115
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
116
+ style: {
117
+ opacity: 0
118
+ },
119
+ className: className,
120
+ ref: childrenRef,
121
+ children: children
122
+ });
123
+ };
124
+ (0, _react.useEffect)(function () {
125
+ setMounted(true);
126
+ }, []);
127
+ (0, _react.useEffect)(function () {
128
+ setIsImgExist(true);
129
+ setScale(1);
130
+ }, [props.src]);
131
+ (0, _react.useEffect)(setScaleByChildren, [gap]);
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", _objectSpread(_objectSpread({
133
+ ref: avatarRef,
134
+ className: rootClass,
135
+ style: style
136
+ }, rest), {}, {
137
+ children: renderChildren()
138
+ }));
139
+ };
140
+ var _default = exports.default = Avatar;
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { CommonType } from '../common/type';
3
+ import { PopoverClasses, PopoverProps } from '../popover/popover.type';
4
+ export interface AvatarClasses {
5
+ wrapper: string;
6
+ small: string;
7
+ large: string;
8
+ image: string;
9
+ string: string;
10
+ circle: string;
11
+ square: string;
12
+ icon: string;
13
+ text: string;
14
+ group: string;
15
+ max: string;
16
+ popover: string;
17
+ }
18
+ export interface AvatarProps extends Pick<CommonType, 'className' | 'style' | 'size'> {
19
+ jssStyle?: {
20
+ avatar: () => AvatarClasses;
21
+ };
22
+ /**
23
+ * @en The alternative text for the image
24
+ * @cn 图像无法显示时的替代文本
25
+ */
26
+ alt?: string;
27
+ /**
28
+ * @en The address of the image or the image element of the image class avatar
29
+ * @cn 图片类头像的资源地址或者图片元素
30
+ */
31
+ src?: string | React.ReactNode;
32
+ /**
33
+ * @en Set the custom icon of the avatar
34
+ * @cn 设置头像的自定义图标
35
+ */
36
+ icon?: React.ReactNode;
37
+ /**
38
+ * @en Specifies the shape of the avatar
39
+ * @cn 指定头像的形状
40
+ * @default 'circle'
41
+ */
42
+ children?: React.ReactNode;
43
+ /**
44
+ * @en The text content of the avatar, the scaling ratio will be calculated according to the content size
45
+ * @cn 头像文本内容,会根据内容尺寸自适应计算缩放比例
46
+ */
47
+ shape?: 'circle' | 'square';
48
+ /**
49
+ * @en Set the responsive resource address of the image class avatar
50
+ * @cn 设置图片类头像响应式资源地址
51
+ */
52
+ srcSet?: string;
53
+ /**
54
+ * @en The distance between the left and right edges of the character type in pixels
55
+ * @cn 字符类型距离左右两侧边界单位像素
56
+ */
57
+ gap?: number;
58
+ /**
59
+ * @en Whether the image is allowed to be dragged
60
+ * @cn 图片是否允许拖动
61
+ * @default true
62
+ */
63
+ draggable?: boolean;
64
+ /**
65
+ * @en CORS attribute setting
66
+ * @cn CORS 属性设置
67
+ */
68
+ crossOrigin?: 'anonymous' | 'use-credentials';
69
+ /**
70
+ * @en The event that the image fails to load, returning false will close the component's default fallback behavior
71
+ * @cn 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为
72
+ */
73
+ onError?: () => boolean;
74
+ }
75
+ export interface AvatarGroupProps extends Pick<CommonType, 'className' | 'style' | 'size'>, Pick<AvatarProps, 'shape'> {
76
+ jssStyle?: {
77
+ avatar: () => AvatarClasses;
78
+ popover: () => PopoverClasses;
79
+ };
80
+ /**
81
+ * @en Set the maximum number of avatars displayed in the avatar group
82
+ * @cn 设置头像组展示头像的最大数量
83
+ */
84
+ max?: number;
85
+ /**
86
+ * @en Custom rendering of hidden avatar nodes, hideAvatarNodes is an array of hidden node dom, max is the number of hidden nodes
87
+ * @cn 自定义渲染隐藏的头像节点,hideAvatarNodes 为隐藏的节点 dom 数组,max 为隐藏的节点数量
88
+ */
89
+ renderMax?: (hideAvatarNodes: React.ReactNode[], max: number) => React.ReactNode;
90
+ /**
91
+ * @en Avatar node
92
+ * @cn 头像节点
93
+ */
94
+ children: React.ReactNode;
95
+ /**
96
+ * @en The event that the image fails to load, returning false will close the component's default fallback behavior
97
+ * @cn 用于展示隐藏头像的 Popover 相关配置,配置属性为 Popover 部分属性: position、zIndex、getPopupContainer、adjust
98
+ */
99
+ popover?: Pick<PopoverProps, 'position' | 'zIndex' | 'getPopupContainer' | 'adjust'>;
100
+ }
101
+ //# sourceMappingURL=avatar.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.type.d.ts","sourceRoot":"","sources":["avatar.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IACnF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;KAC7B,CAAC;IACF;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAC9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB;AACD,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC,EACtD,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;QAC5B,OAAO,EAAE,MAAM,cAAc,CAAC;KAC/B,CAAC;IACF;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,mBAAmB,GAAG,QAAQ,CAAC,CAAC;CACtF"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarGroupProps } from './avatar.type';
3
+ export type AvatarContextProps = Pick<AvatarGroupProps, 'shape' | 'size'>;
4
+ export declare const AvatarContext: import("react").Context<AvatarContextProps>;
5
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["context.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,aAAa,6CAAwC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AvatarContext = void 0;
7
+ var _react = require("react");
8
+ var AvatarContext = exports.AvatarContext = /*#__PURE__*/(0, _react.createContext)({});
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarGroupProps } from './avatar.type';
3
+ declare const AvatarGroup: (props: AvatarGroupProps) => JSX.Element;
4
+ export default AvatarGroup;
5
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["group.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AAahE,QAAA,MAAM,WAAW,UAAW,gBAAgB,gBA2C3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _context = require("./context");
9
+ var _avatar = _interopRequireDefault(require("./avatar"));
10
+ var _popover = require("../popover");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
16
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
+ var AvatarProvider = function AvatarProvider(props) {
22
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.AvatarContext.Provider, {
23
+ value: props,
24
+ children: props.children
25
+ });
26
+ };
27
+ var AvatarGroup = function AvatarGroup(props) {
28
+ var _jssStyle$avatar;
29
+ var jssStyle = props.jssStyle,
30
+ childrenProp = props.children,
31
+ size = props.size,
32
+ shape = props.shape,
33
+ max = props.max,
34
+ popover = props.popover,
35
+ renderMax = props.renderMax;
36
+ var avatarGroupClasses = (jssStyle === null || jssStyle === void 0 || (_jssStyle$avatar = jssStyle.avatar) === null || _jssStyle$avatar === void 0 ? void 0 : _jssStyle$avatar.call(jssStyle)) || {};
37
+ var children = _react.Children.toArray(childrenProp).map(function (child, index) {
38
+ return /*#__PURE__*/(0, _react.cloneElement)(child, {
39
+ key: "avatar-key-".concat(index)
40
+ });
41
+ });
42
+ var childrenNumber = children.length;
43
+ if (max && max < childrenNumber) {
44
+ var childrenShow = children.slice(0, max);
45
+ var childrenHidden = children.slice(max, childrenNumber);
46
+ if (renderMax) {
47
+ childrenShow.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
48
+ children: renderMax(childrenHidden, childrenHidden.length)
49
+ }, 'avatar-provider-key'));
50
+ } else {
51
+ childrenShow.push( /*#__PURE__*/(0, _jsxRuntime.jsxs)(_avatar.default, {
52
+ jssStyle: jssStyle,
53
+ className: avatarGroupClasses.max,
54
+ children: ["+", childrenHidden.length, /*#__PURE__*/(0, _jsxRuntime.jsx)(_popover.Popover, _objectSpread(_objectSpread({
55
+ jssStyle: jssStyle
56
+ }, popover), {}, {
57
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
58
+ className: avatarGroupClasses.popover,
59
+ children: childrenHidden
60
+ })
61
+ }))]
62
+ }, 'avatar-provider-key'));
63
+ }
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(AvatarProvider, {
65
+ shape: shape,
66
+ size: size,
67
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
68
+ className: avatarGroupClasses.group,
69
+ children: childrenShow
70
+ })
71
+ });
72
+ }
73
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(AvatarProvider, {
74
+ shape: shape,
75
+ size: size,
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
77
+ className: avatarGroupClasses.group,
78
+ children: children
79
+ })
80
+ });
81
+ };
82
+ var _default = exports.default = AvatarGroup;
@@ -0,0 +1,5 @@
1
+ export { default, default as Avatar } from './avatar';
2
+ export type { AvatarProps } from './avatar.type';
3
+ export { default as AvatarGroup } from './group';
4
+ export type { AvatarGroupProps } from './avatar.type';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ "use client";
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "Avatar", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _avatar.default;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "AvatarGroup", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _group.default;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "default", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _avatar.default;
23
+ }
24
+ });
25
+ var _avatar = _interopRequireDefault(require("./avatar"));
26
+ var _group = _interopRequireDefault(require("./group"));
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './alert';
2
+ export * from './avatar';
2
3
  export * from './badge';
3
4
  export * from './breadcrumb';
4
5
  export * from './button';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
package/cjs/index.js CHANGED
@@ -25,6 +25,18 @@ Object.keys(_alert).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
+ var _avatar = require("./avatar");
29
+ Object.keys(_avatar).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
32
+ if (key in exports && exports[key] === _avatar[key]) return;
33
+ Object.defineProperty(exports, key, {
34
+ enumerable: true,
35
+ get: function get() {
36
+ return _avatar[key];
37
+ }
38
+ });
39
+ });
28
40
  var _badge = require("./badge");
29
41
  Object.keys(_badge).forEach(function (key) {
30
42
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarProps } from './avatar.type';
3
+ declare const Avatar: (props: AvatarProps) => JSX.Element;
4
+ export default Avatar;
5
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["avatar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAE3D,QAAA,MAAM,MAAM,UAAW,WAAW,gBA4HjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,131 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["jssStyle", "className", "children", "style", "src", "alt", "icon", "gap", "shape", "srcSet", "draggable", "size", "crossOrigin", "onError"];
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
+ import React, { useState, useRef, isValidElement, useEffect, useContext } from 'react';
17
+ import classNames from 'classnames';
18
+ import { AvatarContext } from "./context";
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ var Avatar = function Avatar(props) {
21
+ var _jssStyle$avatar;
22
+ var jssStyle = props.jssStyle,
23
+ className = props.className,
24
+ children = props.children,
25
+ style = props.style,
26
+ src = props.src,
27
+ alt = props.alt,
28
+ icon = props.icon,
29
+ _props$gap = props.gap,
30
+ gap = _props$gap === void 0 ? 4 : _props$gap,
31
+ shapeProp = props.shape,
32
+ srcSet = props.srcSet,
33
+ draggable = props.draggable,
34
+ sizeProp = props.size,
35
+ crossOrigin = props.crossOrigin,
36
+ onError = props.onError,
37
+ rest = _objectWithoutProperties(props, _excluded);
38
+ var _useState = useState(1),
39
+ _useState2 = _slicedToArray(_useState, 2),
40
+ scale = _useState2[0],
41
+ setScale = _useState2[1];
42
+ var _useState3 = useState(false),
43
+ _useState4 = _slicedToArray(_useState3, 2),
44
+ mounted = _useState4[0],
45
+ setMounted = _useState4[1];
46
+ var _useState5 = useState(true),
47
+ _useState6 = _slicedToArray(_useState5, 2),
48
+ isImgExist = _useState6[0],
49
+ setIsImgExist = _useState6[1];
50
+ var avatarRef = useRef(null);
51
+ var childrenRef = useRef(null);
52
+ var avatarContext = useContext(AvatarContext);
53
+ var shape = shapeProp || avatarContext.shape || 'circle';
54
+ var size = sizeProp || avatarContext.size;
55
+ var hasImageElement = /*#__PURE__*/isValidElement(src);
56
+ var avatarClasses = (jssStyle === null || jssStyle === void 0 || (_jssStyle$avatar = jssStyle.avatar) === null || _jssStyle$avatar === void 0 ? void 0 : _jssStyle$avatar.call(jssStyle)) || {};
57
+ var rootClass = classNames(className, avatarClasses.wrapper, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, avatarClasses.circle, shape === 'circle'), avatarClasses.square, shape === 'square'), avatarClasses.image, hasImageElement || src), avatarClasses.small, size === 'small'), avatarClasses.large, size === 'large'), avatarClasses.icon, !!icon));
58
+ var setScaleByChildren = function setScaleByChildren() {
59
+ if (!childrenRef.current || !avatarRef.current) return;
60
+ var avatarWidth = avatarRef.current.offsetWidth;
61
+ var childrenWidth = childrenRef.current.offsetWidth;
62
+ if (childrenWidth !== 0 && avatarWidth !== 0) {
63
+ if (gap * 2 < avatarWidth) {
64
+ setScale(avatarWidth - gap * 2 < childrenWidth ? (avatarWidth - gap * 2) / childrenWidth : 1);
65
+ }
66
+ }
67
+ };
68
+ var handleImageLoadError = function handleImageLoadError() {
69
+ var errorFlag = (onError === null || onError === void 0 ? void 0 : onError()) || false;
70
+ if (errorFlag !== false) {
71
+ setIsImgExist(false);
72
+ }
73
+ };
74
+ var renderChildren = function renderChildren() {
75
+ if (typeof src === 'string' && isImgExist) {
76
+ return /*#__PURE__*/_jsx("img", {
77
+ src: src,
78
+ alt: alt,
79
+ draggable: draggable,
80
+ srcSet: srcSet,
81
+ crossOrigin: crossOrigin,
82
+ onError: handleImageLoadError
83
+ });
84
+ }
85
+ if (hasImageElement) {
86
+ return src;
87
+ }
88
+ if (icon) {
89
+ return icon;
90
+ }
91
+ var className = classNames(icon ? avatarClasses.icon : avatarClasses.string);
92
+ if (mounted || scale !== 1) {
93
+ var transform = "scale(".concat(scale, ")");
94
+ var childrenStyle = {
95
+ transform: transform,
96
+ msTransform: transform,
97
+ WebkitTransform: transform
98
+ };
99
+ return /*#__PURE__*/_jsx("span", {
100
+ style: childrenStyle,
101
+ className: className,
102
+ ref: childrenRef,
103
+ children: children
104
+ });
105
+ }
106
+ return /*#__PURE__*/_jsx("span", {
107
+ style: {
108
+ opacity: 0
109
+ },
110
+ className: className,
111
+ ref: childrenRef,
112
+ children: children
113
+ });
114
+ };
115
+ useEffect(function () {
116
+ setMounted(true);
117
+ }, []);
118
+ useEffect(function () {
119
+ setIsImgExist(true);
120
+ setScale(1);
121
+ }, [props.src]);
122
+ useEffect(setScaleByChildren, [gap]);
123
+ return /*#__PURE__*/_jsx("span", _objectSpread(_objectSpread({
124
+ ref: avatarRef,
125
+ className: rootClass,
126
+ style: style
127
+ }, rest), {}, {
128
+ children: renderChildren()
129
+ }));
130
+ };
131
+ export default Avatar;
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { CommonType } from '../common/type';
3
+ import { PopoverClasses, PopoverProps } from '../popover/popover.type';
4
+ export interface AvatarClasses {
5
+ wrapper: string;
6
+ small: string;
7
+ large: string;
8
+ image: string;
9
+ string: string;
10
+ circle: string;
11
+ square: string;
12
+ icon: string;
13
+ text: string;
14
+ group: string;
15
+ max: string;
16
+ popover: string;
17
+ }
18
+ export interface AvatarProps extends Pick<CommonType, 'className' | 'style' | 'size'> {
19
+ jssStyle?: {
20
+ avatar: () => AvatarClasses;
21
+ };
22
+ /**
23
+ * @en The alternative text for the image
24
+ * @cn 图像无法显示时的替代文本
25
+ */
26
+ alt?: string;
27
+ /**
28
+ * @en The address of the image or the image element of the image class avatar
29
+ * @cn 图片类头像的资源地址或者图片元素
30
+ */
31
+ src?: string | React.ReactNode;
32
+ /**
33
+ * @en Set the custom icon of the avatar
34
+ * @cn 设置头像的自定义图标
35
+ */
36
+ icon?: React.ReactNode;
37
+ /**
38
+ * @en Specifies the shape of the avatar
39
+ * @cn 指定头像的形状
40
+ * @default 'circle'
41
+ */
42
+ children?: React.ReactNode;
43
+ /**
44
+ * @en The text content of the avatar, the scaling ratio will be calculated according to the content size
45
+ * @cn 头像文本内容,会根据内容尺寸自适应计算缩放比例
46
+ */
47
+ shape?: 'circle' | 'square';
48
+ /**
49
+ * @en Set the responsive resource address of the image class avatar
50
+ * @cn 设置图片类头像响应式资源地址
51
+ */
52
+ srcSet?: string;
53
+ /**
54
+ * @en The distance between the left and right edges of the character type in pixels
55
+ * @cn 字符类型距离左右两侧边界单位像素
56
+ */
57
+ gap?: number;
58
+ /**
59
+ * @en Whether the image is allowed to be dragged
60
+ * @cn 图片是否允许拖动
61
+ * @default true
62
+ */
63
+ draggable?: boolean;
64
+ /**
65
+ * @en CORS attribute setting
66
+ * @cn CORS 属性设置
67
+ */
68
+ crossOrigin?: 'anonymous' | 'use-credentials';
69
+ /**
70
+ * @en The event that the image fails to load, returning false will close the component's default fallback behavior
71
+ * @cn 图片加载失败的事件,返回 false 会关闭组件默认的 fallback 行为
72
+ */
73
+ onError?: () => boolean;
74
+ }
75
+ export interface AvatarGroupProps extends Pick<CommonType, 'className' | 'style' | 'size'>, Pick<AvatarProps, 'shape'> {
76
+ jssStyle?: {
77
+ avatar: () => AvatarClasses;
78
+ popover: () => PopoverClasses;
79
+ };
80
+ /**
81
+ * @en Set the maximum number of avatars displayed in the avatar group
82
+ * @cn 设置头像组展示头像的最大数量
83
+ */
84
+ max?: number;
85
+ /**
86
+ * @en Custom rendering of hidden avatar nodes, hideAvatarNodes is an array of hidden node dom, max is the number of hidden nodes
87
+ * @cn 自定义渲染隐藏的头像节点,hideAvatarNodes 为隐藏的节点 dom 数组,max 为隐藏的节点数量
88
+ */
89
+ renderMax?: (hideAvatarNodes: React.ReactNode[], max: number) => React.ReactNode;
90
+ /**
91
+ * @en Avatar node
92
+ * @cn 头像节点
93
+ */
94
+ children: React.ReactNode;
95
+ /**
96
+ * @en The event that the image fails to load, returning false will close the component's default fallback behavior
97
+ * @cn 用于展示隐藏头像的 Popover 相关配置,配置属性为 Popover 部分属性: position、zIndex、getPopupContainer、adjust
98
+ */
99
+ popover?: Pick<PopoverProps, 'position' | 'zIndex' | 'getPopupContainer' | 'adjust'>;
100
+ }
101
+ //# sourceMappingURL=avatar.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.type.d.ts","sourceRoot":"","sources":["avatar.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IACnF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;KAC7B,CAAC;IACF;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAC9C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACzB;AACD,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC,EACtD,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;QAC5B,OAAO,EAAE,MAAM,cAAc,CAAC;KAC/B,CAAC;IACF;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,GAAG,mBAAmB,GAAG,QAAQ,CAAC,CAAC;CACtF"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarGroupProps } from './avatar.type';
3
+ export type AvatarContextProps = Pick<AvatarGroupProps, 'shape' | 'size'>;
4
+ export declare const AvatarContext: import("react").Context<AvatarContextProps>;
5
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["context.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,aAAa,6CAAwC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { createContext } from 'react';
2
+ export var AvatarContext = /*#__PURE__*/createContext({});
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { AvatarGroupProps } from './avatar.type';
3
+ declare const AvatarGroup: (props: AvatarGroupProps) => JSX.Element;
4
+ export default AvatarGroup;
5
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["group.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AAahE,QAAA,MAAM,WAAW,UAAW,gBAAgB,gBA2C3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,74 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import React, { Children, cloneElement } from 'react';
8
+ import { AvatarContext } from "./context";
9
+ import Avatar from "./avatar";
10
+ import { Popover } from "../popover";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ var AvatarProvider = function AvatarProvider(props) {
14
+ return /*#__PURE__*/_jsx(AvatarContext.Provider, {
15
+ value: props,
16
+ children: props.children
17
+ });
18
+ };
19
+ var AvatarGroup = function AvatarGroup(props) {
20
+ var _jssStyle$avatar;
21
+ var jssStyle = props.jssStyle,
22
+ childrenProp = props.children,
23
+ size = props.size,
24
+ shape = props.shape,
25
+ max = props.max,
26
+ popover = props.popover,
27
+ renderMax = props.renderMax;
28
+ var avatarGroupClasses = (jssStyle === null || jssStyle === void 0 || (_jssStyle$avatar = jssStyle.avatar) === null || _jssStyle$avatar === void 0 ? void 0 : _jssStyle$avatar.call(jssStyle)) || {};
29
+ var children = Children.toArray(childrenProp).map(function (child, index) {
30
+ return /*#__PURE__*/cloneElement(child, {
31
+ key: "avatar-key-".concat(index)
32
+ });
33
+ });
34
+ var childrenNumber = children.length;
35
+ if (max && max < childrenNumber) {
36
+ var childrenShow = children.slice(0, max);
37
+ var childrenHidden = children.slice(max, childrenNumber);
38
+ if (renderMax) {
39
+ childrenShow.push( /*#__PURE__*/_jsx(React.Fragment, {
40
+ children: renderMax(childrenHidden, childrenHidden.length)
41
+ }, 'avatar-provider-key'));
42
+ } else {
43
+ childrenShow.push( /*#__PURE__*/_jsxs(Avatar, {
44
+ jssStyle: jssStyle,
45
+ className: avatarGroupClasses.max,
46
+ children: ["+", childrenHidden.length, /*#__PURE__*/_jsx(Popover, _objectSpread(_objectSpread({
47
+ jssStyle: jssStyle
48
+ }, popover), {}, {
49
+ children: /*#__PURE__*/_jsx("div", {
50
+ className: avatarGroupClasses.popover,
51
+ children: childrenHidden
52
+ })
53
+ }))]
54
+ }, 'avatar-provider-key'));
55
+ }
56
+ return /*#__PURE__*/_jsx(AvatarProvider, {
57
+ shape: shape,
58
+ size: size,
59
+ children: /*#__PURE__*/_jsx("div", {
60
+ className: avatarGroupClasses.group,
61
+ children: childrenShow
62
+ })
63
+ });
64
+ }
65
+ return /*#__PURE__*/_jsx(AvatarProvider, {
66
+ shape: shape,
67
+ size: size,
68
+ children: /*#__PURE__*/_jsx("div", {
69
+ className: avatarGroupClasses.group,
70
+ children: children
71
+ })
72
+ });
73
+ };
74
+ export default AvatarGroup;
@@ -0,0 +1,5 @@
1
+ export { default, default as Avatar } from './avatar';
2
+ export type { AvatarProps } from './avatar.type';
3
+ export { default as AvatarGroup } from './group';
4
+ export type { AvatarGroupProps } from './avatar.type';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ export { default, default as Avatar } from "./avatar";
3
+ export { default as AvatarGroup } from "./group";
package/esm/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './alert';
2
+ export * from './avatar';
2
3
  export * from './badge';
3
4
  export * from './breadcrumb';
4
5
  export * from './button';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
package/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  export * from "./alert";
3
+ export * from "./avatar";
3
4
  export * from "./badge";
4
5
  export * from "./breadcrumb";
5
6
  export * from "./button";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/base",
3
- "version": "3.5.0-beta.4",
3
+ "version": "3.5.0-beta.5",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -10,7 +10,7 @@
10
10
  "module": "./esm/index.js",
11
11
  "typings": "./cjs/index.d.ts",
12
12
  "dependencies": {
13
- "@sheinx/hooks": "3.5.0-beta.4",
13
+ "@sheinx/hooks": "3.5.0-beta.5",
14
14
  "immer": "^10.0.0",
15
15
  "classnames": "^2.0.0",
16
16
  "@shined/reactive": "^0.1.3-alpha.0"