@teppen/react-ui 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),i=["image/*","text/*","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.ms-outlook","application/json","application/xml","application/pdf","application/x-compressed","application/x-zip-compressed","application/x-gzip","application/x-bzip2","application/x-tar","application/x-rar-compressed","application/x-7z-compressed","application/zip"];exports.useFileUploader=function(a){var n=e.useRef(null),t=e.useState(!1),o=t[0],r=t[1],p=function(e){var n=function(e){var a=[],n=[];return e.forEach((function(e){i.some((function(i){return e.type.match(i)}))?a.push(e):n.push(e)})),{validFiles:a,rejectedFiles:n}}(e),t=n.validFiles,o=n.rejectedFiles;t.length>0&&a.addFiles(t),o.length>0&&a.onValidationError&&a.onValidationError(o)};return{inputProps:{ref:n,type:"file",multiple:!0,className:"hidden",accept:i.join(","),onChange:function(e){if(e.target.files){var i=Array.from(e.target.files);p(i)}}},isDragging:o,dropSpaceProps:{onClick:function(){var e;return null===(e=n.current)||void 0===e?void 0:e.click()},onDrop:function(e){if(e.preventDefault(),r(!1),e.dataTransfer.files){var i=Array.from(e.dataTransfer.files);p(i)}},onDragOver:function(e){e.preventDefault(),r(!0)},onDragLeave:function(e){r(!1)}}}};
1
+ "use strict";var e=require("react"),i=["image/*","text/*","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.ms-outlook","application/json","application/xml","application/pdf","application/x-compressed","application/x-zip-compressed","application/x-gzip","application/x-bzip2","application/x-tar","application/x-rar-compressed","application/x-7z-compressed","application/zip"],a=[".msg"];exports.useFileUploader=function(n){var t=e.useRef(null),o=e.useState(!1),r=o[0],p=o[1],c=function(e){var t=function(e){var n=[],t=[];return e.forEach((function(e){var o=e.name.split(".").pop();o&&a.includes(".".concat(o))||i.some((function(i){return e.type.match(i)}))?n.push(e):t.push(e)})),{validFiles:n,rejectedFiles:t}}(e),o=t.validFiles,r=t.rejectedFiles;o.length>0&&n.addFiles(o),r.length>0&&n.onValidationError&&n.onValidationError(r)};return{inputProps:{ref:t,type:"file",multiple:!0,className:"hidden",accept:i.join(","),onChange:function(e){if(e.target.files){var i=Array.from(e.target.files);c(i)}}},isDragging:r,dropSpaceProps:{onClick:function(){var e;return null===(e=t.current)||void 0===e?void 0:e.click()},onDrop:function(e){if(e.preventDefault(),p(!1),e.dataTransfer.files){var i=Array.from(e.dataTransfer.files);c(i)}},onDragOver:function(e){e.preventDefault(),p(!0)},onDragLeave:function(e){p(!1)}}}};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/file-uploader/hook.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\ninterface IPropsFileUploader {\n addFiles: (files: File[]) => void;\n onValidationError?: (rejectedFiles: File[]) => void;\n}\n\ninterface IReturnFileUploader {\n inputProps: {\n ref: React.RefObject<HTMLInputElement>;\n type: \"file\";\n multiple?: boolean;\n accept?: string;\n className?: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n };\n isDragging: boolean;\n dropSpaceProps: {\n onClick?: React.MouseEventHandler;\n onDrop: (e: React.DragEvent) => void;\n onDragOver: (e: React.DragEvent) => void;\n onDragLeave: (e: React.DragEvent) => void;\n };\n}\n\nconst ACCEPTED_TYPES = [\n \"image/*\", // image\n \"text/*\", // .txt\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", // .xlsx\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", // .pptx\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", // .docx\n \"application/vnd.ms-excel\", // .xls\n \"application/vnd.ms-outlook\", // .msg\n \"application/json\", // .json\n \"application/xml\", // .xml\n \"application/pdf\", // .pdf\n \"application/x-compressed\", // .tgz\n \"application/x-zip-compressed\", // .zip\n \"application/x-gzip\", // .gz\n \"application/x-bzip2\", // .bz2\n \"application/x-tar\", // .tar\n \"application/x-rar-compressed\", // .rar\n \"application/x-7z-compressed\", // .7z\n \"application/zip\", // .zip\n];\n\nexport function useFileUploader(\n props: IPropsFileUploader\n): IReturnFileUploader {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const validateFiles = (\n files: File[]\n ): { validFiles: File[]; rejectedFiles: File[] } => {\n const validFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n files.forEach((file) => {\n if (ACCEPTED_TYPES.some((type) => file.type.match(type))) {\n validFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n return { validFiles, rejectedFiles };\n };\n\n const addFiles = (files: File[]) => {\n const { validFiles, rejectedFiles } = validateFiles(files);\n if (validFiles.length > 0) {\n props.addFiles(validFiles);\n }\n if (rejectedFiles.length > 0 && props.onValidationError) {\n props.onValidationError(rejectedFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files) {\n const droppedFiles = Array.from(e.dataTransfer.files);\n addFiles(droppedFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n setIsDragging(false);\n };\n\n return {\n inputProps: {\n ref: inputRef,\n type: \"file\",\n multiple: true,\n className: \"hidden\",\n accept: ACCEPTED_TYPES.join(\",\"),\n onChange: (e) => {\n if (e.target.files) {\n const selectedFiles = Array.from(e.target.files);\n addFiles(selectedFiles);\n }\n },\n },\n isDragging,\n dropSpaceProps: {\n onClick: () => inputRef.current?.click(),\n onDrop: handleDrop,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n },\n };\n}\n"],"names":["ACCEPTED_TYPES","props","inputRef","useRef","_a","useState","isDragging","setIsDragging","addFiles","files","validFiles","rejectedFiles","forEach","file","some","type","match","push","validateFiles","length","onValidationError","inputProps","ref","multiple","className","accept","join","onChange","e","target","selectedFiles","Array","from","dropSpaceProps","onClick","current","click","onDrop","preventDefault","dataTransfer","droppedFiles","onDragOver","onDragLeave"],"mappings":"oCAyBMA,EAAiB,CACrB,UACA,SACA,oEACA,4EACA,0EACA,2BACA,6BACA,mBACA,kBACA,kBACA,2BACA,+BACA,qBACA,sBACA,oBACA,+BACA,8BACA,2CAGI,SACJC,GAEA,IAAMC,EAAWC,SAAyB,MACpCC,EAA8BC,EAAAA,UAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAmB1BI,EAAW,SAACC,GACV,IAAAL,EAlBc,SACpBK,GAEA,IAAMC,EAAqB,GACrBC,EAAwB,GAU9B,OARAF,EAAMG,SAAQ,SAACC,GACTb,EAAec,MAAK,SAACC,GAAS,OAAAF,EAAKE,KAAKC,MAAMD,EAAK,IACrDL,EAAWO,KAAKJ,GAEhBF,EAAcM,KAAKJ,EAEvB,IAEO,CAAEH,WAAUA,EAAEC,cAAaA,EACpC,CAGwCO,CAAcT,GAA5CC,EAAUN,EAAAM,WAAEC,EAAaP,EAAAO,cAC7BD,EAAWS,OAAS,GACtBlB,EAAMO,SAASE,GAEbC,EAAcQ,OAAS,GAAKlB,EAAMmB,mBACpCnB,EAAMmB,kBAAkBT,EAE5B,EAoBA,MAAO,CACLU,WAAY,CACVC,IAAKpB,EACLa,KAAM,OACNQ,UAAU,EACVC,UAAW,SACXC,OAAQzB,EAAe0B,KAAK,KAC5BC,SAAU,SAACC,GACT,GAAIA,EAAEC,OAAOpB,MAAO,CAClB,IAAMqB,EAAgBC,MAAMC,KAAKJ,EAAEC,OAAOpB,OAC1CD,EAASsB,EACV,CACF,GAEHxB,WAAUA,EACV2B,eAAgB,CACdC,QAAS,WAAM,IAAA9B,EAAA,OAAkB,QAAlBA,EAAAF,EAASiC,eAAS,IAAA/B,OAAA,EAAAA,EAAAgC,OAAO,EACxCC,OAnCe,SAACT,GAGlB,GAFAA,EAAEU,iBACF/B,GAAc,GACVqB,EAAEW,aAAa9B,MAAO,CACxB,IAAM+B,EAAeT,MAAMC,KAAKJ,EAAEW,aAAa9B,OAC/CD,EAASgC,EACV,CACH,EA6BIC,WA3BmB,SAACb,GACtBA,EAAEU,iBACF/B,GAAc,EAChB,EAyBImC,YAvBoB,SAACd,GACvBrB,GAAc,EAChB,GAwBF"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/file-uploader/hook.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\ninterface IPropsFileUploader {\n addFiles: (files: File[]) => void;\n onValidationError?: (rejectedFiles: File[]) => void;\n}\n\ninterface IReturnFileUploader {\n inputProps: {\n ref: React.RefObject<HTMLInputElement>;\n type: \"file\";\n multiple?: boolean;\n accept?: string;\n className?: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n };\n isDragging: boolean;\n dropSpaceProps: {\n onClick?: React.MouseEventHandler;\n onDrop: (e: React.DragEvent) => void;\n onDragOver: (e: React.DragEvent) => void;\n onDragLeave: (e: React.DragEvent) => void;\n };\n}\n\nconst ACCEPTED_TYPES = [\n \"image/*\", // image\n \"text/*\", // .txt\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", // .xlsx\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", // .pptx\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", // .docx\n \"application/vnd.ms-excel\", // .xls\n \"application/vnd.ms-outlook\", // .msg\n \"application/json\", // .json\n \"application/xml\", // .xml\n \"application/pdf\", // .pdf\n \"application/x-compressed\", // .tgz\n \"application/x-zip-compressed\", // .zip\n \"application/x-gzip\", // .gz\n \"application/x-bzip2\", // .bz2\n \"application/x-tar\", // .tar\n \"application/x-rar-compressed\", // .rar\n \"application/x-7z-compressed\", // .7z\n \"application/zip\", // .zip\n];\n\nconst ALLOWED_EXTENSIONS = [\".msg\"];\n\nexport function useFileUploader(\n props: IPropsFileUploader\n): IReturnFileUploader {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const validateFiles = (\n files: File[]\n ): { validFiles: File[]; rejectedFiles: File[] } => {\n const validFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n files.forEach((file) => {\n const extension = file.name.split(\".\").pop();\n if (extension && ALLOWED_EXTENSIONS.includes(`.${extension}`)) {\n validFiles.push(file);\n return;\n }\n if (ACCEPTED_TYPES.some((type) => file.type.match(type))) {\n validFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n return { validFiles, rejectedFiles };\n };\n\n const addFiles = (files: File[]) => {\n const { validFiles, rejectedFiles } = validateFiles(files);\n if (validFiles.length > 0) {\n props.addFiles(validFiles);\n }\n if (rejectedFiles.length > 0 && props.onValidationError) {\n props.onValidationError(rejectedFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files) {\n const droppedFiles = Array.from(e.dataTransfer.files);\n addFiles(droppedFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n setIsDragging(false);\n };\n\n return {\n inputProps: {\n ref: inputRef,\n type: \"file\",\n multiple: true,\n className: \"hidden\",\n accept: ACCEPTED_TYPES.join(\",\"),\n onChange: (e) => {\n if (e.target.files) {\n const selectedFiles = Array.from(e.target.files);\n addFiles(selectedFiles);\n }\n },\n },\n isDragging,\n dropSpaceProps: {\n onClick: () => inputRef.current?.click(),\n onDrop: handleDrop,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n },\n };\n}\n"],"names":["ACCEPTED_TYPES","ALLOWED_EXTENSIONS","props","inputRef","useRef","_a","useState","isDragging","setIsDragging","addFiles","files","validFiles","rejectedFiles","forEach","file","extension","name","split","pop","includes","concat","some","type","match","push","validateFiles","length","onValidationError","inputProps","ref","multiple","className","accept","join","onChange","e","target","selectedFiles","Array","from","dropSpaceProps","onClick","current","click","onDrop","preventDefault","dataTransfer","droppedFiles","onDragOver","onDragLeave"],"mappings":"oCAyBMA,EAAiB,CACrB,UACA,SACA,oEACA,4EACA,0EACA,2BACA,6BACA,mBACA,kBACA,kBACA,2BACA,+BACA,qBACA,sBACA,oBACA,+BACA,8BACA,mBAGIC,EAAqB,CAAC,gCAEtB,SACJC,GAEA,IAAMC,EAAWC,SAAyB,MACpCC,EAA8BC,EAAAA,UAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAwB1BI,EAAW,SAACC,GACV,IAAAL,EAvBc,SACpBK,GAEA,IAAMC,EAAqB,GACrBC,EAAwB,GAe9B,OAbAF,EAAMG,SAAQ,SAACC,GACb,IAAMC,EAAYD,EAAKE,KAAKC,MAAM,KAAKC,MACnCH,GAAad,EAAmBkB,SAAS,IAAAC,OAAIL,KAI7Cf,EAAeqB,MAAK,SAACC,GAAS,OAAAR,EAAKQ,KAAKC,MAAMD,EAAK,IAHrDX,EAAWa,KAAKV,GAMhBF,EAAcY,KAAKV,EAEvB,IAEO,CAAEH,WAAUA,EAAEC,cAAaA,EACpC,CAGwCa,CAAcf,GAA5CC,EAAUN,EAAAM,WAAEC,EAAaP,EAAAO,cAC7BD,EAAWe,OAAS,GACtBxB,EAAMO,SAASE,GAEbC,EAAcc,OAAS,GAAKxB,EAAMyB,mBACpCzB,EAAMyB,kBAAkBf,EAE5B,EAoBA,MAAO,CACLgB,WAAY,CACVC,IAAK1B,EACLmB,KAAM,OACNQ,UAAU,EACVC,UAAW,SACXC,OAAQhC,EAAeiC,KAAK,KAC5BC,SAAU,SAACC,GACT,GAAIA,EAAEC,OAAO1B,MAAO,CAClB,IAAM2B,EAAgBC,MAAMC,KAAKJ,EAAEC,OAAO1B,OAC1CD,EAAS4B,EACV,CACF,GAEH9B,WAAUA,EACViC,eAAgB,CACdC,QAAS,WAAM,IAAApC,EAAA,OAAkB,QAAlBA,EAAAF,EAASuC,eAAS,IAAArC,OAAA,EAAAA,EAAAsC,OAAO,EACxCC,OAnCe,SAACT,GAGlB,GAFAA,EAAEU,iBACFrC,GAAc,GACV2B,EAAEW,aAAapC,MAAO,CACxB,IAAMqC,EAAeT,MAAMC,KAAKJ,EAAEW,aAAapC,OAC/CD,EAASsC,EACV,CACH,EA6BIC,WA3BmB,SAACb,GACtBA,EAAEU,iBACFrC,GAAc,EAChB,EAyBIyC,YAvBoB,SAACd,GACvB3B,GAAc,EAChB,GAwBF"}
@@ -1,2 +1,2 @@
1
- import{useRef as i,useState as n}from"react";var e=["image/*","text/*","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.ms-outlook","application/json","application/xml","application/pdf","application/x-compressed","application/x-zip-compressed","application/x-gzip","application/x-bzip2","application/x-tar","application/x-rar-compressed","application/x-7z-compressed","application/zip"];function a(a){var o=i(null),t=n(!1),r=t[0],p=t[1],c=function(i){var n=function(i){var n=[],a=[];return i.forEach((function(i){e.some((function(n){return i.type.match(n)}))?n.push(i):a.push(i)})),{validFiles:n,rejectedFiles:a}}(i),o=n.validFiles,t=n.rejectedFiles;o.length>0&&a.addFiles(o),t.length>0&&a.onValidationError&&a.onValidationError(t)};return{inputProps:{ref:o,type:"file",multiple:!0,className:"hidden",accept:e.join(","),onChange:function(i){if(i.target.files){var n=Array.from(i.target.files);c(n)}}},isDragging:r,dropSpaceProps:{onClick:function(){var i;return null===(i=o.current)||void 0===i?void 0:i.click()},onDrop:function(i){if(i.preventDefault(),p(!1),i.dataTransfer.files){var n=Array.from(i.dataTransfer.files);c(n)}},onDragOver:function(i){i.preventDefault(),p(!0)},onDragLeave:function(i){p(!1)}}}}export{a as useFileUploader};
1
+ import{useRef as i,useState as n}from"react";var a=["image/*","text/*","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.ms-outlook","application/json","application/xml","application/pdf","application/x-compressed","application/x-zip-compressed","application/x-gzip","application/x-bzip2","application/x-tar","application/x-rar-compressed","application/x-7z-compressed","application/zip"],e=[".msg"];function o(o){var t=i(null),r=n(!1),p=r[0],c=r[1],l=function(i){var n=function(i){var n=[],o=[];return i.forEach((function(i){var t=i.name.split(".").pop();t&&e.includes(".".concat(t))||a.some((function(n){return i.type.match(n)}))?n.push(i):o.push(i)})),{validFiles:n,rejectedFiles:o}}(i),t=n.validFiles,r=n.rejectedFiles;t.length>0&&o.addFiles(t),r.length>0&&o.onValidationError&&o.onValidationError(r)};return{inputProps:{ref:t,type:"file",multiple:!0,className:"hidden",accept:a.join(","),onChange:function(i){if(i.target.files){var n=Array.from(i.target.files);l(n)}}},isDragging:p,dropSpaceProps:{onClick:function(){var i;return null===(i=t.current)||void 0===i?void 0:i.click()},onDrop:function(i){if(i.preventDefault(),c(!1),i.dataTransfer.files){var n=Array.from(i.dataTransfer.files);l(n)}},onDragOver:function(i){i.preventDefault(),c(!0)},onDragLeave:function(i){c(!1)}}}}export{o as useFileUploader};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/file-uploader/hook.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\ninterface IPropsFileUploader {\n addFiles: (files: File[]) => void;\n onValidationError?: (rejectedFiles: File[]) => void;\n}\n\ninterface IReturnFileUploader {\n inputProps: {\n ref: React.RefObject<HTMLInputElement>;\n type: \"file\";\n multiple?: boolean;\n accept?: string;\n className?: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n };\n isDragging: boolean;\n dropSpaceProps: {\n onClick?: React.MouseEventHandler;\n onDrop: (e: React.DragEvent) => void;\n onDragOver: (e: React.DragEvent) => void;\n onDragLeave: (e: React.DragEvent) => void;\n };\n}\n\nconst ACCEPTED_TYPES = [\n \"image/*\", // image\n \"text/*\", // .txt\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", // .xlsx\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", // .pptx\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", // .docx\n \"application/vnd.ms-excel\", // .xls\n \"application/vnd.ms-outlook\", // .msg\n \"application/json\", // .json\n \"application/xml\", // .xml\n \"application/pdf\", // .pdf\n \"application/x-compressed\", // .tgz\n \"application/x-zip-compressed\", // .zip\n \"application/x-gzip\", // .gz\n \"application/x-bzip2\", // .bz2\n \"application/x-tar\", // .tar\n \"application/x-rar-compressed\", // .rar\n \"application/x-7z-compressed\", // .7z\n \"application/zip\", // .zip\n];\n\nexport function useFileUploader(\n props: IPropsFileUploader\n): IReturnFileUploader {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const validateFiles = (\n files: File[]\n ): { validFiles: File[]; rejectedFiles: File[] } => {\n const validFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n files.forEach((file) => {\n if (ACCEPTED_TYPES.some((type) => file.type.match(type))) {\n validFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n return { validFiles, rejectedFiles };\n };\n\n const addFiles = (files: File[]) => {\n const { validFiles, rejectedFiles } = validateFiles(files);\n if (validFiles.length > 0) {\n props.addFiles(validFiles);\n }\n if (rejectedFiles.length > 0 && props.onValidationError) {\n props.onValidationError(rejectedFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files) {\n const droppedFiles = Array.from(e.dataTransfer.files);\n addFiles(droppedFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n setIsDragging(false);\n };\n\n return {\n inputProps: {\n ref: inputRef,\n type: \"file\",\n multiple: true,\n className: \"hidden\",\n accept: ACCEPTED_TYPES.join(\",\"),\n onChange: (e) => {\n if (e.target.files) {\n const selectedFiles = Array.from(e.target.files);\n addFiles(selectedFiles);\n }\n },\n },\n isDragging,\n dropSpaceProps: {\n onClick: () => inputRef.current?.click(),\n onDrop: handleDrop,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n },\n };\n}\n"],"names":["ACCEPTED_TYPES","useFileUploader","props","inputRef","useRef","_a","useState","isDragging","setIsDragging","addFiles","files","validFiles","rejectedFiles","forEach","file","some","type","match","push","validateFiles","length","onValidationError","inputProps","ref","multiple","className","accept","join","onChange","e","target","selectedFiles","Array","from","dropSpaceProps","onClick","current","click","onDrop","preventDefault","dataTransfer","droppedFiles","onDragOver","onDragLeave"],"mappings":"6CAyBA,IAAMA,EAAiB,CACrB,UACA,SACA,oEACA,4EACA,0EACA,2BACA,6BACA,mBACA,kBACA,kBACA,2BACA,+BACA,qBACA,sBACA,oBACA,+BACA,8BACA,mBAGI,SAAUC,EACdC,GAEA,IAAMC,EAAWC,EAAyB,MACpCC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAmB1BI,EAAW,SAACC,GACV,IAAAL,EAlBc,SACpBK,GAEA,IAAMC,EAAqB,GACrBC,EAAwB,GAU9B,OARAF,EAAMG,SAAQ,SAACC,GACTd,EAAee,MAAK,SAACC,GAAS,OAAAF,EAAKE,KAAKC,MAAMD,EAAK,IACrDL,EAAWO,KAAKJ,GAEhBF,EAAcM,KAAKJ,EAEvB,IAEO,CAAEH,WAAUA,EAAEC,cAAaA,EACpC,CAGwCO,CAAcT,GAA5CC,EAAUN,EAAAM,WAAEC,EAAaP,EAAAO,cAC7BD,EAAWS,OAAS,GACtBlB,EAAMO,SAASE,GAEbC,EAAcQ,OAAS,GAAKlB,EAAMmB,mBACpCnB,EAAMmB,kBAAkBT,EAE5B,EAoBA,MAAO,CACLU,WAAY,CACVC,IAAKpB,EACLa,KAAM,OACNQ,UAAU,EACVC,UAAW,SACXC,OAAQ1B,EAAe2B,KAAK,KAC5BC,SAAU,SAACC,GACT,GAAIA,EAAEC,OAAOpB,MAAO,CAClB,IAAMqB,EAAgBC,MAAMC,KAAKJ,EAAEC,OAAOpB,OAC1CD,EAASsB,EACV,CACF,GAEHxB,WAAUA,EACV2B,eAAgB,CACdC,QAAS,WAAM,IAAA9B,EAAA,OAAkB,QAAlBA,EAAAF,EAASiC,eAAS,IAAA/B,OAAA,EAAAA,EAAAgC,OAAO,EACxCC,OAnCe,SAACT,GAGlB,GAFAA,EAAEU,iBACF/B,GAAc,GACVqB,EAAEW,aAAa9B,MAAO,CACxB,IAAM+B,EAAeT,MAAMC,KAAKJ,EAAEW,aAAa9B,OAC/CD,EAASgC,EACV,CACH,EA6BIC,WA3BmB,SAACb,GACtBA,EAAEU,iBACF/B,GAAc,EAChB,EAyBImC,YAvBoB,SAACd,GACvBrB,GAAc,EAChB,GAwBF"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/file-uploader/hook.ts"],"sourcesContent":["import { useRef, useState } from \"react\";\n\ninterface IPropsFileUploader {\n addFiles: (files: File[]) => void;\n onValidationError?: (rejectedFiles: File[]) => void;\n}\n\ninterface IReturnFileUploader {\n inputProps: {\n ref: React.RefObject<HTMLInputElement>;\n type: \"file\";\n multiple?: boolean;\n accept?: string;\n className?: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n };\n isDragging: boolean;\n dropSpaceProps: {\n onClick?: React.MouseEventHandler;\n onDrop: (e: React.DragEvent) => void;\n onDragOver: (e: React.DragEvent) => void;\n onDragLeave: (e: React.DragEvent) => void;\n };\n}\n\nconst ACCEPTED_TYPES = [\n \"image/*\", // image\n \"text/*\", // .txt\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", // .xlsx\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\", // .pptx\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", // .docx\n \"application/vnd.ms-excel\", // .xls\n \"application/vnd.ms-outlook\", // .msg\n \"application/json\", // .json\n \"application/xml\", // .xml\n \"application/pdf\", // .pdf\n \"application/x-compressed\", // .tgz\n \"application/x-zip-compressed\", // .zip\n \"application/x-gzip\", // .gz\n \"application/x-bzip2\", // .bz2\n \"application/x-tar\", // .tar\n \"application/x-rar-compressed\", // .rar\n \"application/x-7z-compressed\", // .7z\n \"application/zip\", // .zip\n];\n\nconst ALLOWED_EXTENSIONS = [\".msg\"];\n\nexport function useFileUploader(\n props: IPropsFileUploader\n): IReturnFileUploader {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const validateFiles = (\n files: File[]\n ): { validFiles: File[]; rejectedFiles: File[] } => {\n const validFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n files.forEach((file) => {\n const extension = file.name.split(\".\").pop();\n if (extension && ALLOWED_EXTENSIONS.includes(`.${extension}`)) {\n validFiles.push(file);\n return;\n }\n if (ACCEPTED_TYPES.some((type) => file.type.match(type))) {\n validFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n return { validFiles, rejectedFiles };\n };\n\n const addFiles = (files: File[]) => {\n const { validFiles, rejectedFiles } = validateFiles(files);\n if (validFiles.length > 0) {\n props.addFiles(validFiles);\n }\n if (rejectedFiles.length > 0 && props.onValidationError) {\n props.onValidationError(rejectedFiles);\n }\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files) {\n const droppedFiles = Array.from(e.dataTransfer.files);\n addFiles(droppedFiles);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n setIsDragging(false);\n };\n\n return {\n inputProps: {\n ref: inputRef,\n type: \"file\",\n multiple: true,\n className: \"hidden\",\n accept: ACCEPTED_TYPES.join(\",\"),\n onChange: (e) => {\n if (e.target.files) {\n const selectedFiles = Array.from(e.target.files);\n addFiles(selectedFiles);\n }\n },\n },\n isDragging,\n dropSpaceProps: {\n onClick: () => inputRef.current?.click(),\n onDrop: handleDrop,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n },\n };\n}\n"],"names":["ACCEPTED_TYPES","ALLOWED_EXTENSIONS","useFileUploader","props","inputRef","useRef","_a","useState","isDragging","setIsDragging","addFiles","files","validFiles","rejectedFiles","forEach","file","extension","name","split","pop","includes","concat","some","type","match","push","validateFiles","length","onValidationError","inputProps","ref","multiple","className","accept","join","onChange","e","target","selectedFiles","Array","from","dropSpaceProps","onClick","current","click","onDrop","preventDefault","dataTransfer","droppedFiles","onDragOver","onDragLeave"],"mappings":"6CAyBA,IAAMA,EAAiB,CACrB,UACA,SACA,oEACA,4EACA,0EACA,2BACA,6BACA,mBACA,kBACA,kBACA,2BACA,+BACA,qBACA,sBACA,oBACA,+BACA,8BACA,mBAGIC,EAAqB,CAAC,QAEtB,SAAUC,EACdC,GAEA,IAAMC,EAAWC,EAAyB,MACpCC,EAA8BC,GAAS,GAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAwB1BI,EAAW,SAACC,GACV,IAAAL,EAvBc,SACpBK,GAEA,IAAMC,EAAqB,GACrBC,EAAwB,GAe9B,OAbAF,EAAMG,SAAQ,SAACC,GACb,IAAMC,EAAYD,EAAKE,KAAKC,MAAM,KAAKC,MACnCH,GAAaf,EAAmBmB,SAAS,IAAAC,OAAIL,KAI7ChB,EAAesB,MAAK,SAACC,GAAS,OAAAR,EAAKQ,KAAKC,MAAMD,EAAK,IAHrDX,EAAWa,KAAKV,GAMhBF,EAAcY,KAAKV,EAEvB,IAEO,CAAEH,WAAUA,EAAEC,cAAaA,EACpC,CAGwCa,CAAcf,GAA5CC,EAAUN,EAAAM,WAAEC,EAAaP,EAAAO,cAC7BD,EAAWe,OAAS,GACtBxB,EAAMO,SAASE,GAEbC,EAAcc,OAAS,GAAKxB,EAAMyB,mBACpCzB,EAAMyB,kBAAkBf,EAE5B,EAoBA,MAAO,CACLgB,WAAY,CACVC,IAAK1B,EACLmB,KAAM,OACNQ,UAAU,EACVC,UAAW,SACXC,OAAQjC,EAAekC,KAAK,KAC5BC,SAAU,SAACC,GACT,GAAIA,EAAEC,OAAO1B,MAAO,CAClB,IAAM2B,EAAgBC,MAAMC,KAAKJ,EAAEC,OAAO1B,OAC1CD,EAAS4B,EACV,CACF,GAEH9B,WAAUA,EACViC,eAAgB,CACdC,QAAS,WAAM,IAAApC,EAAA,OAAkB,QAAlBA,EAAAF,EAASuC,eAAS,IAAArC,OAAA,EAAAA,EAAAsC,OAAO,EACxCC,OAnCe,SAACT,GAGlB,GAFAA,EAAEU,iBACFrC,GAAc,GACV2B,EAAEW,aAAapC,MAAO,CACxB,IAAMqC,EAAeT,MAAMC,KAAKJ,EAAEW,aAAapC,OAC/CD,EAASsC,EACV,CACH,EA6BIC,WA3BmB,SAACb,GACtBA,EAAEU,iBACFrC,GAAc,EAChB,EAyBIyC,YAvBoB,SAACd,GACvB3B,GAAc,EAChB,GAwBF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.7.0",
3
+ "version": "1.7.1",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",