@plasmicpkgs/antd5 0.0.158 → 0.0.159

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/dist/index.js CHANGED
@@ -8866,9 +8866,19 @@ var __objRest = (source, exclude) => {
8866
8866
  }
8867
8867
  return target;
8868
8868
  };
8869
+ function getThumbUrl(file) {
8870
+ var _a;
8871
+ if (!((_a = file == null ? void 0 : file.type) == null ? void 0 : _a.startsWith("image")))
8872
+ return void 0;
8873
+ return `data:${file.type};base64,${file.contents}`;
8874
+ }
8869
8875
  function UploadWrapper(props) {
8870
- const _a = props, { files, onFilesChange } = _a, rest = __objRest(_a, ["files", "onFilesChange"]);
8876
+ const _a = props, { files, dragAndDropFiles, onFilesChange } = _a, rest = __objRest(_a, ["files", "dragAndDropFiles", "onFilesChange"]);
8877
+ const filesRef = React.useRef();
8878
+ filesRef.current = files;
8879
+ const [previewFileId, setPreviewFileId] = React.useState();
8871
8880
  const handleChange = (info) => {
8881
+ var _a2;
8872
8882
  const { file } = info;
8873
8883
  if (file.status === "removed") {
8874
8884
  return;
@@ -8881,15 +8891,16 @@ function UploadWrapper(props) {
8881
8891
  lastModified: file.lastModified
8882
8892
  };
8883
8893
  onFilesChange == null ? void 0 : onFilesChange([
8884
- ...files != null ? files : [],
8894
+ ...(_a2 = filesRef.current) != null ? _a2 : [],
8885
8895
  __spreadProps(__spreadValues({}, metadata), {
8886
8896
  status: "uploading"
8887
8897
  })
8888
8898
  ]);
8889
8899
  const reader = new FileReader();
8890
8900
  reader.onload = () => {
8901
+ var _a3;
8891
8902
  onFilesChange == null ? void 0 : onFilesChange([
8892
- ...(files != null ? files : []).filter((f) => f.uid !== file.uid),
8903
+ ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
8893
8904
  __spreadProps(__spreadValues({}, metadata), {
8894
8905
  contents: reader.result.replace(
8895
8906
  /^data:[^;]+;base64,/,
@@ -8900,8 +8911,9 @@ function UploadWrapper(props) {
8900
8911
  ]);
8901
8912
  };
8902
8913
  reader.onerror = (error) => {
8914
+ var _a3;
8903
8915
  onFilesChange == null ? void 0 : onFilesChange([
8904
- ...(files != null ? files : []).filter((f) => f.uid !== file.uid),
8916
+ ...((_a3 = filesRef.current) != null ? _a3 : []).filter((f) => f.uid !== file.uid),
8905
8917
  __spreadProps(__spreadValues({}, metadata), {
8906
8918
  status: "error"
8907
8919
  })
@@ -8912,10 +8924,26 @@ function UploadWrapper(props) {
8912
8924
  const handleRemove = (file) => {
8913
8925
  onFilesChange == null ? void 0 : onFilesChange((files != null ? files : []).filter((f) => f.uid !== file.uid));
8914
8926
  };
8915
- return /* @__PURE__ */ React__default.default.createElement(
8916
- antd.Upload,
8927
+ const handlePreview = async (file) => {
8928
+ var _a2;
8929
+ setPreviewFileId((_a2 = files == null ? void 0 : files.filter((f) => file.uid === f.uid)[0]) == null ? void 0 : _a2.uid);
8930
+ };
8931
+ const handleCancel = () => setPreviewFileId(void 0);
8932
+ const previewFile = React.useMemo(
8933
+ () => files == null ? void 0 : files.filter((f) => previewFileId === f.uid)[0],
8934
+ [files, previewFileId]
8935
+ );
8936
+ const UploadComponent = React.useMemo(
8937
+ () => dragAndDropFiles ? antd.Upload.Dragger : antd.Upload,
8938
+ [dragAndDropFiles]
8939
+ );
8940
+ return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, /* @__PURE__ */ React__default.default.createElement(
8941
+ UploadComponent,
8917
8942
  __spreadProps(__spreadValues({}, rest), {
8918
- fileList: files,
8943
+ fileList: files == null ? void 0 : files.map((f) => __spreadProps(__spreadValues({}, f), {
8944
+ thumbUrl: getThumbUrl(f)
8945
+ })),
8946
+ onPreview: handlePreview,
8919
8947
  beforeUpload: () => {
8920
8948
  return false;
8921
8949
  },
@@ -8926,7 +8954,23 @@ function UploadWrapper(props) {
8926
8954
  handleRemove(file);
8927
8955
  }
8928
8956
  })
8929
- );
8957
+ ), /* @__PURE__ */ React__default.default.createElement(
8958
+ antd.Modal,
8959
+ {
8960
+ open: Boolean(previewFile),
8961
+ title: previewFile == null ? void 0 : previewFile.name,
8962
+ footer: null,
8963
+ onCancel: handleCancel
8964
+ },
8965
+ /* @__PURE__ */ React__default.default.createElement(
8966
+ "img",
8967
+ {
8968
+ alt: "example",
8969
+ style: { width: "100%" },
8970
+ src: getThumbUrl(previewFile)
8971
+ }
8972
+ )
8973
+ ));
8930
8974
  }
8931
8975
  UploadWrapper.__plasmicFormFieldMeta = {
8932
8976
  valueProp: "files",
@@ -8964,6 +9008,23 @@ function registerUpload(loader) {
8964
9008
  ],
8965
9009
  defaultValue: ""
8966
9010
  },
9011
+ listType: {
9012
+ type: "choice",
9013
+ options: ["text", "picture", "picture-card", "picture-circle"],
9014
+ defaultValueHint: "text"
9015
+ },
9016
+ dragAndDropFiles: {
9017
+ type: "boolean",
9018
+ defaultValueHint: false,
9019
+ advanced: true,
9020
+ description: "You can drag files to a specific area, to upload. Alternatively, you can also upload by selecting."
9021
+ },
9022
+ multiple: {
9023
+ type: "boolean",
9024
+ advanced: true,
9025
+ defaultValueHint: false,
9026
+ description: "Upload several files at once in modern browsers"
9027
+ },
8967
9028
  files: {
8968
9029
  type: "object",
8969
9030
  displayName: "Files",