musae 0.4.2 → 0.4.3

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.
@@ -12,7 +12,7 @@ var theme = require('../theme/theme.cjs');
12
12
  var relax = require('@aiszlab/relax');
13
13
  var skeleton = require('../skeleton/skeleton.cjs');
14
14
 
15
- var _excluded = ["src", "alt", "shape", "size", "className", "style"];
15
+ var _excluded = ["src", "alt", "shape", "size", "className", "style", "crossOrigin", "referrerPolicy"];
16
16
  var styles = {
17
17
  avatar: function avatar(props) {
18
18
  return [{
@@ -143,6 +143,8 @@ var Avatar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
143
143
  _size = _ref$size === void 0 ? "medium" : _ref$size,
144
144
  className$1 = _ref.className,
145
145
  style = _ref.style,
146
+ crossOrigin = _ref.crossOrigin,
147
+ referrerPolicy = _ref.referrerPolicy,
146
148
  props = _objectWithoutProperties(_ref, _excluded);
147
149
  var theme$1 = hooks.useTheme();
148
150
  var group = React.useContext(context.Context);
@@ -151,7 +153,9 @@ var Avatar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
151
153
  var shape = (_group$shape = group === null || group === void 0 ? void 0 : group.shape) !== null && _group$shape !== void 0 ? _group$shape : _shape;
152
154
  var classNames = useClassNames.useClassNames("avatar");
153
155
  var loadStatus = relax.useImageLoader({
154
- src: src
156
+ src: src,
157
+ crossOrigin: crossOrigin,
158
+ referrerPolicy: referrerPolicy
155
159
  });
156
160
  var styled = {
157
161
  avatar: stylex.default.props(theme.typography.label[size], styles.avatar({
@@ -178,7 +182,9 @@ var Avatar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
178
182
  src: src,
179
183
  alt: alt,
180
184
  className: styled.image.className,
181
- style: styled.image.style
185
+ style: styled.image.style,
186
+ crossOrigin: crossOrigin,
187
+ referrerPolicy: referrerPolicy
182
188
  })), loadStatus !== "loaded" && (alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase()));
183
189
  });
184
190
 
@@ -3,7 +3,7 @@ import React from "react";
3
3
  * @description
4
4
  * `Avatar`
5
5
  */
6
- declare const Avatar: React.ForwardRefExoticComponent<import("../../types/element").ComponentProps & {
6
+ declare const Avatar: React.ForwardRefExoticComponent<import("../../types/element").ComponentProps & Pick<import("../../types/image").ImageProps, "crossOrigin" | "referrerPolicy"> & {
7
7
  src?: string;
8
8
  alt?: string;
9
9
  size?: "small" | "medium" | "large";
@@ -10,7 +10,7 @@ import { typography } from '../theme/theme.mjs';
10
10
  import { useImageLoader, clsx } from '@aiszlab/relax';
11
11
  import Skeleton from '../skeleton/skeleton.mjs';
12
12
 
13
- var _excluded = ["src", "alt", "shape", "size", "className", "style"];
13
+ var _excluded = ["src", "alt", "shape", "size", "className", "style", "crossOrigin", "referrerPolicy"];
14
14
  var styles = {
15
15
  avatar: function avatar(props) {
16
16
  return [{
@@ -141,6 +141,8 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref, ref) {
141
141
  _size = _ref$size === void 0 ? "medium" : _ref$size,
142
142
  className = _ref.className,
143
143
  style = _ref.style,
144
+ crossOrigin = _ref.crossOrigin,
145
+ referrerPolicy = _ref.referrerPolicy,
144
146
  props = _objectWithoutProperties(_ref, _excluded);
145
147
  var theme = useTheme();
146
148
  var group = useContext(Context);
@@ -149,7 +151,9 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref, ref) {
149
151
  var shape = (_group$shape = group === null || group === void 0 ? void 0 : group.shape) !== null && _group$shape !== void 0 ? _group$shape : _shape;
150
152
  var classNames = useClassNames("avatar");
151
153
  var loadStatus = useImageLoader({
152
- src: src
154
+ src: src,
155
+ crossOrigin: crossOrigin,
156
+ referrerPolicy: referrerPolicy
153
157
  });
154
158
  var styled = {
155
159
  avatar: _stylex.props(typography.label[size], styles.avatar({
@@ -176,7 +180,9 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref, ref) {
176
180
  src: src,
177
181
  alt: alt,
178
182
  className: styled.image.className,
179
- style: styled.image.style
183
+ style: styled.image.style,
184
+ crossOrigin: crossOrigin,
185
+ referrerPolicy: referrerPolicy
180
186
  })), loadStatus !== "loaded" && (alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase()));
181
187
  });
182
188
 
@@ -74,8 +74,8 @@ var Image = function Image(_ref) {
74
74
  };
75
75
  if (status === "loading") {
76
76
  return /*#__PURE__*/React.createElement(skeleton.default, {
77
- className: styled.loading.className,
78
- style: styled.loading.style
77
+ className: relax.clsx(className$1, styled.loading.className),
78
+ style: _objectSpread(_objectSpread({}, styled.loading.style), style)
79
79
  });
80
80
  }
81
81
  return /*#__PURE__*/React.createElement(React.Fragment, null, status === "loaded" && (/*#__PURE__*/React.createElement("img", {
@@ -72,8 +72,8 @@ var Image = function Image(_ref) {
72
72
  };
73
73
  if (status === "loading") {
74
74
  return /*#__PURE__*/React.createElement(Skeleton, {
75
- className: styled.loading.className,
76
- style: styled.loading.style
75
+ className: clsx(className, styled.loading.className),
76
+ style: _objectSpread(_objectSpread({}, styled.loading.style), style)
77
77
  });
78
78
  }
79
79
  return /*#__PURE__*/React.createElement(React.Fragment, null, status === "loaded" && (/*#__PURE__*/React.createElement("img", {
@@ -100,14 +100,14 @@ var Upload = function Upload(_ref) {
100
100
  style: styled.input.style,
101
101
  multiple: multiple,
102
102
  onChange: _onChange
103
- }), children), renderItem !== false && (/*#__PURE__*/React.createElement(uploadedList.default, {
103
+ }), children), /*#__PURE__*/React.createElement(uploadedList.default, {
104
104
  ref: uploadedListRef,
105
105
  value: value,
106
106
  uploader: uploader,
107
107
  onError: onError,
108
108
  onChange: onChange,
109
109
  limit: limit
110
- }))));
110
+ })));
111
111
  };
112
112
 
113
113
  exports.default = Upload;
@@ -98,14 +98,14 @@ var Upload = function Upload(_ref) {
98
98
  style: styled.input.style,
99
99
  multiple: multiple,
100
100
  onChange: _onChange
101
- }), children), renderItem !== false && (/*#__PURE__*/React.createElement(UploadedList, {
101
+ }), children), /*#__PURE__*/React.createElement(UploadedList, {
102
102
  ref: uploadedListRef,
103
103
  value: value,
104
104
  uploader: uploader,
105
105
  onError: onError,
106
106
  onChange: onChange,
107
107
  limit: limit
108
- }))));
108
+ })));
109
109
  };
110
110
 
111
111
  export { Upload as default };
@@ -12,6 +12,7 @@ var utils = require('./utils.cjs');
12
12
  var useClassNames = require('../../hooks/use-class-names.cjs');
13
13
  var className = require('../../utils/class-name.cjs');
14
14
  var uploadedItem = require('./uploaded-item.cjs');
15
+ var context = require('./context.cjs');
15
16
 
16
17
  var styles = {
17
18
  item: {
@@ -38,6 +39,8 @@ var UploadedList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
38
39
  _useIdentity2 = _slicedToArray(_useIdentity, 2),
39
40
  identity = _useIdentity2[1];
40
41
  var classNames = useClassNames.useClassNames("upload");
42
+ var _useContext = React.useContext(context.Context),
43
+ renderItem = _useContext.renderItem;
41
44
  // convert to map, for performance
42
45
  var items = React.useMemo(function () {
43
46
  return values.reduce(function (prev, _item) {
@@ -58,11 +61,11 @@ var UploadedList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
58
61
  }, [values]);
59
62
  // when loading status changed
60
63
  // use this func to set new status & callback
61
- var onLoaded = relax.useEvent(function (id, status, _ref2) {
64
+ var onLoaded = relax.useEvent(function (uploadeds, id, status, _ref2) {
62
65
  var url = _ref2.url,
63
66
  error = _ref2.error;
64
- if (!items.has(id)) return;
65
- var _items = new Map(items);
67
+ if (!uploadeds.has(id)) return;
68
+ var _items = new Map(uploadeds);
66
69
  var _values = Array.from(_items.set(id, _objectSpread(_objectSpread({}, _items.get(id)), {}, {
67
70
  status: status,
68
71
  url: url,
@@ -75,7 +78,7 @@ var UploadedList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
75
78
  return {
76
79
  add: function () {
77
80
  var _add = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(file) {
78
- var _hasUploader, _isOnlyOne, _isOverLimit, _key, _values, _url;
81
+ var _hasUploader, _isOnlyOne, _isOverLimit, _key, _items, _values, _url;
79
82
  return _regeneratorRuntime().wrap(function _callee$(_context) {
80
83
  while (1) switch (_context.prev = _context.next) {
81
84
  case 0:
@@ -90,40 +93,41 @@ var UploadedList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
90
93
  case 5:
91
94
  // show loading in `add` trigger
92
95
  _key = identity();
93
- _values = Array.from(new Map(_isOnlyOne ? [] : items).set(_key, {
96
+ _items = new Map(_isOnlyOne ? [] : items).set(_key, {
94
97
  key: _key,
95
98
  file: file,
96
99
  status: _hasUploader ? "loading" : "success"
97
- }).values());
100
+ });
101
+ _values = Array.from(_items.values());
98
102
  setValues(_values);
99
103
  onChange === null || onChange === void 0 || onChange(_values);
100
104
  // when no uploader, use original file
101
105
  if (_hasUploader) {
102
- _context.next = 11;
106
+ _context.next = 12;
103
107
  break;
104
108
  }
105
109
  return _context.abrupt("return");
106
- case 11:
107
- _context.next = 13;
110
+ case 12:
111
+ _context.next = 14;
108
112
  return uploader(file)["catch"](function (error) {
109
113
  return new Error(error.message);
110
114
  });
111
- case 13:
115
+ case 14:
112
116
  _url = _context.sent;
113
117
  if (!(_url instanceof Error)) {
114
- _context.next = 18;
118
+ _context.next = 19;
115
119
  break;
116
120
  }
117
- onLoaded(_key, "error", {
121
+ onLoaded(_items, _key, "error", {
118
122
  error: _url
119
123
  });
120
124
  onError === null || onError === void 0 || onError(_url);
121
125
  return _context.abrupt("return");
122
- case 18:
123
- onLoaded(_key, "success", {
126
+ case 19:
127
+ onLoaded(_items, _key, "success", {
124
128
  url: _url
125
129
  });
126
- case 19:
130
+ case 20:
127
131
  case "end":
128
132
  return _context.stop();
129
133
  }
@@ -144,7 +148,8 @@ var UploadedList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
144
148
  onChange === null || onChange === void 0 || onChange(_values);
145
149
  });
146
150
  // no uploaded file, no render!
147
- if (items.size === 0) {
151
+ // no item render, no render!
152
+ if (items.size === 0 || !renderItem) {
148
153
  return null;
149
154
  }
150
155
  var styled = {
@@ -2,7 +2,7 @@ import _regeneratorRuntime from '@babel/runtime/helpers/regeneratorRuntime';
2
2
  import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
3
3
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
- import React, { forwardRef, useMemo, useImperativeHandle } from 'react';
5
+ import React, { forwardRef, useContext, useMemo, useImperativeHandle } from 'react';
6
6
  import _stylex from '../../node_modules/.pnpm/@stylexjs_stylex@0.8.0/node_modules/@stylexjs/stylex/lib/es/stylex.mjs';
7
7
  import { useControlledState, useIdentity, useEvent, clsx } from '@aiszlab/relax';
8
8
  import { typography } from '../theme/theme.mjs';
@@ -10,6 +10,7 @@ import { isRemoteFile } from './utils.mjs';
10
10
  import { useClassNames } from '../../hooks/use-class-names.mjs';
11
11
  import { UploadClassToken } from '../../utils/class-name.mjs';
12
12
  import UploadedItem from './uploaded-item.mjs';
13
+ import { Context } from './context.mjs';
13
14
 
14
15
  var styles = {
15
16
  item: {
@@ -36,6 +37,8 @@ var UploadedList = /*#__PURE__*/forwardRef(function (_ref, ref) {
36
37
  _useIdentity2 = _slicedToArray(_useIdentity, 2),
37
38
  identity = _useIdentity2[1];
38
39
  var classNames = useClassNames("upload");
40
+ var _useContext = useContext(Context),
41
+ renderItem = _useContext.renderItem;
39
42
  // convert to map, for performance
40
43
  var items = useMemo(function () {
41
44
  return values.reduce(function (prev, _item) {
@@ -56,11 +59,11 @@ var UploadedList = /*#__PURE__*/forwardRef(function (_ref, ref) {
56
59
  }, [values]);
57
60
  // when loading status changed
58
61
  // use this func to set new status & callback
59
- var onLoaded = useEvent(function (id, status, _ref2) {
62
+ var onLoaded = useEvent(function (uploadeds, id, status, _ref2) {
60
63
  var url = _ref2.url,
61
64
  error = _ref2.error;
62
- if (!items.has(id)) return;
63
- var _items = new Map(items);
65
+ if (!uploadeds.has(id)) return;
66
+ var _items = new Map(uploadeds);
64
67
  var _values = Array.from(_items.set(id, _objectSpread(_objectSpread({}, _items.get(id)), {}, {
65
68
  status: status,
66
69
  url: url,
@@ -73,7 +76,7 @@ var UploadedList = /*#__PURE__*/forwardRef(function (_ref, ref) {
73
76
  return {
74
77
  add: function () {
75
78
  var _add = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(file) {
76
- var _hasUploader, _isOnlyOne, _isOverLimit, _key, _values, _url;
79
+ var _hasUploader, _isOnlyOne, _isOverLimit, _key, _items, _values, _url;
77
80
  return _regeneratorRuntime().wrap(function _callee$(_context) {
78
81
  while (1) switch (_context.prev = _context.next) {
79
82
  case 0:
@@ -88,40 +91,41 @@ var UploadedList = /*#__PURE__*/forwardRef(function (_ref, ref) {
88
91
  case 5:
89
92
  // show loading in `add` trigger
90
93
  _key = identity();
91
- _values = Array.from(new Map(_isOnlyOne ? [] : items).set(_key, {
94
+ _items = new Map(_isOnlyOne ? [] : items).set(_key, {
92
95
  key: _key,
93
96
  file: file,
94
97
  status: _hasUploader ? "loading" : "success"
95
- }).values());
98
+ });
99
+ _values = Array.from(_items.values());
96
100
  setValues(_values);
97
101
  onChange === null || onChange === void 0 || onChange(_values);
98
102
  // when no uploader, use original file
99
103
  if (_hasUploader) {
100
- _context.next = 11;
104
+ _context.next = 12;
101
105
  break;
102
106
  }
103
107
  return _context.abrupt("return");
104
- case 11:
105
- _context.next = 13;
108
+ case 12:
109
+ _context.next = 14;
106
110
  return uploader(file)["catch"](function (error) {
107
111
  return new Error(error.message);
108
112
  });
109
- case 13:
113
+ case 14:
110
114
  _url = _context.sent;
111
115
  if (!(_url instanceof Error)) {
112
- _context.next = 18;
116
+ _context.next = 19;
113
117
  break;
114
118
  }
115
- onLoaded(_key, "error", {
119
+ onLoaded(_items, _key, "error", {
116
120
  error: _url
117
121
  });
118
122
  onError === null || onError === void 0 || onError(_url);
119
123
  return _context.abrupt("return");
120
- case 18:
121
- onLoaded(_key, "success", {
124
+ case 19:
125
+ onLoaded(_items, _key, "success", {
122
126
  url: _url
123
127
  });
124
- case 19:
128
+ case 20:
125
129
  case "end":
126
130
  return _context.stop();
127
131
  }
@@ -142,7 +146,8 @@ var UploadedList = /*#__PURE__*/forwardRef(function (_ref, ref) {
142
146
  onChange === null || onChange === void 0 || onChange(_values);
143
147
  });
144
148
  // no uploaded file, no render!
145
- if (items.size === 0) {
149
+ // no item render, no render!
150
+ if (items.size === 0 || !renderItem) {
146
151
  return null;
147
152
  }
148
153
  var styled = {
@@ -1,12 +1,13 @@
1
1
  import type { ReactNode, RefAttributes } from "react";
2
- import { ComponentProps } from "musae/types/element";
2
+ import type { ComponentProps } from "musae/types/element";
3
+ import type { ImageProps } from "./image";
3
4
  type Size = "small" | "medium" | "large";
4
5
  type Shape = "circular" | "squared";
5
6
  /**
6
7
  * @description
7
8
  * avatar props
8
9
  */
9
- export type AvatarProps = ComponentProps & {
10
+ export type AvatarProps = ComponentProps & Pick<ImageProps, "crossOrigin" | "referrerPolicy"> & {
10
11
  /**
11
12
  * @description
12
13
  * src
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "musae",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "musae-ui",
5
5
  "author": "tutu@fantufantu.com",
6
6
  "license": "MIT",