@aws-amplify/ui-react-storage 0.0.0-studio-f560d76-20230620234412 → 0.0.0-studio-e5b8195-20230912200241

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/esm/components/StorageImage/StorageImage.js +1 -0
  2. package/dist/esm/components/StorageManager/StorageManager.js +1 -1
  3. package/dist/esm/components/StorageManager/hooks/useStorageManager/actions.js +1 -1
  4. package/dist/esm/components/StorageManager/hooks/useStorageManager/reducer.js +1 -1
  5. package/dist/esm/components/StorageManager/hooks/useStorageManager/types.js +1 -1
  6. package/dist/esm/components/StorageManager/hooks/useStorageManager/useStorageManager.js +1 -1
  7. package/dist/esm/components/StorageManager/types.js +1 -1
  8. package/dist/esm/components/StorageManager/ui/DropZone/DropZone.js +1 -1
  9. package/dist/esm/components/StorageManager/ui/FileList/FileRemoveButton.js +1 -1
  10. package/dist/esm/components/StorageManager/ui/FileList/FileStatusMessage.js +1 -1
  11. package/dist/esm/components/StorageManager/ui/FileList/FileThumbnail.js +1 -1
  12. package/dist/esm/components/StorageManager/ui/FileListFooter/FileListFooter.js +1 -0
  13. package/dist/esm/components/StorageManager/ui/FileListHeader/FileListHeader.js +1 -1
  14. package/dist/esm/components/StorageManager/utils/displayText.js +1 -1
  15. package/dist/esm/index.js +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/styles.css +1675 -227
  18. package/dist/types/components/StorageImage/StorageImage.d.ts +3 -0
  19. package/dist/types/components/StorageImage/_tests_/StorageImage.test.d.ts +1 -0
  20. package/dist/types/components/StorageImage/index.d.ts +2 -0
  21. package/dist/types/components/StorageImage/types.d.ts +9 -0
  22. package/dist/types/components/StorageManager/StorageManager.d.ts +2 -1
  23. package/dist/types/components/StorageManager/hooks/index.d.ts +0 -1
  24. package/dist/types/components/StorageManager/hooks/useStorageManager/actions.d.ts +2 -1
  25. package/dist/types/components/StorageManager/hooks/useStorageManager/types.d.ts +5 -0
  26. package/dist/types/components/StorageManager/hooks/useStorageManager/useStorageManager.d.ts +3 -1
  27. package/dist/types/components/StorageManager/index.d.ts +1 -1
  28. package/dist/types/components/StorageManager/types.d.ts +7 -1
  29. package/dist/types/components/StorageManager/ui/FileListFooter/FileListFooter.d.ts +9 -0
  30. package/dist/types/components/StorageManager/ui/FileListFooter/index.d.ts +1 -0
  31. package/dist/types/components/StorageManager/ui/FileListHeader/FileListHeader.d.ts +4 -3
  32. package/dist/types/components/StorageManager/ui/index.d.ts +1 -0
  33. package/dist/types/components/StorageManager/utils/displayText.d.ts +1 -0
  34. package/dist/types/components/index.d.ts +2 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/package.json +8 -8
  37. package/dist/esm/components/StorageManager/hooks/useDropZone/useDropZone.js +0 -1
  38. package/dist/types/components/StorageManager/hooks/useDropZone/index.d.ts +0 -1
  39. package/dist/types/components/StorageManager/hooks/useDropZone/useDropZone.d.ts +0 -13
@@ -0,0 +1 @@
1
+ import{__rest as e}from"tslib";import*as r from"react";import a from"classnames";import{Image as t,ComponentClassNames as o}from"@aws-amplify/ui-react";import{useStorageURL as s}from"@aws-amplify/ui-react/internal";const c=c=>{var{accessLevel:i,className:m,fallbackSrc:l,identityId:n,imgKey:f,onStorageGetError:p}=c,g=e(c,["accessLevel","className","fallbackSrc","identityId","imgKey","onStorageGetError"]);const y=r.useMemo((()=>({level:i,identityId:n})),[i,n]),d=s({key:f,options:y,fallbackURL:l,onStorageGetError:p});return r.createElement(t,Object.assign({},g,{className:a(o.StorageImage,m),src:d}))};export{c as StorageImage};
@@ -1 +1 @@
1
- import*as e from"react";import{Logger as i}from"aws-amplify";import{ComponentClassNames as s,VisuallyHidden as r}from"@aws-amplify/ui-react";import{useDropZone as o}from"./hooks/useDropZone/useDropZone.js";import{useStorageManager as t}from"./hooks/useStorageManager/useStorageManager.js";import{useUploadFiles as l}from"./hooks/useUploadFiles/useUploadFiles.js";import{FileStatus as a}from"./types.js";import{Container as n}from"./ui/Container/Container.js";import{DropZone as p}from"./ui/DropZone/DropZone.js";import{FileList as c}from"./ui/FileList/FileList.js";import{FileListHeader as m}from"./ui/FileListHeader/FileListHeader.js";import{FilePicker as u}from"./ui/FilePicker/FilePicker.js";import{checkMaxFileSize as d}from"./utils/checkMaxFileSize.js";import{defaultStorageManagerDisplayText as f}from"./utils/displayText.js";import{filterAllowedFiles as F}from"./utils/filterAllowedFiles.js";import"tslib";const g=new i("Storage.StorageManager");const U=Object.assign(e.forwardRef((function({acceptedFileTypes:i=[],accessLevel:U,defaultFiles:h,displayText:j,isResumable:x=!1,maxFileCount:S,maxFileSize:y,onUploadError:E,onUploadSuccess:k,onFileRemove:C,onUploadStart:L,showThumbnails:T=!0,processFile:b,components:v,provider:D,path:P},w){U&&S||g.warn("FileUploader requires accessLevel and maxFileCount props");const M=Object.assign({Container:n,DropZone:p,FileList:c,FilePicker:u,FileListHeader:m},v),R=void 0===S||"number"==typeof S&&S>1,O=Object.assign(Object.assign({},f),j),{getFileSizeErrorText:Z}=O,H=e=>d({file:e,maxFileSize:y,getFileSizeErrorText:Z}),{addFiles:z,clearFiles:A,files:I,removeUpload:$,setUploadingFile:q,setUploadPaused:N,setUploadProgress:B,setUploadSuccess:G,setUploadResumed:J}=t(h);e.useImperativeHandle(w,(()=>({clearFiles:A})));const K=o({onChange:e=>{const{files:s}=e.dataTransfer;if(!s||0===s.length)return;const r=F(Array.from(s),i);z({files:r,getFileErrorMessage:H})}});l({accessLevel:U,files:I,isResumable:x,maxFileCount:S,onUploadError:E,onUploadSuccess:k,onUploadStart:L,setUploadingFile:q,setUploadProgress:B,setUploadSuccess:G,processFile:b,provider:D,path:P});const Q=0!==I.length&&I.every((e=>(null==e?void 0:e.status)===a.UPLOADED)),V=I.filter((e=>e.progress<100)).length>S,W=I.filter((e=>(null==e?void 0:e.status)===a.UPLOADED)).length,X=I.length-W,Y=I.length>0,_=e.useRef(null);return e.createElement(M.Container,{className:`${s.StorageManager} ${Y?s.StorageManagerPreviewer:""}`},e.createElement(M.DropZone,Object.assign({},K,{displayText:O}),e.createElement(e.Fragment,null,e.createElement(M.FilePicker,{onClick:function(){_.current&&(_.current.click(),_.current.value="")}},O.browseFilesText),e.createElement(r,null,e.createElement("input",{type:"file",tabIndex:-1,ref:_,onChange:e=>{const{files:i}=e.target;i&&0!==i.length&&z({files:Array.from(i),getFileErrorMessage:H})},multiple:R,accept:i.join(",")})))),Y?e.createElement(M.FileListHeader,{allUploadsSuccessful:Q,displayText:O,fileCount:I.length,remainingFilesCount:X}):null,e.createElement(M.FileList,{displayText:O,files:I,isResumable:x,onCancelUpload:({id:e,uploadTask:i})=>{i.pause(),$({id:e})},onDeleteUpload:({id:e})=>{if($({id:e}),"function"==typeof C){const i=I.find((i=>i.id===e));i&&C({key:i.key})}},onResume:({id:e,uploadTask:i})=>{i.resume(),J({id:e})},onPause:({id:e,uploadTask:i})=>{i.pause(),N({id:e})},showThumbnails:T,hasMaxFilesError:V,maxFileCount:S}))})),{Container:n,DropZone:p,FileList:c,FileListHeader:m,FilePicker:u});export{U as StorageManager};
1
+ import{__rest as e}from"tslib";import*as i from"react";import{Logger as t}from"aws-amplify";import{ComponentClassNames as l,VisuallyHidden as o}from"@aws-amplify/ui-react";import{useDropZone as s}from"@aws-amplify/ui-react/internal";import{useStorageManager as r}from"./hooks/useStorageManager/useStorageManager.js";import{useUploadFiles as a}from"./hooks/useUploadFiles/useUploadFiles.js";import{FileStatus as n}from"./types.js";import{Container as p}from"./ui/Container/Container.js";import{DropZone as c}from"./ui/DropZone/DropZone.js";import{FileList as u}from"./ui/FileList/FileList.js";import{FileListHeader as m}from"./ui/FileListHeader/FileListHeader.js";import{FileListFooter as d}from"./ui/FileListFooter/FileListFooter.js";import{FilePicker as F}from"./ui/FilePicker/FilePicker.js";import{checkMaxFileSize as f}from"./utils/checkMaxFileSize.js";import{defaultStorageManagerDisplayText as g}from"./utils/displayText.js";import{filterAllowedFiles as U}from"./utils/filterAllowedFiles.js";const E=new t("Storage.StorageManager");const j=Object.assign(i.forwardRef((function({acceptedFileTypes:t=[],accessLevel:j,autoUpload:D=!0,defaultFiles:L,displayText:S,isResumable:h=!1,maxFileCount:x,maxFileSize:y,onUploadError:C,onUploadSuccess:T,onFileRemove:k,onUploadStart:v,showThumbnails:b=!0,processFile:w,components:P,provider:M,path:R},A){j&&x||E.warn("FileUploader requires accessLevel and maxFileCount props");const O=Object.assign({Container:p,DropZone:c,FileList:u,FilePicker:F,FileListHeader:m,FileListFooter:d},P),H=void 0===x||"number"==typeof x&&x>1,Z=Object.assign(Object.assign({},g),S),{getFileSizeErrorText:z}=Z,q=e=>f({file:e,maxFileSize:y,getFileSizeErrorText:z}),{addFiles:I,clearFiles:Q,files:$,removeUpload:N,queueFiles:B,setUploadingFile:G,setUploadPaused:J,setUploadProgress:K,setUploadSuccess:V,setUploadResumed:W}=r(L);i.useImperativeHandle(A,(()=>({clearFiles:Q})));const X=s({acceptedFileTypes:t,onDropComplete:({acceptedFiles:e,rejectedFiles:i})=>{i&&i.length>0&&E.warn("Rejected files: ",i);const l=U(e,t);I({files:l,status:D?n.QUEUED:n.ADDED,getFileErrorMessage:q})}}),{dragState:Y}=X,_=e(X,["dragState"]);a({accessLevel:j,files:$,isResumable:h,maxFileCount:x,onUploadError:C,onUploadSuccess:T,onUploadStart:v,setUploadingFile:G,setUploadProgress:K,setUploadSuccess:V,processFile:w,provider:M,path:R});const ee=0!==$.length&&$.every((e=>(null==e?void 0:e.status)===n.UPLOADED)),ie=$.filter((e=>e.progress<100)).length>x,te=$.filter((e=>(null==e?void 0:e.status)===n.UPLOADED)).length,le=$.length-te,oe=D?0:le,se=$.length>0,re=!D&&le>0,ae=i.useRef(null);return i.createElement(O.Container,{className:`${l.StorageManager} ${se?l.StorageManagerPreviewer:""}`},i.createElement(O.DropZone,Object.assign({inDropZone:"inactive"!==Y},_,{displayText:Z}),i.createElement(i.Fragment,null,i.createElement(O.FilePicker,{onClick:function(){ae.current&&(ae.current.click(),ae.current.value="")}},Z.browseFilesText),i.createElement(o,null,i.createElement("input",{type:"file",tabIndex:-1,ref:ae,onChange:e=>{const{files:i}=e.target;i&&0!==i.length&&I({files:Array.from(i),status:D?n.QUEUED:n.ADDED,getFileErrorMessage:q})},multiple:H,accept:t.join(",")})))),se?i.createElement(O.FileListHeader,{allUploadsSuccessful:ee,displayText:Z,fileCount:$.length,remainingFilesCount:le,selectedFilesCount:oe}):null,i.createElement(O.FileList,{displayText:Z,files:$,isResumable:h,onCancelUpload:({id:e,uploadTask:i})=>{i.pause(),N({id:e})},onDeleteUpload:({id:e})=>{if(N({id:e}),"function"==typeof k){const i=$.find((i=>i.id===e));i&&k({key:i.key})}},onResume:({id:e,uploadTask:i})=>{i.resume(),W({id:e})},onPause:({id:e,uploadTask:i})=>{i.pause(),J({id:e})},showThumbnails:b,hasMaxFilesError:ie,maxFileCount:x}),re?i.createElement(O.FileListFooter,{displayText:Z,remainingFilesCount:le,onClearAll:()=>{Q()},onUploadAll:()=>{B()}}):null)})),{Container:p,DropZone:c,FileList:u,FileListHeader:m,FileListFooter:d,FilePicker:F});export{j as StorageManager};
@@ -1 +1 @@
1
- import{StorageManagerActionTypes as e}from"./types.js";const s=({files:s,getFileErrorMessage:t})=>({type:e.ADD_FILES,files:s,getFileErrorMessage:t}),t=()=>({type:e.CLEAR_FILES}),i=({id:s,uploadTask:t})=>({type:e.SET_STATUS_UPLOADING,id:s,uploadTask:t}),p=({id:s,progress:t})=>({type:e.SET_UPLOAD_PROGRESS,id:s,progress:t}),r=({id:s,status:t})=>({type:e.SET_STATUS,id:s,status:t}),E=({id:s})=>({type:e.REMOVE_UPLOAD,id:s});export{s as addFilesAction,t as clearFilesAction,E as removeUploadAction,p as setUploadProgressAction,r as setUploadStatusAction,i as setUploadingFileAction};
1
+ import{StorageManagerActionTypes as s}from"./types.js";const e=({files:e,status:t,getFileErrorMessage:p})=>({type:s.ADD_FILES,files:e,status:t,getFileErrorMessage:p}),t=()=>({type:s.CLEAR_FILES}),p=()=>({type:s.QUEUE_FILES}),E=({id:e,uploadTask:t})=>({type:s.SET_STATUS_UPLOADING,id:e,uploadTask:t}),i=({id:e,progress:t})=>({type:s.SET_UPLOAD_PROGRESS,id:e,progress:t}),r=({id:e,status:t})=>({type:s.SET_STATUS,id:e,status:t}),S=({id:e})=>({type:s.REMOVE_UPLOAD,id:e});export{e as addFilesAction,t as clearFilesAction,p as queueFilesAction,S as removeUploadAction,i as setUploadProgressAction,r as setUploadStatusAction,E as setUploadingFileAction};
@@ -1 +1 @@
1
- import{FileStatus as s}from"../../types.js";import{StorageManagerActionTypes as e}from"./types.js";function t(t,i){switch(i.type){case e.ADD_FILES:{const{files:e}=i,a=e.map((e=>{const t=i.getFileErrorMessage(e);return{id:e.name,file:e,error:t,key:e.name,status:t?s.ERROR:s.QUEUED,isImage:e.type.startsWith("image/"),progress:-1}})),r=[...t.files,...a];return Object.assign(Object.assign({},t),{files:r})}case e.CLEAR_FILES:return Object.assign(Object.assign({},t),{files:[]});case e.SET_STATUS_UPLOADING:{const{id:e,uploadTask:a}=i,{files:r}=t,c=r.reduce(((t,i)=>i.id===e?[...t,Object.assign(Object.assign({},i),{status:s.UPLOADING,progress:0,uploadTask:a||void 0})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:c})}case e.SET_UPLOAD_PROGRESS:{const{id:s,progress:e}=i,{files:a}=t,r=a.reduce(((t,i)=>i.id===s?[...t,Object.assign(Object.assign({},i),{progress:e})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:r})}case e.SET_STATUS:{const{id:s,status:e}=i,{files:a}=t,r=a.reduce(((t,i)=>i.id===s?[...t,Object.assign(Object.assign({},i),{status:e})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:r})}case e.REMOVE_UPLOAD:{const{id:s}=i,{files:e}=t,a=e.reduce(((e,t)=>t.id===s?[...e]:[...e,t]),[]);return Object.assign(Object.assign({},t),{files:a})}}}export{t as storageManagerStateReducer};
1
+ import{FileStatus as s}from"../../types.js";import{StorageManagerActionTypes as e}from"./types.js";function t(t,i){switch(i.type){case e.ADD_FILES:{const{files:e,status:a}=i,c=e.map((e=>{const t=i.getFileErrorMessage(e);return{id:e.name,file:e,error:t,key:e.name,status:t?s.ERROR:a,isImage:e.type.startsWith("image/"),progress:-1}})),n=[...t.files,...c];return Object.assign(Object.assign({},t),{files:n})}case e.CLEAR_FILES:return Object.assign(Object.assign({},t),{files:[]});case e.QUEUE_FILES:{const{files:e}=t,i=e.reduce(((e,t)=>[...e,Object.assign(Object.assign({},t),{status:s.QUEUED})]),[]);return Object.assign(Object.assign({},t),{files:i})}case e.SET_STATUS_UPLOADING:{const{id:e,uploadTask:a}=i,{files:c}=t,n=c.reduce(((t,i)=>i.id===e?[...t,Object.assign(Object.assign({},i),{status:s.UPLOADING,progress:0,uploadTask:a||void 0})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:n})}case e.SET_UPLOAD_PROGRESS:{const{id:s,progress:e}=i,{files:a}=t,c=a.reduce(((t,i)=>i.id===s?[...t,Object.assign(Object.assign({},i),{progress:e})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:c})}case e.SET_STATUS:{const{id:s,status:e}=i,{files:a}=t,c=a.reduce(((t,i)=>i.id===s?[...t,Object.assign(Object.assign({},i),{status:e})]:[...t,i]),[]);return Object.assign(Object.assign({},t),{files:c})}case e.REMOVE_UPLOAD:{const{id:s}=i,{files:e}=t,a=e.reduce(((e,t)=>t.id===s?[...e]:[...e,t]),[]);return Object.assign(Object.assign({},t),{files:a})}}}export{t as storageManagerStateReducer};
@@ -1 +1 @@
1
- var S;!function(S){S.ADD_FILES="ADD_FILES",S.CLEAR_FILES="CLEAR_FILES",S.SET_STATUS="SET_STATUS",S.SET_STATUS_UPLOADING="SET_STATUS_UPLOADING",S.SET_UPLOAD_PROGRESS="SET_UPLOAD_PROGRESS",S.REMOVE_UPLOAD="REMOVE_UPLOAD"}(S||(S={}));export{S as StorageManagerActionTypes};
1
+ var E;!function(E){E.ADD_FILES="ADD_FILES",E.CLEAR_FILES="CLEAR_FILES",E.QUEUE_FILES="QUEUE_FILES",E.SET_STATUS="SET_STATUS",E.SET_STATUS_UPLOADING="SET_STATUS_UPLOADING",E.SET_UPLOAD_PROGRESS="SET_UPLOAD_PROGRESS",E.REMOVE_UPLOAD="REMOVE_UPLOAD"}(E||(E={}));export{E as StorageManagerActionTypes};
@@ -1 +1 @@
1
- import s from"react";import{FileStatus as e}from"../../types.js";import{storageManagerStateReducer as i}from"./reducer.js";import{addFilesAction as r,clearFilesAction as t,setUploadingFileAction as o,setUploadProgressAction as a,setUploadStatusAction as d,removeUploadAction as l}from"./actions.js";import{isObject as p}from"@aws-amplify/ui";const u=s=>(s=>!(!p(s)||!s.key))(s)?Object.assign(Object.assign({},s),{id:s.key,status:e.UPLOADED}):void 0;function m(p=[]){const[{files:m},f]=s.useReducer(i,{files:Array.isArray(p)?p.map(u).filter((s=>!!s)):[]});return{removeUpload:({id:s})=>{f(l({id:s}))},setUploadPaused:({id:s})=>{f(d({id:s,status:e.PAUSED}))},setUploadProgress:({progress:s,id:e})=>{f(a({id:e,progress:s}))},setUploadResumed:({id:s})=>{f(d({id:s,status:e.UPLOADING}))},setUploadSuccess:({id:s})=>{f(d({id:s,status:e.UPLOADED}))},setUploadingFile:({uploadTask:s,id:e})=>{f(o({id:e,uploadTask:s}))},addFiles:({files:s,getFileErrorMessage:e})=>{f(r({files:s,getFileErrorMessage:e}))},clearFiles:()=>{f(t())},files:m}}export{m as useStorageManager};
1
+ import s from"react";import{FileStatus as e}from"../../types.js";import{storageManagerStateReducer as i}from"./reducer.js";import{addFilesAction as r,clearFilesAction as t,queueFilesAction as a,setUploadingFileAction as o,setUploadProgressAction as d,setUploadStatusAction as l,removeUploadAction as p}from"./actions.js";import{isObject as u}from"@aws-amplify/ui";const m=s=>(s=>!(!u(s)||!s.key))(s)?Object.assign(Object.assign({},s),{id:s.key,status:e.UPLOADED}):void 0;function f(u=[]){const[{files:f},c]=s.useReducer(i,{files:Array.isArray(u)?u.map(m).filter((s=>!!s)):[]});return{removeUpload:({id:s})=>{c(p({id:s}))},setUploadPaused:({id:s})=>{c(l({id:s,status:e.PAUSED}))},setUploadProgress:({progress:s,id:e})=>{c(d({id:e,progress:s}))},setUploadResumed:({id:s})=>{c(l({id:s,status:e.UPLOADING}))},setUploadSuccess:({id:s})=>{c(l({id:s,status:e.UPLOADED}))},setUploadingFile:({uploadTask:s,id:e})=>{c(o({id:e,uploadTask:s}))},queueFiles:()=>{c(a())},addFiles:({files:s,status:e,getFileErrorMessage:i})=>{c(r({files:s,status:e,getFileErrorMessage:i}))},clearFiles:()=>{c(t())},files:f}}export{f as useStorageManager};
@@ -1 +1 @@
1
- var e;!function(e){e.QUEUED="queued",e.UPLOADING="uploading",e.PAUSED="paused",e.ERROR="error",e.UPLOADED="uploaded"}(e||(e={}));export{e as FileStatus};
1
+ var d;!function(d){d.ADDED="added",d.QUEUED="queued",d.UPLOADING="uploading",d.PAUSED="paused",d.ERROR="error",d.UPLOADED="uploaded"}(d||(d={}));export{d as FileStatus};
@@ -1 +1 @@
1
- import e from"react";import r from"classnames";import{View as a,ComponentClassNames as o,Text as t}from"@aws-amplify/ui-react";import{classNameModifier as n}from"@aws-amplify/ui";import{IconUpload as i}from"@aws-amplify/ui-react/internal";function m({children:m,displayText:p,inDropZone:s,onDragEnter:g,onDragLeave:c,onDragOver:D,onDragStart:l,onDrop:f,testId:d}){const{dropFilesText:S}=p;return e.createElement(a,{className:r(s&&n(o.StorageManagerDropZone,"active"),o.StorageManagerDropZone),"data-testid":d,onDragStart:l,onDragEnter:g,onDragLeave:c,onDrop:f,onDragOver:D},e.createElement(i,{"aria-hidden":!0,className:o.StorageManagerDropZoneIcon}),e.createElement(t,{className:o.StorageManagerDropZoneText},S),m)}export{m as DropZone};
1
+ import a from"react";import e from"classnames";import{View as r,ComponentClassNames as o,Text as n}from"@aws-amplify/ui-react";import{classNameModifier as t}from"@aws-amplify/ui";import{useIcons as i,IconUpload as l}from"@aws-amplify/ui-react/internal";function m({children:m,displayText:p,inDropZone:s,onDragEnter:g,onDragLeave:c,onDragOver:D,onDragStart:d,onDrop:f,testId:u}){var v;const{dropFilesText:E}=p,S=i("storageManager");return a.createElement(r,{className:e(s&&t(o.StorageManagerDropZone,"active"),o.StorageManagerDropZone),"data-testid":u,onDragStart:d,onDragEnter:g,onDragLeave:c,onDrop:f,onDragOver:D},a.createElement(r,{as:"span","aria-hidden":!0,className:o.StorageManagerDropZoneIcon},null!==(v=null==S?void 0:S.upload)&&void 0!==v?v:a.createElement(l,null)),a.createElement(n,{className:o.StorageManagerDropZoneText},E),m)}export{m as DropZone};
@@ -1 +1 @@
1
- import e from"react";import{IconClose as t}from"@aws-amplify/ui-react/internal";import{Button as a,VisuallyHidden as i}from"@aws-amplify/ui-react";const r=({altText:r,onClick:m})=>e.createElement(a,{size:"small",onClick:m},e.createElement(i,null,r),e.createElement(t,{"aria-hidden":!0,fontSize:"medium"}));export{r as FileRemoveButton};
1
+ import e from"react";import{useIcons as t,IconClose as a}from"@aws-amplify/ui-react/internal";import{Button as r,VisuallyHidden as l,View as n}from"@aws-amplify/ui-react";const i=({altText:i,onClick:m})=>{var o;const c=t("storageManager");return e.createElement(r,{size:"small",onClick:m},e.createElement(l,null,i),e.createElement(n,{as:"span","aria-hidden":!0,fontSize:"medium"},null!==(o=null==c?void 0:c.remove)&&void 0!==o?o:e.createElement(a,null)))};export{i as FileRemoveButton};
@@ -1 +1 @@
1
- import e from"react";import a from"classnames";import{Text as t,ComponentClassNames as r}from"@aws-amplify/ui-react";import{IconError as s,IconCheck as l}from"@aws-amplify/ui-react/internal";import{classNameModifier as m}from"@aws-amplify/ui";import{FileStatus as n}from"../../types.js";const o=({errorMessage:o,getPausedText:c,getUploadingText:i,percentage:u,status:g,uploadSuccessfulText:S})=>{switch(g){case n.UPLOADING:return e.createElement(t,{className:r.StorageManagerFileStatus},i(u));case n.PAUSED:return e.createElement(t,{className:r.StorageManagerFileStatus},c(u));case n.UPLOADED:return e.createElement(t,{className:a(r.StorageManagerFileStatus,m(r.StorageManagerFileStatus,"success"))},e.createElement(l,{fontSize:"xl"})," ",S);case n.ERROR:return e.createElement(t,{className:a(r.StorageManagerFileStatus,m(r.StorageManagerFileStatus,"error"))},e.createElement(s,{fontSize:"xl"})," ",o);default:return null}};export{o as FileStatusMessage};
1
+ import e from"react";import a from"classnames";import{Text as t,ComponentClassNames as r,View as s}from"@aws-amplify/ui-react";import{useIcons as l,IconError as n,IconCheck as o}from"@aws-amplify/ui-react/internal";import{classNameModifier as c}from"@aws-amplify/ui";import{FileStatus as u}from"../../types.js";const m=({errorMessage:m,getPausedText:i,getUploadingText:g,percentage:p,status:S,uploadSuccessfulText:f})=>{var E,d;const M=l("storageManager");switch(S){case u.UPLOADING:return e.createElement(t,{className:r.StorageManagerFileStatus},g(p));case u.PAUSED:return e.createElement(t,{className:r.StorageManagerFileStatus},i(p));case u.UPLOADED:return e.createElement(t,{className:a(r.StorageManagerFileStatus,c(r.StorageManagerFileStatus,"success"))},e.createElement(s,{as:"span",fontSize:"xl"},null!==(E=null==M?void 0:M.success)&&void 0!==E?E:e.createElement(o,null)),f);case u.ERROR:return e.createElement(t,{className:a(r.StorageManagerFileStatus,c(r.StorageManagerFileStatus,"error"))},e.createElement(s,{as:"span",fontSize:"xl"},null!==(d=null==M?void 0:M.error)&&void 0!==d?d:e.createElement(n,null)),m);default:return null}};export{m as FileStatusMessage};
@@ -1 +1 @@
1
- import e from"react";import{Image as a,View as r,ComponentClassNames as t}from"@aws-amplify/ui-react";import{IconFile as m}from"@aws-amplify/ui-react/internal";const l=({fileName:l,isImage:i,url:c})=>{const n=i?e.createElement(a,{alt:l,src:c}):e.createElement(m,null);return e.createElement(r,{className:t.StorageManagerFileImage},n)};export{l as FileThumbnail};
1
+ import e from"react";import{Image as a,View as r,ComponentClassNames as t}from"@aws-amplify/ui-react";import{useIcons as l,IconFile as m}from"@aws-amplify/ui-react/internal";const i=({fileName:i,isImage:n,url:o})=>{var c;const s=l("storageManager"),f=n?e.createElement(a,{alt:i,src:o}):null!==(c=null==s?void 0:s.file)&&void 0!==c?c:e.createElement(m,null);return e.createElement(r,{className:t.StorageManagerFileImage},f)};export{i as FileThumbnail};
@@ -0,0 +1 @@
1
+ import e from"react";import{View as a,ComponentClassNames as t,Button as r}from"@aws-amplify/ui-react";function l({displayText:l,remainingFilesCount:n,onClearAll:o,onUploadAll:i}){const{clearAllButtonText:m,getUploadButtonText:c}=l;return e.createElement(a,{className:t.StorageManagerPreviewerFooter},e.createElement(a,{className:t.StorageManagerPreviewerActions},e.createElement(r,{size:"small",variation:"link",onClick:o},m),e.createElement(r,{size:"small",variation:"primary",onClick:i},c(n))))}export{l as FileListFooter};
@@ -1 +1 @@
1
- import e from"react";import{Text as t,ComponentClassNames as a}from"@aws-amplify/ui-react";function i({fileCount:i,remainingFilesCount:r,displayText:l,allUploadsSuccessful:n}){const{getFilesUploadedText:o,getRemainingFilesText:s}=l;return e.createElement(t,{className:a.StorageManagerPreviewerText},n?o(i):s(r))}export{i as FileListHeader};
1
+ import e from"react";import{Text as t,ComponentClassNames as i}from"@aws-amplify/ui-react";function l({allUploadsSuccessful:l,displayText:a,fileCount:r,remainingFilesCount:s,selectedFilesCount:n=0}){const{getFilesUploadedText:o,getRemainingFilesText:c,getSelectedFilesText:m}=a;return e.createElement(t,{className:i.StorageManagerPreviewerText},n?m(n):l?o(r):c(s))}export{l as FileListHeader};
@@ -1 +1 @@
1
- const e={getFilesUploadedText:e=>`${e} ${1===e?"file uploaded":"files uploaded"}`,getFileSizeErrorText:e=>`File size must be below ${e}`,getRemainingFilesText:e=>`${e} ${1===e?"file":"files"} uploading`,getUploadingText:e=>"Uploading"+(e>0?`: ${e}%`:""),getUploadButtonText:e=>`Upload ${e} ${1===e?"file":"files"}`,getMaxFilesErrorText:e=>`Cannot choose more than ${e} ${1===e?"file":"files"}. Remove files before updating`,getErrorText:e=>e,doneButtonText:"Done",clearAllButtonText:"Clear all",extensionNotAllowedText:"Extension not allowed",browseFilesText:"Browse files",dropFilesText:"Drop files here or",pauseText:"Pause",resumeText:"Resume",uploadSuccessfulText:"Uploaded",getPausedText:e=>`Paused: ${e}%`};export{e as defaultStorageManagerDisplayText};
1
+ const e={getFilesUploadedText:e=>`${e} ${1===e?"file uploaded":"files uploaded"}`,getFileSizeErrorText:e=>`File size must be below ${e}`,getRemainingFilesText:e=>`${e} ${1===e?"file":"files"} uploading`,getSelectedFilesText:e=>`${e} ${1===e?"file":"files"} selected`,getUploadingText:e=>"Uploading"+(e>0?`: ${e}%`:""),getUploadButtonText:e=>`Upload ${e} ${1===e?"file":"files"}`,getMaxFilesErrorText:e=>`Cannot choose more than ${e} ${1===e?"file":"files"}. Remove files before updating`,getErrorText:e=>e,doneButtonText:"Done",clearAllButtonText:"Clear all",extensionNotAllowedText:"Extension not allowed",browseFilesText:"Browse files",dropFilesText:"Drop files here or",pauseText:"Pause",resumeText:"Resume",uploadSuccessfulText:"Uploaded",getPausedText:e=>`Paused: ${e}%`};export{e as defaultStorageManagerDisplayText};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{StorageManager}from"./components/StorageManager/StorageManager.js";
1
+ export{StorageImage}from"./components/StorageImage/StorageImage.js";export{StorageManager}from"./components/StorageManager/StorageManager.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),a=require("aws-amplify"),t=require("@aws-amplify/ui-react"),s=require("@aws-amplify/ui"),l=require("tslib"),r=require("classnames"),n=require("@aws-amplify/ui-react/internal");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var a=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),a.default=e,Object.freeze(a)}var c,u,d=o(e),p=i(e),m=o(r);function g(e,a){switch(a.type){case u.ADD_FILES:{const{files:t}=a,s=t.map((e=>{const t=a.getFileErrorMessage(e);return{id:e.name,file:e,error:t,key:e.name,status:t?c.ERROR:c.QUEUED,isImage:e.type.startsWith("image/"),progress:-1}})),l=[...e.files,...s];return Object.assign(Object.assign({},e),{files:l})}case u.CLEAR_FILES:return Object.assign(Object.assign({},e),{files:[]});case u.SET_STATUS_UPLOADING:{const{id:t,uploadTask:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{status:c.UPLOADING,progress:0,uploadTask:s||void 0})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case u.SET_UPLOAD_PROGRESS:{const{id:t,progress:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{progress:s})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case u.SET_STATUS:{const{id:t,status:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{status:s})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case u.REMOVE_UPLOAD:{const{id:t}=a,{files:s}=e,l=s.reduce(((e,a)=>a.id===t?[...e]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:l})}}}!function(e){e.QUEUED="queued",e.UPLOADING="uploading",e.PAUSED="paused",e.ERROR="error",e.UPLOADED="uploaded"}(c||(c={})),function(e){e.ADD_FILES="ADD_FILES",e.CLEAR_FILES="CLEAR_FILES",e.SET_STATUS="SET_STATUS",e.SET_STATUS_UPLOADING="SET_STATUS_UPLOADING",e.SET_UPLOAD_PROGRESS="SET_UPLOAD_PROGRESS",e.REMOVE_UPLOAD="REMOVE_UPLOAD"}(u||(u={}));const f=({files:e,getFileErrorMessage:a})=>({type:u.ADD_FILES,files:e,getFileErrorMessage:a}),E=()=>({type:u.CLEAR_FILES}),S=({id:e,uploadTask:a})=>({type:u.SET_STATUS_UPLOADING,id:e,uploadTask:a}),T=({id:e,progress:a})=>({type:u.SET_UPLOAD_PROGRESS,id:e,progress:a}),U=({id:e,status:a})=>({type:u.SET_STATUS,id:e,status:a}),C=({id:e})=>({type:u.REMOVE_UPLOAD,id:e}),F=e=>(e=>!(!s.isObject(e)||!e.key))(e)?Object.assign(Object.assign({},e),{id:e.key,status:c.UPLOADED}):void 0;function D(e){var{file:t,key:s,level:r="private",progressCallback:n,errorCallback:o,completeCallback:i,isResumable:c=!1,provider:u}=e,d=l.__rest(e,["file","key","level","progressCallback","errorCallback","completeCallback","isResumable","provider"]);const p=t.type||"binary/octet-stream";return!0===c?a.Storage.put(s,t,Object.assign({level:r,resumable:!0,progressCallback:n,errorCallback:o,completeCallback:i,contentType:p,provider:u},d)):a.Storage.put(s,t,Object.assign({level:r,resumable:!1,progressCallback:n,contentType:p,provider:u},d)).then(i,o)}const b=({processFile:e,file:a,key:t})=>new Promise(((l,r)=>{const n=s.isFunction(e)?e({file:a,key:t}):{file:a,key:t};n instanceof Promise?n.then(l).catch(r):l(n)}));function O({children:e,className:a}){return d.default.createElement(t.View,{className:a},e)}function x({children:e,displayText:a,inDropZone:l,onDragEnter:r,onDragLeave:o,onDragOver:i,onDragStart:c,onDrop:u,testId:p}){const{dropFilesText:g}=a;return d.default.createElement(t.View,{className:m.default(l&&s.classNameModifier(t.ComponentClassNames.StorageManagerDropZone,"active"),t.ComponentClassNames.StorageManagerDropZone),"data-testid":p,onDragStart:c,onDragEnter:r,onDragLeave:o,onDrop:u,onDragOver:i},d.default.createElement(n.IconUpload,{"aria-hidden":!0,className:t.ComponentClassNames.StorageManagerDropZoneIcon}),d.default.createElement(t.Text,{className:t.ComponentClassNames.StorageManagerDropZoneText},g),e)}const P=({errorMessage:e,getPausedText:a,getUploadingText:l,percentage:r,status:o,uploadSuccessfulText:i})=>{switch(o){case c.UPLOADING:return d.default.createElement(t.Text,{className:t.ComponentClassNames.StorageManagerFileStatus},l(r));case c.PAUSED:return d.default.createElement(t.Text,{className:t.ComponentClassNames.StorageManagerFileStatus},a(r));case c.UPLOADED:return d.default.createElement(t.Text,{className:m.default(t.ComponentClassNames.StorageManagerFileStatus,s.classNameModifier(t.ComponentClassNames.StorageManagerFileStatus,"success"))},d.default.createElement(n.IconCheck,{fontSize:"xl"})," ",i);case c.ERROR:return d.default.createElement(t.Text,{className:m.default(t.ComponentClassNames.StorageManagerFileStatus,s.classNameModifier(t.ComponentClassNames.StorageManagerFileStatus,"error"))},d.default.createElement(n.IconError,{fontSize:"xl"})," ",e);default:return null}},N=({altText:e,onClick:a})=>d.default.createElement(t.Button,{size:"small",onClick:a},d.default.createElement(t.VisuallyHidden,null,e),d.default.createElement(n.IconClose,{"aria-hidden":!0,fontSize:"medium"})),y=({displayName:e,fileSize:a})=>d.default.createElement(d.default.Fragment,null,d.default.createElement(t.View,{className:t.ComponentClassNames.StorageManagerFileMain},d.default.createElement(t.Text,{className:t.ComponentClassNames.StorageManagerFileName},e)),d.default.createElement(t.Text,{as:"span",className:t.ComponentClassNames.StorageManagerFileSize},a?s.humanFileSize(a,!0):"")),k=({fileName:e,isImage:a,url:s})=>{const l=a?d.default.createElement(t.Image,{alt:e,src:s}):d.default.createElement(n.IconFile,null);return d.default.createElement(t.View,{className:t.ComponentClassNames.StorageManagerFileImage},l)};function h({onPause:e,onResume:a,displayName:s,errorMessage:l,isImage:r,isResumable:n,loaderIsDeterminate:o,onRemove:i,progress:u,showThumbnails:p=!0,size:m,status:g,displayText:f,thumbnailUrl:E}){const{getPausedText:S,getUploadingText:T,uploadSuccessfulText:U,pauseText:C,resumeText:F}=f;return d.default.createElement(t.View,{className:t.ComponentClassNames.StorageManagerFile},d.default.createElement(t.View,{className:t.ComponentClassNames.StorageManagerFileWrapper},p?d.default.createElement(k,{isImage:r,fileName:s,url:E}):null,d.default.createElement(y,{displayName:s,fileSize:m}),g===c.UPLOADING?d.default.createElement(t.Loader,{className:t.ComponentClassNames.StorageManagerLoader,variation:"linear",percentage:u,isDeterminate:o,isPercentageTextHidden:!0}):null,!n||g!==c.UPLOADING&&g!==c.PAUSED?null:g===c.PAUSED?d.default.createElement(t.Button,{onClick:a,size:"small",variation:"link"},F):d.default.createElement(t.Button,{onClick:e,size:"small",variation:"link"},C),d.default.createElement(N,{altText:`Remove file ${s}`,onClick:i})),d.default.createElement(P,{uploadSuccessfulText:U,getUploadingText:T,getPausedText:S,status:g,errorMessage:l,percentage:u}))}function v({displayText:e,files:a,hasMaxFilesError:s,isResumable:l,onCancelUpload:r,onDeleteUpload:n,onResume:o,onPause:i,showThumbnails:u,maxFileCount:p}){if(a.length<1)return null;const{getMaxFilesErrorText:m}=e,g=m(p);return d.default.createElement(t.View,{className:t.ComponentClassNames.StorageManagerFileList},a.map((a=>{const{file:t,status:s,progress:p,error:m,key:g,isImage:f,id:E,uploadTask:S}=a,T=t&&f?URL.createObjectURL(t):"",U=!l||p>0,C=s===c.UPLOADING;return d.default.createElement(h,{displayName:g,errorMessage:m,displayText:e,isImage:f,isUploading:C,isResumable:l,key:E,loaderIsDeterminate:U,onRemove:()=>{l&&(s===c.UPLOADING||s===c.PAUSED)&&S?r({id:E,uploadTask:S}):n({id:E})},onPause:()=>{S&&i({id:E,uploadTask:S})},onResume:()=>{S&&o({id:E,uploadTask:S})},progress:p,showThumbnails:u,size:null==t?void 0:t.size,status:s,thumbnailUrl:T})})),s&&d.default.createElement(t.Alert,{variation:"error",heading:g}))}function L({fileCount:e,remainingFilesCount:a,displayText:s,allUploadsSuccessful:l}){const{getFilesUploadedText:r,getRemainingFilesText:n}=s;return d.default.createElement(t.Text,{className:t.ComponentClassNames.StorageManagerPreviewerText},l?r(e):n(a))}function A(e){var{children:a,className:s=t.ComponentClassNames.StorageManagerFilePicker,size:r="small"}=e,n=l.__rest(e,["children","className","size"]);return d.default.createElement(t.Button,Object.assign({},n,{className:s,size:r}),a)}const M=({file:e,getFileSizeErrorText:a,maxFileSize:t})=>void 0===t?"":e.size>t?a(function(e,a=!1,t=1){const s=a?1e3:1024;if(Math.abs(e)<s)return`${e} B`;const l=a?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];let r=-1;const n=Math.pow(10,t);do{e/=s,++r}while(Math.round(Math.abs(e)*n)/n>=s&&r<l.length-1);return e.toFixed(t)+" "+l[r]}(t,!0)):"",R={getFilesUploadedText:e=>`${e} ${1===e?"file uploaded":"files uploaded"}`,getFileSizeErrorText:e=>`File size must be below ${e}`,getRemainingFilesText:e=>`${e} ${1===e?"file":"files"} uploading`,getUploadingText:e=>"Uploading"+(e>0?`: ${e}%`:""),getUploadButtonText:e=>`Upload ${e} ${1===e?"file":"files"}`,getMaxFilesErrorText:e=>`Cannot choose more than ${e} ${1===e?"file":"files"}. Remove files before updating`,getErrorText:e=>e,doneButtonText:"Done",clearAllButtonText:"Clear all",extensionNotAllowedText:"Extension not allowed",browseFilesText:"Browse files",dropFilesText:"Drop files here or",pauseText:"Pause",resumeText:"Resume",uploadSuccessfulText:"Uploaded",getPausedText:e=>`Paused: ${e}%`},_=new a.Logger("Storage.StorageManager");const j=Object.assign(p.forwardRef((function({acceptedFileTypes:a=[],accessLevel:s,defaultFiles:r,displayText:n,isResumable:o=!1,maxFileCount:i,maxFileSize:u,onUploadError:m,onUploadSuccess:P,onFileRemove:N,onUploadStart:y,showThumbnails:k=!0,processFile:h,components:j,provider:I,path:w},z){s&&i||_.warn("FileUploader requires accessLevel and maxFileCount props");const B=Object.assign({Container:O,DropZone:x,FileList:v,FilePicker:A,FileListHeader:L},j),G=void 0===i||"number"==typeof i&&i>1,$=Object.assign(Object.assign({},R),n),{getFileSizeErrorText:V}=$,Z=e=>M({file:e,maxFileSize:u,getFileSizeErrorText:V}),{addFiles:q,clearFiles:H,files:W,removeUpload:Q,setUploadingFile:Y,setUploadPaused:K,setUploadProgress:J,setUploadSuccess:X,setUploadResumed:ee}=function(e=[]){const[{files:a},t]=d.default.useReducer(g,{files:Array.isArray(e)?e.map(F).filter((e=>!!e)):[]});return{removeUpload:({id:e})=>{t(C({id:e}))},setUploadPaused:({id:e})=>{t(U({id:e,status:c.PAUSED}))},setUploadProgress:({progress:e,id:a})=>{t(T({id:a,progress:e}))},setUploadResumed:({id:e})=>{t(U({id:e,status:c.UPLOADING}))},setUploadSuccess:({id:e})=>{t(U({id:e,status:c.UPLOADED}))},setUploadingFile:({uploadTask:e,id:a})=>{t(S({id:a,uploadTask:e}))},addFiles:({files:e,getFileErrorMessage:a})=>{t(f({files:e,getFileErrorMessage:a}))},clearFiles:()=>{t(E())},files:a}}(r);p.useImperativeHandle(z,(()=>({clearFiles:H})));const ae=function({onChange:a}){const[t,s]=e.useState(!1);return{onDragStart:e=>{e.dataTransfer.clearData()},onDragEnter:e=>{e.preventDefault(),e.stopPropagation()},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),s(!1)},onDragOver:e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",s(!0)},onDrop:e=>{e.preventDefault(),e.stopPropagation(),s(!1),a(e)},inDropZone:t}}({onChange:e=>{const{files:t}=e.dataTransfer;if(!t||0===t.length)return;const s=((e,a)=>!a||0===a.length||a.includes("*")?e:e.filter((e=>{const t=e.name||"",s=(e.type||"").toLowerCase(),l=s.replace(/\/.*$/,"");return a.some((e=>{const a=e.trim().toLowerCase();return"."===a.charAt(0)?t.toLowerCase().endsWith(a):a.endsWith("/*")?l===a.replace(/\/.*$/,""):s===a}))})))(Array.from(t),a);q({files:s,getFileErrorMessage:Z})}});!function({files:e,accessLevel:a,isResumable:t,setUploadProgress:s,setUploadingFile:r,setUploadSuccess:n,onUploadError:o,onUploadSuccess:i,onUploadStart:u,maxFileCount:d,processFile:m,provider:g,path:f=""}){p.useEffect((()=>{const p=e.filter((e=>e.status===c.QUEUED));if(!(p.length>d))for(const{file:e,key:c,id:d}of p){const p=e=>{null==i||i(e),n({id:d})},E=e=>{const a=0===e.total?100:Math.floor(e.loaded/e.total*100);s({id:d,progress:a})},S=e=>{null==o||o(e,{key:c})};e&&b({processFile:m,file:e,key:c}).then((e=>{var{key:s}=e,n=l.__rest(e,["key"]);null==u||u({key:s});const o=D(Object.assign(Object.assign({},n),{isResumable:t,provider:g,key:f+s,level:a,completeCallback:p,progressCallback:E,errorCallback:S}));r({id:d,uploadTask:t?o:void 0})}))}}),[e,a,t,s,r,o,i,u,d,n,m,g,f])}({accessLevel:s,files:W,isResumable:o,maxFileCount:i,onUploadError:m,onUploadSuccess:P,onUploadStart:y,setUploadingFile:Y,setUploadProgress:J,setUploadSuccess:X,processFile:h,provider:I,path:w});const te=0!==W.length&&W.every((e=>(null==e?void 0:e.status)===c.UPLOADED)),se=W.filter((e=>e.progress<100)).length>i,le=W.filter((e=>(null==e?void 0:e.status)===c.UPLOADED)).length,re=W.length-le,ne=W.length>0,oe=p.useRef(null);return p.createElement(B.Container,{className:`${t.ComponentClassNames.StorageManager} ${ne?t.ComponentClassNames.StorageManagerPreviewer:""}`},p.createElement(B.DropZone,Object.assign({},ae,{displayText:$}),p.createElement(p.Fragment,null,p.createElement(B.FilePicker,{onClick:function(){oe.current&&(oe.current.click(),oe.current.value="")}},$.browseFilesText),p.createElement(t.VisuallyHidden,null,p.createElement("input",{type:"file",tabIndex:-1,ref:oe,onChange:e=>{const{files:a}=e.target;a&&0!==a.length&&q({files:Array.from(a),getFileErrorMessage:Z})},multiple:G,accept:a.join(",")})))),ne?p.createElement(B.FileListHeader,{allUploadsSuccessful:te,displayText:$,fileCount:W.length,remainingFilesCount:re}):null,p.createElement(B.FileList,{displayText:$,files:W,isResumable:o,onCancelUpload:({id:e,uploadTask:a})=>{a.pause(),Q({id:e})},onDeleteUpload:({id:e})=>{if(Q({id:e}),"function"==typeof N){const a=W.find((a=>a.id===e));a&&N({key:a.key})}},onResume:({id:e,uploadTask:a})=>{a.resume(),ee({id:e})},onPause:({id:e,uploadTask:a})=>{a.pause(),K({id:e})},showThumbnails:k,hasMaxFilesError:se,maxFileCount:i}))})),{Container:O,DropZone:x,FileList:v,FileListHeader:L,FilePicker:A});exports.StorageManager=j;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),a=require("react"),t=require("classnames"),s=require("@aws-amplify/ui-react"),l=require("@aws-amplify/ui-react/internal"),r=require("aws-amplify"),n=require("@aws-amplify/ui");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var a=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),a.default=e,Object.freeze(a)}var c=o(a),u=i(a),d=i(t);var m,g;function p(e,a){switch(a.type){case g.ADD_FILES:{const{files:t,status:s}=a,l=t.map((e=>{const t=a.getFileErrorMessage(e);return{id:e.name,file:e,error:t,key:e.name,status:t?m.ERROR:s,isImage:e.type.startsWith("image/"),progress:-1}})),r=[...e.files,...l];return Object.assign(Object.assign({},e),{files:r})}case g.CLEAR_FILES:return Object.assign(Object.assign({},e),{files:[]});case g.QUEUE_FILES:{const{files:a}=e,t=a.reduce(((e,a)=>[...e,Object.assign(Object.assign({},a),{status:m.QUEUED})]),[]);return Object.assign(Object.assign({},e),{files:t})}case g.SET_STATUS_UPLOADING:{const{id:t,uploadTask:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{status:m.UPLOADING,progress:0,uploadTask:s||void 0})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case g.SET_UPLOAD_PROGRESS:{const{id:t,progress:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{progress:s})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case g.SET_STATUS:{const{id:t,status:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,Object.assign(Object.assign({},a),{status:s})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case g.REMOVE_UPLOAD:{const{id:t}=a,{files:s}=e,l=s.reduce(((e,a)=>a.id===t?[...e]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:l})}}}!function(e){e.ADDED="added",e.QUEUED="queued",e.UPLOADING="uploading",e.PAUSED="paused",e.ERROR="error",e.UPLOADED="uploaded"}(m||(m={})),function(e){e.ADD_FILES="ADD_FILES",e.CLEAR_FILES="CLEAR_FILES",e.QUEUE_FILES="QUEUE_FILES",e.SET_STATUS="SET_STATUS",e.SET_STATUS_UPLOADING="SET_STATUS_UPLOADING",e.SET_UPLOAD_PROGRESS="SET_UPLOAD_PROGRESS",e.REMOVE_UPLOAD="REMOVE_UPLOAD"}(g||(g={}));const f=({files:e,status:a,getFileErrorMessage:t})=>({type:g.ADD_FILES,files:e,status:a,getFileErrorMessage:t}),E=()=>({type:g.CLEAR_FILES}),S=()=>({type:g.QUEUE_FILES}),T=({id:e,uploadTask:a})=>({type:g.SET_STATUS_UPLOADING,id:e,uploadTask:a}),U=({id:e,progress:a})=>({type:g.SET_UPLOAD_PROGRESS,id:e,progress:a}),F=({id:e,status:a})=>({type:g.SET_STATUS,id:e,status:a}),C=({id:e})=>({type:g.REMOVE_UPLOAD,id:e}),b=e=>(e=>!(!n.isObject(e)||!e.key))(e)?Object.assign(Object.assign({},e),{id:e.key,status:m.UPLOADED}):void 0;function D(a){var{file:t,key:s,level:l="private",progressCallback:n,errorCallback:i,completeCallback:o,isResumable:c=!1,provider:u}=a,d=e.__rest(a,["file","key","level","progressCallback","errorCallback","completeCallback","isResumable","provider"]);const m=t.type||"binary/octet-stream";return!0===c?r.Storage.put(s,t,Object.assign({level:l,resumable:!0,progressCallback:n,errorCallback:i,completeCallback:o,contentType:m,provider:u},d)):r.Storage.put(s,t,Object.assign({level:l,resumable:!1,progressCallback:n,contentType:m,provider:u},d)).then(o,i)}const x=({processFile:e,file:a,key:t})=>new Promise(((s,l)=>{const r=n.isFunction(e)?e({file:a,key:t}):{file:a,key:t};r instanceof Promise?r.then(s).catch(l):s(r)}));function O({children:e,className:a}){return u.default.createElement(s.View,{className:a},e)}function v({children:e,displayText:a,inDropZone:t,onDragEnter:r,onDragLeave:i,onDragOver:o,onDragStart:c,onDrop:m,testId:g}){var p;const{dropFilesText:f}=a,E=l.useIcons("storageManager");return u.default.createElement(s.View,{className:d.default(t&&n.classNameModifier(s.ComponentClassNames.StorageManagerDropZone,"active"),s.ComponentClassNames.StorageManagerDropZone),"data-testid":g,onDragStart:c,onDragEnter:r,onDragLeave:i,onDrop:m,onDragOver:o},u.default.createElement(s.View,{as:"span","aria-hidden":!0,className:s.ComponentClassNames.StorageManagerDropZoneIcon},null!==(p=null==E?void 0:E.upload)&&void 0!==p?p:u.default.createElement(l.IconUpload,null)),u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerDropZoneText},f),e)}const y=({errorMessage:e,getPausedText:a,getUploadingText:t,percentage:r,status:i,uploadSuccessfulText:o})=>{var c,g;const p=l.useIcons("storageManager");switch(i){case m.UPLOADING:return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerFileStatus},t(r));case m.PAUSED:return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerFileStatus},a(r));case m.UPLOADED:return u.default.createElement(s.Text,{className:d.default(s.ComponentClassNames.StorageManagerFileStatus,n.classNameModifier(s.ComponentClassNames.StorageManagerFileStatus,"success"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},null!==(c=null==p?void 0:p.success)&&void 0!==c?c:u.default.createElement(l.IconCheck,null)),o);case m.ERROR:return u.default.createElement(s.Text,{className:d.default(s.ComponentClassNames.StorageManagerFileStatus,n.classNameModifier(s.ComponentClassNames.StorageManagerFileStatus,"error"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},null!==(g=null==p?void 0:p.error)&&void 0!==g?g:u.default.createElement(l.IconError,null)),e);default:return null}},N=({altText:e,onClick:a})=>{var t;const r=l.useIcons("storageManager");return u.default.createElement(s.Button,{size:"small",onClick:a},u.default.createElement(s.VisuallyHidden,null,e),u.default.createElement(s.View,{as:"span","aria-hidden":!0,fontSize:"medium"},null!==(t=null==r?void 0:r.remove)&&void 0!==t?t:u.default.createElement(l.IconClose,null)))},L=({displayName:e,fileSize:a})=>u.default.createElement(u.default.Fragment,null,u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileMain},u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerFileName},e)),u.default.createElement(s.Text,{as:"span",className:s.ComponentClassNames.StorageManagerFileSize},a?n.humanFileSize(a,!0):"")),k=({fileName:e,isImage:a,url:t})=>{var r;const n=l.useIcons("storageManager"),i=a?u.default.createElement(s.Image,{alt:e,src:t}):null!==(r=null==n?void 0:n.file)&&void 0!==r?r:u.default.createElement(l.IconFile,null);return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileImage},i)};function P({onPause:e,onResume:a,displayName:t,errorMessage:l,isImage:r,isResumable:n,loaderIsDeterminate:i,onRemove:o,progress:c,showThumbnails:d=!0,size:g,status:p,displayText:f,thumbnailUrl:E}){const{getPausedText:S,getUploadingText:T,uploadSuccessfulText:U,pauseText:F,resumeText:C}=f;return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFile},u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileWrapper},d?u.default.createElement(k,{isImage:r,fileName:t,url:E}):null,u.default.createElement(L,{displayName:t,fileSize:g}),p===m.UPLOADING?u.default.createElement(s.Loader,{className:s.ComponentClassNames.StorageManagerLoader,variation:"linear",percentage:c,isDeterminate:i,isPercentageTextHidden:!0}):null,!n||p!==m.UPLOADING&&p!==m.PAUSED?null:p===m.PAUSED?u.default.createElement(s.Button,{onClick:a,size:"small",variation:"link"},C):u.default.createElement(s.Button,{onClick:e,size:"small",variation:"link"},F),u.default.createElement(N,{altText:`Remove file ${t}`,onClick:o})),u.default.createElement(y,{uploadSuccessfulText:U,getUploadingText:T,getPausedText:S,status:p,errorMessage:l,percentage:c}))}function A({displayText:e,files:a,hasMaxFilesError:t,isResumable:l,onCancelUpload:r,onDeleteUpload:n,onResume:i,onPause:o,showThumbnails:c,maxFileCount:d}){if(a.length<1)return null;const{getMaxFilesErrorText:g}=e,p=g(d);return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileList},a.map((a=>{const{file:t,status:s,progress:d,error:g,key:p,isImage:f,id:E,uploadTask:S}=a,T=t&&f?URL.createObjectURL(t):"",U=!l||d>0,F=s===m.UPLOADING;return u.default.createElement(P,{displayName:p,errorMessage:g,displayText:e,isImage:f,isUploading:F,isResumable:l,key:E,loaderIsDeterminate:U,onRemove:()=>{l&&(s===m.UPLOADING||s===m.PAUSED)&&S?r({id:E,uploadTask:S}):n({id:E})},onPause:()=>{S&&o({id:E,uploadTask:S})},onResume:()=>{S&&i({id:E,uploadTask:S})},progress:d,showThumbnails:c,size:null==t?void 0:t.size,status:s,thumbnailUrl:T})})),t&&u.default.createElement(s.Alert,{variation:"error",heading:p}))}function M({allUploadsSuccessful:e,displayText:a,fileCount:t,remainingFilesCount:l,selectedFilesCount:r=0}){const{getFilesUploadedText:n,getRemainingFilesText:i,getSelectedFilesText:o}=a;return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerPreviewerText},r?o(r):e?n(t):i(l))}function h({displayText:e,remainingFilesCount:a,onClearAll:t,onUploadAll:l}){const{clearAllButtonText:r,getUploadButtonText:n}=e;return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerPreviewerFooter},u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerPreviewerActions},u.default.createElement(s.Button,{size:"small",variation:"link",onClick:t},r),u.default.createElement(s.Button,{size:"small",variation:"primary",onClick:l},n(a))))}function R(a){var{children:t,className:l=s.ComponentClassNames.StorageManagerFilePicker,size:r="small"}=a,n=e.__rest(a,["children","className","size"]);return u.default.createElement(s.Button,Object.assign({},n,{className:l,size:r}),t)}const I=({file:e,getFileSizeErrorText:a,maxFileSize:t})=>void 0===t?"":e.size>t?a(function(e,a=!1,t=1){const s=a?1e3:1024;if(Math.abs(e)<s)return`${e} B`;const l=a?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];let r=-1;const n=Math.pow(10,t);do{e/=s,++r}while(Math.round(Math.abs(e)*n)/n>=s&&r<l.length-1);return e.toFixed(t)+" "+l[r]}(t,!0)):"",_={getFilesUploadedText:e=>`${e} ${1===e?"file uploaded":"files uploaded"}`,getFileSizeErrorText:e=>`File size must be below ${e}`,getRemainingFilesText:e=>`${e} ${1===e?"file":"files"} uploading`,getSelectedFilesText:e=>`${e} ${1===e?"file":"files"} selected`,getUploadingText:e=>"Uploading"+(e>0?`: ${e}%`:""),getUploadButtonText:e=>`Upload ${e} ${1===e?"file":"files"}`,getMaxFilesErrorText:e=>`Cannot choose more than ${e} ${1===e?"file":"files"}. Remove files before updating`,getErrorText:e=>e,doneButtonText:"Done",clearAllButtonText:"Clear all",extensionNotAllowedText:"Extension not allowed",browseFilesText:"Browse files",dropFilesText:"Drop files here or",pauseText:"Pause",resumeText:"Resume",uploadSuccessfulText:"Uploaded",getPausedText:e=>`Paused: ${e}%`},j=new r.Logger("Storage.StorageManager");const w=Object.assign(c.forwardRef((function({acceptedFileTypes:a=[],accessLevel:t,autoUpload:r=!0,defaultFiles:n,displayText:i,isResumable:o=!1,maxFileCount:d,maxFileSize:g,onUploadError:y,onUploadSuccess:N,onFileRemove:L,onUploadStart:k,showThumbnails:P=!0,processFile:w,components:B,provider:z,path:G},V){t&&d||j.warn("FileUploader requires accessLevel and maxFileCount props");const $=Object.assign({Container:O,DropZone:v,FileList:A,FilePicker:R,FileListHeader:M,FileListFooter:h},B),Z=void 0===d||"number"==typeof d&&d>1,q=Object.assign(Object.assign({},_),i),{getFileSizeErrorText:Q}=q,H=e=>I({file:e,maxFileSize:g,getFileSizeErrorText:Q}),{addFiles:W,clearFiles:K,files:Y,removeUpload:J,queueFiles:X,setUploadingFile:ee,setUploadPaused:ae,setUploadProgress:te,setUploadSuccess:se,setUploadResumed:le}=function(e=[]){const[{files:a},t]=u.default.useReducer(p,{files:Array.isArray(e)?e.map(b).filter((e=>!!e)):[]});return{removeUpload:({id:e})=>{t(C({id:e}))},setUploadPaused:({id:e})=>{t(F({id:e,status:m.PAUSED}))},setUploadProgress:({progress:e,id:a})=>{t(U({id:a,progress:e}))},setUploadResumed:({id:e})=>{t(F({id:e,status:m.UPLOADING}))},setUploadSuccess:({id:e})=>{t(F({id:e,status:m.UPLOADED}))},setUploadingFile:({uploadTask:e,id:a})=>{t(T({id:a,uploadTask:e}))},queueFiles:()=>{t(S())},addFiles:({files:e,status:a,getFileErrorMessage:s})=>{t(f({files:e,status:a,getFileErrorMessage:s}))},clearFiles:()=>{t(E())},files:a}}(n);c.useImperativeHandle(V,(()=>({clearFiles:K})));const re=l.useDropZone({acceptedFileTypes:a,onDropComplete:({acceptedFiles:e,rejectedFiles:t})=>{t&&t.length>0&&j.warn("Rejected files: ",t);const s=((e,a)=>!a||0===a.length||a.includes("*")?e:e.filter((e=>{const t=e.name||"",s=(e.type||"").toLowerCase(),l=s.replace(/\/.*$/,"");return a.some((e=>{const a=e.trim().toLowerCase();return"."===a.charAt(0)?t.toLowerCase().endsWith(a):a.endsWith("/*")?l===a.replace(/\/.*$/,""):s===a}))})))(e,a);W({files:s,status:r?m.QUEUED:m.ADDED,getFileErrorMessage:H})}}),{dragState:ne}=re,ie=e.__rest(re,["dragState"]);!function({files:a,accessLevel:t,isResumable:s,setUploadProgress:l,setUploadingFile:r,setUploadSuccess:n,onUploadError:i,onUploadSuccess:o,onUploadStart:u,maxFileCount:d,processFile:g,provider:p,path:f=""}){c.useEffect((()=>{const c=a.filter((e=>e.status===m.QUEUED));if(!(c.length>d))for(const{file:a,key:d,id:m}of c){const c=e=>{null==o||o(e),n({id:m})},E=e=>{const a=0===e.total?100:Math.floor(e.loaded/e.total*100);l({id:m,progress:a})},S=e=>{null==i||i(e,{key:d})};a&&x({processFile:g,file:a,key:d}).then((a=>{var{key:l}=a,n=e.__rest(a,["key"]);null==u||u({key:l});const i=D(Object.assign(Object.assign({},n),{isResumable:s,provider:p,key:f+l,level:t,completeCallback:c,progressCallback:E,errorCallback:S}));r({id:m,uploadTask:s?i:void 0})}))}}),[a,t,s,l,r,i,o,u,d,n,g,p,f])}({accessLevel:t,files:Y,isResumable:o,maxFileCount:d,onUploadError:y,onUploadSuccess:N,onUploadStart:k,setUploadingFile:ee,setUploadProgress:te,setUploadSuccess:se,processFile:w,provider:z,path:G});const oe=0!==Y.length&&Y.every((e=>(null==e?void 0:e.status)===m.UPLOADED)),ce=Y.filter((e=>e.progress<100)).length>d,ue=Y.filter((e=>(null==e?void 0:e.status)===m.UPLOADED)).length,de=Y.length-ue,me=r?0:de,ge=Y.length>0,pe=!r&&de>0,fe=c.useRef(null);return c.createElement($.Container,{className:`${s.ComponentClassNames.StorageManager} ${ge?s.ComponentClassNames.StorageManagerPreviewer:""}`},c.createElement($.DropZone,Object.assign({inDropZone:"inactive"!==ne},ie,{displayText:q}),c.createElement(c.Fragment,null,c.createElement($.FilePicker,{onClick:function(){fe.current&&(fe.current.click(),fe.current.value="")}},q.browseFilesText),c.createElement(s.VisuallyHidden,null,c.createElement("input",{type:"file",tabIndex:-1,ref:fe,onChange:e=>{const{files:a}=e.target;a&&0!==a.length&&W({files:Array.from(a),status:r?m.QUEUED:m.ADDED,getFileErrorMessage:H})},multiple:Z,accept:a.join(",")})))),ge?c.createElement($.FileListHeader,{allUploadsSuccessful:oe,displayText:q,fileCount:Y.length,remainingFilesCount:de,selectedFilesCount:me}):null,c.createElement($.FileList,{displayText:q,files:Y,isResumable:o,onCancelUpload:({id:e,uploadTask:a})=>{a.pause(),J({id:e})},onDeleteUpload:({id:e})=>{if(J({id:e}),"function"==typeof L){const a=Y.find((a=>a.id===e));a&&L({key:a.key})}},onResume:({id:e,uploadTask:a})=>{a.resume(),le({id:e})},onPause:({id:e,uploadTask:a})=>{a.pause(),ae({id:e})},showThumbnails:P,hasMaxFilesError:ce,maxFileCount:d}),pe?c.createElement($.FileListFooter,{displayText:q,remainingFilesCount:de,onClearAll:()=>{K()},onUploadAll:()=>{X()}}):null)})),{Container:O,DropZone:v,FileList:A,FileListHeader:M,FileListFooter:h,FilePicker:R});exports.StorageImage=a=>{var{accessLevel:t,className:r,fallbackSrc:n,identityId:i,imgKey:o,onStorageGetError:u}=a,m=e.__rest(a,["accessLevel","className","fallbackSrc","identityId","imgKey","onStorageGetError"]);const g=c.useMemo((()=>({level:t,identityId:i})),[t,i]),p=l.useStorageURL({key:o,options:g,fallbackURL:n,onStorageGetError:u});return c.createElement(s.Image,Object.assign({},m,{className:d.default(s.ComponentClassNames.StorageImage,r),src:p}))},exports.StorageManager=w;