@aws-amplify/ui-react-storage 0.0.0-studio-41bd6b8-20230725225637 → 0.0.0-studio-console-80bb2e2-20230921222703

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 (67) hide show
  1. package/dist/esm/components/StorageImage/StorageImage.mjs +1 -0
  2. package/dist/esm/components/StorageManager/StorageManager.mjs +1 -0
  3. package/dist/esm/components/StorageManager/hooks/useStorageManager/actions.mjs +1 -0
  4. package/dist/esm/components/StorageManager/hooks/useStorageManager/reducer.mjs +1 -0
  5. package/dist/esm/components/StorageManager/hooks/useStorageManager/types.mjs +1 -0
  6. package/dist/esm/components/StorageManager/hooks/useStorageManager/useStorageManager.mjs +1 -0
  7. package/dist/esm/components/StorageManager/hooks/useUploadFiles/useUploadFiles.mjs +1 -0
  8. package/dist/esm/components/StorageManager/types.mjs +1 -0
  9. package/dist/esm/components/StorageManager/ui/DropZone/DropZone.mjs +1 -0
  10. package/dist/esm/components/StorageManager/ui/FileList/FileControl.mjs +1 -0
  11. package/dist/esm/components/StorageManager/ui/FileList/FileDetails.mjs +1 -0
  12. package/dist/esm/components/StorageManager/ui/FileList/FileList.mjs +1 -0
  13. package/dist/esm/components/StorageManager/ui/FileList/FileRemoveButton.mjs +1 -0
  14. package/dist/esm/components/StorageManager/ui/FileList/FileStatusMessage.mjs +1 -0
  15. package/dist/esm/components/StorageManager/ui/FileList/FileThumbnail.mjs +1 -0
  16. package/dist/esm/components/StorageManager/ui/FileListFooter/FileListFooter.mjs +1 -0
  17. package/dist/esm/components/StorageManager/ui/FileListHeader/FileListHeader.mjs +1 -0
  18. package/dist/esm/components/StorageManager/ui/FilePicker/FilePicker.mjs +1 -0
  19. package/dist/esm/components/StorageManager/utils/checkMaxFileSize.mjs +1 -0
  20. package/dist/esm/components/StorageManager/utils/{displayText.js → displayText.mjs} +1 -1
  21. package/dist/esm/components/StorageManager/utils/humanFileSize.mjs +1 -0
  22. package/dist/esm/components/StorageManager/utils/uploadFile.mjs +1 -0
  23. package/dist/esm/index.mjs +1 -0
  24. package/dist/index.js +1 -1
  25. package/dist/styles.css +1603 -616
  26. package/dist/types/components/StorageManager/StorageManager.d.ts +2 -1
  27. package/dist/types/components/StorageManager/hooks/index.d.ts +0 -1
  28. package/dist/types/components/StorageManager/hooks/useStorageManager/actions.d.ts +2 -1
  29. package/dist/types/components/StorageManager/hooks/useStorageManager/types.d.ts +5 -0
  30. package/dist/types/components/StorageManager/hooks/useStorageManager/useStorageManager.d.ts +3 -1
  31. package/dist/types/components/StorageManager/index.d.ts +1 -1
  32. package/dist/types/components/StorageManager/types.d.ts +7 -1
  33. package/dist/types/components/StorageManager/ui/FileListFooter/FileListFooter.d.ts +9 -0
  34. package/dist/types/components/StorageManager/ui/FileListFooter/index.d.ts +1 -0
  35. package/dist/types/components/StorageManager/ui/FileListHeader/FileListHeader.d.ts +4 -3
  36. package/dist/types/components/StorageManager/ui/index.d.ts +1 -0
  37. package/dist/types/components/StorageManager/utils/displayText.d.ts +1 -0
  38. package/dist/types/components/index.d.ts +1 -1
  39. package/dist/types/index.d.ts +1 -1
  40. package/package.json +10 -10
  41. package/dist/esm/components/StorageImage/StorageImage.js +0 -1
  42. package/dist/esm/components/StorageManager/StorageManager.js +0 -1
  43. package/dist/esm/components/StorageManager/hooks/useDropZone/useDropZone.js +0 -1
  44. package/dist/esm/components/StorageManager/hooks/useStorageManager/actions.js +0 -1
  45. package/dist/esm/components/StorageManager/hooks/useStorageManager/reducer.js +0 -1
  46. package/dist/esm/components/StorageManager/hooks/useStorageManager/types.js +0 -1
  47. package/dist/esm/components/StorageManager/hooks/useStorageManager/useStorageManager.js +0 -1
  48. package/dist/esm/components/StorageManager/hooks/useUploadFiles/useUploadFiles.js +0 -1
  49. package/dist/esm/components/StorageManager/types.js +0 -1
  50. package/dist/esm/components/StorageManager/ui/DropZone/DropZone.js +0 -1
  51. package/dist/esm/components/StorageManager/ui/FileList/FileControl.js +0 -1
  52. package/dist/esm/components/StorageManager/ui/FileList/FileDetails.js +0 -1
  53. package/dist/esm/components/StorageManager/ui/FileList/FileList.js +0 -1
  54. package/dist/esm/components/StorageManager/ui/FileList/FileRemoveButton.js +0 -1
  55. package/dist/esm/components/StorageManager/ui/FileList/FileStatusMessage.js +0 -1
  56. package/dist/esm/components/StorageManager/ui/FileList/FileThumbnail.js +0 -1
  57. package/dist/esm/components/StorageManager/ui/FileListHeader/FileListHeader.js +0 -1
  58. package/dist/esm/components/StorageManager/ui/FilePicker/FilePicker.js +0 -1
  59. package/dist/esm/components/StorageManager/utils/checkMaxFileSize.js +0 -1
  60. package/dist/esm/components/StorageManager/utils/humanFileSize.js +0 -1
  61. package/dist/esm/components/StorageManager/utils/uploadFile.js +0 -1
  62. package/dist/esm/index.js +0 -1
  63. package/dist/types/components/StorageManager/hooks/useDropZone/index.d.ts +0 -1
  64. package/dist/types/components/StorageManager/hooks/useDropZone/useDropZone.d.ts +0 -13
  65. /package/dist/esm/components/StorageManager/hooks/useUploadFiles/{resolveFile.js → resolveFile.mjs} +0 -0
  66. /package/dist/esm/components/StorageManager/ui/Container/{Container.js → Container.mjs} +0 -0
  67. /package/dist/esm/components/StorageManager/utils/{filterAllowedFiles.js → filterAllowedFiles.mjs} +0 -0
@@ -0,0 +1 @@
1
+ import*as e from"react";import r from"classnames";import{ComponentClassName as a}from"@aws-amplify/ui";import{Image as t}from"@aws-amplify/ui-react";import{useStorageURL as o}from"@aws-amplify/ui-react/internal";const m=({accessLevel:m,className:i,fallbackSrc:s,identityId:c,imgKey:l,onStorageGetError:n,...f})=>{const p=e.useMemo((()=>({level:m,identityId:c})),[m,c]),y=o({key:l,options:p,fallbackURL:s,onStorageGetError:n});return e.createElement(t,{...f,className:r(a.StorageImage,i),src:y})};export{m as StorageImage};
@@ -0,0 +1 @@
1
+ import*as e from"react";import{Logger as i}from"aws-amplify";import{ComponentClassName as t}from"@aws-amplify/ui";import{VisuallyHidden as o}from"@aws-amplify/ui-react";import{useDropZone as l}from"@aws-amplify/ui-react/internal";import{useStorageManager as r}from"./hooks/useStorageManager/useStorageManager.mjs";import{useUploadFiles as s}from"./hooks/useUploadFiles/useUploadFiles.mjs";import{FileStatus as a}from"./types.mjs";import{Container as n}from"./ui/Container/Container.mjs";import{DropZone as p}from"./ui/DropZone/DropZone.mjs";import{FileList as m}from"./ui/FileList/FileList.mjs";import{FileListHeader as c}from"./ui/FileListHeader/FileListHeader.mjs";import{FileListFooter as u}from"./ui/FileListFooter/FileListFooter.mjs";import{FilePicker as d}from"./ui/FilePicker/FilePicker.mjs";import{checkMaxFileSize as F}from"./utils/checkMaxFileSize.mjs";import{defaultStorageManagerDisplayText as f}from"./utils/displayText.mjs";import{filterAllowedFiles as g}from"./utils/filterAllowedFiles.mjs";const U=new i("Storage.StorageManager");const E=Object.assign(e.forwardRef((function({acceptedFileTypes:i=[],accessLevel:E,autoUpload:y=!0,defaultFiles:D,displayText:L,isResumable:S=!1,maxFileCount:h,maxFileSize:x,onUploadError:C,onUploadSuccess:j,onFileRemove:T,onUploadStart:k,showThumbnails:v=!0,processFile:w,components:P,provider:M,path:b},R){E&&h||U.warn("StorageManager requires accessLevel and maxFileCount props");const A={Container:n,DropZone:p,FileList:m,FilePicker:d,FileListHeader:c,FileListFooter:u,...P},H=void 0===h||"number"==typeof h&&h>1,Z={...f,...L},{getFileSizeErrorText:z}=Z,O=e=>F({file:e,maxFileSize:x,getFileSizeErrorText:z}),{addFiles:q,clearFiles:I,files:Q,removeUpload:$,queueFiles:N,setUploadingFile:B,setUploadPaused:G,setUploadProgress:J,setUploadSuccess:K,setUploadResumed:V}=r(D);e.useImperativeHandle(R,(()=>({clearFiles:I})));const{dragState:W,...X}=l({acceptedFileTypes:i,onDropComplete:({acceptedFiles:e,rejectedFiles:t})=>{t&&t.length>0&&U.warn("Rejected files: ",t);const o=g(e,i);q({files:o,status:y?a.QUEUED:a.ADDED,getFileErrorMessage:O})}});s({accessLevel:E,files:Q,isResumable:S,maxFileCount:h,onUploadError:C,onUploadSuccess:j,onUploadStart:k,setUploadingFile:B,setUploadProgress:J,setUploadSuccess:K,processFile:w,provider:M,path:b});const Y=0!==Q.length&&Q.every((e=>e?.status===a.UPLOADED)),_=Q.filter((e=>e.progress<100)).length>h,ee=Q.filter((e=>e?.status===a.UPLOADED)).length,ie=Q.length-ee,te=y?0:ie,oe=Q.length>0,le=!y&&ie>0,re=e.useRef(null);return e.createElement(A.Container,{className:`${t.StorageManager} ${oe?t.StorageManagerPreviewer:""}`},e.createElement(A.DropZone,{inDropZone:"inactive"!==W,...X,displayText:Z},e.createElement(e.Fragment,null,e.createElement(A.FilePicker,{onClick:function(){re.current&&(re.current.click(),re.current.value="")}},Z.browseFilesText),e.createElement(o,null,e.createElement("input",{type:"file",tabIndex:-1,ref:re,onChange:e=>{const{files:i}=e.target;i&&0!==i.length&&q({files:Array.from(i),status:y?a.QUEUED:a.ADDED,getFileErrorMessage:O})},multiple:H,accept:i.join(",")})))),oe?e.createElement(A.FileListHeader,{allUploadsSuccessful:Y,displayText:Z,fileCount:Q.length,remainingFilesCount:ie,selectedFilesCount:te}):null,e.createElement(A.FileList,{displayText:Z,files:Q,isResumable:S,onCancelUpload:({id:e,uploadTask:i})=>{i.pause(),$({id:e})},onDeleteUpload:({id:e})=>{if($({id:e}),"function"==typeof T){const i=Q.find((i=>i.id===e));i&&T({key:i.key})}},onResume:({id:e,uploadTask:i})=>{i.resume(),V({id:e})},onPause:({id:e,uploadTask:i})=>{i.pause(),G({id:e})},showThumbnails:v,hasMaxFilesError:_,maxFileCount:h}),le?e.createElement(A.FileListFooter,{displayText:Z,remainingFilesCount:ie,onClearAll:()=>{I()},onUploadAll:()=>{N()}}):null)})),{Container:n,DropZone:p,FileList:m,FileListHeader:c,FileListFooter:u,FilePicker:d});export{E as StorageManager};
@@ -0,0 +1 @@
1
+ import{StorageManagerActionTypes as s}from"./types.mjs";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};
@@ -0,0 +1 @@
1
+ import{FileStatus as s}from"../../types.mjs";import{StorageManagerActionTypes as e}from"./types.mjs";function r(r,t){switch(t.type){case e.ADD_FILES:{const{files:e,status:i}=t,a=e.map((e=>{const r=t.getFileErrorMessage(e);return{id:e.name,file:e,error:r,key:e.name,status:r?s.ERROR:i,isImage:e.type.startsWith("image/"),progress:-1}})),o=[...r.files,...a];return{...r,files:o}}case e.CLEAR_FILES:return{...r,files:[]};case e.QUEUE_FILES:{const{files:e}=r,t=e.reduce(((e,r)=>[...e,{...r,status:s.QUEUED}]),[]);return{...r,files:t}}case e.SET_STATUS_UPLOADING:{const{id:e,uploadTask:i}=t,{files:a}=r,o=a.reduce(((r,t)=>t.id===e?[...r,{...t,status:s.UPLOADING,progress:0,uploadTask:i||void 0}]:[...r,t]),[]);return{...r,files:o}}case e.SET_UPLOAD_PROGRESS:{const{id:s,progress:e}=t,{files:i}=r,a=i.reduce(((r,t)=>t.id===s?[...r,{...t,progress:e}]:[...r,t]),[]);return{...r,files:a}}case e.SET_STATUS:{const{id:s,status:e}=t,{files:i}=r,a=i.reduce(((r,t)=>t.id===s?[...r,{...t,status:e}]:[...r,t]),[]);return{...r,files:a}}case e.REMOVE_UPLOAD:{const{id:s}=t,{files:e}=r,i=e.reduce(((e,r)=>r.id===s?[...e]:[...e,r]),[]);return{...r,files:i}}}}export{r as storageManagerStateReducer};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
1
+ import s from"react";import{FileStatus as e}from"../../types.mjs";import{storageManagerStateReducer as i}from"./reducer.mjs";import{addFilesAction as r,clearFilesAction as t,queueFilesAction as o,setUploadingFileAction as a,setUploadProgressAction as d,setUploadStatusAction as l,removeUploadAction as p}from"./actions.mjs";import{isObject as u}from"@aws-amplify/ui";const m=s=>(s=>!(!u(s)||!s.key))(s)?{...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(a({id:e,uploadTask:s}))},queueFiles:()=>{c(o())},addFiles:({files:s,status:e,getFileErrorMessage:i})=>{c(r({files:s,status:e,getFileErrorMessage:i}))},clearFiles:()=>{c(t())},files:f}}export{f as useStorageManager};
@@ -0,0 +1 @@
1
+ import*as e from"react";import{uploadFile as o}from"../../utils/uploadFile.mjs";import{FileStatus as s}from"../../types.mjs";import{resolveFile as l}from"./resolveFile.mjs";function r({files:r,accessLevel:t,isResumable:a,setUploadProgress:i,setUploadingFile:p,setUploadSuccess:c,onUploadError:d,onUploadSuccess:f,onUploadStart:m,maxFileCount:n,processFile:u,provider:k,path:U=""}){e.useEffect((()=>{const e=r.filter((e=>e.status===s.QUEUED));if(!(e.length>n))for(const{file:s,key:r,id:n}of e){const e=e=>{f?.(e),c({id:n})},y=e=>{const o=0===e.total?100:Math.floor(e.loaded/e.total*100);i({id:n,progress:o})},v=e=>{d?.(e,{key:r})};s&&l({processFile:u,file:s,key:r}).then((({key:s,...l})=>{m?.({key:s});const r=o({...l,isResumable:a,provider:k,key:U+s,level:t,completeCallback:e,progressCallback:y,errorCallback:v});p({id:n,uploadTask:a?r:void 0})}))}}),[r,t,a,i,p,d,f,m,n,c,u,k,U])}export{r as useUploadFiles};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
1
+ import a from"react";import e from"classnames";import{classNameModifier as r,ComponentClassName as o}from"@aws-amplify/ui";import{View as t,Text as n}from"@aws-amplify/ui-react";import{useIcons as i,IconUpload as m}from"@aws-amplify/ui-react/internal";function p({children:p,displayText:s,inDropZone:g,onDragEnter:l,onDragLeave:c,onDragOver:D,onDragStart:d,onDrop:f,testId:u}){const{dropFilesText:E}=s,S=i("storageManager");return a.createElement(t,{className:e(g&&r(o.StorageManagerDropZone,"active"),o.StorageManagerDropZone),"data-testid":u,onDragStart:d,onDragEnter:l,onDragLeave:c,onDrop:f,onDragOver:D},a.createElement(t,{as:"span","aria-hidden":!0,className:o.StorageManagerDropZoneIcon},S?.upload??a.createElement(m,null)),a.createElement(n,{className:o.StorageManagerDropZoneText},E),p)}export{p as DropZone};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as a}from"@aws-amplify/ui";import{View as t,Loader as r,Button as l}from"@aws-amplify/ui-react";import{FileStatus as s}from"../../types.mjs";import{FileStatusMessage as i}from"./FileStatusMessage.mjs";import{FileRemoveButton as m}from"./FileRemoveButton.mjs";import{UploadDetails as o}from"./FileDetails.mjs";import{FileThumbnail as n}from"./FileThumbnail.mjs";function u({onPause:u,onResume:c,displayName:p,errorMessage:g,isImage:f,isResumable:d,loaderIsDeterminate:T,onRemove:x,progress:E,showThumbnails:S=!0,size:N,status:P,displayText:D,thumbnailUrl:U}){const{getPausedText:v,getUploadingText:y,uploadSuccessfulText:F,pauseText:M,resumeText:j}=D;return e.createElement(t,{className:a.StorageManagerFile},e.createElement(t,{className:a.StorageManagerFileWrapper},S?e.createElement(n,{isImage:f,fileName:p,url:U}):null,e.createElement(o,{displayName:p,fileSize:N}),P===s.UPLOADING?e.createElement(r,{className:a.StorageManagerLoader,variation:"linear",percentage:E,isDeterminate:T,isPercentageTextHidden:!0}):null,!d||P!==s.UPLOADING&&P!==s.PAUSED?null:P===s.PAUSED?e.createElement(l,{onClick:c,size:"small",variation:"link"},j):e.createElement(l,{onClick:u,size:"small",variation:"link"},M),e.createElement(m,{altText:`Remove file ${p}`,onClick:x})),e.createElement(i,{uploadSuccessfulText:F,getUploadingText:y,getPausedText:v,status:P,errorMessage:g,percentage:E}))}export{u as FileControl};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as a}from"@aws-amplify/ui";import{View as m,Text as r}from"@aws-amplify/ui-react";import{humanFileSize as t}from"../../utils/humanFileSize.mjs";import"aws-amplify";const i=({displayName:i,fileSize:l})=>e.createElement(e.Fragment,null,e.createElement(m,{className:a.StorageManagerFileMain},e.createElement(r,{className:a.StorageManagerFileName},i)),e.createElement(r,{as:"span",className:a.StorageManagerFileSize},l?t(l,!0):""));export{i as UploadDetails};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as a}from"@aws-amplify/ui";import{View as r,Alert as s}from"@aws-amplify/ui-react";import{FileStatus as o}from"../../types.mjs";import{FileControl as i}from"./FileControl.mjs";function t({displayText:t,files:l,hasMaxFilesError:m,isResumable:n,onCancelUpload:u,onDeleteUpload:p,onResume:d,onPause:c,showThumbnails:f,maxFileCount:g}){if(l.length<1)return null;const{getMaxFilesErrorText:T}=t,U=T(g);return e.createElement(r,{className:a.StorageManagerFileList},l.map((a=>{const{file:r,status:s,progress:l,error:m,key:g,isImage:T,id:U,uploadTask:h}=a,y=r&&T?URL.createObjectURL(r):"",x=!n||l>0,R=s===o.UPLOADING;return e.createElement(i,{displayName:g,errorMessage:m,displayText:t,isImage:T,isUploading:R,isResumable:n,key:U,loaderIsDeterminate:x,onRemove:()=>{n&&(s===o.UPLOADING||s===o.PAUSED)&&h?u({id:U,uploadTask:h}):p({id:U})},onPause:()=>{h&&c({id:U,uploadTask:h})},onResume:()=>{h&&d({id:U,uploadTask:h})},progress:l,showThumbnails:f,size:r?.size,status:s,thumbnailUrl:y})})),m&&e.createElement(s,{variation:"error",heading:U}))}export{t as FileList};
@@ -0,0 +1 @@
1
+ import e from"react";import{useIcons as t,IconClose as a}from"@aws-amplify/ui-react/internal";import{Button as r,VisuallyHidden as n,View as l}from"@aws-amplify/ui-react";const m=({altText:m,onClick:i})=>{const o=t("storageManager");return e.createElement(r,{size:"small",onClick:i},e.createElement(n,null,m),e.createElement(l,{as:"span","aria-hidden":!0,fontSize:"medium"},o?.remove??e.createElement(a,null)))};export{m as FileRemoveButton};
@@ -0,0 +1 @@
1
+ import e from"react";import a from"classnames";import{ComponentClassName as t,classNameModifier as r}from"@aws-amplify/ui";import{Text as s,View as l}from"@aws-amplify/ui-react";import{useIcons as n,IconError as c,IconCheck as m}from"@aws-amplify/ui-react/internal";import{FileStatus as o}from"../../types.mjs";const u=({errorMessage:u,getPausedText:i,getUploadingText:g,percentage:p,status:S,uploadSuccessfulText:f})=>{const E=n("storageManager");switch(S){case o.UPLOADING:return e.createElement(s,{className:t.StorageManagerFileStatus},g(p));case o.PAUSED:return e.createElement(s,{className:t.StorageManagerFileStatus},i(p));case o.UPLOADED:return e.createElement(s,{className:a(t.StorageManagerFileStatus,r(t.StorageManagerFileStatus,"success"))},e.createElement(l,{as:"span",fontSize:"xl"},E?.success??e.createElement(m,null)),f);case o.ERROR:return e.createElement(s,{className:a(t.StorageManagerFileStatus,r(t.StorageManagerFileStatus,"error"))},e.createElement(l,{as:"span",fontSize:"xl"},E?.error??e.createElement(c,null)),u);default:return null}};export{u as FileStatusMessage};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as a}from"@aws-amplify/ui";import{Image as r,View as t}from"@aws-amplify/ui-react";import{useIcons as m,IconFile as i}from"@aws-amplify/ui-react/internal";const l=({fileName:l,isImage:o,url:n})=>{const c=m("storageManager"),s=o?e.createElement(r,{alt:l,src:n}):c?.file??e.createElement(i,null);return e.createElement(t,{className:a.StorageManagerFileImage},s)};export{l as FileThumbnail};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as a}from"@aws-amplify/ui";import{View as t,Button as r}from"@aws-amplify/ui-react";function l({displayText:l,remainingFilesCount:i,onClearAll:o,onUploadAll:n}){const{clearAllButtonText:m,getUploadButtonText:c}=l;return e.createElement(t,{className:a.StorageManagerPreviewerFooter},e.createElement(t,{className:a.StorageManagerPreviewerActions},e.createElement(r,{size:"small",variation:"link",onClick:o},m),e.createElement(r,{size:"small",variation:"primary",onClick:n},c(i))))}export{l as FileListFooter};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as t}from"@aws-amplify/ui";import{Text as i}from"@aws-amplify/ui-react";function a({allUploadsSuccessful:a,displayText:l,fileCount:r,remainingFilesCount:o,selectedFilesCount:s=0}){const{getFilesUploadedText:n,getRemainingFilesText:m,getSelectedFilesText:c}=l;return e.createElement(i,{className:t.StorageManagerPreviewerText},s?c(s):a?n(r):m(o))}export{a as FileListHeader};
@@ -0,0 +1 @@
1
+ import e from"react";import{ComponentClassName as r}from"@aws-amplify/ui";import{Button as a}from"@aws-amplify/ui-react";function i({children:i,className:m=r.StorageManagerFilePicker,size:t="small",...l}){return e.createElement(a,{...l,className:m,size:t},i)}export{i as FilePicker};
@@ -0,0 +1 @@
1
+ import{humanFileSize as e}from"./humanFileSize.mjs";const i=({file:i,getFileSizeErrorText:o,maxFileSize:r})=>void 0===r?"":i.size>r?o(e(r,!0)):"";export{i as checkMaxFileSize};
@@ -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};
@@ -0,0 +1 @@
1
+ function B(B,t=!1,i=1){const n=t?1e3:1024;if(Math.abs(B)<n)return`${B} B`;const e=t?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];let o=-1;const r=10**i;do{B/=n,++o}while(Math.round(Math.abs(B)*r)/r>=n&&o<e.length-1);return B.toFixed(i)+" "+e[o]}export{B as humanFileSize};
@@ -0,0 +1 @@
1
+ import{Storage as e}from"aws-amplify";function r({file:r,key:l,level:a="private",progressCallback:t,errorCallback:o,completeCallback:p,isResumable:c=!1,provider:s,...b}){const i=r.type||"binary/octet-stream";return!0===c?e.put(l,r,{level:a,resumable:!0,progressCallback:t,errorCallback:o,completeCallback:p,contentType:i,provider:s,...b}):e.put(l,r,{level:a,resumable:!1,progressCallback:t,contentType:i,provider:s,...b}).then(p,o)}export{r as uploadFile};
@@ -0,0 +1 @@
1
+ export{StorageImage}from"./components/StorageImage/StorageImage.mjs";export{StorageManager}from"./components/StorageManager/StorageManager.mjs";
package/dist/index.js CHANGED
@@ -1 +1 @@
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 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=i(a),u=o(a),d=o(t);var p,m;function g(e,a){switch(a.type){case m.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?p.ERROR:p.QUEUED,isImage:e.type.startsWith("image/"),progress:-1}})),l=[...e.files,...s];return Object.assign(Object.assign({},e),{files:l})}case m.CLEAR_FILES:return Object.assign(Object.assign({},e),{files:[]});case m.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:p.UPLOADING,progress:0,uploadTask:s||void 0})]:[...e,a]),[]);return Object.assign(Object.assign({},e),{files:r})}case m.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 m.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 m.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"}(p||(p={})),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"}(m||(m={}));const f=({files:e,getFileErrorMessage:a})=>({type:m.ADD_FILES,files:e,getFileErrorMessage:a}),E=()=>({type:m.CLEAR_FILES}),S=({id:e,uploadTask:a})=>({type:m.SET_STATUS_UPLOADING,id:e,uploadTask:a}),T=({id:e,progress:a})=>({type:m.SET_UPLOAD_PROGRESS,id:e,progress:a}),U=({id:e,status:a})=>({type:m.SET_STATUS,id:e,status:a}),C=({id:e})=>({type:m.REMOVE_UPLOAD,id:e}),F=e=>(e=>!(!n.isObject(e)||!e.key))(e)?Object.assign(Object.assign({},e),{id:e.key,status:p.UPLOADED}):void 0;function b(a){var{file:t,key:s,level:l="private",progressCallback:n,errorCallback:o,completeCallback:i,isResumable:c=!1,provider:u}=a,d=e.__rest(a,["file","key","level","progressCallback","errorCallback","completeCallback","isResumable","provider"]);const p=t.type||"binary/octet-stream";return!0===c?r.Storage.put(s,t,Object.assign({level:l,resumable:!0,progressCallback:n,errorCallback:o,completeCallback:i,contentType:p,provider:u},d)):r.Storage.put(s,t,Object.assign({level:l,resumable:!1,progressCallback:n,contentType:p,provider:u},d)).then(i,o)}const D=({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 x({children:e,displayText:a,inDropZone:t,onDragEnter:r,onDragLeave:o,onDragOver:i,onDragStart:c,onDrop:p,testId:m}){const{dropFilesText:g}=a;return u.default.createElement(s.View,{className:d.default(t&&n.classNameModifier(s.ComponentClassNames.StorageManagerDropZone,"active"),s.ComponentClassNames.StorageManagerDropZone),"data-testid":m,onDragStart:c,onDragEnter:r,onDragLeave:o,onDrop:p,onDragOver:i},u.default.createElement(l.IconUpload,{"aria-hidden":!0,className:s.ComponentClassNames.StorageManagerDropZoneIcon}),u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerDropZoneText},g),e)}const y=({errorMessage:e,getPausedText:a,getUploadingText:t,percentage:r,status:o,uploadSuccessfulText:i})=>{switch(o){case p.UPLOADING:return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerFileStatus},t(r));case p.PAUSED:return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerFileStatus},a(r));case p.UPLOADED:return u.default.createElement(s.Text,{className:d.default(s.ComponentClassNames.StorageManagerFileStatus,n.classNameModifier(s.ComponentClassNames.StorageManagerFileStatus,"success"))},u.default.createElement(l.IconCheck,{fontSize:"xl"})," ",i);case p.ERROR:return u.default.createElement(s.Text,{className:d.default(s.ComponentClassNames.StorageManagerFileStatus,n.classNameModifier(s.ComponentClassNames.StorageManagerFileStatus,"error"))},u.default.createElement(l.IconError,{fontSize:"xl"})," ",e);default:return null}},N=({altText:e,onClick:a})=>u.default.createElement(s.Button,{size:"small",onClick:a},u.default.createElement(s.VisuallyHidden,null,e),u.default.createElement(l.IconClose,{"aria-hidden":!0,fontSize:"medium"})),P=({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})=>{const r=a?u.default.createElement(s.Image,{alt:e,src:t}):u.default.createElement(l.IconFile,null);return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileImage},r)};function v({onPause:e,onResume:a,displayName:t,errorMessage:l,isImage:r,isResumable:n,loaderIsDeterminate:o,onRemove:i,progress:c,showThumbnails:d=!0,size:m,status:g,displayText:f,thumbnailUrl:E}){const{getPausedText:S,getUploadingText:T,uploadSuccessfulText:U,pauseText:C,resumeText:F}=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(P,{displayName:t,fileSize:m}),g===p.UPLOADING?u.default.createElement(s.Loader,{className:s.ComponentClassNames.StorageManagerLoader,variation:"linear",percentage:c,isDeterminate:o,isPercentageTextHidden:!0}):null,!n||g!==p.UPLOADING&&g!==p.PAUSED?null:g===p.PAUSED?u.default.createElement(s.Button,{onClick:a,size:"small",variation:"link"},F):u.default.createElement(s.Button,{onClick:e,size:"small",variation:"link"},C),u.default.createElement(N,{altText:`Remove file ${t}`,onClick:i})),u.default.createElement(y,{uploadSuccessfulText:U,getUploadingText:T,getPausedText:S,status:g,errorMessage:l,percentage:c}))}function L({displayText:e,files:a,hasMaxFilesError:t,isResumable:l,onCancelUpload:r,onDeleteUpload:n,onResume:o,onPause:i,showThumbnails:c,maxFileCount:d}){if(a.length<1)return null;const{getMaxFilesErrorText:m}=e,g=m(d);return u.default.createElement(s.View,{className:s.ComponentClassNames.StorageManagerFileList},a.map((a=>{const{file:t,status:s,progress:d,error:m,key:g,isImage:f,id:E,uploadTask:S}=a,T=t&&f?URL.createObjectURL(t):"",U=!l||d>0,C=s===p.UPLOADING;return u.default.createElement(v,{displayName:g,errorMessage:m,displayText:e,isImage:f,isUploading:C,isResumable:l,key:E,loaderIsDeterminate:U,onRemove:()=>{l&&(s===p.UPLOADING||s===p.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:d,showThumbnails:c,size:null==t?void 0:t.size,status:s,thumbnailUrl:T})})),t&&u.default.createElement(s.Alert,{variation:"error",heading:g}))}function h({fileCount:e,remainingFilesCount:a,displayText:t,allUploadsSuccessful:l}){const{getFilesUploadedText:r,getRemainingFilesText:n}=t;return u.default.createElement(s.Text,{className:s.ComponentClassNames.StorageManagerPreviewerText},l?r(e):n(a))}function M(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 A=({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}%`},I=new r.Logger("Storage.StorageManager");const _=Object.assign(c.forwardRef((function({acceptedFileTypes:t=[],accessLevel:l,defaultFiles:r,displayText:n,isResumable:o=!1,maxFileCount:i,maxFileSize:d,onUploadError:m,onUploadSuccess:y,onFileRemove:N,onUploadStart:P,showThumbnails:k=!0,processFile:v,components:_,provider:j,path:w},z){l&&i||I.warn("FileUploader requires accessLevel and maxFileCount props");const B=Object.assign({Container:O,DropZone:x,FileList:L,FilePicker:M,FileListHeader:h},_),G=void 0===i||"number"==typeof i&&i>1,$=Object.assign(Object.assign({},R),n),{getFileSizeErrorText:V}=$,Z=e=>A({file:e,maxFileSize:d,getFileSizeErrorText:V}),{addFiles:q,clearFiles:H,files:W,removeUpload:K,setUploadingFile:Q,setUploadPaused:Y,setUploadProgress:J,setUploadSuccess:X,setUploadResumed:ee}=function(e=[]){const[{files:a},t]=u.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:p.PAUSED}))},setUploadProgress:({progress:e,id:a})=>{t(T({id:a,progress:e}))},setUploadResumed:({id:e})=>{t(U({id:e,status:p.UPLOADING}))},setUploadSuccess:({id:e})=>{t(U({id:e,status:p.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);c.useImperativeHandle(z,(()=>({clearFiles:H})));const ae=function({onChange:e}){const[t,s]=a.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:a=>{a.preventDefault(),a.stopPropagation(),s(!1),e(a)},inDropZone:t}}({onChange:e=>{const{files:a}=e.dataTransfer;if(!a||0===a.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(a),t);q({files:s,getFileErrorMessage:Z})}});!function({files:a,accessLevel:t,isResumable:s,setUploadProgress:l,setUploadingFile:r,setUploadSuccess:n,onUploadError:o,onUploadSuccess:i,onUploadStart:u,maxFileCount:d,processFile:m,provider:g,path:f=""}){c.useEffect((()=>{const c=a.filter((e=>e.status===p.QUEUED));if(!(c.length>d))for(const{file:a,key:d,id:p}of c){const c=e=>{null==i||i(e),n({id:p})},E=e=>{const a=0===e.total?100:Math.floor(e.loaded/e.total*100);l({id:p,progress:a})},S=e=>{null==o||o(e,{key:d})};a&&D({processFile:m,file:a,key:d}).then((a=>{var{key:l}=a,n=e.__rest(a,["key"]);null==u||u({key:l});const o=b(Object.assign(Object.assign({},n),{isResumable:s,provider:g,key:f+l,level:t,completeCallback:c,progressCallback:E,errorCallback:S}));r({id:p,uploadTask:s?o:void 0})}))}}),[a,t,s,l,r,o,i,u,d,n,m,g,f])}({accessLevel:l,files:W,isResumable:o,maxFileCount:i,onUploadError:m,onUploadSuccess:y,onUploadStart:P,setUploadingFile:Q,setUploadProgress:J,setUploadSuccess:X,processFile:v,provider:j,path:w});const te=0!==W.length&&W.every((e=>(null==e?void 0:e.status)===p.UPLOADED)),se=W.filter((e=>e.progress<100)).length>i,le=W.filter((e=>(null==e?void 0:e.status)===p.UPLOADED)).length,re=W.length-le,ne=W.length>0,oe=c.useRef(null);return c.createElement(B.Container,{className:`${s.ComponentClassNames.StorageManager} ${ne?s.ComponentClassNames.StorageManagerPreviewer:""}`},c.createElement(B.DropZone,Object.assign({},ae,{displayText:$}),c.createElement(c.Fragment,null,c.createElement(B.FilePicker,{onClick:function(){oe.current&&(oe.current.click(),oe.current.value="")}},$.browseFilesText),c.createElement(s.VisuallyHidden,null,c.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:t.join(",")})))),ne?c.createElement(B.FileListHeader,{allUploadsSuccessful:te,displayText:$,fileCount:W.length,remainingFilesCount:re}):null,c.createElement(B.FileList,{displayText:$,files:W,isResumable:o,onCancelUpload:({id:e,uploadTask:a})=>{a.pause(),K({id:e})},onDeleteUpload:({id:e})=>{if(K({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(),Y({id:e})},showThumbnails:k,hasMaxFilesError:se,maxFileCount:i}))})),{Container:O,DropZone:x,FileList:L,FileListHeader:h,FilePicker:M});exports.StorageImage=a=>{var{accessLevel:t,className:r,fallbackSrc:n,identityId:o,imgKey:i,onStorageGetError:u}=a,p=e.__rest(a,["accessLevel","className","fallbackSrc","identityId","imgKey","onStorageGetError"]);const m=c.useMemo((()=>({level:t,identityId:o})),[t,o]),g=l.useStorageURL({key:i,options:m,fallbackURL:n,onStorageGetError:u});return c.createElement(s.Image,Object.assign({},p,{className:d.default(s.ComponentClassNames.StorageImage,r),src:g}))},exports.StorageManager=_;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),a=require("classnames"),t=require("@aws-amplify/ui"),s=require("@aws-amplify/ui-react"),l=require("@aws-amplify/ui-react/internal"),r=require("aws-amplify");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(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 i=n(e),u=o(e),c=o(a);var d,m;function p(e,a){switch(a.type){case m.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?d.ERROR:s,isImage:e.type.startsWith("image/"),progress:-1}})),r=[...e.files,...l];return{...e,files:r}}case m.CLEAR_FILES:return{...e,files:[]};case m.QUEUE_FILES:{const{files:a}=e,t=a.reduce(((e,a)=>[...e,{...a,status:d.QUEUED}]),[]);return{...e,files:t}}case m.SET_STATUS_UPLOADING:{const{id:t,uploadTask:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,status:d.UPLOADING,progress:0,uploadTask:s||void 0}]:[...e,a]),[]);return{...e,files:r}}case m.SET_UPLOAD_PROGRESS:{const{id:t,progress:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,progress:s}]:[...e,a]),[]);return{...e,files:r}}case m.SET_STATUS:{const{id:t,status:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,status:s}]:[...e,a]),[]);return{...e,files:r}}case m.REMOVE_UPLOAD:{const{id:t}=a,{files:s}=e,l=s.reduce(((e,a)=>a.id===t?[...e]:[...e,a]),[]);return{...e,files:l}}}}!function(e){e.ADDED="added",e.QUEUED="queued",e.UPLOADING="uploading",e.PAUSED="paused",e.ERROR="error",e.UPLOADED="uploaded"}(d||(d={})),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"}(m||(m={}));const g=({files:e,status:a,getFileErrorMessage:t})=>({type:m.ADD_FILES,files:e,status:a,getFileErrorMessage:t}),f=()=>({type:m.CLEAR_FILES}),E=()=>({type:m.QUEUE_FILES}),S=({id:e,uploadTask:a})=>({type:m.SET_STATUS_UPLOADING,id:e,uploadTask:a}),T=({id:e,progress:a})=>({type:m.SET_UPLOAD_PROGRESS,id:e,progress:a}),U=({id:e,status:a})=>({type:m.SET_STATUS,id:e,status:a}),F=({id:e})=>({type:m.REMOVE_UPLOAD,id:e}),C=e=>(e=>!(!t.isObject(e)||!e.key))(e)?{...e,id:e.key,status:d.UPLOADED}:void 0;function D({file:e,key:a,level:t="private",progressCallback:s,errorCallback:l,completeCallback:o,isResumable:n=!1,provider:i,...u}){const c=e.type||"binary/octet-stream";return!0===n?r.Storage.put(a,e,{level:t,resumable:!0,progressCallback:s,errorCallback:l,completeCallback:o,contentType:c,provider:i,...u}):r.Storage.put(a,e,{level:t,resumable:!1,progressCallback:s,contentType:c,provider:i,...u}).then(o,l)}const x=({processFile:e,file:a,key:s})=>new Promise(((l,r)=>{const o=t.isFunction(e)?e({file:a,key:s}):{file:a,key:s};o instanceof Promise?o.then(l).catch(r):l(o)}));function N({children:e,className:a}){return u.default.createElement(s.View,{className:a},e)}function y({children:e,displayText:a,inDropZone:r,onDragEnter:o,onDragLeave:n,onDragOver:i,onDragStart:d,onDrop:m,testId:p}){const{dropFilesText:g}=a,f=l.useIcons("storageManager");return u.default.createElement(s.View,{className:c.default(r&&t.classNameModifier(t.ComponentClassName.StorageManagerDropZone,"active"),t.ComponentClassName.StorageManagerDropZone),"data-testid":p,onDragStart:d,onDragEnter:o,onDragLeave:n,onDrop:m,onDragOver:i},u.default.createElement(s.View,{as:"span","aria-hidden":!0,className:t.ComponentClassName.StorageManagerDropZoneIcon},f?.upload??u.default.createElement(l.IconUpload,null)),u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerDropZoneText},g),e)}const L=({errorMessage:e,getPausedText:a,getUploadingText:r,percentage:o,status:n,uploadSuccessfulText:i})=>{const m=l.useIcons("storageManager");switch(n){case d.UPLOADING:return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileStatus},r(o));case d.PAUSED:return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileStatus},a(o));case d.UPLOADED:return u.default.createElement(s.Text,{className:c.default(t.ComponentClassName.StorageManagerFileStatus,t.classNameModifier(t.ComponentClassName.StorageManagerFileStatus,"success"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},m?.success??u.default.createElement(l.IconCheck,null)),i);case d.ERROR:return u.default.createElement(s.Text,{className:c.default(t.ComponentClassName.StorageManagerFileStatus,t.classNameModifier(t.ComponentClassName.StorageManagerFileStatus,"error"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},m?.error??u.default.createElement(l.IconError,null)),e);default:return null}},P=({altText:e,onClick:a})=>{const t=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"},t?.remove??u.default.createElement(l.IconClose,null)))};function A(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 o=10**t;do{e/=s,++r}while(Math.round(Math.abs(e)*o)/o>=s&&r<l.length-1);return e.toFixed(t)+" "+l[r]}const k={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}%`},M=({displayName:e,fileSize:a})=>u.default.createElement(u.default.Fragment,null,u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileMain},u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileName},e)),u.default.createElement(s.Text,{as:"span",className:t.ComponentClassName.StorageManagerFileSize},a?A(a,!0):"")),h=({fileName:e,isImage:a,url:r})=>{const o=l.useIcons("storageManager"),n=a?u.default.createElement(s.Image,{alt:e,src:r}):o?.file??u.default.createElement(l.IconFile,null);return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileImage},n)};function v({onPause:e,onResume:a,displayName:l,errorMessage:r,isImage:o,isResumable:n,loaderIsDeterminate:i,onRemove:c,progress:m,showThumbnails:p=!0,size:g,status:f,displayText:E,thumbnailUrl:S}){const{getPausedText:T,getUploadingText:U,uploadSuccessfulText:F,pauseText:C,resumeText:D}=E;return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFile},u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileWrapper},p?u.default.createElement(h,{isImage:o,fileName:l,url:S}):null,u.default.createElement(M,{displayName:l,fileSize:g}),f===d.UPLOADING?u.default.createElement(s.Loader,{className:t.ComponentClassName.StorageManagerLoader,variation:"linear",percentage:m,isDeterminate:i,isPercentageTextHidden:!0}):null,!n||f!==d.UPLOADING&&f!==d.PAUSED?null:f===d.PAUSED?u.default.createElement(s.Button,{onClick:a,size:"small",variation:"link"},D):u.default.createElement(s.Button,{onClick:e,size:"small",variation:"link"},C),u.default.createElement(P,{altText:`Remove file ${l}`,onClick:c})),u.default.createElement(L,{uploadSuccessfulText:F,getUploadingText:U,getPausedText:T,status:f,errorMessage:r,percentage:m}))}function R({displayText:e,files:a,hasMaxFilesError:l,isResumable:r,onCancelUpload:o,onDeleteUpload:n,onResume:i,onPause:c,showThumbnails:m,maxFileCount:p}){if(a.length<1)return null;const{getMaxFilesErrorText:g}=e,f=g(p);return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileList},a.map((a=>{const{file:t,status:s,progress:l,error:p,key:g,isImage:f,id:E,uploadTask:S}=a,T=t&&f?URL.createObjectURL(t):"",U=!r||l>0,F=s===d.UPLOADING;return u.default.createElement(v,{displayName:g,errorMessage:p,displayText:e,isImage:f,isUploading:F,isResumable:r,key:E,loaderIsDeterminate:U,onRemove:()=>{r&&(s===d.UPLOADING||s===d.PAUSED)&&S?o({id:E,uploadTask:S}):n({id:E})},onPause:()=>{S&&c({id:E,uploadTask:S})},onResume:()=>{S&&i({id:E,uploadTask:S})},progress:l,showThumbnails:m,size:t?.size,status:s,thumbnailUrl:T})})),l&&u.default.createElement(s.Alert,{variation:"error",heading:f}))}function I({allUploadsSuccessful:e,displayText:a,fileCount:l,remainingFilesCount:r,selectedFilesCount:o=0}){const{getFilesUploadedText:n,getRemainingFilesText:i,getSelectedFilesText:c}=a;return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerPreviewerText},o?c(o):e?n(l):i(r))}function b({displayText:e,remainingFilesCount:a,onClearAll:l,onUploadAll:r}){const{clearAllButtonText:o,getUploadButtonText:n}=e;return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerPreviewerFooter},u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerPreviewerActions},u.default.createElement(s.Button,{size:"small",variation:"link",onClick:l},o),u.default.createElement(s.Button,{size:"small",variation:"primary",onClick:r},n(a))))}function O({children:e,className:a=t.ComponentClassName.StorageManagerFilePicker,size:l="small",...r}){return u.default.createElement(s.Button,{...r,className:a,size:l},e)}const w=new r.Logger("Storage.StorageManager");const _=Object.assign(i.forwardRef((function({acceptedFileTypes:e=[],accessLevel:a,autoUpload:r=!0,defaultFiles:o,displayText:n,isResumable:c=!1,maxFileCount:m,maxFileSize:L,onUploadError:P,onUploadSuccess:M,onFileRemove:h,onUploadStart:v,showThumbnails:_=!0,processFile:B,components:z,provider:G,path:V},$){a&&m||w.warn("StorageManager requires accessLevel and maxFileCount props");const j={Container:N,DropZone:y,FileList:R,FilePicker:O,FileListHeader:I,FileListFooter:b,...z},Z=void 0===m||"number"==typeof m&&m>1,q={...k,...n},{getFileSizeErrorText:Q}=q,H=e=>(({file:e,getFileSizeErrorText:a,maxFileSize:t})=>void 0===t?"":e.size>t?a(A(t,!0)):"")({file:e,maxFileSize:L,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(C).filter((e=>!!e)):[]});return{removeUpload:({id:e})=>{t(F({id:e}))},setUploadPaused:({id:e})=>{t(U({id:e,status:d.PAUSED}))},setUploadProgress:({progress:e,id:a})=>{t(T({id:a,progress:e}))},setUploadResumed:({id:e})=>{t(U({id:e,status:d.UPLOADING}))},setUploadSuccess:({id:e})=>{t(U({id:e,status:d.UPLOADED}))},setUploadingFile:({uploadTask:e,id:a})=>{t(S({id:a,uploadTask:e}))},queueFiles:()=>{t(E())},addFiles:({files:e,status:a,getFileErrorMessage:s})=>{t(g({files:e,status:a,getFileErrorMessage:s}))},clearFiles:()=>{t(f())},files:a}}(o);i.useImperativeHandle($,(()=>({clearFiles:K})));const{dragState:re,...oe}=l.useDropZone({acceptedFileTypes:e,onDropComplete:({acceptedFiles:a,rejectedFiles:t})=>{t&&t.length>0&&w.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}))})))(a,e);W({files:s,status:r?d.QUEUED:d.ADDED,getFileErrorMessage:H})}});!function({files:e,accessLevel:a,isResumable:t,setUploadProgress:s,setUploadingFile:l,setUploadSuccess:r,onUploadError:o,onUploadSuccess:n,onUploadStart:u,maxFileCount:c,processFile:m,provider:p,path:g=""}){i.useEffect((()=>{const i=e.filter((e=>e.status===d.QUEUED));if(!(i.length>c))for(const{file:e,key:c,id:d}of i){const i=e=>{n?.(e),r({id:d})},f=e=>{const a=0===e.total?100:Math.floor(e.loaded/e.total*100);s({id:d,progress:a})},E=e=>{o?.(e,{key:c})};e&&x({processFile:m,file:e,key:c}).then((({key:e,...s})=>{u?.({key:e});const r=D({...s,isResumable:t,provider:p,key:g+e,level:a,completeCallback:i,progressCallback:f,errorCallback:E});l({id:d,uploadTask:t?r:void 0})}))}}),[e,a,t,s,l,o,n,u,c,r,m,p,g])}({accessLevel:a,files:Y,isResumable:c,maxFileCount:m,onUploadError:P,onUploadSuccess:M,onUploadStart:v,setUploadingFile:ee,setUploadProgress:te,setUploadSuccess:se,processFile:B,provider:G,path:V});const ne=0!==Y.length&&Y.every((e=>e?.status===d.UPLOADED)),ie=Y.filter((e=>e.progress<100)).length>m,ue=Y.filter((e=>e?.status===d.UPLOADED)).length,ce=Y.length-ue,de=r?0:ce,me=Y.length>0,pe=!r&&ce>0,ge=i.useRef(null);return i.createElement(j.Container,{className:`${t.ComponentClassName.StorageManager} ${me?t.ComponentClassName.StorageManagerPreviewer:""}`},i.createElement(j.DropZone,{inDropZone:"inactive"!==re,...oe,displayText:q},i.createElement(i.Fragment,null,i.createElement(j.FilePicker,{onClick:function(){ge.current&&(ge.current.click(),ge.current.value="")}},q.browseFilesText),i.createElement(s.VisuallyHidden,null,i.createElement("input",{type:"file",tabIndex:-1,ref:ge,onChange:e=>{const{files:a}=e.target;a&&0!==a.length&&W({files:Array.from(a),status:r?d.QUEUED:d.ADDED,getFileErrorMessage:H})},multiple:Z,accept:e.join(",")})))),me?i.createElement(j.FileListHeader,{allUploadsSuccessful:ne,displayText:q,fileCount:Y.length,remainingFilesCount:ce,selectedFilesCount:de}):null,i.createElement(j.FileList,{displayText:q,files:Y,isResumable:c,onCancelUpload:({id:e,uploadTask:a})=>{a.pause(),J({id:e})},onDeleteUpload:({id:e})=>{if(J({id:e}),"function"==typeof h){const a=Y.find((a=>a.id===e));a&&h({key:a.key})}},onResume:({id:e,uploadTask:a})=>{a.resume(),le({id:e})},onPause:({id:e,uploadTask:a})=>{a.pause(),ae({id:e})},showThumbnails:_,hasMaxFilesError:ie,maxFileCount:m}),pe?i.createElement(j.FileListFooter,{displayText:q,remainingFilesCount:ce,onClearAll:()=>{K()},onUploadAll:()=>{X()}}):null)})),{Container:N,DropZone:y,FileList:R,FileListHeader:I,FileListFooter:b,FilePicker:O});exports.StorageImage=({accessLevel:e,className:a,fallbackSrc:r,identityId:o,imgKey:n,onStorageGetError:u,...d})=>{const m=i.useMemo((()=>({level:e,identityId:o})),[e,o]),p=l.useStorageURL({key:n,options:m,fallbackURL:r,onStorageGetError:u});return i.createElement(s.Image,{...d,className:c.default(t.ComponentClassName.StorageImage,a),src:p})},exports.StorageManager=_;