@plasmicpkgs/antd5 0.0.189 → 0.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plasmicpkgs/antd5",
3
- "version": "0.0.189",
3
+ "version": "0.0.190",
4
4
  "description": "Plasmic registration calls for antd components",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -108,5 +108,5 @@
108
108
  "publishConfig": {
109
109
  "access": "public"
110
110
  },
111
- "gitHead": "14c20ab68d180b65010b1cce060172af9a6826fd"
111
+ "gitHead": "e0516f10c0a328e24f2f684b3e414184ea39915e"
112
112
  }
@@ -48,7 +48,7 @@ function getThumbUrl(file) {
48
48
  return `data:${file.type};base64,${file.contents}`;
49
49
  }
50
50
  function UploadWrapper(props) {
51
- const _a = props, { files, dragAndDropFiles, onFilesChange } = _a, rest = __objRest(_a, ["files", "dragAndDropFiles", "onFilesChange"]);
51
+ const _a = props, { files, dragAndDropFiles, onFilesChange, maxCount } = _a, rest = __objRest(_a, ["files", "dragAndDropFiles", "onFilesChange", "maxCount"]);
52
52
  const filesRef = React.useRef();
53
53
  filesRef.current = files;
54
54
  const [previewFileId, setPreviewFileId] = React.useState();
@@ -66,16 +66,18 @@ function UploadWrapper(props) {
66
66
  lastModified: file.lastModified
67
67
  };
68
68
  onFilesChange == null ? void 0 : onFilesChange([
69
- ...(_a2 = filesRef.current) != null ? _a2 : [],
69
+ ...((_a2 = filesRef.current) != null ? _a2 : []).slice(0, (maxCount || Infinity) - 1),
70
70
  __spreadProps(__spreadValues({}, metadata), {
71
71
  status: "uploading"
72
72
  })
73
73
  ]);
74
74
  const reader = new FileReader();
75
75
  reader.onload = () => {
76
- var _a3;
76
+ var _a3, _b;
77
+ if (!((_a3 = filesRef.current) == null ? void 0 : _a3.map((f) => f.uid).includes(metadata.uid)))
78
+ return;
77
79
  onFilesChange == null ? void 0 : onFilesChange([
78
- ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
80
+ ...((_b = filesRef.current) != null ? _b : []).filter((f) => f.uid !== file.uid),
79
81
  __spreadProps(__spreadValues({}, metadata), {
80
82
  contents: reader.result.replace(
81
83
  /^data:[^;]+;base64,/,
@@ -86,9 +88,11 @@ function UploadWrapper(props) {
86
88
  ]);
87
89
  };
88
90
  reader.onerror = (error) => {
89
- var _a3;
91
+ var _a3, _b;
92
+ if (!((_a3 = filesRef.current) == null ? void 0 : _a3.map((f) => f.uid).includes(metadata.uid)))
93
+ return;
90
94
  onFilesChange == null ? void 0 : onFilesChange([
91
- ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
95
+ ...((_b = filesRef.current) != null ? _b : []).filter((f) => f.uid !== file.uid),
92
96
  __spreadProps(__spreadValues({}, metadata), {
93
97
  status: "error"
94
98
  })
@@ -1 +1 @@
1
- {"version":3,"file":"registerUpload.cjs.js","sources":["../src/registerUpload.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { Modal, Upload } from \"antd\";\nimport type {\n UploadChangeParam,\n UploadFile as AntdUploadFile,\n UploadProps,\n} from \"antd/es/upload\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\n\ninterface UploadFile {\n uid: string;\n name: string;\n size?: number;\n type?: string;\n lastModified?: number;\n contents?: string;\n status: AntdUploadFile[\"status\"];\n}\n\ninterface ExtendedUploadProps<T = any> extends UploadProps<T> {\n files?: Array<UploadFile>;\n onFilesChange?: (values: Array<UploadFile>) => void;\n dragAndDropFiles: boolean;\n}\n\nfunction getThumbUrl(file?: UploadFile): string | undefined {\n if (!file?.type?.startsWith(\"image\")) return undefined;\n return `data:${file.type};base64,${file.contents}`;\n}\n\nexport function UploadWrapper(props: ExtendedUploadProps) {\n const { files, dragAndDropFiles, onFilesChange, ...rest } = props;\n const filesRef = useRef<Array<UploadFile>>(); // if multiple = true, it facilitates adding multiple files\n\n filesRef.current = files;\n\n const [previewFileId, setPreviewFileId] = useState<string>();\n\n const handleChange = (info: UploadChangeParam) => {\n const { file } = info;\n\n if (file.status === \"removed\") {\n return;\n }\n\n const metadata = {\n uid: file.uid,\n name: file.name,\n size: file.size,\n type: file.type,\n lastModified: file.lastModified,\n };\n\n onFilesChange?.([\n ...(filesRef.current ?? []),\n {\n ...metadata,\n status: \"uploading\",\n },\n ]);\n\n const reader = new FileReader();\n\n reader.onload = () => {\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n contents: (reader.result as string).replace(\n /^data:[^;]+;base64,/,\n \"\"\n ),\n status: \"done\",\n },\n ]);\n };\n\n reader.onerror = (error) => {\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n status: \"error\",\n },\n ]);\n };\n\n reader.readAsDataURL(info.file as any);\n };\n\n const handleRemove = (file: UploadFile) => {\n onFilesChange?.((files ?? []).filter((f) => f.uid !== file.uid));\n };\n\n const handlePreview = async (file: AntdUploadFile) => {\n setPreviewFileId(files?.filter((f) => file.uid === f.uid)[0]?.uid);\n };\n\n const handleCancel = () => setPreviewFileId(undefined);\n\n const previewFile = useMemo(\n () => files?.filter((f) => previewFileId === f.uid)[0],\n [files, previewFileId]\n );\n\n const UploadComponent = useMemo(\n () => (dragAndDropFiles ? Upload.Dragger : Upload),\n [dragAndDropFiles]\n );\n\n return (\n <>\n <UploadComponent\n {...rest}\n fileList={files?.map((f) => ({\n ...f,\n thumbUrl: getThumbUrl(f),\n }))}\n onPreview={handlePreview}\n beforeUpload={() => {\n return false;\n }}\n onChange={(info) => {\n handleChange(info);\n }}\n onRemove={(file) => {\n handleRemove(file as UploadFile);\n }}\n />\n <Modal\n open={Boolean(previewFile)}\n title={previewFile?.name}\n footer={null}\n onCancel={handleCancel}\n >\n <img\n alt=\"example\"\n style={{ width: \"100%\" }}\n src={getThumbUrl(previewFile)}\n />\n </Modal>\n </>\n );\n}\n\nUploadWrapper.__plasmicFormFieldMeta = {\n valueProp: \"files\",\n onChangeProp: \"onFilesChange\",\n};\n\nexport function registerUpload(loader?: Registerable) {\n registerComponentHelper(loader, UploadWrapper, {\n name: \"plasmic-antd5-upload\",\n displayName: \"Upload\",\n props: {\n accept: {\n type: \"choice\",\n displayName: \"Allowed types\",\n options: [\n {\n value: \"\",\n label: \"Any kind of file\",\n },\n {\n value: \"image/*\",\n label: \"Image\",\n },\n {\n value: \"video/*\",\n label: \"Video\",\n },\n {\n value: \"audio/*\",\n label: \"Audio\",\n },\n {\n value: \"application/pdf\",\n label: \"PDF\",\n },\n ],\n defaultValue: \"\",\n },\n listType: {\n type: \"choice\",\n options: [\"text\", \"picture\", \"picture-card\", \"picture-circle\"],\n defaultValueHint: \"text\",\n },\n dragAndDropFiles: {\n type: \"boolean\",\n defaultValueHint: false,\n advanced: true,\n description:\n \"You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.\",\n },\n multiple: {\n type: \"boolean\",\n advanced: true,\n defaultValueHint: false,\n description: \"Upload several files at once in modern browsers\",\n },\n files: {\n type: \"object\",\n displayName: \"Files\",\n defaultValue: [],\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"plasmic-antd5-button\",\n props: {\n children: {\n type: \"text\",\n value: \"Upload\",\n },\n },\n },\n ],\n },\n maxCount: {\n type: \"number\",\n displayName: \"Limit of files\",\n advanced: true,\n },\n onFilesChange: {\n type: \"eventHandler\",\n displayName: \"On file uploaded\",\n argTypes: [\n {\n name: \"files\",\n type: \"array\",\n },\n ],\n },\n showUploadList: {\n type: \"boolean\",\n displayName: \"List files\",\n defaultValue: true,\n },\n },\n states: {\n files: {\n type: \"writable\",\n valueProp: \"files\",\n variableType: \"array\",\n onChangeProp: \"onFilesChange\",\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n },\n ...({ trapsSelection: true } as any),\n importPath: \"@plasmicpkgs/antd5/skinny/registerUpload\",\n importName: \"UploadWrapper\",\n });\n}\n"],"names":["useRef","useState","_a","useMemo","Upload","React","Modal","registerComponentHelper"],"mappings":"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"}
1
+ {"version":3,"file":"registerUpload.cjs.js","sources":["../src/registerUpload.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { Modal, Upload } from \"antd\";\nimport type {\n UploadChangeParam,\n UploadFile as AntdUploadFile,\n UploadProps,\n} from \"antd/es/upload\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\n\ninterface UploadFile {\n uid: string;\n name: string;\n size?: number;\n type?: string;\n lastModified?: number;\n contents?: string;\n status: AntdUploadFile[\"status\"];\n}\n\ninterface ExtendedUploadProps<T = any> extends UploadProps<T> {\n files?: Array<UploadFile>;\n onFilesChange?: (values: Array<UploadFile>) => void;\n dragAndDropFiles: boolean;\n}\n\nfunction getThumbUrl(file?: UploadFile): string | undefined {\n if (!file?.type?.startsWith(\"image\")) return undefined;\n return `data:${file.type};base64,${file.contents}`;\n}\n\nexport function UploadWrapper(props: ExtendedUploadProps) {\n const { files, dragAndDropFiles, onFilesChange, maxCount, ...rest } = props;\n const filesRef = useRef<Array<UploadFile>>(); // if multiple = true, it facilitates adding multiple files\n\n filesRef.current = files;\n\n const [previewFileId, setPreviewFileId] = useState<string>();\n\n const handleChange = (info: UploadChangeParam) => {\n const { file } = info;\n\n if (file.status === \"removed\") {\n return;\n }\n\n const metadata = {\n uid: file.uid,\n name: file.name,\n size: file.size,\n type: file.type,\n lastModified: file.lastModified,\n };\n\n onFilesChange?.([\n ...(filesRef.current ?? []).slice(0, (maxCount || Infinity) - 1),\n {\n ...metadata,\n status: \"uploading\",\n },\n ]);\n\n const reader = new FileReader();\n\n reader.onload = () => {\n if (!filesRef.current?.map((f) => f.uid).includes(metadata.uid)) return;\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n contents: (reader.result as string).replace(\n /^data:[^;]+;base64,/,\n \"\"\n ),\n status: \"done\",\n },\n ]);\n };\n\n reader.onerror = (error) => {\n if (!filesRef.current?.map((f) => f.uid).includes(metadata.uid)) return;\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n status: \"error\",\n },\n ]);\n };\n\n reader.readAsDataURL(info.file as any);\n };\n\n const handleRemove = (file: UploadFile) => {\n onFilesChange?.((files ?? []).filter((f) => f.uid !== file.uid));\n };\n\n const handlePreview = async (file: AntdUploadFile) => {\n setPreviewFileId(files?.filter((f) => file.uid === f.uid)[0]?.uid);\n };\n\n const handleCancel = () => setPreviewFileId(undefined);\n\n const previewFile = useMemo(\n () => files?.filter((f) => previewFileId === f.uid)[0],\n [files, previewFileId]\n );\n\n const UploadComponent = useMemo(\n () => (dragAndDropFiles ? Upload.Dragger : Upload),\n [dragAndDropFiles]\n );\n\n return (\n <>\n <UploadComponent\n {...rest}\n fileList={files?.map((f) => ({\n ...f,\n thumbUrl: getThumbUrl(f),\n }))}\n onPreview={handlePreview}\n beforeUpload={() => {\n return false;\n }}\n onChange={(info) => {\n handleChange(info);\n }}\n onRemove={(file) => {\n handleRemove(file as UploadFile);\n }}\n />\n <Modal\n open={Boolean(previewFile)}\n title={previewFile?.name}\n footer={null}\n onCancel={handleCancel}\n >\n <img\n alt=\"example\"\n style={{ width: \"100%\" }}\n src={getThumbUrl(previewFile)}\n />\n </Modal>\n </>\n );\n}\n\nUploadWrapper.__plasmicFormFieldMeta = {\n valueProp: \"files\",\n onChangeProp: \"onFilesChange\",\n};\n\nexport function registerUpload(loader?: Registerable) {\n registerComponentHelper(loader, UploadWrapper, {\n name: \"plasmic-antd5-upload\",\n displayName: \"Upload\",\n props: {\n accept: {\n type: \"choice\",\n displayName: \"Allowed types\",\n options: [\n {\n value: \"\",\n label: \"Any kind of file\",\n },\n {\n value: \"image/*\",\n label: \"Image\",\n },\n {\n value: \"video/*\",\n label: \"Video\",\n },\n {\n value: \"audio/*\",\n label: \"Audio\",\n },\n {\n value: \"application/pdf\",\n label: \"PDF\",\n },\n ],\n defaultValue: \"\",\n },\n listType: {\n type: \"choice\",\n options: [\"text\", \"picture\", \"picture-card\", \"picture-circle\"],\n defaultValueHint: \"text\",\n },\n dragAndDropFiles: {\n type: \"boolean\",\n defaultValueHint: false,\n advanced: true,\n description:\n \"You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.\",\n },\n multiple: {\n type: \"boolean\",\n advanced: true,\n defaultValueHint: false,\n description: \"Upload several files at once in modern browsers\",\n },\n files: {\n type: \"object\",\n displayName: \"Files\",\n defaultValue: [],\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"plasmic-antd5-button\",\n props: {\n children: {\n type: \"text\",\n value: \"Upload\",\n },\n },\n },\n ],\n },\n maxCount: {\n type: \"number\",\n displayName: \"Limit of files\",\n advanced: true,\n },\n onFilesChange: {\n type: \"eventHandler\",\n displayName: \"On file uploaded\",\n argTypes: [\n {\n name: \"files\",\n type: \"array\",\n },\n ],\n },\n showUploadList: {\n type: \"boolean\",\n displayName: \"List files\",\n defaultValue: true,\n },\n },\n states: {\n files: {\n type: \"writable\",\n valueProp: \"files\",\n variableType: \"array\",\n onChangeProp: \"onFilesChange\",\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n },\n ...({ trapsSelection: true } as any),\n importPath: \"@plasmicpkgs/antd5/skinny/registerUpload\",\n importName: \"UploadWrapper\",\n });\n}\n"],"names":["useRef","useState","_a","useMemo","Upload","React","Modal","registerComponentHelper"],"mappings":"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"}
@@ -42,7 +42,7 @@ function getThumbUrl(file) {
42
42
  return `data:${file.type};base64,${file.contents}`;
43
43
  }
44
44
  function UploadWrapper(props) {
45
- const _a = props, { files, dragAndDropFiles, onFilesChange } = _a, rest = __objRest(_a, ["files", "dragAndDropFiles", "onFilesChange"]);
45
+ const _a = props, { files, dragAndDropFiles, onFilesChange, maxCount } = _a, rest = __objRest(_a, ["files", "dragAndDropFiles", "onFilesChange", "maxCount"]);
46
46
  const filesRef = useRef();
47
47
  filesRef.current = files;
48
48
  const [previewFileId, setPreviewFileId] = useState();
@@ -60,16 +60,18 @@ function UploadWrapper(props) {
60
60
  lastModified: file.lastModified
61
61
  };
62
62
  onFilesChange == null ? void 0 : onFilesChange([
63
- ...(_a2 = filesRef.current) != null ? _a2 : [],
63
+ ...((_a2 = filesRef.current) != null ? _a2 : []).slice(0, (maxCount || Infinity) - 1),
64
64
  __spreadProps(__spreadValues({}, metadata), {
65
65
  status: "uploading"
66
66
  })
67
67
  ]);
68
68
  const reader = new FileReader();
69
69
  reader.onload = () => {
70
- var _a3;
70
+ var _a3, _b;
71
+ if (!((_a3 = filesRef.current) == null ? void 0 : _a3.map((f) => f.uid).includes(metadata.uid)))
72
+ return;
71
73
  onFilesChange == null ? void 0 : onFilesChange([
72
- ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
74
+ ...((_b = filesRef.current) != null ? _b : []).filter((f) => f.uid !== file.uid),
73
75
  __spreadProps(__spreadValues({}, metadata), {
74
76
  contents: reader.result.replace(
75
77
  /^data:[^;]+;base64,/,
@@ -80,9 +82,11 @@ function UploadWrapper(props) {
80
82
  ]);
81
83
  };
82
84
  reader.onerror = (error) => {
83
- var _a3;
85
+ var _a3, _b;
86
+ if (!((_a3 = filesRef.current) == null ? void 0 : _a3.map((f) => f.uid).includes(metadata.uid)))
87
+ return;
84
88
  onFilesChange == null ? void 0 : onFilesChange([
85
- ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
89
+ ...((_b = filesRef.current) != null ? _b : []).filter((f) => f.uid !== file.uid),
86
90
  __spreadProps(__spreadValues({}, metadata), {
87
91
  status: "error"
88
92
  })
@@ -1 +1 @@
1
- {"version":3,"file":"registerUpload.esm.js","sources":["../src/registerUpload.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { Modal, Upload } from \"antd\";\nimport type {\n UploadChangeParam,\n UploadFile as AntdUploadFile,\n UploadProps,\n} from \"antd/es/upload\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\n\ninterface UploadFile {\n uid: string;\n name: string;\n size?: number;\n type?: string;\n lastModified?: number;\n contents?: string;\n status: AntdUploadFile[\"status\"];\n}\n\ninterface ExtendedUploadProps<T = any> extends UploadProps<T> {\n files?: Array<UploadFile>;\n onFilesChange?: (values: Array<UploadFile>) => void;\n dragAndDropFiles: boolean;\n}\n\nfunction getThumbUrl(file?: UploadFile): string | undefined {\n if (!file?.type?.startsWith(\"image\")) return undefined;\n return `data:${file.type};base64,${file.contents}`;\n}\n\nexport function UploadWrapper(props: ExtendedUploadProps) {\n const { files, dragAndDropFiles, onFilesChange, ...rest } = props;\n const filesRef = useRef<Array<UploadFile>>(); // if multiple = true, it facilitates adding multiple files\n\n filesRef.current = files;\n\n const [previewFileId, setPreviewFileId] = useState<string>();\n\n const handleChange = (info: UploadChangeParam) => {\n const { file } = info;\n\n if (file.status === \"removed\") {\n return;\n }\n\n const metadata = {\n uid: file.uid,\n name: file.name,\n size: file.size,\n type: file.type,\n lastModified: file.lastModified,\n };\n\n onFilesChange?.([\n ...(filesRef.current ?? []),\n {\n ...metadata,\n status: \"uploading\",\n },\n ]);\n\n const reader = new FileReader();\n\n reader.onload = () => {\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n contents: (reader.result as string).replace(\n /^data:[^;]+;base64,/,\n \"\"\n ),\n status: \"done\",\n },\n ]);\n };\n\n reader.onerror = (error) => {\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n status: \"error\",\n },\n ]);\n };\n\n reader.readAsDataURL(info.file as any);\n };\n\n const handleRemove = (file: UploadFile) => {\n onFilesChange?.((files ?? []).filter((f) => f.uid !== file.uid));\n };\n\n const handlePreview = async (file: AntdUploadFile) => {\n setPreviewFileId(files?.filter((f) => file.uid === f.uid)[0]?.uid);\n };\n\n const handleCancel = () => setPreviewFileId(undefined);\n\n const previewFile = useMemo(\n () => files?.filter((f) => previewFileId === f.uid)[0],\n [files, previewFileId]\n );\n\n const UploadComponent = useMemo(\n () => (dragAndDropFiles ? Upload.Dragger : Upload),\n [dragAndDropFiles]\n );\n\n return (\n <>\n <UploadComponent\n {...rest}\n fileList={files?.map((f) => ({\n ...f,\n thumbUrl: getThumbUrl(f),\n }))}\n onPreview={handlePreview}\n beforeUpload={() => {\n return false;\n }}\n onChange={(info) => {\n handleChange(info);\n }}\n onRemove={(file) => {\n handleRemove(file as UploadFile);\n }}\n />\n <Modal\n open={Boolean(previewFile)}\n title={previewFile?.name}\n footer={null}\n onCancel={handleCancel}\n >\n <img\n alt=\"example\"\n style={{ width: \"100%\" }}\n src={getThumbUrl(previewFile)}\n />\n </Modal>\n </>\n );\n}\n\nUploadWrapper.__plasmicFormFieldMeta = {\n valueProp: \"files\",\n onChangeProp: \"onFilesChange\",\n};\n\nexport function registerUpload(loader?: Registerable) {\n registerComponentHelper(loader, UploadWrapper, {\n name: \"plasmic-antd5-upload\",\n displayName: \"Upload\",\n props: {\n accept: {\n type: \"choice\",\n displayName: \"Allowed types\",\n options: [\n {\n value: \"\",\n label: \"Any kind of file\",\n },\n {\n value: \"image/*\",\n label: \"Image\",\n },\n {\n value: \"video/*\",\n label: \"Video\",\n },\n {\n value: \"audio/*\",\n label: \"Audio\",\n },\n {\n value: \"application/pdf\",\n label: \"PDF\",\n },\n ],\n defaultValue: \"\",\n },\n listType: {\n type: \"choice\",\n options: [\"text\", \"picture\", \"picture-card\", \"picture-circle\"],\n defaultValueHint: \"text\",\n },\n dragAndDropFiles: {\n type: \"boolean\",\n defaultValueHint: false,\n advanced: true,\n description:\n \"You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.\",\n },\n multiple: {\n type: \"boolean\",\n advanced: true,\n defaultValueHint: false,\n description: \"Upload several files at once in modern browsers\",\n },\n files: {\n type: \"object\",\n displayName: \"Files\",\n defaultValue: [],\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"plasmic-antd5-button\",\n props: {\n children: {\n type: \"text\",\n value: \"Upload\",\n },\n },\n },\n ],\n },\n maxCount: {\n type: \"number\",\n displayName: \"Limit of files\",\n advanced: true,\n },\n onFilesChange: {\n type: \"eventHandler\",\n displayName: \"On file uploaded\",\n argTypes: [\n {\n name: \"files\",\n type: \"array\",\n },\n ],\n },\n showUploadList: {\n type: \"boolean\",\n displayName: \"List files\",\n defaultValue: true,\n },\n },\n states: {\n files: {\n type: \"writable\",\n valueProp: \"files\",\n variableType: \"array\",\n onChangeProp: \"onFilesChange\",\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n },\n ...({ trapsSelection: true } as any),\n importPath: \"@plasmicpkgs/antd5/skinny/registerUpload\",\n importName: \"UploadWrapper\",\n });\n}\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"registerUpload.esm.js","sources":["../src/registerUpload.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { Modal, Upload } from \"antd\";\nimport type {\n UploadChangeParam,\n UploadFile as AntdUploadFile,\n UploadProps,\n} from \"antd/es/upload\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport { Registerable, registerComponentHelper } from \"./utils\";\n\ninterface UploadFile {\n uid: string;\n name: string;\n size?: number;\n type?: string;\n lastModified?: number;\n contents?: string;\n status: AntdUploadFile[\"status\"];\n}\n\ninterface ExtendedUploadProps<T = any> extends UploadProps<T> {\n files?: Array<UploadFile>;\n onFilesChange?: (values: Array<UploadFile>) => void;\n dragAndDropFiles: boolean;\n}\n\nfunction getThumbUrl(file?: UploadFile): string | undefined {\n if (!file?.type?.startsWith(\"image\")) return undefined;\n return `data:${file.type};base64,${file.contents}`;\n}\n\nexport function UploadWrapper(props: ExtendedUploadProps) {\n const { files, dragAndDropFiles, onFilesChange, maxCount, ...rest } = props;\n const filesRef = useRef<Array<UploadFile>>(); // if multiple = true, it facilitates adding multiple files\n\n filesRef.current = files;\n\n const [previewFileId, setPreviewFileId] = useState<string>();\n\n const handleChange = (info: UploadChangeParam) => {\n const { file } = info;\n\n if (file.status === \"removed\") {\n return;\n }\n\n const metadata = {\n uid: file.uid,\n name: file.name,\n size: file.size,\n type: file.type,\n lastModified: file.lastModified,\n };\n\n onFilesChange?.([\n ...(filesRef.current ?? []).slice(0, (maxCount || Infinity) - 1),\n {\n ...metadata,\n status: \"uploading\",\n },\n ]);\n\n const reader = new FileReader();\n\n reader.onload = () => {\n if (!filesRef.current?.map((f) => f.uid).includes(metadata.uid)) return;\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n contents: (reader.result as string).replace(\n /^data:[^;]+;base64,/,\n \"\"\n ),\n status: \"done\",\n },\n ]);\n };\n\n reader.onerror = (error) => {\n if (!filesRef.current?.map((f) => f.uid).includes(metadata.uid)) return;\n onFilesChange?.([\n ...(filesRef.current ?? []).filter((f) => f.uid !== file.uid),\n {\n ...metadata,\n status: \"error\",\n },\n ]);\n };\n\n reader.readAsDataURL(info.file as any);\n };\n\n const handleRemove = (file: UploadFile) => {\n onFilesChange?.((files ?? []).filter((f) => f.uid !== file.uid));\n };\n\n const handlePreview = async (file: AntdUploadFile) => {\n setPreviewFileId(files?.filter((f) => file.uid === f.uid)[0]?.uid);\n };\n\n const handleCancel = () => setPreviewFileId(undefined);\n\n const previewFile = useMemo(\n () => files?.filter((f) => previewFileId === f.uid)[0],\n [files, previewFileId]\n );\n\n const UploadComponent = useMemo(\n () => (dragAndDropFiles ? Upload.Dragger : Upload),\n [dragAndDropFiles]\n );\n\n return (\n <>\n <UploadComponent\n {...rest}\n fileList={files?.map((f) => ({\n ...f,\n thumbUrl: getThumbUrl(f),\n }))}\n onPreview={handlePreview}\n beforeUpload={() => {\n return false;\n }}\n onChange={(info) => {\n handleChange(info);\n }}\n onRemove={(file) => {\n handleRemove(file as UploadFile);\n }}\n />\n <Modal\n open={Boolean(previewFile)}\n title={previewFile?.name}\n footer={null}\n onCancel={handleCancel}\n >\n <img\n alt=\"example\"\n style={{ width: \"100%\" }}\n src={getThumbUrl(previewFile)}\n />\n </Modal>\n </>\n );\n}\n\nUploadWrapper.__plasmicFormFieldMeta = {\n valueProp: \"files\",\n onChangeProp: \"onFilesChange\",\n};\n\nexport function registerUpload(loader?: Registerable) {\n registerComponentHelper(loader, UploadWrapper, {\n name: \"plasmic-antd5-upload\",\n displayName: \"Upload\",\n props: {\n accept: {\n type: \"choice\",\n displayName: \"Allowed types\",\n options: [\n {\n value: \"\",\n label: \"Any kind of file\",\n },\n {\n value: \"image/*\",\n label: \"Image\",\n },\n {\n value: \"video/*\",\n label: \"Video\",\n },\n {\n value: \"audio/*\",\n label: \"Audio\",\n },\n {\n value: \"application/pdf\",\n label: \"PDF\",\n },\n ],\n defaultValue: \"\",\n },\n listType: {\n type: \"choice\",\n options: [\"text\", \"picture\", \"picture-card\", \"picture-circle\"],\n defaultValueHint: \"text\",\n },\n dragAndDropFiles: {\n type: \"boolean\",\n defaultValueHint: false,\n advanced: true,\n description:\n \"You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting.\",\n },\n multiple: {\n type: \"boolean\",\n advanced: true,\n defaultValueHint: false,\n description: \"Upload several files at once in modern browsers\",\n },\n files: {\n type: \"object\",\n displayName: \"Files\",\n defaultValue: [],\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"plasmic-antd5-button\",\n props: {\n children: {\n type: \"text\",\n value: \"Upload\",\n },\n },\n },\n ],\n },\n maxCount: {\n type: \"number\",\n displayName: \"Limit of files\",\n advanced: true,\n },\n onFilesChange: {\n type: \"eventHandler\",\n displayName: \"On file uploaded\",\n argTypes: [\n {\n name: \"files\",\n type: \"array\",\n },\n ],\n },\n showUploadList: {\n type: \"boolean\",\n displayName: \"List files\",\n defaultValue: true,\n },\n },\n states: {\n files: {\n type: \"writable\",\n valueProp: \"files\",\n variableType: \"array\",\n onChangeProp: \"onFilesChange\",\n hidden: (ps: any) => !!ps.__plasmicFormField,\n },\n },\n ...({ trapsSelection: true } as any),\n importPath: \"@plasmicpkgs/antd5/skinny/registerUpload\",\n importName: \"UploadWrapper\",\n });\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAS,YAAY,IAAuC,EAAA;AA1B5D,EAAA,IAAA,EAAA,CAAA;AA2BE,EAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,IAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,UAAW,CAAA,OAAA,CAAA,CAAA;AAAU,IAAO,OAAA,KAAA,CAAA,CAAA;AAC7C,EAAO,OAAA,CAAA,KAAA,EAAQ,IAAK,CAAA,IAAA,CAAA,QAAA,EAAe,IAAK,CAAA,QAAA,CAAA,CAAA,CAAA;AAC1C,CAAA;AAEO,SAAS,cAAc,KAA4B,EAAA;AACxD,EAAA,MAAsE,EAA9D,GAAA,KAAA,EAAA,EAAA,KAAA,EAAO,gBAAkB,EAAA,aAAA,EAAe,QAhClD,EAAA,GAgCwE,EAAT,EAAA,IAAA,GAAA,SAAA,CAAS,EAAT,EAAA,CAArD,OAAO,EAAA,kBAAA,EAAkB,eAAe,EAAA,UAAA,CAAA,CAAA,CAAA;AAChD,EAAA,MAAM,WAAW,MAA0B,EAAA,CAAA;AAE3C,EAAA,QAAA,CAAS,OAAU,GAAA,KAAA,CAAA;AAEnB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAiB,EAAA,CAAA;AAE3D,EAAM,MAAA,YAAA,GAAe,CAAC,IAA4B,KAAA;AAvCpD,IAAAA,IAAAA,GAAAA,CAAAA;AAwCI,IAAM,MAAA,EAAE,MAAS,GAAA,IAAA,CAAA;AAEjB,IAAI,IAAA,IAAA,CAAK,WAAW,SAAW,EAAA;AAC7B,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,KAAK,IAAK,CAAA,GAAA;AAAA,MACV,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,cAAc,IAAK,CAAA,YAAA;AAAA,KACrB,CAAA;AAEA,IAAgB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA;AAAA,MACd,GAAIA,CAAAA,CAAAA,GAAAA,GAAA,QAAS,CAAA,OAAA,KAAT,IAAAA,GAAAA,GAAAA,GAAoB,EAAC,EAAG,KAAM,CAAA,CAAA,EAAA,CAAI,QAAY,IAAA,QAAA,IAAY,CAAC,CAAA;AAAA,MAC/D,iCACK,QADL,CAAA,EAAA;AAAA,QAEE,MAAQ,EAAA,WAAA;AAAA,OACV,CAAA;AAAA,KACF,CAAA,CAAA;AAEA,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAA,MAAA,CAAO,SAAS,MAAM;AAhE1B,MAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAiEM,MAAA,IAAI,EAACA,CAAAA,GAAAA,GAAA,QAAS,CAAA,OAAA,KAAT,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAkB,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAK,CAAA,CAAA,QAAA,CAAS,QAAS,CAAA,GAAA,CAAA,CAAA;AAAM,QAAA,OAAA;AACjE,MAAgB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA;AAAA,QACd,GAAI,CAAA,CAAA,EAAA,GAAA,QAAA,CAAS,OAAT,KAAA,IAAA,GAAA,EAAA,GAAoB,EAAC,EAAG,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAQ,KAAA,IAAA,CAAK,GAAG,CAAA;AAAA,QAC5D,iCACK,QADL,CAAA,EAAA;AAAA,UAEE,QAAA,EAAW,OAAO,MAAkB,CAAA,OAAA;AAAA,YAClC,qBAAA;AAAA,YACA,EAAA;AAAA,WACF;AAAA,UACA,MAAQ,EAAA,MAAA;AAAA,SACV,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAO,MAAA,CAAA,OAAA,GAAU,CAAC,KAAU,KAAA;AA/EhC,MAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAgFM,MAAA,IAAI,EAACA,CAAAA,GAAAA,GAAA,QAAS,CAAA,OAAA,KAAT,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAkB,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAK,CAAA,CAAA,QAAA,CAAS,QAAS,CAAA,GAAA,CAAA,CAAA;AAAM,QAAA,OAAA;AACjE,MAAgB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA;AAAA,QACd,GAAI,CAAA,CAAA,EAAA,GAAA,QAAA,CAAS,OAAT,KAAA,IAAA,GAAA,EAAA,GAAoB,EAAC,EAAG,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAQ,KAAA,IAAA,CAAK,GAAG,CAAA;AAAA,QAC5D,iCACK,QADL,CAAA,EAAA;AAAA,UAEE,MAAQ,EAAA,OAAA;AAAA,SACV,CAAA;AAAA,OACF,CAAA,CAAA;AAAA,KACF,CAAA;AAEA,IAAO,MAAA,CAAA,aAAA,CAAc,KAAK,IAAW,CAAA,CAAA;AAAA,GACvC,CAAA;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,IAAqB,KAAA;AACzC,IAAiB,aAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAA,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,EAAI,EAAA,MAAA,CAAO,CAAC,CAAM,KAAA,CAAA,CAAE,GAAQ,KAAA,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA;AAAA,GAChE,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,OAAO,IAAyB,KAAA;AAjGxD,IAAAA,IAAAA,GAAAA,CAAAA;AAkGI,IAAA,gBAAA,CAAA,CAAiBA,GAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,MAAO,CAAA,CAAC,CAAM,KAAA,IAAA,CAAK,GAAQ,KAAA,CAAA,CAAE,GAAK,CAAA,CAAA,CAAA,CAAA,KAAzC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAA6C,GAAG,CAAA,CAAA;AAAA,GACnE,CAAA;AAEA,EAAM,MAAA,YAAA,GAAe,MAAM,gBAAA,CAAiB,KAAS,CAAA,CAAA,CAAA;AAErD,EAAA,MAAM,WAAc,GAAA,OAAA;AAAA,IAClB,MAAM,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,MAAA,CAAO,CAAC,CAAM,KAAA,aAAA,KAAkB,EAAE,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,IACpD,CAAC,OAAO,aAAa,CAAA;AAAA,GACvB,CAAA;AAEA,EAAA,MAAM,eAAkB,GAAA,OAAA;AAAA,IACtB,MAAO,gBAAmB,GAAA,MAAA,CAAO,OAAU,GAAA,MAAA;AAAA,IAC3C,CAAC,gBAAgB,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACK,IADL,CAAA,EAAA;AAAA,MAEC,UAAU,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAI,CAAC,CAAA,KAAO,iCACxB,CADwB,CAAA,EAAA;AAAA,QAE3B,QAAA,EAAU,YAAY,CAAC,CAAA;AAAA,OACzB,CAAA,CAAA;AAAA,MACA,SAAW,EAAA,aAAA;AAAA,MACX,cAAc,MAAM;AAClB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,MACA,QAAA,EAAU,CAAC,IAAS,KAAA;AAClB,QAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,OACnB;AAAA,MACA,QAAA,EAAU,CAAC,IAAS,KAAA;AAClB,QAAA,YAAA,CAAa,IAAkB,CAAA,CAAA;AAAA,OACjC;AAAA,KAAA,CAAA;AAAA,GAEF,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,QAAQ,WAAW,CAAA;AAAA,MACzB,OAAO,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,IAAA;AAAA,MACpB,MAAQ,EAAA,IAAA;AAAA,MACR,QAAU,EAAA,YAAA;AAAA,KAAA;AAAA,oBAEV,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAI,EAAA,SAAA;AAAA,QACJ,KAAA,EAAO,EAAE,KAAA,EAAO,MAAO,EAAA;AAAA,QACvB,GAAA,EAAK,YAAY,WAAW,CAAA;AAAA,OAAA;AAAA,KAC9B;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAA;AAEA,aAAA,CAAc,sBAAyB,GAAA;AAAA,EACrC,SAAW,EAAA,OAAA;AAAA,EACX,YAAc,EAAA,eAAA;AAChB,CAAA,CAAA;AAEO,SAAS,eAAe,MAAuB,EAAA;AACpD,EAAA,uBAAA,CAAwB,QAAQ,aAAe,EAAA,aAAA,CAAA,cAAA,CAAA;AAAA,IAC7C,IAAM,EAAA,sBAAA;AAAA,IACN,WAAa,EAAA,QAAA;AAAA,IACb,KAAO,EAAA;AAAA,MACL,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,eAAA;AAAA,QACb,OAAS,EAAA;AAAA,UACP;AAAA,YACE,KAAO,EAAA,EAAA;AAAA,YACP,KAAO,EAAA,kBAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,SAAA;AAAA,YACP,KAAO,EAAA,OAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,SAAA;AAAA,YACP,KAAO,EAAA,OAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,SAAA;AAAA,YACP,KAAO,EAAA,OAAA;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAO,EAAA,iBAAA;AAAA,YACP,KAAO,EAAA,KAAA;AAAA,WACT;AAAA,SACF;AAAA,QACA,YAAc,EAAA,EAAA;AAAA,OAChB;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,QAAA;AAAA,QACN,OAAS,EAAA,CAAC,MAAQ,EAAA,SAAA,EAAW,gBAAgB,gBAAgB,CAAA;AAAA,QAC7D,gBAAkB,EAAA,MAAA;AAAA,OACpB;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,IAAM,EAAA,SAAA;AAAA,QACN,gBAAkB,EAAA,KAAA;AAAA,QAClB,QAAU,EAAA,IAAA;AAAA,QACV,WACE,EAAA,oGAAA;AAAA,OACJ;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,SAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,gBAAkB,EAAA,KAAA;AAAA,QAClB,WAAa,EAAA,iDAAA;AAAA,OACf;AAAA,MACA,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,OAAA;AAAA,QACb,cAAc,EAAC;AAAA,QACf,MAAQ,EAAA,CAAC,EAAY,KAAA,CAAC,CAAC,EAAG,CAAA,kBAAA;AAAA,OAC5B;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,MAAA;AAAA,QACN,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,WAAA;AAAA,YACN,IAAM,EAAA,sBAAA;AAAA,YACN,KAAO,EAAA;AAAA,cACL,QAAU,EAAA;AAAA,gBACR,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,QAAA;AAAA,eACT;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,gBAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,aAAe,EAAA;AAAA,QACb,IAAM,EAAA,cAAA;AAAA,QACN,WAAa,EAAA,kBAAA;AAAA,QACb,QAAU,EAAA;AAAA,UACR;AAAA,YACE,IAAM,EAAA,OAAA;AAAA,YACN,IAAM,EAAA,OAAA;AAAA,WACR;AAAA,SACF;AAAA,OACF;AAAA,MACA,cAAgB,EAAA;AAAA,QACd,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,YAAA;AAAA,QACb,YAAc,EAAA,IAAA;AAAA,OAChB;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,OAAA;AAAA,QACX,YAAc,EAAA,OAAA;AAAA,QACd,YAAc,EAAA,eAAA;AAAA,QACd,MAAQ,EAAA,CAAC,EAAY,KAAA,CAAC,CAAC,EAAG,CAAA,kBAAA;AAAA,OAC5B;AAAA,KACF;AAAA,GACI,EAAA,EAAE,cAAgB,EAAA,IAAA,EApGuB,CAAA,EAAA;AAAA,IAqG7C,UAAY,EAAA,0CAAA;AAAA,IACZ,UAAY,EAAA,eAAA;AAAA,GACb,CAAA,CAAA,CAAA;AACH;;;;"}