@wangtaizong/components 1.0.7 → 1.1.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.
Files changed (68) hide show
  1. package/dist/index.js +285 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/index.min.js +2 -0
  4. package/dist/index.min.js.map +1 -0
  5. package/es/Button/index.d.ts +9 -0
  6. package/es/Button/index.js +25 -0
  7. package/es/Icon/index.d.ts +9 -0
  8. package/es/Icon/index.js +25 -0
  9. package/es/Upload/index.d.ts +16 -0
  10. package/es/Upload/index.js +221 -0
  11. package/es/antd/index.js +2 -0
  12. package/es/index.js +5 -0
  13. package/lib/Button/index.d.ts +9 -0
  14. package/lib/Button/index.js +29 -0
  15. package/lib/Icon/index.d.ts +9 -0
  16. package/lib/Icon/index.js +48 -0
  17. package/lib/Upload/index.d.ts +16 -0
  18. package/lib/Upload/index.js +243 -0
  19. package/lib/antd/index.d.ts +2 -0
  20. package/lib/antd/index.js +28 -0
  21. package/lib/index.d.ts +5 -0
  22. package/lib/index.js +32 -0
  23. package/package.json +40 -68
  24. package/.changeset/README.md +0 -8
  25. package/.changeset/config.json +0 -11
  26. package/.dumirc.ts +0 -28
  27. package/.editorconfig +0 -13
  28. package/.eslintrc.js +0 -3
  29. package/.husky/commit-msg +0 -5
  30. package/.husky/pre-commit +0 -8
  31. package/.husky/pre-push +0 -8
  32. package/.prettierignore +0 -2
  33. package/.prettierrc.js +0 -19
  34. package/.stylelintrc +0 -3
  35. package/.vscode/settings.json +0 -3
  36. package/README.md +0 -0
  37. package/commitlint.config.js +0 -21
  38. package/docs/changelogs/index.md +0 -9
  39. package/docs/components/index.md +0 -1
  40. package/docs/guide/install.md +0 -39
  41. package/docs/index.md +0 -21
  42. package/docs/utils/index.md +0 -1
  43. package/lerna.json +0 -8
  44. package/packages/components/CHANGELOG.md +0 -0
  45. package/packages/components/package.json +0 -48
  46. package/packages/components/rollup.config.mjs +0 -108
  47. package/packages/components/src/Button/index.md +0 -13
  48. package/packages/components/src/Button/index.tsx +0 -34
  49. package/packages/components/src/Icon/index.md +0 -81
  50. package/packages/components/src/Icon/index.tsx +0 -34
  51. package/packages/components/src/Upload/index.md +0 -209
  52. package/packages/components/src/Upload/index.tsx +0 -218
  53. package/packages/components/src/antd/index.md +0 -12
  54. package/packages/components/src/index.md +0 -23
  55. package/packages/components/tsconfig.json +0 -32
  56. package/packages/utils/README.md +0 -11
  57. package/packages/utils/package.json +0 -35
  58. package/packages/utils/rollup.config.mjs +0 -63
  59. package/packages/utils/src/CHRRequest/index.md +0 -59
  60. package/packages/utils/src/CHRRequest/index.ts +0 -94
  61. package/packages/utils/src/index.ts +0 -17
  62. package/packages/utils/tsconfig.json +0 -28
  63. package/pnpm-workspace.yaml +0 -8
  64. package/public/favicon.ico +0 -0
  65. package/public/logo.webp +0 -0
  66. package/tsconfig.json +0 -14
  67. /package/{packages/components/src/antd/index.tsx → es/antd/index.d.ts} +0 -0
  68. /package/{packages/components/src/index.ts → es/index.d.ts} +0 -0
package/dist/index.js ADDED
@@ -0,0 +1,285 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('react/jsx-runtime'), require('antd'), require('@ant-design/icons'), require('react')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'tslib', 'react/jsx-runtime', 'antd', '@ant-design/icons', 'react'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.KcComponents = {}, global.tslib, global.jsxRuntime, global.antd, global.Icons, global.React));
5
+ })(this, (function (exports, tslib, jsxRuntime, antd, Icons, react) { 'use strict';
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var antd__namespace = /*#__PURE__*/_interopNamespaceDefault(antd);
25
+ var Icons__namespace = /*#__PURE__*/_interopNamespaceDefault(Icons);
26
+
27
+ var CHRButton = function CHRButton(_a) {
28
+ var children = _a.children,
29
+ title = _a.title,
30
+ _b = _a.defaultText,
31
+ defaultText = _b === void 0 ? '按钮' : _b,
32
+ onClick = _a.onClick,
33
+ restProps = tslib.__rest(_a, ["children", "title", "defaultText", "onClick"]);
34
+ var handleClick = function handleClick(e) {
35
+ console.log('CHRButton 内部点击处理');
36
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
37
+ };
38
+ // 决定显示内容
39
+ var content;
40
+ content = children !== undefined ? children : title || defaultText;
41
+ return jsxRuntime.jsx(antd.Button, tslib.__assign({}, restProps, {
42
+ onClick: handleClick,
43
+ children: content
44
+ }));
45
+ };
46
+
47
+ var CHRIcon = function CHRIcon(_a) {
48
+ var icon = _a.icon,
49
+ _b = _a.fontSize,
50
+ fontSize = _b === void 0 ? 20 : _b,
51
+ className = _a.className,
52
+ style = _a.style;
53
+ var IconComponent = Icons__namespace[icon];
54
+ if (!IconComponent) {
55
+ console.warn("Icon \"".concat(icon, "\" is not a valid icon component"));
56
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
57
+ }
58
+ return jsxRuntime.jsx(IconComponent, {
59
+ className: className,
60
+ style: tslib.__assign({
61
+ fontSize: fontSize + 'px',
62
+ cursor: 'pointer'
63
+ }, style)
64
+ });
65
+ };
66
+
67
+ var CHRUpload = function CHRUpload(_a) {
68
+ var value = _a.value,
69
+ children = _a.children,
70
+ _b = _a.uploadType,
71
+ uploadType = _b === void 0 ? 'file' : _b,
72
+ url = _a.url,
73
+ token = _a.token,
74
+ _c = _a.maxCount,
75
+ maxCount = _c === void 0 ? 1 : _c,
76
+ limit = _a.limit,
77
+ acceptProp = _a.accept,
78
+ handleChange = _a.handleChange,
79
+ restProps = tslib.__rest(_a, ["value", "children", "uploadType", "url", "token", "maxCount", "limit", "accept", "handleChange"]);
80
+ var className = restProps.className;
81
+ var _d = react.useState(value || []),
82
+ fileList = _d[0],
83
+ setFileList = _d[1];
84
+ var _e = react.useState(false),
85
+ previewOpen = _e[0],
86
+ setPreviewOpen = _e[1];
87
+ var _f = react.useState(''),
88
+ previewImage = _f[0],
89
+ setPreviewImage = _f[1];
90
+ var getDefaultAccept = react.useCallback(function () {
91
+ if (uploadType === 'avatar') return 'image/*';
92
+ return undefined;
93
+ }, [uploadType]);
94
+ var getDefaultLimit = react.useCallback(function () {
95
+ if (uploadType === 'avatar') return 2;
96
+ if (uploadType === 'file') return 10;
97
+ return undefined;
98
+ }, [uploadType]);
99
+ var finalAccept = acceptProp !== null && acceptProp !== void 0 ? acceptProp : getDefaultAccept();
100
+ var finalLimit = limit !== null && limit !== void 0 ? limit : getDefaultLimit();
101
+ var beforeUpload = react.useCallback(function (file) {
102
+ if (finalLimit) {
103
+ var isLimit = file.size / 1024 / 1024 < finalLimit;
104
+ if (!isLimit) {
105
+ antd__namespace.message.error("\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ".concat(finalLimit, "MB"));
106
+ return antd__namespace.Upload.LIST_IGNORE;
107
+ }
108
+ }
109
+ if (finalAccept) {
110
+ var acceptList = finalAccept.split(',').map(function (item) {
111
+ return item.trim();
112
+ });
113
+ var fileType_1 = file.type;
114
+ var fileName_1 = file.name;
115
+ var isAccept = acceptList.some(function (accept) {
116
+ if (accept.endsWith('/*')) {
117
+ var mainType = accept.replace('/*', '');
118
+ return fileType_1.startsWith(mainType + '/');
119
+ }
120
+ if (accept.startsWith('.')) {
121
+ return fileName_1.endsWith(accept);
122
+ }
123
+ return fileType_1 === accept;
124
+ });
125
+ if (!isAccept && acceptList.length > 0) {
126
+ antd__namespace.message.error("\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B\uFF0C\u4EC5\u652F\u6301 ".concat(finalAccept));
127
+ return antd__namespace.Upload.LIST_IGNORE;
128
+ }
129
+ }
130
+ return true;
131
+ }, [finalLimit, finalAccept]);
132
+ var handleUploadChange = react.useCallback(function (info) {
133
+ var _a;
134
+ var file = info.file,
135
+ newFileList = info.fileList;
136
+ var fileUrl = file.url;
137
+ if (file.response) {
138
+ fileUrl = ((_a = file.response.file) === null || _a === void 0 ? void 0 : _a.url) || file.response.url;
139
+ }
140
+ // 1. 状态提示
141
+ if (file.status === 'done') {
142
+ antd__namespace.message.success("".concat(file.name, " \u4E0A\u4F20\u6210\u529F"));
143
+ file.url = fileUrl;
144
+ } else if (file.status === 'error') {
145
+ antd__namespace.message.error("".concat(file.name, " \u4E0A\u4F20\u5931\u8D25"));
146
+ file.status = 'error';
147
+ }
148
+ var finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;
149
+ finalFileList = finalFileList.map(function (item) {
150
+ if (item.uid === file.uid) {
151
+ return tslib.__assign(tslib.__assign({}, item), {
152
+ url: fileUrl,
153
+ status: file.status
154
+ });
155
+ }
156
+ return item;
157
+ });
158
+ setFileList(finalFileList);
159
+ var simplifiedList = finalFileList.map(function (e) {
160
+ return {
161
+ uid: e.uid,
162
+ name: e.name,
163
+ url: e.url || '',
164
+ status: e.status
165
+ };
166
+ });
167
+ handleChange === null || handleChange === void 0 ? void 0 : handleChange(file, simplifiedList);
168
+ }, [maxCount, handleChange]);
169
+ var headers = react.useMemo(function () {
170
+ if (token) {
171
+ return {
172
+ Authorization: "Bearer ".concat(token)
173
+ };
174
+ }
175
+ return undefined;
176
+ }, [token]);
177
+ var getBase64 = function getBase64(file) {
178
+ return new Promise(function (resolve, reject) {
179
+ var reader = new FileReader();
180
+ reader.readAsDataURL(file);
181
+ reader.onload = function () {
182
+ return resolve(reader.result);
183
+ };
184
+ reader.onerror = function (error) {
185
+ return reject(error);
186
+ };
187
+ });
188
+ };
189
+ var handlePreview = react.useCallback(function (file) {
190
+ return tslib.__awaiter(void 0, void 0, void 0, function () {
191
+ var _a;
192
+ return tslib.__generator(this, function (_b) {
193
+ switch (_b.label) {
194
+ case 0:
195
+ if (!(!file.url && !file.preview && file.originFileObj)) return [3 /*break*/, 2];
196
+ _a = file;
197
+ return [4 /*yield*/, getBase64(file.originFileObj)];
198
+ case 1:
199
+ _a.preview = _b.sent();
200
+ _b.label = 2;
201
+ case 2:
202
+ setPreviewImage(file.url || file.preview);
203
+ setPreviewOpen(true);
204
+ return [2 /*return*/];
205
+ }
206
+ });
207
+ });
208
+ }, []);
209
+ var avatarUploadButton = jsxRuntime.jsxs("button", {
210
+ style: {
211
+ border: 0,
212
+ background: 'none'
213
+ },
214
+ type: "button",
215
+ children: [jsxRuntime.jsx(CHRIcon, {
216
+ icon: "PlusOutlined"
217
+ }), jsxRuntime.jsx("div", {
218
+ style: {
219
+ marginTop: 8
220
+ },
221
+ children: "\u4E0A\u4F20"
222
+ })]
223
+ });
224
+ var renderByType = function renderByType() {
225
+ if (uploadType === 'avatar') {
226
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
227
+ children: [jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
228
+ name: "file",
229
+ listType: "picture-card",
230
+ className: className,
231
+ action: url,
232
+ headers: headers,
233
+ accept: finalAccept,
234
+ fileList: fileList,
235
+ beforeUpload: beforeUpload,
236
+ onChange: handleUploadChange,
237
+ onPreview: handlePreview,
238
+ maxCount: 1
239
+ }, restProps, {
240
+ children: fileList.length >= 1 ? null : avatarUploadButton
241
+ })), previewImage && jsxRuntime.jsx(antd.Image, {
242
+ style: {
243
+ display: 'none'
244
+ },
245
+ preview: {
246
+ open: previewOpen,
247
+ onOpenChange: function onOpenChange(visible) {
248
+ return setPreviewOpen(visible);
249
+ },
250
+ afterOpenChange: function afterOpenChange(visible) {
251
+ return !visible && setPreviewImage('');
252
+ }
253
+ },
254
+ src: previewImage
255
+ })]
256
+ });
257
+ }
258
+ return jsxRuntime.jsx(antd__namespace.Upload, tslib.__assign({
259
+ className: className,
260
+ action: url,
261
+ headers: headers,
262
+ accept: finalAccept,
263
+ beforeUpload: beforeUpload,
264
+ fileList: fileList,
265
+ onChange: handleUploadChange,
266
+ maxCount: maxCount,
267
+ multiple: maxCount > 1
268
+ }, restProps, {
269
+ children: children || jsxRuntime.jsxs(CHRButton, {
270
+ children: [jsxRuntime.jsx(CHRIcon, {
271
+ icon: "UploadOutlined"
272
+ }), "\u4E0A\u4F20\u6587\u4EF6"]
273
+ })
274
+ }));
275
+ };
276
+ return renderByType();
277
+ };
278
+
279
+ exports.antd = antd__namespace;
280
+ exports.CHRButton = CHRButton;
281
+ exports.CHRIcon = CHRIcon;
282
+ exports.CHRUpload = CHRUpload;
283
+
284
+ }));
285
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/Button/index.tsx","../src/Icon/index.tsx","../src/Upload/index.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport React, { type FC, ReactNode } from 'react';\n\ninterface CHRButtonProps {\n children?: ReactNode;\n title?: string;\n defaultText?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst CHRButton: FC<CHRButtonProps> = ({\n children,\n title,\n defaultText = '按钮',\n onClick,\n ...restProps\n}) => {\n const handleClick: React.MouseEventHandler<HTMLElement> = (e) => {\n console.log('CHRButton 内部点击处理');\n onClick?.(e);\n };\n\n // 决定显示内容\n let content: ReactNode;\n content = children !== undefined ? children : title || defaultText;\n\n return (\n <Button {...restProps} onClick={handleClick}>\n {content}\n </Button>\n );\n};\n\nexport default CHRButton;\n","import * as Icons from '@ant-design/icons';\nimport React, { FC } from 'react';\n\ninterface ChrIconProps {\n icon: string;\n fontSize?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CHRIcon: FC<ChrIconProps> = ({\n icon,\n fontSize = 20,\n className,\n style,\n}) => {\n const IconComponent = (Icons as any)[icon];\n if (!IconComponent) {\n console.warn(`Icon \"${icon}\" is not a valid icon component`);\n return <></>;\n }\n return (\n <IconComponent\n className={className}\n style={{\n fontSize: fontSize + 'px',\n cursor: 'pointer',\n ...style,\n }}\n />\n );\n};\n\nexport default CHRIcon;\n","import { Image } from 'antd';\nimport type { UploadProps } from 'antd/es/upload';\nimport type { UploadChangeParam, UploadFile } from 'antd/es/upload/interface';\nimport { ReactNode, useCallback, useMemo, useState } from 'react';\nimport { antd, CHRButton, CHRIcon } from '..';\n\ninterface CHRUploadProps {\n children?: ReactNode;\n uploadType?: 'avatar' | 'file';\n url?: string;\n token?: string;\n maxCount?: number;\n limit?: number;\n accept?: string;\n handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;\n value: UploadFile[];\n}\n\nconst CHRUpload = ({\n value,\n children,\n uploadType = 'file',\n url,\n token,\n maxCount = 1,\n limit,\n accept: acceptProp,\n handleChange,\n ...restProps\n}: CHRUploadProps &\n Omit<\n UploadProps,\n 'onChange' | 'fileList' | 'action' | 'headers' | 'accept' | 'maxCount'\n >) => {\n const className = restProps.className;\n const [fileList, setFileList] = useState<UploadFile[]>(value || []);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState('');\n\n const getDefaultAccept = useCallback(() => {\n if (uploadType === 'avatar') return 'image/*';\n return undefined;\n }, [uploadType]);\n\n const getDefaultLimit = useCallback(() => {\n if (uploadType === 'avatar') return 2;\n if (uploadType === 'file') return 10;\n return undefined;\n }, [uploadType]);\n\n const finalAccept = acceptProp ?? getDefaultAccept();\n const finalLimit = limit ?? getDefaultLimit();\n\n const beforeUpload = useCallback(\n (file: File) => {\n if (finalLimit) {\n const isLimit = file.size / 1024 / 1024 < finalLimit;\n if (!isLimit) {\n antd.message.error(`文件大小不能超过 ${finalLimit}MB`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n if (finalAccept) {\n const acceptList = finalAccept.split(',').map((item) => item.trim());\n const fileType = file.type;\n const fileName = file.name;\n const isAccept = acceptList.some((accept) => {\n if (accept.endsWith('/*')) {\n const mainType = accept.replace('/*', '');\n return fileType.startsWith(mainType + '/');\n }\n if (accept.startsWith('.')) {\n return fileName.endsWith(accept);\n }\n return fileType === accept;\n });\n if (!isAccept && acceptList.length > 0) {\n antd.message.error(`不支持的文件类型,仅支持 ${finalAccept}`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n return true;\n },\n [finalLimit, finalAccept],\n );\n\n const handleUploadChange = useCallback(\n (info: UploadChangeParam<UploadFile>) => {\n const { file, fileList: newFileList } = info;\n\n let fileUrl = file.url;\n if (file.response) {\n fileUrl = file.response.file?.url || file.response.url;\n }\n\n // 1. 状态提示\n if (file.status === 'done') {\n antd.message.success(`${file.name} 上传成功`);\n file.url = fileUrl;\n } else if (file.status === 'error') {\n antd.message.error(`${file.name} 上传失败`);\n file.status = 'error';\n }\n\n let finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;\n\n finalFileList = finalFileList.map((item) => {\n if (item.uid === file.uid) {\n return { ...item, url: fileUrl, status: file.status };\n }\n return item;\n });\n\n setFileList(finalFileList);\n\n const simplifiedList = finalFileList.map((e: UploadFile) => ({\n uid: e.uid,\n name: e.name,\n url: e.url || '',\n status: e.status,\n }));\n handleChange?.(file, simplifiedList);\n },\n [maxCount, handleChange],\n );\n\n const headers = useMemo(() => {\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return undefined;\n }, [token]);\n\n const getBase64 = (file: File): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = useCallback(async (file: UploadFile) => {\n if (!file.url && !file.preview && file.originFileObj) {\n file.preview = await getBase64(file.originFileObj as File);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n }, []);\n\n const avatarUploadButton = (\n <button style={{ border: 0, background: 'none' }} type=\"button\">\n <CHRIcon icon=\"PlusOutlined\" />\n <div style={{ marginTop: 8 }}>上传</div>\n </button>\n );\n\n const renderByType = () => {\n if (uploadType === 'avatar') {\n return (\n <>\n <antd.Upload\n name=\"file\"\n listType=\"picture-card\"\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n fileList={fileList}\n beforeUpload={beforeUpload}\n onChange={handleUploadChange}\n onPreview={handlePreview}\n maxCount={1}\n {...restProps}\n >\n {fileList.length >= 1 ? null : avatarUploadButton}\n </antd.Upload>\n {previewImage && (\n <Image\n style={{ display: 'none' }}\n preview={{\n open: previewOpen,\n onOpenChange: (visible) => setPreviewOpen(visible),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n )}\n </>\n );\n }\n\n return (\n <antd.Upload\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n beforeUpload={beforeUpload}\n fileList={fileList}\n onChange={handleUploadChange}\n maxCount={maxCount}\n multiple={maxCount > 1}\n {...restProps}\n >\n {children || (\n <CHRButton>\n <CHRIcon icon=\"UploadOutlined\" />\n 上传文件\n </CHRButton>\n )}\n </antd.Upload>\n );\n };\n\n return renderByType();\n};\n\nexport default CHRUpload;\n"],"names":["CHRButton","_a","children","title","_b","defaultText","onClick","restProps","__rest","handleClick","e","console","log","content","undefined","_jsx","Button","__assign","CHRIcon","icon","fontSize","className","style","IconComponent","Icons","warn","cursor","CHRUpload","value","uploadType","url","token","_c","maxCount","limit","acceptProp","accept","handleChange","_d","useState","fileList","setFileList","_e","previewOpen","setPreviewOpen","_f","previewImage","setPreviewImage","getDefaultAccept","useCallback","getDefaultLimit","finalAccept","finalLimit","beforeUpload","file","isLimit","size","antd","message","error","concat","Upload","LIST_IGNORE","acceptList","split","map","item","trim","fileType_1","type","fileName_1","name","isAccept","some","endsWith","mainType","replace","startsWith","length","handleUploadChange","info","newFileList","fileUrl","response","status","success","finalFileList","slice","uid","simplifiedList","headers","useMemo","Authorization","getBase64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","__awaiter","preview","originFileObj","sent","avatarUploadButton","_jsxs","border","background","marginTop","renderByType","_Fragment","listType","action","onChange","onPreview","Image","display","open","onOpenChange","visible","afterOpenChange","src","multiple"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("tslib"),require("react/jsx-runtime"),require("antd"),require("@ant-design/icons"),require("react")):"function"==typeof define&&define.amd?define(["exports","tslib","react/jsx-runtime","antd","@ant-design/icons","react"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).KcComponents={},e.tslib,e.jsxRuntime,e.antd,e.Icons,e.react)}(this,(function(e,n,t,r,a,i){"use strict";function o(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var s=o(r),u=o(a),l=function(e){var a,i=e.children,o=e.title,s=e.defaultText,u=void 0===s?"按钮":s,l=e.onClick,c=n.__rest(e,["children","title","defaultText","onClick"]);return a=void 0!==i?i:o||u,t.jsx(r.Button,n.__assign({},c,{onClick:function(e){console.log("CHRButton 内部点击处理"),null==l||l(e)},children:a}))},c=function(e){var r=e.icon,a=e.fontSize,i=void 0===a?20:a,o=e.className,s=e.style,l=u[r];return l?t.jsx(l,{className:o,style:n.__assign({fontSize:i+"px",cursor:"pointer"},s)}):(console.warn('Icon "'.concat(r,'" is not a valid icon component')),t.jsx(t.Fragment,{}))};e.antd=s,e.CHRButton=l,e.CHRIcon=c,e.CHRUpload=function(e){var a=e.value,o=e.children,u=e.uploadType,d=void 0===u?"file":u,f=e.url,p=e.token,m=e.maxCount,v=void 0===m?1:m,g=e.limit,h=e.accept,b=e.handleChange,x=n.__rest(e,["value","children","uploadType","url","token","maxCount","limit","accept","handleChange"]),j=x.className,C=i.useState(a||[]),_=C[0],y=C[1],O=i.useState(!1),k=O[0],w=O[1],T=i.useState(""),R=T[0],U=T[1],I=i.useCallback((function(){if("avatar"===d)return"image/*"}),[d]),N=i.useCallback((function(){return"avatar"===d?2:"file"===d?10:void 0}),[d]),S=null!=h?h:I(),L=null!=g?g:N(),q=i.useCallback((function(e){if(L&&!(e.size/1024/1024<L))return s.message.error("文件大小不能超过 ".concat(L,"MB")),s.Upload.LIST_IGNORE;if(S){var n=S.split(",").map((function(e){return e.trim()})),t=e.type,r=e.name;if(!n.some((function(e){if(e.endsWith("/*")){var n=e.replace("/*","");return t.startsWith(n+"/")}return e.startsWith(".")?r.endsWith(e):t===e}))&&n.length>0)return s.message.error("不支持的文件类型,仅支持 ".concat(S)),s.Upload.LIST_IGNORE}return!0}),[L,S]),z=i.useCallback((function(e){var t,r=e.file,a=e.fileList,i=r.url;r.response&&(i=(null===(t=r.response.file)||void 0===t?void 0:t.url)||r.response.url),"done"===r.status?(s.message.success("".concat(r.name," 上传成功")),r.url=i):"error"===r.status&&(s.message.error("".concat(r.name," 上传失败")),r.status="error");var o=v?a.slice(-v):a;o=o.map((function(e){return e.uid===r.uid?n.__assign(n.__assign({},e),{url:i,status:r.status}):e})),y(o);var u=o.map((function(e){return{uid:e.uid,name:e.name,url:e.url||"",status:e.status}}));null==b||b(r,u)}),[v,b]),B=i.useMemo((function(){if(p)return{Authorization:"Bearer ".concat(p)}}),[p]),F=function(e){return new Promise((function(n,t){var r=new FileReader;r.readAsDataURL(e),r.onload=function(){return n(r.result)},r.onerror=function(e){return t(e)}}))},P=i.useCallback((function(e){return n.__awaiter(void 0,void 0,void 0,(function(){var t;return n.__generator(this,(function(n){switch(n.label){case 0:return e.url||e.preview||!e.originFileObj?[3,2]:(t=e,[4,F(e.originFileObj)]);case 1:t.preview=n.sent(),n.label=2;case 2:return U(e.url||e.preview),w(!0),[2]}}))}))}),[]),H=t.jsxs("button",{style:{border:0,background:"none"},type:"button",children:[t.jsx(c,{icon:"PlusOutlined"}),t.jsx("div",{style:{marginTop:8},children:"上传"})]});return"avatar"===d?t.jsxs(t.Fragment,{children:[t.jsx(s.Upload,n.__assign({name:"file",listType:"picture-card",className:j,action:f,headers:B,accept:S,fileList:_,beforeUpload:q,onChange:z,onPreview:P,maxCount:1},x,{children:_.length>=1?null:H})),R&&t.jsx(r.Image,{style:{display:"none"},preview:{open:k,onOpenChange:function(e){return w(e)},afterOpenChange:function(e){return!e&&U("")}},src:R})]}):t.jsx(s.Upload,n.__assign({className:j,action:f,headers:B,accept:S,beforeUpload:q,fileList:_,onChange:z,maxCount:v,multiple:v>1},x,{children:o||t.jsxs(l,{children:[t.jsx(c,{icon:"UploadOutlined"}),"上传文件"]})}))}}));
2
+ //# sourceMappingURL=index.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.min.js","sources":["../src/Button/index.tsx","../src/Icon/index.tsx","../src/Upload/index.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport React, { type FC, ReactNode } from 'react';\n\ninterface CHRButtonProps {\n children?: ReactNode;\n title?: string;\n defaultText?: string;\n onClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nconst CHRButton: FC<CHRButtonProps> = ({\n children,\n title,\n defaultText = '按钮',\n onClick,\n ...restProps\n}) => {\n const handleClick: React.MouseEventHandler<HTMLElement> = (e) => {\n console.log('CHRButton 内部点击处理');\n onClick?.(e);\n };\n\n // 决定显示内容\n let content: ReactNode;\n content = children !== undefined ? children : title || defaultText;\n\n return (\n <Button {...restProps} onClick={handleClick}>\n {content}\n </Button>\n );\n};\n\nexport default CHRButton;\n","import * as Icons from '@ant-design/icons';\nimport React, { FC } from 'react';\n\ninterface ChrIconProps {\n icon: string;\n fontSize?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CHRIcon: FC<ChrIconProps> = ({\n icon,\n fontSize = 20,\n className,\n style,\n}) => {\n const IconComponent = (Icons as any)[icon];\n if (!IconComponent) {\n console.warn(`Icon \"${icon}\" is not a valid icon component`);\n return <></>;\n }\n return (\n <IconComponent\n className={className}\n style={{\n fontSize: fontSize + 'px',\n cursor: 'pointer',\n ...style,\n }}\n />\n );\n};\n\nexport default CHRIcon;\n","import { Image } from 'antd';\nimport type { UploadProps } from 'antd/es/upload';\nimport type { UploadChangeParam, UploadFile } from 'antd/es/upload/interface';\nimport { ReactNode, useCallback, useMemo, useState } from 'react';\nimport { antd, CHRButton, CHRIcon } from '..';\n\ninterface CHRUploadProps {\n children?: ReactNode;\n uploadType?: 'avatar' | 'file';\n url?: string;\n token?: string;\n maxCount?: number;\n limit?: number;\n accept?: string;\n handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;\n value: UploadFile[];\n}\n\nconst CHRUpload = ({\n value,\n children,\n uploadType = 'file',\n url,\n token,\n maxCount = 1,\n limit,\n accept: acceptProp,\n handleChange,\n ...restProps\n}: CHRUploadProps &\n Omit<\n UploadProps,\n 'onChange' | 'fileList' | 'action' | 'headers' | 'accept' | 'maxCount'\n >) => {\n const className = restProps.className;\n const [fileList, setFileList] = useState<UploadFile[]>(value || []);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [previewImage, setPreviewImage] = useState('');\n\n const getDefaultAccept = useCallback(() => {\n if (uploadType === 'avatar') return 'image/*';\n return undefined;\n }, [uploadType]);\n\n const getDefaultLimit = useCallback(() => {\n if (uploadType === 'avatar') return 2;\n if (uploadType === 'file') return 10;\n return undefined;\n }, [uploadType]);\n\n const finalAccept = acceptProp ?? getDefaultAccept();\n const finalLimit = limit ?? getDefaultLimit();\n\n const beforeUpload = useCallback(\n (file: File) => {\n if (finalLimit) {\n const isLimit = file.size / 1024 / 1024 < finalLimit;\n if (!isLimit) {\n antd.message.error(`文件大小不能超过 ${finalLimit}MB`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n if (finalAccept) {\n const acceptList = finalAccept.split(',').map((item) => item.trim());\n const fileType = file.type;\n const fileName = file.name;\n const isAccept = acceptList.some((accept) => {\n if (accept.endsWith('/*')) {\n const mainType = accept.replace('/*', '');\n return fileType.startsWith(mainType + '/');\n }\n if (accept.startsWith('.')) {\n return fileName.endsWith(accept);\n }\n return fileType === accept;\n });\n if (!isAccept && acceptList.length > 0) {\n antd.message.error(`不支持的文件类型,仅支持 ${finalAccept}`);\n return antd.Upload.LIST_IGNORE;\n }\n }\n return true;\n },\n [finalLimit, finalAccept],\n );\n\n const handleUploadChange = useCallback(\n (info: UploadChangeParam<UploadFile>) => {\n const { file, fileList: newFileList } = info;\n\n let fileUrl = file.url;\n if (file.response) {\n fileUrl = file.response.file?.url || file.response.url;\n }\n\n // 1. 状态提示\n if (file.status === 'done') {\n antd.message.success(`${file.name} 上传成功`);\n file.url = fileUrl;\n } else if (file.status === 'error') {\n antd.message.error(`${file.name} 上传失败`);\n file.status = 'error';\n }\n\n let finalFileList = maxCount ? newFileList.slice(-maxCount) : newFileList;\n\n finalFileList = finalFileList.map((item) => {\n if (item.uid === file.uid) {\n return { ...item, url: fileUrl, status: file.status };\n }\n return item;\n });\n\n setFileList(finalFileList);\n\n const simplifiedList = finalFileList.map((e: UploadFile) => ({\n uid: e.uid,\n name: e.name,\n url: e.url || '',\n status: e.status,\n }));\n handleChange?.(file, simplifiedList);\n },\n [maxCount, handleChange],\n );\n\n const headers = useMemo(() => {\n if (token) {\n return { Authorization: `Bearer ${token}` };\n }\n return undefined;\n }, [token]);\n\n const getBase64 = (file: File): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n\n const handlePreview = useCallback(async (file: UploadFile) => {\n if (!file.url && !file.preview && file.originFileObj) {\n file.preview = await getBase64(file.originFileObj as File);\n }\n setPreviewImage(file.url || (file.preview as string));\n setPreviewOpen(true);\n }, []);\n\n const avatarUploadButton = (\n <button style={{ border: 0, background: 'none' }} type=\"button\">\n <CHRIcon icon=\"PlusOutlined\" />\n <div style={{ marginTop: 8 }}>上传</div>\n </button>\n );\n\n const renderByType = () => {\n if (uploadType === 'avatar') {\n return (\n <>\n <antd.Upload\n name=\"file\"\n listType=\"picture-card\"\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n fileList={fileList}\n beforeUpload={beforeUpload}\n onChange={handleUploadChange}\n onPreview={handlePreview}\n maxCount={1}\n {...restProps}\n >\n {fileList.length >= 1 ? null : avatarUploadButton}\n </antd.Upload>\n {previewImage && (\n <Image\n style={{ display: 'none' }}\n preview={{\n open: previewOpen,\n onOpenChange: (visible) => setPreviewOpen(visible),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n )}\n </>\n );\n }\n\n return (\n <antd.Upload\n className={className}\n action={url}\n headers={headers}\n accept={finalAccept}\n beforeUpload={beforeUpload}\n fileList={fileList}\n onChange={handleUploadChange}\n maxCount={maxCount}\n multiple={maxCount > 1}\n {...restProps}\n >\n {children || (\n <CHRButton>\n <CHRIcon icon=\"UploadOutlined\" />\n 上传文件\n </CHRButton>\n )}\n </antd.Upload>\n );\n };\n\n return renderByType();\n};\n\nexport default CHRUpload;\n"],"names":["CHRButton","_a","content","children","title","_b","defaultText","onClick","restProps","__rest","undefined","_jsx","jsx","Button","__assign","e","console","log","CHRIcon","icon","fontSize","className","style","IconComponent","Icons","cursor","warn","value","uploadType","url","token","_c","maxCount","limit","acceptProp","accept","handleChange","_d","useState","fileList","setFileList","_e","previewOpen","setPreviewOpen","_f","previewImage","setPreviewImage","getDefaultAccept","useCallback","getDefaultLimit","finalAccept","finalLimit","beforeUpload","file","size","antd","message","error","concat","Upload","LIST_IGNORE","acceptList","split","map","item","trim","fileType_1","type","fileName_1","name","some","endsWith","mainType","replace","startsWith","length","handleUploadChange","info","newFileList","fileUrl","response","status","success","finalFileList","slice","uid","simplifiedList","headers","useMemo","Authorization","getBase64","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","handlePreview","__awaiter","preview","originFileObj","sent","avatarUploadButton","_jsxs","jsxs","border","background","marginTop","_Fragment","listType","action","onChange","onPreview","Image","display","open","onOpenChange","visible","afterOpenChange","src","multiple"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React, { type FC, ReactNode } from 'react';
2
+ interface CHRButtonProps {
3
+ children?: ReactNode;
4
+ title?: string;
5
+ defaultText?: string;
6
+ onClick?: React.MouseEventHandler<HTMLElement>;
7
+ }
8
+ declare const CHRButton: FC<CHRButtonProps>;
9
+ export default CHRButton;
@@ -0,0 +1,25 @@
1
+ import { __rest, __assign } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { Button } from 'antd';
4
+
5
+ var CHRButton = function CHRButton(_a) {
6
+ var children = _a.children,
7
+ title = _a.title,
8
+ _b = _a.defaultText,
9
+ defaultText = _b === void 0 ? '按钮' : _b,
10
+ onClick = _a.onClick,
11
+ restProps = __rest(_a, ["children", "title", "defaultText", "onClick"]);
12
+ var handleClick = function handleClick(e) {
13
+ console.log('CHRButton 内部点击处理');
14
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
15
+ };
16
+ // 决定显示内容
17
+ var content;
18
+ content = children !== undefined ? children : title || defaultText;
19
+ return jsx(Button, __assign({}, restProps, {
20
+ onClick: handleClick,
21
+ children: content
22
+ }));
23
+ };
24
+
25
+ export { CHRButton as default };
@@ -0,0 +1,9 @@
1
+ import React, { FC } from 'react';
2
+ interface ChrIconProps {
3
+ icon: string;
4
+ fontSize?: number;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ }
8
+ declare const CHRIcon: FC<ChrIconProps>;
9
+ export default CHRIcon;
@@ -0,0 +1,25 @@
1
+ import { __assign } from 'tslib';
2
+ import { jsx, Fragment } from 'react/jsx-runtime';
3
+ import * as Icons from '@ant-design/icons';
4
+
5
+ var CHRIcon = function CHRIcon(_a) {
6
+ var icon = _a.icon,
7
+ _b = _a.fontSize,
8
+ fontSize = _b === void 0 ? 20 : _b,
9
+ className = _a.className,
10
+ style = _a.style;
11
+ var IconComponent = Icons[icon];
12
+ if (!IconComponent) {
13
+ console.warn("Icon \"".concat(icon, "\" is not a valid icon component"));
14
+ return jsx(Fragment, {});
15
+ }
16
+ return jsx(IconComponent, {
17
+ className: className,
18
+ style: __assign({
19
+ fontSize: fontSize + 'px',
20
+ cursor: 'pointer'
21
+ }, style)
22
+ });
23
+ };
24
+
25
+ export { CHRIcon as default };
@@ -0,0 +1,16 @@
1
+ import type { UploadProps } from 'antd/es/upload';
2
+ import type { UploadFile } from 'antd/es/upload/interface';
3
+ import { ReactNode } from 'react';
4
+ interface CHRUploadProps {
5
+ children?: ReactNode;
6
+ uploadType?: 'avatar' | 'file';
7
+ url?: string;
8
+ token?: string;
9
+ maxCount?: number;
10
+ limit?: number;
11
+ accept?: string;
12
+ handleChange?: (file: UploadFile, fileList: UploadFile[]) => void;
13
+ value: UploadFile[];
14
+ }
15
+ declare const CHRUpload: ({ value, children, uploadType, url, token, maxCount, limit, accept: acceptProp, handleChange, ...restProps }: CHRUploadProps & Omit<UploadProps, "onChange" | "fileList" | "action" | "headers" | "accept" | "maxCount">) => import("react/jsx-runtime").JSX.Element;
16
+ export default CHRUpload;