@kingteza/crud-component 1.44.1 → 1.45.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 (35) hide show
  1. package/dist/_virtual/index.cjs.js +1 -1
  2. package/dist/_virtual/index.cjs2.js +1 -1
  3. package/dist/_virtual/index.cjs3.js +1 -1
  4. package/dist/_virtual/index.es.js +2 -5
  5. package/dist/_virtual/index.es2.js +5 -5
  6. package/dist/_virtual/index.es3.js +5 -2
  7. package/dist/common/picker/ImagePicker.cjs.js +1 -1
  8. package/dist/common/picker/ImagePicker.d.ts +6 -2
  9. package/dist/common/picker/ImagePicker.es.js +278 -232
  10. package/dist/crud/ImageCrudField.cjs.js +1 -1
  11. package/dist/crud/ImageCrudField.d.ts +3 -1
  12. package/dist/crud/ImageCrudField.es.js +133 -96
  13. package/dist/crud/modal/index.cjs.js +1 -1
  14. package/dist/crud/modal/index.es.js +120 -109
  15. package/dist/node_modules/.pnpm/input-format@0.3.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/input-format/modules/react/Input.cjs.js +1 -1
  16. package/dist/node_modules/.pnpm/input-format@0.3.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/input-format/modules/react/Input.es.js +1 -1
  17. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.cjs.js +1 -1
  18. package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.es.js +1 -1
  19. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/CountryIcon.cjs.js +1 -1
  20. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/CountryIcon.es.js +2 -2
  21. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/CountrySelect.cjs.js +1 -1
  22. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/CountrySelect.es.js +2 -2
  23. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/Flag.cjs.js +1 -1
  24. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/Flag.es.js +2 -2
  25. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InputBasic.cjs.js +1 -1
  26. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InputBasic.es.js +1 -1
  27. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InputSmart.cjs.js +1 -1
  28. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InputSmart.es.js +1 -1
  29. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InternationalIcon.cjs.js +1 -1
  30. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/InternationalIcon.es.js +1 -1
  31. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/PhoneInputWithCountry.cjs.js +1 -1
  32. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/PhoneInputWithCountry.es.js +2 -2
  33. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/PropTypes.cjs.js +1 -1
  34. package/dist/node_modules/.pnpm/react-phone-number-input@3.4.14_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-phone-number-input/modules/PropTypes.es.js +1 -1
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- "use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.cjs.js");var s=r.__require();const o=e.getDefaultExportFromCjs(s);module.exports=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e={exports:{}};exports.__module=e;
@@ -1 +1 @@
1
- "use strict";const s=require("./_commonjsHelpers.cjs.js"),e=require("../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.cjs.js");var r=e.__require();const t=s.getDefaultExportFromCjs(r);module.exports=t;
1
+ "use strict";const e=require("./_commonjsHelpers.cjs.js"),r=require("../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.cjs.js");var s=r.__require();const o=e.getDefaultExportFromCjs(s);module.exports=o;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e={exports:{}};exports.__module=e;
1
+ "use strict";const s=require("./_commonjsHelpers.cjs.js"),e=require("../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.cjs.js");var r=e.__require();const t=s.getDefaultExportFromCjs(r);module.exports=t;
@@ -1,7 +1,4 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.es.js";
2
- import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.es.js";
3
- var p = /* @__PURE__ */ o();
4
- const s = /* @__PURE__ */ r(p);
1
+ var p = { exports: {} };
5
2
  export {
6
- s as default
3
+ p as __module
7
4
  };
@@ -1,7 +1,7 @@
1
- import { getDefaultExportFromCjs as s } from "./_commonjsHelpers.es.js";
2
- import { __require as r } from "../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.es.js";
3
- var a = r();
4
- const t = /* @__PURE__ */ s(a);
1
+ import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.es.js";
2
+ import { __require as o } from "../node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.es.js";
3
+ var p = /* @__PURE__ */ o();
4
+ const s = /* @__PURE__ */ r(p);
5
5
  export {
6
- t as default
6
+ s as default
7
7
  };
@@ -1,4 +1,7 @@
1
- var p = { exports: {} };
1
+ import { getDefaultExportFromCjs as s } from "./_commonjsHelpers.es.js";
2
+ import { __require as r } from "../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.es.js";
3
+ var a = r();
4
+ const t = /* @__PURE__ */ s(a);
2
5
  export {
3
- p as __module
6
+ t as default
4
7
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),Fe=require("react-advanced-cropper"),P=require("@ant-design/icons"),I=require("antd"),r=require("react"),Oe=require("../../locale/index.cjs.js"),k=require("../button/Button.cjs.js"),le=require("../../util/ImageUtil.cjs.js"),ye=require("../../icons/FlipHIcon.cjs.js"),Re=require("../../icons/FlipVIcon.cjs.js"),Ue=I.Form.Item,ce="crud-component.image-picker.button-state";function A(i){return new Promise((p,f)=>{const o=new FileReader;o.readAsDataURL(i),o.onload=()=>p(o.result),o.onerror=g=>f(g)})}const qe=({values:i=[],required:p,buttonType:f,label:o,name:g,onChange:x,aspectRatio:F,buttonTitle:O,hidePreview:y,buttonSize:j="large",showButtonText:h=!0,showOnlyIcon:G=!1,icon:T=t.jsx(P.UploadOutlined,{}),loading:B,maxCount:R=1,onAdd:n,onRemove:M,listType:E,showSkipCropButton:de,skipResize:K,asyncUpload:U,...Q})=>{const[pe,me]=r.useState(""),[fe,ge]=r.useState(""),[xe,X]=r.useState(!1),_=r.useRef(),c=r.useRef(null),[a,b]=r.useState([]),[w,D]=r.useState(),je=r.useRef(),he=()=>X(!1),be=async e=>{!e.url&&!e.preview&&(e.preview=await A(e.originFileObj)),ge(e.url||e.preview),X(!0),me(e.name)},[Y,q]=r.useState(!1),Z=e=>{var s;(s=c.current)==null||s.rotateImage(e?-90:90)},ee=r.useCallback(e=>{var s;c.current&&((s=c.current)==null||s.flipImage(e==="h",e==="v"))},[]);r.useEffect(()=>{x==null||x(a[0],a)},[a,x]);const[H,J]=r.useState(),te=r.useCallback(async e=>{var z;const{type:s,size:l,name:v,uid:C}=_.current;if(J(e?"skip-crop":"crop"),q(!0),e){const S=_.current,L=K?S:await le.resizeImage(S),N=await A(L),m={url:N,name:v,uid:C,type:s,size:l,thumbUrl:N,originFileObj:L,status:U?"uploading":void 0};if(n)try{q(!0),U?n(m).then(()=>{b(V=>V.map(d=>d.uid===m.uid?{...d,status:"done"}:d))}):await n(m)}finally{q(!1)}b([m,...a]),q(!1),D(void 0),J(void 0)}else{const S=(z=c.current)==null?void 0:z.getCanvas();S==null||S.toBlob(async L=>{const N=Object.assign(new File([L],v,{type:s}),{uid:C}),m=K?N:await le.resizeImage(N),V=await A(m),d={url:V,name:v,uid:C,type:s,size:l,thumbUrl:V,originFileObj:m,status:U?"uploading":void 0};n&&(U?n(d).then(()=>{b(Ie=>Ie.map($=>$.uid===d.uid?{...$,status:"done"}:$))}):await n(d)),b([d,...a]),q(!1)}),D(void 0),J(void 0)}},[U]),we=()=>{D(void 0),_.current=void 0},se=r.useCallback(e=>{const s=e;if(s){_.current=s;const l=new FileReader;l.addEventListener("load",()=>{var v;if(typeof l.result=="string"){D(l.result);const C=localStorage.getItem(ce),z=C?JSON.parse(C):void 0;z&&((v=c.current)==null||v.setState(z)),setTimeout(()=>{ae(c.current)},100)}}),l.readAsDataURL(s)}},[]);r.useEffect(()=>{if(i!=null&&i.length||typeof i=="string"){const e=Array.isArray(i)?i.map(s=>[{uid:i,url:s}]):[{uid:i,url:i}];b(e)}},[i]);const{t:u}=Oe.useTranslationLib(),ve=r.useMemo(()=>p?{required:p,validator:(e,s,l)=>{w||a!=null&&a.length?l():l(`${o??""} ${u("err.validation.required")}`)}}:void 0,[p,w,a==null?void 0:a.length,o,u]),re=O??u("message.uploadButtonText"),ie=r.useMemo(()=>t.jsx(ue,{showLoadingIndicator:Y,_buttonTitle:re,buttonSize:j,buttonType:f,fileList:a,hidePreview:y,icon:T,loading:B,listType:E,maxCount:R,onChangeFile:se,onRemove:M,showButtonText:h,handlePreview:be,setFileList:b}),[Y,re,j,f,a,y,T,B,E,R,se,M,h]);je.current=ie.props.beforeUpload;const[Ce,oe]=r.useState(0),[Se,ne]=r.useState(0),[W,ke]=r.useState();r.useEffect(()=>{const e=setTimeout(()=>{W&&localStorage.setItem(ce,JSON.stringify(W))},400);return()=>clearTimeout(e)},[W]),r.useEffect(()=>{if(!w){oe(0),ne(0);const e=setTimeout(()=>{var s;(s=c.current)==null||s.reset()},1500);return()=>clearTimeout(e)}},[w]);const ae=r.useCallback(async e=>{if(e){const s=e.getCoordinates();ke(e.getState()),oe((s==null?void 0:s.width)??10),ne((s==null?void 0:s.height)??10)}},[]);return t.jsxs(t.Fragment,{children:[t.jsx(Ue,{label:o,...Q,name:g,className:"mb-0",rules:[ve,...Q.rules??[]],children:ie}),t.jsxs(I.Modal,{open:!!w,maskClosable:!1,onOk:()=>te(!1),closable:!1,okButtonProps:{loading:H==="crop",disabled:H==="skip-crop"},onCancel:we,footer:(e,{CancelBtn:s,OkBtn:l})=>de?t.jsxs(I.Space,{children:[t.jsx(s,{}),t.jsx(k,{type:"primary",loading:H==="skip-crop",disabled:H==="crop",onClick:()=>te(!0),children:u("str.skipCrop")}),t.jsx(l,{})]}):t.jsx(t.Fragment,{children:e}),destroyOnHidden:!0,children:[t.jsx(Fe.Cropper,{ref:c,stencilProps:{grid:!0},style:{border:"1px solid black"},src:w,onChange:e=>{ae(e)},aspectRatio:F?{minimum:F,maximum:F}:void 0}),t.jsx("p",{className:"text-center",children:[Ce,Se].join(" ⨉ ")}),t.jsx("div",{className:"mt-2 d-flex justify-content-center",children:t.jsxs(I.Space.Compact,{children:[t.jsx(k,{size:"large",tooltip:u("str.rotateLeft"),icon:t.jsx(P.RotateLeftOutlined,{}),onClick:()=>Z(!0)}),t.jsx(k,{size:"large",icon:t.jsx(P.RotateRightOutlined,{}),tooltip:u("str.rotateRight"),onClick:()=>Z(!1)}),t.jsx(k,{size:"large",icon:t.jsx(ye,{}),tooltip:u("str.flipHorizontal"),onClick:()=>ee("h")}),t.jsx(k,{size:"large",icon:t.jsx(Re,{}),tooltip:u("str.flipVertical"),onClick:()=>ee("v")})]})})]}),t.jsx(I.Modal,{open:xe,title:pe,footer:null,onCancel:he,children:t.jsx("div",{className:"text-center",children:t.jsx("img",{alt:"example",style:{maxWidth:"400px"},src:fe})})})]})},ue=({_buttonTitle:i,buttonSize:p,buttonType:f,fileList:o,hidePreview:g,icon:x,loading:F,maxCount:O,onChangeFile:y,onRemove:j,showButtonText:h,handlePreview:G,setFileList:T,showLoadingIndicator:B,listType:R="picture"})=>t.jsxs(I.Upload,{accept:"image/x-png,image/gif,image/jpeg",fileList:o,defaultFileList:o,onChange:()=>{},className:(o.length>=O?" hide-upload ":"")+" mb-0",multiple:!1,onPreview:g?void 0:G,onDrop:n=>(y(n.dataTransfer.files.item(0)),!1),listType:R,showUploadList:!g,onRemove:n=>{const M=o.filter(E=>n.uid!==E.uid);j==null||j(n),T(M)},beforeUpload:async n=>(y(n),!1),maxCount:O,children:[B&&t.jsx(P.LoadingOutlined,{}),t.jsx("div",{className:"d-flex flex-column",children:o.length<O&&(R==="picture-circle"?t.jsx(P.UploadOutlined,{}):t.jsx(k,{loading:F,tooltip:h?void 0:i,size:p,icon:x,type:h?f:"text",children:h?i:void 0}))})]},o.length);exports.UploadComponent=ue;exports.default=qe;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),Ie=require("react-advanced-cropper"),q=require("@ant-design/icons"),R=require("antd"),r=require("react"),ke=require("../../locale/index.cjs.js"),O=require("../button/Button.cjs.js"),le=require("../../util/ImageUtil.cjs.js"),Oe=require("../../icons/FlipHIcon.cjs.js"),Re=require("../../icons/FlipVIcon.cjs.js"),Ue=R.Form.Item,ue="crud-component.image-picker.button-state";function $(u){return new Promise((w,b)=>{const i=new FileReader;i.readAsDataURL(u),i.onload=()=>w(i.result),i.onerror=f=>b(f)})}const Pe=({values:u=[],getRealUrl:w,required:b,buttonType:i,label:f,name:H,onChange:y,aspectRatio:S,buttonTitle:N,hidePreview:F,buttonSize:C="large",showButtonText:T=!0,showOnlyIcon:A=!1,icon:z=t.jsx(q.UploadOutlined,{}),loading:U,maxCount:a=1,onAdd:I,onRemove:B,listType:G,showSkipCropButton:pe,skipCrop:K=!1,skipResize:V,asyncUpload:M,...Q})=>{const[me,fe]=r.useState(""),[ge,je]=r.useState(""),[xe,X]=r.useState(!1),E=r.useRef(),g=r.useRef(null),[d,j]=r.useState([]),[k,L]=r.useState(),he=r.useRef(),ve=()=>X(!1),we=async e=>{!e.url&&!e.preview&&(e.preview=await $(e.originFileObj)),je(e.url||e.preview),X(!0),fe(e.name)},[Y,P]=r.useState(!1),Z=e=>{var s;(s=g.current)==null||s.rotateImage(e?-90:90)},ee=r.useCallback(e=>{var s;g.current&&((s=g.current)==null||s.flipImage(e==="h",e==="v"))},[]);r.useEffect(()=>{y==null||y(d[0],d)},[d,y]);const[_,J]=r.useState(),D=r.useCallback(async e=>{var ae;const{type:s,size:o,name:h,uid:c}=E.current;J(e?"skip-crop":"crop"),P(!0);const v=async n=>{if(I)try{if(P(!0),M)j(l=>a<=1?[n]:[n,...l]),I(n).then(l=>{j(p=>p.map(m=>m.uid===n.uid?{...m,status:"done",response:l??m.response}:m))});else{const l=await I(n),p={...n,response:l??n.response,status:"done"};j(m=>a<=1?[p]:[p,...m])}}finally{P(!1)}else j(l=>a<=1?[n]:[n,...l])};if(e){const n=E.current,l=V?n:await le.resizeImage(n),p=await $(l);await v({url:p,name:h,uid:c,type:s,size:o,thumbUrl:p,originFileObj:l,status:M?"uploading":void 0}),P(!1),L(void 0),J(void 0)}else{const n=(ae=g.current)==null?void 0:ae.getCanvas();n==null||n.toBlob(async l=>{const p=Object.assign(new File([l],h,{type:s}),{uid:c}),m=V?p:await le.resizeImage(p),ce=await $(m);await v({url:ce,name:h,uid:c,type:s,size:o,thumbUrl:ce,originFileObj:m,status:M?"uploading":void 0}),P(!1),L(void 0),J(void 0)})}},[M,a,I,V]),be=()=>{L(void 0),E.current=void 0},te=r.useCallback(e=>{const s=e;if(!s)return;if(E.current=s,K){D(!0);return}const o=new FileReader;o.addEventListener("load",()=>{var h;if(typeof o.result=="string"){L(o.result);const c=localStorage.getItem(ue),v=c?JSON.parse(c):void 0;v&&((h=g.current)==null||h.setState(v)),setTimeout(()=>{ie(g.current)},100)}}),o.readAsDataURL(s)},[D,K]);r.useEffect(()=>{let e=!1;return(async()=>{if(u==null||u===""){e||j([]);return}const o=typeof u=="string"?[u]:u;if(!o.length){e||j([]);return}const h=await Promise.all(o.map(async c=>{const v=w?await w(c):c;return{uid:c,url:v,thumbUrl:v,response:c,name:c.split("/").pop()??c}}));e||j(h)})(),()=>{e=!0}},[u,w]);const{t:x}=ke.useTranslationLib(),Se=r.useMemo(()=>b?{required:b,validator:(e,s,o)=>{k||d!=null&&d.length?o():o(`${f??""} ${x("err.validation.required")}`)}}:void 0,[b,k,d==null?void 0:d.length,f,x]),se=N??x("message.uploadButtonText"),re=r.useMemo(()=>t.jsx(de,{showLoadingIndicator:Y,_buttonTitle:se,buttonSize:C,buttonType:i,fileList:d,hidePreview:F,icon:z,loading:U,listType:G,maxCount:a,onChangeFile:te,onRemove:B,showButtonText:T,handlePreview:we,setFileList:j}),[Y,se,C,i,d,F,z,U,G,a,te,B,T]);he.current=re.props.beforeUpload;const[ye,ne]=r.useState(0),[Fe,oe]=r.useState(0),[W,Ce]=r.useState();r.useEffect(()=>{const e=setTimeout(()=>{W&&localStorage.setItem(ue,JSON.stringify(W))},400);return()=>clearTimeout(e)},[W]),r.useEffect(()=>{if(!k){ne(0),oe(0);const e=setTimeout(()=>{var s;(s=g.current)==null||s.reset()},1500);return()=>clearTimeout(e)}},[k]);const ie=r.useCallback(async e=>{if(e){const s=e.getCoordinates();Ce(e.getState()),ne((s==null?void 0:s.width)??10),oe((s==null?void 0:s.height)??10)}},[]);return t.jsxs(t.Fragment,{children:[t.jsx(Ue,{label:f,...Q,name:H,className:"mb-0",rules:[Se,...Q.rules??[]],children:re}),t.jsxs(R.Modal,{open:!!k,maskClosable:!1,onOk:()=>D(!1),closable:!1,okButtonProps:{loading:_==="crop",disabled:_==="skip-crop"},onCancel:be,footer:(e,{CancelBtn:s,OkBtn:o})=>pe?t.jsxs(R.Space,{children:[t.jsx(s,{}),t.jsx(O,{type:"primary",loading:_==="skip-crop",disabled:_==="crop",onClick:()=>D(!0),children:x("str.skipCrop")}),t.jsx(o,{})]}):t.jsx(t.Fragment,{children:e}),destroyOnHidden:!0,children:[t.jsx(Ie.Cropper,{ref:g,stencilProps:{grid:!0},style:{border:"1px solid black"},src:k,onChange:e=>{ie(e)},aspectRatio:S?{minimum:S,maximum:S}:void 0}),t.jsx("p",{className:"text-center",children:[ye,Fe].join(" ⨉ ")}),t.jsx("div",{className:"mt-2 d-flex justify-content-center",children:t.jsxs(R.Space.Compact,{children:[t.jsx(O,{size:"large",tooltip:x("str.rotateLeft"),icon:t.jsx(q.RotateLeftOutlined,{}),onClick:()=>Z(!0)}),t.jsx(O,{size:"large",icon:t.jsx(q.RotateRightOutlined,{}),tooltip:x("str.rotateRight"),onClick:()=>Z(!1)}),t.jsx(O,{size:"large",icon:t.jsx(Oe,{}),tooltip:x("str.flipHorizontal"),onClick:()=>ee("h")}),t.jsx(O,{size:"large",icon:t.jsx(Re,{}),tooltip:x("str.flipVertical"),onClick:()=>ee("v")})]})})]}),t.jsx(R.Modal,{open:xe,title:me,footer:null,onCancel:ve,children:t.jsx("div",{className:"text-center",children:t.jsx("img",{alt:"example",style:{maxWidth:"400px"},src:ge})})})]})},de=({_buttonTitle:u,buttonSize:w,buttonType:b,fileList:i,hidePreview:f,icon:H,loading:y,maxCount:S,onChangeFile:N,onRemove:F,showButtonText:C,handlePreview:T,setFileList:A,showLoadingIndicator:z,listType:U="picture"})=>t.jsxs(R.Upload,{accept:"image/x-png,image/gif,image/jpeg",fileList:i,defaultFileList:i,onChange:()=>{},className:(i.length>=S?" hide-upload ":"")+" mb-0",multiple:!1,onPreview:f?void 0:T,onDrop:a=>(N(a.dataTransfer.files.item(0)),!1),listType:U,showUploadList:!f,onRemove:a=>{const I=i.filter(B=>a.uid!==B.uid);F==null||F(a),A(I)},beforeUpload:async a=>(N(a),!1),maxCount:S,children:[z&&t.jsx(q.LoadingOutlined,{}),t.jsx("div",{className:"d-flex flex-column",children:i.length<S&&(U==="picture-circle"?t.jsx(q.UploadOutlined,{}):t.jsx(O,{loading:y,tooltip:C?void 0:u,size:w,icon:H,type:C?b:"text",children:C?u:void 0}))})]},i.length);exports.UploadComponent=de;exports.default=Pe;
@@ -10,7 +10,9 @@ export interface UploadFileExtended<T = any> extends UploadFile<T> {
10
10
  status?: UploadFileStatus;
11
11
  }
12
12
  interface Props extends FormItemProps {
13
- values?: string[] | string;
13
+ values?: string | string[];
14
+ /** Resolve a stored path to a displayable URL. When omitted, `values` are treated as URLs. */
15
+ getRealUrl?: (path: string) => Promise<string>;
14
16
  maxCount?: number;
15
17
  onChange?: (file?: UploadFile, allFiles?: UploadFile[]) => void;
16
18
  buttonTitle?: string;
@@ -23,9 +25,11 @@ interface Props extends FormItemProps {
23
25
  icon?: ReactElement;
24
26
  loading?: boolean;
25
27
  buttonType?: string;
26
- onAdd?: (file?: UploadFileExtended) => Promise<void>;
28
+ onAdd?: (file?: UploadFileExtended) => Promise<string | void>;
27
29
  onRemove?: (file?: UploadFileExtended) => void;
28
30
  showSkipCropButton?: boolean;
31
+ /** When true, skips the crop modal entirely and uploads the original image. */
32
+ skipCrop?: boolean;
29
33
  skipResize?: boolean;
30
34
  asyncUpload?: boolean;
31
35
  }