@react-magma/dropzone 15.0.0-rc.1 → 16.0.0-next.1

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.
@@ -1,2 +1,2 @@
1
- var e=require("react-magma-dom"),n=require("react-magma-icons"),r=require("react/jsx-runtime"),t=require("react"),o=require("polished"),i=require("react-dropzone");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=/*#__PURE__*/l(t),s={default:{Icon:n.InsertDriveFileIcon,style:{color:e.magma.colors.neutral500}},word:{Icon:n.FileWordIcon,style:{color:e.magma.colors.info500}},excel:{Icon:n.FileExcelIcon,style:{color:e.magma.colors.success500}},powerpoint:{Icon:n.FilePowerpointIcon,style:{color:e.magma.colors.warning500}},pdf:{Icon:n.FilePdfIcon,style:{color:e.magma.colors.danger500}},image:{Icon:n.ImageIcon,style:{color:e.magma.colors.neutral500}},video:{Icon:n.VideocamIcon,style:{color:e.magma.colors.neutral500}},audio:{Icon:n.AudiotrackIcon,style:{color:e.magma.colors.neutral500}},archive:{Icon:n.FileZipIcon,style:{color:e.magma.colors.neutral500}}},c={default:s.default,xlsx:s.excel,xlsm:s.excel,xlsb:s.excel,xltx:s.excel,xls:s.excel,xlt:s.excel,doc:s.word,docx:s.word,docm:s.word,dotx:s.word,dotm:s.word,docb:s.word,pptx:s.powerpoint,pptm:s.powerpoint,ppt:s.powerpoint,pdf:s.pdf,png:s.image,svg:s.image,image:s.image,audio:s.audio,video:s.video,zip:s.archive},d=function(n){var t=n.file,o=n.isInverse,i=t.path,l=void 0===i?"":i,a=t.type,s=(void 0===a?"":a).split("/")[0],d=l.split(".").pop()||"default",u=c[d]||c[s]||c.default;/*#__PURE__*/return r.jsx(u.Icon,{size:e.magma.iconSizes.medium,style:o?{}:u.style})};function u(){return u=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},u.apply(null,arguments)}function p(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}function f(e,n){return n||(n=e.slice(0)),e.raw=n,e}var m,g,x,h,v,y,I,b,z,j,F,S,w,C=function(e,n,r){if(void 0===n&&(n=2),void 0===r&&(r="Bytes"),void 0!==e){if(0==e)return"0 "+r;var t=[r,"KB","MB","GB","TB","PB","EB","ZB","YB"],o=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,o)).toFixed(n))+" "+t[o]}},B=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],D=["code"],k=e.styled.div(m||(m=f(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var n=e.file;return"url('"+("preview"in n&&n.preview)+"')"}),R=e.styled.div(g||(g=f(["\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n"]))),O={marginRight:"12px",display:"flex"},A=e.styled.div(x||(x=f(["\n border-top: 1px solid ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),E=e.styled(e.Flex)(h||(h=f(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),H=e.styled(e.Flex)(v||(v=f(["\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),P=e.styled(e.Card)(y||(y=f(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n margin: 10px 0;\n"])),function(e){var n=e.theme;return e.file.errors?e.isInverse?n.colors.danger300:n.colors.danger:n.colors.neutral300}),T=e.styled.span(I||(I=f(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),M=e.styled.span(b||(b=f(["\n display: block;\n"]))),L=/*#__PURE__*/t.forwardRef(function(o,i){var l,s=o.accept,c=o.file,f=o.isInverse,m=o.maxSize,g=o.minSize,x=o.onDeleteFile,h=o.onRemoveFile,v=o.thumbnails,y=p(o,B),I=t.useContext(e.ThemeContext),b=a.default.useContext(e.I18nContext),z=e.useIsInverse(f),j=t.useState(/*#__PURE__*/r.jsx(n.CloseIcon,{})),F=j[0],S=j[1],w=function(){h&&"function"==typeof h&&h(c)},L=function(){x&&"function"==typeof x&&x(c)},V=function(o){var i=o.status,l=void 0===i?"ready":i,a=t.useState(!1),s=a[0],d=a[1];return t.useEffect(function(){var e=!0;return setTimeout(function(){e&&d(!0)},1e3),function(){e=!1}},[l]),"error"===l||"ready"===l?/*#__PURE__*/r.jsx(R,{children:/*#__PURE__*/r.jsx(e.IconButton,{onClick:w,variant:e.ButtonVariant.link,color:e.ButtonColor.secondary,"aria-label":b.dropzone.removeFile+" "+c.name,icon:/*#__PURE__*/r.jsx(n.CloseIcon,{})})}):"pending"===l?/*#__PURE__*/r.jsx(R,{children:/*#__PURE__*/r.jsx(e.Spinner,{color:z?I.colors.neutral100:I.colors.primary})}):/*#__PURE__*/r.jsxs(R,{children:[/*#__PURE__*/r.jsx(e.Transition,{isOpen:!s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/r.jsx(n.CheckCircleIcon,{color:z?I.colors.success200:I.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/r.jsx(e.Transition,{isOpen:s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/r.jsx(e.IconButton,{onClick:L,variant:e.ButtonVariant.link,color:e.ButtonColor.secondary,"aria-label":b.dropzone.deleteFile+" "+c.name,icon:/*#__PURE__*/r.jsx(n.DeleteIcon,{})})})]})};return t.useEffect(function(){var e;S(/*#__PURE__*/r.jsx(V,{status:null==c||null==(e=c.processor)?void 0:e.status}))},[null==c||null==(l=c.processor)?void 0:l.status]),/*#__PURE__*/r.jsx(e.InverseContext.Provider,{value:{isInverse:z},children:/*#__PURE__*/r.jsxs(P,{isInverse:z,theme:I,file:c,"data-testid":o.testId,ref:i,role:c.errors?"alert":"",children:[/*#__PURE__*/r.jsxs(E,u({theme:I,behavior:e.FlexBehavior.container,alignItems:e.FlexAlignItems.center},y,{children:[/*#__PURE__*/r.jsx(e.Flex,{behavior:e.FlexBehavior.item,alignItems:e.FlexAlignItems.center,style:O,children:c.errors?/*#__PURE__*/r.jsx(n.ErrorIcon,{color:z?I.colors.danger300:I.colors.danger,size:24}):c.preview&&v&&c.type&&c.type.startsWith("image")?/*#__PURE__*/r.jsx(k,{role:"img",file:c}):/*#__PURE__*/r.jsx(d,{isInverse:z,file:c})}),/*#__PURE__*/r.jsx(H,{xs:!0,behavior:e.FlexBehavior.item,theme:I,children:c.name}),c.processor&&"pending"===c.processor.status&&/*#__PURE__*/r.jsx(e.Flex,{role:"progressbar",style:{marginLeft:"auto"},behavior:e.FlexBehavior.item,children:c.processor.percent}),/*#__PURE__*/r.jsx(e.Flex,{behavior:e.FlexBehavior.item,children:F})]})),c.errors&&/*#__PURE__*/r.jsx(A,{theme:I,children:c.errors.slice(0,1).map(function(e){var n=e.code,t=function(e,n,r){var t=Array.isArray(n.accept)&&1===n.accept.length?n.accept[0]:n.accept,o=Array.isArray(t)?"one of "+t.join(", "):t;switch(e.code){case"file-too-large":return u({},e,{message:e.message+" "+C(n.maxSize,2,r)+"."});case"file-too-small":return u({},e,{message:e.message+" "+C(n.minSize,2,r)+"."});case"file-invalid-type":return u({},e,{message:e.message+": "+o});default:return e}}(u({code:n},p(e,D),b.dropzone.errors[n]),{accept:s,minSize:g,maxSize:m},b.dropzone.bytes),o=t.header,i=t.message;/*#__PURE__*/return r.jsxs(a.default.Fragment,{children:[/*#__PURE__*/r.jsx(T,{style:{color:z?I.colors.danger200:I.colors.danger},children:void 0===o?"":o}),/*#__PURE__*/r.jsx(M,{children:i})]},n)})})]})})}),V=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"],U=e.styled(e.Flex)(z||(z=f(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){return e.noDrag?"0px":"4px"},function(e){var n=e.dragState,r=void 0===n?"default":n,t=e.theme;return e.noDrag?"0px":"dragReject"===r||"error"===r?e.isInverse?"1px dashed "+t.colors.danger300:"1px dashed "+t.colors.danger:"dragActive"===r?"1px dashed "+t.colors.primary:"dragAccept"===r?"1px dashed "+t.colors.success:"1px dashed "+t.colors.neutral400},function(e){var n=e.dragState;return"error"===(void 0===n?"default":n)?"solid":"dashed"},function(e){var n=e.theme;return e.noDrag?"transparent":e.isInverse?o.transparentize(.75,n.colors.neutral900):n.colors.neutral200},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),q=e.styled.span(j||(j=f(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral100:n.colors.neutral700}),N=e.styled.div(F||(F=f(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var n=e.theme;return e.isInverse?n.colors.neutral100:n.colors.neutral700},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),G=e.styled.ul(S||(S=f(["\n list-style: none;\n padding: 0;\n"]))),W=e.styled.li(w||(w=f([""])));exports.Dropzone=/*#__PURE__*/a.default.forwardRef(function(o,l){var s=o.accept,c=o.containerStyle,d=o.disabled,f=o.dropzoneOptions,m=void 0===f?{multiple:!0}:f,g=o.helperMessage,x=o.id,h=o.inputSize,v=o.isInverse,y=o.isLabelVisuallyHidden,I=o.labelStyle,b=o.labelText,z=o.maxFiles,j=o.minFiles,F=o.maxSize,S=o.minSize,w=o.multiple,C=void 0===w||w,B=o.noDrag,D=void 0!==B&&B,k=o.onSendFile,R=o.onDeleteFile,O=o.onRemoveFile,A=o.sendFiles,E=void 0!==A&&A,H=o.testId,P=o.thumbnails,T=void 0===P||P,M=p(o,V),Z=a.default.useState([]),K=Z[0],Y=Z[1],J=a.default.useState(null),Q=J[0],X=J[1],$=a.default.useState(""),_=$[0],ee=$[1],ne=e.useIsInverse(v),re=a.default.useContext(e.ThemeContext),te=a.default.useContext(e.I18nContext),oe=e.useGenerateId(x),ie=e.useGenerateId(oe+"-helper"),le=a.default.useRef(null),ae=a.default.useCallback(function(e,n){var r=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),n.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(Y(function(e){return[].concat(e,r)}),e.length>0){var t=e.map(function(e){return e.name}).join(", "),o=1===e.length?te.dropzone.fileAdded.replace(/\{fileName\}/g,t):te.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,t);ee(o)}le.current&&le.current.focus()},[te]),se=i.useDropzone(u({noClick:!0,disabled:d,multiple:C,maxSize:F,minSize:S,accept:s,onDrop:ae,noDrag:D},m)),ce=se.getInputProps,de=se.getRootProps,ue=se.isDragAccept,pe=se.isDragActive,fe=se.isDragReject,me=se.open,ge=se.inputRef;t.useImperativeHandle(l,function(){return ge.current});var xe=ce({id:oe}),he="default";Q?he="error":ue?he="dragAccept":fe?he="dragReject":pe&&(he="dragActive");var ve=function(e){Y(function(n){return n.filter(function(n){return n!==e})}),O&&"function"==typeof O&&O(e);var n=te.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);ee(n),le.current&&le.current.focus()},ye=function(e){Y(function(n){return n.filter(function(n){return n!==e})}),R&&"function"==typeof R&&R(e);var n=te.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);ee(n),le.current&&le.current.focus()},Ie=function(e){if(Y(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:u({},n.processor,{percent:e.percent+"%",status:"pending"})}):n})}),e.percent>0&&e.percent%25==0){var n=te.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());ee(n)}},be=function(e){Y(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{processor:u({},n.processor,{percent:"",status:"finished"})}):n})});var n=te.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);ee(n)},ze=function(e){Y(function(n){return n.map(function(n){return n===e.file?Object.assign(n,{errors:e.errors,processor:u({},n.processor,{status:"error"})}):n})})};return a.default.useEffect(function(){return function(){K.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[K]),a.default.useEffect(function(){var e=j&&K.length<j,n=z&&K.length>z,r=null;n?r="too-many-files":e&&(r="too-few-files"),X(function(e,n){if(null===e)return null;var r=te.dropzone.errors[e];switch(e){case"too-many-files":return r.message+" "+n.maxFiles+" "+te.dropzone.files+".";case"too-few-files":return r.message+" "+n.minFiles+" "+te.dropzone.files+".";default:return r.message}}(r,{minFiles:j,maxFiles:z})),E&&K.length>0&&!n&&!e&&Y(function(e){return e.map(function(e){return e.errors||e.processor||!k||k({file:e,onError:ze,onFinish:be,onProgress:Ie}),e})})},[E,K.length,k,z,j,te.dropzone.errors,te.dropzone.files]),/*#__PURE__*/r.jsxs(e.InverseContext.Provider,{value:{isInverse:ne},children:[/*#__PURE__*/r.jsxs(e.FormFieldContainer,{actionable:!1,containerStyle:c,errorMessage:Q,fieldId:oe,inputSize:h,isInverse:ne,isLabelVisuallyHidden:y,labelStyle:I,labelText:b,messageStyle:{minHeight:0},"data-testid":H,children:[/*#__PURE__*/r.jsx(q,{id:ie,theme:re,isInverse:ne,children:g}),/*#__PURE__*/r.jsxs(U,u({behavior:e.FlexBehavior.container,dragState:he,isInverse:ne,noDrag:D,theme:re},de(),M,{testId:H,tabIndex:-1,children:[/*#__PURE__*/r.jsx("input",{ref:ge,type:xe.type,accept:xe.accept,autoComplete:xe.autoComplete,id:xe.id,multiple:xe.multiple,onChange:xe.onChange,onClick:xe.onClick,style:xe.style,tabIndex:xe.tabIndex,"data-testid":"file-input"}),D?/*#__PURE__*/r.jsx(e.Flex,{xs:!0,behavior:e.FlexBehavior.item,children:/*#__PURE__*/r.jsx(e.Button,{color:e.ButtonColor.primary,disabled:d,isInverse:ne,onClick:me,style:{margin:0},ref:le,"aria-describedby":g?ie:void 0,children:te.dropzone.browseFiles})}):/*#__PURE__*/r.jsxs(e.Flex,{behavior:e.FlexBehavior.item,children:[/*#__PURE__*/r.jsx(n.CloudUploadIcon,{"aria-hidden":"true",color:ne?re.colors.neutral100:re.colors.neutral500,size:48}),/*#__PURE__*/r.jsx(N,{isInverse:ne,theme:re,children:te.dropzone.dragMessage}),/*#__PURE__*/r.jsx(e.Button,{color:e.ButtonColor.primary,disabled:d,isInverse:ne,onClick:me,style:{margin:0},variant:e.ButtonVariant.solid,ref:le,"aria-describedby":g?ie:void 0,children:te.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/r.jsx(G,{children:K.map(function(e){/*#__PURE__*/return r.jsx(W,{children:/*#__PURE__*/r.jsx(L,{accept:s,file:e,isInverse:ne,maxSize:F,minSize:S,onDeleteFile:ye,onRemoveFile:ve,thumbnails:T})},e.name)})}),/*#__PURE__*/r.jsx(e.VisuallyHidden,{children:/*#__PURE__*/r.jsx(e.Announce,{children:_})})]})}),exports.FileIcon=d;
1
+ var e=require("react-magma-dom"),r=require("react-magma-icons"),n=require("react/jsx-runtime"),o=require("react"),t=require("polished"),i=require("react-dropzone");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=/*#__PURE__*/l(o),s={default:{Icon:r.InsertDriveFileIcon,style:{color:e.magma.colors.neutral700},inverseStyle:{color:e.magma.colors.neutral300}},word:{Icon:r.FileWordIcon,style:{color:e.magma.colors.blue500},inverseStyle:{color:e.magma.colors.blue500}},excel:{Icon:r.FileExcelIcon,style:{color:e.magma.colors.green500},inverseStyle:{color:e.magma.colors.green500}},powerpoint:{Icon:r.FilePowerpointIcon,style:{color:e.magma.colors.tangerine600},inverseStyle:{color:e.magma.colors.tangerine500}},pdf:{Icon:r.FilePdfIcon,style:{color:e.magma.colors.red600},inverseStyle:{color:e.magma.colors.red500}},image:{Icon:r.ImageIcon,style:{color:e.magma.colors.neutral700},inverseStyle:{color:e.magma.colors.neutral300}},video:{Icon:r.VideocamIcon,style:{color:e.magma.colors.neutral700},inverseStyle:{color:e.magma.colors.neutral300}},audio:{Icon:r.AudiotrackIcon,style:{color:e.magma.colors.neutral700},inverseStyle:{color:e.magma.colors.neutral300}},archive:{Icon:r.FileZipIcon,style:{color:e.magma.colors.neutral700},inverseStyle:{color:e.magma.colors.neutral300}}},c={default:s.default,xlsx:s.excel,xlsm:s.excel,xlsb:s.excel,xltx:s.excel,xls:s.excel,xlt:s.excel,doc:s.word,docx:s.word,docm:s.word,dotx:s.word,dotm:s.word,docb:s.word,pptx:s.powerpoint,pptm:s.powerpoint,ppt:s.powerpoint,pdf:s.pdf,png:s.image,svg:s.image,image:s.image,audio:s.audio,video:s.video,zip:s.archive},d=function(r){var o=r.file,t=r.isInverse,i=o.path,l=void 0===i?"":i,a=o.type,s=(void 0===a?"":a).split("/")[0],d=l.split(".").pop()||"default",u=c[d]||c[s]||c.default;/*#__PURE__*/return n.jsx(u.Icon,{size:e.magma.iconSizes.medium,style:t?u.inverseStyle:u.style})};function u(){return u=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},u.apply(null,arguments)}function p(e,r){if(null==e)return{};var n={};for(var o in e)if({}.hasOwnProperty.call(e,o)){if(-1!==r.indexOf(o))continue;n[o]=e[o]}return n}function f(e,r){return r||(r=e.slice(0)),e.raw=r,e}var m,g,v,x,h,y,b,I,z,S,j,F,w,C,B=function(e,r,n){if(void 0===r&&(r=2),void 0===n&&(n="Bytes"),void 0!==e){if(0==e)return"0 "+n;var o=[n,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(r))+" "+o[t]}},D=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],k=["code"],R=e.styled.div(m||(m=f(["\n background-image: ",";\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n"])),function(e){var r=e.file;return"url('"+("preview"in r&&r.preview)+"')"}),A=e.styled.div(g||(g=f(["\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n"]))),O={marginRight:"12px",display:"flex"},T=e.styled.div(v||(v=f(["\n border-top: 1px solid\n ",";\n padding: 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral300},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),E=e.styled(e.Flex)(x||(x=f(["\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),H=e.styled(e.Flex)(h||(h=f(["\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ",";\n line-height: ",";\n"])),function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight}),P=e.styled(e.Card)(y||(y=f(["\n background-color: none;\n border-color: ",";\n border-width: 1px;\n color: ",";\n margin: 10px 0;\n"])),function(e){var r=e.theme,n=e.isInverse;return e.file.errors?n?r.colors.red500:r.colors.danger:n?r.colors.neutral800:r.colors.neutral200},function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:e.file.errors?r.colors.neutral700:r.colors.brand.navy}),M=e.styled.span(b||(b=f(["\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n"]))),L=e.styled.span(I||(I=f(["\n display: block;\n"]))),V=/*#__PURE__*/o.forwardRef(function(t,i){var l,s=t.accept,c=t.file,f=t.isInverse,m=t.maxSize,g=t.minSize,v=t.onDeleteFile,x=t.onRemoveFile,h=t.thumbnails,y=p(t,D),b=o.useContext(e.ThemeContext),I=a.default.useContext(e.I18nContext),z=e.useIsInverse(f),S=o.useState(/*#__PURE__*/n.jsx(r.CloseIcon,{})),j=S[0],F=S[1],w=function(){x&&"function"==typeof x&&x(c)},C=function(){v&&"function"==typeof v&&v(c)},V=function(t){var i=t.status,l=void 0===i?"ready":i,a=o.useState(!1),s=a[0],d=a[1];return o.useEffect(function(){var e=!0;return setTimeout(function(){e&&d(!0)},1e3),function(){e=!1}},[l]),"error"===l||"ready"===l?/*#__PURE__*/n.jsx(A,{children:/*#__PURE__*/n.jsx(e.IconButton,{onClick:w,variant:e.ButtonVariant.link,color:e.ButtonColor.subtle,"aria-label":I.dropzone.removeFile+" "+c.name,icon:/*#__PURE__*/n.jsx(r.CloseIcon,{})})}):"pending"===l?/*#__PURE__*/n.jsx(A,{children:/*#__PURE__*/n.jsx(e.Spinner,{color:z?b.colors.brand.skyBlue:b.colors.primary})}):/*#__PURE__*/n.jsxs(A,{children:[/*#__PURE__*/n.jsx(e.Transition,{isOpen:!s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/n.jsx(r.CheckCircleIcon,{color:z?b.colors.green500:b.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/n.jsx(e.Transition,{isOpen:s,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/n.jsx(e.IconButton,{onClick:C,variant:e.ButtonVariant.link,color:e.ButtonColor.subtle,"aria-label":I.dropzone.deleteFile+" "+c.name,icon:/*#__PURE__*/n.jsx(r.DeleteIcon,{})})})]})};return o.useEffect(function(){var e;F(/*#__PURE__*/n.jsx(V,{status:null==c||null==(e=c.processor)?void 0:e.status}))},[null==c||null==(l=c.processor)?void 0:l.status]),/*#__PURE__*/n.jsx(e.InverseContext.Provider,{value:{isInverse:z},children:/*#__PURE__*/n.jsxs(P,{borderRadius:e.CardBorderRadius.small,cornerTreatment:e.CardCornerTreatment.all,isInverse:z,theme:b,file:c,"data-testid":t.testId,ref:i,role:c.errors?"alert":"",children:[/*#__PURE__*/n.jsxs(E,u({theme:b,behavior:e.FlexBehavior.container,alignItems:e.FlexAlignItems.center},y,{children:[/*#__PURE__*/n.jsx(e.Flex,{behavior:e.FlexBehavior.item,alignItems:e.FlexAlignItems.center,style:O,children:c.errors?/*#__PURE__*/n.jsx(r.ErrorIcon,{color:z?b.colors.red500:b.colors.danger,size:24}):c.preview&&h&&c.type&&c.type.startsWith("image")?/*#__PURE__*/n.jsx(R,{role:"img",file:c}):/*#__PURE__*/n.jsx(d,{isInverse:z,file:c})}),/*#__PURE__*/n.jsx(H,{xs:!0,behavior:e.FlexBehavior.item,theme:b,children:c.name}),c.processor&&"pending"===c.processor.status&&/*#__PURE__*/n.jsx(e.Flex,{role:"progressbar",style:{marginLeft:"auto"},behavior:e.FlexBehavior.item,children:c.processor.percent}),/*#__PURE__*/n.jsx(e.Flex,{behavior:e.FlexBehavior.item,children:j})]})),c.errors&&/*#__PURE__*/n.jsx(T,{theme:b,isInverse:z,children:c.errors.slice(0,1).map(function(e){var r=e.code,o=function(e,r,n){var o=Array.isArray(r.accept)&&1===r.accept.length?r.accept[0]:r.accept,t=Array.isArray(o)?"one of "+o.join(", "):o;switch(e.code){case"file-too-large":return u({},e,{message:e.message+" "+B(r.maxSize,2,n)+"."});case"file-too-small":return u({},e,{message:e.message+" "+B(r.minSize,2,n)+"."});case"file-invalid-type":return u({},e,{message:e.message+": "+t});default:return e}}(u({code:r},p(e,k),I.dropzone.errors[r]),{accept:s,minSize:g,maxSize:m},I.dropzone.bytes),t=o.header,i=o.message;/*#__PURE__*/return n.jsxs(a.default.Fragment,{children:[/*#__PURE__*/n.jsx(M,{style:{color:z?b.colors.red500:b.colors.danger},children:void 0===t?"":t}),/*#__PURE__*/n.jsx(L,{children:i})]},r)})})]})})}),N=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(C||(C={}));var U=e.styled(e.Flex)(z||(z=f(["\n flex-direction: column;\n align-items: ",";\n justify-content: ",";\n text-align: ",";\n padding: ",";\n border-radius: ",";\n border: ",";\n\n border-style: ",";\n background-color: ",";\n outline: none;\n transition: ",";\n"])),function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"left":"center"},function(e){return e.noDrag?"0px":"24px"},function(e){var r=e.theme;return e.noDrag?r.borderRadiusNone:r.borderRadiusSmall},function(e){var r=e.dragState,n=void 0===r?C.default:r,o=e.theme,t=e.isInverse;return e.noDrag?"0px":n===C.dragReject||n===C.error?t?(n===C.error?"1px":"2px")+" dashed "+(n===C.error?o.colors.red500:o.colors.red400):(n===C.error?"1px":"2px")+" dashed "+o.colors.danger:n===C.dragActive?"2px dashed "+o.colors.blue500:n===C.dragAccept?"2px dashed "+o.colors.green500:"2px dashed "+(t?o.colors.neutral800:o.colors.neutral300)},function(e){var r=e.dragState;return(void 0===r?C.default:r)===C.error?"solid":"dashed"},function(e){var r=e.theme;return e.noDrag?"transparent":e.isInverse?t.transparentize(.6,r.colors.neutral1200):r.colors.neutral100},function(e){return"border "+(e.noDrag?0:".24s")+" ease-in-out"}),q=e.styled.span(S||(S=f(["\n color: ",";\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral500:r.colors.neutral700}),G=e.styled.div(j||(j=f(["\n color: ",";\n margin: 0 0 24px 0;\n font-size: ",";\n line-height: ",";\n font-weight: 500;\n padding: ",";\n"])),function(e){var r=e.theme;return e.isInverse?r.colors.neutral0:r.colors.brand.navy},function(e){return e.theme.typeScale.size02.fontSize},function(e){return e.theme.typeScale.size02.lineHeight},function(e){return e.theme.spaceScale.spacing01}),W=e.styled.ul(F||(F=f(["\n list-style: none;\n padding: 0;\n"]))),Z=e.styled.li(w||(w=f([""])));exports.Dropzone=/*#__PURE__*/a.default.forwardRef(function(t,l){var s=t.accept,c=t.containerStyle,d=t.disabled,f=t.dropzoneOptions,m=void 0===f?{multiple:!0}:f,g=t.helperMessage,v=t.id,x=t.inputSize,h=t.isInverse,y=t.isLabelVisuallyHidden,b=t.labelStyle,I=t.labelText,z=t.maxFiles,S=t.minFiles,j=t.maxSize,F=t.minSize,w=t.multiple,B=void 0===w||w,D=t.noDrag,k=void 0!==D&&D,R=t.onSendFile,A=t.onDeleteFile,O=t.onRemoveFile,T=t.sendFiles,E=void 0!==T&&T,H=t.testId,P=t.thumbnails,M=void 0===P||P,L=p(t,N),K=a.default.useState([]),Y=K[0],J=K[1],Q=a.default.useState(null),X=Q[0],$=Q[1],_=a.default.useState(""),ee=_[0],re=_[1],ne=e.useIsInverse(h),oe=a.default.useContext(e.ThemeContext),te=a.default.useContext(e.I18nContext),ie=e.useGenerateId(v),le=e.useGenerateId(ie+"-helper"),ae=a.default.useRef(null),se=a.default.useCallback(function(e,r){var n=[].concat(e.map(function(e){return Object.assign(e,{preview:URL.createObjectURL(e)})}),r.map(function(e){return Object.assign(e.file,{errors:e.errors})}));if(J(function(e){return[].concat(e,n)}),e.length>0){var o=e.map(function(e){return e.name}).join(", "),t=1===e.length?te.dropzone.fileAdded.replace(/\{fileName\}/g,o):te.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,o);re(t)}ae.current&&ae.current.focus()},[te]),ce=i.useDropzone(u({noClick:!0,disabled:d,multiple:B,maxSize:j,minSize:F,accept:s,onDrop:se,noDrag:k},m)),de=ce.getInputProps,ue=ce.getRootProps,pe=ce.isDragAccept,fe=ce.isDragActive,me=ce.isDragReject,ge=ce.open,ve=ce.inputRef;o.useImperativeHandle(l,function(){return ve.current});var xe=de({id:ie}),he=C.default;X?he=C.error:pe?he=C.dragAccept:me?he=C.dragReject:fe&&(he=C.dragActive);var ye=function(e){J(function(r){return r.filter(function(r){return r!==e})}),O&&"function"==typeof O&&O(e);var r=te.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);re(r),ae.current&&ae.current.focus()},be=function(e){J(function(r){return r.filter(function(r){return r!==e})}),A&&"function"==typeof A&&A(e);var r=te.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);re(r),ae.current&&ae.current.focus()},Ie=function(e){if(J(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:u({},r.processor,{percent:e.percent+"%",status:"pending"})}):r})}),e.percent>0&&e.percent%25==0){var r=te.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());re(r)}},ze=function(e){J(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{processor:u({},r.processor,{percent:"",status:"finished"})}):r})});var r=te.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);re(r)},Se=function(e){J(function(r){return r.map(function(r){return r===e.file?Object.assign(r,{errors:e.errors,processor:u({},r.processor,{status:"error"})}):r})})};return a.default.useEffect(function(){return function(){Y.forEach(function(e){return e.preview&&URL.revokeObjectURL(e.preview)})}},[Y]),a.default.useEffect(function(){var e=S&&Y.length<S,r=z&&Y.length>z,n=null;r?n="too-many-files":e&&(n="too-few-files"),$(function(e,r){if(null===e)return null;var n=te.dropzone.errors[e];switch(e){case"too-many-files":return n.message+" "+r.maxFiles+" "+te.dropzone.files+".";case"too-few-files":return n.message+" "+r.minFiles+" "+te.dropzone.files+".";default:return n.message}}(n,{minFiles:S,maxFiles:z})),E&&Y.length>0&&!r&&!e&&J(function(e){return e.map(function(e){return e.errors||e.processor||!R||R({file:e,onError:Se,onFinish:ze,onProgress:Ie}),e})})},[E,Y.length,R,z,S,te.dropzone.errors,te.dropzone.files]),/*#__PURE__*/n.jsxs(e.InverseContext.Provider,{value:{isInverse:ne},children:[/*#__PURE__*/n.jsxs(e.FormFieldContainer,{actionable:!1,containerStyle:c,errorMessage:X,fieldId:ie,inputSize:x,isInverse:ne,isLabelVisuallyHidden:y,labelStyle:u({color:ne?oe.colors.neutral0:oe.colors.brand.navy},b),labelText:I,messageStyle:{minHeight:0},"data-testid":H,children:[/*#__PURE__*/n.jsx(q,{id:le,theme:oe,isInverse:ne,children:g}),/*#__PURE__*/n.jsxs(U,u({behavior:e.FlexBehavior.container,dragState:he,isInverse:ne,noDrag:k,theme:oe},ue(),L,{testId:H,tabIndex:-1,children:[/*#__PURE__*/n.jsx("input",{ref:ve,type:xe.type,accept:xe.accept,autoComplete:xe.autoComplete,id:xe.id,multiple:xe.multiple,onChange:xe.onChange,onClick:xe.onClick,style:xe.style,tabIndex:xe.tabIndex,"data-testid":"file-input"}),k?/*#__PURE__*/n.jsx(e.Flex,{xs:!0,behavior:e.FlexBehavior.item,children:/*#__PURE__*/n.jsx(e.Button,{color:e.ButtonColor.primary,disabled:d,isInverse:ne,onClick:ge,style:{margin:0},ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})}):/*#__PURE__*/n.jsxs(e.Flex,{behavior:e.FlexBehavior.item,children:[/*#__PURE__*/n.jsx(r.CloudUploadIcon,{"aria-hidden":"true",color:ne?oe.colors.neutral0:oe.colors.neutral700,size:48}),/*#__PURE__*/n.jsx(G,{isInverse:ne,theme:oe,children:te.dropzone.dragMessage}),/*#__PURE__*/n.jsx(e.Button,{color:e.ButtonColor.primary,disabled:d,isInverse:ne,onClick:ge,style:{margin:0},variant:e.ButtonVariant.solid,ref:ae,"aria-describedby":g?le:void 0,children:te.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/n.jsx(W,{children:Y.map(function(e){/*#__PURE__*/return n.jsx(Z,{children:/*#__PURE__*/n.jsx(V,{accept:s,file:e,isInverse:ne,maxSize:j,minSize:F,onDeleteFile:be,onRemoveFile:ye,thumbnails:M})},e.name)})}),/*#__PURE__*/n.jsx(e.VisuallyHidden,{children:/*#__PURE__*/n.jsx(e.Announce,{children:ee})})]})}),exports.FileIcon=d;
2
2
  //# sourceMappingURL=fileuploader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileuploader.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Preview.tsx","../src/components/dropzone/Dropzone.tsx"],"sourcesContent":["import React from 'react';\n\nimport { magma } from 'react-magma-dom';\nimport {\n InsertDriveFileIcon,\n ImageIcon,\n AudiotrackIcon,\n VideocamIcon,\n FileExcelIcon,\n FilePdfIcon,\n FilePowerpointIcon,\n FileWordIcon,\n FileZipIcon,\n IconProps,\n} from 'react-magma-icons';\n\nimport { FilePreview } from './FilePreview';\n\nexport interface FileIconProps extends IconProps {\n file: FilePreview;\n isInverse?: boolean;\n}\n\nconst icons = {\n default: {\n Icon: InsertDriveFileIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.info500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.success500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.warning500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.danger500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral500,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: { Icon: any; style: React.CSSProperties };\n} = {\n default: icons.default,\n xlsx: icons.excel,\n xlsm: icons.excel,\n xlsb: icons.excel,\n xltx: icons.excel,\n xls: icons.excel,\n xlt: icons.excel,\n doc: icons.word,\n docx: icons.word,\n docm: icons.word,\n dotx: icons.word,\n dotm: icons.word,\n docb: icons.word,\n pptx: icons.powerpoint,\n pptm: icons.powerpoint,\n ppt: icons.powerpoint,\n pdf: icons.pdf,\n png: icons.image,\n svg: icons.image,\n image: icons.image,\n audio: icons.audio,\n video: icons.video,\n zip: icons.archive,\n};\n\nexport const FileIcon = ({ file, isInverse }: FileIconProps) => {\n const { path = '', type = '' } = file;\n const category = type.split('/')[0];\n const extension = path.split('.').pop() || 'default';\n const { Icon, style } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return <Icon size={magma.iconSizes.medium} style={isInverse ? {} : style} />;\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint = 2,\n bytesLabel = 'Bytes'\n) => {\n if (bytes === undefined) return;\n if (bytes == 0) return `0 ${bytesLabel}`;\n const k = 1024;\n const sizes = [bytesLabel, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return (\n parseFloat((bytes / Math.pow(k, i)).toFixed(decimalPoint)) + ' ' + sizes[i]\n );\n};\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n Flex,\n FlexAlignItems,\n FlexBehavior,\n FlexProps,\n I18nContext,\n I18nInterface,\n IconButton,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n Transition,\n Spinner,\n useIsInverse,\n styled,\n} from 'react-magma-dom';\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\n\nexport interface PreviewProps extends Omit<FlexProps, 'behavior'> {\n accept?: string | string[];\n file: FilePreview;\n isInverse?: boolean;\n maxSize?: number;\n minSize?: number;\n onDeleteFile?: (file: FilePreview) => void;\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * @internal\n */\n testId?: string;\n thumbnails: boolean;\n}\n\nconst Thumb = styled.div<{ file: FilePreview }>`\n background-image: ${({ file }) =>\n `url('${'preview' in file && file.preview}')`};\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n`;\n\nconst StatusIcons = styled.div`\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n`;\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = styled.div`\n border-top: 1px solid ${({ theme }) => theme.colors.neutral300};\n padding: 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledFlex = styled(Flex)`\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst FileName = styled(Flex)`\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledCard = styled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.danger300\n : theme.colors.danger\n : theme.colors.neutral300};\n border-width: 1px;\n margin: 10px 0;\n`;\n\nconst ErrorHeader = styled.span`\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n`;\n\nconst ErrorMessage = styled.span`\n display: block;\n`;\n\nconst formatError = (\n error: { header?: string; message: string; code: string },\n constraints: {\n maxSize?: number;\n minSize?: number;\n accept?: string | string[];\n },\n byteLabel: string\n) => {\n const accept =\n Array.isArray(constraints.accept) && constraints.accept.length === 1\n ? constraints.accept[0]\n : constraints.accept;\n const messageSuffix = Array.isArray(accept)\n ? `one of ${accept.join(', ')}`\n : accept;\n\n switch (error.code) {\n case 'file-too-large':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.maxSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-too-small':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.minSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-invalid-type':\n return { ...error, message: `${error.message}: ${messageSuffix}` };\n default:\n return error;\n }\n};\n\nexport const Preview = forwardRef<\n HTMLDivElement,\n Omit<PreviewProps, 'children'>\n>((props, ref) => {\n const {\n accept,\n file,\n isInverse: isInverseProp,\n maxSize,\n minSize,\n onDeleteFile,\n onRemoveFile,\n testId,\n thumbnails,\n ...rest\n } = props;\n\n const theme: ThemeInterface = useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const isInverse = useIsInverse(isInverseProp);\n const [actions, setActions] = useState(<CloseIcon />);\n\n const handleRemoveFile = () => {\n onRemoveFile && typeof onRemoveFile === 'function' && onRemoveFile(file);\n };\n\n const handleDeleteFile = () => {\n onDeleteFile && typeof onDeleteFile === 'function' && onDeleteFile(file);\n };\n\n const FinishedActions = ({ status = 'ready' }: { status?: string }) => {\n const [done, setDone] = useState<boolean>(false);\n\n useEffect(() => {\n let mounted = true;\n\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n\n return () => {\n mounted = false;\n };\n }, [status]);\n\n if (status === 'error' || status === 'ready') {\n return (\n <StatusIcons>\n <IconButton\n onClick={handleRemoveFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={`${i18n.dropzone.removeFile} ${file.name}`}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={isInverse ? theme.colors.neutral100 : theme.colors.primary}\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.success200 : theme.colors.success}\n style={{ marginTop: '4px' }}\n />\n </Transition>\n <Transition isOpen={done} unmountOnExit fade>\n <IconButton\n onClick={handleDeleteFile}\n variant={ButtonVariant.link}\n color={ButtonColor.secondary}\n aria-label={`${i18n.dropzone.deleteFile} ${file.name}`}\n icon={<DeleteIcon />}\n />\n </Transition>\n </StatusIcons>\n );\n };\n\n useEffect(() => {\n setActions(<FinishedActions status={file?.processor?.status} />);\n }, [file?.processor?.status]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <StyledCard\n isInverse={isInverse}\n theme={theme}\n file={file}\n data-testid={props.testId}\n ref={ref}\n role={file.errors ? 'alert' : ''}\n >\n <StyledFlex\n theme={theme}\n behavior={FlexBehavior.container}\n alignItems={FlexAlignItems.center}\n {...rest}\n >\n <Flex\n behavior={FlexBehavior.item}\n alignItems={FlexAlignItems.center}\n style={IconStyles}\n >\n {file.errors ? (\n <ErrorIcon\n color={isInverse ? theme.colors.danger300 : theme.colors.danger}\n size={24}\n />\n ) : file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image') ? (\n <Thumb role=\"img\" file={file} />\n ) : (\n <FileIcon isInverse={isInverse} file={file} />\n )}\n </Flex>\n <FileName xs behavior={FlexBehavior.item} theme={theme}>\n {file.name}\n </FileName>\n {file.processor && file.processor.status === 'pending' && (\n <Flex\n role=\"progressbar\"\n style={{ marginLeft: 'auto' }}\n behavior={FlexBehavior.item}\n >\n {file.processor.percent}\n </Flex>\n )}\n <Flex behavior={FlexBehavior.item}>{actions}</Flex>\n </StyledFlex>\n {file.errors && (\n <Errors theme={theme}>\n {file.errors.slice(0, 1).map(({ code, ...rest }) => {\n const { header = '', message } = formatError(\n { code, ...rest, ...i18n.dropzone.errors[code] },\n { accept, minSize, maxSize },\n i18n.dropzone.bytes\n );\n\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.danger200\n : theme.colors.danger,\n }}\n >\n {header}\n </ErrorHeader>\n <ErrorMessage>{message}</ErrorMessage>\n </React.Fragment>\n );\n })}\n </Errors>\n )}\n </StyledCard>\n </InverseContext.Provider>\n );\n});\n","/* eslint-disable no-empty-pattern */\n/**\n * HELPFUL NOTE!\n * SINCE THIS PACKAGE USES `FILE` WE MUST USE `Object.assign` IN LIEU OF SPREADING\n * `{...file}` WILL NOT COPY ALL OF THE FILE PROPERTIES\n */\n\nimport React, { useImperativeHandle } from 'react';\n\nimport { transparentize } from 'polished';\nimport {\n useDropzone,\n DropzoneOptions,\n DropzoneRootProps,\n FileRejection,\n} from 'react-dropzone';\nimport {\n Button,\n ButtonColor,\n ButtonVariant,\n Flex,\n FlexBehavior,\n FlexProps,\n FormFieldContainer,\n FormFieldContainerBaseProps,\n I18nContext,\n I18nInterface,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n useGenerateId,\n useIsInverse,\n styled,\n Announce,\n VisuallyHidden,\n} from 'react-magma-dom';\nimport { CloudUploadIcon } from 'react-magma-icons';\n\nimport { FilePreview, FileError } from './FilePreview';\nimport { Preview } from './Preview';\n\nexport interface OnSendFileProps {\n file: FilePreview;\n onError?: ({}: { errors: FileError[]; file: FilePreview }) => void;\n onFinish?: ({}: { file: FilePreview }) => void;\n onProgress?: ({}: { percent: number; file: FilePreview }) => void;\n}\n\ntype DragState =\n | 'error'\n | 'dragAccept'\n | 'dragReject'\n | 'dragActive'\n | 'default';\n\n// NOTE: These props are manually copied to dropzone.mdx\nexport interface DropzoneProps\n extends Omit<FormFieldContainerBaseProps, 'fieldId' | 'errorMessage'> {\n /**\n * Set accepted file types. See https://github.com/okonet/attr-accept for more information. Keep in mind that mime type determination is not reliable across platforms. CSV files, for example, are reported as text/plain under macOS but as application/vnd.ms-excel under Windows. In some cases there might not be a mime type set at all. See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept?: string | string[];\n /**\n * Enable/Disable the input\n */\n disabled?: boolean;\n /**\n * Additional props to pass to the dropzone, see https://react-dropzone.js.org/#src\n */\n dropzoneOptions?: Partial<Omit<DropzoneOptions, 'onDrop'>>;\n /**\n * Content of the helper message.\n */\n helperMessage?: string;\n /**\n * @internal\n */\n id?: string;\n /**\n * Maximum accepted number of files The default value is 0 which means there is no limitation to how many files are accepted.\n * @default 0\n */\n maxFiles?: number;\n /**\n * Minimum accepted number of files.\n */\n minFiles?: number;\n /**\n * Maximum file size (in bytes)\n * @default Infinity\n */\n maxSize?: number;\n /**\n * Minimum file size (in bytes)\n * @default 0\n */\n minSize?: number;\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files.\n * @default true\n */\n multiple?: boolean;\n /**\n * If true, disables drag 'n' drop\n * @default false\n */\n noDrag?: boolean;\n /**\n * Callback for when a file is deleted\n */\n onDeleteFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is deleted\n */\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is added to the preview list via dropping or selecting. Will be ran on new files when `sendFiles` is true.\n */\n onSendFile?: (props: OnSendFileProps) => void;\n /**\n * Run `onSendFile` on any new files. Delay processing by setting to `false` until processing is desired.\n * @default false\n */\n sendFiles?: boolean;\n /**\n * @internal\n */\n testId?: string;\n /**\n * Show thumbnails for images in lieu of the file icon.\n * @default true\n */\n thumbnails?: boolean;\n}\n\nconst Container = styled(Flex)<\n DropzoneRootProps &\n FlexProps & {\n dragState?: DragState;\n noDrag?: boolean;\n isInverse?: boolean;\n }\n>`\n flex-direction: column;\n align-items: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n justify-content: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n text-align: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n padding: ${({ noDrag }) => (noDrag ? '0px' : '24px')};\n border-radius: ${({ noDrag }) => (noDrag ? '0px' : '4px')};\n border: ${({ dragState = 'default', noDrag, theme, isInverse }) =>\n noDrag\n ? `0px`\n : dragState === 'dragReject' || dragState === 'error'\n ? isInverse\n ? `1px dashed ${theme.colors.danger300}`\n : `1px dashed ${theme.colors.danger}`\n : dragState === 'dragActive'\n ? `1px dashed ${theme.colors.primary}`\n : dragState === 'dragAccept'\n ? `1px dashed ${theme.colors.success}`\n : `1px dashed ${theme.colors.neutral400}`};\n\n border-style: ${({ dragState = 'default' }) =>\n dragState === 'error' ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.75, theme.colors.neutral900)\n : theme.colors.neutral200};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = styled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = styled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral100 : theme.colors.neutral700};\n margin: 0 0 24px 0;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n font-weight: 500;\n padding: ${({ theme }) => theme.spaceScale.spacing01};\n`;\n\nconst PreviewList = styled.ul`\n list-style: none;\n padding: 0;\n`;\n\nconst PreviewItem = styled.li``;\n\nexport const Dropzone = React.forwardRef<HTMLInputElement, DropzoneProps>(\n (props, ref) => {\n const {\n accept,\n containerStyle,\n disabled,\n\n dropzoneOptions = {\n multiple: true,\n },\n helperMessage,\n id: defaultId,\n inputSize,\n isInverse: isInverseProp,\n isLabelVisuallyHidden,\n labelStyle,\n labelText,\n maxFiles,\n minFiles,\n maxSize,\n minSize,\n multiple = true,\n noDrag = false,\n onSendFile,\n onDeleteFile,\n onRemoveFile,\n sendFiles = false,\n testId,\n thumbnails = true,\n ...rest\n } = props;\n\n const [files, setFiles] = React.useState<FilePreview[]>([]);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n const [announcement, setAnnouncement] = React.useState<string>('');\n\n const isInverse = useIsInverse(isInverseProp);\n const theme: ThemeInterface = React.useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const id = useGenerateId(defaultId);\n const helperMessageId = useGenerateId(`${id}-helper`);\n\n const browseFileButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n const newFiles = [\n ...acceptedFiles.map((file: FilePreview) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n ),\n ...rejectedFiles.map(\n ({ file, errors }: { file: FilePreview; errors: FileError[] }) =>\n Object.assign(file, {\n errors,\n })\n ),\n ];\n\n setFiles((prevFiles: FilePreview[]) => [...prevFiles, ...newFiles]);\n\n if (acceptedFiles.length > 0) {\n const fileNames = acceptedFiles.map(file => file.name).join(', ');\n const message =\n acceptedFiles.length === 1\n ? i18n.dropzone.fileAdded.replace(/\\{fileName\\}/g, fileNames)\n : i18n.dropzone.filesAdded\n .replace(/\\{count\\}/g, acceptedFiles.length.toString())\n .replace(/\\{fileNames\\}/g, fileNames);\n\n setAnnouncement(message);\n }\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n },\n [i18n]\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n inputRef,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n ...dropzoneOptions,\n });\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => inputRef.current\n );\n\n const inputProps = getInputProps({ id });\n\n let dragState: DragState = 'default';\n\n if (errorMessage) {\n dragState = 'error';\n } else if (isDragAccept) {\n dragState = 'dragAccept';\n } else if (isDragReject) {\n dragState = 'dragReject';\n } else if (isDragActive) {\n dragState = 'dragActive';\n }\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onRemoveFile && typeof onRemoveFile === 'function') {\n onRemoveFile(removedFile);\n }\n\n const message = i18n.dropzone.fileRemoved.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onDeleteFile && typeof onDeleteFile === 'function') {\n onDeleteFile(removedFile);\n }\n\n const message = i18n.dropzone.fileDeleted.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const setProgress = (progressProps: {\n percent: number;\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === progressProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${progressProps.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n\n // Announce progress every 25% to avoid too many announcements\n if (progressProps.percent > 0 && progressProps.percent % 25 === 0) {\n const message = i18n.dropzone.fileUploading\n .replace(/\\{fileName\\}/g, progressProps.file.name)\n .replace(/\\{percent\\}/g, progressProps.percent.toString());\n\n setAnnouncement(message);\n }\n };\n\n const setFinished = (finishedProps: { file: FilePreview }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === finishedProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n\n // Announce successful upload\n const message = i18n.dropzone.fileUploaded.replace(\n /\\{fileName\\}/g,\n finishedProps.file.name\n );\n\n setAnnouncement(message);\n };\n\n const setError = (errorProps: {\n errors: FileError[];\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === errorProps.file\n ? Object.assign(file, {\n errors: errorProps.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\n );\n };\n\n React.useEffect(\n () => () => {\n files.forEach(\n file => file.preview && URL.revokeObjectURL(file.preview)\n );\n },\n [files]\n );\n\n React.useEffect(() => {\n const formatError = (\n code: string | null,\n constraints: { maxFiles?: number; minFiles?: number }\n ) => {\n if (code === null) return null;\n const error = i18n.dropzone.errors[code];\n\n switch (code) {\n case 'too-many-files':\n return `${error.message} ${constraints.maxFiles} ${i18n.dropzone.files}.`;\n case 'too-few-files':\n return `${error.message} ${constraints.minFiles} ${i18n.dropzone.files}.`;\n default:\n return error.message;\n }\n };\n\n const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n let errorCode: string | null = null;\n\n if (maxFileError) {\n errorCode = 'too-many-files';\n } else if (minFileError) {\n errorCode = 'too-few-files';\n }\n\n setErrorMessage(formatError(errorCode, { minFiles, maxFiles }));\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((prevFiles: FilePreview[]) => {\n return prevFiles.map((file: FilePreview) => {\n if (!file.errors && !file.processor && onSendFile) {\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n }\n\n return file;\n });\n });\n }\n }, [\n sendFiles,\n files.length,\n onSendFile,\n maxFiles,\n minFiles,\n i18n.dropzone.errors,\n i18n.dropzone.files,\n ]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <FormFieldContainer\n actionable={false}\n containerStyle={containerStyle}\n errorMessage={errorMessage}\n fieldId={id}\n inputSize={inputSize}\n isInverse={isInverse}\n isLabelVisuallyHidden={isLabelVisuallyHidden}\n labelStyle={labelStyle}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage\n id={helperMessageId}\n theme={theme}\n isInverse={isInverse}\n >\n {helperMessage}\n </HelperMessage>\n <Container\n behavior={FlexBehavior.container}\n dragState={dragState}\n isInverse={isInverse}\n noDrag={noDrag}\n theme={theme}\n {...getRootProps()}\n {...rest}\n testId={testId}\n tabIndex={-1}\n >\n <input\n ref={inputRef}\n type={inputProps.type}\n accept={inputProps.accept}\n autoComplete={inputProps.autoComplete}\n id={inputProps.id}\n multiple={inputProps.multiple}\n onChange={inputProps.onChange}\n onClick={inputProps.onClick}\n style={inputProps.style}\n tabIndex={inputProps.tabIndex}\n data-testid=\"file-input\"\n />\n {noDrag ? (\n <Flex xs behavior={FlexBehavior.item}>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n ) : (\n <Flex behavior={FlexBehavior.item}>\n <CloudUploadIcon\n aria-hidden=\"true\"\n color={\n isInverse\n ? theme.colors.neutral100\n : theme.colors.neutral500\n }\n size={48}\n />\n <Wrapper isInverse={isInverse} theme={theme}>\n {i18n.dropzone.dragMessage}\n </Wrapper>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n variant={ButtonVariant.solid}\n ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n <PreviewList>\n {files.map((file: FilePreview) => (\n <PreviewItem key={file.name}>\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n </PreviewItem>\n ))}\n </PreviewList>\n\n <VisuallyHidden>\n <Announce>{announcement}</Announce>\n </VisuallyHidden>\n </InverseContext.Provider>\n );\n }\n);\n"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral500","word","FileWordIcon","info500","excel","FileExcelIcon","success500","powerpoint","FilePowerpointIcon","warning500","pdf","FilePdfIcon","danger500","image","ImageIcon","video","VideocamIcon","audio","AudiotrackIcon","archive","FileZipIcon","iconMapping","xlsx","xlsm","xlsb","xltx","xls","xlt","doc","docx","docm","dotx","dotm","docb","pptx","pptm","ppt","png","svg","zip","FileIcon","_ref","file","isInverse","_file$path","path","_file$type","type","category","split","extension","pop","_ref2","_jsx","size","iconSizes","medium","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","_excluded","_excluded2","Thumb","styled","div","_taggedTemplateLiteralLoose","preview","StatusIcons","IconStyles","marginRight","display","Errors","theme","neutral300","_ref3","typeScale","size02","fontSize","_ref4","lineHeight","StyledFlex","Flex","_ref5","_ref6","FileName","_ref7","_ref8","StyledCard","Card","_ref9","errors","danger300","danger","ErrorHeader","span","ErrorMessage","Preview","forwardRef","props","ref","_file$processor2","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","thumbnails","rest","_objectWithoutPropertiesLoose","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","_useState","useState","CloseIcon","actions","setActions","handleRemoveFile","handleDeleteFile","FinishedActions","_ref0","_ref0$status","status","_useState2","done","setDone","useEffect","mounted","setTimeout","jsx","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","secondary","dropzone","removeFile","name","icon","Spinner","neutral100","primary","_jsxs","jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success200","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","InverseContext","Provider","value","testId","role","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","ErrorIcon","startsWith","xs","marginLeft","percent","slice","map","_ref1","code","_formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","message","formatError","_formatError$header","header","Fragment","danger200","Container","noDrag","_ref6$dragState","dragState","neutral400","_ref7$dragState","transparentize","neutral900","neutral200","HelperMessage","neutral700","Wrapper","_ref10","_ref11","_ref12","spaceScale","spacing01","PreviewList","ul","PreviewItem","li","containerStyle","disabled","_props$dropzoneOption","dropzoneOptions","multiple","helperMessage","defaultId","id","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","_props$multiple","_props$noDrag","onSendFile","_props$sendFiles","sendFiles","_props$thumbnails","_React$useState","files","setFiles","_React$useState2","errorMessage","setErrorMessage","_React$useState3","announcement","setAnnouncement","useGenerateId","helperMessageId","browseFileButtonRef","useRef","onDrop","useCallback","acceptedFiles","rejectedFiles","newFiles","concat","Object","assign","URL","createObjectURL","_ref13","prevFiles","fileNames","fileAdded","replace","filesAdded","toString","current","focus","_useDropzone","useDropzone","noClick","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","inputRef","useImperativeHandle","inputProps","removedFile","filter","fileRemoved","fileDeleted","setProgress","progressProps","fileUploading","setFinished","finishedProps","fileUploaded","setError","errorProps","forEach","revokeObjectURL","minFileError","maxFileError","errorCode","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid","VisuallyHidden","Announce"],"mappings":"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"}
1
+ {"version":3,"file":"fileuploader.js","sources":["../src/components/dropzone/FileIcon.tsx","../src/components/dropzone/utils.ts","../src/components/dropzone/Dropzone.tsx","../src/components/dropzone/Preview.tsx"],"sourcesContent":["import React from 'react';\n\nimport { magma } from 'react-magma-dom';\nimport {\n InsertDriveFileIcon,\n ImageIcon,\n AudiotrackIcon,\n VideocamIcon,\n FileExcelIcon,\n FilePdfIcon,\n FilePowerpointIcon,\n FileWordIcon,\n FileZipIcon,\n IconProps,\n} from 'react-magma-icons';\n\nimport { FilePreview } from './FilePreview';\n\nexport interface FileIconProps extends IconProps {\n file: FilePreview;\n isInverse?: boolean;\n}\n\nconst icons = {\n default: {\n Icon: InsertDriveFileIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n word: {\n Icon: FileWordIcon,\n style: {\n color: magma.colors.blue500,\n },\n inverseStyle: {\n color: magma.colors.blue500,\n },\n },\n excel: {\n Icon: FileExcelIcon,\n style: {\n color: magma.colors.green500,\n },\n inverseStyle: {\n color: magma.colors.green500,\n },\n },\n powerpoint: {\n Icon: FilePowerpointIcon,\n style: {\n color: magma.colors.tangerine600,\n },\n inverseStyle: {\n color: magma.colors.tangerine500,\n },\n },\n pdf: {\n Icon: FilePdfIcon,\n style: {\n color: magma.colors.red600,\n },\n inverseStyle: {\n color: magma.colors.red500,\n },\n },\n image: {\n Icon: ImageIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n video: {\n Icon: VideocamIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n audio: {\n Icon: AudiotrackIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n archive: {\n Icon: FileZipIcon,\n style: {\n color: magma.colors.neutral700,\n },\n inverseStyle: {\n color: magma.colors.neutral300,\n },\n },\n};\n\nconst iconMapping: {\n [key: string]: {\n Icon: any;\n style: React.CSSProperties;\n inverseStyle: React.CSSProperties;\n };\n} = {\n default: icons.default,\n xlsx: icons.excel,\n xlsm: icons.excel,\n xlsb: icons.excel,\n xltx: icons.excel,\n xls: icons.excel,\n xlt: icons.excel,\n doc: icons.word,\n docx: icons.word,\n docm: icons.word,\n dotx: icons.word,\n dotm: icons.word,\n docb: icons.word,\n pptx: icons.powerpoint,\n pptm: icons.powerpoint,\n ppt: icons.powerpoint,\n pdf: icons.pdf,\n png: icons.image,\n svg: icons.image,\n image: icons.image,\n audio: icons.audio,\n video: icons.video,\n zip: icons.archive,\n};\n\nexport const FileIcon = ({ file, isInverse }: FileIconProps) => {\n const { path = '', type = '' } = file;\n const category = type.split('/')[0];\n const extension = path.split('.').pop() || 'default';\n const { Icon, style, inverseStyle } =\n iconMapping[extension] || iconMapping[category] || iconMapping.default;\n\n return (\n <Icon\n size={magma.iconSizes.medium}\n style={isInverse ? inverseStyle : style}\n />\n );\n};\n","export const formatFileSize = (\n bytes: number | undefined,\n decimalPoint = 2,\n bytesLabel = 'Bytes'\n) => {\n if (bytes === undefined) return;\n if (bytes == 0) return `0 ${bytesLabel}`;\n const k = 1024;\n const sizes = [bytesLabel, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return (\n parseFloat((bytes / Math.pow(k, i)).toFixed(decimalPoint)) + ' ' + sizes[i]\n );\n};\n","/* eslint-disable no-empty-pattern */\n/**\n * HELPFUL NOTE!\n * SINCE THIS PACKAGE USES `FILE` WE MUST USE `Object.assign` IN LIEU OF SPREADING\n * `{...file}` WILL NOT COPY ALL OF THE FILE PROPERTIES\n */\n\nimport React, { useImperativeHandle } from 'react';\n\nimport { transparentize } from 'polished';\nimport {\n useDropzone,\n DropzoneOptions,\n DropzoneRootProps,\n FileRejection,\n} from 'react-dropzone';\nimport {\n Button,\n ButtonColor,\n ButtonVariant,\n Flex,\n FlexBehavior,\n FlexProps,\n FormFieldContainer,\n FormFieldContainerBaseProps,\n I18nContext,\n I18nInterface,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n useGenerateId,\n useIsInverse,\n styled,\n Announce,\n VisuallyHidden,\n} from 'react-magma-dom';\nimport { CloudUploadIcon } from 'react-magma-icons';\n\nimport { FilePreview, FileError } from './FilePreview';\nimport { Preview } from './Preview';\n\nexport interface OnSendFileProps {\n file: FilePreview;\n onError?: ({}: { errors: FileError[]; file: FilePreview }) => void;\n onFinish?: ({}: { file: FilePreview }) => void;\n onProgress?: ({}: { percent: number; file: FilePreview }) => void;\n}\n\nenum DragState {\n error = 'error',\n dragAccept = 'dragAccept',\n dragReject = 'dragReject',\n dragActive = 'dragActive',\n default = 'default',\n}\n\n// NOTE: These props are manually copied to dropzone.mdx\nexport interface DropzoneProps\n extends Omit<FormFieldContainerBaseProps, 'fieldId' | 'errorMessage'> {\n /**\n * Set accepted file types. See https://github.com/okonet/attr-accept for more information. Keep in mind that mime type determination is not reliable across platforms. CSV files, for example, are reported as text/plain under macOS but as application/vnd.ms-excel under Windows. In some cases there might not be a mime type set at all. See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept?: string | string[];\n /**\n * Enable/Disable the input\n */\n disabled?: boolean;\n /**\n * Additional props to pass to the dropzone, see https://react-dropzone.js.org/#src\n */\n dropzoneOptions?: Partial<Omit<DropzoneOptions, 'onDrop'>>;\n /**\n * Content of the helper message.\n */\n helperMessage?: string;\n /**\n * @internal\n */\n id?: string;\n /**\n * Maximum accepted number of files The default value is 0 which means there is no limitation to how many files are accepted.\n * @default 0\n */\n maxFiles?: number;\n /**\n * Minimum accepted number of files.\n */\n minFiles?: number;\n /**\n * Maximum file size (in bytes)\n * @default Infinity\n */\n maxSize?: number;\n /**\n * Minimum file size (in bytes)\n * @default 0\n */\n minSize?: number;\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files.\n * @default true\n */\n multiple?: boolean;\n /**\n * If true, disables drag 'n' drop\n * @default false\n */\n noDrag?: boolean;\n /**\n * Callback for when a file is deleted\n */\n onDeleteFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is deleted\n */\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * Callback for when a file is added to the preview list via dropping or selecting. Will be ran on new files when `sendFiles` is true.\n */\n onSendFile?: (props: OnSendFileProps) => void;\n /**\n * Run `onSendFile` on any new files. Delay processing by setting to `false` until processing is desired.\n * @default false\n */\n sendFiles?: boolean;\n /**\n * @internal\n */\n testId?: string;\n /**\n * Show thumbnails for images in lieu of the file icon.\n * @default true\n */\n thumbnails?: boolean;\n}\n\nconst Container = styled(Flex)<\n DropzoneRootProps &\n FlexProps & {\n dragState?: DragState;\n noDrag?: boolean;\n isInverse?: boolean;\n }\n>`\n flex-direction: column;\n align-items: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n justify-content: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n text-align: ${({ noDrag }) => (noDrag ? 'left' : 'center')};\n padding: ${({ noDrag }) => (noDrag ? '0px' : '24px')};\n border-radius: ${({ noDrag, theme }) =>\n noDrag ? theme.borderRadiusNone : theme.borderRadiusSmall};\n border: ${({ dragState = DragState.default, noDrag, theme, isInverse }) =>\n noDrag\n ? `0px`\n : dragState === DragState.dragReject || dragState === DragState.error\n ? isInverse\n ? `${dragState === DragState.error ? '1px' : '2px'} dashed ${\n dragState === DragState.error\n ? theme.colors.red500\n : theme.colors.red400\n }`\n : `${dragState === DragState.error ? '1px' : '2px'} dashed ${\n theme.colors.danger\n }`\n : dragState === DragState.dragActive\n ? `2px dashed ${theme.colors.blue500}`\n : dragState === DragState.dragAccept\n ? `2px dashed ${theme.colors.green500}`\n : `2px dashed ${\n isInverse ? theme.colors.neutral800 : theme.colors.neutral300\n }`};\n\n border-style: ${({ dragState = DragState.default }) =>\n dragState === DragState.error ? 'solid' : 'dashed'};\n background-color: ${({ theme, noDrag, isInverse }) =>\n noDrag\n ? 'transparent'\n : isInverse\n ? transparentize(0.6, theme.colors.neutral1200)\n : theme.colors.neutral100};\n outline: none;\n transition: ${({ noDrag }) => `border ${noDrag ? 0 : '.24s'} ease-in-out`};\n`;\n\nconst HelperMessage = styled.span<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : theme.colors.neutral700};\n display: block;\n font-size: 14px;\n margin: -8px 0 16px 0;\n`;\n\nconst Wrapper = styled.div<{ isInverse?: boolean }>`\n color: ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral0 : theme.colors.brand.navy};\n margin: 0 0 24px 0;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n font-weight: 500;\n padding: ${({ theme }) => theme.spaceScale.spacing01};\n`;\n\nconst PreviewList = styled.ul`\n list-style: none;\n padding: 0;\n`;\n\nconst PreviewItem = styled.li``;\n\nexport const Dropzone = React.forwardRef<HTMLInputElement, DropzoneProps>(\n (props, ref) => {\n const {\n accept,\n containerStyle,\n disabled,\n\n dropzoneOptions = {\n multiple: true,\n },\n helperMessage,\n id: defaultId,\n inputSize,\n isInverse: isInverseProp,\n isLabelVisuallyHidden,\n labelStyle,\n labelText,\n maxFiles,\n minFiles,\n maxSize,\n minSize,\n multiple = true,\n noDrag = false,\n onSendFile,\n onDeleteFile,\n onRemoveFile,\n sendFiles = false,\n testId,\n thumbnails = true,\n ...rest\n } = props;\n\n const [files, setFiles] = React.useState<FilePreview[]>([]);\n const [errorMessage, setErrorMessage] = React.useState<string | null>(null);\n const [announcement, setAnnouncement] = React.useState<string>('');\n\n const isInverse = useIsInverse(isInverseProp);\n const theme: ThemeInterface = React.useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const id = useGenerateId(defaultId);\n const helperMessageId = useGenerateId(`${id}-helper`);\n\n const browseFileButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const onDrop = React.useCallback(\n (acceptedFiles: FilePreview[], rejectedFiles: FileRejection[]) => {\n const newFiles = [\n ...acceptedFiles.map((file: FilePreview) =>\n Object.assign(file, {\n preview: URL.createObjectURL(file),\n })\n ),\n ...rejectedFiles.map(\n ({ file, errors }: { file: FilePreview; errors: FileError[] }) =>\n Object.assign(file, {\n errors,\n })\n ),\n ];\n\n setFiles((prevFiles: FilePreview[]) => [...prevFiles, ...newFiles]);\n\n if (acceptedFiles.length > 0) {\n const fileNames = acceptedFiles.map(file => file.name).join(', ');\n const message =\n acceptedFiles.length === 1\n ? i18n.dropzone.fileAdded.replace(/\\{fileName\\}/g, fileNames)\n : i18n.dropzone.filesAdded\n .replace(/\\{count\\}/g, acceptedFiles.length.toString())\n .replace(/\\{fileNames\\}/g, fileNames);\n\n setAnnouncement(message);\n }\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n },\n [i18n]\n );\n\n const {\n getInputProps,\n getRootProps,\n isDragAccept,\n isDragActive,\n isDragReject,\n open,\n inputRef,\n } = useDropzone({\n noClick: true,\n disabled,\n multiple,\n maxSize,\n minSize,\n accept,\n onDrop,\n noDrag,\n ...dropzoneOptions,\n });\n\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(\n ref,\n () => inputRef.current\n );\n\n const inputProps = getInputProps({ id });\n\n let dragState = DragState.default;\n\n if (errorMessage) {\n dragState = DragState.error;\n } else if (isDragAccept) {\n dragState = DragState.dragAccept;\n } else if (isDragReject) {\n dragState = DragState.dragReject;\n } else if (isDragActive) {\n dragState = DragState.dragActive;\n }\n\n const handleRemoveFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onRemoveFile && typeof onRemoveFile === 'function') {\n onRemoveFile(removedFile);\n }\n\n const message = i18n.dropzone.fileRemoved.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const handleDeleteFile = (removedFile: FilePreview) => {\n setFiles(prevFiles => prevFiles.filter(file => file !== removedFile));\n\n if (onDeleteFile && typeof onDeleteFile === 'function') {\n onDeleteFile(removedFile);\n }\n\n const message = i18n.dropzone.fileDeleted.replace(\n /\\{fileName\\}/g,\n removedFile.name\n );\n\n setAnnouncement(message);\n\n browseFileButtonRef.current && browseFileButtonRef.current.focus();\n };\n\n const setProgress = (progressProps: {\n percent: number;\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === progressProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: `${progressProps.percent}%`,\n status: 'pending',\n },\n })\n : file\n )\n );\n\n // Announce progress every 25% to avoid too many announcements\n if (progressProps.percent > 0 && progressProps.percent % 25 === 0) {\n const message = i18n.dropzone.fileUploading\n .replace(/\\{fileName\\}/g, progressProps.file.name)\n .replace(/\\{percent\\}/g, progressProps.percent.toString());\n\n setAnnouncement(message);\n }\n };\n\n const setFinished = (finishedProps: { file: FilePreview }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === finishedProps.file\n ? Object.assign(file, {\n processor: {\n ...file.processor,\n percent: '',\n status: 'finished',\n },\n })\n : file\n )\n );\n\n // Announce successful upload\n const message = i18n.dropzone.fileUploaded.replace(\n /\\{fileName\\}/g,\n finishedProps.file.name\n );\n\n setAnnouncement(message);\n };\n\n const setError = (errorProps: {\n errors: FileError[];\n file: FilePreview;\n }) => {\n setFiles(prevFiles =>\n prevFiles.map(file =>\n file === errorProps.file\n ? Object.assign(file, {\n errors: errorProps.errors,\n processor: { ...file.processor, status: 'error' },\n })\n : file\n )\n );\n };\n\n React.useEffect(\n () => () => {\n files.forEach(\n file => file.preview && URL.revokeObjectURL(file.preview)\n );\n },\n [files]\n );\n\n React.useEffect(() => {\n const formatError = (\n code: string | null,\n constraints: { maxFiles?: number; minFiles?: number }\n ) => {\n if (code === null) return null;\n const error = i18n.dropzone.errors[code];\n\n switch (code) {\n case 'too-many-files':\n return `${error.message} ${constraints.maxFiles} ${i18n.dropzone.files}.`;\n case 'too-few-files':\n return `${error.message} ${constraints.minFiles} ${i18n.dropzone.files}.`;\n default:\n return error.message;\n }\n };\n\n const minFileError = minFiles && files.length < minFiles;\n const maxFileError = maxFiles && files.length > maxFiles;\n\n let errorCode: string | null = null;\n\n if (maxFileError) {\n errorCode = 'too-many-files';\n } else if (minFileError) {\n errorCode = 'too-few-files';\n }\n\n setErrorMessage(formatError(errorCode, { minFiles, maxFiles }));\n\n if (sendFiles && files.length > 0 && !maxFileError && !minFileError) {\n setFiles((prevFiles: FilePreview[]) => {\n return prevFiles.map((file: FilePreview) => {\n if (!file.errors && !file.processor && onSendFile) {\n onSendFile({\n file,\n onError: setError,\n onFinish: setFinished,\n onProgress: setProgress,\n });\n }\n\n return file;\n });\n });\n }\n }, [\n sendFiles,\n files.length,\n onSendFile,\n maxFiles,\n minFiles,\n i18n.dropzone.errors,\n i18n.dropzone.files,\n ]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <FormFieldContainer\n actionable={false}\n containerStyle={containerStyle}\n errorMessage={errorMessage}\n fieldId={id}\n inputSize={inputSize}\n isInverse={isInverse}\n isLabelVisuallyHidden={isLabelVisuallyHidden}\n labelStyle={{\n color: isInverse ? theme.colors.neutral0 : theme.colors.brand.navy,\n ...labelStyle,\n }}\n labelText={labelText}\n messageStyle={{ minHeight: 0 }}\n data-testid={testId}\n >\n <HelperMessage\n id={helperMessageId}\n theme={theme}\n isInverse={isInverse}\n >\n {helperMessage}\n </HelperMessage>\n <Container\n behavior={FlexBehavior.container}\n dragState={dragState}\n isInverse={isInverse}\n noDrag={noDrag}\n theme={theme}\n {...getRootProps()}\n {...rest}\n testId={testId}\n tabIndex={-1}\n >\n <input\n ref={inputRef}\n type={inputProps.type}\n accept={inputProps.accept}\n autoComplete={inputProps.autoComplete}\n id={inputProps.id}\n multiple={inputProps.multiple}\n onChange={inputProps.onChange}\n onClick={inputProps.onClick}\n style={inputProps.style}\n tabIndex={inputProps.tabIndex}\n data-testid=\"file-input\"\n />\n {noDrag ? (\n <Flex xs behavior={FlexBehavior.item}>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n ) : (\n <Flex behavior={FlexBehavior.item}>\n <CloudUploadIcon\n aria-hidden=\"true\"\n color={\n isInverse ? theme.colors.neutral0 : theme.colors.neutral700\n }\n size={48}\n />\n <Wrapper isInverse={isInverse} theme={theme}>\n {i18n.dropzone.dragMessage}\n </Wrapper>\n <Button\n color={ButtonColor.primary}\n disabled={disabled}\n isInverse={isInverse}\n onClick={open}\n style={{ margin: 0 }}\n variant={ButtonVariant.solid}\n ref={browseFileButtonRef}\n aria-describedby={helperMessage ? helperMessageId : undefined}\n >\n {i18n.dropzone.browseFiles}\n </Button>\n </Flex>\n )}\n </Container>\n </FormFieldContainer>\n <PreviewList>\n {files.map((file: FilePreview) => (\n <PreviewItem key={file.name}>\n <Preview\n accept={accept}\n file={file}\n isInverse={isInverse}\n maxSize={maxSize}\n minSize={minSize}\n onDeleteFile={handleDeleteFile}\n onRemoveFile={handleRemoveFile}\n thumbnails={thumbnails}\n />\n </PreviewItem>\n ))}\n </PreviewList>\n\n <VisuallyHidden>\n <Announce>{announcement}</Announce>\n </VisuallyHidden>\n </InverseContext.Provider>\n );\n }\n);\n","import React, { forwardRef, useContext, useEffect, useState } from 'react';\n\nimport {\n ButtonColor,\n ButtonVariant,\n Card,\n CardBorderRadius,\n CardCornerTreatment,\n Flex,\n FlexAlignItems,\n FlexBehavior,\n FlexProps,\n I18nContext,\n I18nInterface,\n IconButton,\n InverseContext,\n ThemeContext,\n ThemeInterface,\n Transition,\n Spinner,\n useIsInverse,\n styled,\n} from 'react-magma-dom';\nimport {\n CheckCircleIcon,\n CloseIcon,\n DeleteIcon,\n ErrorIcon,\n} from 'react-magma-icons';\n\nimport { FileIcon } from './FileIcon';\nimport { FilePreview } from './FilePreview';\nimport { formatFileSize } from './utils';\n\nexport interface PreviewProps extends Omit<FlexProps, 'behavior'> {\n accept?: string | string[];\n file: FilePreview;\n isInverse?: boolean;\n maxSize?: number;\n minSize?: number;\n onDeleteFile?: (file: FilePreview) => void;\n onRemoveFile?: (file: FilePreview) => void;\n /**\n * @internal\n */\n testId?: string;\n thumbnails: boolean;\n}\n\nconst Thumb = styled.div<{ file: FilePreview }>`\n background-image: ${({ file }) =>\n `url('${'preview' in file && file.preview}')`};\n background-repeat: no-repeat;\n background-size: cover;\n display: inline-block;\n vertical-align: middle;\n height: 40px;\n width: 40px;\n`;\n\nconst StatusIcons = styled.div`\n display: grid;\n grid-template-areas: 'inner-div';\n height: auto;\n place-items: center;\n width: 46px;\n & > div {\n display: inline-block;\n right: 0;\n grid-area: inner-div;\n }\n`;\n\nconst IconStyles = {\n marginRight: '12px',\n display: 'flex',\n};\n\nconst Errors = styled.div<{ isInverse: boolean }>`\n border-top: 1px solid\n ${({ theme, isInverse }) =>\n isInverse ? theme.colors.neutral500 : theme.colors.neutral300};\n padding: 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledFlex = styled(Flex)`\n height: 56px;\n padding: 0 8px 0 16px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst FileName = styled(Flex)`\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n text-overflow: ellipsis;\n display: block;\n margin-right: 24px;\n font-size: ${({ theme }) => theme.typeScale.size02.fontSize};\n line-height: ${({ theme }) => theme.typeScale.size02.lineHeight};\n`;\n\nconst StyledCard = styled(Card)<{ file: FilePreview; isInverse: boolean }>`\n background-color: none;\n border-color: ${({ file, theme, isInverse }) =>\n file.errors\n ? isInverse\n ? theme.colors.red500\n : theme.colors.danger\n : isInverse\n ? theme.colors.neutral800\n : theme.colors.neutral200};\n border-width: 1px;\n color: ${({ file, theme, isInverse }) =>\n isInverse\n ? theme.colors.neutral0\n : file.errors\n ? theme.colors.neutral700\n : theme.colors.brand.navy};\n margin: 10px 0;\n`;\n\nconst ErrorHeader = styled.span`\n display: block;\n\n > div {\n display: flex;\n align-self: center;\n margin-right: 12px;\n }\n`;\n\nconst ErrorMessage = styled.span`\n display: block;\n`;\n\nconst formatError = (\n error: { header?: string; message: string; code: string },\n constraints: {\n maxSize?: number;\n minSize?: number;\n accept?: string | string[];\n },\n byteLabel: string\n) => {\n const accept =\n Array.isArray(constraints.accept) && constraints.accept.length === 1\n ? constraints.accept[0]\n : constraints.accept;\n const messageSuffix = Array.isArray(accept)\n ? `one of ${accept.join(', ')}`\n : accept;\n\n switch (error.code) {\n case 'file-too-large':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.maxSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-too-small':\n return {\n ...error,\n message: `${error.message} ${formatFileSize(\n constraints.minSize,\n 2,\n byteLabel\n )}.`,\n };\n case 'file-invalid-type':\n return { ...error, message: `${error.message}: ${messageSuffix}` };\n default:\n return error;\n }\n};\n\nexport const Preview = forwardRef<\n HTMLDivElement,\n Omit<PreviewProps, 'children'>\n>((props, ref) => {\n const {\n accept,\n file,\n isInverse: isInverseProp,\n maxSize,\n minSize,\n onDeleteFile,\n onRemoveFile,\n testId,\n thumbnails,\n ...rest\n } = props;\n\n const theme: ThemeInterface = useContext(ThemeContext);\n const i18n: I18nInterface = React.useContext(I18nContext);\n const isInverse = useIsInverse(isInverseProp);\n const [actions, setActions] = useState(<CloseIcon />);\n\n const handleRemoveFile = () => {\n onRemoveFile && typeof onRemoveFile === 'function' && onRemoveFile(file);\n };\n\n const handleDeleteFile = () => {\n onDeleteFile && typeof onDeleteFile === 'function' && onDeleteFile(file);\n };\n\n const FinishedActions = ({ status = 'ready' }: { status?: string }) => {\n const [done, setDone] = useState<boolean>(false);\n\n useEffect(() => {\n let mounted = true;\n\n setTimeout(() => {\n if (mounted) {\n setDone(true);\n }\n }, 1000);\n\n return () => {\n mounted = false;\n };\n }, [status]);\n\n if (status === 'error' || status === 'ready') {\n return (\n <StatusIcons>\n <IconButton\n onClick={handleRemoveFile}\n variant={ButtonVariant.link}\n color={ButtonColor.subtle}\n aria-label={`${i18n.dropzone.removeFile} ${file.name}`}\n icon={<CloseIcon />}\n />\n </StatusIcons>\n );\n }\n\n if (status === 'pending') {\n return (\n <StatusIcons>\n <Spinner\n color={isInverse ? theme.colors.brand.skyBlue : theme.colors.primary}\n />\n </StatusIcons>\n );\n }\n\n return (\n <StatusIcons>\n <Transition isOpen={!done} unmountOnExit fade>\n <CheckCircleIcon\n color={isInverse ? theme.colors.green500 : theme.colors.success}\n style={{ marginTop: '4px' }}\n />\n </Transition>\n <Transition isOpen={done} unmountOnExit fade>\n <IconButton\n onClick={handleDeleteFile}\n variant={ButtonVariant.link}\n color={ButtonColor.subtle}\n aria-label={`${i18n.dropzone.deleteFile} ${file.name}`}\n icon={<DeleteIcon />}\n />\n </Transition>\n </StatusIcons>\n );\n };\n\n useEffect(() => {\n setActions(<FinishedActions status={file?.processor?.status} />);\n }, [file?.processor?.status]);\n\n return (\n <InverseContext.Provider value={{ isInverse }}>\n <StyledCard\n borderRadius={CardBorderRadius.small}\n cornerTreatment={CardCornerTreatment.all}\n isInverse={isInverse}\n theme={theme}\n file={file}\n data-testid={props.testId}\n ref={ref}\n role={file.errors ? 'alert' : ''}\n >\n <StyledFlex\n theme={theme}\n behavior={FlexBehavior.container}\n alignItems={FlexAlignItems.center}\n {...rest}\n >\n <Flex\n behavior={FlexBehavior.item}\n alignItems={FlexAlignItems.center}\n style={IconStyles}\n >\n {file.errors ? (\n <ErrorIcon\n color={isInverse ? theme.colors.red500 : theme.colors.danger}\n size={24}\n />\n ) : file.preview &&\n thumbnails &&\n file.type &&\n file.type.startsWith('image') ? (\n <Thumb role=\"img\" file={file} />\n ) : (\n <FileIcon isInverse={isInverse} file={file} />\n )}\n </Flex>\n <FileName xs behavior={FlexBehavior.item} theme={theme}>\n {file.name}\n </FileName>\n {file.processor && file.processor.status === 'pending' && (\n <Flex\n role=\"progressbar\"\n style={{ marginLeft: 'auto' }}\n behavior={FlexBehavior.item}\n >\n {file.processor.percent}\n </Flex>\n )}\n <Flex behavior={FlexBehavior.item}>{actions}</Flex>\n </StyledFlex>\n {file.errors && (\n <Errors theme={theme} isInverse={isInverse}>\n {file.errors.slice(0, 1).map(({ code, ...rest }) => {\n const { header = '', message } = formatError(\n { code, ...rest, ...i18n.dropzone.errors[code] },\n { accept, minSize, maxSize },\n i18n.dropzone.bytes\n );\n\n return (\n <React.Fragment key={code}>\n <ErrorHeader\n style={{\n color: isInverse\n ? theme.colors.red500\n : theme.colors.danger,\n }}\n >\n {header}\n </ErrorHeader>\n <ErrorMessage>{message}</ErrorMessage>\n </React.Fragment>\n );\n })}\n </Errors>\n )}\n </StyledCard>\n </InverseContext.Provider>\n );\n});\n"],"names":["icons","default","Icon","InsertDriveFileIcon","style","color","magma","colors","neutral700","inverseStyle","neutral300","word","FileWordIcon","blue500","excel","FileExcelIcon","green500","powerpoint","FilePowerpointIcon","tangerine600","tangerine500","pdf","FilePdfIcon","red600","red500","image","ImageIcon","video","VideocamIcon","audio","AudiotrackIcon","archive","FileZipIcon","iconMapping","xlsx","xlsm","xlsb","xltx","xls","xlt","doc","docx","docm","dotx","dotm","docb","pptx","pptm","ppt","png","svg","zip","FileIcon","_ref","file","isInverse","_file$path","path","_file$type","type","category","split","extension","pop","_ref2","_jsx","jsx","size","iconSizes","medium","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","DragState","formatFileSize","bytes","decimalPoint","bytesLabel","undefined","sizes","i","Math","floor","log","parseFloat","pow","toFixed","Thumb","styled","div","_taggedTemplateLiteralLoose","preview","StatusIcons","IconStyles","marginRight","display","Errors","theme","neutral500","_ref3","typeScale","size02","fontSize","_ref4","lineHeight","StyledFlex","Flex","_ref5","_ref6","FileName","_ref7","_ref8","StyledCard","Card","_templateObject6","_ref9","errors","danger","neutral800","neutral200","_ref0","neutral0","brand","navy","ErrorHeader","span","_templateObject7","ErrorMessage","_templateObject8","Preview","forwardRef","props","ref","_file$processor2","accept","isInverseProp","maxSize","minSize","onDeleteFile","onRemoveFile","thumbnails","rest","_objectWithoutPropertiesLoose","_excluded","useContext","ThemeContext","i18n","React","I18nContext","useIsInverse","_useState","useState","CloseIcon","actions","setActions","handleRemoveFile","handleDeleteFile","FinishedActions","_ref1","_ref1$status","status","_useState2","done","setDone","useEffect","mounted","setTimeout","children","IconButton","onClick","variant","ButtonVariant","link","ButtonColor","subtle","dropzone","removeFile","name","icon","Spinner","skyBlue","primary","_jsxs","jsxs","Transition","isOpen","unmountOnExit","fade","CheckCircleIcon","success","marginTop","deleteFile","DeleteIcon","_file$processor","processor","InverseContext","Provider","value","borderRadius","CardBorderRadius","small","cornerTreatment","CardCornerTreatment","all","testId","role","_extends","behavior","FlexBehavior","container","alignItems","FlexAlignItems","center","item","ErrorIcon","startsWith","xs","marginLeft","percent","slice","map","_ref10","code","_formatError","error","constraints","byteLabel","Array","isArray","length","messageSuffix","join","message","formatError","_excluded2","_formatError$header","header","Fragment","Container","noDrag","borderRadiusNone","borderRadiusSmall","_ref6$dragState","dragState","dragReject","red400","dragActive","dragAccept","_ref7$dragState","transparentize","neutral1200","neutral100","HelperMessage","Wrapper","_ref11","_ref12","spaceScale","spacing01","PreviewList","ul","PreviewItem","li","containerStyle","disabled","_props$dropzoneOption","dropzoneOptions","multiple","helperMessage","defaultId","id","inputSize","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","_props$multiple","_props$noDrag","onSendFile","_props$sendFiles","sendFiles","_props$thumbnails","_React$useState","files","setFiles","_React$useState2","errorMessage","setErrorMessage","_React$useState3","announcement","setAnnouncement","useGenerateId","helperMessageId","browseFileButtonRef","useRef","onDrop","useCallback","acceptedFiles","rejectedFiles","newFiles","concat","Object","assign","URL","createObjectURL","_ref13","prevFiles","fileNames","fileAdded","replace","filesAdded","toString","current","focus","_useDropzone","useDropzone","noClick","getInputProps","getRootProps","isDragAccept","isDragActive","isDragReject","open","inputRef","useImperativeHandle","inputProps","removedFile","filter","fileRemoved","fileDeleted","setProgress","progressProps","fileUploading","setFinished","finishedProps","fileUploaded","setError","errorProps","forEach","revokeObjectURL","minFileError","maxFileError","errorCode","onError","onFinish","onProgress","FormFieldContainer","actionable","fieldId","messageStyle","minHeight","tabIndex","autoComplete","onChange","Button","margin","browseFiles","CloudUploadIcon","dragMessage","solid","VisuallyHidden","Announce"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext as n,useIsInverse as l,InverseContext as s,FlexBehavior as a,FlexAlignItems as c,IconButton as d,ButtonVariant as p,ButtonColor as m,Spinner as g,Transition as u,useGenerateId as h,FormFieldContainer as f,Button as v,VisuallyHidden as x,Announce as y}from"react-magma-dom";import{InsertDriveFileIcon as b,FileWordIcon as z,FileExcelIcon as S,FilePowerpointIcon as $,FilePdfIcon as I,ImageIcon as w,VideocamIcon as F,AudiotrackIcon as k,FileZipIcon as D,CloseIcon as O,ErrorIcon as R,CheckCircleIcon as j,DeleteIcon as C,CloudUploadIcon as A}from"react-magma-icons";import{jsx as B,jsxs as M}from"react/jsx-runtime";import H,{forwardRef as L,useContext as P,useState as E,useEffect as N,useImperativeHandle as T}from"react";import{transparentize as U}from"polished";import{useDropzone as V}from"react-dropzone";const G={default:{Icon:b,style:{color:e.colors.neutral500}},word:{Icon:z,style:{color:e.colors.info500}},excel:{Icon:S,style:{color:e.colors.success500}},powerpoint:{Icon:$,style:{color:e.colors.warning500}},pdf:{Icon:I,style:{color:e.colors.danger500}},image:{Icon:w,style:{color:e.colors.neutral500}},video:{Icon:F,style:{color:e.colors.neutral500}},audio:{Icon:k,style:{color:e.colors.neutral500}},archive:{Icon:D,style:{color:e.colors.neutral500}}},K={default:G.default,xlsx:G.excel,xlsm:G.excel,xlsb:G.excel,xltx:G.excel,xls:G.excel,xlt:G.excel,doc:G.word,docx:G.word,docm:G.word,dotx:G.word,dotm:G.word,docb:G.word,pptx:G.powerpoint,pptm:G.powerpoint,ppt:G.powerpoint,pdf:G.pdf,png:G.image,svg:G.image,image:G.image,audio:G.audio,video:G.video,zip:G.archive},W=({file:r,isInverse:o})=>{const{path:i="",type:t=""}=r,n=t.split("/")[0],l=i.split(".").pop()||"default",{Icon:s,style:a}=K[l]||K[n]||K.default;/*#__PURE__*/return B(s,{size:e.iconSizes.medium,style:o?{}:a})};function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var i in o)({}).hasOwnProperty.call(o,i)&&(e[i]=o[i])}return e},Y.apply(null,arguments)}function Z(e,r){if(null==e)return{};var o={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==r.indexOf(i))continue;o[i]=e[i]}return o}const q=(e,r=2,o="Bytes")=>{if(void 0===e)return;if(0==e)return`0 ${o}`;const i=[o,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(r))+" "+i[t]},J=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],Q=["code"];let X,_,ee,re,oe,ie,te,ne,le=e=>e;const se=r.div(X||(X=le`
1
+ import{magma as e,styled as r,Flex as o,Card as l,ThemeContext as t,I18nContext as i,useIsInverse as n,InverseContext as s,CardBorderRadius as a,CardCornerTreatment as c,FlexBehavior as d,FlexAlignItems as p,IconButton as m,ButtonVariant as u,ButtonColor as g,Spinner as h,Transition as f,useGenerateId as v,FormFieldContainer as y,Button as b,VisuallyHidden as x,Announce as z}from"react-magma-dom";import{InsertDriveFileIcon as S,FileWordIcon as $,FileExcelIcon as I,FilePowerpointIcon as w,FilePdfIcon as F,ImageIcon as k,VideocamIcon as R,AudiotrackIcon as D,FileZipIcon as j,CloseIcon as O,ErrorIcon as A,CheckCircleIcon as C,DeleteIcon as B,CloudUploadIcon as M}from"react-magma-icons";import{jsx as H,jsxs as L}from"react/jsx-runtime";import P,{forwardRef as E,useContext as N,useState as T,useEffect as U,useImperativeHandle as V}from"react";import{transparentize as G}from"polished";import{useDropzone as K}from"react-dropzone";const W={default:{Icon:S,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},word:{Icon:$,style:{color:e.colors.blue500},inverseStyle:{color:e.colors.blue500}},excel:{Icon:I,style:{color:e.colors.green500},inverseStyle:{color:e.colors.green500}},powerpoint:{Icon:w,style:{color:e.colors.tangerine600},inverseStyle:{color:e.colors.tangerine500}},pdf:{Icon:F,style:{color:e.colors.red600},inverseStyle:{color:e.colors.red500}},image:{Icon:k,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},video:{Icon:R,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},audio:{Icon:D,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}},archive:{Icon:j,style:{color:e.colors.neutral700},inverseStyle:{color:e.colors.neutral300}}},Y={default:W.default,xlsx:W.excel,xlsm:W.excel,xlsb:W.excel,xltx:W.excel,xls:W.excel,xlt:W.excel,doc:W.word,docx:W.word,docm:W.word,dotx:W.word,dotm:W.word,docb:W.word,pptx:W.powerpoint,pptm:W.powerpoint,ppt:W.powerpoint,pdf:W.pdf,png:W.image,svg:W.image,image:W.image,audio:W.audio,video:W.video,zip:W.archive},Z=({file:r,isInverse:o})=>{const{path:l="",type:t=""}=r,i=t.split("/")[0],n=l.split(".").pop()||"default",{Icon:s,style:a,inverseStyle:c}=Y[n]||Y[i]||Y.default;/*#__PURE__*/return H(s,{size:e.iconSizes.medium,style:o?c:a})};function q(){return q=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var o=arguments[r];for(var l in o)({}).hasOwnProperty.call(o,l)&&(e[l]=o[l])}return e},q.apply(null,arguments)}function J(e,r){if(null==e)return{};var o={};for(var l in e)if({}.hasOwnProperty.call(e,l)){if(-1!==r.indexOf(l))continue;o[l]=e[l]}return o}const Q=(e,r=2,o="Bytes")=>{if(void 0===e)return;if(0==e)return`0 ${o}`;const l=[o,"KB","MB","GB","TB","PB","EB","ZB","YB"],t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(r))+" "+l[t]},X=["accept","file","isInverse","maxSize","minSize","onDeleteFile","onRemoveFile","testId","thumbnails"],_=["code"];let ee,re,oe,le,te,ie,ne,se,ae=e=>e;const ce=r.div(ee||(ee=ae`
2
2
  background-image: ${0};
3
3
  background-repeat: no-repeat;
4
4
  background-size: cover;
@@ -6,7 +6,7 @@ import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext
6
6
  vertical-align: middle;
7
7
  height: 40px;
8
8
  width: 40px;
9
- `),({file:e})=>`url('${"preview"in e&&e.preview}')`),ae=r.div(_||(_=le`
9
+ `),({file:e})=>`url('${"preview"in e&&e.preview}')`),de=r.div(re||(re=ae`
10
10
  display: grid;
11
11
  grid-template-areas: 'inner-div';
12
12
  height: auto;
@@ -17,17 +17,18 @@ import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext
17
17
  right: 0;
18
18
  grid-area: inner-div;
19
19
  }
20
- `)),ce={marginRight:"12px",display:"flex"},de=r.div(ee||(ee=le`
21
- border-top: 1px solid ${0};
20
+ `)),pe={marginRight:"12px",display:"flex"},me=r.div(oe||(oe=ae`
21
+ border-top: 1px solid
22
+ ${0};
22
23
  padding: 16px;
23
24
  font-size: ${0};
24
25
  line-height: ${0};
25
- `),({theme:e})=>e.colors.neutral300,({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),pe=r(o)(re||(re=le`
26
+ `),({theme:e,isInverse:r})=>r?e.colors.neutral500:e.colors.neutral300,({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),ue=r(o)(le||(le=ae`
26
27
  height: 56px;
27
28
  padding: 0 8px 0 16px;
28
29
  font-size: ${0};
29
30
  line-height: ${0};
30
- `),({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),me=r(o)(oe||(oe=le`
31
+ `),({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),ge=r(o)(te||(te=ae`
31
32
  overflow: hidden;
32
33
  white-space: nowrap;
33
34
  align-items: center;
@@ -36,12 +37,13 @@ import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext
36
37
  margin-right: 24px;
37
38
  font-size: ${0};
38
39
  line-height: ${0};
39
- `),({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),ge=r(i)(ie||(ie=le`
40
+ `),({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight),he=r(l)(ie||(ie=ae`
40
41
  background-color: none;
41
42
  border-color: ${0};
42
43
  border-width: 1px;
44
+ color: ${0};
43
45
  margin: 10px 0;
44
- `),({file:e,theme:r,isInverse:o})=>e.errors?o?r.colors.danger300:r.colors.danger:r.colors.neutral300),ue=r.span(te||(te=le`
46
+ `),({file:e,theme:r,isInverse:o})=>e.errors?o?r.colors.red500:r.colors.danger:o?r.colors.neutral800:r.colors.neutral200,({file:e,theme:r,isInverse:o})=>o?r.colors.neutral0:e.errors?r.colors.neutral700:r.colors.brand.navy),fe=r.span(ne||(ne=ae`
45
47
  display: block;
46
48
 
47
49
  > div {
@@ -49,9 +51,9 @@ import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext
49
51
  align-self: center;
50
52
  margin-right: 12px;
51
53
  }
52
- `)),he=r.span(ne||(ne=le`
54
+ `)),ve=r.span(se||(se=ae`
53
55
  display: block;
54
- `)),fe=/*#__PURE__*/L((e,r)=>{var i;const{accept:h,file:f,isInverse:v,maxSize:x,minSize:y,onDeleteFile:b,onRemoveFile:z,thumbnails:S}=e,$=Z(e,J),I=P(t),w=H.useContext(n),F=l(v),[k,D]=E(/*#__PURE__*/B(O,{})),A=()=>{z&&"function"==typeof z&&z(f)},L=()=>{b&&"function"==typeof b&&b(f)},T=({status:e="ready"})=>{const[r,o]=E(!1);return N(()=>{let e=!0;return setTimeout(()=>{e&&o(!0)},1e3),()=>{e=!1}},[e]),"error"===e||"ready"===e?/*#__PURE__*/B(ae,{children:/*#__PURE__*/B(d,{onClick:A,variant:p.link,color:m.secondary,"aria-label":`${w.dropzone.removeFile} ${f.name}`,icon:/*#__PURE__*/B(O,{})})}):"pending"===e?/*#__PURE__*/B(ae,{children:/*#__PURE__*/B(g,{color:F?I.colors.neutral100:I.colors.primary})}):/*#__PURE__*/M(ae,{children:[/*#__PURE__*/B(u,{isOpen:!r,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/B(j,{color:F?I.colors.success200:I.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/B(u,{isOpen:r,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/B(d,{onClick:L,variant:p.link,color:m.secondary,"aria-label":`${w.dropzone.deleteFile} ${f.name}`,icon:/*#__PURE__*/B(C,{})})})]})};return N(()=>{var e;D(/*#__PURE__*/B(T,{status:null==f||null==(e=f.processor)?void 0:e.status}))},[null==f||null==(i=f.processor)?void 0:i.status]),/*#__PURE__*/B(s.Provider,{value:{isInverse:F},children:/*#__PURE__*/M(ge,{isInverse:F,theme:I,file:f,"data-testid":e.testId,ref:r,role:f.errors?"alert":"",children:[/*#__PURE__*/M(pe,Y({theme:I,behavior:a.container,alignItems:c.center},$,{children:[/*#__PURE__*/B(o,{behavior:a.item,alignItems:c.center,style:ce,children:f.errors?/*#__PURE__*/B(R,{color:F?I.colors.danger300:I.colors.danger,size:24}):f.preview&&S&&f.type&&f.type.startsWith("image")?/*#__PURE__*/B(se,{role:"img",file:f}):/*#__PURE__*/B(W,{isInverse:F,file:f})}),/*#__PURE__*/B(me,{xs:!0,behavior:a.item,theme:I,children:f.name}),f.processor&&"pending"===f.processor.status&&/*#__PURE__*/B(o,{role:"progressbar",style:{marginLeft:"auto"},behavior:a.item,children:f.processor.percent}),/*#__PURE__*/B(o,{behavior:a.item,children:k})]})),f.errors&&/*#__PURE__*/B(de,{theme:I,children:f.errors.slice(0,1).map(e=>{let{code:r}=e,o=Z(e,Q);const{header:i="",message:t}=((e,r,o)=>{const i=Array.isArray(r.accept)&&1===r.accept.length?r.accept[0]:r.accept,t=Array.isArray(i)?`one of ${i.join(", ")}`:i;switch(e.code){case"file-too-large":return Y({},e,{message:`${e.message} ${q(r.maxSize,2,o)}.`});case"file-too-small":return Y({},e,{message:`${e.message} ${q(r.minSize,2,o)}.`});case"file-invalid-type":return Y({},e,{message:`${e.message}: ${t}`});default:return e}})(Y({code:r},o,w.dropzone.errors[r]),{accept:h,minSize:y,maxSize:x},w.dropzone.bytes);/*#__PURE__*/return M(H.Fragment,{children:[/*#__PURE__*/B(ue,{style:{color:F?I.colors.danger200:I.colors.danger},children:i}),/*#__PURE__*/B(he,{children:t})]},r)})})]})})}),ve=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];let xe,ye,be,ze,Se,$e=e=>e;const Ie=r(o)(xe||(xe=$e`
56
+ `)),ye=/*#__PURE__*/E((e,r)=>{var l;const{accept:v,file:y,isInverse:b,maxSize:x,minSize:z,onDeleteFile:S,onRemoveFile:$,thumbnails:I}=e,w=J(e,X),F=N(t),k=P.useContext(i),R=n(b),[D,j]=T(/*#__PURE__*/H(O,{})),M=()=>{$&&"function"==typeof $&&$(y)},E=()=>{S&&"function"==typeof S&&S(y)},V=({status:e="ready"})=>{const[r,o]=T(!1);return U(()=>{let e=!0;return setTimeout(()=>{e&&o(!0)},1e3),()=>{e=!1}},[e]),"error"===e||"ready"===e?/*#__PURE__*/H(de,{children:/*#__PURE__*/H(m,{onClick:M,variant:u.link,color:g.subtle,"aria-label":`${k.dropzone.removeFile} ${y.name}`,icon:/*#__PURE__*/H(O,{})})}):"pending"===e?/*#__PURE__*/H(de,{children:/*#__PURE__*/H(h,{color:R?F.colors.brand.skyBlue:F.colors.primary})}):/*#__PURE__*/L(de,{children:[/*#__PURE__*/H(f,{isOpen:!r,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/H(C,{color:R?F.colors.green500:F.colors.success,style:{marginTop:"4px"}})}),/*#__PURE__*/H(f,{isOpen:r,unmountOnExit:!0,fade:!0,children:/*#__PURE__*/H(m,{onClick:E,variant:u.link,color:g.subtle,"aria-label":`${k.dropzone.deleteFile} ${y.name}`,icon:/*#__PURE__*/H(B,{})})})]})};return U(()=>{var e;j(/*#__PURE__*/H(V,{status:null==y||null==(e=y.processor)?void 0:e.status}))},[null==y||null==(l=y.processor)?void 0:l.status]),/*#__PURE__*/H(s.Provider,{value:{isInverse:R},children:/*#__PURE__*/L(he,{borderRadius:a.small,cornerTreatment:c.all,isInverse:R,theme:F,file:y,"data-testid":e.testId,ref:r,role:y.errors?"alert":"",children:[/*#__PURE__*/L(ue,q({theme:F,behavior:d.container,alignItems:p.center},w,{children:[/*#__PURE__*/H(o,{behavior:d.item,alignItems:p.center,style:pe,children:y.errors?/*#__PURE__*/H(A,{color:R?F.colors.red500:F.colors.danger,size:24}):y.preview&&I&&y.type&&y.type.startsWith("image")?/*#__PURE__*/H(ce,{role:"img",file:y}):/*#__PURE__*/H(Z,{isInverse:R,file:y})}),/*#__PURE__*/H(ge,{xs:!0,behavior:d.item,theme:F,children:y.name}),y.processor&&"pending"===y.processor.status&&/*#__PURE__*/H(o,{role:"progressbar",style:{marginLeft:"auto"},behavior:d.item,children:y.processor.percent}),/*#__PURE__*/H(o,{behavior:d.item,children:D})]})),y.errors&&/*#__PURE__*/H(me,{theme:F,isInverse:R,children:y.errors.slice(0,1).map(e=>{let{code:r}=e,o=J(e,_);const{header:l="",message:t}=((e,r,o)=>{const l=Array.isArray(r.accept)&&1===r.accept.length?r.accept[0]:r.accept,t=Array.isArray(l)?`one of ${l.join(", ")}`:l;switch(e.code){case"file-too-large":return q({},e,{message:`${e.message} ${Q(r.maxSize,2,o)}.`});case"file-too-small":return q({},e,{message:`${e.message} ${Q(r.minSize,2,o)}.`});case"file-invalid-type":return q({},e,{message:`${e.message}: ${t}`});default:return e}})(q({code:r},o,k.dropzone.errors[r]),{accept:v,minSize:z,maxSize:x},k.dropzone.bytes);/*#__PURE__*/return L(P.Fragment,{children:[/*#__PURE__*/H(fe,{style:{color:R?F.colors.red500:F.colors.danger},children:l}),/*#__PURE__*/H(ve,{children:t})]},r)})})]})})}),be=["accept","containerStyle","disabled","dropzoneOptions","helperMessage","id","inputSize","isInverse","isLabelVisuallyHidden","labelStyle","labelText","maxFiles","minFiles","maxSize","minSize","multiple","noDrag","onSendFile","onDeleteFile","onRemoveFile","sendFiles","testId","thumbnails"];let xe,ze,Se,$e,Ie,we=e=>e;var Fe;!function(e){e.error="error",e.dragAccept="dragAccept",e.dragReject="dragReject",e.dragActive="dragActive",e.default="default"}(Fe||(Fe={}));const ke=r(o)(xe||(xe=we`
55
57
  flex-direction: column;
56
58
  align-items: ${0};
57
59
  justify-content: ${0};
@@ -64,20 +66,20 @@ import{magma as e,styled as r,Flex as o,Card as i,ThemeContext as t,I18nContext
64
66
  background-color: ${0};
65
67
  outline: none;
66
68
  transition: ${0};
67
- `),({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"0px":"24px",({noDrag:e})=>e?"0px":"4px",({dragState:e="default",noDrag:r,theme:o,isInverse:i})=>r?"0px":"dragReject"===e||"error"===e?i?`1px dashed ${o.colors.danger300}`:`1px dashed ${o.colors.danger}`:"dragActive"===e?`1px dashed ${o.colors.primary}`:"dragAccept"===e?`1px dashed ${o.colors.success}`:`1px dashed ${o.colors.neutral400}`,({dragState:e="default"})=>"error"===e?"solid":"dashed",({theme:e,noDrag:r,isInverse:o})=>r?"transparent":o?U(.75,e.colors.neutral900):e.colors.neutral200,({noDrag:e})=>`border ${e?0:".24s"} ease-in-out`),we=r.span(ye||(ye=$e`
69
+ `),({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"left":"center",({noDrag:e})=>e?"0px":"24px",({noDrag:e,theme:r})=>e?r.borderRadiusNone:r.borderRadiusSmall,({dragState:e=Fe.default,noDrag:r,theme:o,isInverse:l})=>r?"0px":e===Fe.dragReject||e===Fe.error?l?`${e===Fe.error?"1px":"2px"} dashed ${e===Fe.error?o.colors.red500:o.colors.red400}`:`${e===Fe.error?"1px":"2px"} dashed ${o.colors.danger}`:e===Fe.dragActive?`2px dashed ${o.colors.blue500}`:e===Fe.dragAccept?`2px dashed ${o.colors.green500}`:`2px dashed ${l?o.colors.neutral800:o.colors.neutral300}`,({dragState:e=Fe.default})=>e===Fe.error?"solid":"dashed",({theme:e,noDrag:r,isInverse:o})=>r?"transparent":o?G(.6,e.colors.neutral1200):e.colors.neutral100,({noDrag:e})=>`border ${e?0:".24s"} ease-in-out`),Re=r.span(ze||(ze=we`
68
70
  color: ${0};
69
71
  display: block;
70
72
  font-size: 14px;
71
73
  margin: -8px 0 16px 0;
72
- `),({theme:e,isInverse:r})=>r?e.colors.neutral100:e.colors.neutral700),Fe=r.div(be||(be=$e`
74
+ `),({theme:e,isInverse:r})=>r?e.colors.neutral500:e.colors.neutral700),De=r.div(Se||(Se=we`
73
75
  color: ${0};
74
76
  margin: 0 0 24px 0;
75
77
  font-size: ${0};
76
78
  line-height: ${0};
77
79
  font-weight: 500;
78
80
  padding: ${0};
79
- `),({theme:e,isInverse:r})=>r?e.colors.neutral100:e.colors.neutral700,({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight,({theme:e})=>e.spaceScale.spacing01),ke=r.ul(ze||(ze=$e`
81
+ `),({theme:e,isInverse:r})=>r?e.colors.neutral0:e.colors.brand.navy,({theme:e})=>e.typeScale.size02.fontSize,({theme:e})=>e.typeScale.size02.lineHeight,({theme:e})=>e.spaceScale.spacing01),je=r.ul($e||($e=we`
80
82
  list-style: none;
81
83
  padding: 0;
82
- `)),De=r.li(Se||(Se=$e``)),Oe=/*#__PURE__*/H.forwardRef((e,r)=>{const{accept:i,containerStyle:c,disabled:d,dropzoneOptions:g={multiple:!0},helperMessage:u,id:b,inputSize:z,isInverse:S,isLabelVisuallyHidden:$,labelStyle:I,labelText:w,maxFiles:F,minFiles:k,maxSize:D,minSize:O,multiple:R=!0,noDrag:j=!1,onSendFile:C,onDeleteFile:L,onRemoveFile:P,sendFiles:E=!1,testId:N,thumbnails:U=!0}=e,G=Z(e,ve),[K,W]=H.useState([]),[q,J]=H.useState(null),[Q,X]=H.useState(""),_=l(S),ee=H.useContext(t),re=H.useContext(n),oe=h(b),ie=h(`${oe}-helper`),te=H.useRef(null),ne=H.useCallback((e,r)=>{const o=[...e.map(e=>Object.assign(e,{preview:URL.createObjectURL(e)})),...r.map(({file:e,errors:r})=>Object.assign(e,{errors:r}))];if(W(e=>[...e,...o]),e.length>0){const r=e.map(e=>e.name).join(", "),o=1===e.length?re.dropzone.fileAdded.replace(/\{fileName\}/g,r):re.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,r);X(o)}te.current&&te.current.focus()},[re]),{getInputProps:le,getRootProps:se,isDragAccept:ae,isDragActive:ce,isDragReject:de,open:pe,inputRef:me}=V(Y({noClick:!0,disabled:d,multiple:R,maxSize:D,minSize:O,accept:i,onDrop:ne,noDrag:j},g));T(r,()=>me.current);const ge=le({id:oe});let ue="default";q?ue="error":ae?ue="dragAccept":de?ue="dragReject":ce&&(ue="dragActive");const he=e=>{W(r=>r.filter(r=>r!==e)),P&&"function"==typeof P&&P(e);const r=re.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);X(r),te.current&&te.current.focus()},xe=e=>{W(r=>r.filter(r=>r!==e)),L&&"function"==typeof L&&L(e);const r=re.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);X(r),te.current&&te.current.focus()},ye=e=>{if(W(r=>r.map(r=>r===e.file?Object.assign(r,{processor:Y({},r.processor,{percent:`${e.percent}%`,status:"pending"})}):r)),e.percent>0&&e.percent%25==0){const r=re.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());X(r)}},be=e=>{W(r=>r.map(r=>r===e.file?Object.assign(r,{processor:Y({},r.processor,{percent:"",status:"finished"})}):r));const r=re.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);X(r)},ze=e=>{W(r=>r.map(r=>r===e.file?Object.assign(r,{errors:e.errors,processor:Y({},r.processor,{status:"error"})}):r))};return H.useEffect(()=>()=>{K.forEach(e=>e.preview&&URL.revokeObjectURL(e.preview))},[K]),H.useEffect(()=>{const e=k&&K.length<k,r=F&&K.length>F;let o=null;r?o="too-many-files":e&&(o="too-few-files"),J(((e,r)=>{if(null===e)return null;const o=re.dropzone.errors[e];switch(e){case"too-many-files":return`${o.message} ${r.maxFiles} ${re.dropzone.files}.`;case"too-few-files":return`${o.message} ${r.minFiles} ${re.dropzone.files}.`;default:return o.message}})(o,{minFiles:k,maxFiles:F})),E&&K.length>0&&!r&&!e&&W(e=>e.map(e=>(e.errors||e.processor||!C||C({file:e,onError:ze,onFinish:be,onProgress:ye}),e)))},[E,K.length,C,F,k,re.dropzone.errors,re.dropzone.files]),/*#__PURE__*/M(s.Provider,{value:{isInverse:_},children:[/*#__PURE__*/M(f,{actionable:!1,containerStyle:c,errorMessage:q,fieldId:oe,inputSize:z,isInverse:_,isLabelVisuallyHidden:$,labelStyle:I,labelText:w,messageStyle:{minHeight:0},"data-testid":N,children:[/*#__PURE__*/B(we,{id:ie,theme:ee,isInverse:_,children:u}),/*#__PURE__*/M(Ie,Y({behavior:a.container,dragState:ue,isInverse:_,noDrag:j,theme:ee},se(),G,{testId:N,tabIndex:-1,children:[/*#__PURE__*/B("input",{ref:me,type:ge.type,accept:ge.accept,autoComplete:ge.autoComplete,id:ge.id,multiple:ge.multiple,onChange:ge.onChange,onClick:ge.onClick,style:ge.style,tabIndex:ge.tabIndex,"data-testid":"file-input"}),j?/*#__PURE__*/B(o,{xs:!0,behavior:a.item,children:/*#__PURE__*/B(v,{color:m.primary,disabled:d,isInverse:_,onClick:pe,style:{margin:0},ref:te,"aria-describedby":u?ie:void 0,children:re.dropzone.browseFiles})}):/*#__PURE__*/M(o,{behavior:a.item,children:[/*#__PURE__*/B(A,{"aria-hidden":"true",color:_?ee.colors.neutral100:ee.colors.neutral500,size:48}),/*#__PURE__*/B(Fe,{isInverse:_,theme:ee,children:re.dropzone.dragMessage}),/*#__PURE__*/B(v,{color:m.primary,disabled:d,isInverse:_,onClick:pe,style:{margin:0},variant:p.solid,ref:te,"aria-describedby":u?ie:void 0,children:re.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/B(ke,{children:K.map(e=>/*#__PURE__*/B(De,{children:/*#__PURE__*/B(fe,{accept:i,file:e,isInverse:_,maxSize:D,minSize:O,onDeleteFile:xe,onRemoveFile:he,thumbnails:U})},e.name))}),/*#__PURE__*/B(x,{children:/*#__PURE__*/B(y,{children:Q})})]})});export{Oe as Dropzone,W as FileIcon};
84
+ `)),Oe=r.li(Ie||(Ie=we``)),Ae=/*#__PURE__*/P.forwardRef((e,r)=>{const{accept:l,containerStyle:a,disabled:c,dropzoneOptions:p={multiple:!0},helperMessage:m,id:h,inputSize:f,isInverse:S,isLabelVisuallyHidden:$,labelStyle:I,labelText:w,maxFiles:F,minFiles:k,maxSize:R,minSize:D,multiple:j=!0,noDrag:O=!1,onSendFile:A,onDeleteFile:C,onRemoveFile:B,sendFiles:E=!1,testId:N,thumbnails:T=!0}=e,U=J(e,be),[G,W]=P.useState([]),[Y,Z]=P.useState(null),[Q,X]=P.useState(""),_=n(S),ee=P.useContext(t),re=P.useContext(i),oe=v(h),le=v(`${oe}-helper`),te=P.useRef(null),ie=P.useCallback((e,r)=>{const o=[...e.map(e=>Object.assign(e,{preview:URL.createObjectURL(e)})),...r.map(({file:e,errors:r})=>Object.assign(e,{errors:r}))];if(W(e=>[...e,...o]),e.length>0){const r=e.map(e=>e.name).join(", "),o=1===e.length?re.dropzone.fileAdded.replace(/\{fileName\}/g,r):re.dropzone.filesAdded.replace(/\{count\}/g,e.length.toString()).replace(/\{fileNames\}/g,r);X(o)}te.current&&te.current.focus()},[re]),{getInputProps:ne,getRootProps:se,isDragAccept:ae,isDragActive:ce,isDragReject:de,open:pe,inputRef:me}=K(q({noClick:!0,disabled:c,multiple:j,maxSize:R,minSize:D,accept:l,onDrop:ie,noDrag:O},p));V(r,()=>me.current);const ue=ne({id:oe});let ge=Fe.default;Y?ge=Fe.error:ae?ge=Fe.dragAccept:de?ge=Fe.dragReject:ce&&(ge=Fe.dragActive);const he=e=>{W(r=>r.filter(r=>r!==e)),B&&"function"==typeof B&&B(e);const r=re.dropzone.fileRemoved.replace(/\{fileName\}/g,e.name);X(r),te.current&&te.current.focus()},fe=e=>{W(r=>r.filter(r=>r!==e)),C&&"function"==typeof C&&C(e);const r=re.dropzone.fileDeleted.replace(/\{fileName\}/g,e.name);X(r),te.current&&te.current.focus()},ve=e=>{if(W(r=>r.map(r=>r===e.file?Object.assign(r,{processor:q({},r.processor,{percent:`${e.percent}%`,status:"pending"})}):r)),e.percent>0&&e.percent%25==0){const r=re.dropzone.fileUploading.replace(/\{fileName\}/g,e.file.name).replace(/\{percent\}/g,e.percent.toString());X(r)}},xe=e=>{W(r=>r.map(r=>r===e.file?Object.assign(r,{processor:q({},r.processor,{percent:"",status:"finished"})}):r));const r=re.dropzone.fileUploaded.replace(/\{fileName\}/g,e.file.name);X(r)},ze=e=>{W(r=>r.map(r=>r===e.file?Object.assign(r,{errors:e.errors,processor:q({},r.processor,{status:"error"})}):r))};return P.useEffect(()=>()=>{G.forEach(e=>e.preview&&URL.revokeObjectURL(e.preview))},[G]),P.useEffect(()=>{const e=k&&G.length<k,r=F&&G.length>F;let o=null;r?o="too-many-files":e&&(o="too-few-files"),Z(((e,r)=>{if(null===e)return null;const o=re.dropzone.errors[e];switch(e){case"too-many-files":return`${o.message} ${r.maxFiles} ${re.dropzone.files}.`;case"too-few-files":return`${o.message} ${r.minFiles} ${re.dropzone.files}.`;default:return o.message}})(o,{minFiles:k,maxFiles:F})),E&&G.length>0&&!r&&!e&&W(e=>e.map(e=>(e.errors||e.processor||!A||A({file:e,onError:ze,onFinish:xe,onProgress:ve}),e)))},[E,G.length,A,F,k,re.dropzone.errors,re.dropzone.files]),/*#__PURE__*/L(s.Provider,{value:{isInverse:_},children:[/*#__PURE__*/L(y,{actionable:!1,containerStyle:a,errorMessage:Y,fieldId:oe,inputSize:f,isInverse:_,isLabelVisuallyHidden:$,labelStyle:q({color:_?ee.colors.neutral0:ee.colors.brand.navy},I),labelText:w,messageStyle:{minHeight:0},"data-testid":N,children:[/*#__PURE__*/H(Re,{id:le,theme:ee,isInverse:_,children:m}),/*#__PURE__*/L(ke,q({behavior:d.container,dragState:ge,isInverse:_,noDrag:O,theme:ee},se(),U,{testId:N,tabIndex:-1,children:[/*#__PURE__*/H("input",{ref:me,type:ue.type,accept:ue.accept,autoComplete:ue.autoComplete,id:ue.id,multiple:ue.multiple,onChange:ue.onChange,onClick:ue.onClick,style:ue.style,tabIndex:ue.tabIndex,"data-testid":"file-input"}),O?/*#__PURE__*/H(o,{xs:!0,behavior:d.item,children:/*#__PURE__*/H(b,{color:g.primary,disabled:c,isInverse:_,onClick:pe,style:{margin:0},ref:te,"aria-describedby":m?le:void 0,children:re.dropzone.browseFiles})}):/*#__PURE__*/L(o,{behavior:d.item,children:[/*#__PURE__*/H(M,{"aria-hidden":"true",color:_?ee.colors.neutral0:ee.colors.neutral700,size:48}),/*#__PURE__*/H(De,{isInverse:_,theme:ee,children:re.dropzone.dragMessage}),/*#__PURE__*/H(b,{color:g.primary,disabled:c,isInverse:_,onClick:pe,style:{margin:0},variant:u.solid,ref:te,"aria-describedby":m?le:void 0,children:re.dropzone.browseFiles})]})]}))]}),/*#__PURE__*/H(je,{children:G.map(e=>/*#__PURE__*/H(Oe,{children:/*#__PURE__*/H(ye,{accept:l,file:e,isInverse:_,maxSize:R,minSize:D,onDeleteFile:fe,onRemoveFile:he,thumbnails:T})},e.name))}),/*#__PURE__*/H(x,{children:/*#__PURE__*/H(z,{children:Q})})]})});export{Ae as Dropzone,Z as FileIcon};
83
85
  //# sourceMappingURL=fileuploader.modern.mjs.map