diff --git a/src/files-ui/components/avatar/Avatar.scss b/src/files-ui/Avatar/Avatar.scss
similarity index 100%
rename from src/files-ui/components/avatar/Avatar.scss
rename to src/files-ui/Avatar/Avatar.scss
diff --git a/src/files-ui/components/avatar/Avatar.tsx b/src/files-ui/Avatar/Avatar.tsx
similarity index 95%
rename from src/files-ui/components/avatar/Avatar.tsx
rename to src/files-ui/Avatar/Avatar.tsx
index 3367810aa2a9d2414c59bca32c278039a2f71f3d..e956c12e85fd2b5d6e78fe64748b23cb7c1c681b 100644
--- a/src/files-ui/components/avatar/Avatar.tsx
+++ b/src/files-ui/Avatar/Avatar.tsx
@@ -2,11 +2,11 @@ import * as React from "react";
 import { mergeProps } from "../overridable/mergeProps";
 import { AvatarProps, defaultAvatarProps } from "./AvatarProps";
 import "./Avatar.scss";
-import InputHidden from "../input-hidden/InputHidden";
+import InputHidden from "../InputHidden/InputHidden";
 import { useAvatarStyle } from "./useAvatarStyle";
-import { ImagePreview } from "../previews";
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
-import Layer from "../file-mosaic/components/file-mosaic-layer/Layer";
+import Layer from "../FileMosaic/components/file-mosaic-layer/Layer";
+import ImagePreview from "../ImagePreview/ImagePreview";
 const Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {
   const {
     readOnly,
diff --git a/src/files-ui/components/avatar/AvatarProps.ts b/src/files-ui/Avatar/AvatarProps.ts
similarity index 100%
rename from src/files-ui/components/avatar/AvatarProps.ts
rename to src/files-ui/Avatar/AvatarProps.ts
diff --git a/src/files-ui/components/avatar/index.ts b/src/files-ui/Avatar/index.ts
similarity index 100%
rename from src/files-ui/components/avatar/index.ts
rename to src/files-ui/Avatar/index.ts
diff --git a/src/files-ui/components/avatar/useAvatarClassName.ts b/src/files-ui/Avatar/useAvatarClassName.ts
similarity index 100%
rename from src/files-ui/components/avatar/useAvatarClassName.ts
rename to src/files-ui/Avatar/useAvatarClassName.ts
diff --git a/src/files-ui/components/avatar/useAvatarStyle.ts b/src/files-ui/Avatar/useAvatarStyle.ts
similarity index 100%
rename from src/files-ui/components/avatar/useAvatarStyle.ts
rename to src/files-ui/Avatar/useAvatarStyle.ts
diff --git a/src/files-ui/components/download-hidden/DownloadHidden.tsx b/src/files-ui/DownloadHidden/DownloadHidden.tsx
similarity index 100%
rename from src/files-ui/components/download-hidden/DownloadHidden.tsx
rename to src/files-ui/DownloadHidden/DownloadHidden.tsx
diff --git a/src/files-ui/components/drop-layer/components/DropLayer.tsx b/src/files-ui/DropLayer/components/DropLayer.tsx
similarity index 100%
rename from src/files-ui/components/drop-layer/components/DropLayer.tsx
rename to src/files-ui/DropLayer/components/DropLayer.tsx
diff --git a/src/files-ui/components/drop-layer/components/DropLayerProps.scss b/src/files-ui/DropLayer/components/DropLayerProps.scss
similarity index 100%
rename from src/files-ui/components/drop-layer/components/DropLayerProps.scss
rename to src/files-ui/DropLayer/components/DropLayerProps.scss
diff --git a/src/files-ui/components/drop-layer/components/DropLayerProps.ts b/src/files-ui/DropLayer/components/DropLayerProps.ts
similarity index 100%
rename from src/files-ui/components/drop-layer/components/DropLayerProps.ts
rename to src/files-ui/DropLayer/components/DropLayerProps.ts
diff --git a/src/files-ui/components/drop-layer/utils/dropLayerDynamicStyle.ts b/src/files-ui/DropLayer/utils/dropLayerDynamicStyle.ts
similarity index 89%
rename from src/files-ui/components/drop-layer/utils/dropLayerDynamicStyle.ts
rename to src/files-ui/DropLayer/utils/dropLayerDynamicStyle.ts
index 3a1cabd7df57153f7459b0cdb100b0653d3ae68a..c81aae7a12a6efa7f61b91f027759198da435f67 100644
--- a/src/files-ui/components/drop-layer/utils/dropLayerDynamicStyle.ts
+++ b/src/files-ui/DropLayer/utils/dropLayerDynamicStyle.ts
@@ -1,5 +1,6 @@
-import { completeAsureColor } from "../../../core";
-import { DEFAULT_BORDER_RADIUS } from "../../dropzone/components/dropzone/DropzoneProps";
+import { completeAsureColor } from "../../core";
+import { DEFAULT_BORDER_RADIUS } from "../../Dropzone/components/dropzone/DropzoneProps";
+
 
 export const makeDropLayerDynamicStyle = (
     dropzoneId: string,
diff --git a/src/files-ui/components/dropzone/components/DropzoneButtons/DropzoneButtons.scss b/src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.scss
similarity index 100%
rename from src/files-ui/components/dropzone/components/DropzoneButtons/DropzoneButtons.scss
rename to src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.scss
diff --git a/src/files-ui/components/dropzone/components/DropzoneButtons/DropzoneButtons.tsx b/src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
similarity index 95%
rename from src/files-ui/components/dropzone/components/DropzoneButtons/DropzoneButtons.tsx
rename to src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
index fffb951611ac5255e250a09bbf039aa8039e0491..4b5cdc4fb7ccd3167b596d6f901b712eb8e56f06 100644
--- a/src/files-ui/components/dropzone/components/DropzoneButtons/DropzoneButtons.tsx
+++ b/src/files-ui/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
@@ -1,6 +1,6 @@
 import * as React from "react";
-import { addClassName, Localization } from "../../../../core";
-import { MaterialButton } from "../../../material-button";
+import { addClassName, Localization } from "../../../core";
+import { MaterialButton } from "../../../MaterialButton";
 import { ActionButtonItem, DropzoneActions } from "../dropzone/DropzoneProps";
 import "./DropzoneButtons.scss";
 
diff --git a/src/files-ui/components/dropzone/components/DropzoneChildren/DropzoneChildren.scss b/src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.scss
similarity index 100%
rename from src/files-ui/components/dropzone/components/DropzoneChildren/DropzoneChildren.scss
rename to src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.scss
diff --git a/src/files-ui/components/dropzone/components/DropzoneChildren/DropzoneChildren.tsx b/src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
similarity index 97%
rename from src/files-ui/components/dropzone/components/DropzoneChildren/DropzoneChildren.tsx
rename to src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
index f030f56bda74f70647ae9aa30c77b442f8728c6b..99be7e75990fd620599bb98fc217a6f6877f1abd 100644
--- a/src/files-ui/components/dropzone/components/DropzoneChildren/DropzoneChildren.tsx
+++ b/src/files-ui/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
@@ -3,7 +3,7 @@ import {
   DropzoneLocalizerSelector,
   Localization,
   LocalLabels,
-} from "../../../../core";
+} from "../../../core";
 import "./DropzoneChildren.scss";
 
 declare type DropzoneChildrenProps = {
diff --git a/src/files-ui/components/dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss b/src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
similarity index 100%
rename from src/files-ui/components/dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
rename to src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.scss
diff --git a/src/files-ui/components/dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx b/src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
similarity index 87%
rename from src/files-ui/components/dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
rename to src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
index e07d351aefa37ff4269f4f91acc9dd4a5a0978fb..486a47f0e9aa272435d15e0f5269cba2a96a705c 100644
--- a/src/files-ui/components/dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
+++ b/src/files-ui/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
@@ -1,11 +1,12 @@
 import * as React from "react";
 import {
   addClassName,
-  //handleClickUtil,
-  //handleDragUtil,
-  //handleDropUtil,
-} from "../../../../core";
-import { handleClickUtil, handleDragUtil, handleDropUtil } from "../../../../files-ui-react/utils";
+} from "../../../core";
+import {
+  handleClickUtil,
+  handleDragUtil,
+  handleDropUtil,
+} from "../../../utils";
 import "./DropzoneDisabledLayer.scss";
 export declare type DropzoneDisabledLayerProps = {
   open?: boolean;
diff --git a/src/files-ui/components/dropzone/components/DropzoneFooter/DropzoneFooter.tsx b/src/files-ui/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
similarity index 94%
rename from src/files-ui/components/dropzone/components/DropzoneFooter/DropzoneFooter.tsx
rename to src/files-ui/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
index 5d5ac60815114a672805b453ee2825d8cf7b873b..159ae739d41643937146f6d784d4c9aeb51cc599 100644
--- a/src/files-ui/components/dropzone/components/DropzoneFooter/DropzoneFooter.tsx
+++ b/src/files-ui/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
@@ -3,11 +3,10 @@ import {
   addClassName,
   DropzoneLocalizerSelector,
   FunctionLabel,
-  //handleClickUtil,
   Localization,
   LocalLabels,
-} from "../../../../core";
-import { handleClickUtil } from "../../../../files-ui-react/utils";
+} from "../../../core";
+import { handleClickUtil } from "../../../utils";
 import { FooterConfig } from "../dropzone/DropzoneProps";
 
 export interface DropzoneFooterProps extends FooterConfig {
diff --git a/src/files-ui/components/dropzone/components/DropzoneHeader/DropzoneHeader.tsx b/src/files-ui/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
similarity index 99%
rename from src/files-ui/components/dropzone/components/DropzoneHeader/DropzoneHeader.tsx
rename to src/files-ui/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
index 7b3d48c48c4b33538da42cd413ce6b971e7c0d58..2361326d53b5243527fc7e545056a12ec9796371 100644
--- a/src/files-ui/components/dropzone/components/DropzoneHeader/DropzoneHeader.tsx
+++ b/src/files-ui/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
@@ -1,4 +1,5 @@
 import * as React from "react";
+
 import {
   addClassName,
   DropzoneLocalizerSelector,
@@ -6,7 +7,7 @@ import {
   FunctionLabel,
   Localization,
   LocalLabels,
-} from "../../../../core";
+} from "../../../core";
 import { UploadingProcess, Clean, Cancel, Upload } from "../../../icons";
 
 export type DropzoneHeaderProps = {
diff --git a/src/files-ui/components/dropzone/components/dropzone/Dropzone.scss b/src/files-ui/Dropzone/components/dropzone/Dropzone.scss
similarity index 100%
rename from src/files-ui/components/dropzone/components/dropzone/Dropzone.scss
rename to src/files-ui/Dropzone/components/dropzone/Dropzone.scss
diff --git a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx b/src/files-ui/Dropzone/components/dropzone/Dropzone.tsx
similarity index 97%
rename from src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
rename to src/files-ui/Dropzone/components/dropzone/Dropzone.tsx
index 8a7bf5bb6d52389373294be63ccc4c680a995f94..f7b2610f55edcf0f5f3534cb23281b7c7e2dc326 100644
--- a/src/files-ui/components/dropzone/components/dropzone/Dropzone.tsx
+++ b/src/files-ui/Dropzone/components/dropzone/Dropzone.tsx
@@ -28,10 +28,10 @@ import {
   unexpectedErrorUploadResult,
   getRandomInt,
   addClassName,
-  Localization,
-} from "../../../../core";
+  Localization,completeAsureColor,
+} from "../../../core";
 import { mergeProps } from "../../../overridable";
-import InputHidden from "../../../input-hidden/InputHidden";
+import InputHidden from "../../../InputHidden/InputHidden";
 import {
   ActionButtons,
   defaultDrozoneProps,
@@ -43,25 +43,23 @@ import {
   HeaderConfig,
 } from "./DropzoneProps";
 import DropzoneChildren from "../DropzoneChildren/DropzoneChildren";
-import useDropzoneClassName from "./../../useDropzoneClassName";
 import DropzoneDisabledLayer from "../DropzoneDisabledLayer/DropzoneDisabledLayer";
 
 import "./Dropzone.scss";
-import "./../../DropzoneRipple.scss";
-import useDropLayerClassName from "../../../drop-layer/hooks/useDropLayerClassName";
-import DropLayer from "../../../drop-layer/components/DropLayer";
-import useDropzoneFileListUpdater from "../../../../hooks/useDropzoneFileUpdater";
+import "./DropzoneRipple.scss";
+
 import DropzoneHeader from "../DropzoneHeader/DropzoneHeader";
 import DropzoneFooter from "../DropzoneFooter/DropzoneFooter";
 import DropzoneButtons from "../DropzoneButtons/DropzoneButtons";
-import { completeAsureColor } from "../../../../core";
 import {
   createFuiRippleFromDiv,
   handleClickInput,
   handleDragUtil,
   handleDropUtil,
-} from "../../../../files-ui-react/utils";
-import { FilesUiContext } from "../../../../FilesUiProvider/FilesUiContext";
+} from "../../../utils";
+import { FilesUiContext } from "../../../FilesUiProvider/FilesUiContext";
+import DropLayer from "../../../DropLayer/components/DropLayer";
+import { useDropzoneFileListUpdater, useDropLayerClassName, useDropzoneClassName } from "../../../hooks";
 
 //import { print_manager } from "../../../../../utils";
 
diff --git a/src/files-ui/components/dropzone/components/dropzone/DropzoneProps.ts b/src/files-ui/Dropzone/components/dropzone/DropzoneProps.ts
similarity index 99%
rename from src/files-ui/components/dropzone/components/dropzone/DropzoneProps.ts
rename to src/files-ui/Dropzone/components/dropzone/DropzoneProps.ts
index 352a2b266cb9f471266fc4e1dfa21969361a4550..df0714536c82a7bd52bf7d1fbe1b3cfd758dd9a3 100644
--- a/src/files-ui/components/dropzone/components/dropzone/DropzoneProps.ts
+++ b/src/files-ui/Dropzone/components/dropzone/DropzoneProps.ts
@@ -1,4 +1,4 @@
-import { ExtFile, ValidateFileResponse, Localization, UploadConfig } from "../../../../core";
+import { ExtFile, ValidateFileResponse, Localization, UploadConfig } from "../../../core";
 
 import * as React from "react";
 import { OverridableComponentProps } from "../../../overridable";
diff --git a/src/files-ui/components/dropzone/DropzoneRipple.scss b/src/files-ui/Dropzone/components/dropzone/DropzoneRipple.scss
similarity index 100%
rename from src/files-ui/components/dropzone/DropzoneRipple.scss
rename to src/files-ui/Dropzone/components/dropzone/DropzoneRipple.scss
diff --git a/src/files-ui/components/dropzone/index.ts b/src/files-ui/Dropzone/index.ts
similarity index 100%
rename from src/files-ui/components/dropzone/index.ts
rename to src/files-ui/Dropzone/index.ts
diff --git a/src/files-ui/components/file-card/FileCard.scss b/src/files-ui/FileCard/FileCard.scss
similarity index 100%
rename from src/files-ui/components/file-card/FileCard.scss
rename to src/files-ui/FileCard/FileCard.scss
diff --git a/src/files-ui/components/file-card/FileCard.tsx b/src/files-ui/FileCard/FileCard.tsx
similarity index 93%
rename from src/files-ui/components/file-card/FileCard.tsx
rename to src/files-ui/FileCard/FileCard.tsx
index 69d27de19c1a7b1a8bf6f020a48cf43281cd4d24..de6a33e60c12322736878d1dc8da60f0f8d0d129 100644
--- a/src/files-ui/components/file-card/FileCard.tsx
+++ b/src/files-ui/FileCard/FileCard.tsx
@@ -9,21 +9,20 @@ import {
   Localization,
   //handleClickUtil,
   shrinkWord,
-} from "../../core";
-import useProgress from "../file-mosaic/hooks/useProgress";
-import useFileMosaicInitializer from "../file-mosaic/hooks/useFileMosaicInitializer";
-import { useIsUploading } from "../file-mosaic/hooks/useIsUploading";
-import LayerContainer from "../file-mosaic/components/file-mosaic-layer/LayerContainer";
-import Layer from "../file-mosaic/components/file-mosaic-layer/Layer";
-import FileMosaicImageLayer from "../file-mosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer";
+} from "../core";
+
 import FileCardRightActions from "./components/FileCardRightActions";
 import FileCardInfoLayer from "./components/FileCardInfoLayer";
-import FileMosaicStatus from "../file-mosaic/components/FileMosaicStatus/FileMosaicStatus";
 import FileCardUploadLayer from "./components/FileCardUploadLayer";
 import { Tooltip } from "../tooltip";
-import DownloadHidden from "../download-hidden/DownloadHidden";
-import { FilesUiContext } from "../../FilesUiProvider/FilesUiContext";
-import { handleClickUtil } from "../../files-ui-react/utils";
+import DownloadHidden from "../DownloadHidden/DownloadHidden";
+import { FilesUiContext } from "../FilesUiProvider/FilesUiContext";
+import { FileMosaicStatus } from "../FileMosaic";
+import Layer from "../FileMosaic/components/file-mosaic-layer/Layer";
+import LayerContainer from "../FileMosaic/components/file-mosaic-layer/LayerContainer";
+import FileMosaicImageLayer from "../FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer";
+import { useProgress, useFileMosaicInitializer, useIsUploading } from "../hooks";
+import { handleClickUtil } from "../utils";
 
 const setFinalElevation = (elevation: string | number): number => {
   //  let finalElevation: number  = "";
diff --git a/src/files-ui/components/file-card/FileCardProps.ts b/src/files-ui/FileCard/FileCardProps.ts
similarity index 91%
rename from src/files-ui/components/file-card/FileCardProps.ts
rename to src/files-ui/FileCard/FileCardProps.ts
index ca3012323eb979e734e5eb3257918ebe700760c2..d0ced8ffc57f7cc18a1a4cd101684f9ac556b83e 100644
--- a/src/files-ui/components/file-card/FileCardProps.ts
+++ b/src/files-ui/FileCard/FileCardProps.ts
@@ -1,4 +1,4 @@
-import { FileMosaicPropsMap } from "../file-mosaic/components/file-mosaic/FileMosaicProps";
+import { FileMosaicPropsMap } from "../FileMosaic/components/file-mosaic/FileMosaicProps";
 
 
 export interface FileCardPropsMap extends FileMosaicPropsMap {
diff --git a/src/files-ui/components/file-card/components/FileCardInfoLayer.tsx b/src/files-ui/FileCard/components/FileCardInfoLayer.tsx
similarity index 80%
rename from src/files-ui/components/file-card/components/FileCardInfoLayer.tsx
rename to src/files-ui/FileCard/components/FileCardInfoLayer.tsx
index 4a36ce738f497d2e003ded6c8fdc5456314206df..526ef80aa32785dc854c6bef5670127892161d94 100644
--- a/src/files-ui/components/file-card/components/FileCardInfoLayer.tsx
+++ b/src/files-ui/FileCard/components/FileCardInfoLayer.tsx
@@ -1,7 +1,6 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../../core";
-import { FileMosaicInfoLayerProps } from "../../file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps";
-import FileMosaicStatus from "../../file-mosaic/components/FileMosaicStatus/FileMosaicStatus";
+import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileMosaicInfoLayerProps } from "../../FileMosaic";
 import { Cancel } from "../../icons";
 type FileCardInfoLayerProps = FileMosaicInfoLayerProps;
 const FileCardInfoLayer: React.FC<FileCardInfoLayerProps> = (
diff --git a/src/files-ui/components/file-card/components/FileCardPaper.scss b/src/files-ui/FileCard/components/FileCardPaper.scss
similarity index 100%
rename from src/files-ui/components/file-card/components/FileCardPaper.scss
rename to src/files-ui/FileCard/components/FileCardPaper.scss
diff --git a/src/files-ui/components/file-card/components/FileCardRightActions.scss b/src/files-ui/FileCard/components/FileCardRightActions.scss
similarity index 100%
rename from src/files-ui/components/file-card/components/FileCardRightActions.scss
rename to src/files-ui/FileCard/components/FileCardRightActions.scss
diff --git a/src/files-ui/components/file-card/components/FileCardRightActions.tsx b/src/files-ui/FileCard/components/FileCardRightActions.tsx
similarity index 96%
rename from src/files-ui/components/file-card/components/FileCardRightActions.tsx
rename to src/files-ui/FileCard/components/FileCardRightActions.tsx
index 602a1c2b47d1226c8ac6683c657cdd19e04ac972..a3ded644604b8f1a5733b33675187925ce02a9a0 100644
--- a/src/files-ui/components/file-card/components/FileCardRightActions.tsx
+++ b/src/files-ui/FileCard/components/FileCardRightActions.tsx
@@ -1,5 +1,4 @@
 import * as React from "react";
-import { Localization, UPLOADSTATUS } from "../../../core";
 import {
   Clear,
   DownloadFile,
@@ -13,7 +12,7 @@ declare type FileCardRightActionsProps = {
   darkMode?: boolean;
   deleteIcon?: boolean;
   onDelete?: Function;
-  
+
   imageIcon: boolean;
   onSee: ((imageSource: string | undefined) => void) | undefined;
 
@@ -51,7 +50,7 @@ const FileCardRightActions: React.FC<FileCardRightActionsProps> = (
   if (visible)
     return (
       <>
-        <div className="file-card-right-layer-header" >
+        <div className="file-card-right-layer-header">
           {isActive && deleteIcon && (
             <Clear
               className={
diff --git a/src/files-ui/components/file-card/components/FileCardUploadLayer.scss b/src/files-ui/FileCard/components/FileCardUploadLayer.scss
similarity index 100%
rename from src/files-ui/components/file-card/components/FileCardUploadLayer.scss
rename to src/files-ui/FileCard/components/FileCardUploadLayer.scss
diff --git a/src/files-ui/components/file-card/components/FileCardUploadLayer.tsx b/src/files-ui/FileCard/components/FileCardUploadLayer.tsx
similarity index 97%
rename from src/files-ui/components/file-card/components/FileCardUploadLayer.tsx
rename to src/files-ui/FileCard/components/FileCardUploadLayer.tsx
index 57f0c68a5423573f862d2b47de36838c056ee3bb..013d20a87289a0d86bb9da43877ee149ec5b2c99 100644
--- a/src/files-ui/components/file-card/components/FileCardUploadLayer.tsx
+++ b/src/files-ui/FileCard/components/FileCardUploadLayer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "../../core";
 import {
   AbortedStatus,
   EmptyStatus,
@@ -7,7 +7,7 @@ import {
   PreparingStatus,
   SuccessStatus,
   UploadingStatus,
-} from "../../file-status";
+} from "../../FileStatus";
 import "./FileCardUploadLayer.scss";
 export interface FileCardUploadLayerPropsMap {
   visible?: boolean;
diff --git a/src/files-ui/components/file-input-button/FileInputButton.tsx b/src/files-ui/FileInputButton/FileInputButton.tsx
similarity index 96%
rename from src/files-ui/components/file-input-button/FileInputButton.tsx
rename to src/files-ui/FileInputButton/FileInputButton.tsx
index d300d8cb8ad724c2d146874e619a7f961959efa1..0a7a275a6a69fa32f27f646f49fa6b35f62803ff 100644
--- a/src/files-ui/components/file-input-button/FileInputButton.tsx
+++ b/src/files-ui/FileInputButton/FileInputButton.tsx
@@ -1,39 +1,37 @@
 import * as React from "react";
 import {
-  cleanInput,
+  Localization,
+  UploadConfig,
+  LocalLabels,
   DropzoneLocalizerSelector,
+  isValidateActive,
   ExtFile,
   ExtFileInstance,
-  ExtFileManager,
-  fakeFuiUpload,
-  fileListToExtFileArray,
-  FileValidatorProps,
-  getRandomInt,
-  //FunctionLabel,
-  //handleClickInput,
-  instantPreparingToUploadOne,
   isUploadAbleExtFile,
-  isValidateActive,
-  Localization,
-  LocalLabels,
-  sanitizeArrExtFile,
+  ExtFileManager,
   sleepPreparing,
   sleepTransition,
-  toUploadableExtFileList,
-  unexpectedErrorUploadResult,
-  UploadConfig,
+  instantPreparingToUploadOne,
+  sanitizeArrExtFile,
+  fakeFuiUpload,
+  getRandomInt,
   uploadExtFile,
-  //UploadResponse,
+  unexpectedErrorUploadResult,
+  FileValidatorProps,
   validateExtFileList,
-} from "../../core";
-import { handleClickInput } from "../../files-ui-react/utils";
-import { FilesUiContext } from "../../FilesUiProvider/FilesUiContext";
-import useDropzoneFileListUpdater from "../../hooks/useDropzoneFileUpdater";
-import { DropzoneActions } from "../dropzone/components/dropzone/DropzoneProps";
-import DropzoneButtons from "../dropzone/components/DropzoneButtons/DropzoneButtons";
-import InputHidden from "../input-hidden/InputHidden";
-import { MaterialButton } from "../material-button";
+  fileListToExtFileArray,
+  toUploadableExtFileList,
+  cleanInput,
+} from "../core";
+import { DropzoneActions } from "../Dropzone/components/dropzone/DropzoneProps";
+import DropzoneButtons from "../Dropzone/components/DropzoneButtons/DropzoneButtons";
+import { FilesUiContext } from "../FilesUiProvider/FilesUiContext";
+import { useDropzoneFileListUpdater } from "../hooks";
+import InputHidden from "../InputHidden/InputHidden";
+import { MaterialButton } from "../MaterialButton";
+
 import { mergeProps } from "../overridable";
+import { handleClickInput } from "../utils";
 import {
   defaultFileInputButtonProps,
   FileInputButtonProps,
diff --git a/src/files-ui/components/file-input-button/InputButtonProps.ts b/src/files-ui/FileInputButton/InputButtonProps.ts
similarity index 95%
rename from src/files-ui/components/file-input-button/InputButtonProps.ts
rename to src/files-ui/FileInputButton/InputButtonProps.ts
index 8011f4d002369e509a1ee4d54b98cceae9958d58..9540459a9fcab2d9925357a87aaba96a7ff8c1ac 100644
--- a/src/files-ui/components/file-input-button/InputButtonProps.ts
+++ b/src/files-ui/FileInputButton/InputButtonProps.ts
@@ -1,6 +1,6 @@
-import { ValidateFileResponse, ExtFile, Localization, UploadConfig } from "../../core";
-import { DropzoneActions } from "../dropzone/components/dropzone/DropzoneProps";
-import { MaterialButtonProps } from "../material-button/MaterialButtonProps";
+import { ValidateFileResponse, ExtFile, Localization, UploadConfig } from "../core";
+import { ActionButtons } from "../Dropzone/components/dropzone/DropzoneProps";
+import { MaterialButtonProps } from "../MaterialButton/MaterialButtonProps";
 
 interface InputButtonFullProps {
     /**
@@ -116,7 +116,7 @@ interface InputButtonFullProps {
           This buttons triggresthe common opertions of the component such as
           clean, upload, abort and delete all.
      */
-    actionButtons?: DropzoneActions;
+    actionButtons?: ActionButtons;
     // ADD OR REPLACE
     /**
      * The behaviour when new files are selected or dropped
diff --git a/src/files-ui/components/file-input-button/index.ts b/src/files-ui/FileInputButton/index.ts
similarity index 100%
rename from src/files-ui/components/file-input-button/index.ts
rename to src/files-ui/FileInputButton/index.ts
diff --git a/src/files-ui/components/file-mosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx b/src/files-ui/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
similarity index 97%
rename from src/files-ui/components/file-mosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
rename to src/files-ui/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
index 55f4935b34ff943369fa03962f8565d40c0a6fc5..18bda30f2bbb4bc83c59a50da5d8723b021c13ca 100644
--- a/src/files-ui/components/file-mosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
+++ b/src/files-ui/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
@@ -1,5 +1,6 @@
 import * as React from "react";
-import { ImagePreview } from "../../../previews";
+import ImagePreview from "../../../ImagePreview/ImagePreview";
+
 interface FileMosaicImageLayerProps {
   /**
    * The image source
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss b/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
rename to src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx b/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
similarity index 99%
rename from src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
index 2c8359f01623848c496c8034d9f7d044d059b012..c6c4bdb23aac113206101347672a38c6c589c78e 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
+++ b/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../../../core";
 import { Cancel } from "../../../icons";
 import FileMosaicStatus from "../FileMosaicStatus/FileMosaicStatus";
 import { FileMosaicInfoLayerProps } from "./FileMosaicInfoLayerProps";
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts b/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
similarity index 80%
rename from src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
rename to src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
index c4ad738845ec57e4b6a15027dd9385db8de820eb..c141ae75822cd4a7f188c7a44b81bee9cf2c6910 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
+++ b/src/files-ui/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../../core";
+import { Localization, UPLOADSTATUS } from "../../../core";
 
 export type FileMosaicInfoLayerProps = {
     valid: boolean | null | undefined;
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss b/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
rename to src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx b/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayer.tsx
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts b/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
similarity index 90%
rename from src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
rename to src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
index d1858a20c978cbc73d35af42a89d2f7492cc3490..ed3f3dd442f410663f0c17a4f863be567b205aa1 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
+++ b/src/files-ui/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../../core";
+import { Localization, UPLOADSTATUS } from "../../../core";
 
 export interface FileMosaicMainLayerProps {
     darkMode?: boolean;
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicName/FileMosaicName.tsx b/src/files-ui/FileMosaic/components/FileMosaicName/FileMosaicName.tsx
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicName/FileMosaicName.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicName/FileMosaicName.tsx
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicSize/FileMosaicSize.scss b/src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicSize/FileMosaicSize.scss
rename to src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicSize/FileMosaicSize.tsx b/src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicSize/FileMosaicSize.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicSize/FileMosaicSize.tsx
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.scss b/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.scss
rename to src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx b/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
similarity index 99%
rename from src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
index 66dd014627d2163f8ce4678a104e01ef2cf2fa4d..7cccfd599c4c723e564f02585abc1900ef0cac19 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
+++ b/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
@@ -3,7 +3,7 @@ import * as React from "react";
 import { CheckCircle, CloudDone, DoDisturb, UploadError } from "../../../icons";
 import { FileMosaicStatusProps } from "./FileMosaicStatusProps";
 import "./FileMosaicStatus.scss";
-import { FileItemLocalizerSelector, LocalLabels } from "../../../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../../../core";
 
 const FileMosaicStatus: React.FC<FileMosaicStatusProps> = (
   props: FileMosaicStatusProps
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts b/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
similarity index 88%
rename from src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
rename to src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
index e449be638a27d7a09ddf7628d8a8d2c9c23e7743..b439eaa5bf7fac14fe16510fda89c7a206a435a7 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
+++ b/src/files-ui/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../../core";
+import { Localization, UPLOADSTATUS } from "../../../core";
 
 
 export interface FileMosaicStatusProps {
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
rename to src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
similarity index 97%
rename from src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
index c288bad7aa4e4e643d9f209a7081df3c5188e87a..f12ab5ebf913fd65a378b57b0ca74094933f0bf9 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
+++ b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
@@ -1,16 +1,15 @@
 import * as React from "react";
 import { FileMosaicUploadLayerProps } from "./FileMosaicUploadLayerProps";
 import "./FileMosaicUploadLayer.scss";
-import { UPLOADSTATUS } from "../../../../core";
-
+import { UPLOADSTATUS } from "../../../core";
 import {
+  PreparingStatus,
+  UploadingStatus,
   AbortedStatus,
   EmptyStatus,
   ErrorStatus,
-  PreparingStatus,
   SuccessStatus,
-  UploadingStatus,
-} from "../../../file-status";
+} from "../../../FileStatus";
 
 const FileMosaicUploadLayer: React.FC<FileMosaicUploadLayerProps> = (
   props: FileMosaicUploadLayerProps
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
rename to src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.scss
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
similarity index 99%
rename from src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
rename to src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
index 8ae7926c8bdfb788d65f0a1cbca2903eb2d18c3c..4c5674e0396d4979c535e72bfb9e871ae964f08d 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
+++ b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
@@ -6,7 +6,7 @@ import {
   FileItemLocalizerSelector,
   LocalLabels,
   UPLOADSTATUS,
-} from "../../../../core";
+} from "../../../core";
 import { CheckCircle, CloudDone, UploadError } from "../../../icons";
 import { DynamicLoader } from "../../../loader";
 
diff --git a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
similarity index 84%
rename from src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
rename to src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
index 69859573a3a2c89cb835e09e4ba623903d24380e..5d1fb28b79e6bd0e400a86972894cbe01ef19c4b 100644
--- a/src/files-ui/components/file-mosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
+++ b/src/files-ui/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../../core";
+import { Localization, UPLOADSTATUS } from "../../../core";
 
 export interface FileMosaicUploadLayerPropsMap {
     visible?: boolean;
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/Layer.scss b/src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/file-mosaic-layer/Layer.scss
rename to src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.scss
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/Layer.tsx b/src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.tsx
similarity index 94%
rename from src/files-ui/components/file-mosaic/components/file-mosaic-layer/Layer.tsx
rename to src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.tsx
index 2ec545930eb6b1d3ef4f614fbc8bb06a743c0120..652658ce5bb2657ddb2dd097b936bbf6360ea849 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/Layer.tsx
+++ b/src/files-ui/FileMosaic/components/file-mosaic-layer/Layer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { addClassName } from "../../../../core";
+import { addClassName } from "../../../core";
 import { OverridableComponentProps } from "../../../overridable";
 import "./Layer.scss";
 
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/LayerContainer.scss b/src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/file-mosaic-layer/LayerContainer.scss
rename to src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/LayerContainer.tsx b/src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
similarity index 94%
rename from src/files-ui/components/file-mosaic/components/file-mosaic-layer/LayerContainer.tsx
rename to src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
index 3509ae013d3d8ee422cae7b097207a001a22f9f5..83f6a8c275002878c368a3889d5353a18d9fe7e1 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic-layer/LayerContainer.tsx
+++ b/src/files-ui/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { addClassName } from "../../../../core";
+import { addClassName } from "../../../core";
 import { OverridableComponentProps } from "../../../overridable";
 import "./LayerContainer.scss";
 
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss b/src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.scss
similarity index 100%
rename from src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.scss
rename to src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.scss
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx b/src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.tsx
similarity index 95%
rename from src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx
rename to src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.tsx
index 2113dabba44a4ec02fb080d9005f04aad969a23d..45094d1e270193dbf6dfe6b360abc06a0645f118 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaic.tsx
+++ b/src/files-ui/FileMosaic/components/file-mosaic/FileMosaic.tsx
@@ -4,8 +4,7 @@ import {
   fileSizeFormater,
   getLocalFileItemData,
   Localization,
-  //handleClickUtil,
-} from "../../../../core";
+} from "../../../core";
 import "./FileMosaic.scss";
 import "./../../../icons/IconStyles.scss";
 import { FileMosaicProps } from "./FileMosaicProps";
@@ -13,17 +12,15 @@ import LayerContainer from "../file-mosaic-layer/LayerContainer";
 import Layer from "../file-mosaic-layer/Layer";
 import FileMosaicName from "../FileMosaicName/FileMosaicName";
 import FileMosaicUploadLayer from "../FileMosaicUploadLayer/FileMosaicUploadLayer";
-import useFileMosaicInitializer from "../../hooks/useFileMosaicInitializer";
 import FileMosaicImageLayer from "../FIleMosaicImageLayer/FileMosaicImageLayer";
-import { useIsUploading } from "../../hooks/useIsUploading";
 import { Tooltip } from "../../../tooltip";
 
 import FileMosaicInfoLayer from "../FileMosaicInfoLayer/FileMosaicInfoLayer";
-import useProgress from "../../hooks/useProgress";
-import DownloadHidden from "../../../download-hidden/DownloadHidden";
+import DownloadHidden from "../../../DownloadHidden/DownloadHidden";
 import FileMosaicMainLayer from "../FileMosaicMainLayer.tsx/FileMosaicMainLayer";
-import { FilesUiContext } from "../../../../FilesUiProvider/FilesUiContext";
-import { handleClickUtil } from "../../../../files-ui-react/utils";
+import { FilesUiContext } from "../../../FilesUiProvider/FilesUiContext";
+import { handleClickUtil } from "../../../utils";
+import { useProgress, useFileMosaicInitializer, useIsUploading } from "../../../hooks";
 
 const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
   const {
diff --git a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaicProps.ts b/src/files-ui/FileMosaic/components/file-mosaic/FileMosaicProps.ts
similarity index 98%
rename from src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaicProps.ts
rename to src/files-ui/FileMosaic/components/file-mosaic/FileMosaicProps.ts
index 2d78610d3f72a1e18ee3428aec6fcab9db5f2fd5..3e4ec49f69a6796bd9aa10518a47a51aa3745c7b 100644
--- a/src/files-ui/components/file-mosaic/components/file-mosaic/FileMosaicProps.ts
+++ b/src/files-ui/FileMosaic/components/file-mosaic/FileMosaicProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../../core";
+import { Localization, UPLOADSTATUS } from "../../../core";
 import { OverridableComponentProps } from "../../../overridable";
 
 export interface FileMosaicPropsMap extends OverridableComponentProps {
diff --git a/src/files-ui/FileMosaic/index.ts b/src/files-ui/FileMosaic/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ffac68e1c543b7eba372a28e7dbc811e6440fa91
--- /dev/null
+++ b/src/files-ui/FileMosaic/index.ts
@@ -0,0 +1,11 @@
+
+export { default as FileMosaic } from "./components/file-mosaic/FileMosaic";
+export * from "./components/file-mosaic/FileMosaic";
+
+
+export type { FileMosaicProps } from "./components/file-mosaic/FileMosaicProps";
+
+export { default as FileMosaicStatus } from "./components/FileMosaicStatus/FileMosaicStatus";
+export * from "./components/FileMosaicStatus/FileMosaicStatus";
+
+export type {FileMosaicInfoLayerProps} from "./components/FileMosaicInfoLayer/FileMosaicInfoLayerProps";
\ No newline at end of file
diff --git a/src/files-ui/components/file-status/AbortedStatus.tsx b/src/files-ui/FileStatus/AbortedStatus.tsx
similarity index 90%
rename from src/files-ui/components/file-status/AbortedStatus.tsx
rename to src/files-ui/FileStatus/AbortedStatus.tsx
index f195e8d95de9ab794dbeda164d37bc17459eb449..ecd235def5649eec92df70d8acf68c202b587bb5 100644
--- a/src/files-ui/components/file-status/AbortedStatus.tsx
+++ b/src/files-ui/FileStatus/AbortedStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../core";
 import { DoDisturb } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface AbortedStatusProps extends FileStatusProps {}
diff --git a/src/files-ui/components/file-status/EmptyStatus.tsx b/src/files-ui/FileStatus/EmptyStatus.tsx
similarity index 100%
rename from src/files-ui/components/file-status/EmptyStatus.tsx
rename to src/files-ui/FileStatus/EmptyStatus.tsx
diff --git a/src/files-ui/components/file-status/ErrorStatus.tsx b/src/files-ui/FileStatus/ErrorStatus.tsx
similarity index 91%
rename from src/files-ui/components/file-status/ErrorStatus.tsx
rename to src/files-ui/FileStatus/ErrorStatus.tsx
index e930203c62556e7baa55443ad821c3a981300e80..0d7b0fb0609ddae02f13c372a8ae9c039356e30a 100644
--- a/src/files-ui/components/file-status/ErrorStatus.tsx
+++ b/src/files-ui/FileStatus/ErrorStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../core";
 import { Clear } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface ErrorStatusProps extends FileStatusProps {}
diff --git a/src/files-ui/components/file-status/FileStatusProps.ts b/src/files-ui/FileStatus/FileStatusProps.ts
similarity index 66%
rename from src/files-ui/components/file-status/FileStatusProps.ts
rename to src/files-ui/FileStatus/FileStatusProps.ts
index 442c799b44da6b29d2bee336182cf3d29455e87b..f73e560b94ba97742402963703cada93ccddd766 100644
--- a/src/files-ui/components/file-status/FileStatusProps.ts
+++ b/src/files-ui/FileStatus/FileStatusProps.ts
@@ -1,4 +1,4 @@
-import { Localization } from "../../core";
+import { Localization } from "../core";
 
 export type FileStatusProps = {
     localization?: Localization;
diff --git a/src/files-ui/components/file-status/PreparingStatus.tsx b/src/files-ui/FileStatus/PreparingStatus.tsx
similarity index 91%
rename from src/files-ui/components/file-status/PreparingStatus.tsx
rename to src/files-ui/FileStatus/PreparingStatus.tsx
index ba5e813c837b3b14c4dae4c4795e28cd18a8cb04..1ceceae9b07c640692002a8144ebbaa7bde4f883 100644
--- a/src/files-ui/components/file-status/PreparingStatus.tsx
+++ b/src/files-ui/FileStatus/PreparingStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../core";
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
 import { FileStatusProps } from "./FileStatusProps";
 
diff --git a/src/files-ui/components/file-status/SuccessStatus.tsx b/src/files-ui/FileStatus/SuccessStatus.tsx
similarity index 91%
rename from src/files-ui/components/file-status/SuccessStatus.tsx
rename to src/files-ui/FileStatus/SuccessStatus.tsx
index 76eaf5ab6a88c3d63176383b486c5bfa367cf149..c0d4c7bdcd27ce06a21fc9843c2a957489d9c22a 100644
--- a/src/files-ui/components/file-status/SuccessStatus.tsx
+++ b/src/files-ui/FileStatus/SuccessStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../core";
 import { CheckCircle } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface SuccessStatusProps extends FileStatusProps {}
diff --git a/src/files-ui/components/file-status/UploadingStatus.tsx b/src/files-ui/FileStatus/UploadingStatus.tsx
similarity index 94%
rename from src/files-ui/components/file-status/UploadingStatus.tsx
rename to src/files-ui/FileStatus/UploadingStatus.tsx
index 98f20d0785627347bace70a853a3ee0a3e624863..c53d6f80b42fc98ea9778756245a2122633f37d0 100644
--- a/src/files-ui/components/file-status/UploadingStatus.tsx
+++ b/src/files-ui/FileStatus/UploadingStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "../core";
 import { DynamicLoader } from "../loader";
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
 import { FileStatusProps } from "./FileStatusProps";
diff --git a/src/files-ui/components/file-status/index.ts b/src/files-ui/FileStatus/index.ts
similarity index 100%
rename from src/files-ui/components/file-status/index.ts
rename to src/files-ui/FileStatus/index.ts
diff --git a/src/files-ui/components/previews/FullScreen/FullScreen.scss b/src/files-ui/FullScreen/FullScreen.scss
similarity index 100%
rename from src/files-ui/components/previews/FullScreen/FullScreen.scss
rename to src/files-ui/FullScreen/FullScreen.scss
diff --git a/src/files-ui/components/previews/FullScreen/FullScreen.tsx b/src/files-ui/FullScreen/FullScreen.tsx
similarity index 97%
rename from src/files-ui/components/previews/FullScreen/FullScreen.tsx
rename to src/files-ui/FullScreen/FullScreen.tsx
index 64882e7106bba060c0788a830ee0f667cd3dc777..077fa13d38e0a13a50c191d252903b93584e6094 100644
--- a/src/files-ui/components/previews/FullScreen/FullScreen.tsx
+++ b/src/files-ui/FullScreen/FullScreen.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { Clear } from "../../icons";
+import { Clear } from "../icons";
 import { FullScreenProps } from "./FullScreenProps";
 import "./FullScreen.scss";
 const FullScreen: React.FC<FullScreenProps> = (props: FullScreenProps) => {
diff --git a/src/files-ui/components/previews/FullScreen/FullScreenProps.ts b/src/files-ui/FullScreen/FullScreenProps.ts
similarity index 89%
rename from src/files-ui/components/previews/FullScreen/FullScreenProps.ts
rename to src/files-ui/FullScreen/FullScreenProps.ts
index 502fb8f126be890621eeb67a1811aaf685281722..6a6258e77443e2803aa51570b42a24338d860e8e 100644
--- a/src/files-ui/components/previews/FullScreen/FullScreenProps.ts
+++ b/src/files-ui/FullScreen/FullScreenProps.ts
@@ -1,4 +1,4 @@
-import { OverridableComponentProps } from "../../overridable";
+import { OverridableComponentProps } from "../overridable";
 
 
 export interface FullScreenPropsMap extends OverridableComponentProps {
diff --git a/src/files-ui/components/previews/ImagePreview/ImagePreview.scss b/src/files-ui/ImagePreview/ImagePreview.scss
similarity index 100%
rename from src/files-ui/components/previews/ImagePreview/ImagePreview.scss
rename to src/files-ui/ImagePreview/ImagePreview.scss
diff --git a/src/files-ui/components/previews/ImagePreview/ImagePreview.tsx b/src/files-ui/ImagePreview/ImagePreview.tsx
similarity index 97%
rename from src/files-ui/components/previews/ImagePreview/ImagePreview.tsx
rename to src/files-ui/ImagePreview/ImagePreview.tsx
index 55b83f15c493c62c0ee5b56e806387cf2ad88bcd..23c9b2e9bd4fc17d0b0deef99a9e09291189e18a 100644
--- a/src/files-ui/components/previews/ImagePreview/ImagePreview.tsx
+++ b/src/files-ui/ImagePreview/ImagePreview.tsx
@@ -3,8 +3,8 @@ import {
   ImagePreviewDefaultProps,
   ImagePreviewProps,
 } from "./ImagePreviewProps";
-import { mergeProps } from "../../overridable";
-import { getImageOrientation, readAsDataURL } from "../../../core";
+import { mergeProps } from "../overridable";
+import { getImageOrientation, readAsDataURL } from "../core";
 
 import "./ImagePreview.scss";
 
diff --git a/src/files-ui/components/previews/ImagePreview/ImagePreviewProps.ts b/src/files-ui/ImagePreview/ImagePreviewProps.ts
similarity index 97%
rename from src/files-ui/components/previews/ImagePreview/ImagePreviewProps.ts
rename to src/files-ui/ImagePreview/ImagePreviewProps.ts
index 1fbc259d26c265888847a1e94fd4fccd712379f9..e6d563c191c7e01e141e2b77f8aaa73b96939dd0 100644
--- a/src/files-ui/components/previews/ImagePreview/ImagePreviewProps.ts
+++ b/src/files-ui/ImagePreview/ImagePreviewProps.ts
@@ -1,4 +1,4 @@
-import { OverridableComponentProps } from "../../overridable";
+import { OverridableComponentProps } from "../overridable";
 
 
 
diff --git a/src/files-ui/components/input-hidden/InputHidden.tsx b/src/files-ui/InputHidden/InputHidden.tsx
similarity index 100%
rename from src/files-ui/components/input-hidden/InputHidden.tsx
rename to src/files-ui/InputHidden/InputHidden.tsx
diff --git a/src/files-ui/components/input-hidden/InputHiddenProps.ts b/src/files-ui/InputHidden/InputHiddenProps.ts
similarity index 100%
rename from src/files-ui/components/input-hidden/InputHiddenProps.ts
rename to src/files-ui/InputHidden/InputHiddenProps.ts
diff --git a/src/files-ui/components/material-button/MaterialButton.scss b/src/files-ui/MaterialButton/MaterialButton.scss
similarity index 100%
rename from src/files-ui/components/material-button/MaterialButton.scss
rename to src/files-ui/MaterialButton/MaterialButton.scss
diff --git a/src/files-ui/components/material-button/MaterialButton.tsx b/src/files-ui/MaterialButton/MaterialButton.tsx
similarity index 92%
rename from src/files-ui/components/material-button/MaterialButton.tsx
rename to src/files-ui/MaterialButton/MaterialButton.tsx
index ba5be5e22bd62545d2b5b9c9ad36892b25d8d936..14f7f3c7ac262c9e6c881cc1fb870511bfb906eb 100644
--- a/src/files-ui/components/material-button/MaterialButton.tsx
+++ b/src/files-ui/MaterialButton/MaterialButton.tsx
@@ -2,9 +2,10 @@ import * as React from "react";
 import useMaterialButtonClassName from "./hooks/useMaterialButtonClassName";
 import { MaterialButtonProps } from "./MaterialButtonProps";
 import "./MaterialButton.scss";
-import { createRippleButton } from "../../files-ui-react/utils";
-import { addClassName } from "../../core";
-import { FilesUiContext } from "../../FilesUiProvider/FilesUiContext";
+import { addClassName } from "../core";
+import { FilesUiContext } from "../FilesUiProvider/FilesUiContext";
+import { createRippleButton } from "../utils";
+
 
 const MaterialButton: React.FC<MaterialButtonProps> = (
   props: MaterialButtonProps
diff --git a/src/files-ui/components/material-button/MaterialButtonProps.ts b/src/files-ui/MaterialButton/MaterialButtonProps.ts
similarity index 100%
rename from src/files-ui/components/material-button/MaterialButtonProps.ts
rename to src/files-ui/MaterialButton/MaterialButtonProps.ts
diff --git a/src/files-ui/components/material-button/hooks/useMaterialButtonClassName.ts b/src/files-ui/MaterialButton/hooks/useMaterialButtonClassName.ts
similarity index 100%
rename from src/files-ui/components/material-button/hooks/useMaterialButtonClassName.ts
rename to src/files-ui/MaterialButton/hooks/useMaterialButtonClassName.ts
diff --git a/src/files-ui/components/material-button/index.ts b/src/files-ui/MaterialButton/index.ts
similarity index 100%
rename from src/files-ui/components/material-button/index.ts
rename to src/files-ui/MaterialButton/index.ts
diff --git a/src/files-ui/components/material-button/utils/MaterialButtonStyleManager.ts b/src/files-ui/MaterialButton/utils/MaterialButtonStyleManager.ts
similarity index 99%
rename from src/files-ui/components/material-button/utils/MaterialButtonStyleManager.ts
rename to src/files-ui/MaterialButton/utils/MaterialButtonStyleManager.ts
index c9c8876a3b95db0e33e301986539ed57481db5da..985bb494f703dc6c67f099791d373040dde5e164 100644
--- a/src/files-ui/components/material-button/utils/MaterialButtonStyleManager.ts
+++ b/src/files-ui/MaterialButton/utils/MaterialButtonStyleManager.ts
@@ -1,4 +1,4 @@
-import { asureColor, colourNameToHex, completeAsureColor, darkerColor } from "../../../core";
+import { asureColor, colourNameToHex, completeAsureColor, darkerColor } from "../../core";
 import { DynamicSheet, DynamicSheetRule } from "@dynamicss/dynamicss";
 
 export default class MaterialButtonStyleManager {
diff --git a/src/files-ui/components/previews/VideoPreview/VideoPreview.scss b/src/files-ui/VideoPreview/VideoPreview.scss
similarity index 100%
rename from src/files-ui/components/previews/VideoPreview/VideoPreview.scss
rename to src/files-ui/VideoPreview/VideoPreview.scss
diff --git a/src/files-ui/components/previews/VideoPreview/VideoPreview.tsx b/src/files-ui/VideoPreview/VideoPreview.tsx
similarity index 100%
rename from src/files-ui/components/previews/VideoPreview/VideoPreview.tsx
rename to src/files-ui/VideoPreview/VideoPreview.tsx
diff --git a/src/files-ui/components/previews/VideoPreview/VideoPreviewProps.ts b/src/files-ui/VideoPreview/VideoPreviewProps.ts
similarity index 88%
rename from src/files-ui/components/previews/VideoPreview/VideoPreviewProps.ts
rename to src/files-ui/VideoPreview/VideoPreviewProps.ts
index 810fec3b12ec7f99d889a37a5797245852abadbb..516eae7a69031b5f8578cfff2ddc002ce4823bd9 100644
--- a/src/files-ui/components/previews/VideoPreview/VideoPreviewProps.ts
+++ b/src/files-ui/VideoPreview/VideoPreviewProps.ts
@@ -1,4 +1,4 @@
-import { OverridableComponentProps } from "../../overridable";
+import { OverridableComponentProps } from "../overridable";
 
 
 export interface VideoPreviewPropsMap extends OverridableComponentProps {
diff --git a/src/files-ui/components/dropzone/components/DropzoneActionButtons/DropzoneActionButtons.tsx b/src/files-ui/components/dropzone/components/DropzoneActionButtons/DropzoneActionButtons.tsx
deleted file mode 100644
index 4612283596fb7c251e19b46cd61778bed288fbe7..0000000000000000000000000000000000000000
--- a/src/files-ui/components/dropzone/components/DropzoneActionButtons/DropzoneActionButtons.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import * as React from "react";
-interface ActionButtonsProps {}
-const ActionButtons: React.FC<ActionButtonsProps> = (
-  props: ActionButtonsProps
-) => {
-  return <div>ActionButtons</div>;
-};
-export default ActionButtons;
diff --git a/src/files-ui/components/dropzone/makeListOfActionButtons.ts b/src/files-ui/components/dropzone/makeListOfActionButtons.ts
deleted file mode 100644
index b26efc228d6ae5acb97ad47dca48de615a7ce03f..0000000000000000000000000000000000000000
--- a/src/files-ui/components/dropzone/makeListOfActionButtons.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { ActionButtonItem } from "./components/dropzone/DropzoneProps";
-
-/**
- * 
- * @param uploadButton upload action button props
- * @param abortButton abort action button props
- * @param deleteButton delete action button props
- * @param other array of other custom action buttons props
- * @returns 
- */
-export const makeListOfActionButtonItems = (
-  uploadButton: ActionButtonItem | undefined,
-  abortButton: ActionButtonItem | undefined,
-  deleteButton: ActionButtonItem | undefined,
-  cleanButton: ActionButtonItem | undefined
-): [ActionButtonItem[], ActionButtonItem[]] => {
-  let listOfTopButtons: ActionButtonItem[] = [];
-  let listOfBottomButtons: ActionButtonItem[] = [];
- /*  if (uploadButton) {
-    uploadButton.position === "top"
-      ? listOfTopButtons.push(uploadButton)
-      : listOfBottomButtons.push(uploadButton);
-  }
-  if (abortButton) {
-    abortButton.position === "top"
-      ? listOfTopButtons.push(abortButton)
-      : listOfBottomButtons.push(abortButton);
-  }
-  if (deleteButton) {
-    deleteButton.position === "top"
-      ? listOfTopButtons.push(deleteButton)
-      : listOfBottomButtons.push(deleteButton);
-  }
-  other?.forEach((actionButton) => {
-    actionButton.position === "top"
-      ? listOfTopButtons.push(actionButton)
-      : listOfBottomButtons.push(actionButton);
-  }); */
-
-  return [listOfTopButtons, listOfBottomButtons];
-};
\ No newline at end of file
diff --git a/src/files-ui/components/dropzone/useDropzoneClassName.ts b/src/files-ui/components/dropzone/useDropzoneClassName.ts
deleted file mode 100644
index fdc340d67a46f6526b99a74995aff39c1f5f7c5d..0000000000000000000000000000000000000000
--- a/src/files-ui/components/dropzone/useDropzoneClassName.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { DynamicSheet, DynamicSheetRule, DynamiCSS } from "@dynamicss/dynamicss";
-import * as React from "react";
-import { completeAsureColor } from "../../core";
-import { DEFAULT_BORDER_RADIUS } from "./components/dropzone/DropzoneProps";
-
-export default function useDropzoneClassName(
-    dropzoneId: string,
-    className: string | undefined,
-    //isDragging: boolean,
-    //header: boolean | undefined = false,
-    //footer: boolean | undefined = false,
-    color: string | undefined,
-    //borderRadius: string | number | undefined,
-    background: string | undefined,
-    minHeight: string | number | undefined
-): [string | undefined, string | undefined, string | undefined, string | undefined] {
-    //console.log("useDropzoneClassName", className, isDragging, header, footer, color, background, minHeight);
-    const finalDropzoneId: string = (color === undefined && background === undefined && minHeight === undefined) ? "default" : dropzoneId.replaceAll(":", "_");
-
-    const baseClassName: string = "fui-dropzone-root fui-dropzone-border";
-
-    const [idStyles, setIdStyles] = React.useState<string>("");
-    const [styleInjected, setStyleInjected] = React.useState<boolean>(false);
-    const [finalClassName, setFinalClassName] = React.useState<string | undefined>(undefined);
-    const [finalClassNameHeader, setFinalClassNameHeader] = React.useState<string | undefined>(undefined);
-    const [finalClassNameFooter, setFinalClassNameFooter] = React.useState<string | undefined>(undefined);
-    const [finalClassNameDisabled, setFinalClassNameDisabled] = React.useState<string | undefined>(undefined);
-
-    //const [offset, setOffset] = React.useState<number>(0);
-
-    const makeClassName = (
-        className: string | undefined,
-        //isDragging: boolean,
-        // offset: number,
-        color: string | undefined,
-        //borderRadius: string | number | undefined,
-        background: string | undefined,
-        minHeight: string | number | undefined
-
-    ) => {
-        let finalClassName: string = baseClassName;
-
-        // better to come back to the custom stylesheet for each dropzone with the unique id
-
-        let styleSheet: DynamicSheet = makeDynamicDropzoneStyleSheet(
-            finalDropzoneId,
-            // offset,
-            //isDragging,
-            color,
-            background,
-            minHeight,
-            //borderRadius
-        );
-        let idStyle: string = "";
-
-
-        if (!styleInjected) {
-            idStyle = DynamiCSS.insertStyleSheet(styleSheet);
-            setIdStyles(idStyle);
-            if (idStyle !== "")
-                setStyleInjected(true);
-        } else {
-            //already a stylesheet associated
-            DynamiCSS.editStyleSheet(idStyles, styleSheet.sheetRules || []);
-        }
-
-        finalClassName += ` files-ui-dropzone-extra-${finalDropzoneId}`;
-
-        if (className) {
-            finalClassName = `${finalClassName} ${className}`;
-        }
-        /* if (isDragging) {
-            finalClassName = `${finalClassName} fui-hide-border`;
-        } */
-
-        setFinalClassName(finalClassName);
-        setFinalClassNameHeader(`files-ui-header-border-rd-${finalDropzoneId}`);
-        setFinalClassNameFooter(`files-ui-footer-border-rd-top-bg-color-${finalDropzoneId}`);
-        setFinalClassNameDisabled(`files-ui-disabled-layer-color-${finalDropzoneId}`);
-    }
-
-    React.useEffect(() => {
-        makeClassName(className, 
-            //isDragging,
-            //offset, 
-            color,
-            // borderRadius, 
-            background, minHeight);
-        // eslint-disable-next-line
-    }, [className, 
-        //isDragging,
-        // offset, 
-        color,
-        //borderRadius, 
-        background, minHeight]);
-
-    return [finalClassName, finalClassNameHeader, finalClassNameFooter, finalClassNameDisabled];
-}
-
-
-
-
-const makeDynamicDropzoneStyleSheet = (
-    dropzoneId: string,
-    // offset: number,
-    //isDragging: boolean,
-    color: string | undefined,
-    background: string | undefined,
-    minHeight: string | number | undefined,
-    // borderRadius: string | number | undefined,
-): DynamicSheet => {
-
-    const rootColorBorderStyle: DynamicSheetRule = {
-        className: `files-ui-dropzone-extra-${dropzoneId}`,
-        rules: {
-            color: completeAsureColor(color),
-            border: `1px dashed ${completeAsureColor(color)}`,
-            borderRadius: DEFAULT_BORDER_RADIUS,
-            background: background,
-            minHeight: typeof minHeight === "number" ? `${minHeight}px` : minHeight,
-        },
-    };
-
-    const rootColorBorderStyleHideBorder: DynamicSheetRule = {
-        className: `files-ui-root-border-hide`,
-        rules: {
-            borderColor: "transparent",
-        },
-    }
-    const headerBorderStyle: DynamicSheetRule = {
-        className: `files-ui-header-border-rd-${dropzoneId}`,
-        rules: {
-            "border-top-left-radius": DEFAULT_BORDER_RADIUS,
-            "border-top-right-radius": DEFAULT_BORDER_RADIUS,
-        },
-    };
-    const footerBorderStyle: DynamicSheetRule = {
-        className: `files-ui-footer-border-rd-top-bg-color-${dropzoneId}`,
-        rules: {
-            "border-bottom-left-radius": DEFAULT_BORDER_RADIUS,
-            "border-bottom-right-radius": DEFAULT_BORDER_RADIUS,
-            background: completeAsureColor(color, 0.129),
-            borderTop: `1px dotted ${completeAsureColor(color)}`
-
-        },
-    };
-    const disabledLayerStyle: DynamicSheetRule = {
-        className: `files-ui-disabled-layer-color-${dropzoneId}`,
-        rules: {
-            borderRadius: DEFAULT_BORDER_RADIUS,
-            background: completeAsureColor(color, 0.38),
-        }
-    }
-    const sheetRules: DynamicSheetRule[] =
-        [
-            rootColorBorderStyle,
-            rootColorBorderStyleHideBorder, 
-            headerBorderStyle, 
-            footerBorderStyle, 
-            disabledLayerStyle
-        ];
-
-
-    return {
-        id: "files-dropzone-ui-style-id-" + dropzoneId,
-        sheetRules: sheetRules
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/components/file-mosaic/index.ts b/src/files-ui/components/file-mosaic/index.ts
deleted file mode 100644
index d0cb45371f8f3ef0aa92ea17b5c2854069ac3b07..0000000000000000000000000000000000000000
--- a/src/files-ui/components/file-mosaic/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-
-export { default as FileMosaic } from "./components/file-mosaic/FileMosaic";
-export * from "./components/file-mosaic/FileMosaic";
-
-
-export type { FileMosaicProps } from "./components/file-mosaic/FileMosaicProps";
diff --git a/src/files-ui/components/index.ts b/src/files-ui/components/index.ts
deleted file mode 100644
index 3356996ef2650fe53854a2dbb3d513c9e73128d6..0000000000000000000000000000000000000000
--- a/src/files-ui/components/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export { Avatar } from "./avatar";
-export * from "./avatar";
-
-export { Dropzone } from "./dropzone";
-export * from "./dropzone";
-
-export { FileInputButton } from "./file-input-button";
-export * from "./file-input-button";
-
-
-// internal components
-
-export { MaterialButton } from "./material-button";
-export * from "./material-button";
\ No newline at end of file
diff --git a/src/files-ui/components/page-template/PageTemplate.tsx b/src/files-ui/components/page-template/PageTemplate.tsx
deleted file mode 100644
index 395de66754755dfc6796b5be4615efbce0b8194b..0000000000000000000000000000000000000000
--- a/src/files-ui/components/page-template/PageTemplate.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as React from "react";
-import { PageTemplateProps } from "./PageTemplateProps";
-
-const PageTemplate:React.FC<PageTemplateProps> = (props:PageTemplateProps) =>{
-    return(
-        <div>
-        
-        </div>
-    )
-}
-export default PageTemplate;
\ No newline at end of file
diff --git a/src/files-ui/components/page-template/PageTemplateProps.ts b/src/files-ui/components/page-template/PageTemplateProps.ts
deleted file mode 100644
index 55eb9a35ee190ed169e49cbb60d2854b91a82316..0000000000000000000000000000000000000000
--- a/src/files-ui/components/page-template/PageTemplateProps.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface PageTemplateProps{
-    
-}
\ No newline at end of file
diff --git a/src/files-ui/components/previews/index.ts b/src/files-ui/components/previews/index.ts
deleted file mode 100644
index b61c885c07373328fd3a4e37e63ea0b8b973658b..0000000000000000000000000000000000000000
--- a/src/files-ui/components/previews/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export { default as FullScreen } from "./FullScreen/FullScreen";
-export * from "./FullScreen/FullScreen";
-
-export { default as ImagePreview } from "./ImagePreview/ImagePreview";
-export * from "./ImagePreview/ImagePreview";
-
-export { default as VideoPreview } from "./VideoPreview/VideoPreview";
-export * from "./VideoPreview/VideoPreview";
\ No newline at end of file
diff --git a/src/files-ui/components/tooltip/index.ts b/src/files-ui/components/tooltip/index.ts
deleted file mode 100644
index 9542bdc0694e23cae689632f6a999298ae49402f..0000000000000000000000000000000000000000
--- a/src/files-ui/components/tooltip/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as Tooltip } from "./components/Tooltip";
-export * from "./components/Tooltip";
diff --git a/src/files-ui/core/color/colors.ts b/src/files-ui/core/color/colors.ts
deleted file mode 100644
index c0714f1b0d7e56ab4125a0d08e1c27321cd3b3aa..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/colors.ts
+++ /dev/null
@@ -1,231 +0,0 @@
-import { NAMED_COLORS } from "./namedColors";
-
-/**
- * Make the color into a darker color
- * @param colorInput 
- * @returns the darked color in
- */
-export const darkerColor = (colorInput: string, percentage = 25): string => {
-    let darkedColor = "";
-    const reduce = (100 - percentage) / 100;
-    let component1: number = 0;
-    let component2: number = 0;
-    let component3: number = 0;
-    if (isHexColor(colourNameToHex(colorInput))) {
-
-        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));
-        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));
-        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));
-
-        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;
-    } else {
-        if (colorInput.includes("rgba")) {
-            let slicer = colorInput.replace("rgba(", "");
-            let components: string[] = slicer.split(",");
-            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;
-            //return darkedColor;
-        } else if (colorInput.includes("rgb")) {
-
-            let slicer = colorInput.replace("rgb(", "");
-            let components: string[] = slicer.split(",");
-            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;
-            // return darkedColor;
-        }
-    }
-
-    return darkedColor;
-}
-/**
- * Make the color into a brighted color
- * @param colorInput 
- * @returns the brighted color 
- */
-export const brighterColor = (colorInput: string, percentage = 25): string => {
-    let brightedColor = "";
-    const increase = (100 + percentage) / 100;
-    let component1: number = 0;
-    let component2: number = 0;
-    let component3: number = 0;
-    if (isHexColor(colourNameToHex(colorInput))) {
-
-        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));
-        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));
-        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));
-
-        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;
-    } else {
-        if (colorInput.includes("rgba")) {
-            let slicer = colorInput.replace("rgba(", "");
-            let components: string[] = slicer.split(",");
-            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;
-            //return darkedColor;
-        } else if (colorInput.includes("rgb")) {
-
-            let slicer = colorInput.replace("rgb(", "");
-            let components: string[] = slicer.split(",");
-            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;
-            // return darkedColor;
-        }
-    }
-
-    return brightedColor;
-}
-
-/**
- * In order to managae rgba() we convert hex colors into rgba()
- * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()
- * 
- * 
- * @param colorInput color in hex or in rgb
- * @param perc percentage for RGBA() color 
- * @returns the rgba representation of a hex color
- */
-export const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {
-    let resultDefault: string = defaultColor ? defaultColor : "rgba(255, 255, 255, 0.6)";
-    if (!colorInput) {
-        return resultDefault;
-    }
-    //work only in uppercase
-    const color: string = colorInput.toUpperCase();
-    // is already a rgba color
-    if (color.includes("RGBA")) {
-        return color;
-    }
-
-    //return rbg => rgba
-    if (color.includes("RGB")) {
-        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);
-    }
-
-    // if is a hex color or named color
-    if (!isHexColor(colourNameToHex(color))) {
-        return resultDefault;
-    }
-    let resultOk: string = "";
-    //let strVar: string = "";
-    let component1: number = 0;
-    let component2: number = 0;
-    let component3: number = 0;
-    //If passed all validations, proceed to transform
-    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));
-    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));
-    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));
-    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;
-    return resultOk;
-}
-
-/**
- * Validates wheteher the color is hexadecimal css color
- * Example:  #FF56AC
- * 
- * 
- * @param colorInput the color inpt to test 
- * @returns true if the inputColor is a hexadecimal css color
- */
-export const isHexColor = (colorInput: string): boolean => {
-
-    // if first element is no '#' return default background color
-    if (colorInput.charAt(0) !== '#') {
-
-        return false;
-    }
-    // if color lenght is not exactly 7 return default
-    if (colorInput.length !== 7) {
-
-
-        return false;
-    }
-    // if one of the letters is not included in hex array return  default
-    for (let i = 1; i < colorInput.length; i++) {
-        if (!hexArray.includes(colorInput.charAt(i))) {
-
-
-            return false;
-        }
-    }
-
-    return true;
-}
-
-/**
- * Converts a named color into hexadecimal color
- * from a list of well known namd colors if found.
- * When not given returns a ""
- * When not found in the list, returns the same value given
- * @param colour the named color
- * @returns The hex representation of the color or "" or the same color
- */
-export function colourNameToHex(colour: string | undefined): string {
-    /**
-     * When not given
-     */
-    if (!colour) {
-        return "";
-    }
-    /**
-     * when named color is found
-     */
-    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {
-        return NAMED_COLORS[colour.toLocaleLowerCase()];
-    }
-    /**
-     * When the named color was not found
-     */
-
-    return colour;
-}
-
-/**
- * hexArray & decArray
- * 
- * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa
- */
-const hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
-const decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
-
-/**
- * Converts hex number in string representation to decimal number
- * 
- * 
- * @param letter the string hex number
- * @returns a decimal number
- */
-export const hexTodec = (letter: string): number => {
-    if (hexArray.includes(letter)) {
-        return decArray[hexArray.indexOf(letter)];
-    } else {
-        return 0;
-    }
-}
-
-
-/** 
- * Asure a base color. When not given or when given an incorrect color format
- * default color is this kind of grey #5d6475
- * 
- * @param color param color given by user
- * @returns returns the same color 
- */
-export const asureColor = (color?: string): string => {
-    if (color !== undefined && color !== "") {
-        return color;
-    } else {
-        return DEFAULT_FONT_COLOR;
-    }
-}
-/** 
- * Asure a base color. When not given or when given an incorrect color format
- * default color is this kind of grey #5d6475
- * 
- * @param color param color given by user
- * @returns returns the same color 
- */
-export const completeAsureColor = (color?: string, perc = 1): string => {
-
-    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);
-
-}
-
-
-
-export const DEFAULT_FONT_COLOR = "#646c7f";
\ No newline at end of file
diff --git a/src/files-ui/core/color/index.ts b/src/files-ui/core/color/index.ts
deleted file mode 100644
index 6b33c40aefc4bddf0d41bb7d19e768b27b46be09..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export { NAMED_COLORS } from "./namedColors";
-export {
-    asureColor,
-    brighterColor,
-    colourNameToHex,
-    darkerColor,
-    hexColorToRGB,
-    hexTodec,
-    isHexColor,
-    completeAsureColor
-} from "./colors";
\ No newline at end of file
diff --git a/src/files-ui/core/color/namedColors.ts b/src/files-ui/core/color/namedColors.ts
deleted file mode 100644
index 853d40ba9460247cf3e8df8fda32167a1694ec4b..0000000000000000000000000000000000000000
--- a/src/files-ui/core/color/namedColors.ts
+++ /dev/null
@@ -1,162 +0,0 @@
-import { NamedColor } from "../types/NamedColor";
-
-/**
- * The full list of named Colors provided by
- * https://htmlcolorcodes.com/es/nombres-de-los-colores/
- */
-export const NAMED_COLORS: NamedColor =
-{
-    //RED
-    indianred: "#CD5C5C",
-    lightcoral: "#F08080",
-    salmon: "#FA8072",
-    darksalmon: "#E9967A",
-    lightsalmon: "#FFA07A",
-    crimson: "#DC143C",
-    red: "#FF0000",
-    firebrick: "#B22222",
-    darkred: "#8B0000",
-    //PINK
-    pink: "#FFC0CB",
-    lightpink: "#FFB6C1",
-    hotpink: "#FF69B4",
-    deeppink: "#FF1493",
-    mediumvioletred: "#C71585",
-    palevioletred: "#DB7093",
-    //ORANGE
-    //"lightsalmon: "#FFA07A",
-    coral: "#FF7F50",
-    tomato: "#FF6347",
-    orangered: "#FF4500",
-    darkorange: "#FF8C00",
-    orange: "#FFA500",
-    //YELLOW
-    gold: "#FFD700",
-    yellow: "#FFFF00",
-    lightyellow: "#FFFFE0",
-    lemonchiffon: "#FFFACD",
-    lightgoldenrodyellow: "#FAFAD2",
-    papayawhip: "#FFEFD5",
-    moccasin: "#FFE4B5",
-    peachpuff: "#FFDAB9",
-    palegoldenrod: "#EEE8AA",
-    khaki: "#F0E68C",
-    darkkhaki: "#BDB76B",
-    //PURPLE
-    lavender: "#E6E6FA",
-    thistle: "#D8BFD8",
-    plum: "#DDA0DD",
-    violet: "#EE82EE",
-    orchid: "#DA70D6",
-    fuchsia: "#FF00FF",
-    magenta: "#FF00FF",
-    mediumorchid: "#BA55D3",
-    mediumpurple: "#9370DB",
-    rebeccapurple: "#663399",
-    blueviolet: "#8A2BE2",
-    darkviolet: "#9400D3",
-    darkorchid: "#9932CC",
-    darkmagenta: "#8B008B",
-    purple: "#800080",
-    indigo: "#4B0082",
-    slateblue: "#6A5ACD",
-    darkslateblue: "#483D8B",
-    mediumslateblue: "#7B68EE",
-    //GREEN
-    greenyellow: "#ADFF2F",
-    chartreuse: "#7FFF00",
-    lawngreen: "#7CFC00",
-    lime: "#00FF00",
-    limegreen: "#32CD32",
-    palegreen: "#98FB98",
-    lightgreen: "#90EE90",
-    mediumspringgreen: "#00FA9A",
-    springgreen: "#00FF7F",
-    mediumseagreen: "#3CB371",
-    seagreen: "#2E8B57",
-    forestgreen: "#228B22",
-    green: "#008000",
-    darkgreen: "#006400",
-    yellowgreen: "#9ACD32",
-    olivedrab: "#6B8E23",
-    olive: "#808000",
-    darkolivegreen: "#556B2F",
-    mediumaquamarine: "#66CDAA",
-    darkseagreen: "#8FBC8B",
-    lightseagreen: "#20B2AA",
-    darkcyan: "#008B8B",
-    teal: "#008080",
-    //BLUE
-    aqua: "#00FFFF",
-    cyan: "#00FFFF",
-    lightcyan: "#E0FFFF",
-    paleturquoise: "#AFEEEE",
-    aquamarine: "#7FFFD4",
-    turquoise: "#40E0D0",
-    mediumturquoise: "#48D1CC",
-    darkturquoise: "#00CED1",
-    cadetblue: "#5F9EA0",
-    steelblue: "#4682B4",
-    lightsteelblue: "#B0C4DE",
-    powderblue: "#B0E0E6",
-    lightblue: "#ADD8E6",
-    skyblue: "#87CEEB",
-    lightskyblue: "#87CEFA",
-    deepskyblue: "#00BFFF",
-    dodgerblue: "#1E90FF",
-    cornflowerblue: "#6495ED",
-    //"mediumslateblue: "#7B68EE",
-    royalblue: "#4169E1",
-    blue: "#0000FF",
-    mediumblue: "#0000CD",
-    darkblue: "#00008B",
-    navy: "#000080",
-    midnightblue: "#191970",
-    //BROWN
-    cornsilk: "#FFF8DC",
-    blanchedalmond: "#FFEBCD",
-    bisque: "#FFE4C4",
-    navajowhite: "#FFDEAD",
-    wheat: "#F5DEB3",
-    burlywood: "#DEB887",
-    tan: "#D2B48C",
-    rosybrown: "#BC8F8F",
-    sandybrown: "#F4A460",
-    goldenrod: "#DAA520",
-    darkgoldenrod: "#B8860B",
-    peru: "#CD853F",
-    chocolate: "#D2691E",
-    saddlebrown: "#8B4513",
-    sienna: "#A0522D",
-    brown: "#A52A2A",
-    maroon: "#800000",
-    //WHITE
-    white: "#FFFFFF",
-    snow: "#FFFAFA",
-    honeydew: "#F0FFF0",
-    mintcream: "#F5FFFA",
-    azure: "#F0FFFF",
-    aliceblue: "#F0F8FF",
-    ghostwhite: "#F8F8FF",
-    whitesmoke: "#F5F5F5",
-    seashell: "#FFF5EE",
-    beige: "#F5F5DC",
-    oldlace: "#FDF5E6",
-    floralwhite: "#FFFAF0",
-    ivory: "#FFFFF0",
-    antiquewhite: "#FAEBD7",
-    linen: "#FAF0E6",
-    lavenderblush: "#FFF0F5",
-    mistyrose: "#FFE4E1",
-    //GREY
-    gainsboro: "#DCDCDC",
-    lightgray: "#D3D3D3",
-    silver: "#C0C0C0",
-    darkgray: "#A9A9A9",
-    gray: "#808080",
-    dimgray: "#696969",
-    lightslategray: "#778899",
-    slategray: "#708090",
-    darkslategray: "#2F4F4F",
-    black: "#000000"
-}
\ No newline at end of file
diff --git a/src/files-ui/core/download/downloadFile.ts b/src/files-ui/core/download/downloadFile.ts
deleted file mode 100644
index 709d6e5473b0d1199b7d7923b8287d2ecc92f2ef..0000000000000000000000000000000000000000
--- a/src/files-ui/core/download/downloadFile.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export const downloadFileAnchor=async(fileName?:string, downloadUrl?:string)=>{
-
-}
-export const downloadFileXHR=async(fileName?:string, downloadUrl?:string)=>{
-
-
-}
-export const downloadFileFetch=async(fileName?:string, downloadUrl?:string)=>{
-
-
-}
-
-export const downloadAnchor=async(fileName?:string, downloadUrl?:string)=>{
-
-const anchorElement:HTMLAnchorElement = document.createElement("a");
-
-}
\ No newline at end of file
diff --git a/src/files-ui/core/file-manager/index.ts b/src/files-ui/core/file-manager/index.ts
deleted file mode 100644
index f88618e87ced064023ee4f91b8464436a3154d09..0000000000000000000000000000000000000000
--- a/src/files-ui/core/file-manager/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { extFileReconcilation } from "./reconcilation";
\ No newline at end of file
diff --git a/src/files-ui/core/file-manager/reconcilation.ts b/src/files-ui/core/file-manager/reconcilation.ts
deleted file mode 100644
index a8ec2eca769dc5ee16089ffbb68af3e35564cb51..0000000000000000000000000000000000000000
--- a/src/files-ui/core/file-manager/reconcilation.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { ExtFile, ExtFileInstance, ExtFileManager } from "../types";
-
-export const extFileReconcilation = (
-    dropzoneId: number | string | undefined,
-    extFileIncomming: ExtFile[]
-): ExtFile[] | undefined => {
-    let result: ExtFile[] = [];
-
-    let arrOfExtFiles: ExtFileInstance[] | undefined =
-        ExtFileManager.getExtFileInstanceList(dropzoneId);
-
-    // continue only if arrOfExtFiles exists
-    if (arrOfExtFiles) {
-        //different sizes means there was deleted files
-        //also can be new files to be uploaded
-        //needed an extra flag to allow add files in the middle of uploading process
-        // if new files are added, they are added to the Manager
-        // outside they were already added to the UI
-        // inside Dropzone, will be needed a .next() method for manager
-
-        // 1st allow deleted files and ignore new ones
-        // reduce the arrOfExtFileInstances array
-        // parecido a listas ligadas, iterar hasta encontrar null XD
-        let incommingTemp: ExtFile[] = [...extFileIncomming];
-        incommingTemp = incommingTemp.filter(
-            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1
-        );
-
-        console.log("reconciliation incommingTemp", incommingTemp);
-        
-
-        //different sizes not allowed
-        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {
-            return undefined;
-        }
-        for (let i = 0; i < arrOfExtFiles.length; i++) {
-            if (
-                (extFileIncomming[i].uploadStatus === undefined)
-                &&
-                (arrOfExtFiles[i].uploadStatus === "preparing")
-            ) {
-                console.log("useDropzoneFileListUpdater onCancel i", i);
-                arrOfExtFiles[i].uploadStatus = undefined;
-            }
-        }
-    }
-
-    return result;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/index.d.ts b/src/files-ui/core/index.d.ts
index a561c1ae7d85f9feff5da2ccb24944500b773474..899e9931af84c701a0ef2cfc3705c318e7aece2c 100644
--- a/src/files-ui/core/index.d.ts
+++ b/src/files-ui/core/index.d.ts
@@ -1,6 +1,6 @@
 export { DropzoneEnglish, DropzoneFrench, DropzoneItalian, DropzoneLocalizer, DropzoneLocalizerSelector, DropzonePortuguese, DropzoneRussian, DropzoneSimplifiedChinese, DropzoneSpanish, DropzoneTraditionalChinese, FileItemEnglish, FileItemFrench, FileItemItalian, FileItemLocalizer, FileItemLocalizerSelector, FileItemPortuguese, FileItemRussian, FileItemSimplifiedChinese, FileItemSpanish, FileItemTraditionalChinese, ValidateErrorEnglish, ValidateErrorFrench, ValidateErrorItalian, ValidateErrorLocalizer, ValidateErrorLocalizerSelector, ValidateErrorPortuguese, ValidateErrorRussian, ValidateErrorSimplifiedChinese, ValidateErrorSpanish, ValidateErrorTraditionalChinese } from "./localization";
 export { readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText, resizeImage, getImageOrientation } from "./reader";
-export { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip, applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, } from "./mime";
+export { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip, applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, getURLFileIcoFromNameAndType, } from "./mime";
 export type { ExtFile, Behaviour, ValidateFileResponse, ComponentLocalizer, ExtFileListMap, FileValidatorProps, FunctionLabel, LocalLabels, Localization, Method, NamedColor, ServerResponse, UploadPromiseResponse, UploadResponse, UploadConfig, UPLOADSTATUS, IconsMap } from "./types";
 export { ExtFileInstance, ExtFileManager, createUploadConfig } from "./types";
 export { extFileMock } from "./mocks";
diff --git a/src/files-ui/core/index.es.js b/src/files-ui/core/index.es.js
index cb2eaac4cf0d15513d9ac6d32420850a75ae6bba..68eb2961f37a33226757b48dfe53a28039beffd8 100644
--- a/src/files-ui/core/index.es.js
+++ b/src/files-ui/core/index.es.js
@@ -1,2 +1,2 @@
-var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},i={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},c={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},o={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},s={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},g={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},m={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},b={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},v={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},F={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},w={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},x={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},y={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},E={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":s,"FR-fr":i,"IT-it":r,"PT-pt":b,"RU-ru":g,"ZH-cn":w,"ZH-hk":y},z=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},k={"ES-es":l,"EN-en":o,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":F,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return k["ES-es"];case"EN-en":default:return k["EN-en"];case"FR-fr":return k["FR-fr"];case"IT-it":return k["IT-it"];case"PT-pt":return k["PT-pt"];case"RU-ru":return k["RU-ru"];case"ZH-cn":return k["ZH-cn"];case"ZH-hk":return k["ZH-hk"]}},M={"ES-es":d,"EN-en":u,"FR-fr":c,"IT-it":a,"PT-pt":v,"RU-ru":m,"ZH-cn":x,"ZH-hk":E},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?M[e]:M["EN-en"]},j=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.onload=function(){a(i.result)},i.readAsDataURL(e)}catch(e){n(void 0)}}))},C=function(e,t,r,a){return new Promise((function(n,i){try{var c=new FileReader;c.onload=function(){n(c.result)},c.onprogress=function(){null==r||r()},c.onerror=function(){null==a||a()},c.readAsText(e,t||"base64")}catch(e){i(void 0)}}))},B=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsBinaryString(e)}catch(e){n(void 0)}}))},T=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsArrayBuffer(e)}catch(e){n(void 0)}}))};function I(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var i=new Image;i.src=e,i.onload=function(){var c=document.createElement("canvas"),o=t,s=r,u=i.width,l=i.height;t>u&&r>l?a(e):u>l?u>o&&(l*=o/u,u=o):l>s&&(u*=s/l,l=s),c.width=u,c.height=l;var p=c.getContext("2d");p?(p.drawImage(i,0,0,u,l),a(c.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))}function L(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))}var U="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",R="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",N="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",P="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",q="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",O="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",H="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",Z="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",V="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",G="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",X="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",K="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",J="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",Q="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",$="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",W="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",Y="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",ee="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",te="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",re="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",ae="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",ne="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",ie="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ce="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",oe="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",se="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",ue="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",le="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",pe="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",de="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",fe="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",ge="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",me="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",he="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",be="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",ve="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",Fe="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",we="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",xe="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",_e="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",ye="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",Ee="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",Ae="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ze="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",ke="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",Se="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",Me="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",De="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",je="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ce="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Be="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Te="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",Ie="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",Le="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Ue="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Re="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Ne="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",Pe="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",qe="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Oe="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",He="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ze="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Ve="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ge="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Xe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Ke="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",Je="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",Qe="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",$e="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",We="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ye="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",et="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",tt=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},rt="octet",at=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return rt}},nt=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return rt}},it=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return rt}},ct=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return rt}},ot=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return rt}},st=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return rt}},ut=function(e){if(!e||!e.includes("/"))return rt;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return st(r);case"audio":return at(r);case"video":return ot(r);case"text":return nt(r);case"image":return it(r);case"font":return ct(r);default:return rt}},lt=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},pt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},dt=function(e,t){var r="fallBack";if(!e)return r=rt,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:ft[r],mimeResume:r};r=ut(e.type);var a=tt(e.name);"text"===r&&(r=pt(a)),r===rt&&(r=lt(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:ft[r],mimeResume:r}},ft={aac:R,accdb:P,abw:N,arc:ee,avi:q,azw:O,octet:he,bmp:H,bz:Z,bz2:V,cda:G,csh:X,css:K,csv:J,docx:Q,drawio:$,eot:W,epub:Y,gzip:re,gif:te,html:ae,icalendar:ne,jar:ce,jpeg:se,javascript:oe,json:ue,jsonld:le,midi:pe,mp3:de,mp4:fe,mpeg:ge,mpkg:me,mp2t:he,odp:be,ods:ve,odt:Fe,oga:we,ogv:xe,ogx:_e,opus:ye,otf:Ee,png:ke,pdf:Ae,php:ze,pptx:Se,psd:Me,rar:Ce,rtf:Te,sass:Ie,sh:Le,swf:Ue,tar:je,tiff:Ne,ttf:Pe,typescript:qe,text:Re,vsd:Oe,wav:Ze,weba:Ge,webm:Ve,webp:Xe,woff:Qe,wma:Ke,wmv:Je,xhtml:ae,xlsx:$e,xml:We,xul:Ye,zip:et,sevenzip:U,python:De,java:ie,react:Be,vue:He,fallBack:he},gt=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,i=e.type,c=e.imageUrl,o=e.valid,s=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,g=e.extraUploadData,m=e.serverResponse,h=e.downloadUrl,b=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=i,this.imageUrl=c,this.valid=o,this.errors=s,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=g,this.serverResponse=m,this.downloadUrl=h,this.videoUrl=b}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var i=a[n],c=r[n];void 0!==i&&(t[c]=i)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),mt=function(){return mt=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},mt.apply(this,arguments)};function ht(e,t,r,a){return new(r||(r=Promise))((function(n,i){function c(e){try{s(a.next(e))}catch(e){i(e)}}function o(e){try{s(a.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(c,o)}s((a=a.apply(e,t||[])).next())}))}function bt(e,t){var r,a,n,i,c={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,o[0]&&(c=0)),c;)try{if(r=1,a&&(n=2&o[0]?a.return:o[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,o[1])).done)return n;switch(a=0,n&&(o=[2&o[0],n.value]),o[0]){case 0:case 1:n=o;break;case 4:return c.label++,{value:o[1],done:!1};case 5:c.label++,a=o[1],o=[0];continue;case 7:o=c.ops.pop(),c.trys.pop();continue;default:if(!(n=c.trys,(n=n.length>0&&n[n.length-1])||6!==o[0]&&2!==o[0])){c=0;continue}if(3===o[0]&&(!n||o[1]>n[0]&&o[1]<n[3])){c.label=o[1];break}if(6===o[0]&&c.label<n[1]){c.label=n[1],n=o;break}if(n&&c.label<n[2]){c.label=n[2],c.ops.push(o);break}n[2]&&c.ops.pop(),c.trys.pop();continue}o=t.call(e,c)}catch(e){o=[6,e],a=0}finally{r=n=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function vt(e,t,r){if(r||2===arguments.length)for(var a,n=0,i=t.length;n<i;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var Ft=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=vt([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var i,c=vt([],r,!0);n&&a&&(c=c.filter((function(e){return e.valid}))),i=(c=a?c.map((function(e){return"success"!==e.uploadStatus&&e.valid?mt(mt({},e),{uploadStatus:"preparing"}):mt({},e)})):c.map((function(e){return"success"!==e.uploadStatus?mt(mt({},e),{uploadStatus:"preparing"}):mt({},e)}))).map((function(e){return new gt(e)}));e.setFileList(t,i);return i}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new gt(mt(mt({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),wt=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},xt=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),_t=function(e){return xt.createFileListMiscelanious(e)},yt=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),xt.createFile(e,t,r)},Et=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}(),At=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:Et.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},zt=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new gt({id:Et.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},kt=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},St=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},Mt=function(e){return new Promise((function(t,r){setTimeout((function(){t(mt(mt({},e),{uploadStatus:"uploading"}))}),1500)}))},Dt=function(e){return new Promise((function(t,r){setTimeout((function(){t(mt(mt({},e),{uploadStatus:"success"}))}),2e3)}))},jt=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},Ct=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(mt(mt({},e),{uploadStatus:"uploading"}))}),1500)}))},Bt=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(mt(mt({},e),{uploadStatus:"success"}))}),2e3)}))},Tt=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,i={url:""};e(mt(mt({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,i={};e(mt(mt({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"error",uploadMessage:n}))}}),1700)}))};function It(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var Lt=function(e){e&&(e.value="")},Ut=function(e,t){return t?"".concat(e," ").concat(t):e},Rt=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},Nt=function(e,t,r,a){var n="",i=void 0,c=void 0;return e&&"string"==typeof e.name?(n=e.name,i=e.type,c=e.size):t&&"string"==typeof t&&(n=t,i=r,c=a),[n,i,c]},Pt=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},qt=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var i=e[n];if(0!==i.length){if("."===i.charAt(0)&&i.includes(tt(r)))return!0;if(a&&a.length>0&&i.includes("/")&&a.includes("/")){var c=i.split("/")[0],o=i.split("/")[1],s=a.split("/")[0],u=a.split("/")[1];if(c===s){if("*"===o)return!0;if(o===u)return!0}}}}return!1},Ot=function(e,t,r,a,n,i){for(var c=[],o=t,s=D(i),u=0,l=void 0;l=e[u];u++){var p=Vt(l,a,r,s);if(p.valid){var d=o>0;if(p.valid=d,!d){var f=s.maxFileCount;p.errors=p.errors?vt(vt([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}o--}c.push(p)}return c},Ht=function(e,t,r,a,n,i){var c=[];if(!t)return c;for(var o=t,s=D(i),u=s.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=Zt(p,a,r,s)).valid){var d=o>0;p.valid=d,d||(p.errors=p.errors?vt(vt([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),o--}c.push(p)}return c},Zt=function(e,t,r,a){var n=mt({},e),i=[];if(!e.file)return mt({},n);if(t){var c=t(n.file).errors;c&&i.push.apply(i,c)}var o=r.maxFileSize,s=r.accept,u=e.file;if(o&&u.size>o){var l=a.maxSizeError;i.push(l(o))}s&&!qt(Pt(s),u)&&i.push(a.acceptError);var p=0===i.length;return n=mt(mt({},n),{valid:p,errors:p?void 0:i})},Vt=function(e,t,r,a){var n=Et.getNextId(),i=[];if(t)return mt({id:n,file:e},t(e));var c=r.maxFileSize,o=r.accept;if(c&&e.size>c){var s=a.maxSizeError;i.push(s(c))}return o&&!qt(Pt(o),e)&&i.push(a.acceptError),{id:n,file:e,valid:0===i.length,errors:i}},Gt=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."],Xt=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],i=r||function(){switch(It(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),c=a||"";if(t){if(!a)switch(i){case"error":c="Upload failed. There was an error";break;case"success":c="File was successfully upload";break;default:a=void 0}n=void 0}else{var o=It(0,3);n.push(Gt[o]),i=void 0,c=void 0}return{id:Et.getNextId(),valid:t,file:e,uploadStatus:i,uploadMessage:c,errors:n}},Kt=function(e){return{id:e||Et.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:yt("fileName.ext",29360128,"files-ui/mock"),errors:Gt,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}};function Jt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function Qt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var $t={success:!1,message:"Timeout error",payload:{}},Wt={success:!1,message:"Upload aborted",payload:{}},Yt={success:!1,message:"Error when parsing JSON response",payload:{}},er={success:!1,message:"Unexpected error",payload:{}},tr=function(e){return mt(mt({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},rr=function(e,t,r){return{success:e,message:t,payload:r}},ar=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return Yt}},nr=function(e,t){return mt(mt({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},ir=function(e,t){return mt(mt({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},cr=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(i,c){var o=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return i($t)},e.upload.onabort=function(){i(Wt)},e.onloadend=function(e){return ht(void 0,void 0,void 0,(function(){return bt(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return ht(void 0,void 0,void 0,(function(){return bt(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?i(ar(e)):i(Wt)),[2]}))}))},e.open(o,r,!0),Qt(e,n),e.send(a)}))},or=function(e,t,r,a,n){return ht(void 0,void 0,void 0,(function(){return bt(this,(function(i){return[2,new Promise((function(i,c){return ht(void 0,void 0,void 0,(function(){var c,o,s,u,l,p;return bt(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(c=e.xhr)?(o=r||"POST",s=e.file,(u=new FormData).append(n||"file",s),l=mt({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),Jt(u,l),p=void 0,[4,cr(c,o,t,u,a||{})]):(i(tr(e)),[2]);case 1:return(p=d.sent()).success?i(nr(e,p)):i(ir(e,p)),[3,3];case 2:return d.sent(),i(ir(e,er)),[3,3];case 3:return[2]}}))}))}))]}))}))};function sr(e,t,r,a,n){var i=this;return new Promise((function(c,o){return ht(i,void 0,void 0,(function(){var i,o;return bt(this,(function(s){switch(s.label){case 0:(i=new FormData).append(a||"file",e),s.label=1;case 1:return s.trys.push([1,3,,4]),[4,cr(new XMLHttpRequest,r,t,i,n)];case 2:return o=s.sent(),c(o),[3,4];case 3:return s.sent(),c(er),[3,4];case 4:return[2]}}))}))}))}var ur=function(e,t,r,a,n){return new Promise((function(i,c){e.upload.onload=function(){},e.upload.ontimeout=function(){return i($t)},e.upload.onabort=function(){return i(Wt)},e.onreadystatechange=function(t){return ht(void 0,void 0,void 0,(function(){return bt(this,(function(t){return 4===e.readyState&&(""!==e.response?i(ar(e)):i(er)),[2]}))}))},e.open(t,r,!0);for(var o=Object.keys(n),s=0;s<o.length;s++)e.setRequestHeader(o[s],n[o[s]]);e.send(a)}))},lr=function(e){return mt(mt({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},pr=function(e){return{id:e.id,uploadedFile:mt(mt({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},dr=function(e,t,r){return{id:e.id,uploadedFile:mt(mt({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},fr=function(e){return e?e.map((function(e){return mt(mt({},e),{xhr:new XMLHttpRequest})})):[]},gr=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",mt(mt({},e),{uploadStatus:"uploading"})):e},mr=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(mt(mt({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},hr=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},br=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),gt.toExtFile(e)}))},vr=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},Fr={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},wr=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,i=0,c=0;if(yr(Er(e)))n=16*kr(e.charAt(1))+kr(e.charAt(2)),i=16*kr(e.charAt(3))+kr(e.charAt(4)),c=16*kr(e.charAt(5))+kr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},xr=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,i=0,c=0;if(yr(Er(e)))n=16*kr(e.charAt(1))+kr(e.charAt(2)),i=16*kr(e.charAt(3))+kr(e.charAt(4)),c=16*kr(e.charAt(5))+kr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},_r=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!yr(Er(n)))return a;var i,c,o;return i=16*kr(n.charAt(1))+kr(n.charAt(2)),c=16*kr(n.charAt(3))+kr(n.charAt(4)),o=16*kr(n.charAt(5))+kr(n.charAt(6)),"rgba(".concat(i,", ").concat(c,",").concat(o," , ").concat(t,")")},yr=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Ar.includes(e.charAt(t)))return!1;return!0};function Er(e){return e?void 0!==Fr[e.toLocaleLowerCase()]?Fr[e.toLocaleLowerCase()]:e:""}var Ar=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],zr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],kr=function(e){return Ar.includes(e)?zr[Ar.indexOf(e)]:0},Sr=function(e){return void 0!==e&&""!==e?e:Dr},Mr=function(e,t){return void 0===t&&(t=1),_r(Sr(Er(e)),t)},Dr="#646c7f",jr=function(e,t){var r=Ft.getExtFileInstanceList(e);if(r){var a=vt([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]};export{Wt as ABORTED_ERROR_RESPONSE,o as DropzoneEnglish,n as DropzoneFrench,t as DropzoneItalian,k as DropzoneLocalizer,S as DropzoneLocalizerSelector,h as DropzonePortuguese,f as DropzoneRussian,F as DropzoneSimplifiedChinese,l as DropzoneSpanish,_ as DropzoneTraditionalChinese,gt as ExtFileInstance,Ft as ExtFileManager,Et as FileIdGenerator,s as FileItemEnglish,i as FileItemFrench,r as FileItemItalian,A as FileItemLocalizer,z as FileItemLocalizerSelector,b as FileItemPortuguese,g as FileItemRussian,w as FileItemSimplifiedChinese,p as FileItemSpanish,y as FileItemTraditionalChinese,ur as FuiUpload,Yt as JSON_PARSE_ERROR_RESPONSE,ar as JsonParseResponse,Fr as NAMED_COLORS,tr as NO_XHR_PROVIDED_ERROR,xt as SyntheticFile,$t as TIMEOUT_ERROR_RESPONSE,er as UNEXPECTED_ERROR_RESPONSE,u as ValidateErrorEnglish,c as ValidateErrorFrench,a as ValidateErrorItalian,M as ValidateErrorLocalizer,D as ValidateErrorLocalizerSelector,v as ValidateErrorPortuguese,m as ValidateErrorRussian,x as ValidateErrorSimplifiedChinese,d as ValidateErrorSpanish,E as ValidateErrorTraditionalChinese,R as aac,N as abw,P as accdb,Ut as addClassName,Jt as addExtraData,Qt as addHeaders,st as applicationSelector,Sr as asureColor,at as audioSelector,q as avi,O as azw,H as bmp,xr as brighterColor,Z as bz,V as bz2,G as cda,pt as checkIsCode,Lt as cleanInput,Er as colourNameToHex,Mr as completeAsureColor,dr as completeUploadResult,_t as createListOfMultiTypeFile,yt as createSyntheticFile,wt as createUploadConfig,X as csh,K as css,J as csv,wr as darkerColor,Q as docx,$ as drawio,W as eot,Y as epub,Kt as extFileMock,jr as extFileReconcilation,lt as extensionSelector,Tt as fakeFuiUpload,At as fileListToExtFileArray,zt as fileListToExtFileInstanceArray,Ot as fileListvalidator,e as fileSizeFormater,ct as fontSelector,ee as freearc,tt as getExt,L as getImageOrientation,Nt as getLocalFileItemData,It as getRandomInt,dt as getURLFileIco,te as gif,re as gzip,_r as hexColorToRGB,kr as hexTodec,ae as html,ne as icalendar,it as imageSelector,gr as instantPreparingToUploadOne,yr as isHexColor,Rt as isUploadAbleExtFile,kt as isValidateActive,ce as jar,ie as java,oe as javascript,se as jpeg,ue as json,le as jsonld,ir as makeErrorUploadResponse,rr as makeServerResponse,nr as makeSuccessUploadResponse,Xt as makeSyntheticExtFile,pe as midi,ut as mimeSelector,de as mp3,fe as mp4,ge as mpeg,me as mpkg,he as octet,be as odp,ve as ods,Fe as odt,we as oga,xe as ogv,_e as ogx,ye as opus,Ee as otf,Ae as pdf,ze as php,ke as png,Se as pptx,Ct as prepToUploadOne,mr as preparingToUploadOne,Me as psd,De as python,Ce as rar,Be as react,T as readAsArrayBuffer,B as readAsBinaryString,j as readAsDataURL,C as readAsText,I as resizeImage,Te as rtf,br as sanitizeArrExtFile,Ie as sass,Pt as separateAccept,vr as setNextUploadStatus,Mt as setPrepToUploading,U as sevenzip,Le as sh,St as shrinkWord,jt as sleepPreparing,hr as sleepTransition,Ue as swf,je as tar,Re as text,nt as textSelector,Ne as tiff,fr as toUploadableExtFileList,Pe as ttf,qe as typescript,pr as unableToUploadResult,lr as unexpectedErrorUploadResult,or as uploadExtFile,sr as uploadFile,cr as uploadFormData,Dt as uploadOne,Bt as uploadOneExtFile,qt as validateAccept,Zt as validateExtFile,Ht as validateExtFileList,Vt as validateFile,ot as videoSelector,Oe as vsd,He as vue,Ze as wav,Ge as weba,Ve as webm,Xe as webp,Ke as wma,Je as wmv,Qe as woff,$e as xlsx,We as xml,Ye as xul,et as zip};
+var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},i={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},c={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},o={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},s={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},g={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},m={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},b={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},v={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},F={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},w={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},x={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},y={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},E={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":s,"FR-fr":i,"IT-it":r,"PT-pt":b,"RU-ru":g,"ZH-cn":w,"ZH-hk":y},z=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},k={"ES-es":l,"EN-en":o,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":F,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return k["ES-es"];case"EN-en":default:return k["EN-en"];case"FR-fr":return k["FR-fr"];case"IT-it":return k["IT-it"];case"PT-pt":return k["PT-pt"];case"RU-ru":return k["RU-ru"];case"ZH-cn":return k["ZH-cn"];case"ZH-hk":return k["ZH-hk"]}},M={"ES-es":d,"EN-en":u,"FR-fr":c,"IT-it":a,"PT-pt":v,"RU-ru":m,"ZH-cn":x,"ZH-hk":E},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?M[e]:M["EN-en"]},j=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.onload=function(){a(i.result)},i.readAsDataURL(e)}catch(e){n(void 0)}}))},C=function(e,t,r,a){return new Promise((function(n,i){try{var c=new FileReader;c.onload=function(){n(c.result)},c.onprogress=function(){null==r||r()},c.onerror=function(){null==a||a()},c.readAsText(e,t||"base64")}catch(e){i(void 0)}}))},B=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsBinaryString(e)}catch(e){n(void 0)}}))},T=function(e,t,r){return new Promise((function(a,n){try{var i=new FileReader;i.onload=function(){a(i.result)},i.onprogress=function(){null==t||t()},i.onerror=function(){null==r||r()},i.readAsArrayBuffer(e)}catch(e){n(void 0)}}))};function I(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var i=new Image;i.src=e,i.onload=function(){var c=document.createElement("canvas"),o=t,s=r,u=i.width,l=i.height;t>u&&r>l?a(e):u>l?u>o&&(l*=o/u,u=o):l>s&&(u*=s/l,l=s),c.width=u,c.height=l;var p=c.getContext("2d");p?(p.drawImage(i,0,0,u,l),a(c.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))}function L(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))}var R="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",U="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",N="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",P="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",q="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",O="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",H="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",Z="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",V="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",G="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",X="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",K="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",J="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",Q="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",$="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",W="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",Y="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",ee="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",te="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",re="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",ae="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",ne="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",ie="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ce="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",oe="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",se="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",ue="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",le="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",pe="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",de="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",fe="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",ge="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",me="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",he="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",be="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",ve="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",Fe="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",we="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",xe="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",_e="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",ye="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",Ee="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",Ae="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ze="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",ke="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",Se="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",Me="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",De="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",je="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ce="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Be="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Te="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",Ie="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",Le="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Re="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Ue="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Ne="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",Pe="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",qe="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Oe="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",He="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ze="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Ve="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ge="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Xe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Ke="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",Je="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",Qe="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",$e="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",We="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ye="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",et="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",tt=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},rt="octet",at=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return rt}},nt=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return rt}},it=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return rt}},ct=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return rt}},ot=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return rt}},st=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return rt}},ut=function(e){if(!e||!e.includes("/"))return rt;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return st(r);case"audio":return at(r);case"video":return ot(r);case"text":return nt(r);case"image":return it(r);case"font":return ct(r);default:return rt}},lt=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},pt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},dt=function(e,t){var r="fallBack";if(!e)return r=rt,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:gt[r],mimeResume:r};r=ut(e.type);var a=tt(e.name);"text"===r&&(r=pt(a)),r===rt&&(r=lt(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:gt[r],mimeResume:r}},ft=function(e,t,r){var a="octet";if(!e)return a=rt,(null==r?void 0:r.fallBack)?{url:null==r?void 0:r.fallBack,mimeResume:a}:{url:gt[a],mimeResume:a};a=ut(t);var n=tt(e);"text"===a&&(a=pt(n)),a===rt&&(a=lt(n));var i=null==r?void 0:r[a];return void 0!==i?{url:i,mimeResume:a}:{url:gt[a],mimeResume:a}},gt={aac:U,accdb:P,abw:N,arc:ee,avi:q,azw:O,octet:he,bmp:H,bz:Z,bz2:V,cda:G,csh:X,css:K,csv:J,docx:Q,drawio:$,eot:W,epub:Y,gzip:re,gif:te,html:ae,icalendar:ne,jar:ce,jpeg:se,javascript:oe,json:ue,jsonld:le,midi:pe,mp3:de,mp4:fe,mpeg:ge,mpkg:me,mp2t:he,odp:be,ods:ve,odt:Fe,oga:we,ogv:xe,ogx:_e,opus:ye,otf:Ee,png:ke,pdf:Ae,php:ze,pptx:Se,psd:Me,rar:Ce,rtf:Te,sass:Ie,sh:Le,swf:Re,tar:je,tiff:Ne,ttf:Pe,typescript:qe,text:Ue,vsd:Oe,wav:Ze,weba:Ge,webm:Ve,webp:Xe,woff:Qe,wma:Ke,wmv:Je,xhtml:ae,xlsx:$e,xml:We,xul:Ye,zip:et,sevenzip:R,python:De,java:ie,react:Be,vue:He,fallBack:he},mt=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,i=e.type,c=e.imageUrl,o=e.valid,s=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,g=e.extraUploadData,m=e.serverResponse,h=e.downloadUrl,b=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=i,this.imageUrl=c,this.valid=o,this.errors=s,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=g,this.serverResponse=m,this.downloadUrl=h,this.videoUrl=b}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var i=a[n],c=r[n];void 0!==i&&(t[c]=i)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),ht=function(){return ht=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},ht.apply(this,arguments)};function bt(e,t,r,a){return new(r||(r=Promise))((function(n,i){function c(e){try{s(a.next(e))}catch(e){i(e)}}function o(e){try{s(a.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(c,o)}s((a=a.apply(e,t||[])).next())}))}function vt(e,t){var r,a,n,i,c={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function o(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,o[0]&&(c=0)),c;)try{if(r=1,a&&(n=2&o[0]?a.return:o[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,o[1])).done)return n;switch(a=0,n&&(o=[2&o[0],n.value]),o[0]){case 0:case 1:n=o;break;case 4:return c.label++,{value:o[1],done:!1};case 5:c.label++,a=o[1],o=[0];continue;case 7:o=c.ops.pop(),c.trys.pop();continue;default:if(!(n=c.trys,(n=n.length>0&&n[n.length-1])||6!==o[0]&&2!==o[0])){c=0;continue}if(3===o[0]&&(!n||o[1]>n[0]&&o[1]<n[3])){c.label=o[1];break}if(6===o[0]&&c.label<n[1]){c.label=n[1],n=o;break}if(n&&c.label<n[2]){c.label=n[2],c.ops.push(o);break}n[2]&&c.ops.pop(),c.trys.pop();continue}o=t.call(e,c)}catch(e){o=[6,e],a=0}finally{r=n=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function Ft(e,t,r){if(r||2===arguments.length)for(var a,n=0,i=t.length;n<i;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var wt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=Ft([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var i,c=Ft([],r,!0);n&&a&&(c=c.filter((function(e){return e.valid}))),i=(c=a?c.map((function(e){return"success"!==e.uploadStatus&&e.valid?ht(ht({},e),{uploadStatus:"preparing"}):ht({},e)})):c.map((function(e){return"success"!==e.uploadStatus?ht(ht({},e),{uploadStatus:"preparing"}):ht({},e)}))).map((function(e){return new mt(e)}));e.setFileList(t,i);return i}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new mt(ht(ht({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),xt=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},_t=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),yt=function(e){return _t.createFileListMiscelanious(e)},Et=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),_t.createFile(e,t,r)},At=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}(),zt=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:At.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},kt=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new mt({id:At.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},St=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},Mt=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},Dt=function(e){return new Promise((function(t,r){setTimeout((function(){t(ht(ht({},e),{uploadStatus:"uploading"}))}),1500)}))},jt=function(e){return new Promise((function(t,r){setTimeout((function(){t(ht(ht({},e),{uploadStatus:"success"}))}),2e3)}))},Ct=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},Bt=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(ht(ht({},e),{uploadStatus:"uploading"}))}),1500)}))},Tt=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(ht(ht({},e),{uploadStatus:"success"}))}),2e3)}))},It=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,i={url:""};e(ht(ht({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,i={};e(ht(ht({},r),{serverResponse:{success:a,message:n,payload:i},uploadStatus:"error",uploadMessage:n}))}}),1700)}))};function Lt(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var Rt=function(e){e&&(e.value="")},Ut=function(e,t){return t?"".concat(e," ").concat(t):e},Nt=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},Pt=function(e,t,r,a){var n="",i=void 0,c=void 0;return e&&"string"==typeof e.name?(n=e.name,i=e.type,c=e.size):t&&"string"==typeof t&&(n=t,i=r,c=a),[n,i,c]},qt=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},Ot=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var i=e[n];if(0!==i.length){if("."===i.charAt(0)&&i.includes(tt(r)))return!0;if(a&&a.length>0&&i.includes("/")&&a.includes("/")){var c=i.split("/")[0],o=i.split("/")[1],s=a.split("/")[0],u=a.split("/")[1];if(c===s){if("*"===o)return!0;if(o===u)return!0}}}}return!1},Ht=function(e,t,r,a,n,i){for(var c=[],o=t,s=D(i),u=0,l=void 0;l=e[u];u++){var p=Gt(l,a,r,s);if(p.valid){var d=o>0;if(p.valid=d,!d){var f=s.maxFileCount;p.errors=p.errors?Ft(Ft([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}o--}c.push(p)}return c},Zt=function(e,t,r,a,n,i){var c=[];if(!t)return c;for(var o=t,s=D(i),u=s.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=Vt(p,a,r,s)).valid){var d=o>0;p.valid=d,d||(p.errors=p.errors?Ft(Ft([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),o--}c.push(p)}return c},Vt=function(e,t,r,a){var n=ht({},e),i=[];if(!e.file)return ht({},n);if(t){var c=t(n.file).errors;c&&i.push.apply(i,c)}var o=r.maxFileSize,s=r.accept,u=e.file;if(o&&u.size>o){var l=a.maxSizeError;i.push(l(o))}s&&!Ot(qt(s),u)&&i.push(a.acceptError);var p=0===i.length;return n=ht(ht({},n),{valid:p,errors:p?void 0:i})},Gt=function(e,t,r,a){var n=At.getNextId(),i=[];if(t)return ht({id:n,file:e},t(e));var c=r.maxFileSize,o=r.accept;if(c&&e.size>c){var s=a.maxSizeError;i.push(s(c))}return o&&!Ot(qt(o),e)&&i.push(a.acceptError),{id:n,file:e,valid:0===i.length,errors:i}},Xt=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."],Kt=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],i=r||function(){switch(Lt(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),c=a||"";if(t){if(!a)switch(i){case"error":c="Upload failed. There was an error";break;case"success":c="File was successfully upload";break;default:a=void 0}n=void 0}else{var o=Lt(0,3);n.push(Xt[o]),i=void 0,c=void 0}return{id:At.getNextId(),valid:t,file:e,uploadStatus:i,uploadMessage:c,errors:n}},Jt=function(e){return{id:e||At.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:Et("fileName.ext",29360128,"files-ui/mock"),errors:Xt,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}};function Qt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function $t(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var Wt={success:!1,message:"Timeout error",payload:{}},Yt={success:!1,message:"Upload aborted",payload:{}},er={success:!1,message:"Error when parsing JSON response",payload:{}},tr={success:!1,message:"Unexpected error",payload:{}},rr=function(e){return ht(ht({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},ar=function(e,t,r){return{success:e,message:t,payload:r}},nr=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return er}},ir=function(e,t){return ht(ht({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},cr=function(e,t){return ht(ht({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},or=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(i,c){var o=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return i(Wt)},e.upload.onabort=function(){i(Yt)},e.onloadend=function(e){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?i(nr(e)):i(Yt)),[2]}))}))},e.open(o,r,!0),$t(e,n),e.send(a)}))},sr=function(e,t,r,a,n){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(i){return[2,new Promise((function(i,c){return bt(void 0,void 0,void 0,(function(){var c,o,s,u,l,p;return vt(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(c=e.xhr)?(o=r||"POST",s=e.file,(u=new FormData).append(n||"file",s),l=ht({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),Qt(u,l),p=void 0,[4,or(c,o,t,u,a||{})]):(i(rr(e)),[2]);case 1:return(p=d.sent()).success?i(ir(e,p)):i(cr(e,p)),[3,3];case 2:return d.sent(),i(cr(e,tr)),[3,3];case 3:return[2]}}))}))}))]}))}))};function ur(e,t,r,a,n){var i=this;return new Promise((function(c,o){return bt(i,void 0,void 0,(function(){var i,o;return vt(this,(function(s){switch(s.label){case 0:(i=new FormData).append(a||"file",e),s.label=1;case 1:return s.trys.push([1,3,,4]),[4,or(new XMLHttpRequest,r,t,i,n)];case 2:return o=s.sent(),c(o),[3,4];case 3:return s.sent(),c(tr),[3,4];case 4:return[2]}}))}))}))}var lr=function(e,t,r,a,n){return new Promise((function(i,c){e.upload.onload=function(){},e.upload.ontimeout=function(){return i(Wt)},e.upload.onabort=function(){return i(Yt)},e.onreadystatechange=function(t){return bt(void 0,void 0,void 0,(function(){return vt(this,(function(t){return 4===e.readyState&&(""!==e.response?i(nr(e)):i(tr)),[2]}))}))},e.open(t,r,!0);for(var o=Object.keys(n),s=0;s<o.length;s++)e.setRequestHeader(o[s],n[o[s]]);e.send(a)}))},pr=function(e){return ht(ht({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},dr=function(e){return{id:e.id,uploadedFile:ht(ht({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},fr=function(e,t,r){return{id:e.id,uploadedFile:ht(ht({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},gr=function(e){return e?e.map((function(e){return ht(ht({},e),{xhr:new XMLHttpRequest})})):[]},mr=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",ht(ht({},e),{uploadStatus:"uploading"})):e},hr=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(ht(ht({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},br=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},vr=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),mt.toExtFile(e)}))},Fr=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},wr={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},xr=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,i=0,c=0;if(Er(Ar(e)))n=16*Sr(e.charAt(1))+Sr(e.charAt(2)),i=16*Sr(e.charAt(3))+Sr(e.charAt(4)),c=16*Sr(e.charAt(5))+Sr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},_r=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,i=0,c=0;if(Er(Ar(e)))n=16*Sr(e.charAt(1))+Sr(e.charAt(2)),i=16*Sr(e.charAt(3))+Sr(e.charAt(4)),c=16*Sr(e.charAt(5))+Sr(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(i*a,",").concat(c*a,")");else if(e.includes("rgba")){var o=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}else if(e.includes("rgb")){o=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(o[0],10)*a,", ").concat(parseInt(o[1],10)*a,",").concat(parseInt(o[2],10)*a,")")}return r},yr=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!Er(Ar(n)))return a;var i,c,o;return i=16*Sr(n.charAt(1))+Sr(n.charAt(2)),c=16*Sr(n.charAt(3))+Sr(n.charAt(4)),o=16*Sr(n.charAt(5))+Sr(n.charAt(6)),"rgba(".concat(i,", ").concat(c,",").concat(o," , ").concat(t,")")},Er=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!zr.includes(e.charAt(t)))return!1;return!0};function Ar(e){return e?void 0!==wr[e.toLocaleLowerCase()]?wr[e.toLocaleLowerCase()]:e:""}var zr=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],kr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Sr=function(e){return zr.includes(e)?kr[zr.indexOf(e)]:0},Mr=function(e){return void 0!==e&&""!==e?e:jr},Dr=function(e,t){return void 0===t&&(t=1),yr(Mr(Ar(e)),t)},jr="#646c7f",Cr=function(e,t){var r=wt.getExtFileInstanceList(e);if(r){var a=Ft([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]};export{Yt as ABORTED_ERROR_RESPONSE,o as DropzoneEnglish,n as DropzoneFrench,t as DropzoneItalian,k as DropzoneLocalizer,S as DropzoneLocalizerSelector,h as DropzonePortuguese,f as DropzoneRussian,F as DropzoneSimplifiedChinese,l as DropzoneSpanish,_ as DropzoneTraditionalChinese,mt as ExtFileInstance,wt as ExtFileManager,At as FileIdGenerator,s as FileItemEnglish,i as FileItemFrench,r as FileItemItalian,A as FileItemLocalizer,z as FileItemLocalizerSelector,b as FileItemPortuguese,g as FileItemRussian,w as FileItemSimplifiedChinese,p as FileItemSpanish,y as FileItemTraditionalChinese,lr as FuiUpload,er as JSON_PARSE_ERROR_RESPONSE,nr as JsonParseResponse,wr as NAMED_COLORS,rr as NO_XHR_PROVIDED_ERROR,_t as SyntheticFile,Wt as TIMEOUT_ERROR_RESPONSE,tr as UNEXPECTED_ERROR_RESPONSE,u as ValidateErrorEnglish,c as ValidateErrorFrench,a as ValidateErrorItalian,M as ValidateErrorLocalizer,D as ValidateErrorLocalizerSelector,v as ValidateErrorPortuguese,m as ValidateErrorRussian,x as ValidateErrorSimplifiedChinese,d as ValidateErrorSpanish,E as ValidateErrorTraditionalChinese,U as aac,N as abw,P as accdb,Ut as addClassName,Qt as addExtraData,$t as addHeaders,st as applicationSelector,Mr as asureColor,at as audioSelector,q as avi,O as azw,H as bmp,_r as brighterColor,Z as bz,V as bz2,G as cda,pt as checkIsCode,Rt as cleanInput,Ar as colourNameToHex,Dr as completeAsureColor,fr as completeUploadResult,yt as createListOfMultiTypeFile,Et as createSyntheticFile,xt as createUploadConfig,X as csh,K as css,J as csv,xr as darkerColor,Q as docx,$ as drawio,W as eot,Y as epub,Jt as extFileMock,Cr as extFileReconcilation,lt as extensionSelector,It as fakeFuiUpload,zt as fileListToExtFileArray,kt as fileListToExtFileInstanceArray,Ht as fileListvalidator,e as fileSizeFormater,ct as fontSelector,ee as freearc,tt as getExt,L as getImageOrientation,Pt as getLocalFileItemData,Lt as getRandomInt,dt as getURLFileIco,ft as getURLFileIcoFromNameAndType,te as gif,re as gzip,yr as hexColorToRGB,Sr as hexTodec,ae as html,ne as icalendar,it as imageSelector,mr as instantPreparingToUploadOne,Er as isHexColor,Nt as isUploadAbleExtFile,St as isValidateActive,ce as jar,ie as java,oe as javascript,se as jpeg,ue as json,le as jsonld,cr as makeErrorUploadResponse,ar as makeServerResponse,ir as makeSuccessUploadResponse,Kt as makeSyntheticExtFile,pe as midi,ut as mimeSelector,de as mp3,fe as mp4,ge as mpeg,me as mpkg,he as octet,be as odp,ve as ods,Fe as odt,we as oga,xe as ogv,_e as ogx,ye as opus,Ee as otf,Ae as pdf,ze as php,ke as png,Se as pptx,Bt as prepToUploadOne,hr as preparingToUploadOne,Me as psd,De as python,Ce as rar,Be as react,T as readAsArrayBuffer,B as readAsBinaryString,j as readAsDataURL,C as readAsText,I as resizeImage,Te as rtf,vr as sanitizeArrExtFile,Ie as sass,qt as separateAccept,Fr as setNextUploadStatus,Dt as setPrepToUploading,R as sevenzip,Le as sh,Mt as shrinkWord,Ct as sleepPreparing,br as sleepTransition,Re as swf,je as tar,Ue as text,nt as textSelector,Ne as tiff,gr as toUploadableExtFileList,Pe as ttf,qe as typescript,dr as unableToUploadResult,pr as unexpectedErrorUploadResult,sr as uploadExtFile,ur as uploadFile,or as uploadFormData,jt as uploadOne,Tt as uploadOneExtFile,Ot as validateAccept,Vt as validateExtFile,Zt as validateExtFileList,Gt as validateFile,ot as videoSelector,Oe as vsd,He as vue,Ze as wav,Ge as weba,Ve as webm,Xe as webp,Ke as wma,Je as wmv,Qe as woff,$e as xlsx,We as xml,Ye as xul,et as zip};
 //# sourceMappingURL=index.es.js.map
diff --git a/src/files-ui/core/index.es.js.map b/src/files-ui/core/index.es.js.map
index a44e666147f60695794a38fec4c079ad734d18bb..c4a8edb4f9b9d15ce32af04ce7d75a85b3d06df8 100644
--- a/src/files-ui/core/index.es.js.map
+++ b/src/files-ui/core/index.es.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.es.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/reader/imageOrientation.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/types/UploadConfig.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/fileListParser.ts","../src/utils/dropzone.utils.ts","../src/utils/shrinkWord.ts","../src/utils/fakeupload.utils.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/utils/addClassName.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/getLocalFileItemData.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/mocks/extFileMock.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/upload/utils.upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/file-manager/reconcilation.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    maxFiles: number | undefined,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","FileItemLocalizerSelector","local","DropzoneLocalizer","DropzoneLocalizerSelector","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","readAsDataURL","file","onProgress","onError","Promise","resolve","reject","reader_1","FileReader","onprogress","onerror","onload","result","undefined","readAsText","encoding","reader_2","readAsBinaryString","reader_3","readAsArrayBuffer","reader_4","resizeImage","base64Str","maxWidth","maxHeight","img_1","Image","src","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","width","height","ctx","getContext","drawImage","toDataURL","process","env","NODE_ENV","console","getImageOrientation","imageSource","length","ev","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","getURLFileIco","customIcons","fallBack","url","mimeResume","mimeUrlList","extention","customUrl","arc","mp2t","xhtml","ExtFileInstance","extFile","id","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","currentValue","currKey","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","createUploadConfig","method","headers","uploadLabel","cleanonUpload","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createListOfMultiTypeFile","createSyntheticFile","FileIdGenerator","fileListToExtFileArray","fileList","extFileArray","f","fileListToExtFileInstanceArray","isValidateActive","validator","shrinkWord","word","card","newWord","slice","setPrepToUploading","setTimeout","uploadOne","sleepPreparing","preparingTime","prepToUploadOne","uploadOneExtFile","fakeFuiUpload","Math","floor","random","message","payload","getRandomInt","min","max","cleanInput","inputElement","value","addClassName","baseClassName","className","isUploadAbleExtFile","validateFilesFlag","getLocalFileItemData","localFileName","localFileType","localFileSize","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","fileListvalidator","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","validateFile","maxFileErrorMessenger","Infinity","validateExtFileList","extFileList","localValidatorProps","fileListResult","remaining","currentExtFile","validateExtFile","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","idGenerated","listOfErrors","makeSyntheticExtFile","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","extFileMock","XMLHttpRequest","extraData1","extraData2","deleted","addExtraData","formData","extraDataKeys","append","addHeaders","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","makeServerResponse","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","endpoint","data","finalMethod","toUpperCase","upload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","uploadExtFile","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","_a","uploadFile","label","_this","sent","FuiUpload","unexpectedErrorUploadResult","unableToUploadResult","uploadedFile","completeUploadResult","uploadStatusresult","toUploadableExtFileList","instantPreparingToUploadOne","preparingToUploadOne","sleepTransition","time","sanitizeArrExtFile","arrExtFile","setNextUploadStatus","extFileobj","prevStatus","nextStstaus","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","darkerColor","colorInput","percentage","darkedColor","reduce","component1","component2","component3","isHexColor","colourNameToHex","hexTodec","components","replace","parseInt","brighterColor","brightedColor","increase","hexColorToRGB","perc","defaultColor","resultDefault","color","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","completeAsureColor","extFileReconcilation","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.es.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/reader/imageOrientation.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/types/UploadConfig.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/fileListParser.ts","../src/utils/dropzone.utils.ts","../src/utils/shrinkWord.ts","../src/utils/fakeupload.utils.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/utils/addClassName.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/getLocalFileItemData.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/mocks/extFileMock.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/upload/utils.upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/file-manager/reconcilation.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","FileItemLocalizerSelector","local","DropzoneLocalizer","DropzoneLocalizerSelector","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","readAsDataURL","file","onProgress","onError","Promise","resolve","reject","reader_1","FileReader","onprogress","onerror","onload","result","undefined","readAsText","encoding","reader_2","readAsBinaryString","reader_3","readAsArrayBuffer","reader_4","resizeImage","base64Str","maxWidth","maxHeight","img_1","Image","src","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","width","height","ctx","getContext","drawImage","toDataURL","process","env","NODE_ENV","console","getImageOrientation","imageSource","length","ev","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","getURLFileIco","customIcons","fallBack","url","mimeResume","mimeUrlList","extention","customUrl","getURLFileIcoFromNameAndType","arc","mp2t","xhtml","ExtFileInstance","extFile","id","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","currentValue","currKey","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","createUploadConfig","method","headers","uploadLabel","cleanonUpload","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createListOfMultiTypeFile","createSyntheticFile","FileIdGenerator","fileListToExtFileArray","fileList","extFileArray","f","fileListToExtFileInstanceArray","isValidateActive","validator","shrinkWord","word","card","newWord","slice","setPrepToUploading","setTimeout","uploadOne","sleepPreparing","preparingTime","prepToUploadOne","uploadOneExtFile","fakeFuiUpload","Math","floor","random","message","payload","getRandomInt","min","max","cleanInput","inputElement","value","addClassName","baseClassName","className","isUploadAbleExtFile","validateFilesFlag","getLocalFileItemData","localFileName","localFileType","localFileSize","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","fileListvalidator","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","validateFile","maxFileErrorMessenger","Infinity","validateExtFileList","extFileList","localValidatorProps","fileListResult","remaining","currentExtFile","validateExtFile","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","idGenerated","listOfErrors","makeSyntheticExtFile","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","extFileMock","XMLHttpRequest","extraData1","extraData2","deleted","addExtraData","formData","extraDataKeys","append","addHeaders","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","makeServerResponse","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","endpoint","data","finalMethod","toUpperCase","upload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","uploadExtFile","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","_a","uploadFile","label","_this","sent","FuiUpload","unexpectedErrorUploadResult","unableToUploadResult","uploadedFile","completeUploadResult","uploadStatusresult","toUploadableExtFileList","instantPreparingToUploadOne","preparingToUploadOne","sleepTransition","time","sanitizeArrExtFile","arrExtFile","setNextUploadStatus","extFileobj","prevStatus","nextStstaus","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","darkerColor","colorInput","percentage","darkedColor","reduce","component1","component2","component3","isHexColor","colourNameToHex","hexTodec","components","replace","parseInt","brighterColor","brightedColor","increase","hexColorToRGB","perc","defaultColor","resultDefault","color","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","completeAsureColor","extFileReconcilation","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/files-ui/core/index.js b/src/files-ui/core/index.js
index 62503b7a6166a64202dad6b4f3356f21f079fbd6..73109351a6991b2093e65cc3cc6c84d258038c69 100644
--- a/src/files-ui/core/index.js
+++ b/src/files-ui/core/index.js
@@ -1,2 +1,2 @@
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},o={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},i={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},s={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},c={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},g={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},m={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},x={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},b={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},v={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},F={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},w={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},E={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},y={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":c,"FR-fr":o,"IT-it":r,"PT-pt":x,"RU-ru":g,"ZH-cn":F,"ZH-hk":E},z={"ES-es":l,"EN-en":s,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":v,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return z["ES-es"];case"EN-en":default:return z["EN-en"];case"FR-fr":return z["FR-fr"];case"IT-it":return z["IT-it"];case"PT-pt":return z["PT-pt"];case"RU-ru":return z["RU-ru"];case"ZH-cn":return z["ZH-cn"];case"ZH-hk":return z["ZH-hk"]}},k={"ES-es":d,"EN-en":u,"FR-fr":i,"IT-it":a,"PT-pt":b,"RU-ru":m,"ZH-cn":w,"ZH-hk":y},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?k[e]:k["EN-en"]};var C="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",R="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",M="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",j="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",I="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",T="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",L="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",U="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",B="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",N="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",P="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",O="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",q="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",H="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",V="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",Z="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",G="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",X="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",J="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",K="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",Q="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",W="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",$="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",Y="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ee="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",te="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",re="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",ae="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",ne="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",oe="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",ie="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",se="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",ce="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",ue="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",le="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",pe="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",de="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",fe="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",ge="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",me="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",he="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",xe="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",be="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ve="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",Fe="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",we="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",_e="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",Ee="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",ye="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ae="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",ze="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Se="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",ke="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",De="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Ce="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Re="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Me="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",je="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",Ie="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Te="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",Le="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ue="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Be="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ne="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Pe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Oe="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",qe="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",He="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",Ve="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",Ze="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ge="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",Xe="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",Je=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},Ke="octet",Qe=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return Ke}},We=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return Ke}},$e=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return Ke}},Ye=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return Ke}},et=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return Ke}},tt=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return Ke}},rt=function(e){if(!e||!e.includes("/"))return Ke;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return tt(r);case"audio":return Qe(r);case"video":return et(r);case"text":return We(r);case"image":return $e(r);case"font":return Ye(r);default:return Ke}},at=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},nt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},ot={aac:R,accdb:j,abw:M,arc:X,avi:I,azw:T,octet:ue,bmp:L,bz:U,bz2:B,cda:N,csh:P,css:O,csv:q,docx:H,drawio:V,eot:Z,epub:G,gzip:K,gif:J,html:Q,icalendar:W,jar:Y,jpeg:te,javascript:ee,json:re,jsonld:ae,midi:ne,mp3:oe,mp4:ie,mpeg:se,mpkg:ce,mp2t:ue,odp:le,ods:pe,odt:de,oga:fe,ogv:ge,ogx:me,opus:he,otf:xe,png:Fe,pdf:be,php:ve,pptx:we,psd:_e,rar:Ae,rtf:Se,sass:ke,sh:De,swf:Ce,tar:ye,tiff:Me,ttf:je,typescript:Ie,text:Re,vsd:Te,wav:Ue,weba:Ne,webm:Be,webp:Pe,woff:He,wma:Oe,wmv:qe,xhtml:Q,xlsx:Ve,xml:Ze,xul:Ge,zip:Xe,sevenzip:C,python:Ee,java:$,react:ze,vue:Le,fallBack:ue},it=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,o=e.type,i=e.imageUrl,s=e.valid,c=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,g=e.extraUploadData,m=e.serverResponse,h=e.downloadUrl,x=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=o,this.imageUrl=i,this.valid=s,this.errors=c,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=g,this.serverResponse=m,this.downloadUrl=h,this.videoUrl=x}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var o=a[n],i=r[n];void 0!==o&&(t[i]=o)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),st=function(){return st=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},st.apply(this,arguments)};function ct(e,t,r,a){return new(r||(r=Promise))((function(n,o){function i(e){try{c(a.next(e))}catch(e){o(e)}}function s(e){try{c(a.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}c((a=a.apply(e,t||[])).next())}))}function ut(e,t){var r,a,n,o,i={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(i=0)),i;)try{if(r=1,a&&(n=2&s[0]?a.return:s[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,s[1])).done)return n;switch(a=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,a=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(n=i.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){i.label=s[1];break}if(6===s[0]&&i.label<n[1]){i.label=n[1],n=s;break}if(n&&i.label<n[2]){i.label=n[2],i.ops.push(s);break}n[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],a=0}finally{r=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}function lt(e,t,r){if(r||2===arguments.length)for(var a,n=0,o=t.length;n<o;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var pt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=lt([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var o,i=lt([],r,!0);n&&a&&(i=i.filter((function(e){return e.valid}))),o=(i=a?i.map((function(e){return"success"!==e.uploadStatus&&e.valid?st(st({},e),{uploadStatus:"preparing"}):st({},e)})):i.map((function(e){return"success"!==e.uploadStatus?st(st({},e),{uploadStatus:"preparing"}):st({},e)}))).map((function(e){return new it(e)}));e.setFileList(t,o);return o}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new it(st(st({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),dt=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),ft=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),dt.createFile(e,t,r)},gt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}();function mt(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var ht=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},xt=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var o=e[n];if(0!==o.length){if("."===o.charAt(0)&&o.includes(Je(r)))return!0;if(a&&a.length>0&&o.includes("/")&&a.includes("/")){var i=o.split("/")[0],s=o.split("/")[1],c=a.split("/")[0],u=a.split("/")[1];if(i===c){if("*"===s)return!0;if(s===u)return!0}}}}return!1},bt=function(e,t,r,a){var n=st({},e),o=[];if(!e.file)return st({},n);if(t){var i=t(n.file).errors;i&&o.push.apply(o,i)}var s=r.maxFileSize,c=r.accept,u=e.file;if(s&&u.size>s){var l=a.maxSizeError;o.push(l(s))}c&&!xt(ht(c),u)&&o.push(a.acceptError);var p=0===o.length;return n=st(st({},n),{valid:p,errors:p?void 0:o})},vt=function(e,t,r,a){var n=gt.getNextId(),o=[];if(t)return st({id:n,file:e},t(e));var i=r.maxFileSize,s=r.accept;if(i&&e.size>i){var c=a.maxSizeError;o.push(c(i))}return s&&!xt(ht(s),e)&&o.push(a.acceptError),{id:n,file:e,valid:0===o.length,errors:o}},Ft=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."];function wt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function _t(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var Et={success:!1,message:"Timeout error",payload:{}},yt={success:!1,message:"Upload aborted",payload:{}},At={success:!1,message:"Error when parsing JSON response",payload:{}},zt={success:!1,message:"Unexpected error",payload:{}},St=function(e){return st(st({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},kt=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return At}},Dt=function(e,t){return st(st({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},Ct=function(e,t){return st(st({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},Rt=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(o,i){var s=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){o(yt)},e.onloadend=function(e){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?o(kt(e)):o(yt)),[2]}))}))},e.open(s,r,!0),_t(e,n),e.send(a)}))};var Mt={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},jt=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!It(Tt(n)))return a;var o,i,s;return o=16*Bt(n.charAt(1))+Bt(n.charAt(2)),i=16*Bt(n.charAt(3))+Bt(n.charAt(4)),s=16*Bt(n.charAt(5))+Bt(n.charAt(6)),"rgba(".concat(o,", ").concat(i,",").concat(s," , ").concat(t,")")},It=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Lt.includes(e.charAt(t)))return!1;return!0};function Tt(e){return e?void 0!==Mt[e.toLocaleLowerCase()]?Mt[e.toLocaleLowerCase()]:e:""}var Lt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],Ut=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Bt=function(e){return Lt.includes(e)?Ut[Lt.indexOf(e)]:0},Nt=function(e){return void 0!==e&&""!==e?e:Pt},Pt="#646c7f";exports.ABORTED_ERROR_RESPONSE=yt,exports.DropzoneEnglish=s,exports.DropzoneFrench=n,exports.DropzoneItalian=t,exports.DropzoneLocalizer=z,exports.DropzoneLocalizerSelector=S,exports.DropzonePortuguese=h,exports.DropzoneRussian=f,exports.DropzoneSimplifiedChinese=v,exports.DropzoneSpanish=l,exports.DropzoneTraditionalChinese=_,exports.ExtFileInstance=it,exports.ExtFileManager=pt,exports.FileIdGenerator=gt,exports.FileItemEnglish=c,exports.FileItemFrench=o,exports.FileItemItalian=r,exports.FileItemLocalizer=A,exports.FileItemLocalizerSelector=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},exports.FileItemPortuguese=x,exports.FileItemRussian=g,exports.FileItemSimplifiedChinese=F,exports.FileItemSpanish=p,exports.FileItemTraditionalChinese=E,exports.FuiUpload=function(e,t,r,a,n){return new Promise((function(o,i){e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){return o(yt)},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return 4===e.readyState&&(""!==e.response?o(kt(e)):o(zt)),[2]}))}))},e.open(t,r,!0);for(var s=Object.keys(n),c=0;c<s.length;c++)e.setRequestHeader(s[c],n[s[c]]);e.send(a)}))},exports.JSON_PARSE_ERROR_RESPONSE=At,exports.JsonParseResponse=kt,exports.NAMED_COLORS=Mt,exports.NO_XHR_PROVIDED_ERROR=St,exports.SyntheticFile=dt,exports.TIMEOUT_ERROR_RESPONSE=Et,exports.UNEXPECTED_ERROR_RESPONSE=zt,exports.ValidateErrorEnglish=u,exports.ValidateErrorFrench=i,exports.ValidateErrorItalian=a,exports.ValidateErrorLocalizer=k,exports.ValidateErrorLocalizerSelector=D,exports.ValidateErrorPortuguese=b,exports.ValidateErrorRussian=m,exports.ValidateErrorSimplifiedChinese=w,exports.ValidateErrorSpanish=d,exports.ValidateErrorTraditionalChinese=y,exports.aac=R,exports.abw=M,exports.accdb=j,exports.addClassName=function(e,t){return t?"".concat(e," ").concat(t):e},exports.addExtraData=wt,exports.addHeaders=_t,exports.applicationSelector=tt,exports.asureColor=Nt,exports.audioSelector=Qe,exports.avi=I,exports.azw=T,exports.bmp=L,exports.brighterColor=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.bz=U,exports.bz2=B,exports.cda=N,exports.checkIsCode=nt,exports.cleanInput=function(e){e&&(e.value="")},exports.colourNameToHex=Tt,exports.completeAsureColor=function(e,t){return void 0===t&&(t=1),jt(Nt(Tt(e)),t)},exports.completeUploadResult=function(e,t,r){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},exports.createListOfMultiTypeFile=function(e){return dt.createFileListMiscelanious(e)},exports.createSyntheticFile=ft,exports.createUploadConfig=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},exports.csh=P,exports.css=O,exports.csv=q,exports.darkerColor=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.docx=H,exports.drawio=V,exports.eot=Z,exports.epub=G,exports.extFileMock=function(e){return{id:e||gt.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:ft("fileName.ext",29360128,"files-ui/mock"),errors:Ft,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}},exports.extFileReconcilation=function(e,t){var r=pt.getExtFileInstanceList(e);if(r){var a=lt([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]},exports.extensionSelector=at,exports.fakeFuiUpload=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,o={url:""};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,o={};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"error",uploadMessage:n}))}}),1700)}))},exports.fileListToExtFileArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:gt.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},exports.fileListToExtFileInstanceArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new it({id:gt.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},exports.fileListvalidator=function(e,t,r,a,n,o){for(var i=[],s=t,c=D(o),u=0,l=void 0;l=e[u];u++){var p=vt(l,a,r,c);if(p.valid){var d=s>0;if(p.valid=d,!d){var f=c.maxFileCount;p.errors=p.errors?lt(lt([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}s--}i.push(p)}return i},exports.fileSizeFormater=e,exports.fontSelector=Ye,exports.freearc=X,exports.getExt=Je,exports.getImageOrientation=function(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))},exports.getLocalFileItemData=function(e,t,r,a){var n="",o=void 0,i=void 0;return e&&"string"==typeof e.name?(n=e.name,o=e.type,i=e.size):t&&"string"==typeof t&&(n=t,o=r,i=a),[n,o,i]},exports.getRandomInt=mt,exports.getURLFileIco=function(e,t){var r="fallBack";if(!e)return r=Ke,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:ot[r],mimeResume:r};r=rt(e.type);var a=Je(e.name);"text"===r&&(r=nt(a)),r===Ke&&(r=at(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:ot[r],mimeResume:r}},exports.gif=J,exports.gzip=K,exports.hexColorToRGB=jt,exports.hexTodec=Bt,exports.html=Q,exports.icalendar=W,exports.imageSelector=$e,exports.instantPreparingToUploadOne=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",st(st({},e),{uploadStatus:"uploading"})):e},exports.isHexColor=It,exports.isUploadAbleExtFile=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},exports.isValidateActive=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},exports.jar=Y,exports.java=$,exports.javascript=ee,exports.jpeg=te,exports.json=re,exports.jsonld=ae,exports.makeErrorUploadResponse=Ct,exports.makeServerResponse=function(e,t,r){return{success:e,message:t,payload:r}},exports.makeSuccessUploadResponse=Dt,exports.makeSyntheticExtFile=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],o=r||function(){switch(mt(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),i=a||"";if(t){if(!a)switch(o){case"error":i="Upload failed. There was an error";break;case"success":i="File was successfully upload";break;default:a=void 0}n=void 0}else{var s=mt(0,3);n.push(Ft[s]),o=void 0,i=void 0}return{id:gt.getNextId(),valid:t,file:e,uploadStatus:o,uploadMessage:i,errors:n}},exports.midi=ne,exports.mimeSelector=rt,exports.mp3=oe,exports.mp4=ie,exports.mpeg=se,exports.mpkg=ce,exports.octet=ue,exports.odp=le,exports.ods=pe,exports.odt=de,exports.oga=fe,exports.ogv=ge,exports.ogx=me,exports.opus=he,exports.otf=xe,exports.pdf=be,exports.php=ve,exports.png=Fe,exports.pptx=we,exports.prepToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.preparingToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},exports.psd=_e,exports.python=Ee,exports.rar=Ae,exports.react=ze,exports.readAsArrayBuffer=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsArrayBuffer(e)}catch(e){n(void 0)}}))},exports.readAsBinaryString=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsBinaryString(e)}catch(e){n(void 0)}}))},exports.readAsDataURL=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.onload=function(){a(o.result)},o.readAsDataURL(e)}catch(e){n(void 0)}}))},exports.readAsText=function(e,t,r,a){return new Promise((function(n,o){try{var i=new FileReader;i.onload=function(){n(i.result)},i.onprogress=function(){null==r||r()},i.onerror=function(){null==a||a()},i.readAsText(e,t||"base64")}catch(e){o(void 0)}}))},exports.resizeImage=function(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var o=new Image;o.src=e,o.onload=function(){var i=document.createElement("canvas"),s=t,c=r,u=o.width,l=o.height;t>u&&r>l?a(e):u>l?u>s&&(l*=s/u,u=s):l>c&&(u*=c/l,l=c),i.width=u,i.height=l;var p=i.getContext("2d");p?(p.drawImage(o,0,0,u,l),a(i.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))},exports.rtf=Se,exports.sanitizeArrExtFile=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),it.toExtFile(e)}))},exports.sass=ke,exports.separateAccept=ht,exports.setNextUploadStatus=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},exports.setPrepToUploading=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.sevenzip=C,exports.sh=De,exports.shrinkWord=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},exports.sleepPreparing=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},exports.sleepTransition=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},exports.swf=Ce,exports.tar=ye,exports.text=Re,exports.textSelector=We,exports.tiff=Me,exports.toUploadableExtFileList=function(e){return e?e.map((function(e){return st(st({},e),{xhr:new XMLHttpRequest})})):[]},exports.ttf=je,exports.typescript=Ie,exports.unableToUploadResult=function(e){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},exports.unexpectedErrorUploadResult=function(e){return st(st({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},exports.uploadExtFile=function(e,t,r,a,n){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(o){return[2,new Promise((function(o,i){return ct(void 0,void 0,void 0,(function(){var i,s,c,u,l,p;return ut(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(i=e.xhr)?(s=r||"POST",c=e.file,(u=new FormData).append(n||"file",c),l=st({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),wt(u,l),p=void 0,[4,Rt(i,s,t,u,a||{})]):(o(St(e)),[2]);case 1:return(p=d.sent()).success?o(Dt(e,p)):o(Ct(e,p)),[3,3];case 2:return d.sent(),o(Ct(e,zt)),[3,3];case 3:return[2]}}))}))}))]}))}))},exports.uploadFile=function(e,t,r,a,n){var o=this;return new Promise((function(i,s){return ct(o,void 0,void 0,(function(){var o,s;return ut(this,(function(c){switch(c.label){case 0:(o=new FormData).append(a||"file",e),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,Rt(new XMLHttpRequest,r,t,o,n)];case 2:return s=c.sent(),i(s),[3,4];case 3:return c.sent(),i(zt),[3,4];case 4:return[2]}}))}))}))},exports.uploadFormData=Rt,exports.uploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.uploadOneExtFile=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.validateAccept=xt,exports.validateExtFile=bt,exports.validateExtFileList=function(e,t,r,a,n,o){var i=[];if(!t)return i;for(var s=t,c=D(o),u=c.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=bt(p,a,r,c)).valid){var d=s>0;p.valid=d,d||(p.errors=p.errors?lt(lt([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),s--}i.push(p)}return i},exports.validateFile=vt,exports.videoSelector=et,exports.vsd=Te,exports.vue=Le,exports.wav=Ue,exports.weba=Ne,exports.webm=Be,exports.webp=Pe,exports.wma=Oe,exports.wmv=qe,exports.woff=He,exports.xlsx=Ve,exports.xml=Ze,exports.xul=Ge,exports.zip=Xe;
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},t={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},r={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},a={maxSizeError:function(t){return"Il file è molto grande. Il tam. il massimo è ".concat(e(t))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},n={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers  ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},o={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},i={maxSizeError:function(t){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(e(t))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},s={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},c={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},u={maxSizeError:function(t){return"File is too big. Max file size allowed is ".concat(e(t))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},l={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},p={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},d={maxSizeError:function(t){return"El archivo es muy grande. El tam. máximo es ".concat(e(t))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},f={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},m={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},g={maxSizeError:function(t){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(e(t))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},h={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},x={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},b={maxSizeError:function(t){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(e(t))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},v={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},F={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},w={maxSizeError:function(t){return"文件太大。 允许的最大文件大小为 ".concat(e(t))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},_={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},E={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},y={maxSizeError:function(t){return"文件太大。 允許的最大文件大小為 ".concat(e(t))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}},A={"ES-es":p,"EN-en":c,"FR-fr":o,"IT-it":r,"PT-pt":x,"RU-ru":m,"ZH-cn":F,"ZH-hk":E},z={"ES-es":l,"EN-en":s,"FR-fr":n,"IT-it":t,"PT-pt":h,"RU-ru":f,"ZH-cn":v,"ZH-hk":_},S=function(e){switch(e){case"ES-es":return z["ES-es"];case"EN-en":default:return z["EN-en"];case"FR-fr":return z["FR-fr"];case"IT-it":return z["IT-it"];case"PT-pt":return z["PT-pt"];case"RU-ru":return z["RU-ru"];case"ZH-cn":return z["ZH-cn"];case"ZH-hk":return z["ZH-hk"]}},k={"ES-es":d,"EN-en":u,"FR-fr":i,"IT-it":a,"PT-pt":b,"RU-ru":g,"ZH-cn":w,"ZH-hk":y},D=function(e){return e&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(e)?k[e]:k["EN-en"]};var R="https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",C="https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",M="https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",j="https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",I="https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",T="https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",L="https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",U="https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",B="https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",N="https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",P="https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",O="https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",q="https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",H="https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",V="https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",Z="https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",G="https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",X="https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",J="https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",K="https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",Q="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",W="https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",$="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",Y="https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",ee="https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",te="https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",re="https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",ae="https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",ne="https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",oe="https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",ie="https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",se="https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",ce="https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",ue="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",le="https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",pe="https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",de="https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",fe="https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",me="https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",ge="https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",he="https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",xe="https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",be="https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",ve="https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",Fe="https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",we="https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",_e="https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",Ee="https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",ye="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",Ae="https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",ze="https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",Se="https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",ke="https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",De="https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",Re="https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",Ce="https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",Me="https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",je="https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",Ie="https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",Te="https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",Le="https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",Ue="https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",Be="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Ne="https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",Pe="https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",Oe="https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",qe="https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",He="https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",Ve="https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",Ze="https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",Ge="https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",Xe="https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",Je=function(e){var t=/(?:\.([^.]+))?$/.exec(e);return t?t[1]:""},Ke="octet",Qe=function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return Ke}},We=function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return Ke}},$e=function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return Ke}},Ye=function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return Ke}},et=function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return Ke}},tt=function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return Ke}},rt=function(e){if(!e||!e.includes("/"))return Ke;var t=e.split("/")[0],r=e.split("/")[1];switch(t){case"application":return tt(r);case"audio":return Qe(r);case"video":return et(r);case"text":return We(r);case"image":return $e(r);case"font":return Ye(r);default:return Ke}},at=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},nt=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},ot={aac:C,accdb:j,abw:M,arc:X,avi:I,azw:T,octet:ue,bmp:L,bz:U,bz2:B,cda:N,csh:P,css:O,csv:q,docx:H,drawio:V,eot:Z,epub:G,gzip:K,gif:J,html:Q,icalendar:W,jar:Y,jpeg:te,javascript:ee,json:re,jsonld:ae,midi:ne,mp3:oe,mp4:ie,mpeg:se,mpkg:ce,mp2t:ue,odp:le,ods:pe,odt:de,oga:fe,ogv:me,ogx:ge,opus:he,otf:xe,png:Fe,pdf:be,php:ve,pptx:we,psd:_e,rar:Ae,rtf:Se,sass:ke,sh:De,swf:Re,tar:ye,tiff:Me,ttf:je,typescript:Ie,text:Ce,vsd:Te,wav:Ue,weba:Ne,webm:Be,webp:Pe,woff:He,wma:Oe,wmv:qe,xhtml:Q,xlsx:Ve,xml:Ze,xul:Ge,zip:Xe,sevenzip:R,python:Ee,java:$,react:ze,vue:Le,fallBack:ue},it=function(){function e(e){var t=e.id,r=e.file,a=e.name,n=e.size,o=e.type,i=e.imageUrl,s=e.valid,c=e.errors,u=e.uploadMessage,l=e.uploadStatus,p=e.progress,d=e.xhr,f=e.extraData,m=e.extraUploadData,g=e.serverResponse,h=e.downloadUrl,x=e.videoUrl;this.id=t,this.file=r,this.name=a,this.size=n,this.type=o,this.imageUrl=i,this.valid=s,this.errors=c,this.uploadStatus=l,this.uploadMessage=u,this.progress=p,this.xhr=d,this.extraData=f,this.extraUploadData=m,this.serverResponse=g,this.downloadUrl=h,this.videoUrl=x}return e.toExtFile=function(e){for(var t={},r=Object.keys(e),a=Object.values(e),n=0;n<a.length;n++){var o=a[n],i=r[n];void 0!==o&&(t[i]=o)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),st=function(){return st=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},st.apply(this,arguments)};function ct(e,t,r,a){return new(r||(r=Promise))((function(n,o){function i(e){try{c(a.next(e))}catch(e){o(e)}}function s(e){try{c(a.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,s)}c((a=a.apply(e,t||[])).next())}))}function ut(e,t){var r,a,n,o,i={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(i=0)),i;)try{if(r=1,a&&(n=2&s[0]?a.return:s[0]?a.throw||((n=a.return)&&n.call(a),0):a.next)&&!(n=n.call(a,s[1])).done)return n;switch(a=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,a=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(n=i.trys,(n=n.length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){i.label=s[1];break}if(6===s[0]&&i.label<n[1]){i.label=n[1],n=s;break}if(n&&i.label<n[2]){i.label=n[2],i.ops.push(s);break}n[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],a=0}finally{r=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}function lt(e,t,r){if(r||2===arguments.length)for(var a,n=0,o=t.length;n<o;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}var pt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,r){return t?(e.fileLists[t]=lt([],r,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return"development"===process.env.NODE_ENV&&console.error("Error on remove",e),0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return void("development"===process.env.NODE_ENV&&console.error("Error on getExtFileInstanceList",e))}},e.setFileListMapPreparing=function(t,r,a,n){if("number"==typeof t||"string"==typeof t)try{var o,i=lt([],r,!0);n&&a&&(i=i.filter((function(e){return e.valid}))),o=(i=a?i.map((function(e){return"success"!==e.uploadStatus&&e.valid?st(st({},e),{uploadStatus:"preparing"}):st({},e)})):i.map((function(e){return"success"!==e.uploadStatus?st(st({},e),{uploadStatus:"preparing"}):st({},e)}))).map((function(e){return new it(e)}));e.setFileList(t,o);return o}catch(e){return void("development"===process.env.NODE_ENV&&console.error("setFileListMapPreparing Error on get List",e))}},e.setFileListMapPreparing2=function(t,r,a,n){return e.setFileList(t,r.map((function(e){return new it(st(st({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),dt=function(){function e(){}return e.createFile=function(e,t,r){var a=new File([],e,{type:r});return Object.defineProperty(a,"size",{get:function(){return t}}),a},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var r=[];return r.push(e.create_aac(t)),r.push(e.create_abw(t)),r.push(e.create_freearc(t)),r.push(e.create_avi(t)),r.push(e.create_azw(t)),r.push(e.create_octet(t)),r.push(e.create_bmp(t)),r.push(e.create_bz(t)),r.push(e.create_bz2(t)),r.push(e.create_cda(t)),r.push(e.create_csh(t)),r.push(e.create_css(t)),r.push(e.create_csv(t)),r.push(e.create_doc(t)),r.push(e.create_docx(t)),r.push(e.create_eot(t)),r.push(e.create_epub(t)),r.push(e.create_gzip(t)),r.push(e.create_gif(t)),r.push(e.create_htm(t)),r.push(e.create_html(t)),r.push(e.create_ico(t)),r.push(e.create_icalendar(t)),r.push(e.create_jar(t)),r.push(e.create_jpeg(t)),r.push(e.create_jpg(t)),r.push(e.create_js(t)),r.push(e.create_json(t)),r.push(e.create_jsonld(t)),r.push(e.create_mid(t)),r.push(e.create_midi(t)),r.push(e.create_x_mid(t)),r.push(e.create_x_midi(t)),r.push(e.create_mjs(t)),r.push(e.create_mp3(t)),r.push(e.create_mp4(t)),r.push(e.create_mpeg(t)),r.push(e.create_mpkg(t)),r.push(e.create_odp(t)),r.push(e.create_ods(t)),r.push(e.create_odt(t)),r.push(e.create_oga(t)),r.push(e.create_ogv(t)),r.push(e.create_ogx(t)),r.push(e.create_opus(t)),r.push(e.create_otf(t)),r.push(e.create_png(t)),r.push(e.create_pdf(t)),r.push(e.create_php(t)),r.push(e.create_ppt(t)),r.push(e.create_pptx(t)),r.push(e.create_rar(t)),r.push(e.create_rtf(t)),r.push(e.create_sh(t)),r.push(e.create_svg(t)),r.push(e.create_swf(t)),r.push(e.create_tar(t)),r.push(e.create_tif(t)),r.push(e.create_tiff(t)),r.push(e.create_ts(t)),r.push(e.create_ttf(t)),r.push(e.create_text(t)),r.push(e.create_typescript(t)),r.push(e.create_vsd(t)),r.push(e.create_wav(t)),r.push(e.create_weba(t)),r.push(e.create_webm(t)),r.push(e.create_webp(t)),r.push(e.create_woff(t)),r.push(e.create_woff2(t)),r.push(e.create_xhtml(t)),r.push(e.create_xlsx(t)),r.push(e.create_xls(t)),r.push(e.create_xml(t)),r.push(e.create_xml_txt(t)),r.push(e.create_xul(t)),r.push(e.create_zip(t)),r.push(e.create_python(t)),r.push(e.create_java(t)),r.push(e.create_react(t)),r.push(e.create_vue(t)),r},e}(),ft=function(e,t,r){return void 0===e&&(e="png-image-file-with-large-name.png"),void 0===t&&(t=455555),void 0===r&&(r="image/png"),dt.createFile(e,t,r)},mt=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}();function gt(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),Math.floor(Math.random()*(t-e))+e}var ht=function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]},xt=function(e,t){for(var r=t.name,a=t.type,n=0;n<e.length;n++){var o=e[n];if(0!==o.length){if("."===o.charAt(0)&&o.includes(Je(r)))return!0;if(a&&a.length>0&&o.includes("/")&&a.includes("/")){var i=o.split("/")[0],s=o.split("/")[1],c=a.split("/")[0],u=a.split("/")[1];if(i===c){if("*"===s)return!0;if(s===u)return!0}}}}return!1},bt=function(e,t,r,a){var n=st({},e),o=[];if(!e.file)return st({},n);if(t){var i=t(n.file).errors;i&&o.push.apply(o,i)}var s=r.maxFileSize,c=r.accept,u=e.file;if(s&&u.size>s){var l=a.maxSizeError;o.push(l(s))}c&&!xt(ht(c),u)&&o.push(a.acceptError);var p=0===o.length;return n=st(st({},n),{valid:p,errors:p?void 0:o})},vt=function(e,t,r,a){var n=mt.getNextId(),o=[];if(t)return st({id:n,file:e},t(e));var i=r.maxFileSize,s=r.accept;if(i&&e.size>i){var c=a.maxSizeError;o.push(c(i))}return s&&!xt(ht(s),e)&&o.push(a.acceptError),{id:n,file:e,valid:0===o.length,errors:o}},Ft=["File is too big. Max file size allowed is 80mb.","File's type is not allowed.","Max amount of files (28) has been reached."];function wt(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.append(r[a],t[r[a]]);e.append("otherValue","HAAAAAAAAAAAAAAa")}function _t(e,t){for(var r=Object.keys(t||{}),a=0;a<r.length&&t;a++)e.setRequestHeader(r[a],t[r[a]])}var Et={success:!1,message:"Timeout error",payload:{}},yt={success:!1,message:"Upload aborted",payload:{}},At={success:!1,message:"Error when parsing JSON response",payload:{}},zt={success:!1,message:"Unexpected error",payload:{}},St=function(e){return st(st({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})},kt=function(e){try{var t=JSON.parse(e.response),r=t.success,a=t.message;return{success:"boolean"==typeof r&&r,message:"string"==typeof a?a:"Error on message response",payload:t.payload||{}}}catch(e){return At}},Dt=function(e,t){return st(st({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})},Rt=function(e,t){return st(st({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},Ct=function(e,t,r,a,n){return void 0===t&&(t="POST"),new Promise((function(o,i){var s=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){o(yt)},e.onloadend=function(e){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return e.readyState,4===e.readyState&&(""!==e.response?o(kt(e)):o(yt)),[2]}))}))},e.open(s,r,!0),_t(e,n),e.send(a)}))};var Mt={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},jt=function(e,t,r){void 0===t&&(t=0);var a=r||"rgba(255, 255, 255, 0.6)";if(!e)return a;var n=e.toUpperCase();if(n.includes("RGBA"))return n;if(n.includes("RGB"))return n.replace("RGB","rgba").replace(")",", ".concat(t,")"));if(!It(Tt(n)))return a;var o,i,s;return o=16*Bt(n.charAt(1))+Bt(n.charAt(2)),i=16*Bt(n.charAt(3))+Bt(n.charAt(4)),s=16*Bt(n.charAt(5))+Bt(n.charAt(6)),"rgba(".concat(o,", ").concat(i,",").concat(s," , ").concat(t,")")},It=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Lt.includes(e.charAt(t)))return!1;return!0};function Tt(e){return e?void 0!==Mt[e.toLocaleLowerCase()]?Mt[e.toLocaleLowerCase()]:e:""}var Lt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],Ut=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Bt=function(e){return Lt.includes(e)?Ut[Lt.indexOf(e)]:0},Nt=function(e){return void 0!==e&&""!==e?e:Pt},Pt="#646c7f";exports.ABORTED_ERROR_RESPONSE=yt,exports.DropzoneEnglish=s,exports.DropzoneFrench=n,exports.DropzoneItalian=t,exports.DropzoneLocalizer=z,exports.DropzoneLocalizerSelector=S,exports.DropzonePortuguese=h,exports.DropzoneRussian=f,exports.DropzoneSimplifiedChinese=v,exports.DropzoneSpanish=l,exports.DropzoneTraditionalChinese=_,exports.ExtFileInstance=it,exports.ExtFileManager=pt,exports.FileIdGenerator=mt,exports.FileItemEnglish=c,exports.FileItemFrench=o,exports.FileItemItalian=r,exports.FileItemLocalizer=A,exports.FileItemLocalizerSelector=function(e){switch(e){case"ES-es":return A["ES-es"];case"EN-en":default:return A["EN-en"];case"FR-fr":return A["FR-fr"];case"IT-it":return A["IT-it"];case"PT-pt":return A["PT-pt"];case"RU-ru":return A["RU-ru"];case"ZH-cn":return A["ZH-cn"];case"ZH-hk":return A["ZH-hk"]}},exports.FileItemPortuguese=x,exports.FileItemRussian=m,exports.FileItemSimplifiedChinese=F,exports.FileItemSpanish=p,exports.FileItemTraditionalChinese=E,exports.FuiUpload=function(e,t,r,a,n){return new Promise((function(o,i){e.upload.onload=function(){},e.upload.ontimeout=function(){return o(Et)},e.upload.onabort=function(){return o(yt)},e.onreadystatechange=function(t){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(t){return 4===e.readyState&&(""!==e.response?o(kt(e)):o(zt)),[2]}))}))},e.open(t,r,!0);for(var s=Object.keys(n),c=0;c<s.length;c++)e.setRequestHeader(s[c],n[s[c]]);e.send(a)}))},exports.JSON_PARSE_ERROR_RESPONSE=At,exports.JsonParseResponse=kt,exports.NAMED_COLORS=Mt,exports.NO_XHR_PROVIDED_ERROR=St,exports.SyntheticFile=dt,exports.TIMEOUT_ERROR_RESPONSE=Et,exports.UNEXPECTED_ERROR_RESPONSE=zt,exports.ValidateErrorEnglish=u,exports.ValidateErrorFrench=i,exports.ValidateErrorItalian=a,exports.ValidateErrorLocalizer=k,exports.ValidateErrorLocalizerSelector=D,exports.ValidateErrorPortuguese=b,exports.ValidateErrorRussian=g,exports.ValidateErrorSimplifiedChinese=w,exports.ValidateErrorSpanish=d,exports.ValidateErrorTraditionalChinese=y,exports.aac=C,exports.abw=M,exports.accdb=j,exports.addClassName=function(e,t){return t?"".concat(e," ").concat(t):e},exports.addExtraData=wt,exports.addHeaders=_t,exports.applicationSelector=tt,exports.asureColor=Nt,exports.audioSelector=Qe,exports.avi=I,exports.azw=T,exports.bmp=L,exports.brighterColor=function(e,t){void 0===t&&(t=25);var r="",a=(100+t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.bz=U,exports.bz2=B,exports.cda=N,exports.checkIsCode=nt,exports.cleanInput=function(e){e&&(e.value="")},exports.colourNameToHex=Tt,exports.completeAsureColor=function(e,t){return void 0===t&&(t=1),jt(Nt(Tt(e)),t)},exports.completeUploadResult=function(e,t,r){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:t.message,uploadStatus:r}),serverResponse:t}},exports.createListOfMultiTypeFile=function(e){return dt.createFileListMiscelanious(e)},exports.createSyntheticFile=ft,exports.createUploadConfig=function(e,t,r,a,n){return{url:e,method:t,headers:r,uploadLabel:a,cleanonUpload:n}},exports.csh=P,exports.css=O,exports.csv=q,exports.darkerColor=function(e,t){void 0===t&&(t=25);var r="",a=(100-t)/100,n=0,o=0,i=0;if(It(Tt(e)))n=16*Bt(e.charAt(1))+Bt(e.charAt(2)),o=16*Bt(e.charAt(3))+Bt(e.charAt(4)),i=16*Bt(e.charAt(5))+Bt(e.charAt(6)),r="rgb(".concat(n*a,", ").concat(o*a,",").concat(i*a,")");else if(e.includes("rgba")){var s=e.replace("rgba(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}else if(e.includes("rgb")){s=e.replace("rgb(","").split(",");r="rgb(".concat(parseInt(s[0],10)*a,", ").concat(parseInt(s[1],10)*a,",").concat(parseInt(s[2],10)*a,")")}return r},exports.docx=H,exports.drawio=V,exports.eot=Z,exports.epub=G,exports.extFileMock=function(e){return{id:e||mt.getNextId(),name:"fileName.ext",size:29360128,type:"files-ui/mock",file:ft("fileName.ext",29360128,"files-ui/mock"),errors:Ft,uploadMessage:"uploaded",uploadStatus:"preparing",valid:!1,progress:28,xhr:new XMLHttpRequest,extraData:{extraData1:"files-ui is the best",extraData2:{id:1,name:"files-ui.mock"},deleted:!0},downloadUrl:"https://www.files-ui.com/mock/file-download"}},exports.extFileReconcilation=function(e,t){var r=pt.getExtFileInstanceList(e);if(r){var a=lt([],t,!0);if(a=a.filter((function(e){return-1===(null==r?void 0:r.findIndex((function(t){return t.id===e.id})))})),r.length!==t.length||0===t.length)return;for(var n=0;n<r.length;n++)void 0===t[n].uploadStatus&&"preparing"===r[n].uploadStatus&&(r[n].uploadStatus=void 0)}return[]},exports.extensionSelector=at,exports.fakeFuiUpload=function(e,t){void 0===t&&(t=S("EN-en"));var r=e.toExtFile();return new Promise((function(e,a){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var a=!0,n=t.fakeuploadsuccess,o={url:""};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"success",uploadMessage:n}))}else{a=!1,n=t.fakeUploadError,o={};e(st(st({},r),{serverResponse:{success:a,message:n,payload:o},uploadStatus:"error",uploadMessage:n}))}}),1700)}))},exports.fileListToExtFileArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push({id:mt.getNextId(),file:a,name:a.name,size:a.size,type:a.type});return t},exports.fileListToExtFileInstanceArray=function(e){for(var t=[],r=0,a=void 0;a=e[r];r++)t.push(new it({id:mt.getNextId(),file:a,name:a.name,size:a.size,type:a.type}));return t},exports.fileListvalidator=function(e,t,r,a,n,o){for(var i=[],s=t,c=D(o),u=0,l=void 0;l=e[u];u++){var p=vt(l,a,r,c);if(p.valid){var d=s>0;if(p.valid=d,!d){var f=c.maxFileCount;p.errors=p.errors?lt(lt([],p.errors,!0),[f(n||1/0)],!1):[f(n||1/0)]}s--}i.push(p)}return i},exports.fileSizeFormater=e,exports.fontSelector=Ye,exports.freearc=X,exports.getExt=Je,exports.getImageOrientation=function(e){return new Promise((function(t,r){if(e&&0!==e.length)try{var a=new Image;a.src=e,a.onerror=function(e){r("landscape")},a.onload=function(){var e=a.width,r=a.height;t(e>r?"landscape":"portrait")}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to get the image orientation"),r("landscape")}else r("landscape")}))},exports.getLocalFileItemData=function(e,t,r,a){var n="",o=void 0,i=void 0;return e&&"string"==typeof e.name?(n=e.name,o=e.type,i=e.size):t&&"string"==typeof t&&(n=t,o=r,i=a),[n,o,i]},exports.getRandomInt=gt,exports.getURLFileIco=function(e,t){var r="fallBack";if(!e)return r=Ke,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:r}:{url:ot[r],mimeResume:r};r=rt(e.type);var a=Je(e.name);"text"===r&&(r=nt(a)),r===Ke&&(r=at(a));var n=null==t?void 0:t[r];return void 0!==n?{url:n,mimeResume:r}:{url:ot[r],mimeResume:r}},exports.getURLFileIcoFromNameAndType=function(e,t,r){var a="octet";if(!e)return a=Ke,(null==r?void 0:r.fallBack)?{url:null==r?void 0:r.fallBack,mimeResume:a}:{url:ot[a],mimeResume:a};a=rt(t);var n=Je(e);"text"===a&&(a=nt(n)),a===Ke&&(a=at(n));var o=null==r?void 0:r[a];return void 0!==o?{url:o,mimeResume:a}:{url:ot[a],mimeResume:a}},exports.gif=J,exports.gzip=K,exports.hexColorToRGB=jt,exports.hexTodec=Bt,exports.html=Q,exports.icalendar=W,exports.imageSelector=$e,exports.instantPreparingToUploadOne=function(e){return"preparing"===e.uploadStatus?(e.uploadStatus="uploading",st(st({},e),{uploadStatus:"uploading"})):e},exports.isHexColor=It,exports.isUploadAbleExtFile=function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus},exports.isValidateActive=function(e,t,r,a){return null!=e||null!=t||null!=r||null!=a},exports.jar=Y,exports.java=$,exports.javascript=ee,exports.jpeg=te,exports.json=re,exports.jsonld=ae,exports.makeErrorUploadResponse=Rt,exports.makeServerResponse=function(e,t,r){return{success:e,message:t,payload:r}},exports.makeSuccessUploadResponse=Dt,exports.makeSyntheticExtFile=function(e,t,r,a){void 0===t&&(t=Math.ceil(28*Math.random())%2==0);var n=[],o=r||function(){switch(gt(0,4)){case 0:return"error";case 1:return"uploading";case 2:return"success";default:return}}(),i=a||"";if(t){if(!a)switch(o){case"error":i="Upload failed. There was an error";break;case"success":i="File was successfully upload";break;default:a=void 0}n=void 0}else{var s=gt(0,3);n.push(Ft[s]),o=void 0,i=void 0}return{id:mt.getNextId(),valid:t,file:e,uploadStatus:o,uploadMessage:i,errors:n}},exports.midi=ne,exports.mimeSelector=rt,exports.mp3=oe,exports.mp4=ie,exports.mpeg=se,exports.mpkg=ce,exports.octet=ue,exports.odp=le,exports.ods=pe,exports.odt=de,exports.oga=fe,exports.ogv=me,exports.ogx=ge,exports.opus=he,exports.otf=xe,exports.pdf=be,exports.php=ve,exports.png=Fe,exports.pptx=we,exports.prepToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.preparingToUploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){"preparing"===e.uploadStatus?(e.uploadStatus="uploading",t(st(st({},e),{uploadStatus:"uploading"}))):t(e)}),1500)}))},exports.psd=_e,exports.python=Ee,exports.rar=Ae,exports.react=ze,exports.readAsArrayBuffer=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsArrayBuffer(e)}catch(e){n(void 0)}}))},exports.readAsBinaryString=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onload=function(){a(o.result)},o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.readAsBinaryString(e)}catch(e){n(void 0)}}))},exports.readAsDataURL=function(e,t,r){return new Promise((function(a,n){try{var o=new FileReader;o.onprogress=function(){null==t||t()},o.onerror=function(){null==r||r()},o.onload=function(){a(o.result)},o.readAsDataURL(e)}catch(e){n(void 0)}}))},exports.readAsText=function(e,t,r,a){return new Promise((function(n,o){try{var i=new FileReader;i.onload=function(){n(i.result)},i.onprogress=function(){null==r||r()},i.onerror=function(){null==a||a()},i.readAsText(e,t||"base64")}catch(e){o(void 0)}}))},exports.resizeImage=function(e,t,r){return void 0===t&&(t=135),void 0===r&&(r=120),new Promise((function(a,n){try{var o=new Image;o.src=e,o.onload=function(){var i=document.createElement("canvas"),s=t,c=r,u=o.width,l=o.height;t>u&&r>l?a(e):u>l?u>s&&(l*=s/u,u=s):l>c&&(u*=c/l,l=c),i.width=u,i.height=l;var p=i.getContext("2d");p?(p.drawImage(o,0,0,u,l),a(i.toDataURL())):("development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0))}}catch(e){"development"===process.env.NODE_ENV&&console.error("An error ocurred when trying to make a thumnail"),n(void 0)}}))},exports.rtf=Se,exports.sanitizeArrExtFile=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),it.toExtFile(e)}))},exports.sass=ke,exports.separateAccept=ht,exports.setNextUploadStatus=function(e,t){var r=e.uploadStatus,a=t.uploadStatus;"preparing"===r&&["aborted",void 0].includes(a)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===r&&["aborted",void 0].includes(a)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)},exports.setPrepToUploading=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"uploading"}))}),1500)}))},exports.sevenzip=R,exports.sh=De,exports.shrinkWord=function(e,t){void 0===e&&(e=""),void 0===t&&(t=!1);var r=e;return t?e.length>=20&&(r=e.slice(0,10)+"..."+e.slice(-7)):e.length>=30&&(r=e.slice(0,13)+"..."+e.slice(-8)),r},exports.sleepPreparing=function(e){return void 0===e&&(e=5e3),new Promise((function(t,r){setTimeout((function(){t()}),e)}))},exports.sleepTransition=function(e){return void 0===e&&(e=1500),new Promise((function(t,r){setTimeout((function(){t(!0)}),e)}))},exports.swf=Re,exports.tar=ye,exports.text=Ce,exports.textSelector=We,exports.tiff=Me,exports.toUploadableExtFileList=function(e){return e?e.map((function(e){return st(st({},e),{xhr:new XMLHttpRequest})})):[]},exports.ttf=je,exports.typescript=Ie,exports.unableToUploadResult=function(e){return{id:e.id,uploadedFile:st(st({},e),{uploadMessage:"Unable to upload. XHR was not provided",uploadStatus:"error"}),serverResponse:{success:!1,message:"Error on upload: Unable to upload. XHR was not provided ",payload:{}}}},exports.unexpectedErrorUploadResult=function(e){return st(st({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})},exports.uploadExtFile=function(e,t,r,a,n){return ct(void 0,void 0,void 0,(function(){return ut(this,(function(o){return[2,new Promise((function(o,i){return ct(void 0,void 0,void 0,(function(){var i,s,c,u,l,p;return ut(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(i=e.xhr)?(s=r||"POST",c=e.file,(u=new FormData).append(n||"file",c),l=st({otherValue:"other valueee haaaa",param2:{tecnica:"KIKOHUUUU",friend:"Chaos",age:25}},e.extraUploadData),wt(u,l),p=void 0,[4,Ct(i,s,t,u,a||{})]):(o(St(e)),[2]);case 1:return(p=d.sent()).success?o(Dt(e,p)):o(Rt(e,p)),[3,3];case 2:return d.sent(),o(Rt(e,zt)),[3,3];case 3:return[2]}}))}))}))]}))}))},exports.uploadFile=function(e,t,r,a,n){var o=this;return new Promise((function(i,s){return ct(o,void 0,void 0,(function(){var o,s;return ut(this,(function(c){switch(c.label){case 0:(o=new FormData).append(a||"file",e),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,Ct(new XMLHttpRequest,r,t,o,n)];case 2:return s=c.sent(),i(s),[3,4];case 3:return c.sent(),i(zt),[3,4];case 4:return[2]}}))}))}))},exports.uploadFormData=Ct,exports.uploadOne=function(e){return new Promise((function(t,r){setTimeout((function(){t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.uploadOneExtFile=function(e){return new Promise((function(t,r){setTimeout((function(){e.uploadStatus="success",t(st(st({},e),{uploadStatus:"success"}))}),2e3)}))},exports.validateAccept=xt,exports.validateExtFile=bt,exports.validateExtFileList=function(e,t,r,a,n,o){var i=[];if(!t)return i;for(var s=t,c=D(o),u=c.maxFileCount,l=0;l<e.length;l++){var p=e[l];if((p=bt(p,a,r,c)).valid){var d=s>0;p.valid=d,d||(p.errors=p.errors?lt(lt([],p.errors,!0),[u(n||1/0)],!1):[u(n||1/0)]),s--}i.push(p)}return i},exports.validateFile=vt,exports.videoSelector=et,exports.vsd=Te,exports.vue=Le,exports.wav=Ue,exports.weba=Ne,exports.webm=Be,exports.webp=Pe,exports.wma=Oe,exports.wmv=qe,exports.woff=He,exports.xlsx=Ve,exports.xml=Ze,exports.xul=Ge,exports.zip=Xe;
 //# sourceMappingURL=index.js.map
diff --git a/src/files-ui/core/index.js.map b/src/files-ui/core/index.js.map
index 144181b99e7a26e0f9a7d1618d93b1a3354e9586..bfd639ec327266600a8f7301ac3a51d3791fe975 100644
--- a/src/files-ui/core/index.js.map
+++ b/src/files-ui/core/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/utils/addClassName.ts","../src/upload/utils.upload.ts","../src/types/UploadConfig.ts","../src/mocks/extFileMock.ts","../src/file-manager/reconcilation.ts","../src/utils/fakeupload.utils.ts","../src/utils/fileListParser.ts","../src/reader/imageOrientation.ts","../src/utils/getLocalFileItemData.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/dropzone.utils.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/utils/shrinkWord.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    maxFiles: number | undefined,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","DropzoneLocalizer","DropzoneLocalizerSelector","local","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","result","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","mimeUrlList","arc","mp2t","xhtml","fallBack","ExtFileInstance","extFile","id","file","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","length","currentValue","currKey","undefined","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","process","env","NODE_ENV","console","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createSyntheticFile","FileIdGenerator","getRandomInt","min","max","Math","floor","random","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","validateExtFile","validator","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","validateFile","idGenerated","listOfErrors","addExtraData","formData","extraDataKeys","append","addHeaders","headers","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","message","payload","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","method","endpoint","data","Promise","resolve","reject","finalMethod","toUpperCase","upload","onload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","hexColorToRGB","colorInput","perc","defaultColor","resultDefault","color","replace","isHexColor","colourNameToHex","component1","component2","component3","hexTodec","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","baseClassName","className","percentage","brightedColor","increase","components","parseInt","inputElement","value","uploadStatusresult","uploadedFile","url","uploadLabel","cleanonUpload","darkedColor","reduce","XMLHttpRequest","extraData1","extraData2","deleted","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I","setTimeout","fileList","extFileArray","f","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","maxFileErrorMessenger","Infinity","imageSource","img_1","Image","src","onerror","ev","width","height","localFileName","localFileType","localFileSize","customIcons","mimeResume","extention","customUrl","validateFilesFlag","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","onProgress","onError","reader_4","FileReader","onprogress","readAsArrayBuffer","reader_3","readAsBinaryString","reader_1","readAsDataURL","encoding","reader_2","readAsText","base64Str","maxWidth","maxHeight","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","ctx","getContext","drawImage","toDataURL","arrExtFile","_a","extFileobj","prevStatus","nextStstaus","word","card","newWord","slice","preparingTime","time","extFileList","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","label","_this","sent","localValidatorProps","fileListResult","remaining","currentExtFile"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sources":["../src/utils/fileSizeFormatter.ts","../src/localization/Italian/localization.italian.ts","../src/localization/French/localization.french.ts","../src/localization/English/localization.english.ts","../src/localization/Spanish/localization.spanish.ts","../src/localization/Russian/localization.russian.ts","../src/localization/Portuguese/localization.portuguese.ts","../src/localization/Chinese-simplified/localization.simplifiedChinese.ts","../src/localization/Chinese-traditional/localization.traditionalChinese.ts","../src/localization/FileItem.localization.ts","../src/localization/dropzone.localization.ts","../src/localization/validationError.localization.ts","../src/mime/icons.ts","../src/utils/getExt.ts","../src/mime/mime.ts","../src/types/ExtFile.ts","../src/types/ExtFileManager.ts","../src/synthetic-file/SyntheticFile.ts","../src/utils/IdGenerator.ts","../src/utils/randomInt.ts","../src/utils/input.utils.ts","../src/validation/separateAccept.ts","../src/validation/validateAccept.ts","../src/validation/fileValidator.ts","../src/validation/fakeerros.ts","../src/upload/addExtraData.upload.ts","../src/upload/addheaders.upload.ts","../src/upload/errors.upload.ts","../src/upload/response.upload.ts","../src/upload/upload.ts","../src/color/namedColors.ts","../src/color/colors.ts","../src/utils/addClassName.ts","../src/upload/utils.upload.ts","../src/types/UploadConfig.ts","../src/mocks/extFileMock.ts","../src/file-manager/reconcilation.ts","../src/utils/fakeupload.utils.ts","../src/utils/fileListParser.ts","../src/reader/imageOrientation.ts","../src/utils/getLocalFileItemData.ts","../src/utils/isUploadAbleExtFile.ts","../src/utils/dropzone.utils.ts","../src/synthetic-file/syntheticfileGenerator.ts","../src/validation/randomStatus.ts","../src/reader/readers.ts","../src/reader/resizeImage.ts","../src/utils/shrinkWord.ts"],"sourcesContent":["/**\r\n * Gives a XX.XX format in Bytes KB, MB, GB or TB\r\n * @param fileSize file size to give format in Bytes\r\n */\r\n export const fileSizeFormater = (fileSize?: number | false): string| undefined => {\r\n    let result = \"\";\r\n    if (!fileSize) {\r\n        return undefined;\r\n    }\r\n    if (fileSize < 1024) {\r\n        result = fileSize + \" Bytes\"\r\n    } else {\r\n        //KB\r\n        if (fileSize < 1024 * 1024) {\r\n            result = (fileSize / 1024).toFixed(2) + \" KB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024) {\r\n            result = ((fileSize / 1024) / 1024).toFixed(2) + \" MB\";\r\n        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {\r\n            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + \" GB\";\r\n        } else {\r\n            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + \" TB\";\r\n        }\r\n    }\r\n    return result;\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Italian translation for Dropzone component\r\n */\r\nexport const DropzoneItalian: LocalLabels = {\r\n    defaultLabel: \"Trascina qui i tuoi file\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },\r\n    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,\r\n    noFilesMessage: `Nessun file valido in attesa di essere caricato`,\r\n    footer: {\r\n        acceptAll: `Tutti i tipi di file sono accettati`,\r\n        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Caricamento\",\r\n        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Il file è stato caricato con successo \",\r\n    fakeUploadError: \"Errore di caricamento del file\",\r\n}\r\n\r\n/**\r\n * Italian translation for FileItem component\r\n */\r\nexport const FileItemItalian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Dimensione: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"preparazione\",\r\n        uploading: \"In corso\",\r\n        success: \"Successo\",\r\n        valid: \"Valido\",\r\n        denied: \"Non válido\",\r\n        error: \"Errore\",\r\n        aborted:\"Interrotto\"\r\n    },\r\n}\r\n/**\r\n * Italian translation for Validation Errors\r\n */\r\n export const ValidateErrorItalian: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo di file illegale`,\r\n    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * French translation for Dropzone component\r\n */\r\nexport const DropzoneFrench: LocalLabels = {\r\n    defaultLabel: \"Déposez vos fichiers ici\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },\r\n    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,\r\n    noFilesMessage: `Aucun fichier valide ne manque`,\r\n    footer: {\r\n        acceptAll: `Tous types de fichiers acceptés `,\r\n        acceptCustom: (accept) => `Types de fichier: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Envoyer\",\r\n        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Le fichier a été téléchargé avec succès\",\r\n    fakeUploadError: \"Erreur lors du téléchargement \",\r\n}\r\n\r\n/**\r\n * French translation for FileItem component\r\n */\r\nexport const FileItemFrench: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Le nom: `,\r\n        size: \"Le taille: \",\r\n        type: \"Le type: \"\r\n    },\r\n    status: {\r\n        preparing:\"préparer\",\r\n        uploading: \"En cours\",\r\n        success: \"Succès\",\r\n        valid: \"Valide\",\r\n        denied: \"Refusé\",\r\n        error: \"Erreur\",\r\n        aborted:\"Interrompu\"\r\n    },\r\n}\r\n/**\r\n * French translation for Validation Errors\r\n */\r\n export const ValidateErrorFrench: LocalLabels = {\r\n    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Type de fichier illégal `,\r\n    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneEnglish: LocalLabels = {\r\n    defaultLabel: \"Drop your files here\",\r\n    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },\r\n    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,\r\n    noFilesMessage: `There is no missing valid file to upload`,\r\n    footer: {\r\n        acceptAll: `All file types accepted`,\r\n        acceptCustom: (accept) => `Allowed types: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Upload files\",\r\n        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"File was successfuly uploaded\",\r\n    fakeUploadError: \"Error on uploading. Please try again later.\",\r\n}\r\n\r\n/**\r\n * English translation for FileItem component\r\n */\r\nexport const FileItemEnglish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Name: `,\r\n        size: \"Size: \",\r\n        type: \"Type: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparing\",\r\n        uploading: \"Uploading\",\r\n        success: \"Success\",\r\n        valid: \"Valid\",\r\n        denied: \"Not valid\",\r\n        error: \"Error\",\r\n        aborted:\"Aborted\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorEnglish: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `File type is not allowed`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Max amount of files (${maxFiles}) has been reached`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Spanish translation for Dropzone component\r\n */\r\nexport const DropzoneSpanish: LocalLabels = {\r\n    defaultLabel: \"Suelta tus archivos aquí\",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,\r\n    noFilesMessage: `No hay archivos válidos pendientes por subir`,\r\n    footer: {\r\n        acceptAll: `Todos los tipos de archivo aceptados`,\r\n        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Subir\",\r\n        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"El archivo se subió correctamente\",\r\n    fakeUploadError: \"Error al subir el archivo\",\r\n}\r\n\r\n/**\r\n * Spanish translation for FileItem component\r\n */\r\nexport const FileItemSpanish: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nombre: `,\r\n        size: \"Tamaño: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Subiendo\",\r\n        success: \"Éxito\",\r\n        valid: \"Válido\",\r\n        denied: \"No válido\",\r\n        error: \"Error\",\r\n        aborted: \"Anulado\"\r\n    },\r\n}\r\n/**\r\n * Spanish translation for Validation Errors\r\n */\r\nexport const ValidateErrorSpanish: LocalLabels = {\r\n    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Tipo de archivo no permitido`,\r\n    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`\r\n}\r\n","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Russian translation for Dropzone component\r\n */\r\nexport const DropzoneRussian: LocalLabels = {\r\n    defaultLabel: \"Перетащите сюда свои файлы.\",\r\n    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },\r\n    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,\r\n    noFilesMessage: `Действительный файл не отсутствует для загрузки`,\r\n    footer: {\r\n        acceptAll: `Принимаются все типы файлов `,\r\n        acceptCustom: (accept) => `Допустимые типы: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Отправить\",\r\n        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"Файл был успешно загружен\",\r\n    fakeUploadError: \"Ошибка при загрузке\",\r\n}\r\n\r\n/**\r\n * Russian translation for FileItem component\r\n *\r\n */\r\nexport const FileItemRussian: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Имя: `,\r\n        size: \"Размер: \",\r\n        type: \"Tип: \"\r\n    },\r\n    status: {\r\n        preparing:\"подготовка\",\r\n        uploading: \"Загрузка\",\r\n        success: \"успех\",\r\n        valid: \"годный\",\r\n        denied: \"выкинутый\",\r\n        error: \"ошибка\",\r\n        aborted:\"прерванный\"\r\n    },\r\n}\r\n\r\n/**\r\n * Russian translation for Validation Errors\r\n */\r\nexport const ValidateErrorRussian: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `Тип файла не разрешен`,\r\n    maxFileCount: (maxFiles) =>\r\n        `Достигнуто максимальное количество файлов (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n/**\r\n * Portuguese translation for Dropzone\r\n */\r\nexport const DropzonePortuguese: LocalLabels = {\r\n    defaultLabel: \"Solte seus arquivos aqui \",\r\n\r\n    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },\r\n    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,\r\n    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,\r\n    footer: {\r\n        acceptAll: `Todos os tipos de arquivo são aceitos`,\r\n        acceptCustom: (accept) => `Tipos permitidos: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"Enviar\",\r\n        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"O arquivo foi enviado com sucesso\",\r\n    fakeUploadError: \"Erro ao enviar\",\r\n}\r\n\r\n\r\n/**\r\n * Portuguese translation for FileItem component\r\n */\r\nexport const FileItemPortuguese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `Nome: `,\r\n        size: \"Tamanho: \",\r\n        type: \"Tipo: \"\r\n    },\r\n    status: {\r\n        preparing:\"Preparando\",\r\n        uploading: \"Enviando\",\r\n        success: \"Êxito\",\r\n        valid: \"válido\",\r\n        denied: \"Negado\",\r\n        error: \"Erro\",\r\n        aborted:\"Abortado\"\r\n    },\r\n}\r\n/**\r\n * Portuguese translation for Validation Errors\r\n */\r\n export const ValidateErrorPortuguese: LocalLabels = {\r\n    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `O tipo de arquivo não é permitido `,\r\n    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`\r\n}","import { LocalLabels } from \"../../types\";\r\nimport { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneSimplifiedChinese: LocalLabels = {\r\n    defaultLabel: \"将您的文件放在这里\",\r\n    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,\r\n    noFilesMessage: `没有缺少要加载的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件类型`,\r\n        acceptCustom: (accept) => `允许的类型: ${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上传文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上传\",\r\n    fakeUploadError: \"上传时出错\",\r\n}\r\n\r\n/**\r\n * Chinnese translation for FileItem component\r\n */\r\nexport const FileItemSimplifiedChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文档名称: `,\r\n        size: \"尺寸: \",\r\n        type: \"文件类型: \"\r\n    },\r\n    status: {\r\n        preparing:\"预加载\",\r\n        uploading: \"上传\",\r\n        success: \"成功\",\r\n        valid: \"接受的文件\",\r\n        denied: \"被拒绝的文件\",\r\n        error: \"错误\",\r\n        aborted:\"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorSimplifiedChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件类型不允许`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已达到最大文件数 (${maxFiles})`\r\n}","import { fileSizeFormater } from \"../../utils/fileSizeFormatter\";\r\nimport { LocalLabels } from \"../../types\";\r\n\r\n\r\n/**\r\n * English translation for Dropzone component\r\n */\r\nexport const DropzoneTraditionalChinese: LocalLabels = {\r\n    defaultLabel: \"把你的文件放在這裡 \",\r\n    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },\r\n    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,\r\n    noFilesMessage: `沒有缺少要上傳的有效文件`,\r\n    footer: {\r\n        acceptAll: `接受所有文件類型`,\r\n        acceptCustom: (accept) => `允許的類型:${accept}`\r\n    },\r\n    header: {\r\n        uploadFilesMessage: \"上傳文件\",\r\n        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,\r\n        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`\r\n    },\r\n    fakeuploadsuccess: \"文件已成功上傳\",\r\n    fakeUploadError: \"上傳時出錯\",\r\n}\r\n\r\n/**\r\n * Chinese translation for FileItem component\r\n */\r\nexport const FileItemTraditionalChinese: LocalLabels = {\r\n    fullInfoLayer: {\r\n        name: `文檔名稱: `,\r\n        size: \"文件大小: \",\r\n        type: \"文件類型: \"\r\n    },\r\n    status: {\r\n        preparing: \"預加載\",\r\n        uploading: \"上傳\",\r\n        success: \"成功\",\r\n        valid: \"有效文件\",\r\n        denied: \"無效文件\",\r\n        error: \"錯誤\",\r\n        aborted: \"中止\"\r\n    },\r\n}\r\n\r\n/**\r\n * English translation for Validation Errors\r\n */\r\nexport const ValidateErrorTraditionalChinese: LocalLabels = {\r\n    maxSizeError: (maxSize) =>\r\n        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,\r\n    acceptError: `文件類型不允許`,\r\n    maxFileCount: (maxFiles) =>\r\n        `已達到最大文件數 (${maxFiles})`\r\n}","import { FileItemRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"../types\";\r\nimport { FileItemEnglish } from \"./English/localization.english\";\r\nimport { FileItemFrench } from \"./French/localization.french\";\r\nimport { FileItemPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { FileItemSpanish } from \"./Spanish/localization.spanish\";\r\nimport { FileItemSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { FileItemTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { FileItemItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const FileItemLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": FileItemSpanish,\r\n    \"EN-en\": FileItemEnglish,\r\n    \"FR-fr\": FileItemFrench,\r\n    \"IT-it\": FileItemItalian,\r\n    \"PT-pt\": FileItemPortuguese,\r\n    \"RU-ru\": FileItemRussian,\r\n    \"ZH-cn\": FileItemSimplifiedChinese,\r\n    \"ZH-hk\": FileItemTraditionalChinese\r\n}\r\n\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return FileItemLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return FileItemLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return FileItemLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return FileItemLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return FileItemLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return FileItemLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return FileItemLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return FileItemLocalizer[\"ZH-hk\"];\r\n        default: return FileItemLocalizer[\"EN-en\"];\r\n    }\r\n}","import { DropzoneRussian } from \"./Russian/localization.russian\";\r\nimport { DropzoneEnglish } from \"./English/localization.english\";\r\nimport { DropzoneFrench } from \"./French/localization.french\";\r\nimport { DropzonePortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { DropzoneSpanish } from \"./Spanish/localization.spanish\";\r\nimport { DropzoneSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { DropzoneTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { DropzoneItalian } from \"./Italian/localization.italian\";\r\nimport { ComponentLocalizer, Localization, LocalLabels } from \"../types\";\r\n\r\nexport const DropzoneLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": DropzoneSpanish,\r\n    \"EN-en\": DropzoneEnglish,\r\n    \"FR-fr\": DropzoneFrench,\r\n    \"IT-it\": DropzoneItalian,\r\n    \"PT-pt\": DropzonePortuguese,\r\n    \"RU-ru\": DropzoneRussian,\r\n    \"ZH-cn\": DropzoneSimplifiedChinese,\r\n    \"ZH-hk\": DropzoneTraditionalChinese\r\n\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    switch (local) {\r\n        case \"ES-es\": return DropzoneLocalizer[\"ES-es\"];\r\n        case \"EN-en\": return DropzoneLocalizer[\"EN-en\"];\r\n        case \"FR-fr\": return DropzoneLocalizer[\"FR-fr\"];\r\n        case \"IT-it\": return DropzoneLocalizer[\"IT-it\"];\r\n        case \"PT-pt\": return DropzoneLocalizer[\"PT-pt\"];\r\n        case \"RU-ru\": return DropzoneLocalizer[\"RU-ru\"];\r\n        case \"ZH-cn\": return DropzoneLocalizer[\"ZH-cn\"];\r\n        case \"ZH-hk\": return DropzoneLocalizer[\"ZH-hk\"];\r\n        default: return DropzoneLocalizer[\"EN-en\"];\r\n    }\r\n}","import { ValidateErrorRussian } from \"./Russian/localization.russian\";\r\nimport { ComponentLocalizer, LocalLabels, Localization } from \"./../types\";\r\nimport { ValidateErrorEnglish } from \"./English/localization.english\";\r\nimport { ValidateErrorFrench } from \"./French/localization.french\";\r\nimport { ValidateErrorPortuguese } from \"./Portuguese/localization.portuguese\";\r\nimport { ValidateErrorSpanish } from \"./Spanish/localization.spanish\";\r\nimport { ValidateErrorSimplifiedChinese } from \"./Chinese-simplified/localization.simplifiedChinese\";\r\nimport { ValidateErrorTraditionalChinese } from \"./Chinese-traditional/localization.traditionalChinese\";\r\nimport { ValidateErrorItalian } from \"./Italian/localization.italian\";\r\n\r\nexport const ValidateErrorLocalizer: ComponentLocalizer = {\r\n    \"ES-es\": ValidateErrorSpanish,\r\n    \"EN-en\": ValidateErrorEnglish,\r\n    \"FR-fr\": ValidateErrorFrench,\r\n    \"IT-it\": ValidateErrorItalian,\r\n    \"PT-pt\": ValidateErrorPortuguese,\r\n    \"RU-ru\": ValidateErrorRussian,\r\n    \"ZH-cn\": ValidateErrorSimplifiedChinese,\r\n    \"ZH-hk\": ValidateErrorTraditionalChinese,\r\n}\r\n/**\r\n * Secure translation through a selector\r\n * @param local the Localization\r\n * @returns a ComponentLocalizer object that contains the translation\r\n */\r\nexport const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {\r\n    if (!local || ![\"ES-es\", \"EN-en\", \"FR-fr\", \"IT-it\", \"PT-pt\", \"RU-ru\", \"ZH-cn\", \"ZH-hk\"].includes(local)) {\r\n        return ValidateErrorLocalizer[\"EN-en\"];\r\n    }\r\n    return ValidateErrorLocalizer[local];\r\n}","export const sevenzip = \"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png\";\r\nexport const aac = \"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png\";\r\nexport const abw = \"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png\";\r\nexport const accdb = \"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png\";\r\nexport const avi = \"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png\";\r\nexport const azw = \"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png\";\r\nexport const bmp = \"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png\";\r\nexport const bz = \"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png\";\r\nexport const bz2 = \"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png\";\r\nexport const c = \"https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png\";\r\nexport const cda = \"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png\";\r\nexport const csh = \"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png\";\r\nexport const css = \"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png\";\r\nexport const csv = \"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png\";\r\nexport const docx = \"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png\";\r\nexport const docx2 = \"https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png\";\r\nexport const drawio = \"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png\";\r\nexport const dw = \"https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png\";\r\nexport const eml = \"https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png\";\r\nexport const eot = \"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png\";\r\nexport const eps = \"https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png\";\r\nexport const epub = \"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png\";\r\nexport const freearc = \"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png\";\r\nexport const gif = \"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png\";\r\nexport const gzip = \"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png\";\r\nexport const html = \"https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png\";\r\nexport const icalendar = \"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png\";\r\nexport const ind = \"https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png\";\r\nexport const ini = \"https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png\";\r\nexport const java = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const jar = \"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png\";\r\nexport const javascript = \"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png\";\r\nexport const jpeg = \"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png\";\r\nexport const jsf = \"https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png\";\r\nexport const json = \"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png\";\r\nexport const jsonld = \"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png\";\r\nexport const midi = \"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png\";\r\nexport const mov = \"https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png\";\r\nexport const mp3 = \"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png\";\r\nexport const mp4 = \"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png\";\r\nexport const mpeg = \"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png\";\r\nexport const mpkg = \"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png\";\r\nexport const octet = \"https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png\";\r\nexport const odp = \"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png\";\r\nexport const ods = \"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png\";\r\nexport const odt = \"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png\";\r\nexport const oga = \"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png\";\r\nexport const ogv = \"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png\";\r\nexport const ogx = \"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png\";\r\nexport const opus = \"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png\";\r\nexport const otf = \"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png\";\r\nexport const pdf = \"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png\";\r\nexport const php = \"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png\";\r\nexport const png = \"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png\";\r\nexport const pptx = \"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png\";\r\nexport const pptx2 = \"https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png\";\r\nexport const proj = \"https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png\";\r\nexport const psd = \"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png\";\r\nexport const pst = \"https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png\";\r\nexport const publisher = \"https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png\";\r\nexport const python = \"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png\";\r\nexport const tar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const rar = \"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png\";\r\nexport const react = \"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png\";\r\nexport const richtextformat = \"https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png\";\r\nexport const rtf = \"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png\";\r\nexport const sass = \"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png\";\r\nexport const settings = \"https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png\";\r\nexport const sh = \"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png\";\r\nexport const swf = \"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png\";\r\nexport const text = \"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png\";\r\nexport const tiff = \"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png\";\r\nexport const ttf = \"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png\";\r\nexport const typescript = \"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png\";\r\nexport const url = \"https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png\";\r\nexport const vsd = \"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png\";\r\nexport const vue = \"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png\";\r\nexport const wav = \"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png\";\r\nexport const webm = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const weba = \"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png\";\r\nexport const webp = \"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png\";\r\nexport const wma = \"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png\";\r\nexport const wmv = \"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png\";\r\nexport const woff = \"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png\";\r\nexport const xlsx = \"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png\";\r\nexport const xlsx2 = \"https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png\";\r\nexport const xml = \"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png\";\r\nexport const xul = \"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png\";\r\nexport const zip = \"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png\";\r\n","/**\r\n * Looks for the first file extension\r\n * @param fileName file name\r\n * @returns the file name extension\r\n */\r\n export const getExt = (fileName: string): string => {\r\n    const re = /(?:\\.([^.]+))?$/;\r\n    const result = re.exec(fileName);\r\n    if (result) {\r\n        return result[1];\r\n    } else {\r\n        return \"\";\r\n    }\r\n\r\n};","import {\r\n    aac, abw, accdb, avi, azw,\r\n    bmp, bz, bz2, cda,\r\n    csh, css, csv,\r\n    docx, drawio,\r\n    eot, epub,\r\n    freearc, gif, gzip,\r\n    html, icalendar,\r\n    jar, java, javascript, jpeg, json, jsonld,\r\n    midi, mp3, mp4, mpeg, mpkg,\r\n    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,\r\n    pdf, php, png, pptx, psd, python,\r\n    rar, react, rtf,\r\n    sass, sevenzip, sh, swf,\r\n    tar, text, tiff, ttf, typescript,\r\n    vsd, vue,\r\n    wav, weba, webm, webp, wma, wmv, woff,\r\n    xlsx, xml, xul,\r\n    zip\r\n} from \"./icons\";\r\nimport { getExt } from \"../utils/getExt\";\r\nimport { IconsMap } from \"../types\";\r\n\r\nconst DEF_GEN_MIME: keyof IconsMap = \"octet\";\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const audioSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"aac\": return \"aac\";\r\n        case \"midi\": return \"midi\";\r\n        case \"x-midi\": return \"midi\";\r\n        case \"mpeg\": return \"mpeg\";//mp3\r\n        case \"ogg\": return \"oga\";\r\n        case \"opus\": return \"opus\";\r\n        case \"wav\": return \"wav\";\r\n        case \"webm\": return \"webm\";\r\n        //case \"3gpp\": return \"threegp\";\r\n        //case \"3gpp2\": return \"threegp\";\r\n        //case \"mp3\": return \"mp3\";\r\n        case \"wma\": return \"wma\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\nexport const textSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"css\": return \"css\";\r\n        case \"csv\": return \"csv\";\r\n        case \"html\": return \"html\";\r\n        case \"calendar\": return \"icalendar\";\r\n        case \"javascript\": return \"javascript\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"plain\": return \"text\";\r\n        case \"xml\": return \"xml\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const imageSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"bmp\": return \"bmp\";\r\n        case \"gif\": return \"gif\";\r\n        // case \"vnd.microsoft.icon\": return \"ico\";\r\n        //case \"ico\": return \"ico\";\r\n        case \"jpg\": return \"jpeg\";\r\n        case \"jpeg\": return \"jpeg\";\r\n        case \"png\": return \"png\";\r\n        //case \"svg+xml\": return \"svg\";\r\n        //case \"svg\": return \"svg\";\r\n        case \"tiff\": return \"tiff\";\r\n        case \"webp\": return \"webp\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\nexport const fontSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"otf\": return \"otf\";\r\n        case \"ttf\": return \"ttf\";\r\n        case \"woff\": return \"woff\";\r\n        case \"woff2\": return \"woff\";\r\n        default: return DEF_GEN_MIME;\r\n\r\n    }\r\n}\r\n\r\nexport const videoSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-msvideo\": return \"avi\";\r\n        case \"msvideo\": return \"avi\";\r\n        case \"avi\": return \"avi\";\r\n        case \"mp4\": return \"mp4\";\r\n        case \"mpeg\": return \"mpeg\";\r\n        case \"ogg\": return \"ogv\";\r\n        case \"mp2t\": return \"mp2t\";\r\n        case \"wmv\": return \"wmv\";\r\n\r\n        case \"webm\": return \"webm\";\r\n        // case \"3gpp\": return \"threegp\";\r\n        // case \"3gpp2\": return \"threegp2\";\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * \r\n * @param tailMime \r\n * @returns \r\n */\r\nexport const applicationSelector = (tailMime: string): keyof IconsMap => {\r\n    switch (tailMime) {\r\n        case \"x-abiword\": return \"abw\";\r\n        case \"abiword\": return \"abw\";\r\n        case \"x-freearc\": return \"arc\";\r\n        case \"freearc\": return \"arc\";\r\n        case \"vnd.amazon.ebook\": return \"azw\";\r\n        case \"octet-stream\": return \"octet\";\r\n        case \"x-bzip\": return \"bz\";\r\n        case \"x-bzip2\": return \"bz2\";\r\n        case \"bzip\": return \"bz\";\r\n        case \"bzip2\": return \"bz2\";\r\n        case \"x-cdf\": return \"cda\";\r\n        case \"msaccess\": return \"accdb\";\r\n        case \"csh\": return \"csh\";\r\n        case \"x-csh\": return \"csh\";\r\n        case \"vnd.ms-fontobject\": return \"eot\";\r\n        case \"epub+zip\": return \"epub\";\r\n        case \"gzip\": return \"gzip\";\r\n        case \"java-archive\": return \"jar\";\r\n        case \"x-javascript\": return \"javascript\";\r\n        case \"json\": return \"json\";\r\n        case \"ld+json\": return \"jsonld\";\r\n        case \"vnd.apple.installer+xml\": return \"mpkg\";\r\n        case \"ogg\": return \"ogx\";\r\n        case \"vnd.rar\": return \"rar\";\r\n        case \"rtf\": return \"rtf\";\r\n        case \"x-sh\": return \"sh\";\r\n        case \"sh\": return \"sh\";\r\n        case \"x-shockwave-flash\": return \"swf\";\r\n        case \"x-tar\": return \"tar\";\r\n        case \"x-httpd-php\": return \"php\";\r\n        case \"vnd.visio\": return \"vsd\";\r\n        case \"xhtml+xml\": return \"xhtml\";\r\n        case \"xml\": return \"xml\";\r\n        case \"vnd.mozilla.xul+xml\": return \"xul\";\r\n        case \"vnd.openxmlformats-officedocument.wordprocessingml.document\": return \"docx\";\r\n        case \"msword\": return \"docx\";\r\n        case \"vnd.openxmlformats-officedocument.spreadsheetml.sheet\": return \"xlsx\";\r\n        case \"vnd.openxmlformats-officedocument.presentationml.presentation\": return \"pptx\";\r\n        case \"vnd.ms-powerpoint\": return \"pptx\";\r\n        case \"vnd.oasis.opendocument.presentation\": return \"odp\";\r\n        case \"vnd.oasis.opendocument.text\": return \"odt\";\r\n        case \"vnd.oasis.opendocument.spreadsheet\": return \"ods\";\r\n        case \"zip\": return \"zip\";\r\n        case \"x-zip-compressed\": return \"zip\";\r\n        case \"pdf\": return \"pdf\";\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mime type the mime type given belongs to\r\n * @param mimeType mime type to be searched \r\n * @returns the generic type, \r\nif not found it return \"octet\" that means generic binary file\r\n */\r\nexport const mimeSelector = (mimeType?: string): keyof IconsMap => {\r\n    // let genericMime: string | undefined = undefined;\r\n    if (!mimeType || !mimeType.includes(\"/\")) {\r\n        return DEF_GEN_MIME;\r\n    }\r\n    let headerMime = mimeType.split(\"/\")[0];\r\n    let tailMime = mimeType.split(\"/\")[1];\r\n    /**\r\n     * Every mimetype that \r\n     * starts with: \"application/....\"\r\n     */\r\n\r\n    switch (headerMime) {\r\n        case \"application\": return applicationSelector(tailMime);\r\n        case \"audio\": return audioSelector(tailMime);\r\n        case \"video\": return videoSelector(tailMime);\r\n        case \"text\": return textSelector(tailMime);\r\n        case \"image\": return imageSelector(tailMime);\r\n        case \"font\": return fontSelector(tailMime);\r\n\r\n        default: return DEF_GEN_MIME;\r\n    }\r\n}\r\n/**\r\n * Selects to wich mapped extension\r\n * the given exension belongs to\r\n * \r\n * @param extension \r\n * @returns \r\n */\r\nexport const extensionSelector = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"octet\";\r\n\r\n    if (extension && extension !== \"\") {\r\n        if (extension.includes(\"zip\") || extension.includes(\"rar\")) {\r\n            genericMime = \"zip\";\r\n        } else if (extension.includes(\"doc\")) {\r\n            genericMime = \"docx\";\r\n        } else if (extension.includes(\"xls\")) {\r\n            genericMime = \"xlsx\";\r\n        } else if (extension.includes(\"drawio\")) {\r\n            genericMime = \"drawio\";\r\n        } else if (extension.includes(\"psd\")) {\r\n            genericMime = \"psd\";\r\n        } else if (extension.includes(\"csv\")) {\r\n            genericMime = \"csv\";\r\n        } else if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"sass\" || extension === \"scss\") {\r\n            genericMime = \"sass\";\r\n        }\r\n    }\r\n    return genericMime;\r\n\r\n}\r\n/**\r\n * Chack for extention whether the file is code os not\r\n * @param extension \r\n * @returns \r\n */\r\nexport const checkIsCode = (extension?: string): keyof IconsMap => {\r\n    let genericMime: keyof IconsMap = \"text\";\r\n    if (extension && extension !== \"\") {\r\n        if (extension === \"jsx\") {\r\n            genericMime = \"react\";\r\n        } else if (extension === \"py\") {\r\n            genericMime = \"python\";\r\n        } else if (extension === \"vue\") {\r\n            genericMime = \"vue\";\r\n        } else if (extension === \"java\") {\r\n            genericMime = \"java\";\r\n        } else if (extension === \"ts\" || extension === \"tsx\") {\r\n            genericMime = \"typescript\";\r\n        } else if (extension === \"js\") {\r\n            genericMime = \"javascript\";\r\n        } else if (extension === \"xml\") {\r\n            genericMime = \"xml\";\r\n        } else if (extension === \"php\") {\r\n            genericMime = \"php\";\r\n        }\r\n    }\r\n    return genericMime;\r\n}\r\n\r\n/**\r\n * Looks for a suitable file icon\r\n * If not found, returns octet-stream url\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico\r\n */\r\nexport const getURLFileIco = (\r\n    file: File | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"fallBack\";\r\n    //if not file, return octet\r\n    if (!file) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(file.type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(file.name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\n/**\r\n * Looks for a suitable file icon\r\n * @param props mime and extension from file to search\r\n * @returns the result file ico, if not found, turns octet-stream url\r\n */\r\nexport const getURLFileIcoFromNameAndType = (\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    customIcons: IconsMap | undefined\r\n): ResultFileIco => {\r\n\r\n    let result: keyof IconsMap = \"octet\";\r\n    //if not nam and type, return octet\r\n    if (!name) {\r\n        result = DEF_GEN_MIME;\r\n        if (customIcons?.fallBack)\r\n            return { url: customIcons?.fallBack, mimeResume: result };\r\n        return { url: mimeUrlList[result], mimeResume: result };\r\n    } else {\r\n        result = mimeSelector(type);\r\n    }\r\n    //If plain text\r\n    const extention: string = getExt(name);\r\n\r\n    if (result === \"text\") {\r\n        result = checkIsCode(extention);\r\n\r\n    }\r\n    //If octet stream result, second chance: file extention\r\n    if (result === DEF_GEN_MIME) {\r\n        result = extensionSelector(extention);\r\n    }\r\n    const customUrl = customIcons?.[result];\r\n    if (customUrl !== undefined)\r\n        return { url: customUrl, mimeResume: result };\r\n\r\n    return { url: mimeUrlList[result], mimeResume: result };\r\n}\r\ninterface ResultFileIco {\r\n    url: string;\r\n    mimeResume: keyof IconsMap;\r\n}\r\n/**\r\n * set of registered mimes on MDN\r\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\r\n * \r\n */\r\ninterface MimeSelector {\r\n    [mime: string]: string;\r\n}\r\n\r\nconst mimeUrlList: MimeSelector = {\r\n    aac: aac,\r\n    accdb: accdb,\r\n    abw: abw,\r\n    arc: freearc,\r\n    avi: avi,\r\n    azw: azw,\r\n    octet: octet,\r\n    bmp: bmp,\r\n    bz: bz,\r\n    bz2: bz2,\r\n    cda: cda,\r\n    csh: csh,\r\n    css: css,\r\n    csv: csv,\r\n    docx: docx,\r\n    drawio: drawio,\r\n    eot: eot,\r\n    epub: epub,\r\n    gzip: gzip,\r\n    gif: gif,\r\n    html: html,\r\n    //ico: ico,\r\n    icalendar: icalendar,\r\n    jar: jar,\r\n    jpeg: jpeg,\r\n    javascript: javascript,\r\n    json: json,\r\n    jsonld: jsonld,\r\n    midi: midi,\r\n    //  js: js,\r\n    mp3: mp3,\r\n    mp4: mp4,\r\n    mpeg: mpeg,\r\n    mpkg: mpkg,\r\n    mp2t: octet,\r\n    odp: odp,\r\n    ods: ods,\r\n    odt: odt,\r\n    oga: oga,\r\n    ogv: ogv,\r\n    ogx: ogx,\r\n    opus: opus,\r\n    otf: otf,\r\n    png: png,\r\n    pdf: pdf,\r\n    php: php,\r\n    pptx: pptx,\r\n    psd: psd,\r\n    rar: rar,\r\n    rtf: rtf,\r\n    sass: sass,\r\n    sh: sh,\r\n    //svg: svg,\r\n    swf: swf,\r\n    tar: tar,\r\n    tiff: tiff,\r\n    ttf: ttf,\r\n    //ts: ts,\r\n    typescript: typescript,\r\n    text: text,\r\n    vsd: vsd,\r\n    wav: wav,\r\n    weba: weba,\r\n    webm: webm,\r\n    webp: webp,\r\n    woff: woff,\r\n    wma: wma,\r\n    wmv: wmv,\r\n    xhtml: html,\r\n    xlsx: xlsx,\r\n    xml: xml,\r\n    xul: xul,\r\n    zip: zip,\r\n    // threegp: threegp,\r\n    sevenzip: sevenzip,\r\n    python: python,\r\n    java: java,\r\n    react: react,\r\n    vue: vue,\r\n\r\n\r\n    fallBack: octet,\r\n};","\r\nimport { UPLOADSTATUS, ServerResponse } from \"../types\";\r\n\r\n/**\r\n * ExtFile === \"Extended File\".\r\n * This object \"extends\" the File Object\r\n */\r\nexport declare type ExtFile = {\r\n    /** \r\n     * An identifier for the extFile\r\n     */\r\n    id?: number | string | undefined;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    size?: number;\r\n    /**\r\n     * a flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    errors?: string[];\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    uploadMessage?: string;\r\n    /**\r\n     * Link, URI or string representation of an image\r\n     */\r\n    imageUrl?: string;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    xhr?: XMLHttpRequest;\r\n    /**\r\n     * The current percentage of upload progress.\r\n     * This value will have a higher priority over the upload progress value calculated inside the component.\r\n     * @default undefined\r\n     */\r\n    progress?: number;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when files are uploaded individually\r\n     */\r\n    extraUploadData?: Record<string, any>;\r\n    /**\r\n     * Any kind of extra data that could be needed.\r\n     */\r\n    extraData?: Object;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    serverResponse?: ServerResponse;\r\n    /**\r\n     * The url to be used to perform a GET request in order to download the\r\n        file. If defined, the download icon will be shown.\r\n     */\r\n    downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    videoUrl?: string;\r\n}\r\n\r\n/**\r\n * A class definition for ExtFile.\r\n * This class has the purpose to allow the creation of instances\r\n * of an ExtFile for performing complex operations that cannot be\r\n * accomplished just by using the ExtFile type.\r\n * For instance, it can help in changing the value of some attributes\r\n * across different scopes thanks to memory reference.\r\n */\r\nexport class ExtFileInstance {\r\n    /**\r\n     * An identifier for the extFile\r\n     */\r\n    public id?: number | string;\r\n    /**\r\n     * The file object. Used mostly when user selects or drops files in the client sid.\r\n     */\r\n    public file?: File;\r\n    /**\r\n     * The name of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public name?: string;\r\n    /**\r\n     * The type of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public type?: string;\r\n    /**\r\n     * The size of the file. Used mostly for displaying file data from server.\r\n     */\r\n    public size?: number;\r\n\r\n    public imageUrl?: string;\r\n    /**\r\n     * A flag that determines whether the file is valid, not valid or it is not validated.\r\n     */\r\n    public valid?: boolean;\r\n    /**\r\n     * The list of errors when the file was validated\r\n     */\r\n    public errors?: string[];\r\n    /**\r\n     * A message that shows the result of the upload process\r\n     */\r\n    public uploadMessage?: string;\r\n    /**\r\n     * The current upload status. (e.g. \"uploading\")\r\n     */\r\n    public uploadStatus?: UPLOADSTATUS | undefined;\r\n    /**\r\n     * The current upload progress\r\n     */\r\n    public progress?: number;\r\n    /**\r\n     * The XMLHttpRequest object for performing uploads to a server\r\n     */\r\n    public xhr?: XMLHttpRequest;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     */\r\n    public extraData?: Record<string, any>;\r\n    /**\r\n     * The additional data that will be sent to the server\r\n     * when filesare uploaded individually\r\n     */\r\n    public extraUploadData?: Record<string, any>;\r\n    /**\r\n     * The upload response from server\r\n     */\r\n    public serverResponse?: ServerResponse;\r\n    /**\r\n     * Url to perform a GET request in order to download the file.\r\n     * This  action is triggered when download button is clicked or pressed.\r\n     * In case onDownload prop is given\r\n     */\r\n    public downloadUrl?: string;\r\n    /**\r\n     * Link, URI, FIle object or string representation of a video\r\n     */\r\n    public videoUrl?: string;\r\n\r\n    constructor(extFile: ExtFile) {\r\n        const {\r\n            id,\r\n            file,\r\n            name,\r\n            size,\r\n            type,\r\n            imageUrl,\r\n            valid,\r\n            errors,\r\n            uploadMessage,\r\n            uploadStatus,\r\n            progress,\r\n            xhr,\r\n            extraData,\r\n            extraUploadData,\r\n            serverResponse,\r\n            downloadUrl, videoUrl\r\n        } = extFile;\r\n\r\n        this.id = id;\r\n        this.file = file;\r\n        this.name = name;\r\n        this.size = size;\r\n        this.type = type;\r\n        this.imageUrl = imageUrl;\r\n\r\n        this.valid = valid;\r\n        this.errors = errors;\r\n        this.uploadStatus = uploadStatus;\r\n        this.uploadMessage = uploadMessage;\r\n        this.progress = progress;\r\n        this.xhr = xhr;\r\n\r\n        this.extraData = extraData;\r\n        this.extraUploadData = extraUploadData;\r\n        this.serverResponse = serverResponse;\r\n\r\n        this.downloadUrl = downloadUrl;\r\n        this.videoUrl = videoUrl;\r\n    }\r\n    /**\r\n     * method under construction\r\n     */\r\n    /*  private static kamuiFile() {\r\n \r\n     }\r\n  */\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object\r\n     * @param extFileInstance the instance of ExtFile\r\n     * @returns an ExtFile object\r\n     */\r\n    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {\r\n        //console.log(\"before toExtFile()\", extFileInstance);\r\n\r\n        let extFileClone: ExtFile = {}; // the new empty object\r\n        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];\r\n        const extFileInstanceValues = Object.values(extFileInstance) as Array<ExtFile[keyof ExtFile]>;\r\n        // let's copy all user properties into it\r\n        for (let i = 0; i < extFileInstanceValues.length; i++) {\r\n            const currentValue: ExtFile[keyof ExtFile] = extFileInstanceValues[i];\r\n\r\n\r\n            const currKey = extFileInstanceKeys[i];\r\n            if (currentValue !== undefined) {\r\n\r\n                extFileClone[currKey] = currentValue as ExtFile[keyof ExtFile] as never;\r\n            }\r\n        }\r\n        //console.log(\"after toExtFile()\", extFileClone);\r\n        //console.log(\"current extFileClone keys\",Object.keys( extFileClone).length);\r\n        return extFileClone;\r\n    }\r\n    /**\r\n     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.\r\n     * @returns an ExtFile object\r\n     */\r\n    toExtFile(): ExtFile {\r\n        return ExtFileInstance.toExtFile(this);\r\n    }\r\n\r\n  /*   static mock = (id?: number): ExtFileInstance => {\r\n        return new ExtFileInstance(\r\n            extFileMock(id)\r\n        );\r\n    } */\r\n}\r\n\r\n\r\n","import { ExtFileInstance, ExtFile } from \"./ExtFile\";\r\n\r\nexport class ExtFileManager {\r\n    private static nextId: number = 0;\r\n    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    public static getNextId(): number {\r\n        ExtFileManager.nextId++;\r\n        return ExtFileManager.nextId;\r\n    }\r\n    /**\r\n     * Updates a dui file list given an id\r\n     * @param id id of the fileList\r\n     * @param extFiles list of DuiFiles forinitializing the array\r\n     * @returns the id of the fileList\r\n     */\r\n    public static setFileList(\r\n        id: number | string | undefined,\r\n        extFilesInstances: ExtFileInstance[]\r\n    ): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            ExtFileManager.fileLists[id] = [...extFilesInstances];\r\n\r\n            return id;\r\n        }\r\n\r\n    }\r\n    /**\r\n     * Generates a new ID\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static createFileListMap(): number {\r\n        const nextId: number = ExtFileManager.getNextId();\r\n        ExtFileManager.fileLists[nextId] = [];\r\n\r\n        return nextId;\r\n    }\r\n\r\n    /**\r\n     * Deletes a list map\r\n     * @returns the next Id asociated with a DuiFIle list\r\n     */\r\n    public static removeFileListMap(id?: number | string): number | string {\r\n        if (!id) {\r\n            return 0;\r\n        } else {\r\n            try {\r\n                ExtFileManager.fileLists[id] = undefined;\r\n                return id;\r\n            } catch (error) {\r\n                if (process.env.NODE_ENV === \"development\")\r\n                    console.error(\"Error on remove\", error);\r\n                return 0;\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * \r\n     * @param id the id of the dropzone\r\n     * @returns \r\n     */\r\n    public static getExtFileInstanceList(\r\n        id?: number | string\r\n    ): ExtFileInstance[] | undefined {\r\n        try {\r\n            if (!id) {\r\n                return undefined;\r\n            }\r\n            return ExtFileManager.fileLists[id];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"Error on getExtFileInstanceList\", error);\r\n            return undefined;\r\n        }\r\n    }\r\n    /**\r\n     * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n     * Then sets on preparing stage all files according to the following creiteria:\r\n     * If theuploadStatus is diferent than \"sucess\" AND\r\n     * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n     * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n     * @param dropzoneId the id to access the right list\r\n     * @param localFiles the list of extFiles\r\n     * @param validateFiles flag that indicates that validation is active or o¿not\r\n     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n     * @returns a list of ExtFileInstance\r\n     */\r\n    public static setFileListMapPreparing(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n        //console.log(\"setFileListMapPreparing before if\", dropzoneId, localFiles, cleanOnUpload);\r\n\r\n        if (!(typeof dropzoneId === \"number\" || typeof dropzoneId === \"string\")) return undefined;\r\n\r\n        //console.log(\"setFileListMapPreparing before try\", localFiles, cleanOnUpload);\r\n        try {\r\n\r\n            let resultExtList: ExtFileInstance[] = [];\r\n\r\n            //initializes the extFileLInstance list\r\n            let temLocalFiles: ExtFile[] = [...localFiles];\r\n\r\n            //remove non valids if cleanOnUpload is true and validateFiles is also true\r\n            if (cleanOnUpload && validateFiles) {\r\n                // clean on Upload is true, so non valid files must be removed\r\n                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)\r\n                //console.log(\"temLocalFiles filter\", temLocalFiles);\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing after remove non valids\", temLocalFiles);\r\n\r\n            if (validateFiles) {\r\n                // validation flag was set to true, so only valid=true files will be set to \"preparing\"\r\n\r\n                //so, only valid files was kept in the temLocalfiles array\r\n                //now set the preparing state only for files with uploadStatus !== \"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\" && extFile.valid) {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            } else {\r\n                // all files will be set to \"preparing\" whether the valid value\r\n                // except those files with uploadStatus ===\"success\"\r\n                temLocalFiles =\r\n                    temLocalFiles\r\n                        .map(extFile => {\r\n                            if (extFile.uploadStatus !== \"success\") {\r\n                                return { ...extFile, uploadStatus: \"preparing\" }\r\n                            } else {\r\n                                return { ...extFile }\r\n                            }\r\n                        });\r\n            }\r\n\r\n            //console.log(\"setFileListMapPreparing result\", temLocalFiles);\r\n\r\n            //converto to Object instances\r\n            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));\r\n            //console.log(\"setFileListMapPreparing RESULT resultExtList\", resultExtList);\r\n\r\n            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);\r\n            //console.log(\"setFileListMapPreparing RESULT resultSet\", resultSet);\r\n\r\n            return resultExtList;\r\n            // return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n                console.error(\"setFileListMapPreparing Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    }\r\n\r\n\r\n\r\n    /**\r\n * Updates(replaces) the extFile list on preparing stage and returns the new array.\r\n * Removes the non valid files if cleanOnUpload is true and validateFiles is also true\r\n * Then sets on preparing stage all files according to the following creiteria:\r\n * If theuploadStatus is diferent than \"sucess\" AND\r\n * then, update the files on preparing stage. Otherwise keep the extFile props.\r\n * Finally, updates the ExtFileInstance list on ExtFileManager.\r\n * @param dropzoneId the id to access the right list\r\n * @param localFiles the list of extFiles\r\n * @param validateFiles flag that indicates that validation is active or o¿not\r\n * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not\r\n * @returns a list of ExtFileInstance\r\n */\r\n    public static setFileListMapPreparing2(\r\n        dropzoneId: number | string,\r\n        localFiles: ExtFile[],\r\n        validateFiles: boolean,\r\n        cleanOnUpload: boolean\r\n    ): ExtFileInstance[] | undefined {\r\n\r\n        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: \"preparing\" })));\r\n\r\n        return ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n    }\r\n\r\n\r\n\r\n    /**\r\n     * \r\n     * @param dropzoneId \r\n     * @param index \r\n     * @param incommingDuiFile \r\n     * @returns \r\n     */\r\n    /* public static updateFileListMapPreparingById(\r\n        dropzoneId: number,\r\n        index: number,\r\n        incommingDuiFile: ExtFileInstance\r\n    ): ExtFileInstance[] | undefined {\r\n        if (!(typeof dropzoneId === \"number\") || !(typeof index === \"number\") || index > 0) return undefined;\r\n        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];\r\n\r\n        if (!(extFileList && extFileList.length > 0)) return undefined;\r\n        extFileList[index]=\r\n        try {\r\n            ExtFileManager.setFileList(dropzoneId, [\r\n                ...localFiles.map(\r\n                    (x) =>\r\n                        new ExtFileInstance({ ...x, uploadStatus: \"preparing\" })\r\n                ),\r\n            ]);\r\n            return ExtFileManager.fileLists[dropzoneId];\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\")\r\n            console.error(\"Error on get List\", error);\r\n            return undefined;\r\n        }\r\n\r\n    } */\r\n}","\r\n/**\r\n * A syntetic file creator.\r\n * Very useful for tests\r\n */\r\nexport abstract class SyntheticFile {\r\n    /**\r\n * \r\n * @param name the file name\r\n * @param size the file size\r\n * @param type the file type\r\n * @returns \r\n */\r\n    static createFile = (name: string, size: number, type: string) => {\r\n        const file = new File([], name, { type });\r\n        Object.defineProperty(file, \"size\", {\r\n            get() {\r\n                return size;\r\n            },\r\n        });\r\n        return file;\r\n    };\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_aac = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"acc_audio-file-with-large-name.aac\", size ? size : 3516516, \"audio/aac\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_abw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"abiword-file-with-large-name.abw\", size ? size : 3516516, \"application/x-abiword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_freearc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"freearc-file-with-large-name.arc\", size ? size : 3516516, \"application/x-freearc\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_avi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"avi-file-with-large-name.avi\", size ? size : 3516516, \"video/x-msvideo\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_azw = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"amazon_kindle_ebook-file-with-large-name.azw\", size ? size : 3516516, \"application/vnd.amazon.ebook\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_octet = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"binary_octet_stream-file-with-large-name.bin\", size ? size : 3516516, \"application/octet-stream\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bmp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"bit_map-file-with-large-name.bmp\", size ? size : 3516516, \"image/bmp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip-file-with-large-name.bz\", size ? size : 3516516, \"application/x-bzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_bz2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"x_bzip_2-file-with-large-name.bz2\", size ? size : 3516516, \"application/x-bzip2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_cda = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"cd_audio-file-with-large-name.cda\", size ? size : 3516516, \"application/x-cdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csh\", size ? size : 3516516, \"application/x-csh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_css = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.css\", size ? size : 3516516, \"text/css\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_csv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.csv\", size ? size : 3516516, \"text/csv\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_doc = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.doc\", size ? size : 3516516, \"application/msword\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_docx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.docx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_eot = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.eot\", size ? size : 3516516, \"application/vnd.ms-fontobject\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_epub = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.epub\", size ? size : 3516516, \"application/epub+zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gzip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gz\", size ? size : 3516516, \"application/gzip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_gif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.gif\", size ? size : 3516516, \"image/gif\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_htm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.htm\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_html = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.html\", size ? size : 3516516, \"text/html\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ico = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ico\", size ? size : 3516516, \"image/vnd.microsoft.icon\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_icalendar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ics\", size ? size : 3516516, \"text/calendar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jar\", size ? size : 3516516, \"application/java-archive\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpeg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jpg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jpg\", size ? size : 3516516, \"image/jpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_js = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.js\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_json = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.json\", size ? size : 3516516, \"application/json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_jsonld = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.jsonld\", size ? size : 3516516, \"application/ld+json\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_mid = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mid\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_x_midi = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.midi\", size ? size : 3516516, \"audio/x-midi\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mjs = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mjs\", size ? size : 3516516, \"text/javascript\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp3 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp3\", size ? size : 3516516, \"audio/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mp4 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mp4\", size ? size : 3516516, \"video/mp4\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpeg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpeg\", size ? size : 3516516, \"video/mpeg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_mpkg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.mpkg\", size ? size : 3516516, \"application/vnd.apple.installer+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odp\", size ? size : 3516516, \"application/vnd.oasis.opendocument.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ods = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ods\", size ? size : 3516516, \"application/vnd.oasis.opendocument.spreadsheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_odt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.odt\", size ? size : 3516516, \"application/vnd.oasis.opendocument.text\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_oga = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.oga\", size ? size : 3516516, \"audio/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogv = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogv\", size ? size : 3516516, \"video/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ogx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ogx\", size ? size : 3516516, \"application/ogg\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_opus = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.opus\", size ? size : 3516516, \"audio/opus\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_otf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.otf\", size ? size : 3516516, \"font/otf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_png = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.png\", size ? size : 3516516, \"image/png\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pdf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pdf\", size ? size : 3516516, \"application/pdf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_php = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.php\", size ? size : 3516516, \"application/x-httpd-php\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ppt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ppt\", size ? size : 3516516, \"application/vnd.ms-powerpoint\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_pptx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.pptx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.presentationml.presentation\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rar\", size ? size : 3516516, \"application/vnd.rar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_rtf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.rtf\", size ? size : 3516516, \"application/rtf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_sh = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.sh\", size ? size : 3516516, \"application/x-sh\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_svg = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.svg\", size ? size : 3516516, \"image/svg+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_swf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.swf\", size ? size : 3516516, \"application/x-shockwave-flash\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tar = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tar\", size ? size : 3516516, \"application/x-tar\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tif = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tif\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_tiff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.tiff\", size ? size : 3516516, \"image/tiff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ts = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"mp2t_video-file-with-large-name.ts\", size ? size : 3516516, \"video/mp2t\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_ttf = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.ttf\", size ? size : 3516516, \"font/ttf\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_text = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.txt\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_typescript = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"typescript-file-with-large-name.ts\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vsd = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"ms_visio-file-with-large-name.vsd\", size ? size : 3516516, \"application/vnd.visio\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_wav = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"wav_audio-file-with-large-name.wav\", size ? size : 3516516, \"audio/wav\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_weba = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_audio-file-with-large-name.weba\", size ? size : 3516516, \"audio/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webm = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_video-file-with-large-name.webm\", size ? size : 3516516, \"video/webm\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_webp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"web_image-file-with-large-name.webp\", size ? size : 3516516, \"image/webp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff\", size ? size : 3516516, \"font/woff\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_woff2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.woff2\", size ? size : 3516516, \"font/woff2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xhtml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xhtml\", size ? size : 3516516, \"application/xhtml+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xlsx = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xls\", size ? size : 3516516, \"application/vnd.ms-excel\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xls = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xlsx\", size ? size : 3516516, \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xml_txt = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"xml_plain_text-file-with-large-name.xml\", size ? size : 3516516, \"application/xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_xul = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"test-file-with-large-name.xul\", size ? size : 3516516, \"application/vnd.mozilla.xul+xml\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_zip = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"zip-file-with-large-name.zip\", size ? size : 3516516, \"application/zip\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_video-file-with-large-name.3gp\", size ? size : 3516516, \"video/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp2 = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp2_video-file-with-large-name.3g2\", size ? size : 3516516, \"video/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_a = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp\", size ? size : 3516516, \"audio/3gpp\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_3gp_v = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"3gp_audio-file-with-large-name.3gp2\", size ? size : 3516516, \"audio/3gpp2\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_7z = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"seven_zip-file-with-large-name.7z\", size ? size : 3516516, \"application/x-7z-compressed\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_python = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"python-file-with-large-name.py\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_java = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"java-file-with-large-name.java\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_react = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"react_jsx-file-with-large-name.jsx\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n    * \r\n    * @param size the file size\r\n    * @returns a syntetic File object instance\r\n    */\r\n    static create_vue = (size?: number): File => {\r\n        return SyntheticFile.createFile(\"vue-file-with-large-name.vue\", size ? size : 3516516, \"text/plain\");\r\n    }\r\n    /**\r\n     * Creates an array of fake (synthetic) files\r\n     * @param size the file size for all synthetic files\r\n     * @returns an array of all file icon preview supported files\r\n     */\r\n    static createFileListMiscelanious = (size?: number): File[] => {\r\n\r\n        let listFile: File[] = [];\r\n\r\n        listFile.push(SyntheticFile.create_aac(size));\r\n        listFile.push(SyntheticFile.create_abw(size));\r\n        listFile.push(SyntheticFile.create_freearc(size));\r\n        listFile.push(SyntheticFile.create_avi(size));\r\n        listFile.push(SyntheticFile.create_azw(size));\r\n        listFile.push(SyntheticFile.create_octet(size));\r\n        listFile.push(SyntheticFile.create_bmp(size));\r\n        listFile.push(SyntheticFile.create_bz(size));\r\n        listFile.push(SyntheticFile.create_bz2(size));\r\n        listFile.push(SyntheticFile.create_cda(size));\r\n        listFile.push(SyntheticFile.create_csh(size));\r\n        listFile.push(SyntheticFile.create_css(size));\r\n        listFile.push(SyntheticFile.create_csv(size));\r\n        listFile.push(SyntheticFile.create_doc(size));\r\n        listFile.push(SyntheticFile.create_docx(size));\r\n        listFile.push(SyntheticFile.create_eot(size));\r\n        listFile.push(SyntheticFile.create_epub(size));\r\n        listFile.push(SyntheticFile.create_gzip(size));\r\n        listFile.push(SyntheticFile.create_gif(size));\r\n        listFile.push(SyntheticFile.create_htm(size));\r\n        listFile.push(SyntheticFile.create_html(size));\r\n        listFile.push(SyntheticFile.create_ico(size));\r\n        listFile.push(SyntheticFile.create_icalendar(size));\r\n        listFile.push(SyntheticFile.create_jar(size));\r\n        listFile.push(SyntheticFile.create_jpeg(size));\r\n        listFile.push(SyntheticFile.create_jpg(size));\r\n        listFile.push(SyntheticFile.create_js(size));\r\n        listFile.push(SyntheticFile.create_json(size));\r\n        listFile.push(SyntheticFile.create_jsonld(size));\r\n        listFile.push(SyntheticFile.create_mid(size));\r\n        listFile.push(SyntheticFile.create_midi(size));\r\n        listFile.push(SyntheticFile.create_x_mid(size));\r\n        listFile.push(SyntheticFile.create_x_midi(size));\r\n        listFile.push(SyntheticFile.create_mjs(size));\r\n        listFile.push(SyntheticFile.create_mp3(size));\r\n        listFile.push(SyntheticFile.create_mp4(size));\r\n        listFile.push(SyntheticFile.create_mpeg(size));\r\n        listFile.push(SyntheticFile.create_mpkg(size));\r\n        listFile.push(SyntheticFile.create_odp(size));\r\n        listFile.push(SyntheticFile.create_ods(size));\r\n        listFile.push(SyntheticFile.create_odt(size));\r\n        listFile.push(SyntheticFile.create_oga(size));\r\n        listFile.push(SyntheticFile.create_ogv(size));\r\n        listFile.push(SyntheticFile.create_ogx(size));\r\n        listFile.push(SyntheticFile.create_opus(size));\r\n        listFile.push(SyntheticFile.create_otf(size));\r\n        listFile.push(SyntheticFile.create_png(size));\r\n        listFile.push(SyntheticFile.create_pdf(size));\r\n        listFile.push(SyntheticFile.create_php(size));\r\n        listFile.push(SyntheticFile.create_ppt(size));\r\n        listFile.push(SyntheticFile.create_pptx(size));\r\n        listFile.push(SyntheticFile.create_rar(size));\r\n        listFile.push(SyntheticFile.create_rtf(size));\r\n        listFile.push(SyntheticFile.create_sh(size));\r\n        listFile.push(SyntheticFile.create_svg(size));\r\n        listFile.push(SyntheticFile.create_swf(size));\r\n        listFile.push(SyntheticFile.create_tar(size));\r\n        listFile.push(SyntheticFile.create_tif(size));\r\n        listFile.push(SyntheticFile.create_tiff(size));\r\n        listFile.push(SyntheticFile.create_ts(size));\r\n        listFile.push(SyntheticFile.create_ttf(size));\r\n        listFile.push(SyntheticFile.create_text(size));\r\n        listFile.push(SyntheticFile.create_typescript(size));\r\n        listFile.push(SyntheticFile.create_vsd(size));\r\n        listFile.push(SyntheticFile.create_wav(size));\r\n        listFile.push(SyntheticFile.create_weba(size));\r\n        listFile.push(SyntheticFile.create_webm(size));\r\n        listFile.push(SyntheticFile.create_webp(size));\r\n        listFile.push(SyntheticFile.create_woff(size));\r\n        listFile.push(SyntheticFile.create_woff2(size));\r\n        listFile.push(SyntheticFile.create_xhtml(size));\r\n        listFile.push(SyntheticFile.create_xlsx(size));\r\n        listFile.push(SyntheticFile.create_xls(size));\r\n        listFile.push(SyntheticFile.create_xml(size));\r\n        listFile.push(SyntheticFile.create_xml_txt(size));\r\n        listFile.push(SyntheticFile.create_xul(size));\r\n        listFile.push(SyntheticFile.create_zip(size));\r\n        //listFile.push(SyntheticFile.create_3gp(size));\r\n        //listFile.push(SyntheticFile.create_3gp2(size));\r\n        //listFile.push(SyntheticFile.create_3gp_a(size));\r\n        //listFile.push(SyntheticFile.create_3gp_v(size));\r\n        //listFile.push(SyntheticFile.create_7z(size));\r\n        listFile.push(SyntheticFile.create_python(size));\r\n        listFile.push(SyntheticFile.create_java(size));\r\n        listFile.push(SyntheticFile.create_react(size));\r\n        listFile.push(SyntheticFile.create_vue(size));\r\n\r\n        return listFile;\r\n    }\r\n}\r\n///////////////////// SHORTCUTS\r\n/**\r\n * Create a list of synthetic files with different mime types\r\n * @param size the file size for each synthetic file\r\n * @returns a list of synthetic file\r\n */\r\nexport const createListOfMultiTypeFile = (size?: number): File[] => {\r\n    return SyntheticFile.createFileListMiscelanious(size);\r\n}\r\n\r\n/**\r\n * Creates a synthetic file.\r\n * By default, creates a png image file\r\n * @param name the file name to show. By default is set to \"png-image-file-with-large-name.png\"\r\n * @param size the size in bytes of the file. By default this value is set to 455555\r\n * @param type the mime type of the file. By default is set to \"image/png\"\r\n * @returns \r\n */\r\nexport const createSyntheticFile = (\r\n    name = \"png-image-file-with-large-name.png\",\r\n    size = 455555,\r\n    type = \"image/png\",\r\n): File => {\r\n    return SyntheticFile.createFile(name, size, type);\r\n}","/**\r\n * An id generator for FileItems\r\n */\r\n export abstract class FileIdGenerator {\r\n    static nextId = 0;\r\n    /**\r\n     * Increases the id counter and returns the next id available.\r\n     * @returns the next integer id available\r\n     */\r\n    static getNextId(): number {\r\n        FileIdGenerator.nextId++;\r\n        return FileIdGenerator.nextId;\r\n    }\r\n}","/**\r\n * Random integer between min (included) and max (excluded)\r\n * @param min the min number\r\n * @param max the max number\r\n * @returns a random number between min (included) and max (excluded)\r\n */\r\nexport function getRandomInt(min: number = 0, max: number = 0): number {\r\n    return Math.floor(Math.random() * (max - min)) + min;\r\n}\r\n","/**\r\n * Cleans the input.value attribute\r\n * @param inputElement \r\n */\r\nexport const cleanInput = (inputElement?: HTMLInputElement | null) => {\r\n    if (!inputElement) return;\r\n    inputElement.value = \"\";\r\n}","/**\r\n * Separate the accept string array into an array of strings separated by commas\r\n * @param accept the string accept array\r\n * @returns an array of strings in wich every item\r\n */\r\nexport const separateAccept = (accept: string | undefined): string[] => {\r\n    if (!accept || accept.length === 0) {\r\n        return [];\r\n    }\r\n    const commaSeparatedAccpet: string[] = accept.split(\",\").map((acceptItem) => acceptItem.trim());\r\n    return commaSeparatedAccpet;\r\n}","import { getExt } from \"../utils/getExt\";\r\n\r\n/**\r\n * Checks whether a file is valid or not given an array of file extentions and mime types\r\n * e.g. accept =  [\".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"]\r\n * @param accept the array of strings accept items\r\n * @param file a File object to be evaluated\r\n * @returns true if the mime type file is included in the accept param\r\n */\r\n export const validateAccept = (accept: string[], file: File): boolean => {\r\n    let valid: boolean = false;\r\n    const { name, type } = file;\r\n    //Array(5) [ \".doc\", \".docx\", \".xml\", \"application/msword\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ]\r\n    for (let i = 0; i < accept.length; i++) {\r\n        const acceptItem: string = accept[i];\r\n        //check is not empty\r\n        if (acceptItem.length !== 0) {\r\n            //check extention\r\n            if (acceptItem.charAt(0) === \".\") {\r\n                if (acceptItem.includes(getExt(name))) {\r\n                    return true;\r\n                }\r\n            }\r\n            //check mime\r\n            // header/tail  => image/png  ;  image/* ; audio\r\n            if (type && type.length > 0 && acceptItem.includes(\"/\") && type.includes(\"/\")) {\r\n                let headerMime = acceptItem.split(\"/\")[0];\r\n                let tailMime = acceptItem.split(\"/\")[1];\r\n\r\n                let headerMimeFile = type.split(\"/\")[0];\r\n                let tailMimeFile = type.split(\"/\")[1];\r\n\r\n                if (headerMime === headerMimeFile) {\r\n                    //    image/*\r\n                    if (tailMime === \"*\") {\r\n                        return true;\r\n                    } else if (tailMime === tailMimeFile) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return valid;\r\n}","import { ValidateErrorLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, FunctionLabel, Localization, LocalLabels } from \"../types\";\r\nimport { ValidateFileResponse, FileValidatorProps } from \"../types/validation\";\r\nimport { FileIdGenerator } from \"../utils/IdGenerator\";\r\nimport { separateAccept } from \"./separateAccept\";\r\nimport { validateAccept } from \"./validateAccept\";\r\n\r\n/**\r\n * \r\n * @param preValidatedFiles FileList \r\n * @param remainingValids The number of remaining valid files\r\n * @param localValidator \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns \r\n */\r\nexport const fileListvalidator = (\r\n    preValidatedFiles: FileList,\r\n    remainingValids: number,\r\n    localValidator: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    const output: ExtFile[] = [];\r\n    //set a countdown when there is a limit on files\r\n    let countdown: number = remainingValids;\r\n    // get localized labels\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    //Iterate the File list\r\n    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {\r\n        // Validate the file list with\r\n        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);\r\n        if (validatedFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = countdown > 0;\r\n            validatedFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n                validatedFile.errors = validatedFile.errors\r\n                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            countdown--;\r\n        }\r\n        output.push(validatedFile);\r\n    }\r\n    return output;\r\n};\r\n\r\n\r\n/**\r\n * For each ExtFile sets the valid prop of ExtFile to \"true\" or \"false\"\r\n * depending on the result of the individual validation. \r\n * It also add the list of errors.\r\n * @param extFileList \r\n * @param remainingValids \r\n * @param localValidatorProps \r\n * @param validator \r\n * @param maxFiles \r\n * @param localization \r\n * @returns a new ExtFile list with each item validated\r\n */\r\nexport const validateExtFileList = (\r\n    extFileList: ExtFile[],\r\n    remainingValids: number,\r\n    localValidatorProps: FileValidatorProps,\r\n    validator?: ((f: File) => ValidateFileResponse) ,\r\n    maxFiles?: number,\r\n    localization?: Localization\r\n): ExtFile[] => {\r\n    //console.log(\"remaning valids\", remainingValids);\r\n    let fileListResult: ExtFile[] = [];\r\n    if (!remainingValids) return fileListResult;\r\n    let remaining: number = remainingValids;\r\n    const ValidationErrorLocalizer: LocalLabels =\r\n        ValidateErrorLocalizerSelector(localization);\r\n    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;\r\n    for (let i = 0; i < extFileList.length; i++) {\r\n        let currentExtFile: ExtFile = extFileList[i];\r\n\r\n        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);\r\n        //console.log(\"validateExtFileList after validation\", currentExtFile);\r\n\r\n        if (currentExtFile.valid) {\r\n            //not valid due to file count limit\r\n            const valid = remaining > 0;\r\n            currentExtFile.valid = valid;\r\n            //add error about amount\r\n            if (!valid) {\r\n                currentExtFile.errors = currentExtFile.errors\r\n                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]\r\n                    : [maxFileErrorMessenger(maxFiles || Infinity)];\r\n            }\r\n            remaining--;\r\n        }\r\n        fileListResult.push(currentExtFile);\r\n\r\n    }\r\n    return fileListResult;\r\n}\r\n\r\n/**\r\n * \r\n * @param extFile \r\n * @param validator \r\n * @param validatorProps \r\n * @param localErrors \r\n * @returns \r\n */\r\nexport const validateExtFile = (\r\n    extFile: ExtFile,\r\n    validator: ((f: File) => ValidateFileResponse) | undefined,\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n    let extFileResult: ExtFile = { ...extFile };\r\n    let errors: string[] = [];\r\n    //TO-DO: Add extra validation for individual props even if FIle object was not given\r\n    if (!extFile.file) {\r\n        return { ...extFileResult }\r\n    }\r\n\r\n    //TO-DO: add \"overrideValidation\" prop to ignore the rest of validators like accept and maxFileSize\r\n    if (validator) {\r\n        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);\r\n        const { errors: errorsResult } = resultCustomValidation;\r\n        if (errorsResult)\r\n            errors.push(...errorsResult)\r\n        //return { ...extFileResult, ...validator(extFileResult.file as File) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n    //console.log(\"Validation\", maxFileSize, accept);\r\n    //check file size\r\n    const file: File = extFile.file;\r\n\r\n\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n\r\n        //console.log(\"Size error\", maxFileSizeErrorMessenger(maxFileSize));\r\n\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n    //check file type\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n    const isValid: boolean = errors.length === 0;\r\n    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };\r\n    //console.log(\"validation extFileResult\", extFileResult);\r\n    return extFileResult;\r\n\r\n}\r\n\r\n\r\n\r\n/**\r\n * Function that validate whether a file is valid, or not\r\n * according to the Filevalidator properties\r\n * @param file a File object to be evaluated\r\n * @param validatorProps the validator object \r\n * @returns a FileValidated object\r\n */\r\nexport const validateFile = (\r\n    file: File,\r\n    validator: undefined | ((f: File) => ValidateFileResponse),\r\n    validatorProps: FileValidatorProps,\r\n    localErrors: LocalLabels\r\n): ExtFile => {\r\n\r\n    const idGenerated = FileIdGenerator.getNextId();\r\n    let errors: string[] = [];\r\n    if (validator) {\r\n        return { id: idGenerated, file, ...validator(file) };\r\n    }\r\n\r\n    const { maxFileSize, accept } = validatorProps;\r\n\r\n    //check file size\r\n    if (maxFileSize && file.size > maxFileSize) {\r\n        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;\r\n        errors.push(maxFileSizeErrorMessenger(maxFileSize));\r\n    }\r\n\r\n    //check file type\r\n    // const allowedTypes = accept.filter((type) => (file.type === type))\r\n    if (accept && !validateAccept(separateAccept(accept), file)) {\r\n        errors.push(localErrors.acceptError as string);\r\n    }\r\n\r\n\r\n    const fileResult: ExtFile = {\r\n        id: idGenerated,\r\n        file: file,\r\n        valid: errors.length === 0,\r\n        errors: errors\r\n    };\r\n    // logic here\r\n    return fileResult;\r\n};","/**\r\n * list of dumy errors in english\r\n */\r\nexport const listOfErrors: string[] =\r\n    [\r\n        \"File is too big. Max file size allowed is 80mb.\",\r\n        \"File's type is not allowed.\",\r\n        \"Max amount of files (28) has been reached.\"\r\n    ];","export default function addExtraData(\r\n    formData: FormData,\r\n    extraData: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const extraDataKeys: string[] = Object.keys(extraData || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < extraDataKeys.length && extraData; i++) {\r\n        //console.log(\"uploadFile extraData\", extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);\r\n    }\r\n\r\n    formData.append(\"otherValue\", \"HAAAAAAAAAAAAAAa\");\r\n\r\n}","export default function addHeaders(\r\n    xhr: XMLHttpRequest,\r\n    headers: Record<string, string> | undefined\r\n) {\r\n    //headers\r\n    const headerKeys: string[] = Object.keys(headers || {});\r\n    //const headerValues: string[] = Object.values(headers);\r\n    for (let i = 0; i < headerKeys.length && headers; i++) {\r\n        //console.log(\"uploadFile headers\", headerKeys[i], headers[headerKeys[i]]);\r\n        xhr.setRequestHeader(\r\n            headerKeys[i],\r\n            headers[headerKeys[i]]\r\n        );\r\n    }\r\n\r\n\r\n}","import { ExtFile, UploadResponse } from \"../types\";\r\n\r\nexport const TIMEOUT_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Timeout error\",\r\n    payload: {}\r\n};\r\nexport const ABORTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Upload aborted\",\r\n    payload: {}\r\n}\r\nexport const JSON_PARSE_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Error when parsing JSON response\",\r\n    payload: {}\r\n}\r\n\r\nexport const UNEXPECTED_ERROR_RESPONSE = {\r\n    success: false,\r\n    message: \"Unexpected error\",\r\n    payload: {}\r\n}\r\n\r\nexport const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n\r\n        ...extFile,\r\n        uploadMessage: \"Unable to upload. xhr object was not provided\",\r\n        uploadStatus: \"error\",\r\n\r\n        serverResponse: { success: false, }\r\n    }\r\n}","import { ExtFile, ServerResponse, UploadResponse } from \"../types\";\r\nimport { JSON_PARSE_ERROR_RESPONSE } from \"./errors.upload\";\r\n\r\nexport const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {\r\n    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;\r\n    return result;\r\n}\r\nexport const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {\r\n    try {\r\n        const jsonResponse = JSON.parse(xhr.response);\r\n        const success: any = jsonResponse.success;\r\n        const message: string = jsonResponse.message;\r\n        const payload: any = jsonResponse.payload;\r\n\r\n        const fuiResponse: ServerResponse = {\r\n            success: typeof success === \"boolean\" ? success : false,\r\n            message: typeof message === \"string\" ? message : \"Error on message response\",\r\n            payload: payload || {}\r\n        }\r\n        return fuiResponse\r\n    } catch (error) {\r\n        //console.log(\"FuiUpload ERROR\", error);\r\n        return JSON_PARSE_ERROR_RESPONSE;\r\n    }\r\n}\r\n\r\n\r\n\r\nexport const makeSuccessUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        serverResponse: responseFui,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"success\"\r\n\r\n    }\r\n}\r\n\r\n\r\nexport const makeErrorUploadResponse = (\r\n    extFile: ExtFile,\r\n    responseFui: ServerResponse\r\n): ExtFile => {\r\n    //console.log(\"makeErrorUploadResponse\", extFile, responseFui);\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: responseFui.message,\r\n        uploadStatus: \"error\", \r\n        serverResponse: responseFui,\r\n    }\r\n}\r\n\r\n","import { ExtFile, Method, UPLOADSTATUS } from \"../types\";\r\nimport { ServerResponse, UploadResponse } from \"../types/uploadTypes\";\r\nimport addExtraDataUpload from \"./addExtraData.upload\";\r\nimport addHeaders from \"./addheaders.upload\";\r\nimport { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from \"./errors.upload\";\r\nimport { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from \"./response.upload\";\r\nimport { completeUploadResult, unableToUploadResult } from \"./utils.upload\";\r\n\r\n\r\n/**\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data upload\r\n * @param headers the set of headers\r\n * @returns a server response that consists on {status, payload, message}\r\n */\r\nexport const uploadFormData = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method | undefined = \"POST\",\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string> | undefined\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"Fui_uploadFormData uploadFile\", xhr, method, endpoint, data, headers);\r\n\r\n        const finalMethod: Method = [\"POST\", \"PUT\", \"PATCH\"].includes(method.toUpperCase()) ? method : \"POST\";\r\n\r\n        let lastLastState: number = -1;\r\n        let lastState: number = 0;\r\n        let jumped: boolean = false;\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"Fui_uploadFormData uploadFile onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => {\r\n            //console.log(\"Fui_uploadFormData ABORTEEEEDDDD\");\r\n            resolve(ABORTED_ERROR_RESPONSE);\r\n        };\r\n        xhr.onloadend = async (e) => {\r\n            //console.log(\"onloadend loaded\", e.loaded);\r\n            //console.log(\"onloadend total\", e.total);\r\n            //console.log(\"onloadend lengthComputable\", e.lengthComputable);\r\n\r\n        }\r\n        // listen for `progress` event\r\n        //currently listening on FileItem component hook\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange e.type\", e.type);\r\n            //console.log(\"Fui_uploadFormData uploadFile onreadystatechange\", xhr.readyState, xhr.response);\r\n\r\n            lastLastState = lastState;\r\n            lastState = xhr.readyState;\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    // console.log(\"Fui_uploadFormData EMPTY status\", xhr.status);\r\n                    // console.log(\"Fui_uploadFormData EMPTY readyState\", xhr.readyState);\r\n                    // console.log(\"Fui_uploadFormData EMPTY upload\", xhr.upload);\r\n                    //console.log(\"Fui_uploadFormData EMPTY abort\", xhr.abort);\r\n                    //const jumped = lastLastState - lastLastState !== 1;\r\n                    resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n                }\r\n            } else {\r\n                //console.log(\"Fui_uploadFormData FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(finalMethod, endpoint, true);\r\n\r\n        //add header to request\r\n        addHeaders(xhr, headers);\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n/**\r\n * \r\n * @param file the extended file to be uploaded\r\n * @param url the endpoint\r\n * @param method the method for uploading\r\n * @param headers headers for request\r\n * @returns \r\n */\r\nexport const uploadExtFile = async (\r\n    extFile: ExtFile,\r\n    url: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n): Promise<ExtFile> => {\r\n    return new Promise(async (resolve, reject) => {\r\n        try {\r\n            const uploader: XMLHttpRequest | undefined = extFile.xhr;\r\n\r\n            if (!uploader) {\r\n                resolve(NO_XHR_PROVIDED_ERROR(extFile));\r\n                return;\r\n            }\r\n\r\n            const localMethod: Method = method || \"POST\";\r\n            const fileToUpload: File = extFile.file as File;\r\n\r\n            const formData = new FormData();\r\n\r\n            formData.append(uploadLabel || \"file\", fileToUpload);\r\n\r\n            // add extra data to upload\r\n            const finalExtraData: Record<string, any> =\r\n                { otherValue: \"other valueee haaaa\", param2: { tecnica: \"KIKOHUUUU\", friend: \"Chaos\", age: 25 }, ...extFile.extraUploadData };\r\n\r\n            addExtraDataUpload(formData, finalExtraData);\r\n            //console.log(\"FORMDATA\", formData);\r\n\r\n            let responseFui: ServerResponse;\r\n            responseFui = await uploadFormData(\r\n                uploader,\r\n                localMethod,\r\n                url,\r\n                formData,\r\n                headers || {});\r\n\r\n            if (responseFui.success) {\r\n                // status is true\r\n                resolve(makeSuccessUploadResponse(extFile, responseFui));\r\n            } else {\r\n                // status is false\r\n                resolve(makeErrorUploadResponse(extFile, responseFui));\r\n            }\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(\r\n                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)\r\n            );\r\n        }\r\n    });\r\n};\r\n\r\n\r\n\r\n\r\nexport function uploadFile(\r\n    file: File,\r\n    url: string,\r\n    method?: Method,\r\n    label?: string,\r\n    headers?: Record<string, string>\r\n): Promise<ServerResponse> {\r\n    return new Promise(async (resolve, reject) => {\r\n\r\n\r\n        //start uploading\r\n        const formData = new FormData();\r\n\r\n        formData.append(label || \"file\", file);\r\n\r\n        try {\r\n            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);\r\n            resolve(serverResponse);\r\n        } catch (error) {\r\n            // on error\r\n            //console.log(\"uploadPromiseXHR uploadPromiseXHR ERROR\", error);\r\n            resolve(UNEXPECTED_ERROR_RESPONSE);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @deprecated\r\n * Uploads one formData object to a given endpoint in a promisified way\r\n * @param xhr XMLHTTPrequest object\r\n * @param method method for uploading\r\n * @param endpoint endpoint to upload the file\r\n * @param data FromData object to perform multipart form data\r\n * @param headers the set of headers\r\n * @returns a dui server response that consists on {success, payload, message}\r\n */\r\nexport const FuiUpload = (\r\n    xhr: XMLHttpRequest,\r\n    method: Method,\r\n    endpoint: string,\r\n    data: FormData,\r\n    headers: Record<string, string>\r\n) => {\r\n    return new Promise<ServerResponse>((resolve, reject) => {\r\n        //console.log(\"FuiUpload params\", xhr, method, endpoint, data, headers);\r\n\r\n        xhr.upload.onload = () => {\r\n            //console.log(\"FuiUpload onLoad\", xhr.readyState, xhr.response);\r\n        };\r\n\r\n        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);\r\n        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);\r\n\r\n        // listen for `progress` event\r\n        //currently listening on FileMosaic component hook\r\n\r\n        xhr.onreadystatechange = async (e) => {\r\n            //console.log(\"Finished\", xhr);\r\n            //console.log(\"FuiUpload onreadystatechange\", xhr.readyState, xhr.response, xhr);\r\n\r\n            if (xhr.readyState === 4) {\r\n                if (xhr.response !== \"\") {\r\n                    //there is th answer\r\n                    resolve(JsonParseResponse(xhr));\r\n                } else {\r\n                    //error unexpected\r\n                    resolve(UNEXPECTED_ERROR_RESPONSE);\r\n                }\r\n            } else {\r\n                //console.log(\"FuiUpload NOT YET\" + xhr.readyState);\r\n            }\r\n        };\r\n        // open request\r\n        xhr.open(method, endpoint, true);\r\n        const headerKeys: string[] = Object.keys(headers);\r\n        //const headerValues: string[] = Object.values(headers);\r\n        for (let i = 0; i < headerKeys.length; i++) {\r\n            //console.log(\"FuiUpload  headers\", headerKeys[i], headers[headerKeys[i]]);\r\n            xhr.setRequestHeader(\r\n                headerKeys[i],\r\n                headers[headerKeys[i]]\r\n            );\r\n        }\r\n        //start uploading\r\n        xhr.send(data);\r\n    });\r\n\r\n};\r\n\r\n\r\n","import { NamedColor } from \"../types/NamedColor\";\r\n\r\n/**\r\n * The full list of named Colors provided by\r\n * https://htmlcolorcodes.com/es/nombres-de-los-colores/\r\n */\r\nexport const NAMED_COLORS: NamedColor =\r\n{\r\n    //RED\r\n    indianred: \"#CD5C5C\",\r\n    lightcoral: \"#F08080\",\r\n    salmon: \"#FA8072\",\r\n    darksalmon: \"#E9967A\",\r\n    lightsalmon: \"#FFA07A\",\r\n    crimson: \"#DC143C\",\r\n    red: \"#FF0000\",\r\n    firebrick: \"#B22222\",\r\n    darkred: \"#8B0000\",\r\n    //PINK\r\n    pink: \"#FFC0CB\",\r\n    lightpink: \"#FFB6C1\",\r\n    hotpink: \"#FF69B4\",\r\n    deeppink: \"#FF1493\",\r\n    mediumvioletred: \"#C71585\",\r\n    palevioletred: \"#DB7093\",\r\n    //ORANGE\r\n    //\"lightsalmon: \"#FFA07A\",\r\n    coral: \"#FF7F50\",\r\n    tomato: \"#FF6347\",\r\n    orangered: \"#FF4500\",\r\n    darkorange: \"#FF8C00\",\r\n    orange: \"#FFA500\",\r\n    //YELLOW\r\n    gold: \"#FFD700\",\r\n    yellow: \"#FFFF00\",\r\n    lightyellow: \"#FFFFE0\",\r\n    lemonchiffon: \"#FFFACD\",\r\n    lightgoldenrodyellow: \"#FAFAD2\",\r\n    papayawhip: \"#FFEFD5\",\r\n    moccasin: \"#FFE4B5\",\r\n    peachpuff: \"#FFDAB9\",\r\n    palegoldenrod: \"#EEE8AA\",\r\n    khaki: \"#F0E68C\",\r\n    darkkhaki: \"#BDB76B\",\r\n    //PURPLE\r\n    lavender: \"#E6E6FA\",\r\n    thistle: \"#D8BFD8\",\r\n    plum: \"#DDA0DD\",\r\n    violet: \"#EE82EE\",\r\n    orchid: \"#DA70D6\",\r\n    fuchsia: \"#FF00FF\",\r\n    magenta: \"#FF00FF\",\r\n    mediumorchid: \"#BA55D3\",\r\n    mediumpurple: \"#9370DB\",\r\n    rebeccapurple: \"#663399\",\r\n    blueviolet: \"#8A2BE2\",\r\n    darkviolet: \"#9400D3\",\r\n    darkorchid: \"#9932CC\",\r\n    darkmagenta: \"#8B008B\",\r\n    purple: \"#800080\",\r\n    indigo: \"#4B0082\",\r\n    slateblue: \"#6A5ACD\",\r\n    darkslateblue: \"#483D8B\",\r\n    mediumslateblue: \"#7B68EE\",\r\n    //GREEN\r\n    greenyellow: \"#ADFF2F\",\r\n    chartreuse: \"#7FFF00\",\r\n    lawngreen: \"#7CFC00\",\r\n    lime: \"#00FF00\",\r\n    limegreen: \"#32CD32\",\r\n    palegreen: \"#98FB98\",\r\n    lightgreen: \"#90EE90\",\r\n    mediumspringgreen: \"#00FA9A\",\r\n    springgreen: \"#00FF7F\",\r\n    mediumseagreen: \"#3CB371\",\r\n    seagreen: \"#2E8B57\",\r\n    forestgreen: \"#228B22\",\r\n    green: \"#008000\",\r\n    darkgreen: \"#006400\",\r\n    yellowgreen: \"#9ACD32\",\r\n    olivedrab: \"#6B8E23\",\r\n    olive: \"#808000\",\r\n    darkolivegreen: \"#556B2F\",\r\n    mediumaquamarine: \"#66CDAA\",\r\n    darkseagreen: \"#8FBC8B\",\r\n    lightseagreen: \"#20B2AA\",\r\n    darkcyan: \"#008B8B\",\r\n    teal: \"#008080\",\r\n    //BLUE\r\n    aqua: \"#00FFFF\",\r\n    cyan: \"#00FFFF\",\r\n    lightcyan: \"#E0FFFF\",\r\n    paleturquoise: \"#AFEEEE\",\r\n    aquamarine: \"#7FFFD4\",\r\n    turquoise: \"#40E0D0\",\r\n    mediumturquoise: \"#48D1CC\",\r\n    darkturquoise: \"#00CED1\",\r\n    cadetblue: \"#5F9EA0\",\r\n    steelblue: \"#4682B4\",\r\n    lightsteelblue: \"#B0C4DE\",\r\n    powderblue: \"#B0E0E6\",\r\n    lightblue: \"#ADD8E6\",\r\n    skyblue: \"#87CEEB\",\r\n    lightskyblue: \"#87CEFA\",\r\n    deepskyblue: \"#00BFFF\",\r\n    dodgerblue: \"#1E90FF\",\r\n    cornflowerblue: \"#6495ED\",\r\n    //\"mediumslateblue: \"#7B68EE\",\r\n    royalblue: \"#4169E1\",\r\n    blue: \"#0000FF\",\r\n    mediumblue: \"#0000CD\",\r\n    darkblue: \"#00008B\",\r\n    navy: \"#000080\",\r\n    midnightblue: \"#191970\",\r\n    //BROWN\r\n    cornsilk: \"#FFF8DC\",\r\n    blanchedalmond: \"#FFEBCD\",\r\n    bisque: \"#FFE4C4\",\r\n    navajowhite: \"#FFDEAD\",\r\n    wheat: \"#F5DEB3\",\r\n    burlywood: \"#DEB887\",\r\n    tan: \"#D2B48C\",\r\n    rosybrown: \"#BC8F8F\",\r\n    sandybrown: \"#F4A460\",\r\n    goldenrod: \"#DAA520\",\r\n    darkgoldenrod: \"#B8860B\",\r\n    peru: \"#CD853F\",\r\n    chocolate: \"#D2691E\",\r\n    saddlebrown: \"#8B4513\",\r\n    sienna: \"#A0522D\",\r\n    brown: \"#A52A2A\",\r\n    maroon: \"#800000\",\r\n    //WHITE\r\n    white: \"#FFFFFF\",\r\n    snow: \"#FFFAFA\",\r\n    honeydew: \"#F0FFF0\",\r\n    mintcream: \"#F5FFFA\",\r\n    azure: \"#F0FFFF\",\r\n    aliceblue: \"#F0F8FF\",\r\n    ghostwhite: \"#F8F8FF\",\r\n    whitesmoke: \"#F5F5F5\",\r\n    seashell: \"#FFF5EE\",\r\n    beige: \"#F5F5DC\",\r\n    oldlace: \"#FDF5E6\",\r\n    floralwhite: \"#FFFAF0\",\r\n    ivory: \"#FFFFF0\",\r\n    antiquewhite: \"#FAEBD7\",\r\n    linen: \"#FAF0E6\",\r\n    lavenderblush: \"#FFF0F5\",\r\n    mistyrose: \"#FFE4E1\",\r\n    //GREY\r\n    gainsboro: \"#DCDCDC\",\r\n    lightgray: \"#D3D3D3\",\r\n    silver: \"#C0C0C0\",\r\n    darkgray: \"#A9A9A9\",\r\n    gray: \"#808080\",\r\n    dimgray: \"#696969\",\r\n    lightslategray: \"#778899\",\r\n    slategray: \"#708090\",\r\n    darkslategray: \"#2F4F4F\",\r\n    black: \"#000000\"\r\n}","import { NAMED_COLORS } from \"./namedColors\";\r\n\r\n/**\r\n * Make the color into a darker color\r\n * @param colorInput \r\n * @returns the darked color in\r\n */\r\nexport const darkerColor = (colorInput: string, percentage = 25): string => {\r\n    let darkedColor = \"\";\r\n    const reduce = (100 - percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        darkedColor = `rgb(${component1 * reduce}, ${component2 * reduce},${component3 * reduce})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            darkedColor = `rgb(${parseInt(components[0], 10) * reduce}, ${parseInt(components[1], 10) * reduce},${parseInt(components[2], 10) * reduce})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return darkedColor;\r\n}\r\n/**\r\n * Make the color into a brighted color\r\n * @param colorInput \r\n * @returns the brighted color \r\n */\r\nexport const brighterColor = (colorInput: string, percentage = 25): string => {\r\n    let brightedColor = \"\";\r\n    const increase = (100 + percentage) / 100;\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    if (isHexColor(colourNameToHex(colorInput))) {\r\n\r\n        component1 = hexTodec(colorInput.charAt(1)) * 16 + hexTodec(colorInput.charAt(2));\r\n        component2 = hexTodec(colorInput.charAt(3)) * 16 + hexTodec(colorInput.charAt(4));\r\n        component3 = hexTodec(colorInput.charAt(5)) * 16 + hexTodec(colorInput.charAt(6));\r\n\r\n        brightedColor = `rgb(${component1 * increase}, ${component2 * increase},${component3 * increase})`;\r\n    } else {\r\n        if (colorInput.includes(\"rgba\")) {\r\n            let slicer = colorInput.replace(\"rgba(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            //return darkedColor;\r\n        } else if (colorInput.includes(\"rgb\")) {\r\n\r\n            let slicer = colorInput.replace(\"rgb(\", \"\");\r\n            let components: string[] = slicer.split(\",\");\r\n            brightedColor = `rgb(${parseInt(components[0], 10) * increase}, ${parseInt(components[1], 10) * increase},${parseInt(components[2], 10) * increase})`;\r\n            // return darkedColor;\r\n        }\r\n    }\r\n\r\n    return brightedColor;\r\n}\r\n\r\n/**\r\n * In order to managae rgba() we convert hex colors into rgba()\r\n * If the given color is already a rgb() color, it can add the percentage to convert it into rgba()\r\n * \r\n * \r\n * @param colorInput color in hex or in rgb\r\n * @param perc percentage for RGBA() color \r\n * @returns the rgba representation of a hex color\r\n */\r\nexport const hexColorToRGB = (colorInput: string | undefined, perc = 0, defaultColor?: string): string => {\r\n    let resultDefault: string = defaultColor ? defaultColor : \"rgba(255, 255, 255, 0.6)\";\r\n    if (!colorInput) {\r\n        return resultDefault;\r\n    }\r\n    //work only in uppercase\r\n    const color: string = colorInput.toUpperCase();\r\n    // is already a rgba color\r\n    if (color.includes(\"RGBA\")) {\r\n        return color;\r\n    }\r\n\r\n    //return rbg => rgba\r\n    if (color.includes(\"RGB\")) {\r\n        return color.replace('RGB', `rgba`).replace(')', `, ${perc})`);\r\n    }\r\n\r\n    // if is a hex color or named color\r\n    if (!isHexColor(colourNameToHex(color))) {\r\n        return resultDefault;\r\n    }\r\n    let resultOk: string = \"\";\r\n    //let strVar: string = \"\";\r\n    let component1: number = 0;\r\n    let component2: number = 0;\r\n    let component3: number = 0;\r\n    //If passed all validations, proceed to transform\r\n    component1 = hexTodec(color.charAt(1)) * 16 + hexTodec(color.charAt(2));\r\n    component2 = hexTodec(color.charAt(3)) * 16 + hexTodec(color.charAt(4));\r\n    component3 = hexTodec(color.charAt(5)) * 16 + hexTodec(color.charAt(6));\r\n    resultOk = `rgba(${component1}, ${component2},${component3} , ${perc})`;\r\n    return resultOk;\r\n}\r\n\r\n/**\r\n * Validates wheteher the color is hexadecimal css color\r\n * Example:  #FF56AC\r\n * \r\n * \r\n * @param colorInput the color inpt to test \r\n * @returns true if the inputColor is a hexadecimal css color\r\n */\r\nexport const isHexColor = (colorInput: string): boolean => {\r\n\r\n    // if first element is no '#' return default background color\r\n    if (colorInput.charAt(0) !== '#') {\r\n\r\n        return false;\r\n    }\r\n    // if color lenght is not exactly 7 return default\r\n    if (colorInput.length !== 7) {\r\n\r\n\r\n        return false;\r\n    }\r\n    // if one of the letters is not included in hex array return  default\r\n    for (let i = 1; i < colorInput.length; i++) {\r\n        if (!hexArray.includes(colorInput.charAt(i))) {\r\n\r\n\r\n            return false;\r\n        }\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\n/**\r\n * Converts a named color into hexadecimal color\r\n * from a list of well known namd colors if found.\r\n * When not given returns a \"\"\r\n * When not found in the list, returns the same value given\r\n * @param colour the named color\r\n * @returns The hex representation of the color or \"\" or the same color\r\n */\r\nexport function colourNameToHex(colour: string | undefined): string {\r\n    /**\r\n     * When not given\r\n     */\r\n    if (!colour) {\r\n        return \"\";\r\n    }\r\n    /**\r\n     * when named color is found\r\n     */\r\n    if (NAMED_COLORS[colour.toLocaleLowerCase()] !== undefined) {\r\n        return NAMED_COLORS[colour.toLocaleLowerCase()];\r\n    }\r\n    /**\r\n     * When the named color was not found\r\n     */\r\n\r\n    return colour;\r\n}\r\n\r\n/**\r\n * hexArray & decArray\r\n * \r\n * arrays of numbers used to convert hexadecimal numbers into decimal and viceversa\r\n */\r\nconst hexArray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\r\nconst decArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];\r\n\r\n/**\r\n * Converts hex number in string representation to decimal number\r\n * \r\n * \r\n * @param letter the string hex number\r\n * @returns a decimal number\r\n */\r\nexport const hexTodec = (letter: string): number => {\r\n    if (hexArray.includes(letter)) {\r\n        return decArray[hexArray.indexOf(letter)];\r\n    } else {\r\n        return 0;\r\n    }\r\n}\r\n\r\n\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const asureColor = (color?: string): string => {\r\n    if (color !== undefined && color !== \"\") {\r\n        return color;\r\n    } else {\r\n        return DEFAULT_FONT_COLOR;\r\n    }\r\n}\r\n/** \r\n * Asure a base color. When not given or when given an incorrect color format\r\n * default color is this kind of grey #5d6475\r\n * \r\n * @param color param color given by user\r\n * @returns returns the same color \r\n */\r\nexport const completeAsureColor = (color?: string, perc = 1): string => {\r\n\r\n    return hexColorToRGB(asureColor(colourNameToHex(color)), perc);\r\n\r\n}\r\n\r\n\r\n\r\nexport const DEFAULT_FONT_COLOR = \"#646c7f\";","/**\r\n * If className is given, adds class name in string format to a base class name\r\n * @param baseClassName the base class name\r\n * @param className the class name to be added\r\n * @returns a new class name obtained by adding the second paramater\r\n */\r\nexport const addClassName = (\r\n    baseClassName: string,\r\n    className: string | undefined\r\n): string => {\r\n    if (className)\r\n        return `${baseClassName} ${className}`;\r\n    return baseClassName;\r\n}","\r\nimport { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from \"../types\"\r\n\r\nexport const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {\r\n    return {\r\n        ...extFile,\r\n        uploadMessage: \"Unexpected error\",\r\n        uploadStatus: \"error\",\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: unexpected error \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const unableToUploadResult = (\r\n    extFile: ExtFile\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: \"Unable to upload. XHR was not provided\",\r\n            uploadStatus: \"error\"\r\n        },\r\n        serverResponse: {\r\n            success: false,\r\n            message: \"Error on upload: Unable to upload. XHR was not provided \",\r\n            payload: {},\r\n        }\r\n    }\r\n}\r\nexport const completeUploadResult = (\r\n    extFile: ExtFile,\r\n    serverResponse: ServerResponse,\r\n    uploadStatusresult: UPLOADSTATUS\r\n): UploadResponse => {\r\n    return {\r\n        id: extFile.id,\r\n        uploadedFile: {\r\n            ...extFile,\r\n            uploadMessage: serverResponse.message,\r\n            uploadStatus: uploadStatusresult\r\n        },\r\n        serverResponse: serverResponse\r\n    }\r\n}\r\n\r\n/**\r\n * Initializes the xhr attribute for performing uploads\r\n * @param extFileList the list of extended files\r\n * @returns the array of extFiles with the xhr attribute initialized\r\n */\r\nexport const toUploadableExtFileList = (\r\n    extFileList: ExtFile[] | ExtFileInstance[]\r\n): ExtFile[] => {\r\n    if (!extFileList) return [];\r\n    return extFileList.map(extFile => {\r\n        return { ...extFile, xhr: new XMLHttpRequest() }\r\n    });\r\n}\r\n\r\n/**\r\n * Updates the uploadStatus of the given extFile \r\n * from \"preparing\" to \"uploading\"\r\n * @param extFile the extended file\r\n * @returns the extended file with uploadStatus updated to \"uploading\"\r\n */\r\nexport const instantPreparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): ExtFileInstance | ExtFile => {\r\n    if (extFile.uploadStatus === \"preparing\") {\r\n        //for ExtFile instance\r\n        extFile.uploadStatus = \"uploading\";\r\n        //for ExtFile type\r\n        return {\r\n            ...extFile,\r\n            uploadStatus: \"uploading\",\r\n        };\r\n    }\r\n    return extFile;\r\n};\r\n\r\n/**\r\n * \r\n * @param extFile the extended file\r\n * @returns \r\n */\r\nexport const preparingToUploadOne = (\r\n    extFile: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            if (extFile.uploadStatus === \"preparing\") {\r\n                //for ExtFile instance\r\n                extFile.uploadStatus = \"uploading\";\r\n                //for ExtFile type\r\n                resolve({\r\n                    ...extFile,\r\n                    uploadStatus: \"uploading\",\r\n                });\r\n            } else\r\n                resolve(extFile);\r\n        }, 1500);\r\n    });\r\n};\r\n/**\r\n * Sleeps for 1200 miliseconds for showing a better transition\r\n * on uploading\r\n * @param time the time to sleep in miliseconds\r\n * @returns true is everything is ok\r\n */\r\nexport const sleepTransition = (time = 1500\r\n): Promise<boolean> => {\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve(true);\r\n        }, time);\r\n    });\r\n}\r\n/**\r\n * Removes the deleted files and updates the aborted ones with a message\r\n * @param arrExtFile incomming arr of extFle instances\r\n * @returns an array of ExtFle objects\r\n */\r\nexport const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {\r\n  \r\n    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>\r\n        !extFileInstance.extraData?.deleted)\r\n\r\n        .map((extFileInstance: ExtFileInstance) => {\r\n            if (extFileInstance.uploadStatus === \"aborted\"\r\n                && !extFileInstance.uploadMessage) {\r\n                    // TO-DO: ad localization for this message\r\n                extFileInstance.uploadMessage = \"Upload aborted by user\";\r\n                //extFileInstance.uploadStatus = \"error\";\r\n            }\r\n            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile\r\n        });\r\n}\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @param extFileobj \r\n */\r\nexport const setNextUploadStatus = (\r\n    extFileInstance: ExtFileInstance,\r\n    extFileobj: ExtFile) => {\r\n\r\n    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;\r\n    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;\r\n\r\n    //console.log(\"setNextUploadStatus\", prevStatus, nextStstaus);\r\n    //console.log(\"setNextUploadStatus\", extFileInstance.uploadMessage, extFileobj.uploadMessage);\r\n    if (\r\n        prevStatus === \"preparing\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = undefined;\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    } else if (\r\n        prevStatus === \"uploading\" &&\r\n        [\"aborted\", undefined].includes(nextStstaus)\r\n    ) {\r\n        extFileInstance.uploadStatus = \"aborted\";\r\n        extFileInstance.uploadMessage = extFileobj.uploadMessage;\r\n\r\n    }\r\n\r\n}\r\n\r\n","import { Method } from \"./method\"\r\n\r\nexport type UploadConfig = {\r\n    /**\r\n     * The url endpoint to upload the file.\r\n     * e.g. https://www.myasomwbackend/uploads/file\r\n     */\r\n    url?: string;\r\n    /**\r\n     * upload method, can be POST | PUT | PATCH\r\n     * @default \"POST\"\r\n     */\r\n    method?: Method;\r\n    /**\r\n     * Request headers for http request.\r\n     * e.g.\r\n     * ```jsx\r\n     * headers = { \r\n     *    \"content-type\": \"multipart/form-data\",\r\n     *    Authorization: \"Bearer YOUR_BEARER_TOKEN_GOES_HERE\",\r\n     * } \r\n     * ```\r\n     */\r\n    headers?: Record<string, string>;\r\n    /**\r\n     * the label to use in request\r\n     * On server this must be the label to get the file.\r\n     * @default \"file\"\r\n     */\r\n    uploadLabel?: string;\r\n    /**\r\n     * Flag for indicating whther to remove the non-valid files\r\n     * before starting the upload process.\r\n     * This flag is valid only if validation is enable\r\n     */\r\n    cleanOnUpload?: boolean;\r\n    /**\r\n     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also\r\n     * it will start the upload stage for the files if at least url was set\r\n     * By default is false\r\n     */\r\n    autoUpload?: boolean;\r\n    /**\r\n     * The time that will last the \"preparing\" stage\r\n     * By default is 1500 miliseconds = 1.5 seconds\r\n     */\r\n    preparingTime?: number;\r\n    /**\r\n     * A message to show in the footer when the uploading process takes place.\r\n     */\r\n    uploadingMessage?: string;\r\n}\r\n\r\nexport const createUploadConfig = (\r\n    url?: string,\r\n    method?: Method,\r\n    headers?: Record<string, string>,\r\n    uploadLabel?: string,\r\n    cleanonUpload?: boolean\r\n) => {\r\n    return {\r\n        url,\r\n        method,\r\n        headers,\r\n        uploadLabel,\r\n        cleanonUpload\r\n    }\r\n}","import { createSyntheticFile } from \"../synthetic-file\"\r\nimport { ExtFile } from \"../types\"\r\nimport { FileIdGenerator } from \"../utils\"\r\nimport { listOfErrors } from \"../validation\"\r\n\r\nexport const extFileMock = (id?: number): ExtFile => {\r\n    return {\r\n        id: id || FileIdGenerator.getNextId(),\r\n        name: \"fileName.ext\",\r\n        size: 28 * 1024 * 1024,\r\n        type: \"files-ui/mock\",\r\n        file: createSyntheticFile(\"fileName.ext\", 28 * 1024 * 1024, \"files-ui/mock\"),\r\n        errors: listOfErrors,\r\n        uploadMessage: \"uploaded\",\r\n        uploadStatus: \"preparing\",\r\n        valid: false,\r\n        progress: 28,\r\n        xhr: new XMLHttpRequest(),\r\n        extraData: {\r\n            extraData1: \"files-ui is the best\",\r\n            extraData2: {\r\n                id: 1,\r\n                name: \"files-ui.mock\"\r\n            },\r\n            deleted: true\r\n        },\r\n        downloadUrl: \"https://www.files-ui.com/mock/file-download\"\r\n    }\r\n}","import { ExtFile, ExtFileInstance, ExtFileManager } from \"../types\";\r\n\r\nexport const extFileReconcilation = (\r\n    dropzoneId: number | string | undefined,\r\n    extFileIncomming: ExtFile[]\r\n): ExtFile[] | undefined => {\r\n    let result: ExtFile[] = [];\r\n\r\n    let arrOfExtFiles: ExtFileInstance[] | undefined =\r\n        ExtFileManager.getExtFileInstanceList(dropzoneId);\r\n\r\n    // continue only if arrOfExtFiles exists\r\n    if (arrOfExtFiles) {\r\n        //different sizes means there was deleted files\r\n        //also can be new files to be uploaded\r\n        //needed an extra flag to allow add files in the middle of uploading process\r\n        // if new files are added, they are added to the Manager\r\n        // outside they were already added to the UI\r\n        // inside Dropzone, will be needed a .next() method for manager\r\n\r\n        // 1st allow deleted files and ignore new ones\r\n        // reduce the arrOfExtFileInstances array\r\n        // parecido a listas ligadas, iterar hasta encontrar null XD\r\n        let incommingTemp: ExtFile[] = [...extFileIncomming];\r\n        incommingTemp = incommingTemp.filter(\r\n            (F) => arrOfExtFiles?.findIndex(I => I.id === F.id) === -1\r\n        );\r\n\r\n        //console.log(\"reconciliation incommingTemp\", incommingTemp);\r\n        \r\n\r\n        //different sizes not allowed\r\n        if (arrOfExtFiles.length !== extFileIncomming.length || extFileIncomming.length === 0) {\r\n            return undefined;\r\n        }\r\n        for (let i = 0; i < arrOfExtFiles.length; i++) {\r\n            if (\r\n                (extFileIncomming[i].uploadStatus === undefined)\r\n                &&\r\n                (arrOfExtFiles[i].uploadStatus === \"preparing\")\r\n            ) {\r\n                //console.log(\"useDropzoneFileListUpdater onCancel i\", i);\r\n                arrOfExtFiles[i].uploadStatus = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    return result;\r\n}","\r\nimport { DropzoneLocalizerSelector } from \"../localization\";\r\nimport { ExtFile, ExtFileInstance, UploadResponse } from \"../types\";\r\n\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"uploading\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const setPrepToUploading = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n/**\r\n * Updates a extFile and sets its uploadStatus to \"success\"\r\n * @param extFile the extended file object\r\n * @returns the extended file with the uploadStatus attribute modified\r\n */\r\nexport const uploadOne = (\r\n    extFile: ExtFile\r\n): Promise<ExtFile> => {\r\n    //console.log(\"upload One\", extFile);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            resolve({\r\n                ...extFile,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n/**\r\n * Awaits the given time before start uploading\r\n * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs\r\n * @returns an empty object\r\n */\r\nexport const sleepPreparing = (\r\n    preparingTime: number = 5000\r\n): Promise<void> => {\r\n    //console.log(\"uploadfiles preparingTime One\", preparingTime);\r\n    return new Promise((resolve, reject) => {\r\n\r\n        setTimeout(() => {\r\n            resolve();\r\n        }, preparingTime);\r\n\r\n    });\r\n}\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const prepToUploadOne = (\r\n    extFileInstance: ExtFileInstance | ExtFile\r\n): Promise<ExtFileInstance | ExtFile> => {\r\n    //console.log(\"prepToUpload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"uploading\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"uploading\",\r\n            });\r\n        }, 1500);\r\n\r\n    });\r\n};\r\n\r\n/**\r\n * \r\n * @param extFileInstance \r\n * @returns \r\n */\r\nexport const uploadOneExtFile = (\r\n    extFileInstance: ExtFileInstance\r\n): Promise<Object> => {\r\n    //console.log(\"upload One\", extFileInstance);\r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            extFileInstance.uploadStatus = \"success\";\r\n            resolve({\r\n                ...extFileInstance,\r\n                uploadStatus: \"success\",\r\n            });\r\n        }, 2000);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUpload = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<ExtFile> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const success = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"success\",\r\n                    uploadMessage: message,\r\n\r\n                });\r\n            } else {\r\n                const success = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    ...extFile,\r\n                    serverResponse: { success, message, payload },\r\n                    uploadStatus: \"error\",\r\n                    uploadMessage: message,\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n\r\n\r\n/**\r\n * \r\n * @param extFile the extFile to upload \r\n * @param DropzoneLocalizer the localization\r\n * @returns a duiUploadResponse object that describes the result\r\n */\r\nexport const fakeFuiUploadExtFile = (\r\n    extFileInstance: ExtFileInstance,\r\n    DropzoneLocalizer = DropzoneLocalizerSelector(\"EN-en\")\r\n): Promise<UploadResponse> => {\r\n    \r\n    const extFile:ExtFile = extFileInstance.toExtFile();\r\n    \r\n    return new Promise((resolve, reject) => {\r\n        setTimeout(() => {\r\n            const randomNumber: number = Math.floor(Math.random() * 10);\r\n            if (randomNumber % 2 === 0) {\r\n                const status = true;\r\n                const message = DropzoneLocalizer.fakeuploadsuccess as string;\r\n                const payload = { url: \"\" };\r\n\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"success\",\r\n                        uploadMessage: message,\r\n                        progress: 100\r\n                    }\r\n\r\n                });\r\n            } else {\r\n                const status = false;\r\n                const message = DropzoneLocalizer.fakeUploadError as string;\r\n                const payload = {};\r\n                resolve({\r\n                    id: extFile.id,\r\n                    serverResponse: { status, message, payload },\r\n                    uploadedFile: {\r\n                        ...extFile,\r\n                        uploadStatus: \"error\",\r\n                        uploadMessage: message,\r\n                        progress: 60\r\n                    },\r\n                });\r\n            }\r\n        }, 1700);\r\n    });\r\n};\r\n","import { ExtFile, ExtFileInstance } from \"../types\";\r\nimport { FileIdGenerator } from \"./IdGenerator\";\r\n\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile objects\r\n * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile objects\r\n */\r\nexport const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {\r\n    let extFileArray: ExtFile[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });\r\n    }\r\n    return extFileArray;\r\n};\r\n\r\n/**\r\n * Converts the fileList into an array of separated ExtFile instances\r\n * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)\r\n * @returns an array of ExtFile instances\r\n */\r\nexport const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {\r\n    let extFileArray: ExtFileInstance[] = [];\r\n    for (let i = 0, f: File; (f = fileList[i]); i++) {\r\n        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));\r\n    }\r\n    return extFileArray;\r\n};","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function getImageOrientation(\r\n    imageSource: string | undefined,\r\n): Promise<\"landscape\" | \"portrait\"> {\r\n    return new Promise((resolve, reject) => {\r\n        //console.log(\"getImageOrientation imageSource\", imageSource);\r\n        if (!imageSource || imageSource.length === 0) {\r\n           // console.log(\"getImageOrientation rejected\", imageSource);\r\n\r\n            reject(\"landscape\");\r\n            return;\r\n        }\r\n        try {\r\n            //console.log(\"getImageOrientation try ini\", imageSource);\r\n\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = imageSource;\r\n            img.onerror = (ev: string | Event) => {\r\n                //console.log(\"getImageOrientation There was a ne error reading\", ev);\r\n                reject(\"landscape\");\r\n            }\r\n            img.onload = () => {\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n                if (width > height) {\r\n                    resolve(\"landscape\");\r\n                } else {\r\n                    resolve(\"portrait\");\r\n                }\r\n            }\r\n        } catch (error) {\r\n            //console.error(\"An error ocurred when trying to get the image orientation\");\r\n\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to get the image orientation\");\r\n            }\r\n            reject(\"landscape\");\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * \r\n * @param file \r\n * @param name \r\n * @param type \r\n * @param size \r\n * @returns the file name, type and size\r\n */\r\nexport const getLocalFileItemData = (\r\n    file: File | undefined,\r\n    name: string | undefined,\r\n    type: string | undefined,\r\n    size: number | undefined\r\n): [string, string | undefined, number | undefined] => {\r\n\r\n    let localFileName: string = \"\";\r\n    let localFileType: string | undefined = undefined;\r\n    let localFileSize: number | undefined = undefined;\r\n\r\n    // if file object is valid, obtain metadata from it\r\n    // otherwise try to get file data from individual props in string format\r\n    if (file && typeof file.name === \"string\") {\r\n        localFileName = file.name;\r\n        localFileType = file.type;\r\n        localFileSize = file.size;\r\n    } else if (name && typeof name === \"string\") {\r\n        localFileName = name;\r\n        localFileType = type;\r\n        localFileSize = size;\r\n    }\r\n    return [localFileName, localFileType, localFileSize]\r\n}","import { ExtFile } from \"../types\";\r\n\r\nexport const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {\r\n    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== \"success\";\r\n}","export const isValidateActive = (\r\n    accept: string | undefined,\r\n    maxFileSize: number | undefined,\r\n    maxFiles: number | undefined,\r\n    validator: Function | undefined\r\n  ): boolean => {\r\n    return (\r\n      (accept !== undefined && accept !== null) ||\r\n      (maxFileSize !== undefined && maxFileSize !== null) ||\r\n      (maxFiles !== undefined && maxFiles !== null) ||\r\n      (validator !== undefined && validator !== null)\r\n    );\r\n  };\r\n  ","import { ExtFile, UPLOADSTATUS } from \"../types\";\r\nimport { FileIdGenerator, getRandomInt } from \"../utils\";\r\nimport { getRandomUploadStatus, listOfErrors } from \"../validation\";\r\n\r\n\r\n/**\r\n * Make a validated file that is ready to be used on FileItem component,\r\n * if valid is not set, a random operation will decide whether the file is valid or not\r\n * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status\r\n * If valid is true, then file can be uploaded and can have upload message if the status is succes or error\r\n * @param file The file\r\n * @param valid true if it is a valid file, otherwise is false\r\n * @param uploadStatus the current upload status. If not given a random upload status will be set\r\n * @param uploadMessage the upload message after uploading\r\n * @returns a Vaidated File object\r\n */\r\n export const makeSyntheticExtFile = (\r\n    file?: File ,\r\n    valid = (Math.ceil(Math.random() * 28) % 2 === 0),\r\n    uploadStatus?: UPLOADSTATUS,\r\n    uploadMessage?: string\r\n): ExtFile => {\r\n    //if valid, naturally, can be uploaded\r\n    let errors: string[] | undefined = [];\r\n    let newUpoadStatus = uploadStatus || getRandomUploadStatus();\r\n\r\n    let customUploadMessage: string | undefined = uploadMessage || \"\";\r\n    if (valid) {\r\n        //we can decide according to upload status \r\n        if (!uploadMessage) {\r\n            switch (newUpoadStatus) {\r\n                case \"error\": customUploadMessage = \"Upload failed. There was an error\"; break;\r\n                case \"success\": customUploadMessage = \"File was successfully upload\"; break;\r\n                default: uploadMessage = undefined;\r\n            }\r\n        }\r\n        errors = undefined;\r\n    } else {\r\n        //if not valid, just show error messages\r\n        const randInt: number = getRandomInt(0, 3);\r\n        errors.push(listOfErrors[randInt]);\r\n        newUpoadStatus = undefined;\r\n        customUploadMessage = undefined;\r\n    }\r\n    //now make a File Validated instance \r\n    const newFileValidated: ExtFile = {\r\n        id: FileIdGenerator.getNextId(),\r\n        valid: valid,\r\n        file: file,\r\n        uploadStatus: newUpoadStatus,\r\n        uploadMessage: customUploadMessage,\r\n        errors: errors\r\n    };\r\n    return newFileValidated;\r\n}\r\n","import { UPLOADSTATUS } from \"../types\";\r\nimport { getRandomInt } from \"../utils/randomInt\";\r\n\r\n/**\r\n * Generates a random number betwen 0 and 3\r\n * where\r\n * 0 => error\r\n * 1 => uploading\r\n * 2 => success\r\n * 3 => undefined\r\n * @returns a random upload status or undefined\r\n */\r\n export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {\r\n    const result: number = getRandomInt(0, 4);\r\n    switch (result) {\r\n        case 0: return \"error\";\r\n        case 1: return \"uploading\";\r\n        case 2: return \"success\";\r\n        default:\r\n            return undefined;\r\n    }\r\n}","/**\r\n * Reads an image (or other type) file as data URL in a promise way, \r\n * so you can use await.\r\n * It will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @returns data URL of the file\r\n */\r\nexport const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.readAsDataURL(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file as Text in a promise way, so you can use await.\r\n * If other kind of file is sent, this function will read it anyway\r\n * and will return a string that contains the URL representation\r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns data text of the file\r\n */\r\nexport const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsText(file, encoding ? encoding : \"base64\");\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n\r\n\r\n/**\r\n * Reads a file and return the raw binary data from the file. \r\n * @param file File or Blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns raw binary data of the file\r\n */\r\nexport const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsBinaryString(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n/**\r\n * Reads a file and returns an ArrayBuffer representing the file's data \r\n * @param file File or blob object\r\n * @param encoding The type of encoding such as \"base64\"\r\n * @returns ArrayBuffer representation of the file\r\n */\r\nexport const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {\r\n    return new Promise<string | undefined>((resolve, reject) => {\r\n        try {\r\n            const reader = new FileReader();\r\n            reader.onload = function () {\r\n                resolve(reader.result as string);\r\n            }\r\n            reader.onprogress = () => {\r\n                onProgress?.();\r\n            }\r\n            reader.onerror = function () {\r\n                onError?.();\r\n            }\r\n            reader.readAsArrayBuffer(file);\r\n        } catch (error) {\r\n            reject(undefined);\r\n        }\r\n    });\r\n}","/**\r\n * Resize an image resolution given maxWidth and maxHeight\r\n * \r\n * Should be called with await\r\n * @param base64Str a string representation of an imae file\r\n * @param maxWidth the max width of he image\r\n * @param maxHeight the max height of he image\r\n * @returns the resized image\r\n */\r\nexport function resizeImage(\r\n    base64Str: string,\r\n    maxWidth = 135,\r\n    maxHeight = 120\r\n): Promise<string | undefined> {\r\n    return new Promise((resolve, reject) => {\r\n        try {\r\n            let img: HTMLImageElement = new Image();\r\n            img.src = base64Str;\r\n            img.onload = () => {\r\n                let canvas: HTMLCanvasElement = document.createElement('canvas');\r\n                const MAX_WIDTH: number = maxWidth;\r\n                const MAX_HEIGHT: number = maxHeight;\r\n                let width: number = img.width;\r\n                let height: number = img.height;\r\n\r\n                if (maxWidth > width && maxHeight > height) {\r\n                    resolve(base64Str);\r\n                } else\r\n                    if (width > height) {\r\n                        if (width > MAX_WIDTH) {\r\n                            height *= MAX_WIDTH / width;\r\n                            width = MAX_WIDTH;\r\n                        }\r\n                    } else {\r\n                        if (height > MAX_HEIGHT) {\r\n                            width *= MAX_HEIGHT / height;\r\n                            height = MAX_HEIGHT;\r\n                        }\r\n                    }\r\n                canvas.width = width\r\n                canvas.height = height\r\n                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')\r\n                if (ctx) {\r\n                    ctx.drawImage(img, 0, 0, width, height);\r\n                    resolve(canvas.toDataURL());\r\n\r\n                } else {\r\n                    if (process.env.NODE_ENV === \"development\") {\r\n                        console.error(\"An error ocurred when trying to make a thumnail\");\r\n                    }\r\n                    reject(undefined);\r\n                }\r\n            }\r\n        } catch (error) {\r\n            if (process.env.NODE_ENV === \"development\") {\r\n                console.error(\"An error ocurred when trying to make a thumnail\");\r\n            }\r\n            reject(undefined);\r\n        }\r\n    });\r\n}\r\n\r\n","/**\r\n * The max size of the word in characters\r\n */\r\nexport const DEFAULT_MAX_SIZE_WORD = 30;\r\n/**\r\n * \r\n * @param word the word to be shrinked\r\n * @returns the shrinked word\r\n */\r\nexport const shrinkWord = (word = \"\", card = false): string => {\r\n    let newWord = word;\r\n    if (card) {\r\n        if (word.length >= 20) {\r\n            newWord = word.slice(0, 10) + \"...\" + word.slice(-7);\r\n        }\r\n    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {\r\n        newWord = word.slice(0, 13) + \"...\" + word.slice(-8);\r\n    }\r\n    return newWord;\r\n};"],"names":["fileSizeFormater","fileSize","toFixed","DropzoneItalian","defaultLabel","uploadingMessage","amountOfFiles","uploadFinished","uploaded","rejected","concat","noFilesMessage","footer","acceptAll","acceptCustom","accept","header","uploadFilesMessage","maxSizeMessage","maxFileSize","validFilesMessage","numberOfValidFiles","maxFiles","fakeuploadsuccess","fakeUploadError","FileItemItalian","fullInfoLayer","name","size","type","status","preparing","uploading","success","valid","denied","error","aborted","ValidateErrorItalian","maxSizeError","maxSize","acceptError","maxFileCount","DropzoneFrench","FileItemFrench","ValidateErrorFrench","DropzoneEnglish","FileItemEnglish","ValidateErrorEnglish","DropzoneSpanish","FileItemSpanish","ValidateErrorSpanish","DropzoneRussian","FileItemRussian","ValidateErrorRussian","DropzonePortuguese","FileItemPortuguese","ValidateErrorPortuguese","DropzoneSimplifiedChinese","FileItemSimplifiedChinese","ValidateErrorSimplifiedChinese","DropzoneTraditionalChinese","FileItemTraditionalChinese","ValidateErrorTraditionalChinese","FileItemLocalizer","DropzoneLocalizer","DropzoneLocalizerSelector","local","ValidateErrorLocalizer","ValidateErrorLocalizerSelector","includes","sevenzip","aac","abw","accdb","avi","azw","bmp","bz","bz2","cda","csh","css","csv","docx","drawio","eot","epub","freearc","gif","gzip","html","icalendar","java","jar","javascript","jpeg","json","jsonld","midi","mp3","mp4","mpeg","mpkg","octet","odp","ods","odt","oga","ogv","ogx","opus","otf","pdf","php","png","pptx","psd","python","tar","rar","react","rtf","sass","sh","swf","text","tiff","ttf","typescript","vsd","vue","wav","webm","weba","webp","wma","wmv","woff","xlsx","xml","xul","zip","getExt","fileName","result","exec","DEF_GEN_MIME","audioSelector","tailMime","textSelector","imageSelector","fontSelector","videoSelector","applicationSelector","mimeSelector","mimeType","headerMime","split","extensionSelector","extension","genericMime","checkIsCode","mimeUrlList","arc","mp2t","xhtml","fallBack","ExtFileInstance","extFile","id","file","imageUrl","errors","uploadMessage","uploadStatus","progress","xhr","extraData","extraUploadData","serverResponse","downloadUrl","videoUrl","this","toExtFile","extFileInstance","extFileClone","extFileInstanceKeys","Object","keys","extFileInstanceValues","values","i","length","currentValue","currKey","undefined","prototype","ExtFileManager","getNextId","nextId","setFileList","extFilesInstances","fileLists","__spreadArray","createFileListMap","removeFileListMap","process","env","NODE_ENV","console","getExtFileInstanceList","setFileListMapPreparing","dropzoneId","localFiles","validateFiles","cleanOnUpload","resultExtList","temLocalFiles","filter","map","__assign","F","setFileListMapPreparing2","SyntheticFile","createFile","File","defineProperty","get","create_aac","create_abw","create_freearc","create_avi","create_azw","create_octet","create_bmp","create_bz","create_bz2","create_cda","create_csh","create_css","create_csv","create_doc","create_docx","create_eot","create_epub","create_gzip","create_gif","create_htm","create_html","create_ico","create_icalendar","create_jar","create_jpeg","create_jpg","create_js","create_json","create_jsonld","create_mid","create_x_mid","create_midi","create_x_midi","create_mjs","create_mp3","create_mp4","create_mpeg","create_mpkg","create_odp","create_ods","create_odt","create_oga","create_ogv","create_ogx","create_opus","create_otf","create_png","create_pdf","create_php","create_ppt","create_pptx","create_rar","create_rtf","create_sh","create_svg","create_swf","create_tar","create_tif","create_tiff","create_ts","create_ttf","create_text","create_typescript","create_vsd","create_wav","create_weba","create_webm","create_webp","create_woff","create_woff2","create_xhtml","create_xlsx","create_xls","create_xml","create_xml_txt","create_xul","create_zip","create_3gp","create_3gp2","create_3gp_a","create_3gp_v","create_7z","create_python","create_java","create_react","create_vue","createFileListMiscelanious","listFile","push","createSyntheticFile","FileIdGenerator","getRandomInt","min","max","Math","floor","random","separateAccept","acceptItem","trim","validateAccept","charAt","headerMimeFile","tailMimeFile","validateExtFile","validator","validatorProps","localErrors","extFileResult","errorsResult","apply","maxFileSizeErrorMessenger","isValid","validateFile","idGenerated","listOfErrors","addExtraData","formData","extraDataKeys","append","addHeaders","headers","headerKeys","setRequestHeader","TIMEOUT_ERROR_RESPONSE","message","payload","ABORTED_ERROR_RESPONSE","JSON_PARSE_ERROR_RESPONSE","UNEXPECTED_ERROR_RESPONSE","NO_XHR_PROVIDED_ERROR","JsonParseResponse","jsonResponse","JSON","parse","response","makeSuccessUploadResponse","responseFui","makeErrorUploadResponse","uploadFormData","method","endpoint","data","Promise","resolve","reject","finalMethod","toUpperCase","upload","onload","ontimeout","onabort","onloadend","e","__awaiter","onreadystatechange","readyState","open","send","NAMED_COLORS","indianred","lightcoral","salmon","darksalmon","lightsalmon","crimson","red","firebrick","darkred","pink","lightpink","hotpink","deeppink","mediumvioletred","palevioletred","coral","tomato","orangered","darkorange","orange","gold","yellow","lightyellow","lemonchiffon","lightgoldenrodyellow","papayawhip","moccasin","peachpuff","palegoldenrod","khaki","darkkhaki","lavender","thistle","plum","violet","orchid","fuchsia","magenta","mediumorchid","mediumpurple","rebeccapurple","blueviolet","darkviolet","darkorchid","darkmagenta","purple","indigo","slateblue","darkslateblue","mediumslateblue","greenyellow","chartreuse","lawngreen","lime","limegreen","palegreen","lightgreen","mediumspringgreen","springgreen","mediumseagreen","seagreen","forestgreen","green","darkgreen","yellowgreen","olivedrab","olive","darkolivegreen","mediumaquamarine","darkseagreen","lightseagreen","darkcyan","teal","aqua","cyan","lightcyan","paleturquoise","aquamarine","turquoise","mediumturquoise","darkturquoise","cadetblue","steelblue","lightsteelblue","powderblue","lightblue","skyblue","lightskyblue","deepskyblue","dodgerblue","cornflowerblue","royalblue","blue","mediumblue","darkblue","navy","midnightblue","cornsilk","blanchedalmond","bisque","navajowhite","wheat","burlywood","tan","rosybrown","sandybrown","goldenrod","darkgoldenrod","peru","chocolate","saddlebrown","sienna","brown","maroon","white","snow","honeydew","mintcream","azure","aliceblue","ghostwhite","whitesmoke","seashell","beige","oldlace","floralwhite","ivory","antiquewhite","linen","lavenderblush","mistyrose","gainsboro","lightgray","silver","darkgray","gray","dimgray","lightslategray","slategray","darkslategray","black","hexColorToRGB","colorInput","perc","defaultColor","resultDefault","color","replace","isHexColor","colourNameToHex","component1","component2","component3","hexTodec","hexArray","colour","toLocaleLowerCase","decArray","letter","indexOf","asureColor","DEFAULT_FONT_COLOR","baseClassName","className","percentage","brightedColor","increase","components","parseInt","inputElement","value","uploadStatusresult","uploadedFile","url","uploadLabel","cleanonUpload","darkedColor","reduce","XMLHttpRequest","extraData1","extraData2","deleted","extFileIncomming","arrOfExtFiles","incommingTemp","findIndex","I","setTimeout","fileList","extFileArray","f","preValidatedFiles","remainingValids","localValidator","localization","output","countdown","ValidationErrorLocalizer","validatedFile","maxFileErrorMessenger","Infinity","imageSource","img_1","Image","src","onerror","ev","width","height","localFileName","localFileType","localFileSize","customIcons","mimeResume","extention","customUrl","validateFilesFlag","ceil","newUpoadStatus","getRandomUploadStatus","customUploadMessage","randInt","onProgress","onError","reader_4","FileReader","onprogress","readAsArrayBuffer","reader_3","readAsBinaryString","reader_1","readAsDataURL","encoding","reader_2","readAsText","base64Str","maxWidth","maxHeight","canvas","document","createElement","MAX_WIDTH","MAX_HEIGHT","ctx","getContext","drawImage","toDataURL","arrExtFile","_a","extFileobj","prevStatus","nextStstaus","word","card","newWord","slice","preparingTime","time","extFileList","uploader","localMethod","fileToUpload","FormData","finalExtraData","otherValue","param2","tecnica","friend","age","addExtraDataUpload","label","_this","sent","localValidatorProps","fileListResult","remaining","currentExtFile"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/files-ui/core/index.ts b/src/files-ui/core/index.ts
deleted file mode 100644
index 260fef37ba46d68b848c5dd7ebcbffc7f99d8d21..0000000000000000000000000000000000000000
--- a/src/files-ui/core/index.ts
+++ /dev/null
@@ -1,178 +0,0 @@
-export {
-    DropzoneEnglish,
-    DropzoneFrench,
-    DropzoneItalian,
-    DropzoneLocalizer,
-    DropzoneLocalizerSelector,
-    DropzonePortuguese,
-    DropzoneRussian,
-    DropzoneSimplifiedChinese,
-    DropzoneSpanish,
-    DropzoneTraditionalChinese,
-    FileItemEnglish,
-    FileItemFrench,
-    FileItemItalian,
-    FileItemLocalizer,
-    FileItemLocalizerSelector,
-    FileItemPortuguese,
-    FileItemRussian,
-    FileItemSimplifiedChinese,
-    FileItemSpanish,
-    FileItemTraditionalChinese,
-    ValidateErrorEnglish,
-    ValidateErrorFrench,
-    ValidateErrorItalian,
-    ValidateErrorLocalizer,
-    ValidateErrorLocalizerSelector,
-    ValidateErrorPortuguese,
-    ValidateErrorRussian,
-    ValidateErrorSimplifiedChinese,
-    ValidateErrorSpanish,
-    ValidateErrorTraditionalChinese
-} from "./localization";
-
-export {
-    readAsArrayBuffer,
-    readAsBinaryString,
-    readAsDataURL,
-    readAsText,
-    resizeImage,
-    getImageOrientation
-} from "./reader";
-
-export {
-    aac, abw, accdb, avi, azw,
-    bmp, bz, bz2, cda,
-    csh, css, csv,
-    docx, drawio,
-    eot, epub,
-    freearc, gif, gzip,
-    html, icalendar,
-    jar, java, javascript, jpeg, json, jsonld,
-    midi, mp3, mp4, mpeg, mpkg,
-    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,
-    pdf, php, png, pptx, psd, python,
-    rar, react, rtf,
-    sass, sevenzip, sh, swf,
-    tar, text, tiff, ttf, typescript,
-    vsd, vue,
-    wav, weba, webm, webp, wma, wmv, woff,
-    xlsx, xml, xul,
-    zip,
-    applicationSelector,
-    audioSelector,
-    checkIsCode,
-    extensionSelector,
-    fontSelector,
-    getURLFileIco,
-    imageSelector,
-    mimeSelector,
-    textSelector,
-    videoSelector,
-} from "./mime";
-
-export type {
-    ExtFile,
-    Behaviour,
-    ValidateFileResponse,
-    ComponentLocalizer,
-    ExtFileListMap,
-    FileValidatorProps,
-    FunctionLabel,
-    LocalLabels,
-    Localization,
-    Method,
-    NamedColor,
-    ServerResponse,
-    UploadPromiseResponse,
-    UploadResponse,
-    UploadConfig,
-    UPLOADSTATUS,
-    IconsMap
-} from "./types";
-
-export {
-    //UPLOADSTATUS,
-    ExtFileInstance, ExtFileManager, extFileMock, createUploadConfig
-} from "./types"
-
-export {
-    uploadExtFile,
-    FuiUpload,
-    completeUploadResult,
-    instantPreparingToUploadOne,
-    preparingToUploadOne,
-    sleepTransition,
-    toUploadableExtFileList,
-    unableToUploadResult,
-    makeServerResponse,
-    uploadFile,
-    uploadFormData,
-    ABORTED_ERROR_RESPONSE,
-    JSON_PARSE_ERROR_RESPONSE,
-    JsonParseResponse,
-    NO_XHR_PROVIDED_ERROR,
-    TIMEOUT_ERROR_RESPONSE,
-    UNEXPECTED_ERROR_RESPONSE,
-    makeErrorUploadResponse,
-    makeSuccessUploadResponse,
-    addExtraData,
-    addHeaders,
-    sanitizeArrExtFile,
-    unexpectedErrorUploadResult,
-    setNextUploadStatus
-} from "./upload";
-
-export {
-    FileIdGenerator,
-    fileListToExtFileArray,
-    fileListToExtFileInstanceArray,
-    fileSizeFormater,
-    getExt,
-    handleClickInput,
-    handleClickUtil,
-    handleDragUtil,
-    handleDropUtil,
-    isValidateActive,
-    shrinkWord,
-    fakeFuiUpload,
-    prepToUploadOne,
-    setPrepToUploading,
-    sleepPreparing,
-    uploadOne,
-    uploadOneExtFile,
-    cleanInput, addClassName, getRandomInt, isUploadAbleExtFile, getLocalFileItemData
-} from "./utils";
-
-export {
-    fileListvalidator,
-    separateAccept,
-    validateAccept,
-    validateExtFile,
-    validateExtFileList,
-    validateFile
-} from "./validation";
-
-
-export { createFuiRippleFromDiv, createRippleButton } from "./ripple";
-
-export {
-    asureColor,
-    brighterColor,
-    colourNameToHex,
-    darkerColor,
-    hexColorToRGB,
-    hexTodec,
-    isHexColor,
-    NAMED_COLORS,
-    completeAsureColor
-} from "./color";
-
-export {
-    SyntheticFile,
-    createListOfMultiTypeFile,
-    createSyntheticFile,
-    makeSyntheticExtFile
-} from "./synthetic-file";
-
-export { extFileReconcilation } from "./file-manager";
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.ts b/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.ts
deleted file mode 100644
index 2be18b6fc8b5bfb40b4278d8d421a103ff588881..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Chinese-simplified/localization.simplifiedChinese.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { LocalLabels } from "../../types";
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-
-/**
- * English translation for Dropzone component
- */
-export const DropzoneSimplifiedChinese: LocalLabels = {
-    defaultLabel: "将您的文件放在这里",
-    uploadingMessage: (amountOfFiles) => { return `上传 ${amountOfFiles} 个文件`; },
-    uploadFinished: (uploaded, rejected) => `上传文件:${uploaded},拒绝文件:${rejected}`,
-    noFilesMessage: `没有缺少要加载的有效文件`,
-    footer: {
-        acceptAll: `接受所有文件类型`,
-        acceptCustom: (accept) => `允许的类型: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "上传文件",
-        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `文档 ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "文件已成功上传",
-    fakeUploadError: "上传时出错",
-}
-
-/**
- * Chinnese translation for FileItem component
- */
-export const FileItemSimplifiedChinese: LocalLabels = {
-    fullInfoLayer: {
-        name: `文档名称: `,
-        size: "尺寸: ",
-        type: "文件类型: "
-    },
-    status: {
-        preparing:"预加载",
-        uploading: "上传",
-        success: "成功",
-        valid: "接受的文件",
-        denied: "被拒绝的文件",
-        error: "错误",
-        aborted:"中止"
-    },
-}
-
-/**
- * English translation for Validation Errors
- */
-export const ValidateErrorSimplifiedChinese: LocalLabels = {
-    maxSizeError: (maxSize) =>
-        `文件太大。 允许的最大文件大小为 ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `文件类型不允许`,
-    maxFileCount: (maxFiles) =>
-        `已达到最大文件数 (${maxFiles})`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.ts b/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.ts
deleted file mode 100644
index 47924bee6dfc20b776e7ff4e0a8594d7d666d263..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Chinese-traditional/localization.traditionalChinese.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-
-/**
- * English translation for Dropzone component
- */
-export const DropzoneTraditionalChinese: LocalLabels = {
-    defaultLabel: "把你的文件放在這裡 ",
-    uploadingMessage: (amountOfFiles) => { return `上傳${amountOfFiles}個文件`; },
-    uploadFinished: (uploaded, rejected) => `上傳文件: ${uploaded}, 拒絕的文件:${rejected}`,
-    noFilesMessage: `沒有缺少要上傳的有效文件`,
-    footer: {
-        acceptAll: `接受所有文件類型`,
-        acceptCustom: (accept) => `允許的類型:${accept}`
-    },
-    header: {
-        uploadFilesMessage: "上傳文件",
-        maxSizeMessage: (maxFileSize) => `最大文件大小:${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => ` 文件 ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "文件已成功上傳",
-    fakeUploadError: "上傳時出錯",
-}
-
-/**
- * Chinese translation for FileItem component
- */
-export const FileItemTraditionalChinese: LocalLabels = {
-    fullInfoLayer: {
-        name: `文檔名稱: `,
-        size: "文件大小: ",
-        type: "文件類型: "
-    },
-    status: {
-        preparing: "預加載",
-        uploading: "上傳",
-        success: "成功",
-        valid: "有效文件",
-        denied: "無效文件",
-        error: "錯誤",
-        aborted: "中止"
-    },
-}
-
-/**
- * English translation for Validation Errors
- */
-export const ValidateErrorTraditionalChinese: LocalLabels = {
-    maxSizeError: (maxSize) =>
-        `文件太大。 允許的最大文件大小為 ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `文件類型不允許`,
-    maxFileCount: (maxFiles) =>
-        `已達到最大文件數 (${maxFiles})`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/English/localization.english.ts b/src/files-ui/core/localization/English/localization.english.ts
deleted file mode 100644
index e2114d27392319ceae2578df782327d6dcc96460..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/English/localization.english.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * English translation for Dropzone component
- */
-export const DropzoneEnglish: LocalLabels = {
-    defaultLabel: "Drop your files here",
-    uploadingMessage: (amountOfFiles) => { return `Uploading ${amountOfFiles} files`; },
-    uploadFinished: (uploaded, rejected) => `Uploaded files: ${uploaded}, Rejected files: ${rejected}`,
-    noFilesMessage: `There is no missing valid file to upload`,
-    footer: {
-        acceptAll: `All file types accepted`,
-        acceptCustom: (accept) => `Allowed types: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Upload files",
-        maxSizeMessage: (maxFileSize) => `Max file size: ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `Files ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "File was successfuly uploaded",
-    fakeUploadError: "Error on uploading. Please try again later.",
-}
-
-/**
- * English translation for FileItem component
- */
-export const FileItemEnglish: LocalLabels = {
-    fullInfoLayer: {
-        name: `Name: `,
-        size: "Size: ",
-        type: "Type: "
-    },
-    status: {
-        preparing:"Preparing",
-        uploading: "Uploading",
-        success: "Success",
-        valid: "Valid",
-        denied: "Not valid",
-        error: "Error",
-        aborted:"Aborted"
-    },
-}
-
-/**
- * English translation for Validation Errors
- */
-export const ValidateErrorEnglish: LocalLabels = {
-    maxSizeError: (maxSize) =>
-        `File is too big. Max file size allowed is ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `File type is not allowed`,
-    maxFileCount: (maxFiles) =>
-        `Max amount of files (${maxFiles}) has been reached`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/FileItem.localization.ts b/src/files-ui/core/localization/FileItem.localization.ts
deleted file mode 100644
index a2dd75ca1721136959aeaa02e7e5845351153de7..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/FileItem.localization.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { FileItemRussian } from "./Russian/localization.russian";
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-import { FileItemEnglish } from "./English/localization.english";
-import { FileItemFrench } from "./French/localization.french";
-import { FileItemPortuguese } from "./Portuguese/localization.portuguese";
-import { FileItemSpanish } from "./Spanish/localization.spanish";
-import { FileItemSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { FileItemTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { FileItemItalian } from "./Italian/localization.italian";
-
-export const FileItemLocalizer: ComponentLocalizer = {
-    "ES-es": FileItemSpanish,
-    "EN-en": FileItemEnglish,
-    "FR-fr": FileItemFrench,
-    "IT-it": FileItemItalian,
-    "PT-pt": FileItemPortuguese,
-    "RU-ru": FileItemRussian,
-    "ZH-cn": FileItemSimplifiedChinese,
-    "ZH-hk": FileItemTraditionalChinese
-}
-
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export const FileItemLocalizerSelector = (local?: Localization): LocalLabels => {
-    switch (local) {
-        case "ES-es": return FileItemLocalizer["ES-es"];
-        case "EN-en": return FileItemLocalizer["EN-en"];
-        case "FR-fr": return FileItemLocalizer["FR-fr"];
-        case "IT-it": return FileItemLocalizer["IT-it"];
-        case "PT-pt": return FileItemLocalizer["PT-pt"];
-        case "RU-ru": return FileItemLocalizer["RU-ru"];
-        case "ZH-cn": return FileItemLocalizer["ZH-cn"];
-        case "ZH-hk": return FileItemLocalizer["ZH-hk"];
-        default: return FileItemLocalizer["EN-en"];
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/French/localization.french.ts b/src/files-ui/core/localization/French/localization.french.ts
deleted file mode 100644
index 82a8d8766e86ab4b4890b831fe6ffa26caf15eb6..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/French/localization.french.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * French translation for Dropzone component
- */
-export const DropzoneFrench: LocalLabels = {
-    defaultLabel: "Déposez vos fichiers ici",
-
-    uploadingMessage: (amountOfFiles) => { return `Envoi de ${amountOfFiles} fichiers`; },
-    uploadFinished: (uploaded, rejected) => `Fichiers téléchargés : ${uploaded}, Fichiers rejetés: ${rejected}`,
-    noFilesMessage: `Aucun fichier valide ne manque`,
-    footer: {
-        acceptAll: `Tous types de fichiers acceptés `,
-        acceptCustom: (accept) => `Types de fichier: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Envoyer",
-        maxSizeMessage: (maxFileSize) => `Taille maximale ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `Fichiers  ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "Le fichier a été téléchargé avec succès",
-    fakeUploadError: "Erreur lors du téléchargement ",
-}
-
-/**
- * French translation for FileItem component
- */
-export const FileItemFrench: LocalLabels = {
-    fullInfoLayer: {
-        name: `Le nom: `,
-        size: "Le taille: ",
-        type: "Le type: "
-    },
-    status: {
-        preparing:"préparer",
-        uploading: "En cours",
-        success: "Succès",
-        valid: "Valide",
-        denied: "Refusé",
-        error: "Erreur",
-        aborted:"Interrompu"
-    },
-}
-/**
- * French translation for Validation Errors
- */
- export const ValidateErrorFrench: LocalLabels = {
-    maxSizeError: (maxSize) => `Le fichier est très volumineux. Le tam. le maximum est de ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `Type de fichier illégal `,
-    maxFileCount: (maxFiles) => `Limite de fichiers atteinte (${maxFiles})`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Italian/localization.italian.ts b/src/files-ui/core/localization/Italian/localization.italian.ts
deleted file mode 100644
index 1a6b53da040125c94c1d8f70a86288752cb15bbf..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Italian/localization.italian.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * Italian translation for Dropzone component
- */
-export const DropzoneItalian: LocalLabels = {
-    defaultLabel: "Trascina qui i tuoi file",
-
-    uploadingMessage: (amountOfFiles) => { return `Caricamento di ${amountOfFiles} file`; },
-    uploadFinished: (uploaded, rejected) => `File caricati: ${uploaded}, File rifiutati: ${rejected}`,
-    noFilesMessage: `Nessun file valido in attesa di essere caricato`,
-    footer: {
-        acceptAll: `Tutti i tipi di file sono accettati`,
-        acceptCustom: (accept) => `Tipi di file consentiti: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Caricamento",
-        maxSizeMessage: (maxFileSize) => `Dimensione massima ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `File  ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "Il file è stato caricato con successo ",
-    fakeUploadError: "Errore di caricamento del file",
-}
-
-/**
- * Italian translation for FileItem component
- */
-export const FileItemItalian: LocalLabels = {
-    fullInfoLayer: {
-        name: `Nome: `,
-        size: "Dimensione: ",
-        type: "Tipo: "
-    },
-    status: {
-        preparing:"preparazione",
-        uploading: "In corso",
-        success: "Successo",
-        valid: "Valido",
-        denied: "Non válido",
-        error: "Errore",
-        aborted:"Interrotto"
-    },
-}
-/**
- * Italian translation for Validation Errors
- */
- export const ValidateErrorItalian: LocalLabels = {
-    maxSizeError: (maxSize) => `Il file è molto grande. Il tam. il massimo è ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `Tipo di file illegale`,
-    maxFileCount: (maxFiles) => `Numero massimo di file (${maxFiles}) raggiunto`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Portuguese/localization.portuguese.ts b/src/files-ui/core/localization/Portuguese/localization.portuguese.ts
deleted file mode 100644
index 3a21e08d9eaccb8b927006461908ee903180ed86..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Portuguese/localization.portuguese.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * Portuguese translation for Dropzone
- */
-export const DropzonePortuguese: LocalLabels = {
-    defaultLabel: "Solte seus arquivos aqui ",
-
-    uploadingMessage: (amountOfFiles) => { return `Enviando ${amountOfFiles} arquivos`; },
-    uploadFinished: (uploaded, rejected) => `Arquivos enviados: ${uploaded}, Arquivos rejeitados: ${rejected}`,
-    noFilesMessage: `Nenhum arquivo válido está faltando para enviar`,
-    footer: {
-        acceptAll: `Todos os tipos de arquivo são aceitos`,
-        acceptCustom: (accept) => `Tipos permitidos: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Enviar",
-        maxSizeMessage: (maxFileSize) => `Tamanho máximo: ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `Arquivos ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "O arquivo foi enviado com sucesso",
-    fakeUploadError: "Erro ao enviar",
-}
-
-
-/**
- * Portuguese translation for FileItem component
- */
-export const FileItemPortuguese: LocalLabels = {
-    fullInfoLayer: {
-        name: `Nome: `,
-        size: "Tamanho: ",
-        type: "Tipo: "
-    },
-    status: {
-        preparing:"Preparando",
-        uploading: "Enviando",
-        success: "Êxito",
-        valid: "válido",
-        denied: "Negado",
-        error: "Erro",
-        aborted:"Abortado"
-    },
-}
-/**
- * Portuguese translation for Validation Errors
- */
- export const ValidateErrorPortuguese: LocalLabels = {
-    maxSizeError: (maxSize) => `O arquivo é muito grande. O tamanho máximo de arquivo permitido é ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `O tipo de arquivo não é permitido `,
-    maxFileCount: (maxFiles) => `Quantidade máxima de arquivos (${maxFiles}) alcançada`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Russian/localization.russian.ts b/src/files-ui/core/localization/Russian/localization.russian.ts
deleted file mode 100644
index b62ecdc1aeeb720d7da1db0b2cfe1ec0ce185207..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Russian/localization.russian.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * Russian translation for Dropzone component
- */
-export const DropzoneRussian: LocalLabels = {
-    defaultLabel: "Перетащите сюда свои файлы.",
-    uploadingMessage: (amountOfFiles) => { return `Выгрузка ${amountOfFiles} файлов`; },
-    uploadFinished: (uploaded, rejected) => `Загружено файлов: ${uploaded}, отклоненных файлов: ${rejected}`,
-    noFilesMessage: `Действительный файл не отсутствует для загрузки`,
-    footer: {
-        acceptAll: `Принимаются все типы файлов `,
-        acceptCustom: (accept) => `Допустимые типы: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Отправить",
-        maxSizeMessage: (maxFileSize) => `макс размер: ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `Файлы ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "Файл был успешно загружен",
-    fakeUploadError: "Ошибка при загрузке",
-}
-
-/**
- * Russian translation for FileItem component
- *
- */
-export const FileItemRussian: LocalLabels = {
-    fullInfoLayer: {
-        name: `Имя: `,
-        size: "Размер: ",
-        type: "Tип: "
-    },
-    status: {
-        preparing:"подготовка",
-        uploading: "Загрузка",
-        success: "успех",
-        valid: "годный",
-        denied: "выкинутый",
-        error: "ошибка",
-        aborted:"прерванный"
-    },
-}
-
-/**
- * Russian translation for Validation Errors
- */
-export const ValidateErrorRussian: LocalLabels = {
-    maxSizeError: (maxSize) =>
-        `Файл слишком большой. Максимально допустимый размер файла - ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `Тип файла не разрешен`,
-    maxFileCount: (maxFiles) =>
-        `Достигнуто максимальное количество файлов (${maxFiles})`
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/Spanish/localization.spanish.ts b/src/files-ui/core/localization/Spanish/localization.spanish.ts
deleted file mode 100644
index 113989372c144236f0b932a815dc9c60a46cd4b0..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/Spanish/localization.spanish.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { fileSizeFormater } from "../../utils/fileSizeFormatter";
-import { LocalLabels } from "../../types";
-
-/**
- * Spanish translation for Dropzone component
- */
-export const DropzoneSpanish: LocalLabels = {
-    defaultLabel: "Suelta tus archivos aquí",
-
-    uploadingMessage: (amountOfFiles) => { return `Subiendo ${amountOfFiles} archivos`; },
-    uploadFinished: (uploaded, rejected) => `Archivos subidos: ${uploaded}, Archivos rechazados: ${rejected}`,
-    noFilesMessage: `No hay archivos válidos pendientes por subir`,
-    footer: {
-        acceptAll: `Todos los tipos de archivo aceptados`,
-        acceptCustom: (accept) => `Tipo(s) de archivo permitidos: ${accept}`
-    },
-    header: {
-        uploadFilesMessage: "Subir",
-        maxSizeMessage: (maxFileSize) => `Tam. máximo ${maxFileSize}`,
-        validFilesMessage: (numberOfValidFiles, maxFiles) => `Archivos ${numberOfValidFiles}/${maxFiles}`
-    },
-    fakeuploadsuccess: "El archivo se subió correctamente",
-    fakeUploadError: "Error al subir el archivo",
-}
-
-/**
- * Spanish translation for FileItem component
- */
-export const FileItemSpanish: LocalLabels = {
-    fullInfoLayer: {
-        name: `Nombre: `,
-        size: "Tamaño: ",
-        type: "Tipo: "
-    },
-    status: {
-        preparing:"Preparando",
-        uploading: "Subiendo",
-        success: "Éxito",
-        valid: "Válido",
-        denied: "No válido",
-        error: "Error",
-        aborted: "Anulado"
-    },
-}
-/**
- * Spanish translation for Validation Errors
- */
-export const ValidateErrorSpanish: LocalLabels = {
-    maxSizeError: (maxSize) => `El archivo es muy grande. El tam. máximo es ${fileSizeFormater(maxSize as number)}`,
-    acceptError: `Tipo de archivo no permitido`,
-    maxFileCount: (maxFiles) => `Cantidad máxima de archivos (${maxFiles}) alcanzada`
-}
diff --git a/src/files-ui/core/localization/avatar.localization.ts b/src/files-ui/core/localization/avatar.localization.ts
deleted file mode 100644
index 1f8dbafefb8bd3a80936458cb58a02e7f71f91cb..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/avatar.localization.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-import { FileItemRussian } from "./Russian/localization.russian";
-import { FileItemEnglish } from "./English/localization.english";
-import { FileItemFrench } from "./French/localization.french";
-import { FileItemPortuguese } from "./Portuguese/localization.portuguese";
-import { FileItemSpanish } from "./Spanish/localization.spanish";
-import { FileItemSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { FileItemTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { FileItemItalian } from "./Italian/localization.italian";
-/**
- * TO-DO: Add Avatar localization in next release, inthe meanwhile it accepts custom labels
- */
-export const AvatarLocalizer: ComponentLocalizer = {
-    "ES-es": FileItemSpanish,
-    "EN-en": FileItemEnglish,
-    "FR-fr": FileItemFrench,
-    "IT-it": FileItemItalian,
-    "PT-pt": FileItemPortuguese,
-    "RU-ru": FileItemRussian,
-    "ZH-cn": FileItemSimplifiedChinese,
-    "ZH-hk": FileItemTraditionalChinese
-}
-
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export const AvatarLocalizerSelector = (local?: Localization): LocalLabels => {
-    switch (local) {
-        case "ES-es": return AvatarLocalizer["ES-es"];
-        case "EN-en": return AvatarLocalizer["EN-en"];
-        case "FR-fr": return AvatarLocalizer["FR-fr"];
-        case "IT-it": return AvatarLocalizer["IT-it"];
-        case "PT-pt": return AvatarLocalizer["PT-pt"];
-        case "RU-ru": return AvatarLocalizer["RU-ru"];
-        case "ZH-cn": return AvatarLocalizer["ZH-cn"];
-        case "ZH-hk": return AvatarLocalizer["ZH-hk"];
-        default: return AvatarLocalizer["EN-en"];
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/dropzone.localization.ts b/src/files-ui/core/localization/dropzone.localization.ts
deleted file mode 100644
index 0dece64946465f76c8433025427ff6a9b4cdde9b..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/dropzone.localization.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { DropzoneRussian } from "./Russian/localization.russian";
-import { DropzoneEnglish } from "./English/localization.english";
-import { DropzoneFrench } from "./French/localization.french";
-import { DropzonePortuguese } from "./Portuguese/localization.portuguese";
-import { DropzoneSpanish } from "./Spanish/localization.spanish";
-import { DropzoneSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { DropzoneTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { DropzoneItalian } from "./Italian/localization.italian";
-import { ComponentLocalizer, Localization, LocalLabels } from "../types";
-
-export const DropzoneLocalizer: ComponentLocalizer = {
-    "ES-es": DropzoneSpanish,
-    "EN-en": DropzoneEnglish,
-    "FR-fr": DropzoneFrench,
-    "IT-it": DropzoneItalian,
-    "PT-pt": DropzonePortuguese,
-    "RU-ru": DropzoneRussian,
-    "ZH-cn": DropzoneSimplifiedChinese,
-    "ZH-hk": DropzoneTraditionalChinese
-
-}
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export const DropzoneLocalizerSelector = (local: Localization | undefined): LocalLabels => {
-    switch (local) {
-        case "ES-es": return DropzoneLocalizer["ES-es"];
-        case "EN-en": return DropzoneLocalizer["EN-en"];
-        case "FR-fr": return DropzoneLocalizer["FR-fr"];
-        case "IT-it": return DropzoneLocalizer["IT-it"];
-        case "PT-pt": return DropzoneLocalizer["PT-pt"];
-        case "RU-ru": return DropzoneLocalizer["RU-ru"];
-        case "ZH-cn": return DropzoneLocalizer["ZH-cn"];
-        case "ZH-hk": return DropzoneLocalizer["ZH-hk"];
-        default: return DropzoneLocalizer["EN-en"];
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/localization/index.ts b/src/files-ui/core/localization/index.ts
deleted file mode 100644
index 868112b9945c1db7841af2ba81143e0e87f752a8..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { FileItemItalian, DropzoneItalian, ValidateErrorItalian } from "./Italian/localization.italian";
-import { FileItemFrench, DropzoneFrench, ValidateErrorFrench } from "./French/localization.french";
-import { FileItemEnglish, DropzoneEnglish, ValidateErrorEnglish } from "./English/localization.english";
-import { FileItemSpanish, DropzoneSpanish, ValidateErrorSpanish } from "./Spanish/localization.spanish";
-import { FileItemRussian, DropzoneRussian, ValidateErrorRussian } from "./Russian/localization.russian";
-import { FileItemPortuguese, DropzonePortuguese, ValidateErrorPortuguese } from "./Portuguese/localization.portuguese";
-import { FileItemSimplifiedChinese, DropzoneSimplifiedChinese, ValidateErrorSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { FileItemTraditionalChinese, DropzoneTraditionalChinese, ValidateErrorTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { FileItemLocalizerSelector, FileItemLocalizer, } from "./FileItem.localization";
-import { DropzoneLocalizerSelector, DropzoneLocalizer } from "./dropzone.localization";
-import { ValidateErrorLocalizer, ValidateErrorLocalizerSelector } from "./validationError.localization";
-
-export { ValidateErrorLocalizerSelector, ValidateErrorLocalizer, ValidateErrorItalian, ValidateErrorFrench, ValidateErrorEnglish, ValidateErrorSpanish, ValidateErrorPortuguese, ValidateErrorRussian, ValidateErrorSimplifiedChinese, ValidateErrorTraditionalChinese };
-export { DropzoneLocalizerSelector, DropzoneLocalizer, DropzoneItalian, DropzoneFrench, DropzoneEnglish, DropzoneSpanish, DropzonePortuguese, DropzoneRussian, DropzoneSimplifiedChinese, DropzoneTraditionalChinese };
-export { FileItemLocalizerSelector, FileItemLocalizer, FileItemItalian, FileItemFrench, FileItemEnglish, FileItemSpanish, FileItemPortuguese, FileItemRussian, FileItemSimplifiedChinese, FileItemTraditionalChinese };
\ No newline at end of file
diff --git a/src/files-ui/core/localization/validationError.localization.ts b/src/files-ui/core/localization/validationError.localization.ts
deleted file mode 100644
index 114f37113672bfd5cd3e95f86dd732f921b516ad..0000000000000000000000000000000000000000
--- a/src/files-ui/core/localization/validationError.localization.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { ValidateErrorRussian } from "./Russian/localization.russian";
-import { ComponentLocalizer, LocalLabels, Localization } from "./../types";
-import { ValidateErrorEnglish } from "./English/localization.english";
-import { ValidateErrorFrench } from "./French/localization.french";
-import { ValidateErrorPortuguese } from "./Portuguese/localization.portuguese";
-import { ValidateErrorSpanish } from "./Spanish/localization.spanish";
-import { ValidateErrorSimplifiedChinese } from "./Chinese-simplified/localization.simplifiedChinese";
-import { ValidateErrorTraditionalChinese } from "./Chinese-traditional/localization.traditionalChinese";
-import { ValidateErrorItalian } from "./Italian/localization.italian";
-
-export const ValidateErrorLocalizer: ComponentLocalizer = {
-    "ES-es": ValidateErrorSpanish,
-    "EN-en": ValidateErrorEnglish,
-    "FR-fr": ValidateErrorFrench,
-    "IT-it": ValidateErrorItalian,
-    "PT-pt": ValidateErrorPortuguese,
-    "RU-ru": ValidateErrorRussian,
-    "ZH-cn": ValidateErrorSimplifiedChinese,
-    "ZH-hk": ValidateErrorTraditionalChinese,
-}
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export const ValidateErrorLocalizerSelector = (local: Localization | undefined): LocalLabels => {
-    if (!local || !["ES-es", "EN-en", "FR-fr", "IT-it", "PT-pt", "RU-ru", "ZH-cn", "ZH-hk"].includes(local)) {
-        return ValidateErrorLocalizer["EN-en"];
-    }
-    return ValidateErrorLocalizer[local];
-}
\ No newline at end of file
diff --git a/src/files-ui/core/mime/icons.ts b/src/files-ui/core/mime/icons.ts
deleted file mode 100644
index 8eabf6336007765943f67b876ca969c0dc120be6..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/icons.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-export const sevenzip = "https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png";
-export const aac = "https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png";
-export const abw = "https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png";
-export const accdb = "https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png";
-export const avi = "https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png";
-export const azw = "https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png";
-export const bmp = "https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png";
-export const bz = "https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png";
-export const bz2 = "https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png";
-export const c = "https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png";
-export const cda = "https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png";
-export const csh = "https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png";
-export const css = "https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png";
-export const csv = "https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png";
-export const docx = "https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png";
-export const docx2 = "https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png";
-export const drawio = "https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png";
-export const dw = "https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png";
-export const eml = "https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png";
-export const eot = "https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png";
-export const eps = "https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png";
-export const epub = "https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png";
-export const freearc = "https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png";
-export const gif = "https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png";
-export const gzip = "https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png";
-export const html = "https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png";
-export const icalendar = "https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png";
-export const ind = "https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png";
-export const ini = "https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png";
-export const java = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export const jar = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export const javascript = "https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png";
-export const jpeg = "https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png";
-export const jsf = "https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png";
-export const json = "https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png";
-export const jsonld = "https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png";
-export const midi = "https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png";
-export const mov = "https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png";
-export const mp3 = "https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png";
-export const mp4 = "https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png";
-export const mpeg = "https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png";
-export const mpkg = "https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png";
-export const octet = "https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png";
-export const odp = "https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png";
-export const ods = "https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png";
-export const odt = "https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png";
-export const oga = "https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png";
-export const ogv = "https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png";
-export const ogx = "https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png";
-export const opus = "https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png";
-export const otf = "https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png";
-export const pdf = "https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png";
-export const php = "https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png";
-export const png = "https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png";
-export const pptx = "https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png";
-export const pptx2 = "https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png";
-export const proj = "https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png";
-export const psd = "https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png";
-export const pst = "https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png";
-export const publisher = "https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png";
-export const python = "https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png";
-export const tar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export const rar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export const react = "https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png";
-export const richtextformat = "https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png";
-export const rtf = "https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png";
-export const sass = "https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png";
-export const settings = "https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png";
-export const sh = "https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png";
-export const swf = "https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png";
-export const text = "https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png";
-export const tiff = "https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png";
-export const ttf = "https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png";
-export const typescript = "https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png";
-export const url = "https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png";
-export const vsd = "https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png";
-export const vue = "https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png";
-export const wav = "https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png";
-export const webm = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export const weba = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export const webp = "https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png";
-export const wma = "https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png";
-export const wmv = "https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png";
-export const woff = "https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png";
-export const xlsx = "https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png";
-export const xlsx2 = "https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png";
-export const xml = "https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png";
-export const xul = "https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png";
-export const zip = "https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png";
diff --git a/src/files-ui/core/mime/index.d.ts b/src/files-ui/core/mime/index.d.ts
index 718296e66b951e644ba0ae5ad59f9aa3d06767d2..3549a7ae81ae96af525757254b4ea309acaceb5c 100644
--- a/src/files-ui/core/mime/index.d.ts
+++ b/src/files-ui/core/mime/index.d.ts
@@ -1,3 +1,3 @@
 import { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip } from "./icons";
 export { aac, abw, accdb, avi, azw, bmp, bz, bz2, cda, csh, css, csv, docx, drawio, eot, epub, freearc, gif, gzip, html, icalendar, jar, java, javascript, jpeg, json, jsonld, midi, mp3, mp4, mpeg, mpkg, octet, odp, ods, odt, oga, ogv, ogx, opus, otf, pdf, php, png, pptx, psd, python, rar, react, rtf, sass, sevenzip, sh, swf, tar, text, tiff, ttf, typescript, vsd, vue, wav, weba, webm, webp, wma, wmv, woff, xlsx, xml, xul, zip };
-export { applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, } from "./mime";
+export { applicationSelector, audioSelector, checkIsCode, extensionSelector, fontSelector, getURLFileIco, imageSelector, mimeSelector, textSelector, videoSelector, getURLFileIcoFromNameAndType, } from "./mime";
diff --git a/src/files-ui/core/mime/index.ts b/src/files-ui/core/mime/index.ts
deleted file mode 100644
index 48bce3dffbe1ed57c0e852f8ff7bd5f6dbe6f003..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/index.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import {
-    aac, abw, accdb, avi, azw,
-    bmp, bz, bz2, cda,
-    csh, css, csv,
-    docx, drawio,
-    eot, epub,
-    freearc, gif, gzip,
-    html, icalendar,
-    jar, java, javascript, jpeg, json, jsonld,
-    midi, mp3, mp4, mpeg, mpkg,
-    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,
-    pdf, php, png, pptx, psd, python,
-    rar, react, rtf,
-    sass, sevenzip, sh, swf,
-    tar, text, tiff, ttf, typescript,
-    vsd, vue,
-    wav, weba, webm, webp, wma, wmv, woff,
-    xlsx, xml, xul,
-    zip
-} from "./icons";
-export {
-    aac, abw, accdb, avi, azw,
-    bmp, bz, bz2, cda,
-    csh, css, csv,
-    docx, drawio,
-    eot, epub,
-    freearc, gif, gzip,
-    html, icalendar,
-    jar, java, javascript, jpeg, json, jsonld,
-    midi, mp3, mp4, mpeg, mpkg,
-    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,
-    pdf, php, png, pptx, psd, python,
-    rar, react, rtf,
-    sass, sevenzip, sh, swf,
-    tar, text, tiff, ttf, typescript,
-    vsd, vue,
-    wav, weba, webm, webp, wma, wmv, woff,
-    xlsx, xml, xul,
-    zip
-}
-export {
-    applicationSelector,
-    audioSelector,
-    checkIsCode,
-    extensionSelector,
-    fontSelector,
-    getURLFileIco,
-    imageSelector,
-    mimeSelector,
-    textSelector,
-    videoSelector,
-} from "./mime";
\ No newline at end of file
diff --git a/src/files-ui/core/mime/mime.ts b/src/files-ui/core/mime/mime.ts
deleted file mode 100644
index cf8eccba71153b542505238f2473e87e28daa460..0000000000000000000000000000000000000000
--- a/src/files-ui/core/mime/mime.ts
+++ /dev/null
@@ -1,435 +0,0 @@
-import {
-    aac, abw, accdb, avi, azw,
-    bmp, bz, bz2, cda,
-    csh, css, csv,
-    docx, drawio,
-    eot, epub,
-    freearc, gif, gzip,
-    html, icalendar,
-    jar, java, javascript, jpeg, json, jsonld,
-    midi, mp3, mp4, mpeg, mpkg,
-    octet, odp, ods, odt, oga, ogv, ogx, opus, otf,
-    pdf, php, png, pptx, psd, python,
-    rar, react, rtf,
-    sass, sevenzip, sh, swf,
-    tar, text, tiff, ttf, typescript,
-    vsd, vue,
-    wav, weba, webm, webp, wma, wmv, woff,
-    xlsx, xml, xul,
-    zip
-} from "./icons";
-import { getExt } from "../utils/getExt";
-import { IconsMap } from "../types";
-
-const DEF_GEN_MIME: keyof IconsMap = "octet";
-/**
- * 
- * @param tailMime 
- * @returns 
- */
-export const audioSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "aac": return "aac";
-        case "midi": return "midi";
-        case "x-midi": return "midi";
-        case "mpeg": return "mpeg";//mp3
-        case "ogg": return "oga";
-        case "opus": return "opus";
-        case "wav": return "wav";
-        case "webm": return "webm";
-        //case "3gpp": return "threegp";
-        //case "3gpp2": return "threegp";
-        //case "mp3": return "mp3";
-        case "wma": return "wma";
-        default: return DEF_GEN_MIME;
-    }
-}
-export const textSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "css": return "css";
-        case "csv": return "csv";
-        case "html": return "html";
-        case "calendar": return "icalendar";
-        case "javascript": return "javascript";
-        case "x-javascript": return "javascript";
-        case "plain": return "text";
-        case "xml": return "xml";
-        default: return DEF_GEN_MIME;
-
-    }
-}
-export const imageSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "bmp": return "bmp";
-        case "gif": return "gif";
-        // case "vnd.microsoft.icon": return "ico";
-        //case "ico": return "ico";
-        case "jpg": return "jpeg";
-        case "jpeg": return "jpeg";
-        case "png": return "png";
-        //case "svg+xml": return "svg";
-        //case "svg": return "svg";
-        case "tiff": return "tiff";
-        case "webp": return "webp";
-        default: return DEF_GEN_MIME;
-
-    }
-}
-export const fontSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "otf": return "otf";
-        case "ttf": return "ttf";
-        case "woff": return "woff";
-        case "woff2": return "woff";
-        default: return DEF_GEN_MIME;
-
-    }
-}
-
-export const videoSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "x-msvideo": return "avi";
-        case "msvideo": return "avi";
-        case "avi": return "avi";
-        case "mp4": return "mp4";
-        case "mpeg": return "mpeg";
-        case "ogg": return "ogv";
-        case "mp2t": return "mp2t";
-        case "wmv": return "wmv";
-
-        case "webm": return "webm";
-        // case "3gpp": return "threegp";
-        // case "3gpp2": return "threegp2";
-
-        default: return DEF_GEN_MIME;
-    }
-}
-/**
- * 
- * @param tailMime 
- * @returns 
- */
-export const applicationSelector = (tailMime: string): keyof IconsMap => {
-    switch (tailMime) {
-        case "x-abiword": return "abw";
-        case "abiword": return "abw";
-        case "x-freearc": return "arc";
-        case "freearc": return "arc";
-        case "vnd.amazon.ebook": return "azw";
-        case "octet-stream": return "octet";
-        case "x-bzip": return "bz";
-        case "x-bzip2": return "bz2";
-        case "bzip": return "bz";
-        case "bzip2": return "bz2";
-        case "x-cdf": return "cda";
-        case "msaccess": return "accdb";
-        case "csh": return "csh";
-        case "x-csh": return "csh";
-        case "vnd.ms-fontobject": return "eot";
-        case "epub+zip": return "epub";
-        case "gzip": return "gzip";
-        case "java-archive": return "jar";
-        case "x-javascript": return "javascript";
-        case "json": return "json";
-        case "ld+json": return "jsonld";
-        case "vnd.apple.installer+xml": return "mpkg";
-        case "ogg": return "ogx";
-        case "vnd.rar": return "rar";
-        case "rtf": return "rtf";
-        case "x-sh": return "sh";
-        case "sh": return "sh";
-        case "x-shockwave-flash": return "swf";
-        case "x-tar": return "tar";
-        case "x-httpd-php": return "php";
-        case "vnd.visio": return "vsd";
-        case "xhtml+xml": return "xhtml";
-        case "xml": return "xml";
-        case "vnd.mozilla.xul+xml": return "xul";
-        case "vnd.openxmlformats-officedocument.wordprocessingml.document": return "docx";
-        case "msword": return "docx";
-        case "vnd.openxmlformats-officedocument.spreadsheetml.sheet": return "xlsx";
-        case "vnd.openxmlformats-officedocument.presentationml.presentation": return "pptx";
-        case "vnd.ms-powerpoint": return "pptx";
-        case "vnd.oasis.opendocument.presentation": return "odp";
-        case "vnd.oasis.opendocument.text": return "odt";
-        case "vnd.oasis.opendocument.spreadsheet": return "ods";
-        case "zip": return "zip";
-        case "x-zip-compressed": return "zip";
-        case "pdf": return "pdf";
-        default: return DEF_GEN_MIME;
-    }
-}
-/**
- * Selects to wich mime type the mime type given belongs to
- * @param mimeType mime type to be searched 
- * @returns the generic type, 
-if not found it return "octet" that means generic binary file
- */
-export const mimeSelector = (mimeType?: string): keyof IconsMap => {
-    // let genericMime: string | undefined = undefined;
-    if (!mimeType || !mimeType.includes("/")) {
-        return DEF_GEN_MIME;
-    }
-    let headerMime = mimeType.split("/")[0];
-    let tailMime = mimeType.split("/")[1];
-    /**
-     * Every mimetype that 
-     * starts with: "application/...."
-     */
-
-    switch (headerMime) {
-        case "application": return applicationSelector(tailMime);
-        case "audio": return audioSelector(tailMime);
-        case "video": return videoSelector(tailMime);
-        case "text": return textSelector(tailMime);
-        case "image": return imageSelector(tailMime);
-        case "font": return fontSelector(tailMime);
-
-        default: return DEF_GEN_MIME;
-    }
-}
-/**
- * Selects to wich mapped extension
- * the given exension belongs to
- * 
- * @param extension 
- * @returns 
- */
-export const extensionSelector = (extension?: string): keyof IconsMap => {
-    let genericMime: keyof IconsMap = "octet";
-
-    if (extension && extension !== "") {
-        if (extension.includes("zip") || extension.includes("rar")) {
-            genericMime = "zip";
-        } else if (extension.includes("doc")) {
-            genericMime = "docx";
-        } else if (extension.includes("xls")) {
-            genericMime = "xlsx";
-        } else if (extension.includes("drawio")) {
-            genericMime = "drawio";
-        } else if (extension.includes("psd")) {
-            genericMime = "psd";
-        } else if (extension.includes("csv")) {
-            genericMime = "csv";
-        } else if (extension === "jsx") {
-            genericMime = "react";
-        } else if (extension === "py") {
-            genericMime = "python";
-        } else if (extension === "vue") {
-            genericMime = "vue";
-        } else if (extension === "java") {
-            genericMime = "java";
-        } else if (extension === "ts") {
-            genericMime = "typescript";
-        } else if (extension === "sass" || extension === "scss") {
-            genericMime = "sass";
-        }
-    }
-    return genericMime;
-
-}
-/**
- * Chack for extention whether the file is code os not
- * @param extension 
- * @returns 
- */
-export const checkIsCode = (extension?: string): keyof IconsMap => {
-    let genericMime: keyof IconsMap = "text";
-    if (extension && extension !== "") {
-        if (extension === "jsx") {
-            genericMime = "react";
-        } else if (extension === "py") {
-            genericMime = "python";
-        } else if (extension === "vue") {
-            genericMime = "vue";
-        } else if (extension === "java") {
-            genericMime = "java";
-        } else if (extension === "ts" || extension === "tsx") {
-            genericMime = "typescript";
-        } else if (extension === "js") {
-            genericMime = "javascript";
-        } else if (extension === "xml") {
-            genericMime = "xml";
-        } else if (extension === "php") {
-            genericMime = "php";
-        }
-    }
-    return genericMime;
-}
-
-/**
- * Looks for a suitable file icon
- * If not found, returns octet-stream url
- * @param props mime and extension from file to search
- * @returns the result file ico
- */
-export const getURLFileIco = (
-    file: File | undefined,
-    customIcons: IconsMap | undefined
-): ResultFileIco => {
-
-    let result: keyof IconsMap = "fallBack";
-    //if not file, return octet
-    if (!file) {
-        result = DEF_GEN_MIME;
-        if (customIcons?.fallBack)
-            return { url: customIcons?.fallBack, mimeResume: result };
-
-        return { url: mimeUrlList[result], mimeResume: result };
-    } else {
-        result = mimeSelector(file.type);
-    }
-    //If plain text
-    const extention: string = getExt(file.name);
-
-    if (result === "text") {
-        result = checkIsCode(extention);
-
-    }
-    //If octet stream result, second chance: file extention
-    if (result === DEF_GEN_MIME) {
-        result = extensionSelector(extention);
-    }
-
-    const customUrl = customIcons?.[result];
-    if (customUrl !== undefined)
-        return { url: customUrl, mimeResume: result };
-
-
-    return { url: mimeUrlList[result], mimeResume: result };
-}
-/**
- * Looks for a suitable file icon
- * @param props mime and extension from file to search
- * @returns the result file ico, if not found, turns octet-stream url
- */
-export const getURLFileIcoFromNameAndType = (
-    name: string | undefined,
-    type: string | undefined,
-    customIcons: IconsMap | undefined
-): ResultFileIco => {
-
-    let result: keyof IconsMap = "octet";
-    //if not nam and type, return octet
-    if (!name) {
-        result = DEF_GEN_MIME;
-        if (customIcons?.fallBack)
-            return { url: customIcons?.fallBack, mimeResume: result };
-        return { url: mimeUrlList[result], mimeResume: result };
-    } else {
-        result = mimeSelector(type);
-    }
-    //If plain text
-    const extention: string = getExt(name);
-
-    if (result === "text") {
-        result = checkIsCode(extention);
-
-    }
-    //If octet stream result, second chance: file extention
-    if (result === DEF_GEN_MIME) {
-        result = extensionSelector(extention);
-    }
-    const customUrl = customIcons?.[result];
-    if (customUrl !== undefined)
-        return { url: customUrl, mimeResume: result };
-
-    return { url: mimeUrlList[result], mimeResume: result };
-}
-interface ResultFileIco {
-    url: string;
-    mimeResume: keyof IconsMap;
-}
-/**
- * set of registered mimes on MDN
- * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
- * 
- */
-interface MimeSelector {
-    [mime: string]: string;
-}
-
-const mimeUrlList: MimeSelector = {
-    aac: aac,
-    accdb: accdb,
-    abw: abw,
-    arc: freearc,
-    avi: avi,
-    azw: azw,
-    octet: octet,
-    bmp: bmp,
-    bz: bz,
-    bz2: bz2,
-    cda: cda,
-    csh: csh,
-    css: css,
-    csv: csv,
-    docx: docx,
-    drawio: drawio,
-    eot: eot,
-    epub: epub,
-    gzip: gzip,
-    gif: gif,
-    html: html,
-    //ico: ico,
-    icalendar: icalendar,
-    jar: jar,
-    jpeg: jpeg,
-    javascript: javascript,
-    json: json,
-    jsonld: jsonld,
-    midi: midi,
-    //  js: js,
-    mp3: mp3,
-    mp4: mp4,
-    mpeg: mpeg,
-    mpkg: mpkg,
-    mp2t: octet,
-    odp: odp,
-    ods: ods,
-    odt: odt,
-    oga: oga,
-    ogv: ogv,
-    ogx: ogx,
-    opus: opus,
-    otf: otf,
-    png: png,
-    pdf: pdf,
-    php: php,
-    pptx: pptx,
-    psd: psd,
-    rar: rar,
-    rtf: rtf,
-    sass: sass,
-    sh: sh,
-    //svg: svg,
-    swf: swf,
-    tar: tar,
-    tiff: tiff,
-    ttf: ttf,
-    //ts: ts,
-    typescript: typescript,
-    text: text,
-    vsd: vsd,
-    wav: wav,
-    weba: weba,
-    webm: webm,
-    webp: webp,
-    woff: woff,
-    wma: wma,
-    wmv: wmv,
-    xhtml: html,
-    xlsx: xlsx,
-    xml: xml,
-    xul: xul,
-    zip: zip,
-    // threegp: threegp,
-    sevenzip: sevenzip,
-    python: python,
-    java: java,
-    react: react,
-    vue: vue,
-
-
-    fallBack: octet,
-};
\ No newline at end of file
diff --git a/src/files-ui/core/reader/imageOrientation.ts b/src/files-ui/core/reader/imageOrientation.ts
deleted file mode 100644
index daf100a79aa22bf7181fd6d399b0d31535a8161a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/imageOrientation.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Resize an image resolution given maxWidth and maxHeight
- * 
- * Should be called with await
- * @param base64Str a string representation of an imae file
- * @param maxWidth the max width of he image
- * @param maxHeight the max height of he image
- * @returns the resized image
- */
-export function getImageOrientation(
-    imageSource: string | undefined,
-): Promise<"landscape" | "portrait"> {
-    return new Promise((resolve, reject) => {
-        console.log("getImageOrientation imageSource", imageSource);
-        if (!imageSource || imageSource.length === 0) {
-            console.log("getImageOrientation rejected", imageSource);
-
-            reject("landscape");
-            return;
-        }
-        try {
-            console.log("getImageOrientation try ini", imageSource);
-
-            let img: HTMLImageElement = new Image();
-            img.src = imageSource;
-            img.onerror = (ev: string | Event) => {
-                console.log("getImageOrientation There was a ne error reading", ev);
-                reject("landscape");
-            }
-            img.onload = () => {
-                let width: number = img.width;
-                let height: number = img.height;
-                if (width > height) {
-                    resolve("landscape");
-                } else {
-                    resolve("portrait");
-                }
-            }
-        } catch (error) {
-            console.error("An error ocurred when trying to get the image orientation");
-
-            if (process.env.NODE_ENV === "development") {
-                console.error("An error ocurred when trying to get the image orientation");
-            }
-            reject("landscape");
-        }
-    });
-}
-
diff --git a/src/files-ui/core/reader/index.ts b/src/files-ui/core/reader/index.ts
deleted file mode 100644
index f166764e80155958b50f4027e421df7e9f791036..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText } from "./readers";
-export { resizeImage } from "./resizeImage";
-export { getImageOrientation } from "./imageOrientation";
\ No newline at end of file
diff --git a/src/files-ui/core/reader/readers.ts b/src/files-ui/core/reader/readers.ts
deleted file mode 100644
index 91ea19f3d85f98237d3f31320a6623a34a94dff3..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/readers.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * Reads an image (or other type) file as data URL in a promise way, 
- * so you can use await.
- * It will return a string that contains the URL representation
- * @param file File or Blob object
- * @returns data URL of the file
- */
-export const readAsDataURL = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {
-    return new Promise<string | undefined>((resolve, reject) => {
-        try {
-            const reader = new FileReader();
-            reader.onprogress = () => {
-                onProgress?.();
-            }
-            reader.onerror = function () {
-                onError?.();
-            }
-            reader.onload = function () {
-                resolve(reader.result as string);
-            }
-            reader.readAsDataURL(file);
-        } catch (error) {
-            reject(undefined);
-        }
-    });
-}
-
-
-
-/**
- * Reads a file as Text in a promise way, so you can use await.
- * If other kind of file is sent, this function will read it anyway
- * and will return a string that contains the URL representation
- * @param file File or Blob object
- * @param encoding The type of encoding such as "base64"
- * @returns data text of the file
- */
-export const readAsText = (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function): Promise<string | undefined> => {
-    return new Promise<string | undefined>((resolve, reject) => {
-        try {
-            const reader = new FileReader();
-            reader.onload = function () {
-                resolve(reader.result as string);
-            }
-            reader.onprogress = () => {
-                onProgress?.();
-            }
-            reader.onerror = function () {
-                onError?.();
-            }
-            reader.readAsText(file, encoding ? encoding : "base64");
-        } catch (error) {
-            reject(undefined);
-        }
-    });
-}
-
-
-
-/**
- * Reads a file and return the raw binary data from the file. 
- * @param file File or Blob object
- * @param encoding The type of encoding such as "base64"
- * @returns raw binary data of the file
- */
-export const readAsBinaryString = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {
-    return new Promise<string | undefined>((resolve, reject) => {
-        try {
-            const reader = new FileReader();
-            reader.onload = function () {
-                resolve(reader.result as string);
-            }
-            reader.onprogress = () => {
-                onProgress?.();
-            }
-            reader.onerror = function () {
-                onError?.();
-            }
-            reader.readAsBinaryString(file);
-        } catch (error) {
-            reject(undefined);
-        }
-    });
-}
-
-/**
- * Reads a file and returns an ArrayBuffer representing the file's data 
- * @param file File or blob object
- * @param encoding The type of encoding such as "base64"
- * @returns ArrayBuffer representation of the file
- */
-export const readAsArrayBuffer = (file: File | Blob, onProgress?: Function, onError?: Function): Promise<string | undefined> => {
-    return new Promise<string | undefined>((resolve, reject) => {
-        try {
-            const reader = new FileReader();
-            reader.onload = function () {
-                resolve(reader.result as string);
-            }
-            reader.onprogress = () => {
-                onProgress?.();
-            }
-            reader.onerror = function () {
-                onError?.();
-            }
-            reader.readAsArrayBuffer(file);
-        } catch (error) {
-            reject(undefined);
-        }
-    });
-}
\ No newline at end of file
diff --git a/src/files-ui/core/reader/resizeImage.ts b/src/files-ui/core/reader/resizeImage.ts
deleted file mode 100644
index 47b15ab643d49d74d5792f56548a4cb17c2a4b8c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/reader/resizeImage.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Resize an image resolution given maxWidth and maxHeight
- * 
- * Should be called with await
- * @param base64Str a string representation of an imae file
- * @param maxWidth the max width of he image
- * @param maxHeight the max height of he image
- * @returns the resized image
- */
-export function resizeImage(
-    base64Str: string,
-    maxWidth = 135,
-    maxHeight = 120
-): Promise<string | undefined> {
-    return new Promise((resolve, reject) => {
-        try {
-            let img: HTMLImageElement = new Image();
-            img.src = base64Str;
-            img.onload = () => {
-                let canvas: HTMLCanvasElement = document.createElement('canvas');
-                const MAX_WIDTH: number = maxWidth;
-                const MAX_HEIGHT: number = maxHeight;
-                let width: number = img.width;
-                let height: number = img.height;
-
-                if (maxWidth > width && maxHeight > height) {
-                    resolve(base64Str);
-                } else
-                    if (width > height) {
-                        if (width > MAX_WIDTH) {
-                            height *= MAX_WIDTH / width;
-                            width = MAX_WIDTH;
-                        }
-                    } else {
-                        if (height > MAX_HEIGHT) {
-                            width *= MAX_HEIGHT / height;
-                            height = MAX_HEIGHT;
-                        }
-                    }
-                canvas.width = width
-                canvas.height = height
-                let ctx: CanvasRenderingContext2D | null = canvas.getContext('2d')
-                if (ctx) {
-                    ctx.drawImage(img, 0, 0, width, height);
-                    resolve(canvas.toDataURL());
-
-                } else {
-                    if (process.env.NODE_ENV === "development") {
-                        console.error("An error ocurred when trying to make a thumnail");
-                    }
-                    reject(undefined);
-                }
-            }
-        } catch (error) {
-            if (process.env.NODE_ENV === "development") {
-                console.error("An error ocurred when trying to make a thumnail");
-            }
-            reject(undefined);
-        }
-    });
-}
-
diff --git a/src/files-ui/core/ripple/index.ts b/src/files-ui/core/ripple/index.ts
deleted file mode 100644
index 62b0479ebf58dffcbbed15c15c4eaed901021532..0000000000000000000000000000000000000000
--- a/src/files-ui/core/ripple/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { createFuiRippleFromDiv,createRippleButton } from "./ripple";
\ No newline at end of file
diff --git a/src/files-ui/core/ripple/ripple.ts b/src/files-ui/core/ripple/ripple.ts
deleted file mode 100644
index aa52e4177c1f209af8d7c165c3adb825466cbb47..0000000000000000000000000000000000000000
--- a/src/files-ui/core/ripple/ripple.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import { completeAsureColor, hexColorToRGB } from "../color";
-
-const asureRippleColor = (color: string): string => {
-  return completeAsureColor(color,
-    0.4
-  );
-}
-
-
-export function createFuiRippleFromDiv
-  <T extends HTMLButtonElement | HTMLAnchorElement | HTMLDivElement>
-  (
-    fuiContainerAbs: T | null,
-    fuiContainerRel: T | null,
-    color: string
-  ) {
-  if (!fuiContainerRel || !fuiContainerAbs) return;
-
-  fuiContainerAbs.style.display = "block";
-  //removeRippleIfExist(fuiContainerRel, "dui-ripple");
-  // creating the span circle ripple
-  const circle: HTMLSpanElement = document.createElement("span");
-  //for searching
-  circle.id = "dui-ripple";
-  //for styles
-  circle.className = "ripple";
-  // calculates the diameter
-  const diameter: number = Math.max(
-    fuiContainerRel.clientWidth,
-    fuiContainerRel.clientHeight
-  );
-
-  //const rippleCircleRadius: number = diameter / 2;
-
-  //console.log("w,h", fuiContainerRel.clientWidth, fuiContainerRel.clientHeight);
-
-  circle.style.width = circle.style.height = `${diameter}px`;
-  circle.style.backgroundColor = asureRippleColor(color);
-
-  fuiContainerRel.appendChild(circle);
-  //remove trash
-  setTimeout(() => {
-    fuiContainerAbs.style.display = "none";
-    circle?.remove();
-  }, 501);
-}
-
-
-export function createRippleButton<
-  T extends HTMLButtonElement | HTMLAnchorElement | HTMLDivElement
->(event: React.MouseEvent<T, MouseEvent>, variant: string, color: string) {
-  const buttonAnchorDiv = event.currentTarget;
-
-  const circle: HTMLSpanElement = document.createElement("span");
-
-  const diameter = Math.max(
-    buttonAnchorDiv.clientWidth,
-    buttonAnchorDiv.clientHeight
-  );
-  //const radius = diameter / 2;
-
-  circle.style.width = circle.style.height = `${diameter}px`;
-  /* circle.style.left = `${event.clientX - radius
-   }px`;
- circle.style.top = `${event.clientY - radius
-   }px`; */
-
-  circle.classList.add("ripple");
-
-  if (variant !== "contained") {
-    circle.style.backgroundColor = asureRippleColor(color);
-  } else {
-
-    circle.style.backgroundColor = hexColorToRGB("#ffffff", 0.4);
-  }
-  buttonAnchorDiv.appendChild(circle);
-
-  setTimeout(() => {
-    circle?.remove();
-  }, 501);
-}
\ No newline at end of file
diff --git a/src/files-ui/core/synthetic-file/SyntheticFile.ts b/src/files-ui/core/synthetic-file/SyntheticFile.ts
deleted file mode 100644
index 0ff5ed1f5f070edd414a9538cf449a2e0a019be1..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/SyntheticFile.ts
+++ /dev/null
@@ -1,834 +0,0 @@
-
-/**
- * A syntetic file creator.
- * Very useful for tests
- */
-export abstract class SyntheticFile {
-    /**
- * 
- * @param name the file name
- * @param size the file size
- * @param type the file type
- * @returns 
- */
-    static createFile = (name: string, size: number, type: string) => {
-        const file = new File([], name, { type });
-        Object.defineProperty(file, "size", {
-            get() {
-                return size;
-            },
-        });
-        return file;
-    };
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_aac = (size?: number): File => {
-        return SyntheticFile.createFile("acc_audio-file-with-large-name.aac", size ? size : 3516516, "audio/aac");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_abw = (size?: number): File => {
-        return SyntheticFile.createFile("abiword-file-with-large-name.abw", size ? size : 3516516, "application/x-abiword");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_freearc = (size?: number): File => {
-        return SyntheticFile.createFile("freearc-file-with-large-name.arc", size ? size : 3516516, "application/x-freearc");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_avi = (size?: number): File => {
-        return SyntheticFile.createFile("avi-file-with-large-name.avi", size ? size : 3516516, "video/x-msvideo");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_azw = (size?: number): File => {
-        return SyntheticFile.createFile("amazon_kindle_ebook-file-with-large-name.azw", size ? size : 3516516, "application/vnd.amazon.ebook");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_octet = (size?: number): File => {
-        return SyntheticFile.createFile("binary_octet_stream-file-with-large-name.bin", size ? size : 3516516, "application/octet-stream");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bmp = (size?: number): File => {
-        return SyntheticFile.createFile("bit_map-file-with-large-name.bmp", size ? size : 3516516, "image/bmp");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz = (size?: number): File => {
-        return SyntheticFile.createFile("x_bzip-file-with-large-name.bz", size ? size : 3516516, "application/x-bzip");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz2 = (size?: number): File => {
-        return SyntheticFile.createFile("x_bzip_2-file-with-large-name.bz2", size ? size : 3516516, "application/x-bzip2");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_cda = (size?: number): File => {
-        return SyntheticFile.createFile("cd_audio-file-with-large-name.cda", size ? size : 3516516, "application/x-cdf");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csh = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.csh", size ? size : 3516516, "application/x-csh");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_css = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.css", size ? size : 3516516, "text/css");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csv = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.csv", size ? size : 3516516, "text/csv");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_doc = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.doc", size ? size : 3516516, "application/msword");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_docx = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.docx", size ? size : 3516516, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_eot = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.eot", size ? size : 3516516, "application/vnd.ms-fontobject");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_epub = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.epub", size ? size : 3516516, "application/epub+zip");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gzip = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.gz", size ? size : 3516516, "application/gzip");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gif = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.gif", size ? size : 3516516, "image/gif");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_htm = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.htm", size ? size : 3516516, "text/html");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_html = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.html", size ? size : 3516516, "text/html");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ico = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ico", size ? size : 3516516, "image/vnd.microsoft.icon");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_icalendar = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ics", size ? size : 3516516, "text/calendar");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jar = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.jar", size ? size : 3516516, "application/java-archive");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpeg = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.jpeg", size ? size : 3516516, "image/jpeg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpg = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.jpg", size ? size : 3516516, "image/jpeg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_js = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.js", size ? size : 3516516, "text/javascript");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_json = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.json", size ? size : 3516516, "application/json");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jsonld = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.jsonld", size ? size : 3516516, "application/ld+json");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mid = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mid", size ? size : 3516516, "audio/midi");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_mid = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mid", size ? size : 3516516, "audio/x-midi");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_midi = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.midi", size ? size : 3516516, "audio/x-midi");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_midi = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.midi", size ? size : 3516516, "audio/x-midi");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mjs = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mjs", size ? size : 3516516, "text/javascript");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp3 = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mp3", size ? size : 3516516, "audio/mpeg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp4 = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mp4", size ? size : 3516516, "video/mp4");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpeg = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mpeg", size ? size : 3516516, "video/mpeg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpkg = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.mpkg", size ? size : 3516516, "application/vnd.apple.installer+xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odp = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.odp", size ? size : 3516516, "application/vnd.oasis.opendocument.presentation");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ods = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ods", size ? size : 3516516, "application/vnd.oasis.opendocument.spreadsheet");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odt = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.odt", size ? size : 3516516, "application/vnd.oasis.opendocument.text");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_oga = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.oga", size ? size : 3516516, "audio/ogg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogv = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ogv", size ? size : 3516516, "video/ogg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogx = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ogx", size ? size : 3516516, "application/ogg");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_opus = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.opus", size ? size : 3516516, "audio/opus");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_otf = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.otf", size ? size : 3516516, "font/otf");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_png = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.png", size ? size : 3516516, "image/png");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pdf = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.pdf", size ? size : 3516516, "application/pdf");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_php = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.php", size ? size : 3516516, "application/x-httpd-php");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ppt = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ppt", size ? size : 3516516, "application/vnd.ms-powerpoint");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pptx = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.pptx", size ? size : 3516516, "application/vnd.openxmlformats-officedocument.presentationml.presentation");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rar = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.rar", size ? size : 3516516, "application/vnd.rar");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rtf = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.rtf", size ? size : 3516516, "application/rtf");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_sh = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.sh", size ? size : 3516516, "application/x-sh");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_svg = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.svg", size ? size : 3516516, "image/svg+xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_swf = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.swf", size ? size : 3516516, "application/x-shockwave-flash");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tar = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.tar", size ? size : 3516516, "application/x-tar");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tif = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.tif", size ? size : 3516516, "image/tiff");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tiff = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.tiff", size ? size : 3516516, "image/tiff");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ts = (size?: number): File => {
-        return SyntheticFile.createFile("mp2t_video-file-with-large-name.ts", size ? size : 3516516, "video/mp2t");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ttf = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.ttf", size ? size : 3516516, "font/ttf");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_text = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.txt", size ? size : 3516516, "text/plain");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_typescript = (size?: number): File => {
-        return SyntheticFile.createFile("typescript-file-with-large-name.ts", size ? size : 3516516, "text/plain");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vsd = (size?: number): File => {
-        return SyntheticFile.createFile("ms_visio-file-with-large-name.vsd", size ? size : 3516516, "application/vnd.visio");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_wav = (size?: number): File => {
-        return SyntheticFile.createFile("wav_audio-file-with-large-name.wav", size ? size : 3516516, "audio/wav");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_weba = (size?: number): File => {
-        return SyntheticFile.createFile("web_audio-file-with-large-name.weba", size ? size : 3516516, "audio/webm");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webm = (size?: number): File => {
-        return SyntheticFile.createFile("web_video-file-with-large-name.webm", size ? size : 3516516, "video/webm");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webp = (size?: number): File => {
-        return SyntheticFile.createFile("web_image-file-with-large-name.webp", size ? size : 3516516, "image/webp");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.woff", size ? size : 3516516, "font/woff");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff2 = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.woff2", size ? size : 3516516, "font/woff2");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xhtml = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.xhtml", size ? size : 3516516, "application/xhtml+xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xlsx = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.xls", size ? size : 3516516, "application/vnd.ms-excel");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xls = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.xlsx", size ? size : 3516516, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml = (size?: number): File => {
-        return SyntheticFile.createFile("xml-file-with-large-name.xml", size ? size : 3516516, "application/xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml_txt = (size?: number): File => {
-        return SyntheticFile.createFile("xml_plain_text-file-with-large-name.xml", size ? size : 3516516, "application/xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xul = (size?: number): File => {
-        return SyntheticFile.createFile("test-file-with-large-name.xul", size ? size : 3516516, "application/vnd.mozilla.xul+xml");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_zip = (size?: number): File => {
-        return SyntheticFile.createFile("zip-file-with-large-name.zip", size ? size : 3516516, "application/zip");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp = (size?: number): File => {
-        return SyntheticFile.createFile("3gp_video-file-with-large-name.3gp", size ? size : 3516516, "video/3gpp");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp2 = (size?: number): File => {
-        return SyntheticFile.createFile("3gp2_video-file-with-large-name.3g2", size ? size : 3516516, "video/3gpp2");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_a = (size?: number): File => {
-        return SyntheticFile.createFile("3gp_audio-file-with-large-name.3gp", size ? size : 3516516, "audio/3gpp");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_v = (size?: number): File => {
-        return SyntheticFile.createFile("3gp_audio-file-with-large-name.3gp2", size ? size : 3516516, "audio/3gpp2");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_7z = (size?: number): File => {
-        return SyntheticFile.createFile("seven_zip-file-with-large-name.7z", size ? size : 3516516, "application/x-7z-compressed");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_python = (size?: number): File => {
-        return SyntheticFile.createFile("python-file-with-large-name.py", size ? size : 3516516, "text/plain");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_java = (size?: number): File => {
-        return SyntheticFile.createFile("java-file-with-large-name.java", size ? size : 3516516, "text/plain");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_react = (size?: number): File => {
-        return SyntheticFile.createFile("react_jsx-file-with-large-name.jsx", size ? size : 3516516, "text/plain");
-    }
-    /**
-    * 
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vue = (size?: number): File => {
-        return SyntheticFile.createFile("vue-file-with-large-name.vue", size ? size : 3516516, "text/plain");
-    }
-    /**
-     * Creates an array of fake (synthetic) files
-     * @param size the file size for all synthetic files
-     * @returns an array of all file icon preview supported files
-     */
-    static createFileListMiscelanious = (size?: number): File[] => {
-
-        let listFile: File[] = [];
-
-        listFile.push(SyntheticFile.create_aac(size));
-        listFile.push(SyntheticFile.create_abw(size));
-        listFile.push(SyntheticFile.create_freearc(size));
-        listFile.push(SyntheticFile.create_avi(size));
-        listFile.push(SyntheticFile.create_azw(size));
-        listFile.push(SyntheticFile.create_octet(size));
-        listFile.push(SyntheticFile.create_bmp(size));
-        listFile.push(SyntheticFile.create_bz(size));
-        listFile.push(SyntheticFile.create_bz2(size));
-        listFile.push(SyntheticFile.create_cda(size));
-        listFile.push(SyntheticFile.create_csh(size));
-        listFile.push(SyntheticFile.create_css(size));
-        listFile.push(SyntheticFile.create_csv(size));
-        listFile.push(SyntheticFile.create_doc(size));
-        listFile.push(SyntheticFile.create_docx(size));
-        listFile.push(SyntheticFile.create_eot(size));
-        listFile.push(SyntheticFile.create_epub(size));
-        listFile.push(SyntheticFile.create_gzip(size));
-        listFile.push(SyntheticFile.create_gif(size));
-        listFile.push(SyntheticFile.create_htm(size));
-        listFile.push(SyntheticFile.create_html(size));
-        listFile.push(SyntheticFile.create_ico(size));
-        listFile.push(SyntheticFile.create_icalendar(size));
-        listFile.push(SyntheticFile.create_jar(size));
-        listFile.push(SyntheticFile.create_jpeg(size));
-        listFile.push(SyntheticFile.create_jpg(size));
-        listFile.push(SyntheticFile.create_js(size));
-        listFile.push(SyntheticFile.create_json(size));
-        listFile.push(SyntheticFile.create_jsonld(size));
-        listFile.push(SyntheticFile.create_mid(size));
-        listFile.push(SyntheticFile.create_midi(size));
-        listFile.push(SyntheticFile.create_x_mid(size));
-        listFile.push(SyntheticFile.create_x_midi(size));
-        listFile.push(SyntheticFile.create_mjs(size));
-        listFile.push(SyntheticFile.create_mp3(size));
-        listFile.push(SyntheticFile.create_mp4(size));
-        listFile.push(SyntheticFile.create_mpeg(size));
-        listFile.push(SyntheticFile.create_mpkg(size));
-        listFile.push(SyntheticFile.create_odp(size));
-        listFile.push(SyntheticFile.create_ods(size));
-        listFile.push(SyntheticFile.create_odt(size));
-        listFile.push(SyntheticFile.create_oga(size));
-        listFile.push(SyntheticFile.create_ogv(size));
-        listFile.push(SyntheticFile.create_ogx(size));
-        listFile.push(SyntheticFile.create_opus(size));
-        listFile.push(SyntheticFile.create_otf(size));
-        listFile.push(SyntheticFile.create_png(size));
-        listFile.push(SyntheticFile.create_pdf(size));
-        listFile.push(SyntheticFile.create_php(size));
-        listFile.push(SyntheticFile.create_ppt(size));
-        listFile.push(SyntheticFile.create_pptx(size));
-        listFile.push(SyntheticFile.create_rar(size));
-        listFile.push(SyntheticFile.create_rtf(size));
-        listFile.push(SyntheticFile.create_sh(size));
-        listFile.push(SyntheticFile.create_svg(size));
-        listFile.push(SyntheticFile.create_swf(size));
-        listFile.push(SyntheticFile.create_tar(size));
-        listFile.push(SyntheticFile.create_tif(size));
-        listFile.push(SyntheticFile.create_tiff(size));
-        listFile.push(SyntheticFile.create_ts(size));
-        listFile.push(SyntheticFile.create_ttf(size));
-        listFile.push(SyntheticFile.create_text(size));
-        listFile.push(SyntheticFile.create_typescript(size));
-        listFile.push(SyntheticFile.create_vsd(size));
-        listFile.push(SyntheticFile.create_wav(size));
-        listFile.push(SyntheticFile.create_weba(size));
-        listFile.push(SyntheticFile.create_webm(size));
-        listFile.push(SyntheticFile.create_webp(size));
-        listFile.push(SyntheticFile.create_woff(size));
-        listFile.push(SyntheticFile.create_woff2(size));
-        listFile.push(SyntheticFile.create_xhtml(size));
-        listFile.push(SyntheticFile.create_xlsx(size));
-        listFile.push(SyntheticFile.create_xls(size));
-        listFile.push(SyntheticFile.create_xml(size));
-        listFile.push(SyntheticFile.create_xml_txt(size));
-        listFile.push(SyntheticFile.create_xul(size));
-        listFile.push(SyntheticFile.create_zip(size));
-        //listFile.push(SyntheticFile.create_3gp(size));
-        //listFile.push(SyntheticFile.create_3gp2(size));
-        //listFile.push(SyntheticFile.create_3gp_a(size));
-        //listFile.push(SyntheticFile.create_3gp_v(size));
-        //listFile.push(SyntheticFile.create_7z(size));
-        listFile.push(SyntheticFile.create_python(size));
-        listFile.push(SyntheticFile.create_java(size));
-        listFile.push(SyntheticFile.create_react(size));
-        listFile.push(SyntheticFile.create_vue(size));
-
-        return listFile;
-    }
-}
-///////////////////// SHORTCUTS
-/**
- * Create a list of synthetic files with different mime types
- * @param size the file size for each synthetic file
- * @returns a list of synthetic file
- */
-export const createListOfMultiTypeFile = (size?: number): File[] => {
-    return SyntheticFile.createFileListMiscelanious(size);
-}
-
-/**
- * Creates a synthetic file.
- * By default, creates a png image file
- * @param name the file name to show. By default is set to "png-image-file-with-large-name.png"
- * @param size the size in bytes of the file. By default this value is set to 455555
- * @param type the mime type of the file. By default is set to "image/png"
- * @returns 
- */
-export const createSyntheticFile = (
-    name = "png-image-file-with-large-name.png",
-    size = 455555,
-    type = "image/png",
-): File => {
-    return SyntheticFile.createFile(name, size, type);
-}
\ No newline at end of file
diff --git a/src/files-ui/core/synthetic-file/index.ts b/src/files-ui/core/synthetic-file/index.ts
deleted file mode 100644
index 3e508f6acfa1e1f28aa8bc1eda989abecbc4f41d..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { SyntheticFile, createListOfMultiTypeFile, createSyntheticFile } from "./SyntheticFile";
-export { makeSyntheticExtFile } from "./syntheticfileGenerator";
\ No newline at end of file
diff --git a/src/files-ui/core/synthetic-file/syntheticfileGenerator.ts b/src/files-ui/core/synthetic-file/syntheticfileGenerator.ts
deleted file mode 100644
index 3c3ea5b59c060096cd0110d8d5bf6c98d0b20079..0000000000000000000000000000000000000000
--- a/src/files-ui/core/synthetic-file/syntheticfileGenerator.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { ExtFile, UPLOADSTATUS } from "../types";
-import { FileIdGenerator, getRandomInt } from "../utils";
-import { listOfErrors } from "../validation";
-import { getRandomUploadStatus } from "../validation/randomStatus";
-
-/**
- * Make a validated file that is ready to be used on FileItem component,
- * if valid is not set, a random operation will decide whether the file is valid or not
- * If valid is false, then the natural order is not to be uploadable and wont have upload message nor upload status
- * If valid is true, then file can be uploaded and can have upload message if the status is succes or error
- * @param file The file
- * @param valid true if it is a valid file, otherwise is false
- * @param uploadStatus the current upload status. If not given a random upload status will be set
- * @param uploadMessage the upload message after uploading
- * @returns a Vaidated File object
- */
- export const makeSyntheticExtFile = (
-    file?: File ,
-    valid = (Math.ceil(Math.random() * 28) % 2 === 0),
-    uploadStatus?: UPLOADSTATUS,
-    uploadMessage?: string
-): ExtFile => {
-    //if valid, naturally, can be uploaded
-    let errors: string[] | undefined = [];
-    let newUpoadStatus = uploadStatus || getRandomUploadStatus();
-
-    let customUploadMessage: string | undefined = uploadMessage || "";
-    if (valid) {
-        //we can decide according to upload status 
-        if (!uploadMessage) {
-            switch (newUpoadStatus) {
-                case "error": customUploadMessage = "Upload failed. There was an error"; break;
-                case "success": customUploadMessage = "File was successfully upload"; break;
-                default: uploadMessage = undefined;
-            }
-        }
-        errors = undefined;
-    } else {
-        //if not valid, just show error messages
-        const randInt: number = getRandomInt(0, 3);
-        errors.push(listOfErrors[randInt]);
-        newUpoadStatus = undefined;
-        customUploadMessage = undefined;
-    }
-    //now make a File Validated instance 
-    const newFileValidated: ExtFile = {
-        id: FileIdGenerator.getNextId(),
-        valid: valid,
-        file: file,
-        uploadStatus: newUpoadStatus,
-        uploadMessage: customUploadMessage,
-        errors: errors
-    };
-    return newFileValidated;
-}
diff --git a/src/files-ui/core/types/ExtFile.ts b/src/files-ui/core/types/ExtFile.ts
deleted file mode 100644
index 300dcb1a1245ab0b88546de409d531cdb82e7574..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/ExtFile.ts
+++ /dev/null
@@ -1,272 +0,0 @@
-import { createSyntheticFile } from "../synthetic-file";
-import { FileIdGenerator } from "../utils/IdGenerator";
-import { listOfErrors } from "../validation";
-import { UPLOADSTATUS } from "./UploadStatus";
-import { ServerResponse } from "./uploadTypes";
-
-/**
- * ExtFile === "Extended File".
- * This object "extends" the File Object
- */
-export declare type ExtFile = {
-    /** 
-     * An identifier for the extFile
-     */
-    id?: number | string | undefined;
-    /**
-     * The file object. Used mostly when user selects or drops files in the client sid.
-     */
-    file?: File;
-    /**
-     * The name of the file. Used mostly for displaying file data from server.
-     */
-    name?: string;
-    /**
-     * The type of the file. Used mostly for displaying file data from server.
-     */
-    type?: string;
-    /**
-     * The size of the file. Used mostly for displaying file data from server.
-     */
-    size?: number;
-    /**
-     * a flag that determines whether the file is valid, not valid or it is not validated.
-     */
-    valid?: boolean;
-    /**
-     * The list of errors when the file was validated
-     */
-    errors?: string[];
-    /**
-     * The current upload status. (e.g. "uploading")
-     */
-    uploadStatus?: UPLOADSTATUS | undefined;
-    /**
-     * A message that shows the result of the upload process
-     */
-    uploadMessage?: string;
-    /**
-     * Link, URI or string representation of an image
-     */
-    imageUrl?: string;
-    /**
-     * The XMLHttpRequest object for performing uploads to a server
-     */
-    xhr?: XMLHttpRequest;
-    /**
-     * The current percentage of upload progress.
-     * This value will have a higher priority over the upload progress value calculated inside the component.
-     * @default undefined
-     */
-    progress?: number;
-    /**
-     * The additional data that will be sent to the server
-     * when files are uploaded individually
-     */
-    extraUploadData?: Record<string, any>;
-    /**
-     * Any kind of extra data that could be needed.
-     */
-    extraData?: Object;
-    /**
-     * The upload response from server
-     */
-    serverResponse?: ServerResponse;
-    /**
-     * The url to be used to perform a GET request in order to download the
-        file. If defined, the download icon will be shown.
-     */
-    downloadUrl?: string;
-    /**
-     * Link, URI, FIle object or string representation of a video
-     */
-    videoUrl?: string;
-}
-
-/**
- * A class definition for ExtFile.
- * This class has the purpose to allow the creation of instances
- * of an ExtFile for performing complex operations that cannot be
- * accomplished just by using the ExtFile type.
- * For instance, it can help in changing the value of some attributes
- * across different scopes thanks to memory reference.
- */
-export class ExtFileInstance {
-    /**
-     * An identifier for the extFile
-     */
-    public id?: number | string;
-    /**
-     * The file object. Used mostly when user selects or drops files in the client sid.
-     */
-    public file?: File;
-    /**
-     * The name of the file. Used mostly for displaying file data from server.
-     */
-    public name?: string;
-    /**
-     * The type of the file. Used mostly for displaying file data from server.
-     */
-    public type?: string;
-    /**
-     * The size of the file. Used mostly for displaying file data from server.
-     */
-    public size?: number;
-
-    public imageUrl?: string;
-    /**
-     * A flag that determines whether the file is valid, not valid or it is not validated.
-     */
-    public valid?: boolean;
-    /**
-     * The list of errors when the file was validated
-     */
-    public errors?: string[];
-    /**
-     * A message that shows the result of the upload process
-     */
-    public uploadMessage?: string;
-    /**
-     * The current upload status. (e.g. "uploading")
-     */
-    public uploadStatus?: UPLOADSTATUS | undefined;
-    /**
-     * The current upload progress
-     */
-    public progress?: number;
-    /**
-     * The XMLHttpRequest object for performing uploads to a server
-     */
-    public xhr?: XMLHttpRequest;
-    /**
-     * The additional data that will be sent to the server
-     */
-    public extraData?: Record<string, any>;
-    /**
-     * The additional data that will be sent to the server
-     * when filesare uploaded individually
-     */
-    public extraUploadData?: Record<string, any>;
-    /**
-     * The upload response from server
-     */
-    public serverResponse?: ServerResponse;
-    /**
-     * Url to perform a GET request in order to download the file.
-     * This  action is triggered when download button is clicked or pressed.
-     * In case onDownload prop is given
-     */
-    public downloadUrl?: string;
-    /**
-     * Link, URI, FIle object or string representation of a video
-     */
-    public videoUrl?: string;
-
-    constructor(extFile: ExtFile) {
-        const {
-            id,
-            file,
-            name,
-            size,
-            type,
-            imageUrl,
-            valid,
-            errors,
-            uploadMessage,
-            uploadStatus,
-            progress,
-            xhr,
-            extraData,
-            extraUploadData,
-            serverResponse,
-            downloadUrl, videoUrl
-        } = extFile;
-
-        this.id = id;
-        this.file = file;
-        this.name = name;
-        this.size = size;
-        this.type = type;
-        this.imageUrl = imageUrl;
-
-        this.valid = valid;
-        this.errors = errors;
-        this.uploadStatus = uploadStatus;
-        this.uploadMessage = uploadMessage;
-        this.progress = progress;
-        this.xhr = xhr;
-
-        this.extraData = extraData;
-        this.extraUploadData = extraUploadData;
-        this.serverResponse = serverResponse;
-
-        this.downloadUrl = downloadUrl;
-        this.videoUrl = videoUrl;
-    }
-    /**
-     * method under construction
-     */
-    private static kamuiFile() {
-
-    }
-
-    /**
-     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object
-     * @param extFileInstance the instance of ExtFile
-     * @returns an ExtFile object
-     */
-    static toExtFile(extFileInstance: ExtFileInstance): ExtFile {
-        console.log("before toExtFile()", extFileInstance);
-
-        let extFileClone: ExtFile = {}; // the new empty object
-        const extFileInstanceKeys = Object.keys(extFileInstance) as [keyof ExtFile];
-        const extFileInstanceValues = Object.values(extFileInstance);
-        // let's copy all user properties into it
-        for (let i = 0; i < extFileInstanceKeys.length; i++) {
-            if (extFileInstanceValues[i] !== undefined) {
-                extFileClone[extFileInstanceKeys[i]] = extFileInstanceValues[i];
-            }
-        }
-        console.log("after toExtFile()", extFileClone);
-
-        return extFileClone;
-    }
-    /**
-     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.
-     * @returns an ExtFile object
-     */
-    toExtFile(): ExtFile {
-        return ExtFileInstance.toExtFile(this);
-    }
-
-    static mock = (): ExtFileInstance => {
-        return new ExtFileInstance(
-            extFileMock()
-        );
-    }
-}
-export const extFileMock = (): ExtFile => {
-    return {
-        id: FileIdGenerator.getNextId(),
-        name: "fileName.ext",
-        size: 28 * 1024 * 1024,
-        type: "files-ui/mock",
-        file: createSyntheticFile("fileName.ext", 28 * 1024 * 1024, "files-ui/mock"),
-        errors: listOfErrors,
-        uploadMessage: "uploaded",
-        uploadStatus: "preparing",
-        valid: false,
-        progress: 28,
-        xhr: new XMLHttpRequest(),
-        extraData: {
-            extraData1: "files-ui is the best",
-            extraData2: {
-                id: 1,
-                name: "files-ui.mock"
-            },
-            deleted: true
-        },
-        downloadUrl: "https://www.files-ui.com/mock/file-download"
-    }
-}
-
diff --git a/src/files-ui/core/types/ExtFileManager.ts b/src/files-ui/core/types/ExtFileManager.ts
deleted file mode 100644
index 7eaa531e4dcc38162460250345048db4b0777a78..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/ExtFileManager.ts
+++ /dev/null
@@ -1,226 +0,0 @@
-import { ExtFileInstance, ExtFile } from "./ExtFile";
-
-export class ExtFileManager {
-    private static nextId: number = 0;
-    static fileLists: Record<number | string, ExtFileInstance[] | undefined> = {};
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    public static getNextId(): number {
-        ExtFileManager.nextId++;
-        return ExtFileManager.nextId;
-    }
-    /**
-     * Updates a dui file list given an id
-     * @param id id of the fileList
-     * @param extFiles list of DuiFiles forinitializing the array
-     * @returns the id of the fileList
-     */
-    public static setFileList(
-        id: number | string | undefined,
-        extFilesInstances: ExtFileInstance[]
-    ): number | string {
-        if (!id) {
-            return 0;
-        } else {
-            ExtFileManager.fileLists[id] = [...extFilesInstances];
-
-            return id;
-        }
-
-    }
-    /**
-     * Generates a new ID
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    public static createFileListMap(): number {
-        const nextId: number = ExtFileManager.getNextId();
-        ExtFileManager.fileLists[nextId] = [];
-
-        return nextId;
-    }
-
-    /**
-     * Deletes a list map
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    public static removeFileListMap(id?: number | string): number | string {
-        if (!id) {
-            return 0;
-        } else {
-            try {
-                ExtFileManager.fileLists[id] = undefined;
-                return id;
-            } catch (error) {
-
-                console.error("Error on remove", error);
-                return 0;
-            }
-        }
-    }
-    /**
-     * 
-     * @param id the id of the dropzone
-     * @returns 
-     */
-    public static getExtFileInstanceList(
-        id?: number | string
-    ): ExtFileInstance[] | undefined {
-        try {
-            if (!id) {
-                return undefined;
-            }
-            return ExtFileManager.fileLists[id];
-        } catch (error) {
-            console.error("Error on getExtFileInstanceList", error);
-            return undefined;
-        }
-    }
-    /**
-     * Updates(replaces) the extFile list on preparing stage and returns the new array.
-     * Removes the non valid files if cleanOnUpload is true and validateFiles is also true
-     * Then sets on preparing stage all files according to the following creiteria:
-     * If theuploadStatus is diferent than "sucess" AND
-     * then, update the files on preparing stage. Otherwise keep the extFile props.
-     * Finally, updates the ExtFileInstance list on ExtFileManager.
-     * @param dropzoneId the id to access the right list
-     * @param localFiles the list of extFiles
-     * @param validateFiles flag that indicates that validation is active or o¿not
-     * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not
-     * @returns a list of ExtFileInstance
-     */
-    public static setFileListMapPreparing(
-        dropzoneId: number | string,
-        localFiles: ExtFile[],
-        validateFiles: boolean,
-        cleanOnUpload: boolean
-    ): ExtFileInstance[] | undefined {
-        console.log("setFileListMapPreparing before if", dropzoneId, localFiles, cleanOnUpload);
-
-        if (!(typeof dropzoneId === "number" || typeof dropzoneId === "string")) return undefined;
-
-        console.log("setFileListMapPreparing before try", localFiles, cleanOnUpload);
-        try {
-
-            let resultExtList: ExtFileInstance[] = [];
-
-            //initializes the extFileLInstance list
-            let temLocalFiles: ExtFile[] = [...localFiles];
-
-            //remove non valids if cleanOnUpload is true and validateFiles is also true
-            if (cleanOnUpload && validateFiles) {
-                // clean on Upload is true, so non valid files must be removed
-                temLocalFiles = temLocalFiles.filter(extFile => extFile.valid)
-                console.log("temLocalFiles filter", temLocalFiles);
-            }
-
-            console.log("setFileListMapPreparing after remove non valids", temLocalFiles);
-
-            if (validateFiles) {
-                // validation flag was set to true, so only valid=true files will be set to "preparing"
-
-                //so, only valid files was kept in the temLocalfiles array
-                //now set the preparing state only for files with uploadStatus !== "success"
-                temLocalFiles =
-                    temLocalFiles
-                        .map(extFile => {
-                            if (extFile.uploadStatus !== "success" && extFile.valid) {
-                                return { ...extFile, uploadStatus: "preparing" }
-                            } else {
-                                return { ...extFile }
-                            }
-                        });
-            } else {
-                // all files will be set to "preparing" whether the valid value
-                // except those files with uploadStatus ==="success"
-                temLocalFiles =
-                    temLocalFiles
-                        .map(extFile => {
-                            if (extFile.uploadStatus !== "success") {
-                                return { ...extFile, uploadStatus: "preparing" }
-                            } else {
-                                return { ...extFile }
-                            }
-                        });
-            }
-
-            console.log("setFileListMapPreparing result", temLocalFiles);
-
-            //converto to Object instances
-            resultExtList = temLocalFiles.map(F => new ExtFileInstance(F));
-            console.log("setFileListMapPreparing RESULT resultExtList", resultExtList);
-
-            const resultSet = ExtFileManager.setFileList(dropzoneId, resultExtList);
-            console.log("setFileListMapPreparing RESULT resultSet", resultSet);
-
-            return resultExtList;
-            // return ExtFileManager.fileLists[dropzoneId];
-        } catch (error) {
-            console.error("setFileListMapPreparing Error on get List", error);
-            return undefined;
-        }
-
-    }
-
-
-
-    /**
- * Updates(replaces) the extFile list on preparing stage and returns the new array.
- * Removes the non valid files if cleanOnUpload is true and validateFiles is also true
- * Then sets on preparing stage all files according to the following creiteria:
- * If theuploadStatus is diferent than "sucess" AND
- * then, update the files on preparing stage. Otherwise keep the extFile props.
- * Finally, updates the ExtFileInstance list on ExtFileManager.
- * @param dropzoneId the id to access the right list
- * @param localFiles the list of extFiles
- * @param validateFiles flag that indicates that validation is active or o¿not
- * @param cleanOnUpload flag to determine whther to clena the list oof non valid files or not
- * @returns a list of ExtFileInstance
- */
-    public static setFileListMapPreparing2(
-        dropzoneId: number | string,
-        localFiles: ExtFile[],
-        validateFiles: boolean,
-        cleanOnUpload: boolean
-    ): ExtFileInstance[] | undefined {
-
-        ExtFileManager.setFileList(dropzoneId, localFiles.map(F => new ExtFileInstance({ ...F, uploadStatus: "preparing" })));
-
-        return ExtFileManager.getExtFileInstanceList(dropzoneId);
-    }
-
-
-
-    /**
-     * 
-     * @param dropzoneId 
-     * @param index 
-     * @param incommingDuiFile 
-     * @returns 
-     */
-    /* public static updateFileListMapPreparingById(
-        dropzoneId: number,
-        index: number,
-        incommingDuiFile: ExtFileInstance
-    ): ExtFileInstance[] | undefined {
-        if (!(typeof dropzoneId === "number") || !(typeof index === "number") || index > 0) return undefined;
-        const extFileList: ExtFileInstance[] | undefined = ExtFileManager.fileLists[dropzoneId];
-
-        if (!(extFileList && extFileList.length > 0)) return undefined;
-        extFileList[index]=
-        try {
-            ExtFileManager.setFileList(dropzoneId, [
-                ...localFiles.map(
-                    (x) =>
-                        new ExtFileInstance({ ...x, uploadStatus: "preparing" })
-                ),
-            ]);
-            return ExtFileManager.fileLists[dropzoneId];
-        } catch (error) {
-            console.error("Error on get List", error);
-            return undefined;
-        }
-
-    } */
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/FileListMap.ts b/src/files-ui/core/types/FileListMap.ts
deleted file mode 100644
index bd02c8ee8e8a2fef59fc5c0ab85f816eb300dd42..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/FileListMap.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ExtFileInstance } from "./ExtFile";
-
-export declare type ExtFileListMap = {
-    [id: number | string]: ExtFileInstance[] | undefined;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/IconsMap.ts b/src/files-ui/core/types/IconsMap.ts
deleted file mode 100644
index ab67a405b1f2b5890976e9d578498f0698a651db..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/IconsMap.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-
-export type IconsMap = {
-    aac?: string;
-    accdb?: string;
-    abw?: string;
-    arc?: string;
-    avi?: string;
-    azw?: string;
-    octet?: string;
-    bmp?: string;
-    bz?: string;
-    bz2?: string;
-    cda?: string;
-    csh?: string;
-    css?: string;
-    csv?: string;
-    docx?: string;
-    drawio?: string;
-    eot?: string;
-    epub?: string;
-    gzip?: string;
-    gif?: string;
-    html?: string;
-    icalendar?: string;
-    jar?: string;
-    jpeg?: string;
-    javascript?: string;
-    json?: string;
-    jsonld?: string;
-    midi?: string;
-    mp3?: string;
-    mp4?: string;
-    mpeg?: string;
-    mpkg?: string;
-    mp2t?: string;
-    odp?: string;
-    ods?: string;
-    odt?: string;
-    oga?: string;
-    ogv?: string;
-    ogx?: string;
-    opus?: string;
-    otf?: string;
-    png?: string;
-    pdf?: string;
-    php?: string;
-    pptx?: string;
-    psd?: string;
-    rar?: string;
-    rtf?: string;
-    sass?: string;
-    sh?: string;
-    swf?: string;
-    tar?: string;
-    tiff?: string;
-    ttf?: string;
-    typescript?: string;
-    text?: string;
-    vsd?: string;
-    wav?: string;
-    weba?: string;
-    webm?: string;
-    webp?: string;
-    woff?: string;
-    wma?: string;
-    wmv?: string;
-    xhtml?: string;
-    xlsx?: string;
-    xml?: string;
-    xul?: string;
-    zip?: string;
-    sevenzip?: string;
-    python?: string;
-    java?: string;
-    react?: string;
-    vue?: string;
-    //fallback when file type is not here
-    fallBack?: string;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/NamedColor.ts b/src/files-ui/core/types/NamedColor.ts
deleted file mode 100644
index 3e15aa00711ca1b6b8967aae85b3cf69891122e4..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/NamedColor.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Interface to describe a named color
- */
- export interface NamedColor {
-    [colorName: string]: string;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/UploadConfig.ts b/src/files-ui/core/types/UploadConfig.ts
deleted file mode 100644
index e832d0043e18fb9ac20bf81ddde6957d3c0ab6ab..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/UploadConfig.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { Method } from "./method"
-
-export type UploadConfig = {
-    /**
-     * The url endpoint to upload the file.
-     * e.g. https://www.myasomwbackend/uploads/file
-     */
-    url?: string;
-    /**
-     * upload method, can be POST | PUT | PATCH
-     * @default "POST"
-     */
-    method?: Method;
-    /**
-     * Request headers for http request.
-     * e.g.
-     * ```jsx
-     * headers = { 
-     *    "content-type": "multipart/form-data",
-     *    Authorization: "Bearer YOUR_BEARER_TOKEN_GOES_HERE",
-     * } 
-     * ```
-     */
-    headers?: Record<string, string>;
-    /**
-     * the label to use in request
-     * On server this must be the label to get the file.
-     * @default "file"
-     */
-    uploadLabel?: string;
-    /**
-     * Flag for indicating whther to remove the non-valid files
-     * before starting the upload process.
-     * This flag is valid only if validation is enable
-     */
-    cleanOnUpload?: boolean;
-    /**
-     * If true, onDrop event or file selection not only will make Dropzone to return the list of files, but also
-     * it will start the upload stage for the files if at least url was set
-     * By default is false
-     */
-    autoUpload?: boolean;
-    /**
-     * The time that will last the "preparing" stage
-     * By default is 1500 miliseconds = 1.5 seconds
-     */
-    preparingTime?: number;
-    /**
-     * A message to show in the footer when the uploading process takes place.
-     */
-    uploadingMessage?: string;
-}
-
-export const createUploadConfig = (
-    url?: string,
-    method?: Method,
-    headers?: Record<string, string>,
-    uploadLabel?: string,
-    cleanonUpload?: boolean
-) => {
-    return {
-        url,
-        method,
-        headers,
-        uploadLabel,
-        cleanonUpload
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/UploadStatus.ts b/src/files-ui/core/types/UploadStatus.ts
deleted file mode 100644
index efa7f881ec5f2174803779f9287a15ea0d72668f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/UploadStatus.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export type UPLOADSTATUS =
-    "preparing" |
-    "aborted" |
-    "uploading" |
-    "success" |
-    "error";
diff --git a/src/files-ui/core/types/behaviur.ts b/src/files-ui/core/types/behaviur.ts
deleted file mode 100644
index 651a3c3d0014dda8d129311ae7036138b7dd389c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/behaviur.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * View mode for File Items inside dropzone
- */
- export declare type Behaviour = "add" | "replace";
\ No newline at end of file
diff --git a/src/files-ui/core/types/index.ts b/src/files-ui/core/types/index.ts
deleted file mode 100644
index 98e17c5b953f390c86ba9e5a89454db17f5e5bc7..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/index.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-
-export type { Behaviour } from "./behaviur";
-
-export type { ExtFile } from "./ExtFile";
-export { ExtFileInstance, extFileMock } from "./ExtFile";
-
-export { ExtFileManager } from "./ExtFileManager";
-
-export type { ExtFileListMap } from "./FileListMap";
-
-export type { Localization, FunctionLabel, ComponentLocalizer, LocalLabels } from "./localization";
-
-export type { Method } from "./method";
-
-export type { NamedColor } from "./NamedColor";
-
-export type { UPLOADSTATUS } from "./UploadStatus";
-
-export type { ServerResponse, UploadPromiseResponse, UploadResponse } from "./uploadTypes";
-
-export type { ValidateFileResponse, FileValidatorProps } from "./validation";
-
-export type { UploadConfig } from "./UploadConfig";
-
-export { createUploadConfig } from "./UploadConfig";
-
-export type { IconsMap } from "./IconsMap";
\ No newline at end of file
diff --git a/src/files-ui/core/types/localization.ts b/src/files-ui/core/types/localization.ts
deleted file mode 100644
index 8a97004cc8e4209aa8bf9dc7d04d7317d34799c4..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/localization.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-export type Localization =
-    "EN-en"
-    | "ES-es"
-    | "FR-fr"
-    | "IT-it"
-    | "PT-pt"
-    | "RU-ru"
-    | "ZH-cn"
-    | "ZH-hk";
-
-
-
-export type FunctionLabel = ((s1: string | number, s2?: string | number, s3?: string) => string);
-
-export type LocalLabels = {
-    [label: string]: string | FunctionLabel | LocalLabels;
-}
-//export const DropzoneLocalizer
-
-
-export type ComponentLocalizer = {
-    [language in Localization]: LocalLabels;
-};
\ No newline at end of file
diff --git a/src/files-ui/core/types/method.ts b/src/files-ui/core/types/method.ts
deleted file mode 100644
index 5078e9a6bb3439b3b0267f039cb93151504456f4..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/method.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Method to be used for request
- */
-export declare type Method = "POST" | "PUT" | "PATCH";
-
-/**
- * 
- * @param method the method in string format
- * @returns true if method is included in ["POST", "PUT", "PATCH"]
- */
-export const idValidMethod = (method: string): boolean => {
-    return ["POST", "PUT", "PATCH"].includes(method.toLowerCase());
-}
\ No newline at end of file
diff --git a/src/files-ui/core/types/uploadTypes.ts b/src/files-ui/core/types/uploadTypes.ts
deleted file mode 100644
index f2f145ca59f860f0c186b6c1644a0db10e0e9073..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/uploadTypes.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { ExtFile } from "./ExtFile";
-
-export declare type UploadResponse_ = {
-    id: number | string | undefined;
-    uploadedFile: ExtFile;
-}
-
-export declare type UploadPromiseResponse = {
-    uploadResponse: UploadResponse;
-    uploadedFile: ExtFile;
-}
-
-/////////
-export declare type UploadResponse = {
-    id: number | string | undefined;
-    serverResponse: ServerResponse | {};
-    uploadedFile: ExtFile;
-}
-
-export type ServerResponse = {
-    /**
-     * If true, it means that the request was successful.
-     */
-    success: boolean;
-    /**
-     * A message that describes the result of the request.
-     */
-    message?: string;
-    /**
-     * The response of the server.
-     */
-    payload?: any;
-}
-
diff --git a/src/files-ui/core/types/validation.ts b/src/files-ui/core/types/validation.ts
deleted file mode 100644
index 453a5cc4919623134eaa53dfefa0e39194ed85ab..0000000000000000000000000000000000000000
--- a/src/files-ui/core/types/validation.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-
-export declare type FileValidatorProps = {
-    /**
-     * max file size in bytes
-     */
-    maxFileSize?: number;
-    /**
-     * a comma separated list of mime types or file extensions.
-     */
-    accept?: string;
-}
-
-export declare type ValidateFileResponse = {
-    /**
-     * if true, that means the file is valid
-     */
-    valid: boolean,
-    /**
-     * the list of erros associated with an specific file
-     */
-    errors?: string[]
-}
-
-
diff --git a/src/files-ui/core/upload/addExtraData.upload.ts b/src/files-ui/core/upload/addExtraData.upload.ts
deleted file mode 100644
index ca592499620232795f5c7a6d457579386d9a3eac..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/addExtraData.upload.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function addExtraData(
-    formData: FormData,
-    extraData: Record<string, string> | undefined
-) {
-    //headers
-    const extraDataKeys: string[] = Object.keys(extraData || {});
-    //const headerValues: string[] = Object.values(headers);
-    for (let i = 0; i < extraDataKeys.length && extraData; i++) {
-        console.log("uploadFile extraData", extraDataKeys[i], extraData[extraDataKeys[i]]);
-
-        formData.append(extraDataKeys[i], extraData[extraDataKeys[i]]);
-
-    }
-
-    formData.append("otherValue", "HAAAAAAAAAAAAAAa");
-
-}
\ No newline at end of file
diff --git a/src/files-ui/core/upload/addheaders.upload.ts b/src/files-ui/core/upload/addheaders.upload.ts
deleted file mode 100644
index 2ba05b769b8927862169e1a10d6ead6b2dd15496..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/addheaders.upload.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function addHeaders(
-    xhr: XMLHttpRequest,
-    headers: Record<string, string> | undefined
-) {
-    //headers
-    const headerKeys: string[] = Object.keys(headers || {});
-    //const headerValues: string[] = Object.values(headers);
-    for (let i = 0; i < headerKeys.length && headers; i++) {
-        console.log("uploadFile headers", headerKeys[i], headers[headerKeys[i]]);
-        xhr.setRequestHeader(
-            headerKeys[i],
-            headers[headerKeys[i]]
-        );
-    }
-
-
-}
\ No newline at end of file
diff --git a/src/files-ui/core/upload/errors.upload.ts b/src/files-ui/core/upload/errors.upload.ts
deleted file mode 100644
index fa7da54598ebfbb1e9f169e09bfe13eebbe5855f..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/errors.upload.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { ExtFile, UploadResponse } from "../types";
-
-export const TIMEOUT_ERROR_RESPONSE = {
-    success: false,
-    message: "Timeout error",
-    payload: {}
-};
-export const ABORTED_ERROR_RESPONSE = {
-    success: false,
-    message: "Upload aborted",
-    payload: {}
-}
-export const JSON_PARSE_ERROR_RESPONSE = {
-    success: false,
-    message: "Error when parsing JSON response",
-    payload: {}
-}
-
-export const UNEXPECTED_ERROR_RESPONSE = {
-    success: false,
-    message: "Unexpected error",
-    payload: {}
-}
-
-export const NO_XHR_PROVIDED_ERROR = (extFile: ExtFile): ExtFile => {
-    return {
-
-        ...extFile,
-        uploadMessage: "Unable to upload. xhr object was not provided",
-        uploadStatus: "error",
-
-        serverResponse: { success: false, }
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/upload/index.ts b/src/files-ui/core/upload/index.ts
deleted file mode 100644
index db4a27dee64f6f27f61da69ab6a2d38979525ab4..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/index.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-export {
-
-    uploadExtFile,
-    FuiUpload,
-    uploadFile,
-    uploadFormData,
-} from "./upload";
-export {
-    ABORTED_ERROR_RESPONSE,
-    JSON_PARSE_ERROR_RESPONSE,
-    NO_XHR_PROVIDED_ERROR,
-    TIMEOUT_ERROR_RESPONSE,
-    UNEXPECTED_ERROR_RESPONSE,
-} from "./errors.upload";
-export {
-    JsonParseResponse,
-    makeErrorUploadResponse,
-    makeServerResponse,
-    makeSuccessUploadResponse,
-} from "./response.upload";
-
-export { default as addExtraData } from "./addExtraData.upload";
-export { default as addHeaders } from "./addheaders.upload";
-
-export {
-    instantPreparingToUploadOne,
-    preparingToUploadOne,
-    sleepTransition,
-    toUploadableExtFileList,
-    completeUploadResult,
-    sanitizeArrExtFile,
-    unableToUploadResult,
-    unexpectedErrorUploadResult,
-    setNextUploadStatus
-} from "./utils.upload";
diff --git a/src/files-ui/core/upload/response.upload.ts b/src/files-ui/core/upload/response.upload.ts
deleted file mode 100644
index 32707c4cbb64d443e652cdb4753fb738c6407eb3..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/response.upload.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { ExtFile, ServerResponse, UploadResponse } from "../types";
-import { JSON_PARSE_ERROR_RESPONSE } from "./errors.upload";
-
-export const makeServerResponse = (success: any, message: string, payload: any): ServerResponse => {
-    const result: ServerResponse = { success: success, message: message, payload: payload } as ServerResponse;
-    return result;
-}
-export const JsonParseResponse = (xhr: XMLHttpRequest): ServerResponse => {
-    try {
-        const jsonResponse = JSON.parse(xhr.response);
-        const success: any = jsonResponse.success;
-        const message: string = jsonResponse.message;
-        const payload: any = jsonResponse.payload;
-
-        const fuiResponse: ServerResponse = {
-            success: typeof success === "boolean" ? success : false,
-            message: typeof message === "string" ? message : "Error on message response",
-            payload: payload || {}
-        }
-        return fuiResponse
-    } catch (error) {
-        console.log("FuiUpload ERROR", error);
-        return JSON_PARSE_ERROR_RESPONSE;
-    }
-}
-
-
-
-export const makeSuccessUploadResponse = (
-    extFile: ExtFile,
-    responseFui: ServerResponse
-): ExtFile => {
-    return {
-        ...extFile,
-        serverResponse: responseFui,
-        uploadMessage: responseFui.message,
-        uploadStatus: "success"
-
-    }
-}
-
-
-export const makeErrorUploadResponse = (
-    extFile: ExtFile,
-    responseFui: ServerResponse
-): ExtFile => {
-    console.log("makeErrorUploadResponse", extFile, responseFui);
-    return {
-        ...extFile,
-        uploadMessage: responseFui.message,
-        uploadStatus: "error", 
-        serverResponse: responseFui,
-    }
-}
-
diff --git a/src/files-ui/core/upload/upload.ts b/src/files-ui/core/upload/upload.ts
deleted file mode 100644
index 10627038cb4af3c0c5eaf9a4d960a0b6ff55e7dd..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/upload.ts
+++ /dev/null
@@ -1,250 +0,0 @@
-import { ExtFile, Method, UPLOADSTATUS } from "../types";
-import { ServerResponse, UploadResponse } from "../types/uploadTypes";
-import addExtraDataUpload from "./addExtraData.upload";
-import addHeaders from "./addheaders.upload";
-import { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from "./errors.upload";
-import { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from "./response.upload";
-import { completeUploadResult, unableToUploadResult } from "./utils.upload";
-
-
-/**
- * Uploads one formData object to a given endpoint in a promisified way
- * @param xhr XMLHTTPrequest object
- * @param method method for uploading
- * @param endpoint endpoint to upload the file
- * @param data FromData object to perform multipart form data upload
- * @param headers the set of headers
- * @returns a server response that consists on {status, payload, message}
- */
-export const uploadFormData = (
-    xhr: XMLHttpRequest,
-    method: Method | undefined = "POST",
-    endpoint: string,
-    data: FormData,
-    headers: Record<string, string> | undefined
-) => {
-    return new Promise<ServerResponse>((resolve, reject) => {
-        console.log("Fui_uploadFormData uploadFile", xhr, method, endpoint, data, headers);
-
-        const finalMethod: Method = ["POST", "PUT", "PATCH"].includes(method.toUpperCase()) ? method : "POST";
-
-        let lastLastState: number = -1;
-        let lastState: number = 0;
-        let jumped: boolean = false;
-
-        xhr.upload.onload = () => {
-            console.log("Fui_uploadFormData uploadFile onLoad", xhr.readyState, xhr.response);
-        };
-        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);
-        xhr.upload.onabort = () => {
-            console.log("Fui_uploadFormData ABORTEEEEDDDD");
-            resolve(ABORTED_ERROR_RESPONSE);
-        };
-        xhr.onloadend = async (e) => {
-            console.log("onloadend loaded", e.loaded);
-            console.log("onloadend total", e.total);
-            console.log("onloadend lengthComputable", e.lengthComputable);
-
-        }
-        // listen for `progress` event
-        //currently listening on FileItem component hook
-        xhr.onreadystatechange = async (e) => {
-            //console.log("Finished", xhr);
-
-            console.log("Fui_uploadFormData uploadFile onreadystatechange e.type", e.type);
-            console.log("Fui_uploadFormData uploadFile onreadystatechange", xhr.readyState, xhr.response);
-
-            lastLastState = lastState;
-            lastState = xhr.readyState;
-
-            if (xhr.readyState === 4) {
-                if (xhr.response !== "") {
-                    //there is th answer
-                    resolve(JsonParseResponse(xhr));
-                } else {
-                    //error unexpected
-                    console.log("Fui_uploadFormData EMPTY status", xhr.status);
-                    console.log("Fui_uploadFormData EMPTY readyState", xhr.readyState);
-                    console.log("Fui_uploadFormData EMPTY upload", xhr.upload);
-                    //console.log("Fui_uploadFormData EMPTY abort", xhr.abort);
-                    //const jumped = lastLastState - lastLastState !== 1;
-                    resolve(ABORTED_ERROR_RESPONSE);
-
-                }
-            } else {
-                console.log("Fui_uploadFormData FuiUpload NOT YET" + xhr.readyState);
-            }
-        };
-        // open request
-        xhr.open(finalMethod, endpoint, true);
-
-        //add header to request
-        addHeaders(xhr, headers);
-        //start uploading
-        xhr.send(data);
-    });
-
-};
-
-/**
- * 
- * @param file the extended file to be uploaded
- * @param url the endpoint
- * @param method the method for uploading
- * @param headers headers for request
- * @returns 
- */
-export const uploadExtFile = async (
-    extFile: ExtFile,
-    url: string,
-    method?: Method,
-    headers?: Record<string, string>,
-    uploadLabel?: string,
-): Promise<ExtFile> => {
-    return new Promise(async (resolve, reject) => {
-        try {
-            const uploader: XMLHttpRequest | undefined = extFile.xhr;
-
-            if (!uploader) {
-                resolve(NO_XHR_PROVIDED_ERROR(extFile));
-                return;
-            }
-
-            const localMethod: Method = method || "POST";
-            const fileToUpload: File = extFile.file as File;
-
-            const formData = new FormData();
-
-            formData.append(uploadLabel || "file", fileToUpload);
-
-            // add extra data to upload
-            const finalExtraData: Record<string, any> =
-                { otherValue: "other valueee haaaa", param2: { tecnica: "KIKOHUUUU", friend: "Chaos", age: 25 }, ...extFile.extraUploadData };
-
-            addExtraDataUpload(formData, finalExtraData);
-            console.log("FORMDATA", formData);
-
-            let responseFui: ServerResponse;
-            responseFui = await uploadFormData(
-                uploader,
-                localMethod,
-                url,
-                formData,
-                headers || {});
-
-            if (responseFui.success) {
-                // status is true
-                resolve(makeSuccessUploadResponse(extFile, responseFui));
-            } else {
-                // status is false
-                resolve(makeErrorUploadResponse(extFile, responseFui));
-            }
-        } catch (error) {
-            // on error
-            console.log("uploadPromiseXHR uploadPromiseXHR ERROR", error);
-            resolve(
-                makeErrorUploadResponse(extFile, UNEXPECTED_ERROR_RESPONSE)
-            );
-        }
-    });
-};
-
-
-
-
-export function uploadFile(
-    file: File,
-    url: string,
-    method?: Method,
-    label?: string,
-    headers?: Record<string, string>
-): Promise<ServerResponse> {
-    return new Promise(async (resolve, reject) => {
-
-
-        //start uploading
-        const formData = new FormData();
-
-        formData.append(label || "file", file);
-
-        try {
-            const serverResponse: ServerResponse = await uploadFormData(new XMLHttpRequest(), method, url, formData, headers);
-            resolve(serverResponse);
-        } catch (error) {
-            // on error
-            console.log("uploadPromiseXHR uploadPromiseXHR ERROR", error);
-            resolve(UNEXPECTED_ERROR_RESPONSE);
-        }
-    });
-}
-
-
-
-
-
-
-
-/**
- * @deprecated
- * Uploads one formData object to a given endpoint in a promisified way
- * @param xhr XMLHTTPrequest object
- * @param method method for uploading
- * @param endpoint endpoint to upload the file
- * @param data FromData object to perform multipart form data
- * @param headers the set of headers
- * @returns a dui server response that consists on {success, payload, message}
- */
-export const FuiUpload = (
-    xhr: XMLHttpRequest,
-    method: Method,
-    endpoint: string,
-    data: FormData,
-    headers: Record<string, string>
-) => {
-    return new Promise<ServerResponse>((resolve, reject) => {
-        console.log("FuiUpload params", xhr, method, endpoint, data, headers);
-
-        xhr.upload.onload = () => {
-            console.log("FuiUpload onLoad", xhr.readyState, xhr.response);
-        };
-
-        xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);
-        xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE);
-
-        // listen for `progress` event
-        //currently listening on FileMosaic component hook
-
-        xhr.onreadystatechange = async (e) => {
-            //console.log("Finished", xhr);
-            console.log("FuiUpload onreadystatechange", xhr.readyState, xhr.response, xhr);
-
-            if (xhr.readyState === 4) {
-                if (xhr.response !== "") {
-                    //there is th answer
-                    resolve(JsonParseResponse(xhr));
-                } else {
-                    //error unexpected
-                    resolve(UNEXPECTED_ERROR_RESPONSE);
-                }
-            } else {
-                console.log("FuiUpload NOT YET" + xhr.readyState);
-            }
-        };
-        // open request
-        xhr.open(method, endpoint, true);
-        const headerKeys: string[] = Object.keys(headers);
-        //const headerValues: string[] = Object.values(headers);
-        for (let i = 0; i < headerKeys.length; i++) {
-            console.log("FuiUpload  headers", headerKeys[i], headers[headerKeys[i]]);
-            xhr.setRequestHeader(
-                headerKeys[i],
-                headers[headerKeys[i]]
-            );
-        }
-        //start uploading
-        xhr.send(data);
-    });
-
-};
-
-
diff --git a/src/files-ui/core/upload/utils.upload.ts b/src/files-ui/core/upload/utils.upload.ts
deleted file mode 100644
index 727caa94639d86df6f81e4354cad186f9c788b8b..0000000000000000000000000000000000000000
--- a/src/files-ui/core/upload/utils.upload.ts
+++ /dev/null
@@ -1,171 +0,0 @@
-
-import { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from "../types"
-
-export const unexpectedErrorUploadResult = (extFile: ExtFile): ExtFile => {
-    return {
-        ...extFile,
-        uploadMessage: "Unexpected error",
-        uploadStatus: "error",
-        serverResponse: {
-            success: false,
-            message: "Error on upload: unexpected error ",
-            payload: {},
-        }
-    }
-}
-export const unableToUploadResult = (
-    extFile: ExtFile
-): UploadResponse => {
-    return {
-        id: extFile.id,
-        uploadedFile: {
-            ...extFile,
-            uploadMessage: "Unable to upload. XHR was not provided",
-            uploadStatus: "error"
-        },
-        serverResponse: {
-            success: false,
-            message: "Error on upload: Unable to upload. XHR was not provided ",
-            payload: {},
-        }
-    }
-}
-export const completeUploadResult = (
-    extFile: ExtFile,
-    serverResponse: ServerResponse,
-    uploadStatusresult: UPLOADSTATUS
-): UploadResponse => {
-    return {
-        id: extFile.id,
-        uploadedFile: {
-            ...extFile,
-            uploadMessage: serverResponse.message,
-            uploadStatus: uploadStatusresult
-        },
-        serverResponse: serverResponse
-    }
-}
-
-/**
- * Initializes the xhr attribute for performing uploads
- * @param extFileList the list of extended files
- * @returns the array of extFiles with the xhr attribute initialized
- */
-export const toUploadableExtFileList = (
-    extFileList: ExtFile[] | ExtFileInstance[]
-): ExtFile[] => {
-    if (!extFileList) return [];
-    return extFileList.map(extFile => {
-        return { ...extFile, xhr: new XMLHttpRequest() }
-    });
-}
-
-/**
- * Updates the uploadStatus of the given extFile 
- * from "preparing" to "uploading"
- * @param extFile the extended file
- * @returns the extended file with uploadStatus updated to "uploading"
- */
-export const instantPreparingToUploadOne = (
-    extFile: ExtFileInstance | ExtFile
-): ExtFileInstance | ExtFile => {
-    if (extFile.uploadStatus === "preparing") {
-        //for ExtFile instance
-        extFile.uploadStatus = "uploading";
-        //for ExtFile type
-        return {
-            ...extFile,
-            uploadStatus: "uploading",
-        };
-    }
-    return extFile;
-};
-
-/**
- * 
- * @param extFile the extended file
- * @returns 
- */
-export const preparingToUploadOne = (
-    extFile: ExtFileInstance | ExtFile
-): Promise<ExtFileInstance | ExtFile> => {
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            if (extFile.uploadStatus === "preparing") {
-                //for ExtFile instance
-                extFile.uploadStatus = "uploading";
-                //for ExtFile type
-                resolve({
-                    ...extFile,
-                    uploadStatus: "uploading",
-                });
-            } else
-                resolve(extFile);
-        }, 1500);
-    });
-};
-/**
- * Sleeps for 1200 miliseconds for showing a better transition
- * on uploading
- * @param time the time to sleep in miliseconds
- * @returns true is everything is ok
- */
-export const sleepTransition = (time = 1500
-): Promise<boolean> => {
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            resolve(true);
-        }, time);
-    });
-}
-
-export const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {
-    console.log(
-        "sanitizeArrExtFile",
-        arrExtFile.map((F) => { return { status: F.uploadStatus, message: F.uploadMessage } })
-    );
-    return arrExtFile.filter((extFileInstance: ExtFileInstance) =>
-        !extFileInstance.extraData?.deleted)
-
-        .map((extFileInstance: ExtFileInstance) => {
-            if (extFileInstance.uploadStatus === "aborted"
-                && !extFileInstance.uploadMessage) {
-                extFileInstance.uploadMessage = "Upload aborted by user";
-                //extFileInstance.uploadStatus = "error";
-            }
-
-            return ExtFileInstance.toExtFile(extFileInstance) as ExtFile
-        });
-}
-/**
- * 
- * @param extFileInstance 
- * @param extFileobj 
- */
-export const setNextUploadStatus = (
-    extFileInstance: ExtFileInstance,
-    extFileobj: ExtFile) => {
-
-    const prevStatus: UPLOADSTATUS | undefined = extFileInstance.uploadStatus;
-    const nextStstaus: UPLOADSTATUS | undefined = extFileobj.uploadStatus;
-
-    console.log("setNextUploadStatus", prevStatus, nextStstaus);
-    console.log("setNextUploadStatus", extFileInstance.uploadMessage, extFileobj.uploadMessage);
-    if (
-        prevStatus === "preparing" &&
-        ["aborted", undefined].includes(nextStstaus)
-    ) {
-        extFileInstance.uploadStatus = undefined;
-        extFileInstance.uploadMessage = extFileobj.uploadMessage;
-
-    } else if (
-        prevStatus === "uploading" &&
-        ["aborted", undefined].includes(nextStstaus)
-    ) {
-        extFileInstance.uploadStatus = "aborted";
-        extFileInstance.uploadMessage = extFileobj.uploadMessage;
-
-    }
-
-}
-
diff --git a/src/files-ui/core/utils/IdGenerator.ts b/src/files-ui/core/utils/IdGenerator.ts
deleted file mode 100644
index e978079254babf0b4669e77ca1611a16090eb5fc..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/IdGenerator.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * An id generator for FileItems
- */
- export abstract class FileIdGenerator {
-    static nextId = 0;
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    static getNextId(): number {
-        FileIdGenerator.nextId++;
-        return FileIdGenerator.nextId;
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/addClassName.ts b/src/files-ui/core/utils/addClassName.ts
deleted file mode 100644
index 972878e5a005f6cb2a03aa78b3a592673aca3aaf..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/addClassName.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * If className is given, adds class name in string format to a base class name
- * @param baseClassName the base class name
- * @param className the class name to be added
- * @returns a new class name obtained by adding the second paramater
- */
-export const addClassName = (
-    baseClassName: string,
-    className: string | undefined
-): string => {
-    if (className)
-        return `${baseClassName} ${className}`;
-    return baseClassName;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/dropzone.utils.ts b/src/files-ui/core/utils/dropzone.utils.ts
deleted file mode 100644
index 6ee91c87e0ddb543e61de433f58b2bd59bfa5fae..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/dropzone.utils.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export const isValidateActive = (
-    accept: string | undefined,
-    maxFileSize: number | undefined,
-    maxFiles: number | undefined,
-    validator: Function | undefined
-  ): boolean => {
-    return (
-      (accept !== undefined && accept !== null) ||
-      (maxFileSize !== undefined && maxFileSize !== null) ||
-      (maxFiles !== undefined && maxFiles !== null) ||
-      (validator !== undefined && validator !== null)
-    );
-  };
-  
\ No newline at end of file
diff --git a/src/files-ui/core/utils/fakeupload.utils.ts b/src/files-ui/core/utils/fakeupload.utils.ts
deleted file mode 100644
index 13468845d5df878277419789d543d55149003639..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fakeupload.utils.ts
+++ /dev/null
@@ -1,194 +0,0 @@
-
-import { DropzoneLocalizerSelector } from "../localization";
-import { ExtFile, ExtFileInstance, UploadResponse } from "../types";
-
-/**
- * Updates a extFile and sets its uploadStatus to "uploading"
- * @param extFile the extended file object
- * @returns the extended file with the uploadStatus attribute modified
- */
-export const setPrepToUploading = (
-    extFile: ExtFile
-): Promise<ExtFile> => {
-    console.log("prepToUpload One", extFile);
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            resolve({
-                ...extFile,
-                uploadStatus: "uploading",
-            });
-        }, 1500);
-
-    });
-};
-/**
- * Updates a extFile and sets its uploadStatus to "success"
- * @param extFile the extended file object
- * @returns the extended file with the uploadStatus attribute modified
- */
-export const uploadOne = (
-    extFile: ExtFile
-): Promise<ExtFile> => {
-    console.log("upload One", extFile);
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            resolve({
-                ...extFile,
-                uploadStatus: "success",
-            });
-        }, 2000);
-    });
-};
-/**
- * Awaits the given time before start uploading
- * @param preparingTime the time in miliseconds, by default it will wait 1.5 secs
- * @returns an empty object
- */
-export const sleepPreparing = (
-    preparingTime: number = 5000
-): Promise<void> => {
-    console.log("uploadfiles preparingTime One", preparingTime);
-    return new Promise((resolve, reject) => {
-
-        setTimeout(() => {
-            resolve();
-        }, preparingTime);
-
-    });
-}
-
-/**
- * 
- * @param extFileInstance 
- * @returns 
- */
-export const prepToUploadOne = (
-    extFileInstance: ExtFileInstance | ExtFile
-): Promise<ExtFileInstance | ExtFile> => {
-    //console.log("prepToUpload One", extFileInstance);
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            extFileInstance.uploadStatus = "uploading";
-            resolve({
-                ...extFileInstance,
-                uploadStatus: "uploading",
-            });
-        }, 1500);
-
-    });
-};
-
-/**
- * 
- * @param extFileInstance 
- * @returns 
- */
-export const uploadOneExtFile = (
-    extFileInstance: ExtFileInstance
-): Promise<Object> => {
-    //console.log("upload One", extFileInstance);
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            extFileInstance.uploadStatus = "success";
-            resolve({
-                ...extFileInstance,
-                uploadStatus: "success",
-            });
-        }, 2000);
-    });
-};
-
-
-/**
- * 
- * @param extFile the extFile to upload 
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export const fakeFuiUpload = (
-    extFileInstance: ExtFileInstance,
-    DropzoneLocalizer = DropzoneLocalizerSelector("EN-en")
-): Promise<ExtFile> => {
-    
-    const extFile:ExtFile = extFileInstance.toExtFile();
-    
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            const randomNumber: number = Math.floor(Math.random() * 10);
-            if (randomNumber % 2 === 0) {
-                const success = true;
-                const message = DropzoneLocalizer.fakeuploadsuccess as string;
-                const payload = { url: "" };
-                resolve({
-                    ...extFile,
-                    serverResponse: { success, message, payload },
-                    uploadStatus: "success",
-                    uploadMessage: message,
-
-                });
-            } else {
-                const success = false;
-                const message = DropzoneLocalizer.fakeUploadError as string;
-                const payload = {};
-                resolve({
-                    ...extFile,
-                    serverResponse: { success, message, payload },
-                    uploadStatus: "error",
-                    uploadMessage: message,
-                });
-            }
-        }, 1700);
-    });
-};
-
-
-/**
- * 
- * @param extFile the extFile to upload 
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export const fakeFuiUploadExtFile = (
-    extFileInstance: ExtFileInstance,
-    DropzoneLocalizer = DropzoneLocalizerSelector("EN-en")
-): Promise<UploadResponse> => {
-    
-    const extFile:ExtFile = extFileInstance.toExtFile();
-    
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            const randomNumber: number = Math.floor(Math.random() * 10);
-            if (randomNumber % 2 === 0) {
-                const status = true;
-                const message = DropzoneLocalizer.fakeuploadsuccess as string;
-                const payload = { url: "" };
-
-                resolve({
-                    id: extFile.id,
-                    serverResponse: { status, message, payload },
-                    uploadedFile: {
-                        ...extFile,
-                        uploadStatus: "success",
-                        uploadMessage: message,
-                        progress: 100
-                    }
-
-                });
-            } else {
-                const status = false;
-                const message = DropzoneLocalizer.fakeUploadError as string;
-                const payload = {};
-                resolve({
-                    id: extFile.id,
-                    serverResponse: { status, message, payload },
-                    uploadedFile: {
-                        ...extFile,
-                        uploadStatus: "error",
-                        uploadMessage: message,
-                        progress: 60
-                    },
-                });
-            }
-        }, 1700);
-    });
-};
diff --git a/src/files-ui/core/utils/fileListParser.ts b/src/files-ui/core/utils/fileListParser.ts
deleted file mode 100644
index 46f4b4ad08d99d050434527d3eb14cc480e3e7a9..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fileListParser.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { ExtFile, ExtFileInstance } from "../types";
-import { FileIdGenerator } from "./IdGenerator";
-
-/**
- * Converts the fileList into an array of separated ExtFile objects
- * @param fileList the FileList object given by input(event.target.files) or drop operation (event.dataTransfer)
- * @returns an array of ExtFile objects
- */
-export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {
-    let extFileArray: ExtFile[] = [];
-    for (let i = 0, f: File; (f = fileList[i]); i++) {
-        extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });
-    }
-    return extFileArray;
-};
-
-/**
- * Converts the fileList into an array of separated ExtFile instances
- * @param fileList the FileList object given by input (event.target.files) or drop operation (event.dataTransfer)
- * @returns an array of ExtFile instances
- */
-export const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {
-    let extFileArray: ExtFileInstance[] = [];
-    for (let i = 0, f: File; (f = fileList[i]); i++) {
-        extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type  }));
-    }
-    return extFileArray;
-};
\ No newline at end of file
diff --git a/src/files-ui/core/utils/fileSizeFormatter.ts b/src/files-ui/core/utils/fileSizeFormatter.ts
deleted file mode 100644
index ac23dff950338194e014311e65837ff54da70629..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/fileSizeFormatter.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Gives a XX.XX format in Bytes KB, MB, GB or TB
- * @param fileSize file size to give format in Bytes
- */
- export const fileSizeFormater = (fileSize?: number | false): string| undefined => {
-    let result = "";
-    if (!fileSize) {
-        return undefined;
-    }
-    if (fileSize < 1024) {
-        result = fileSize + " Bytes"
-    } else {
-        //KB
-        if (fileSize < 1024 * 1024) {
-            result = (fileSize / 1024).toFixed(2) + " KB";
-        } else if (fileSize < 1024 * 1024 * 1024) {
-            result = ((fileSize / 1024) / 1024).toFixed(2) + " MB";
-        } else if (fileSize < 1024 * 1024 * 1024 * 1024) {
-            result = (((fileSize / 1024) / 1024) / 1024).toFixed(2) + " GB";
-        } else {
-            result = ((((fileSize / 1024) / 1024) / 1024) / 1024).toFixed(2) + " TB";
-        }
-    }
-    return result;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/getExt.ts b/src/files-ui/core/utils/getExt.ts
deleted file mode 100644
index feb5f4839a0c5a24b0a62097bc0069a068ce24f4..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/getExt.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Looks for the first file extension
- * @param fileName file name
- * @returns the file name extension
- */
- export const getExt = (fileName: string): string => {
-    const re = /(?:\.([^.]+))?$/;
-    const result = re.exec(fileName);
-    if (result) {
-        return result[1];
-    } else {
-        return "";
-    }
-
-};
\ No newline at end of file
diff --git a/src/files-ui/core/utils/getLocalFileItemData.ts b/src/files-ui/core/utils/getLocalFileItemData.ts
deleted file mode 100644
index 0e8bd5630edda956c75f88eac5cba18f25349685..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/getLocalFileItemData.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 
- * @param file 
- * @param name 
- * @param type 
- * @param size 
- * @returns the file name, type and size
- */
-export const getLocalFileItemData = (
-    file: File | undefined,
-    name: string | undefined,
-    type: string | undefined,
-    size: number | undefined
-): [string, string | undefined, number | undefined] => {
-
-    let localFileName: string = "";
-    let localFileType: string | undefined = undefined;
-    let localFileSize: number | undefined = undefined;
-
-    // if file object is valid, obtain metadata from it
-    // otherwise try to get file data from individual props in string format
-    if (file && typeof file.name === "string") {
-        localFileName = file.name;
-        localFileType = file.type;
-        localFileSize = file.size;
-    } else if (name && typeof name === "string") {
-        localFileName = name;
-        localFileType = type;
-        localFileSize = size;
-    }
-    return [localFileName, localFileType, localFileSize]
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/index.ts b/src/files-ui/core/utils/index.ts
deleted file mode 100644
index a241cf09e7a4973eae39a8a7d704f4f5e1e209e3..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/index.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { fileListToExtFileArray, fileListToExtFileInstanceArray } from "./fileListParser";
-
-import { fileSizeFormater } from "./fileSizeFormatter";
-
-import { getExt } from "./getExt";
-
-import { FileIdGenerator } from "./IdGenerator";
-
-export {
-    FileIdGenerator,
-    fileListToExtFileArray,
-    fileListToExtFileInstanceArray,
-    fileSizeFormater,
-    getExt,
-};
-
-export { handleDragUtil, handleDropUtil } from "./dragdrop.utils";
-
-export { handleClickInput, handleClickUtil } from "./click.utils";
-
-export { isValidateActive } from "./dropzone.utils";
-
-export { shrinkWord } from "./shrinkWord";
-
-export {
-    fakeFuiUpload,
-    prepToUploadOne,
-    setPrepToUploading,
-    sleepPreparing,
-    uploadOne,
-    uploadOneExtFile
-} from "./fakeupload.utils";
-
-export { getRandomInt } from "./randomInt";
-
-export { cleanInput } from "./input.utils";
-
-
-export { addClassName } from "./addClassName";
-
-export { isUploadAbleExtFile } from "./isUploadAbleExtFile";
-
-export { getLocalFileItemData } from "./getLocalFileItemData"
\ No newline at end of file
diff --git a/src/files-ui/core/utils/input.utils.ts b/src/files-ui/core/utils/input.utils.ts
deleted file mode 100644
index 0772c706873c89c3f458abcd4a3cf7ebceffb1c7..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/input.utils.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Cleans the input.value attribute
- * @param inputElement 
- */
-export const cleanInput = (inputElement?: HTMLInputElement | null) => {
-    if (!inputElement) return;
-    inputElement.value = "";
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/isUploadAbleExtFile.ts b/src/files-ui/core/utils/isUploadAbleExtFile.ts
deleted file mode 100644
index 112a345b28e1457e050097db68921163ddec2c4a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/isUploadAbleExtFile.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ExtFile } from "../types";
-
-export const isUploadAbleExtFile = (extFile: ExtFile, validateFilesFlag: boolean) => {
-    return (!validateFilesFlag || (validateFilesFlag && extFile.valid)) && extFile.uploadStatus !== "success";
-}
\ No newline at end of file
diff --git a/src/files-ui/core/utils/randomInt.ts b/src/files-ui/core/utils/randomInt.ts
deleted file mode 100644
index 5db2ef9cb5bd0faaeae69aabad9227dc70cc4101..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/randomInt.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Random integer between min (included) and max (excluded)
- * @param min the min number
- * @param max the max number
- * @returns a random number between min (included) and max (excluded)
- */
-export function getRandomInt(min: number = 0, max: number = 0): number {
-    return Math.floor(Math.random() * (max - min)) + min;
-}
diff --git a/src/files-ui/core/utils/shrinkWord.ts b/src/files-ui/core/utils/shrinkWord.ts
deleted file mode 100644
index 7b1ddf234dd35869afa60002d1b34adbfcd261f5..0000000000000000000000000000000000000000
--- a/src/files-ui/core/utils/shrinkWord.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * The max size of the word in characters
- */
-export const DEFAULT_MAX_SIZE_WORD = 30;
-/**
- * 
- * @param word the word to be shrinked
- * @returns the shrinked word
- */
-export const shrinkWord = (word = "", card = false): string => {
-    let newWord = word;
-    if (card) {
-        if (word.length >= 20) {
-            newWord = word.slice(0, 10) + "..." + word.slice(-7);
-        }
-    } else if (word.length >= DEFAULT_MAX_SIZE_WORD) {
-        newWord = word.slice(0, 13) + "..." + word.slice(-8);
-    }
-    return newWord;
-};
\ No newline at end of file
diff --git a/src/files-ui/core/validation/fakeerros.ts b/src/files-ui/core/validation/fakeerros.ts
deleted file mode 100644
index 326ec5f5744ade6952b47c5e0fb0f7c05690dfda..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/fakeerros.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * list of dumy errors in english
- */
-export const listOfErrors: string[] =
-    [
-        "File is too big. Max file size allowed is 80mb.",
-        "File's type is not allowed.",
-        "Max amount of files (28) has been reached."
-    ];
\ No newline at end of file
diff --git a/src/files-ui/core/validation/fileValidator.d.ts b/src/files-ui/core/validation/fileValidator.d.ts
index 382f317363cbd15bc5172c6d2fa4dded54ecbef4..ca0b54e13dadd8304b585ddb000b5fbe8955b17d 100644
--- a/src/files-ui/core/validation/fileValidator.d.ts
+++ b/src/files-ui/core/validation/fileValidator.d.ts
@@ -10,7 +10,7 @@ import { ValidateFileResponse, FileValidatorProps } from "../types/validation";
  * @param localization
  * @returns
  */
-export declare const fileListvalidator: (preValidatedFiles: FileList, remainingValids: number, localValidator: FileValidatorProps, validator: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
+export declare const fileListvalidator: (preValidatedFiles: FileList, remainingValids: number, localValidator: FileValidatorProps, validator?: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
 /**
  * For each ExtFile sets the valid prop of ExtFile to "true" or "false"
  * depending on the result of the individual validation.
@@ -23,7 +23,7 @@ export declare const fileListvalidator: (preValidatedFiles: FileList, remainingV
  * @param localization
  * @returns a new ExtFile list with each item validated
  */
-export declare const validateExtFileList: (extFileList: ExtFile[], remainingValids: number, localValidatorProps: FileValidatorProps, validator: (f: File) => ValidateFileResponse, maxFiles: number | undefined, localization?: Localization) => ExtFile[];
+export declare const validateExtFileList: (extFileList: ExtFile[], remainingValids: number, localValidatorProps: FileValidatorProps, validator?: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
 /**
  *
  * @param extFile
diff --git a/src/files-ui/core/validation/fileValidator.ts b/src/files-ui/core/validation/fileValidator.ts
deleted file mode 100644
index 23188d47f9ee06cde82b97de9f2ebded0a18b4f0..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/fileValidator.ts
+++ /dev/null
@@ -1,205 +0,0 @@
-import { ValidateErrorLocalizerSelector } from "../localization";
-import { ExtFile, FunctionLabel, Localization, LocalLabels } from "../types";
-import { ValidateFileResponse, FileValidatorProps } from "../types/validation";
-import { FileIdGenerator } from "../utils/IdGenerator";
-import { separateAccept } from "./separateAccept";
-import { validateAccept } from "./validateAccept";
-
-/**
- * 
- * @param preValidatedFiles FileList 
- * @param remainingValids The number of remaining valid files
- * @param localValidator 
- * @param validator 
- * @param maxFiles 
- * @param localization 
- * @returns 
- */
-export const fileListvalidator = (
-    preValidatedFiles: FileList,
-    remainingValids: number,
-    localValidator: FileValidatorProps,
-    validator: ((f: File) => ValidateFileResponse) | undefined,
-    maxFiles?: number,
-    localization?: Localization
-): ExtFile[] => {
-    const output: ExtFile[] = [];
-    //set a countdown when there is a limit on files
-    let countdown: number = remainingValids;
-    // get localized labels
-    const ValidationErrorLocalizer: LocalLabels =
-        ValidateErrorLocalizerSelector(localization);
-    //Iterate the File list
-    for (let i = 0, f: File; (f = preValidatedFiles[i]); i++) {
-        // Validate the file list with
-        let validatedFile: ExtFile = validateFile(f, validator, localValidator, ValidationErrorLocalizer);
-        if (validatedFile.valid) {
-            //not valid due to file count limit
-            const valid = countdown > 0;
-            validatedFile.valid = valid;
-            //add error about amount
-            if (!valid) {
-                const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;
-                validatedFile.errors = validatedFile.errors
-                    ? [...validatedFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]
-                    : [maxFileErrorMessenger(maxFiles || Infinity)];
-            }
-            countdown--;
-        }
-        output.push(validatedFile);
-    }
-    return output;
-};
-
-
-/**
- * For each ExtFile sets the valid prop of ExtFile to "true" or "false"
- * depending on the result of the individual validation. 
- * It also add the list of errors.
- * @param extFileList 
- * @param remainingValids 
- * @param localValidatorProps 
- * @param validator 
- * @param maxFiles 
- * @param localization 
- * @returns a new ExtFile list with each item validated
- */
-export const validateExtFileList = (
-    extFileList: ExtFile[],
-    remainingValids: number,
-    localValidatorProps: FileValidatorProps,
-    validator: ((f: File) => ValidateFileResponse) | undefined,
-    maxFiles: number | undefined,
-    localization?: Localization
-): ExtFile[] => {
-    console.log("remaning valids", remainingValids);
-    let fileListResult: ExtFile[] = [];
-    if (!remainingValids) return fileListResult;
-    let remaining: number = remainingValids;
-    const ValidationErrorLocalizer: LocalLabels =
-        ValidateErrorLocalizerSelector(localization);
-    const maxFileErrorMessenger: FunctionLabel = ValidationErrorLocalizer.maxFileCount as FunctionLabel;
-    for (let i = 0; i < extFileList.length; i++) {
-        let currentExtFile: ExtFile = extFileList[i];
-
-        currentExtFile = validateExtFile(currentExtFile, validator, localValidatorProps, ValidationErrorLocalizer);
-        //console.log("validateExtFileList after validation", currentExtFile);
-
-        if (currentExtFile.valid) {
-            //not valid due to file count limit
-            const valid = remaining > 0;
-            currentExtFile.valid = valid;
-            //add error about amount
-            if (!valid) {
-                currentExtFile.errors = currentExtFile.errors
-                    ? [...currentExtFile.errors, maxFileErrorMessenger(maxFiles || Infinity)]
-                    : [maxFileErrorMessenger(maxFiles || Infinity)];
-            }
-            remaining--;
-        }
-        fileListResult.push(currentExtFile);
-
-    }
-    return fileListResult;
-}
-
-/**
- * 
- * @param extFile 
- * @param validator 
- * @param validatorProps 
- * @param localErrors 
- * @returns 
- */
-export const validateExtFile = (
-    extFile: ExtFile,
-    validator: undefined | ((f: File) => ValidateFileResponse),
-    validatorProps: FileValidatorProps,
-    localErrors: LocalLabels
-): ExtFile => {
-    let extFileResult: ExtFile = { ...extFile };
-    let errors: string[] = [];
-    //TO-DO: Add extra validation for individual props even if FIle object was not given
-    if (!extFile.file) {
-        return { ...extFileResult }
-    }
-
-    //TO-DO: add "overrideValidation" prop to ignore the rest of validators like accept and maxFileSize
-    if (validator) {
-        const resultCustomValidation: ValidateFileResponse = validator(extFileResult.file as File);
-        const { errors: errorsResult } = resultCustomValidation;
-        if (errorsResult)
-            errors.push(...errorsResult)
-        //return { ...extFileResult, ...validator(extFileResult.file as File) };
-    }
-
-    const { maxFileSize, accept } = validatorProps;
-    console.log("Validation", maxFileSize, accept);
-    //check file size
-    const file: File = extFile.file;
-
-
-    if (maxFileSize && file.size > maxFileSize) {
-        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;
-
-        console.log("Size error", maxFileSizeErrorMessenger(maxFileSize));
-
-        errors.push(maxFileSizeErrorMessenger(maxFileSize));
-    }
-    //check file type
-    if (accept && !validateAccept(separateAccept(accept), file)) {
-        errors.push(localErrors.acceptError as string);
-    }
-    const isValid: boolean = errors.length === 0;
-    extFileResult = { ...extFileResult, valid: isValid, errors: !isValid ? errors : undefined };
-    console.log("validation extFileResult", extFileResult);
-    return extFileResult;
-
-}
-
-
-
-/**
- * Function that validate whether a file is valid, or not
- * according to the Filevalidator properties
- * @param file a File object to be evaluated
- * @param validatorProps the validator object 
- * @returns a FileValidated object
- */
-export const validateFile = (
-    file: File,
-    validator: undefined | ((f: File) => ValidateFileResponse),
-    validatorProps: FileValidatorProps,
-    localErrors: LocalLabels
-): ExtFile => {
-
-    const idGenerated = FileIdGenerator.getNextId();
-    let errors: string[] = [];
-    if (validator) {
-        return { id: idGenerated, file, ...validator(file) };
-    }
-
-    const { maxFileSize, accept } = validatorProps;
-
-    //check file size
-    if (maxFileSize && file.size > maxFileSize) {
-        const maxFileSizeErrorMessenger: FunctionLabel = localErrors.maxSizeError as FunctionLabel;
-        errors.push(maxFileSizeErrorMessenger(maxFileSize));
-    }
-
-    //check file type
-    // const allowedTypes = accept.filter((type) => (file.type === type))
-    if (accept && !validateAccept(separateAccept(accept), file)) {
-        errors.push(localErrors.acceptError as string);
-    }
-
-
-    const fileResult: ExtFile = {
-        id: idGenerated,
-        file: file,
-        valid: errors.length === 0,
-        errors: errors
-    };
-    // logic here
-    return fileResult;
-};
\ No newline at end of file
diff --git a/src/files-ui/core/validation/index.ts b/src/files-ui/core/validation/index.ts
deleted file mode 100644
index 75bc608611434cc5f092066afa4bdbe4b9699f8a..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export {
-    validateExtFileList,
-    fileListvalidator,
-    validateExtFile,
-    validateFile
-} from "./fileValidator";
-
-
-export { separateAccept } from "./separateAccept";
-
-export { validateAccept } from "./validateAccept";
-
-export {getRandomUploadStatus} from "./randomStatus";
-
-export {listOfErrors} from "./fakeerros";
\ No newline at end of file
diff --git a/src/files-ui/core/validation/randomStatus.ts b/src/files-ui/core/validation/randomStatus.ts
deleted file mode 100644
index b616470d03528e5941bed21f1cc079e8d0b6e87c..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/randomStatus.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { UPLOADSTATUS } from "../types";
-import { getRandomInt } from "../utils/randomInt";
-
-/**
- * Generates a random number betwen 0 and 3
- * where
- * 0 => error
- * 1 => uploading
- * 2 => success
- * 3 => undefined
- * @returns a random upload status or undefined
- */
- export const getRandomUploadStatus = (): UPLOADSTATUS | undefined => {
-    const result: number = getRandomInt(0, 4);
-    switch (result) {
-        case 0: return "error";
-        case 1: return "uploading";
-        case 2: return "success";
-        default:
-            return undefined;
-    }
-}
\ No newline at end of file
diff --git a/src/files-ui/core/validation/separateAccept.ts b/src/files-ui/core/validation/separateAccept.ts
deleted file mode 100644
index db5d5876292badb5dd5a6281615bc4a1678f4795..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/separateAccept.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Separate the accept string array into an array of strings separated by commas
- * @param accept the string accept array
- * @returns an array of strings in wich every item
- */
-export const separateAccept = (accept: string | undefined): string[] => {
-    if (!accept || accept.length === 0) {
-        return [];
-    }
-    const commaSeparatedAccpet: string[] = accept.split(",").map((acceptItem) => acceptItem.trim());
-    return commaSeparatedAccpet;
-}
\ No newline at end of file
diff --git a/src/files-ui/core/validation/validateAccept.ts b/src/files-ui/core/validation/validateAccept.ts
deleted file mode 100644
index ea423ba90d85e0c7b113b22974110acde0ba1147..0000000000000000000000000000000000000000
--- a/src/files-ui/core/validation/validateAccept.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { getExt } from "../utils/getExt";
-
-/**
- * Checks whether a file is valid or not given an array of file extentions and mime types
- * e.g. accept =  [".doc", ".docx", ".xml", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"]
- * @param accept the array of strings accept items
- * @param file a File object to be evaluated
- * @returns true if the mime type file is included in the accept param
- */
- export const validateAccept = (accept: string[], file: File): boolean => {
-    let valid: boolean = false;
-    const { name, type } = file;
-    //Array(5) [ ".doc", ".docx", ".xml", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ]
-    for (let i = 0; i < accept.length; i++) {
-        const acceptItem: string = accept[i];
-        //check is not empty
-        if (acceptItem.length !== 0) {
-            //check extention
-            if (acceptItem.charAt(0) === ".") {
-                if (acceptItem.includes(getExt(name))) {
-                    return true;
-                }
-            }
-            //check mime
-            // header/tail  => image/png  ;  image/* ; audio
-            if (type && type.length > 0 && acceptItem.includes("/") && type.includes("/")) {
-                let headerMime = acceptItem.split("/")[0];
-                let tailMime = acceptItem.split("/")[1];
-
-                let headerMimeFile = type.split("/")[0];
-                let tailMimeFile = type.split("/")[1];
-
-                if (headerMime === headerMimeFile) {
-                    //    image/*
-                    if (tailMime === "*") {
-                        return true;
-                    } else if (tailMime === tailMimeFile) {
-                        return true;
-                    }
-                }
-            }
-        }
-    }
-    return valid;
-}
\ No newline at end of file
diff --git a/src/files-ui/files-ui-react/utils/click.utils.ts b/src/files-ui/files-ui-react/utils/click.utils.ts
deleted file mode 100644
index a91e6a99917705b1bb7be27e4aa5a97a887af925..0000000000000000000000000000000000000000
--- a/src/files-ui/files-ui-react/utils/click.utils.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Performs stopPropagation and preventDefault functions on an click event instance
- * @param evt click event handler object
- */
-export function
-    handleClickUtil<T extends HTMLDivElement | HTMLButtonElement | HTMLAnchorElement | SVGSVGElement | HTMLInputElement>
-    (
-        evt: React.MouseEvent<T, MouseEvent>
-    ) {
-    evt.preventDefault();
-    evt.stopPropagation();
-}
-/**
- * Click programatically an input element.
- * If the input element is null, nothing will happend
- * @param input the input element target to make a click
- */
-export const handleClickInput = (
-    input: HTMLInputElement | null
-) => {
-    console.log("handleClickInput:", input);
-    if (!input) return;
-    input.click();
-}
\ No newline at end of file
diff --git a/src/files-ui/files-ui-react/utils/dragdrop.utils.ts b/src/files-ui/files-ui-react/utils/dragdrop.utils.ts
deleted file mode 100644
index 9a04abbf7d2f10d496447768ed64c7b553f71d51..0000000000000000000000000000000000000000
--- a/src/files-ui/files-ui-react/utils/dragdrop.utils.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Performs stopPropagation and preventDefault functions on an drop event instance
- * @param evt drag event handler object
- */
-export const handleDropUtil: React.DragEventHandler<HTMLDivElement> = (
-  evt: React.DragEvent<HTMLDivElement>
-) => {
-  evt.stopPropagation();
-  evt.preventDefault();
-};
-/**
- * Performs stopPropagation and preventDefault functions on an drop event instance
- * and also specifies that the drop effect is link
- * @param evt drag event handler object
- */
-export const handleDragUtil: React.DragEventHandler<HTMLDivElement> = (
-  evt: React.DragEvent<HTMLDivElement>
-) => {
-
-  evt.dataTransfer.dropEffect = "link"; handleDropUtil(evt);
-};
\ No newline at end of file
diff --git a/src/files-ui/components/file-mosaic/hooks/getProgress.ts b/src/files-ui/hooks/getProgress.ts
similarity index 100%
rename from src/files-ui/components/file-mosaic/hooks/getProgress.ts
rename to src/files-ui/hooks/getProgress.ts
diff --git a/src/files-ui/hooks/index.ts b/src/files-ui/hooks/index.ts
index 2125e76a07cf23b6ef24b3f94fed4b7e2f0c91f4..ae8382188b095eb26cbec066a76b2ea1c25ece73 100644
--- a/src/files-ui/hooks/index.ts
+++ b/src/files-ui/hooks/index.ts
@@ -1,5 +1,14 @@
-import {useDropzoneValidation} from "./useDropzoneValidation";
-export {useDropzoneValidation};
 
+//Dropzone FileInputButton
+export { useDropzoneClassName } from "./useDropzoneClassName";
+export { useDropzoneFileListUpdater } from "./useDropzoneFileUpdater";
+export { useDropzoneValidation } from "./useDropzoneValidation";
+export { useFakeProgress } from "./useFakeProgress";
+export { useNumberOfValidFiles } from "./useNumberOfValidFiles"
 
-export {useFakeProgress} from "./useFakeProgress";
\ No newline at end of file
+export { useDropLayerClassName } from "./useDropLayerClassName";
+
+//File Mosaic Card
+export { useFileMosaicInitializer } from "./useFileMosaicInitializer";
+export { useIsUploading } from "./useIsUploading";
+export { useProgress } from "./useProgress";
diff --git a/src/files-ui/components/drop-layer/hooks/useDropLayerClassName.ts b/src/files-ui/hooks/useDropLayerClassName.ts
similarity index 95%
rename from src/files-ui/components/drop-layer/hooks/useDropLayerClassName.ts
rename to src/files-ui/hooks/useDropLayerClassName.ts
index 8a8bae7cb6baff870a5f4628b34b92f2c562b0de..f9e29a0b41c9b10f3d7d8b33a0074b1a6213462c 100644
--- a/src/files-ui/components/drop-layer/hooks/useDropLayerClassName.ts
+++ b/src/files-ui/hooks/useDropLayerClassName.ts
@@ -1,6 +1,6 @@
 import { DynamicSheet, DynamiCSS } from "@dynamicss/dynamicss";
 import * as React from "react";
-import { makeDropLayerDynamicStyle } from "../utils/dropLayerDynamicStyle";
+import { makeDropLayerDynamicStyle } from "../DropLayer/utils/dropLayerDynamicStyle";
 
 const BASE_DROP_LAYER_STYLE: string = "files-ui-styles-drop-layer";
 
@@ -12,7 +12,7 @@ const BASE_DROP_LAYER_STYLE: string = "files-ui-styles-drop-layer";
  * @param makeClassName whether to make the classname or not
  * @returns the classname for layer
  */
-const useDropLayerClassName = (
+export const useDropLayerClassName = (
     dropzoneId: string,
     color?: string,
     //isDragging?: boolean,
@@ -86,5 +86,4 @@ const useDropLayerClassName = (
         makeClassName]);
 
     return classNameCreated;
-}
-export default useDropLayerClassName;
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/files-ui/hooks/useDropzoneClassName.ts b/src/files-ui/hooks/useDropzoneClassName.ts
index 3497e41ed57f61ef72e68cbe2346810b6b9574cb..2eadce96e4593d96dfe5dcdb16efff3cef15eb95 100644
--- a/src/files-ui/hooks/useDropzoneClassName.ts
+++ b/src/files-ui/hooks/useDropzoneClassName.ts
@@ -1,3 +1,168 @@
-export const useDropzoneClassName=()=>{
-    
+import { DynamicSheet, DynamicSheetRule, DynamiCSS } from "@dynamicss/dynamicss";
+import * as React from "react";
+import { completeAsureColor } from "../core";
+import { DEFAULT_BORDER_RADIUS } from "../Dropzone/components/dropzone/DropzoneProps";
+
+export function useDropzoneClassName(
+    dropzoneId: string,
+    className: string | undefined,
+    //isDragging: boolean,
+    //header: boolean | undefined = false,
+    //footer: boolean | undefined = false,
+    color: string | undefined,
+    //borderRadius: string | number | undefined,
+    background: string | undefined,
+    minHeight: string | number | undefined
+): [string | undefined, string | undefined, string | undefined, string | undefined] {
+    //console.log("useDropzoneClassName", className, isDragging, header, footer, color, background, minHeight);
+    const finalDropzoneId: string = (color === undefined && background === undefined && minHeight === undefined) ? "default" : dropzoneId.replaceAll(":", "_");
+
+    const baseClassName: string = "fui-dropzone-root fui-dropzone-border";
+
+    const [idStyles, setIdStyles] = React.useState<string>("");
+    const [styleInjected, setStyleInjected] = React.useState<boolean>(false);
+    const [finalClassName, setFinalClassName] = React.useState<string | undefined>(undefined);
+    const [finalClassNameHeader, setFinalClassNameHeader] = React.useState<string | undefined>(undefined);
+    const [finalClassNameFooter, setFinalClassNameFooter] = React.useState<string | undefined>(undefined);
+    const [finalClassNameDisabled, setFinalClassNameDisabled] = React.useState<string | undefined>(undefined);
+
+    //const [offset, setOffset] = React.useState<number>(0);
+
+    const makeClassName = (
+        className: string | undefined,
+        //isDragging: boolean,
+        // offset: number,
+        color: string | undefined,
+        //borderRadius: string | number | undefined,
+        background: string | undefined,
+        minHeight: string | number | undefined
+
+    ) => {
+        let finalClassName: string = baseClassName;
+
+        // better to come back to the custom stylesheet for each dropzone with the unique id
+
+        let styleSheet: DynamicSheet = makeDynamicDropzoneStyleSheet(
+            finalDropzoneId,
+            // offset,
+            //isDragging,
+            color,
+            background,
+            minHeight,
+            //borderRadius
+        );
+        let idStyle: string = "";
+
+
+        if (!styleInjected) {
+            idStyle = DynamiCSS.insertStyleSheet(styleSheet);
+            setIdStyles(idStyle);
+            if (idStyle !== "")
+                setStyleInjected(true);
+        } else {
+            //already a stylesheet associated
+            DynamiCSS.editStyleSheet(idStyles, styleSheet.sheetRules || []);
+        }
+
+        finalClassName += ` files-ui-dropzone-extra-${finalDropzoneId}`;
+
+        if (className) {
+            finalClassName = `${finalClassName} ${className}`;
+        }
+        /* if (isDragging) {
+            finalClassName = `${finalClassName} fui-hide-border`;
+        } */
+
+        setFinalClassName(finalClassName);
+        setFinalClassNameHeader(`files-ui-header-border-rd-${finalDropzoneId}`);
+        setFinalClassNameFooter(`files-ui-footer-border-rd-top-bg-color-${finalDropzoneId}`);
+        setFinalClassNameDisabled(`files-ui-disabled-layer-color-${finalDropzoneId}`);
+    }
+
+    React.useEffect(() => {
+        makeClassName(className, 
+            //isDragging,
+            //offset, 
+            color,
+            // borderRadius, 
+            background, minHeight);
+        // eslint-disable-next-line
+    }, [className, 
+        //isDragging,
+        // offset, 
+        color,
+        //borderRadius, 
+        background, minHeight]);
+
+    return [finalClassName, finalClassNameHeader, finalClassNameFooter, finalClassNameDisabled];
+}
+
+
+
+
+const makeDynamicDropzoneStyleSheet = (
+    dropzoneId: string,
+    // offset: number,
+    //isDragging: boolean,
+    color: string | undefined,
+    background: string | undefined,
+    minHeight: string | number | undefined,
+    // borderRadius: string | number | undefined,
+): DynamicSheet => {
+
+    const rootColorBorderStyle: DynamicSheetRule = {
+        className: `files-ui-dropzone-extra-${dropzoneId}`,
+        rules: {
+            color: completeAsureColor(color),
+            border: `1px dashed ${completeAsureColor(color)}`,
+            borderRadius: DEFAULT_BORDER_RADIUS,
+            background: background,
+            minHeight: typeof minHeight === "number" ? `${minHeight}px` : minHeight,
+        },
+    };
+
+    const rootColorBorderStyleHideBorder: DynamicSheetRule = {
+        className: `files-ui-root-border-hide`,
+        rules: {
+            borderColor: "transparent",
+        },
+    }
+    const headerBorderStyle: DynamicSheetRule = {
+        className: `files-ui-header-border-rd-${dropzoneId}`,
+        rules: {
+            "border-top-left-radius": DEFAULT_BORDER_RADIUS,
+            "border-top-right-radius": DEFAULT_BORDER_RADIUS,
+        },
+    };
+    const footerBorderStyle: DynamicSheetRule = {
+        className: `files-ui-footer-border-rd-top-bg-color-${dropzoneId}`,
+        rules: {
+            "border-bottom-left-radius": DEFAULT_BORDER_RADIUS,
+            "border-bottom-right-radius": DEFAULT_BORDER_RADIUS,
+            background: completeAsureColor(color, 0.129),
+            borderTop: `1px dotted ${completeAsureColor(color)}`
+
+        },
+    };
+    const disabledLayerStyle: DynamicSheetRule = {
+        className: `files-ui-disabled-layer-color-${dropzoneId}`,
+        rules: {
+            borderRadius: DEFAULT_BORDER_RADIUS,
+            background: completeAsureColor(color, 0.38),
+        }
+    }
+    const sheetRules: DynamicSheetRule[] =
+        [
+            rootColorBorderStyle,
+            rootColorBorderStyleHideBorder, 
+            headerBorderStyle, 
+            footerBorderStyle, 
+            disabledLayerStyle
+        ];
+
+
+    return {
+        id: "files-dropzone-ui-style-id-" + dropzoneId,
+        sheetRules: sheetRules
+    }
 }
\ No newline at end of file
diff --git a/src/files-ui/hooks/useDropzoneFileUpdater.ts b/src/files-ui/hooks/useDropzoneFileUpdater.ts
index 78620e8c85f9ba64e558e73fa5ede8ba9b61e7b1..e4549b48c9ff258f9989356691b2071c16352120 100644
--- a/src/files-ui/hooks/useDropzoneFileUpdater.ts
+++ b/src/files-ui/hooks/useDropzoneFileUpdater.ts
@@ -14,7 +14,7 @@ import { ValidateFileResponse, ExtFile, ExtFileInstance, ExtFileManager, FileVal
  * @param isUploading 
  * @returns the local list of Files
  */
-const useDropzoneFileListUpdater = (
+export const useDropzoneFileListUpdater = (
     dropzoneId: number | string | undefined,
     value: ExtFile[],
     isUploading: boolean,
@@ -122,4 +122,3 @@ const useDropzoneFileListUpdater = (
 
     return [localFiles, numberOfValidFiles, setLocalFiles];
 }
-export default useDropzoneFileListUpdater;
\ No newline at end of file
diff --git a/src/files-ui/components/file-mosaic/hooks/useFileMosaicInitializer.ts b/src/files-ui/hooks/useFileMosaicInitializer.ts
similarity index 88%
rename from src/files-ui/components/file-mosaic/hooks/useFileMosaicInitializer.ts
rename to src/files-ui/hooks/useFileMosaicInitializer.ts
index 71f13e3d66074549264293206f640a8997c56e43..3bbd61aa34e48b44651963fa4634d50c4216fb75 100644
--- a/src/files-ui/components/file-mosaic/hooks/useFileMosaicInitializer.ts
+++ b/src/files-ui/hooks/useFileMosaicInitializer.ts
@@ -1,7 +1,6 @@
 import * as React from "react";
-import { getURLFileIco, readAsDataURL } from "../../../core";
-import { getURLFileIcoFromNameAndType } from "../../../core/mime/mime";
-import { IconsSet } from "../../../FilesUiProvider";
+import { getURLFileIco, readAsDataURL, getURLFileIcoFromNameAndType } from "../core";
+import { IconsSet } from "../FilesUiProvider";
 
 /**
  * Initializer hook for FileItemNeo
@@ -13,7 +12,7 @@ import { IconsSet } from "../../../FilesUiProvider";
  * @param progress the current progress given by props
  * @returns an array thta contains the following properties [isImage, isVideo, url, imageSource, localProgress]
  */
-const useFileMosaicInitializer = (
+export const useFileMosaicInitializer = (
     file: File | undefined,
     name: string | undefined,
     type: string | undefined,
@@ -21,7 +20,7 @@ const useFileMosaicInitializer = (
     preview: boolean,
     imageUrl: string | undefined,
     videoUrl: string | undefined,
-    customIcons?:IconsSet,
+    customIcons?: IconsSet,
     xhr?: XMLHttpRequest,
 
 ): [boolean, boolean, boolean, string, string | undefined, File | string | undefined] => {
@@ -42,7 +41,7 @@ const useFileMosaicInitializer = (
         preview: boolean,
         imageUrl: string | undefined,
         videoUrl: string | undefined,
-        customIcons?:IconsSet,
+        customIcons?: IconsSet,
         xhr?: XMLHttpRequest,
         progress?: number
     ) => {
@@ -51,8 +50,8 @@ const useFileMosaicInitializer = (
 
         if (!file && (!name && !type)) return;
 
-        const { url } = file ? getURLFileIco(file,customIcons) :
-            getURLFileIcoFromNameAndType(name, type,customIcons);
+        const { url } = file ? getURLFileIco(file, customIcons) :
+            getURLFileIcoFromNameAndType(name, type, customIcons);
 
         //console.log("init", url);
 
@@ -110,7 +109,7 @@ const useFileMosaicInitializer = (
 
     //////   CLEAN UP
     React.useEffect(() => {
-        init(file, name, type, valid, preview || false, imageUrl, videoUrl,customIcons);
+        init(file, name, type, valid, preview || false, imageUrl, videoUrl, customIcons);
         return () => {
             setImageSource(undefined);
             setIsImage(false);
@@ -118,11 +117,10 @@ const useFileMosaicInitializer = (
             setIsReady(false);
         };
         // eslint-disable-next-line
-    }, [file, name, type, valid, preview, imageUrl, videoUrl,customIcons]);
+    }, [file, name, type, valid, preview, imageUrl, videoUrl, customIcons]);
 
     return [isReady, isImage, isVideo, url, imageSource, videoSource];
 }
-export default useFileMosaicInitializer;
 
 /* export const identifyFileSource = (file: File | undefined, name: string, fileType: string) => {
     if(!file){
diff --git a/src/files-ui/components/file-mosaic/hooks/useIsUploading.ts b/src/files-ui/hooks/useIsUploading.ts
similarity index 95%
rename from src/files-ui/components/file-mosaic/hooks/useIsUploading.ts
rename to src/files-ui/hooks/useIsUploading.ts
index 39e377167da5bfd8b75f526c19d14f80b1aa3bf6..0d14cbdca142f35bf7b54ae72c12fafdee61c1e1 100644
--- a/src/files-ui/components/file-mosaic/hooks/useIsUploading.ts
+++ b/src/files-ui/hooks/useIsUploading.ts
@@ -1,4 +1,4 @@
-import { UPLOADSTATUS } from "../../../core";
+import { UPLOADSTATUS } from "../core";
 import * as React from "react";
 export const useIsUploading = (uploadStatus: UPLOADSTATUS | undefined): boolean => {
 
diff --git a/src/files-ui/components/dropzone/useNumberOfValidFiles.ts b/src/files-ui/hooks/useNumberOfValidFiles.ts
similarity index 90%
rename from src/files-ui/components/dropzone/useNumberOfValidFiles.ts
rename to src/files-ui/hooks/useNumberOfValidFiles.ts
index 5ee30ef2186e22f6e27946bad3b1453d7ca09db6..4b7fdbefbc60a59e7c2d03bb36baf3c097006010 100644
--- a/src/files-ui/components/dropzone/useNumberOfValidFiles.ts
+++ b/src/files-ui/hooks/useNumberOfValidFiles.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { ExtFile } from "../../core";
+import { ExtFile } from "../core";
 
 /**
  * Custom hook for managing
@@ -7,7 +7,7 @@ import { ExtFile } from "../../core";
  * @param validateFilesFlag if true, the number will be updated with the number of files that have valid attribute as true
  * @returns the updated number of valid files
  */
-export default function useNumberOfValidFiles(
+export function useNumberOfValidFiles(
     localFiles: ExtFile[],
     validateFilesFlag: boolean
 ) {
diff --git a/src/files-ui/components/file-mosaic/hooks/useProgress.ts b/src/files-ui/hooks/useProgress.ts
similarity index 95%
rename from src/files-ui/components/file-mosaic/hooks/useProgress.ts
rename to src/files-ui/hooks/useProgress.ts
index 0ee6ac2e23cefc286b6a74f640aae42dcd1aa936..be1d763464906b00398449351b5faa2e632a4e53 100644
--- a/src/files-ui/components/file-mosaic/hooks/useProgress.ts
+++ b/src/files-ui/hooks/useProgress.ts
@@ -5,7 +5,7 @@ import * as React from "react";
  * @param xhr the XMLHttpRequest object for AJAX operations
  * @returns the progress to be shown in the component
  */
-const useProgress = (
+export const useProgress = (
     progress: number | undefined,
     xhr?: XMLHttpRequest,
 
@@ -36,5 +36,4 @@ const useProgress = (
     }
 
     return localProgress;
-}
-export default useProgress;
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/files-ui/components/icons/Cancel/Cancel.tsx b/src/files-ui/icons/Cancel/Cancel.tsx
similarity index 95%
rename from src/files-ui/components/icons/Cancel/Cancel.tsx
rename to src/files-ui/icons/Cancel/Cancel.tsx
index a6fc7b4c4876df26b2cca510c533091480794bcf..7482e222a8c42ca9090a2f8588b45508d7f793be 100644
--- a/src/files-ui/components/icons/Cancel/Cancel.tsx
+++ b/src/files-ui/icons/Cancel/Cancel.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { CancelProps } from "./CancelProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const Cancel: React.FC<CancelProps> = (props: CancelProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Cancel/CancelProps.ts b/src/files-ui/icons/Cancel/CancelProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Cancel/CancelProps.ts
rename to src/files-ui/icons/Cancel/CancelProps.ts
diff --git a/src/files-ui/components/icons/CheckCircle/CheckCircle.tsx b/src/files-ui/icons/CheckCircle/CheckCircle.tsx
similarity index 100%
rename from src/files-ui/components/icons/CheckCircle/CheckCircle.tsx
rename to src/files-ui/icons/CheckCircle/CheckCircle.tsx
diff --git a/src/files-ui/components/icons/CheckCircle/CheckCircleProps.ts b/src/files-ui/icons/CheckCircle/CheckCircleProps.ts
similarity index 100%
rename from src/files-ui/components/icons/CheckCircle/CheckCircleProps.ts
rename to src/files-ui/icons/CheckCircle/CheckCircleProps.ts
diff --git a/src/files-ui/components/icons/Clean/Clean.tsx b/src/files-ui/icons/Clean/Clean.tsx
similarity index 100%
rename from src/files-ui/components/icons/Clean/Clean.tsx
rename to src/files-ui/icons/Clean/Clean.tsx
diff --git a/src/files-ui/components/icons/Clean/CleanProps.ts b/src/files-ui/icons/Clean/CleanProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Clean/CleanProps.ts
rename to src/files-ui/icons/Clean/CleanProps.ts
diff --git a/src/files-ui/components/icons/Clear/Clear.tsx b/src/files-ui/icons/Clear/Clear.tsx
similarity index 93%
rename from src/files-ui/components/icons/Clear/Clear.tsx
rename to src/files-ui/icons/Clear/Clear.tsx
index 45999d530fad6e2e8f217b47c471570832eb5aef..9794b0405959f3f6ed60a5dd2f81a2849e6caa50 100644
--- a/src/files-ui/components/icons/Clear/Clear.tsx
+++ b/src/files-ui/icons/Clear/Clear.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { ClearProps } from "./ClearProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const Clear: React.FC<ClearProps> = (props: ClearProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Clear/ClearProps.tsx b/src/files-ui/icons/Clear/ClearProps.tsx
similarity index 100%
rename from src/files-ui/components/icons/Clear/ClearProps.tsx
rename to src/files-ui/icons/Clear/ClearProps.tsx
diff --git a/src/files-ui/components/icons/Close/Close.tsx b/src/files-ui/icons/Close/Close.tsx
similarity index 100%
rename from src/files-ui/components/icons/Close/Close.tsx
rename to src/files-ui/icons/Close/Close.tsx
diff --git a/src/files-ui/components/icons/Close/CloseProps.ts b/src/files-ui/icons/Close/CloseProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Close/CloseProps.ts
rename to src/files-ui/icons/Close/CloseProps.ts
diff --git a/src/files-ui/components/icons/CloudDone/CloudDone.tsx b/src/files-ui/icons/CloudDone/CloudDone.tsx
similarity index 95%
rename from src/files-ui/components/icons/CloudDone/CloudDone.tsx
rename to src/files-ui/icons/CloudDone/CloudDone.tsx
index c2792853547d685573aeae7fb024b8d33b98eacb..885ba5864e478700d60d5232ad472fe6224bbdce 100644
--- a/src/files-ui/components/icons/CloudDone/CloudDone.tsx
+++ b/src/files-ui/icons/CloudDone/CloudDone.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { CloudDoneProps } from "./CloudDoneProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const CloudDone: React.FC<CloudDoneProps> = (props: CloudDoneProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/CloudDone/CloudDoneProps.ts b/src/files-ui/icons/CloudDone/CloudDoneProps.ts
similarity index 100%
rename from src/files-ui/components/icons/CloudDone/CloudDoneProps.ts
rename to src/files-ui/icons/CloudDone/CloudDoneProps.ts
diff --git a/src/files-ui/components/icons/DoDisturb/DoDisturb.tsx b/src/files-ui/icons/DoDisturb/DoDisturb.tsx
similarity index 100%
rename from src/files-ui/components/icons/DoDisturb/DoDisturb.tsx
rename to src/files-ui/icons/DoDisturb/DoDisturb.tsx
diff --git a/src/files-ui/components/icons/DoDisturb/DoDisturbProps.ts b/src/files-ui/icons/DoDisturb/DoDisturbProps.ts
similarity index 100%
rename from src/files-ui/components/icons/DoDisturb/DoDisturbProps.ts
rename to src/files-ui/icons/DoDisturb/DoDisturbProps.ts
diff --git a/src/files-ui/components/icons/DownloadFile/DownloadFile.tsx b/src/files-ui/icons/DownloadFile/DownloadFile.tsx
similarity index 94%
rename from src/files-ui/components/icons/DownloadFile/DownloadFile.tsx
rename to src/files-ui/icons/DownloadFile/DownloadFile.tsx
index bce0da95264d43881bb1c5f2abab64fbbe85ef69..38299e3474dc691939a1b61a780782adfcfaaf60 100644
--- a/src/files-ui/components/icons/DownloadFile/DownloadFile.tsx
+++ b/src/files-ui/icons/DownloadFile/DownloadFile.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 import { parseSize } from "../utils/utils";
 import { DownloadFileProps } from "./DownloadFileProps";
 
diff --git a/src/files-ui/components/icons/DownloadFile/DownloadFileProps.ts b/src/files-ui/icons/DownloadFile/DownloadFileProps.ts
similarity index 100%
rename from src/files-ui/components/icons/DownloadFile/DownloadFileProps.ts
rename to src/files-ui/icons/DownloadFile/DownloadFileProps.ts
diff --git a/src/files-ui/components/icons/IconProps/IconProps.ts b/src/files-ui/icons/IconProps/IconProps.ts
similarity index 100%
rename from src/files-ui/components/icons/IconProps/IconProps.ts
rename to src/files-ui/icons/IconProps/IconProps.ts
diff --git a/src/files-ui/components/icons/IconStyles.scss b/src/files-ui/icons/IconStyles.scss
similarity index 100%
rename from src/files-ui/components/icons/IconStyles.scss
rename to src/files-ui/icons/IconStyles.scss
diff --git a/src/files-ui/components/icons/Info/Info.tsx b/src/files-ui/icons/Info/Info.tsx
similarity index 100%
rename from src/files-ui/components/icons/Info/Info.tsx
rename to src/files-ui/icons/Info/Info.tsx
diff --git a/src/files-ui/components/icons/Info/InfoProps.ts b/src/files-ui/icons/Info/InfoProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Info/InfoProps.ts
rename to src/files-ui/icons/Info/InfoProps.ts
diff --git a/src/files-ui/components/icons/InfoBlack/InfoBlack.tsx b/src/files-ui/icons/InfoBlack/InfoBlack.tsx
similarity index 93%
rename from src/files-ui/components/icons/InfoBlack/InfoBlack.tsx
rename to src/files-ui/icons/InfoBlack/InfoBlack.tsx
index cb37bfe7fdd616e716e9621f0c47f103c22f9add..2432ee98d6ffdc1b5035f6b7208761febb836350 100644
--- a/src/files-ui/components/icons/InfoBlack/InfoBlack.tsx
+++ b/src/files-ui/icons/InfoBlack/InfoBlack.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { InfoBlackProps } from "./InfoBlackProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const InfoBlack: React.FC<InfoBlackProps> = (props: InfoBlackProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/InfoBlack/InfoBlackProps.ts b/src/files-ui/icons/InfoBlack/InfoBlackProps.ts
similarity index 100%
rename from src/files-ui/components/icons/InfoBlack/InfoBlackProps.ts
rename to src/files-ui/icons/InfoBlack/InfoBlackProps.ts
diff --git a/src/files-ui/components/icons/InfoDisney/InfoDisney.tsx b/src/files-ui/icons/InfoDisney/InfoDisney.tsx
similarity index 96%
rename from src/files-ui/components/icons/InfoDisney/InfoDisney.tsx
rename to src/files-ui/icons/InfoDisney/InfoDisney.tsx
index 80b9e2a7f5e2780e7c40133ec699b43a116aeb31..af6eceef2c9bc70e51e819a85cb5ffd923e665c7 100644
--- a/src/files-ui/components/icons/InfoDisney/InfoDisney.tsx
+++ b/src/files-ui/icons/InfoDisney/InfoDisney.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { InfoDisneyProps } from "./InfoDisneyProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const InfoDisney: React.FC<InfoDisneyProps> = (props: InfoDisneyProps) => {
   const {
diff --git a/src/files-ui/components/icons/InfoDisney/InfoDisneyProps.ts b/src/files-ui/icons/InfoDisney/InfoDisneyProps.ts
similarity index 100%
rename from src/files-ui/components/icons/InfoDisney/InfoDisneyProps.ts
rename to src/files-ui/icons/InfoDisney/InfoDisneyProps.ts
diff --git a/src/files-ui/components/icons/Person/Person.tsx b/src/files-ui/icons/Person/Person.tsx
similarity index 93%
rename from src/files-ui/components/icons/Person/Person.tsx
rename to src/files-ui/icons/Person/Person.tsx
index fe87a3f4ecbda47c62485056220cd035bce0666b..680c2d9f911c921a7bd17f1358b15892999572b3 100644
--- a/src/files-ui/components/icons/Person/Person.tsx
+++ b/src/files-ui/icons/Person/Person.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { PersonProps } from "./PersonProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const Person: React.FC<PersonProps> = (props: PersonProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Person/PersonProps.tsx b/src/files-ui/icons/Person/PersonProps.tsx
similarity index 100%
rename from src/files-ui/components/icons/Person/PersonProps.tsx
rename to src/files-ui/icons/Person/PersonProps.tsx
diff --git a/src/files-ui/components/icons/PhotoCamera/PhotoCamera.tsx b/src/files-ui/icons/PhotoCamera/PhotoCamera.tsx
similarity index 94%
rename from src/files-ui/components/icons/PhotoCamera/PhotoCamera.tsx
rename to src/files-ui/icons/PhotoCamera/PhotoCamera.tsx
index b7a70ff604b2458b6f4af3d73a07be0c82fc0ef9..4ad34ec76c85729a69c4bed30d20b9d496cdc8c9 100644
--- a/src/files-ui/components/icons/PhotoCamera/PhotoCamera.tsx
+++ b/src/files-ui/icons/PhotoCamera/PhotoCamera.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { PhotoCameraProps } from "./PhotoCameraProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const PhotoCamera: React.FC<PhotoCameraProps> = (props: PhotoCameraProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/PhotoCamera/PhotoCameraProps.ts b/src/files-ui/icons/PhotoCamera/PhotoCameraProps.ts
similarity index 100%
rename from src/files-ui/components/icons/PhotoCamera/PhotoCameraProps.ts
rename to src/files-ui/icons/PhotoCamera/PhotoCameraProps.ts
diff --git a/src/files-ui/components/icons/Play/PlayIcon.tsx b/src/files-ui/icons/Play/PlayIcon.tsx
similarity index 93%
rename from src/files-ui/components/icons/Play/PlayIcon.tsx
rename to src/files-ui/icons/Play/PlayIcon.tsx
index b37b94f5e0d5d71e3c9aade2345220606f6124c2..0f52c03727072a0fbfb7a9e86b74a8a163400fbe 100644
--- a/src/files-ui/components/icons/Play/PlayIcon.tsx
+++ b/src/files-ui/icons/Play/PlayIcon.tsx
@@ -1,7 +1,7 @@
 import React, { FC } from "react";
 import { parseSize } from "../utils/utils";
 import { PlayIconProps } from "./PlayIconProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const PlayIcon: FC<PlayIconProps> = (props: PlayIconProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Play/PlayIconProps.ts b/src/files-ui/icons/Play/PlayIconProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Play/PlayIconProps.ts
rename to src/files-ui/icons/Play/PlayIconProps.ts
diff --git a/src/files-ui/components/icons/Remove/Remove.tsx b/src/files-ui/icons/Remove/Remove.tsx
similarity index 94%
rename from src/files-ui/components/icons/Remove/Remove.tsx
rename to src/files-ui/icons/Remove/Remove.tsx
index 83cf251fe17618eb85ebe3e645de88e5572924ff..aa8e19c8c3c7f1f866b27ffeb283a7dd86efe06c 100644
--- a/src/files-ui/components/icons/Remove/Remove.tsx
+++ b/src/files-ui/icons/Remove/Remove.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { RemoveProps } from "./RemoveProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const Remove: React.FC<RemoveProps> = (props: RemoveProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Remove/RemoveOutline.tsx b/src/files-ui/icons/Remove/RemoveOutline.tsx
similarity index 94%
rename from src/files-ui/components/icons/Remove/RemoveOutline.tsx
rename to src/files-ui/icons/Remove/RemoveOutline.tsx
index 526995fad2b25fc0c91a9762078615f483516721..9faf43d28d9c470c09a263ad40e159bd2c2c64ab 100644
--- a/src/files-ui/components/icons/Remove/RemoveOutline.tsx
+++ b/src/files-ui/icons/Remove/RemoveOutline.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { parseSize } from "../utils/utils";
 import { RemoveProps } from "./RemoveProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const RemoveOutline: React.FC<RemoveProps> = (props: RemoveProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Remove/RemoveProps.ts b/src/files-ui/icons/Remove/RemoveProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Remove/RemoveProps.ts
rename to src/files-ui/icons/Remove/RemoveProps.ts
diff --git a/src/files-ui/components/icons/Upload/Upload.tsx b/src/files-ui/icons/Upload/Upload.tsx
similarity index 100%
rename from src/files-ui/components/icons/Upload/Upload.tsx
rename to src/files-ui/icons/Upload/Upload.tsx
diff --git a/src/files-ui/components/icons/Upload/UploadProps.ts b/src/files-ui/icons/Upload/UploadProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Upload/UploadProps.ts
rename to src/files-ui/icons/Upload/UploadProps.ts
diff --git a/src/files-ui/components/icons/UploadDone/UploadDone.tsx b/src/files-ui/icons/UploadDone/UploadDone.tsx
similarity index 100%
rename from src/files-ui/components/icons/UploadDone/UploadDone.tsx
rename to src/files-ui/icons/UploadDone/UploadDone.tsx
diff --git a/src/files-ui/components/icons/UploadDone/UploadDoneProps.ts b/src/files-ui/icons/UploadDone/UploadDoneProps.ts
similarity index 100%
rename from src/files-ui/components/icons/UploadDone/UploadDoneProps.ts
rename to src/files-ui/icons/UploadDone/UploadDoneProps.ts
diff --git a/src/files-ui/components/icons/UploadError/UploadError.tsx b/src/files-ui/icons/UploadError/UploadError.tsx
similarity index 100%
rename from src/files-ui/components/icons/UploadError/UploadError.tsx
rename to src/files-ui/icons/UploadError/UploadError.tsx
diff --git a/src/files-ui/components/icons/UploadError/UploadErrorProps.ts b/src/files-ui/icons/UploadError/UploadErrorProps.ts
similarity index 100%
rename from src/files-ui/components/icons/UploadError/UploadErrorProps.ts
rename to src/files-ui/icons/UploadError/UploadErrorProps.ts
diff --git a/src/files-ui/components/icons/UploadingProcess/UploadingProcess.scss b/src/files-ui/icons/UploadingProcess/UploadingProcess.scss
similarity index 100%
rename from src/files-ui/components/icons/UploadingProcess/UploadingProcess.scss
rename to src/files-ui/icons/UploadingProcess/UploadingProcess.scss
diff --git a/src/files-ui/components/icons/UploadingProcess/UploadingProcess.tsx b/src/files-ui/icons/UploadingProcess/UploadingProcess.tsx
similarity index 100%
rename from src/files-ui/components/icons/UploadingProcess/UploadingProcess.tsx
rename to src/files-ui/icons/UploadingProcess/UploadingProcess.tsx
diff --git a/src/files-ui/components/icons/UploadingProcess/UploadingProcessProps.ts b/src/files-ui/icons/UploadingProcess/UploadingProcessProps.ts
similarity index 100%
rename from src/files-ui/components/icons/UploadingProcess/UploadingProcessProps.ts
rename to src/files-ui/icons/UploadingProcess/UploadingProcessProps.ts
diff --git a/src/files-ui/components/icons/ViewGrid/ViewGrid.tsx b/src/files-ui/icons/ViewGrid/ViewGrid.tsx
similarity index 100%
rename from src/files-ui/components/icons/ViewGrid/ViewGrid.tsx
rename to src/files-ui/icons/ViewGrid/ViewGrid.tsx
diff --git a/src/files-ui/components/icons/ViewGrid/ViewGridProps.ts b/src/files-ui/icons/ViewGrid/ViewGridProps.ts
similarity index 100%
rename from src/files-ui/components/icons/ViewGrid/ViewGridProps.ts
rename to src/files-ui/icons/ViewGrid/ViewGridProps.ts
diff --git a/src/files-ui/components/icons/ViewList/ViewList.tsx b/src/files-ui/icons/ViewList/ViewList.tsx
similarity index 100%
rename from src/files-ui/components/icons/ViewList/ViewList.tsx
rename to src/files-ui/icons/ViewList/ViewList.tsx
diff --git a/src/files-ui/components/icons/ViewList/ViewListProps.ts b/src/files-ui/icons/ViewList/ViewListProps.ts
similarity index 100%
rename from src/files-ui/components/icons/ViewList/ViewListProps.ts
rename to src/files-ui/icons/ViewList/ViewListProps.ts
diff --git a/src/files-ui/components/icons/Visibility/Visibility.tsx b/src/files-ui/icons/Visibility/Visibility.tsx
similarity index 94%
rename from src/files-ui/components/icons/Visibility/Visibility.tsx
rename to src/files-ui/icons/Visibility/Visibility.tsx
index d7d9e41065d81909df8b097a68dbd9203476649f..0dc93a97cc11aee3b4c270307c2bd999de22113e 100644
--- a/src/files-ui/components/icons/Visibility/Visibility.tsx
+++ b/src/files-ui/icons/Visibility/Visibility.tsx
@@ -1,7 +1,7 @@
 import React, { FC } from "react";
 import { parseSize } from "../utils/utils";
 import { VisibilityProps } from "./VisibilityProps";
-import { handleClickUtil } from "../../../files-ui-react/utils";
+import { handleClickUtil } from "../../utils";
 
 const Visibility: FC<VisibilityProps> = (props: VisibilityProps) => {
   const { size, color, colorFill, onClick, style, className } = props;
diff --git a/src/files-ui/components/icons/Visibility/VisibilityProps.ts b/src/files-ui/icons/Visibility/VisibilityProps.ts
similarity index 100%
rename from src/files-ui/components/icons/Visibility/VisibilityProps.ts
rename to src/files-ui/icons/Visibility/VisibilityProps.ts
diff --git a/src/files-ui/components/icons/index.ts b/src/files-ui/icons/index.ts
similarity index 100%
rename from src/files-ui/components/icons/index.ts
rename to src/files-ui/icons/index.ts
diff --git a/src/files-ui/components/icons/utils/utils.ts b/src/files-ui/icons/utils/utils.ts
similarity index 100%
rename from src/files-ui/components/icons/utils/utils.ts
rename to src/files-ui/icons/utils/utils.ts
diff --git a/src/files-ui/index.ts b/src/files-ui/index.ts
index 17fb7c00f43367b8eb0c383d8a382b4a07999f05..a54e82645d188f6c4f7fc331973515aaff7e7938 100644
--- a/src/files-ui/index.ts
+++ b/src/files-ui/index.ts
@@ -1,35 +1,39 @@
-export { default as Dropzone } from "./components/dropzone/components/dropzone/Dropzone";
-export * from "./components/dropzone/components/dropzone/Dropzone";
+export { default as Dropzone } from "./Dropzone/components/dropzone/Dropzone";
+export * from "./Dropzone/components/dropzone/Dropzone";
 
-export { default as FileInputButton } from "./components/file-input-button/FileInputButton";
-export * from "./components/file-input-button/FileInputButton";
+export { default as FileInputButton } from "./FileInputButton/FileInputButton";
+export * from "./FileInputButton/FileInputButton";
 
-export { default as Avatar } from "./components/avatar/Avatar";
-export * from "./components/avatar/Avatar";
+export { default as Avatar } from "./Avatar/Avatar";
+export * from "./Avatar/Avatar";
 
-export { default as FileCard } from "./components/file-card/FileCard";
-export * from "./components/file-card/FileCard";
+export { default as FileCard } from "./FileCard/FileCard";
+export * from "./FileCard/FileCard";
 
-export { default as FileMosaic } from "./components/file-mosaic/components/file-mosaic/FileMosaic";
-export * from "./components/file-mosaic/components/file-mosaic/FileMosaic";
+export { default as FileMosaic } from "./FileMosaic/components/file-mosaic/FileMosaic";
+export * from "./FileMosaic/components/file-mosaic/FileMosaic";
 
-export { default as FullScreen } from "./components/previews/FullScreen/FullScreen";
-export * from "./components/previews/FullScreen/FullScreen";
+export { default as FullScreen } from "./FullScreen/FullScreen";
+export * from "./FullScreen/FullScreen";
 
-export { default as ImagePreview } from "./components/previews/ImagePreview/ImagePreview";
-export * from "./components/previews/ImagePreview/ImagePreview";
+export { default as ImagePreview } from "./ImagePreview/ImagePreview";
+export * from "./ImagePreview/ImagePreview";
 
-export { default as VideoPreview } from "./components/previews/VideoPreview/VideoPreview";
-export * from "./components/previews/VideoPreview/VideoPreview";
+export { default as VideoPreview } from "./VideoPreview/VideoPreview";
+export * from "./VideoPreview/VideoPreview";
 
-export { default as MaterialButton } from "./components/material-button/MaterialButton";
-export * from "./components/material-button/MaterialButton";
+export { default as MaterialButton } from "./MaterialButton/MaterialButton";
+export * from "./MaterialButton/MaterialButton";
 
-export type { FileMosaicProps } from "./components/file-mosaic/components/file-mosaic/FileMosaicProps";
-export type { DropzoneProps } from "./components/dropzone/components/dropzone/DropzoneProps";
-export type { FileInputButtonProps } from "./components/file-input-button/InputButtonProps";
-export type { FileCardProps } from "./components/file-card/FileCardProps";
-export type { AvatarProps } from "./components/avatar/AvatarProps";
+export type { FileMosaicProps } from "./FileMosaic/components/file-mosaic/FileMosaicProps";
+
+export type { DropzoneProps } from "./Dropzone/components/dropzone/DropzoneProps";
+
+export type { FileInputButtonProps } from "./FileInputButton/InputButtonProps";
+
+export type { FileCardProps } from "./FileCard/FileCardProps";
+
+export type { AvatarProps } from "./Avatar/AvatarProps";
 
 export { useFakeProgress } from "./hooks";
 
diff --git a/src/files-ui/components/loader/BasePreparingLoader/BasePreparingLoader.tsx b/src/files-ui/loader/BasePreparingLoader/BasePreparingLoader.tsx
similarity index 100%
rename from src/files-ui/components/loader/BasePreparingLoader/BasePreparingLoader.tsx
rename to src/files-ui/loader/BasePreparingLoader/BasePreparingLoader.tsx
diff --git a/src/files-ui/components/loader/BasePreparingLoader/BasePreparingLoaderProps.ts b/src/files-ui/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
similarity index 100%
rename from src/files-ui/components/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
rename to src/files-ui/loader/BasePreparingLoader/BasePreparingLoaderProps.ts
diff --git a/src/files-ui/components/loader/DefaultLoader/DefaultLoader.scss b/src/files-ui/loader/DefaultLoader/DefaultLoader.scss
similarity index 100%
rename from src/files-ui/components/loader/DefaultLoader/DefaultLoader.scss
rename to src/files-ui/loader/DefaultLoader/DefaultLoader.scss
diff --git a/src/files-ui/components/loader/DefaultLoader/DefaultLoader.tsx b/src/files-ui/loader/DefaultLoader/DefaultLoader.tsx
similarity index 98%
rename from src/files-ui/components/loader/DefaultLoader/DefaultLoader.tsx
rename to src/files-ui/loader/DefaultLoader/DefaultLoader.tsx
index b9668fd5bb691feef4068079c18c18a487795db5..e2218c62327b91cd2ef32a53dc210022d376aac8 100644
--- a/src/files-ui/components/loader/DefaultLoader/DefaultLoader.tsx
+++ b/src/files-ui/loader/DefaultLoader/DefaultLoader.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { completeAsureColor } from "../../../core";
+import { completeAsureColor } from "../../core";
 import "./DefaultLoader.scss";
 interface DefaultLoaderNeoProps {
   color?: string;
diff --git a/src/files-ui/components/loader/DefaultLoader/loader.tsx b/src/files-ui/loader/DefaultLoader/loader.tsx
similarity index 98%
rename from src/files-ui/components/loader/DefaultLoader/loader.tsx
rename to src/files-ui/loader/DefaultLoader/loader.tsx
index 6a93c56ca628134df9480f75b400a7f899115ac9..bba23913512d2a56e8d029fe077e756e818f2040 100644
--- a/src/files-ui/components/loader/DefaultLoader/loader.tsx
+++ b/src/files-ui/loader/DefaultLoader/loader.tsx
@@ -1,7 +1,7 @@
 
 
 import React, { FC } from "react";
-import { hexColorToRGB } from "../../../core/color";
+import { hexColorToRGB } from "../../core";
 interface LoaderProps {
   color?: string;
 }
diff --git a/src/files-ui/components/loader/DynamicLoader/DynamicLoader.scss b/src/files-ui/loader/DynamicLoader/DynamicLoader.scss
similarity index 100%
rename from src/files-ui/components/loader/DynamicLoader/DynamicLoader.scss
rename to src/files-ui/loader/DynamicLoader/DynamicLoader.scss
diff --git a/src/files-ui/components/loader/DynamicLoader/DynamicLoader.tsx b/src/files-ui/loader/DynamicLoader/DynamicLoader.tsx
similarity index 100%
rename from src/files-ui/components/loader/DynamicLoader/DynamicLoader.tsx
rename to src/files-ui/loader/DynamicLoader/DynamicLoader.tsx
diff --git a/src/files-ui/components/loader/DynamicLoader/DynamicLoaderProps.ts b/src/files-ui/loader/DynamicLoader/DynamicLoaderProps.ts
similarity index 100%
rename from src/files-ui/components/loader/DynamicLoader/DynamicLoaderProps.ts
rename to src/files-ui/loader/DynamicLoader/DynamicLoaderProps.ts
diff --git a/src/files-ui/components/loader/InfiniteLoader/InfiniteLoader.tsx b/src/files-ui/loader/InfiniteLoader/InfiniteLoader.tsx
similarity index 100%
rename from src/files-ui/components/loader/InfiniteLoader/InfiniteLoader.tsx
rename to src/files-ui/loader/InfiniteLoader/InfiniteLoader.tsx
diff --git a/src/files-ui/components/loader/InfiniteLoader/InfiniteLoaderProps.ts b/src/files-ui/loader/InfiniteLoader/InfiniteLoaderProps.ts
similarity index 100%
rename from src/files-ui/components/loader/InfiniteLoader/InfiniteLoaderProps.ts
rename to src/files-ui/loader/InfiniteLoader/InfiniteLoaderProps.ts
diff --git a/src/files-ui/components/loader/LoaderContainer/LoaderContainer.scss b/src/files-ui/loader/LoaderContainer/LoaderContainer.scss
similarity index 100%
rename from src/files-ui/components/loader/LoaderContainer/LoaderContainer.scss
rename to src/files-ui/loader/LoaderContainer/LoaderContainer.scss
diff --git a/src/files-ui/components/loader/LoaderContainer/LoaderContainer.tsx b/src/files-ui/loader/LoaderContainer/LoaderContainer.tsx
similarity index 100%
rename from src/files-ui/components/loader/LoaderContainer/LoaderContainer.tsx
rename to src/files-ui/loader/LoaderContainer/LoaderContainer.tsx
diff --git a/src/files-ui/components/loader/LoaderContainer/LoaderContainerProps.ts b/src/files-ui/loader/LoaderContainer/LoaderContainerProps.ts
similarity index 100%
rename from src/files-ui/components/loader/LoaderContainer/LoaderContainerProps.ts
rename to src/files-ui/loader/LoaderContainer/LoaderContainerProps.ts
diff --git a/src/files-ui/components/loader/LoaderProps.ts b/src/files-ui/loader/LoaderProps.ts
similarity index 100%
rename from src/files-ui/components/loader/LoaderProps.ts
rename to src/files-ui/loader/LoaderProps.ts
diff --git a/src/files-ui/components/loader/index.ts b/src/files-ui/loader/index.ts
similarity index 100%
rename from src/files-ui/components/loader/index.ts
rename to src/files-ui/loader/index.ts
diff --git a/src/files-ui/components/overridable/OverridableComponentsProps.ts b/src/files-ui/overridable/OverridableComponentsProps.ts
similarity index 100%
rename from src/files-ui/components/overridable/OverridableComponentsProps.ts
rename to src/files-ui/overridable/OverridableComponentsProps.ts
diff --git a/src/files-ui/components/overridable/index.ts b/src/files-ui/overridable/index.ts
similarity index 100%
rename from src/files-ui/components/overridable/index.ts
rename to src/files-ui/overridable/index.ts
diff --git a/src/files-ui/components/overridable/mergeProps.ts b/src/files-ui/overridable/mergeProps.ts
similarity index 100%
rename from src/files-ui/components/overridable/mergeProps.ts
rename to src/files-ui/overridable/mergeProps.ts
diff --git a/src/files-ui/components/skeleton/FuiSkeleton.scss b/src/files-ui/skeleton/FuiSkeleton.scss
similarity index 100%
rename from src/files-ui/components/skeleton/FuiSkeleton.scss
rename to src/files-ui/skeleton/FuiSkeleton.scss
diff --git a/src/files-ui/components/skeleton/FuiSkeleton.tsx b/src/files-ui/skeleton/FuiSkeleton.tsx
similarity index 100%
rename from src/files-ui/components/skeleton/FuiSkeleton.tsx
rename to src/files-ui/skeleton/FuiSkeleton.tsx
diff --git a/src/files-ui/components/skeleton/FuiSkeletonProps.ts b/src/files-ui/skeleton/FuiSkeletonProps.ts
similarity index 100%
rename from src/files-ui/components/skeleton/FuiSkeletonProps.ts
rename to src/files-ui/skeleton/FuiSkeletonProps.ts
diff --git a/src/files-ui/components/tooltip/components/Tooltip.scss b/src/files-ui/tooltip/Tooltip.scss
similarity index 100%
rename from src/files-ui/components/tooltip/components/Tooltip.scss
rename to src/files-ui/tooltip/Tooltip.scss
diff --git a/src/files-ui/components/tooltip/components/Tooltip.tsx b/src/files-ui/tooltip/Tooltip.tsx
similarity index 97%
rename from src/files-ui/components/tooltip/components/Tooltip.tsx
rename to src/files-ui/tooltip/Tooltip.tsx
index 5a30a3ec98613b15042b4a356e45dc063bdd7f3c..b4aac4dd6335374b2b7d6a9d522d73891642fdc4 100644
--- a/src/files-ui/components/tooltip/components/Tooltip.tsx
+++ b/src/files-ui/tooltip/Tooltip.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { TooltipProps } from "./TooltipProps";
 import "./Tooltip.scss";
-import { UPLOADSTATUS } from "../../../core";
+import { UPLOADSTATUS } from "../core";
 const Tooltip: React.FC<TooltipProps> = (props: TooltipProps) => {
   const {
     //message,
diff --git a/src/files-ui/components/tooltip/components/TooltipProps.ts b/src/files-ui/tooltip/TooltipProps.ts
similarity index 86%
rename from src/files-ui/components/tooltip/components/TooltipProps.ts
rename to src/files-ui/tooltip/TooltipProps.ts
index 249cad13bff1690d25697185259b3f844c4775bd..8271fc75967305b5b830e42b726385410bef082b 100644
--- a/src/files-ui/components/tooltip/components/TooltipProps.ts
+++ b/src/files-ui/tooltip/TooltipProps.ts
@@ -1,5 +1,5 @@
-import { UPLOADSTATUS } from "../../../core";
-import { OverridableComponentProps } from "../../overridable";
+import { UPLOADSTATUS } from "../core";
+import { OverridableComponentProps } from "../overridable";
 
 export interface TooltipPropsMap extends OverridableComponentProps {
   //message?: string;
diff --git a/src/files-ui/tooltip/index.ts b/src/files-ui/tooltip/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cd8fc67f1d7efb63ff8f1731a7ceda0a44fcd449
--- /dev/null
+++ b/src/files-ui/tooltip/index.ts
@@ -0,0 +1,2 @@
+export { default as Tooltip } from "./Tooltip";
+export * from "./Tooltip";
diff --git a/src/files-ui/core/utils/click.utils.ts b/src/files-ui/utils/click.utils.ts
similarity index 100%
rename from src/files-ui/core/utils/click.utils.ts
rename to src/files-ui/utils/click.utils.ts
diff --git a/src/files-ui/core/utils/dragdrop.utils.ts b/src/files-ui/utils/dragdrop.utils.ts
similarity index 100%
rename from src/files-ui/core/utils/dragdrop.utils.ts
rename to src/files-ui/utils/dragdrop.utils.ts
diff --git a/src/files-ui/files-ui-react/utils/index.ts b/src/files-ui/utils/index.ts
similarity index 100%
rename from src/files-ui/files-ui-react/utils/index.ts
rename to src/files-ui/utils/index.ts
diff --git a/src/files-ui/files-ui-react/utils/ripple/index.ts b/src/files-ui/utils/ripple/index.ts
similarity index 100%
rename from src/files-ui/files-ui-react/utils/ripple/index.ts
rename to src/files-ui/utils/ripple/index.ts
diff --git a/src/files-ui/files-ui-react/utils/ripple/ripple.ts b/src/files-ui/utils/ripple/ripple.ts
similarity index 96%
rename from src/files-ui/files-ui-react/utils/ripple/ripple.ts
rename to src/files-ui/utils/ripple/ripple.ts
index d461a6803201b5690eb45b3843ab4db3a7260c26..6a8701319b3dd4865146119ee7886a89c150a153 100644
--- a/src/files-ui/files-ui-react/utils/ripple/ripple.ts
+++ b/src/files-ui/utils/ripple/ripple.ts
@@ -1,4 +1,4 @@
-import { completeAsureColor, hexColorToRGB } from "../../../core";
+import { completeAsureColor, hexColorToRGB } from "../../core";
 
 const asureRippleColor = (color: string): string => {
   return completeAsureColor(color,