diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..982ceab041a1f84bd26fe5e2c4b5d23ffa3c310a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,183 @@
+# Change Log
+
+<p align="center">
+<img align="center" height="120" src="https://user-images.githubusercontent.com/43678736/132112022-0ca409ae-cca2-43c8-be89-110376260a3f.png" alt="dropone-ui-logo">
+
+<h1 align="center">  Dropzone-UI</h1>
+
+</p>
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="6.4.0"></a>
+
+## [6.4.0](https://github.com/dropzone-ui/react-dropzone/releases/tag/v6.4.0) (2021-12-12)
+
+## 🧪 New features
+
+- \<FileItem/\>: Added `onWatch` prop. This prop provides an event handler for allowing full screen video previews. It works like `onSee` prop. It returns as first parameter the file object. If `onWatch` is present, file is `valid` and file type is `video`, `FileItem` will display the `play` button.
+- \<VideoPreview/\>: Added new component`VideoPreview`. This component is quite similar to `FullScreenPreview`. As the name sugests, this component is meant to be used to show video previews. Supported videos are the default supported videos by a [`<video/>`](https://www.w3schools.com/tags/tag_video.asp) tag (mp4, ogg, webm). First prop `videoSource` can be a `File` object or a `URI string` representation. Works in the same way as `FullScreenPreview`, it rcieves a `onClose` prop and an `open` prop.
+  It also recieves `autoplay` and `controls` props like classic html [`<video/>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#attributes) tag.
+
+## 🐛 Fixes or improvements
+
+- \<FullScreenPreview/>: Improved media query style.
+
+## 📚 Improved documentation.
+
+- Added documentation about new prop on `FileItem`.
+- Added documentation about new component `VideoPreview`.
+
+<a name="6.3.6"></a>
+
+## [6.3.6](https://github.com/dropzone-ui/react-dropzone/releases/tag/v6.3.6) (2021-07-12)
+
+## 🧪 New features
+
+- \<FileItem/\>: Added `resultOnToolip` prop. This prop provides another hover interaction. If present or `true`, FileItem will show the file validation status and the upload status on a nice tooltip. Otherwhise, if not present, false or undefined, FileItem will display the result on the InfoLayer. Special thanks to @mateusmx, 👏 who suggested this feature🧪.
+
+- \<Dropzone/\>: Added `disableScroll` prop. This prop disables the css property `overflow: auto` in FileItemContainer inside Dropzone, when it displays the FileItem list inside of it. It also disables the `maxHeight` property and forces the `view` prop to be `"grid"`. The purpose of this special prop is to allow FileItemContainer to grow at the same time FileItem list increases and prevent triggering scrollbars.
+
+## 🐛 Fixes or improvements
+
+- \<Dropzone/>: Fixed issue in FileItemContainer that made it to overflow the size of Dropzone.
+
+## 📚 Improved documentation.
+
+- Added documentation about this new features
+
+<a name="6.2.0"></a>
+
+## [6.2.0](https://github.com/dropzone-ui/react-dropzone/releases/tag/v6.2.0) (2021-26-11)
+
+### New features
+
+- \<FileItem/\>: Added `alwaysActive` prop. This prop provides hover interaction. If false (by default), FileItem will hide the main layer with all the buttons except the file validation status and the upload status. If true, main layer will be visible all the time.
+- \<FileItem/\>: Added `elevation` prop. This prop provides the user to decide about the shadow and border on the `FileItem` container.
+- `Webpage` in beta version was released. You can visit [dropzone-ui.com](http://www.dropzone-ui.com). In there you can find a nice code generator.
+
+### Fixesor improvements
+
+- \<Dropzone/\>: Fixed Spanish translation on footer.
+- \<Dropzone/\>: Hide "view" button when view prop is provided.
+- \<Dropzone/\>: Fix issue that hides dropzone label when FileItems are outside.
+- \<Dropzone/\>: Fixed minor issues on minHeight.
+- \<FileItem/\>: Hide "delete" button when onDelete prop is not provided
+- \<FileItem/\>: Change `word-break` css propertie from `break-all` to `break-word`;
+
+### Future feature
+
+- \<FileItem/\>: Show `upload status` on hover event.
+
+<a name="5.5.6"></a>
+
+## [5.5.6](https://github.com/dropzone-ui/react-dropzone/releases/tag/v5.3.0) (2021-26-11)
+
+- 🧪 Added Localization support for ✨ **Russian** and **Chinese** ✨.
+- 🐛 Fixed small bugs.
+- 📚 Improved documentation.
+
+<a name="3.0.1"></a>
+
+## [3.0.1](https://github.com/dropzone-ui/dropzone-ui/compare/v2.8.1...v3.0.1) (2021-10-11)
+
+### Features
+
+- Translation support for `Russian` :ru: and also simplified and traditional `Chinese` :cn: .
+- File Item component can show image directly from url.
+- Minor bugs on Dropzone useStyle hook fixed.
+
+<a name="3.0.1"></a>
+
+## [3.0.1](https://github.com/dropzone-ui/dropzone-ui/compare/v2.8.1...v3.0.1) (2021-10-11)
+
+### Features
+
+- Translation support for `Portuguese`.
+  <a name="2.8.1"></a>
+
+## [2.8.1](https://github.com/dropzone-ui/dropzone-ui/compare/v2.8.1...v2.1.1) (2021-10-08)
+
+### Features
+
+- Translation support for `French`.
+
+<a name="2.1.1"></a>
+
+## [2.1.1](https://github.com/dropzone-ui/dropzone-ui/compare/v2.1.1...v2.0.0) (2021-10-01)
+
+### Features
+
+- Fixed issue on tsconfig.json that affected build process
+
+<a name="2.1.0"></a>
+
+## [2.1.0](https://github.com/dropzone-ui/dropzone-ui/compare/v2.1.0...v2.0.0) (2021-09-28)
+
+### Features
+
+- Add preventDefault function on InputButton component
+- Improve Readme.md
+- Add Openbase badge
+- Improve description
+
+<a name="2.0.0"></a>
+
+## [2.0.0](https://github.com/dropzone-ui/dropzone-ui/compare/v2.0.0...v1.2.10) (2021-09-21)
+
+### Features
+
+- Improve Readme.md
+- Add localization for `Spanish` and `English`
+- Add Readme_es.md file
+
+<a name="1.2.10"></a>
+
+## [1.2.10](https://github.com/dropzone-ui/dropzone-ui/compare/v1.0.1...v1.0.2) (2021-09-21)
+
+### Features
+
+- Improve Readme.md
+- Add quiality badge
+  <a name="1.2.9"></a>
+
+## [1.2.9](https://github.com/dropzone-ui/dropzone-ui/compare/v1.0.1...v1.0.2) (2021-09-12)
+
+### Features
+
+- Release Input File Button
+- Release FileItemContainer Compnent
+- Improve API doc for all components (now arranged alphabetically)
+
+<a name="1.1.28"></a>
+
+## [1.1.28](https://github.com/dropzone-ui/dropzone-ui/compare/v1.0.1...v1.0.2) (2021-09-09)
+
+### Features
+
+- Minor bug fixed, upload status not hiding on info open fixed
+
+<a name="1.0.28"></a>
+
+## [1.0.28](https://github.com/dropzone-ui/dropzone-ui/compare/v1.0.1...v1.0.2) (2021-09-08)
+
+### Features
+
+- added readme status badges
+
+- Add Travis ci and coveralls integration
+
+- update README description
+- Dropzone, FileItem and FullScreenImage components released
+
+<a name="1.0.1"></a>
+
+## [1.0.1](https://github.com/dropzone-ui/dropzone-ui/compare/v1.0.0...v1.0.1) (2021-08-28)
+
+### Features
+
+- README improvements
+
+<a name="1.0.0"></a>
+
+# [1.0.0](https://github.com/dropzone-ui/dropzone-ui/compare/v0.1.2...v1.0.0) (2021-08-28)
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000000000000000000000000000000000..c7f9c73fd18a01e5b03a2c02ff982522c713717f
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,47 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+- The use of sexualized language or imagery and unwelcome sexual attention or advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@mui.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..52eaf8570738f963f4afaf4d89fd3c173cd37942
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,115 @@
+# Contributing to Dropzone-ui
+
+If you're reading this, you're awesome! Thank you for helping us make this project great and being a part of the dropzone-ui community. Here are a few guidelines that will help you along the way.
+
+## Code of Conduct
+
+Dropzone-ui has adopted the [Contributor Covenant](https://www.contributor-covenant.org/) as its Code of Conduct, and we expect project participants to adhere to it.
+Please read [the full text](/CODE_OF_CONDUCT.md) so that you can understand what actions will and will not be tolerated.
+
+## Your first Pull Request
+
+Working on your first Pull Request? You can learn how from this free video series:
+
+[How to Contribute to an Open Source Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)
+
+If you decide to fix an issue, please be sure to check the comment thread in case somebody is already working on a fix. If nobody is working on it at the moment, please leave a comment stating that you have started to work on it so other people don't accidentally duplicate your effort.
+
+If somebody claims an issue but doesn't follow up for more than a week, it's fine to take it over but you should still leave a comment.
+If there has been no activity on the issue for 7 to 14 days, it is safe to assume that nobody is working on it.
+
+## Sending a Pull Request
+
+Dropzone UI is a community project, so Pull Requests are always welcome, but, before working on a large change, it is best to open an issue first to discuss it with the maintainers.
+
+However, as it happen in the past, there could be small fixes than can be directly posted on a pull request.
+
+When in doubt, keep your Pull Requests small. To give a Pull Request the best chance of getting accepted, don't bundle more than one feature or bug fix per Pull Request. It's often best to create two smaller Pull Requests than one big one.
+
+1. Fork the repository.
+
+2. Clone the fork to your local machine and add upstream remote:
+
+```sh
+git clone https://github.com/<your username>/react.git
+cd react
+git remote add upstream https://github.com/dropzone-ui/react.git
+```
+
+<!-- #default-branch-switch -->
+
+3. Synchronize your local `master` branch with the upstream one:
+
+```sh
+git checkout master
+git pull upstream master
+```
+
+4. Install the dependencies with npm:
+
+```sh
+npm install
+```
+
+5. Create a new topic branch:
+
+```sh
+git checkout -b my-topic-branch
+```
+
+6. Make changes, commit and push to your fork:
+
+```sh
+git push -u origin HEAD
+```
+
+7. Go to [the repository](https://github.com/dropzone-ui/react) and make a Pull Request.
+
+The core team is monitoring for Pull Requests. We will review your Pull Request and either merge it, request changes to it, or close it with an explanation.
+
+## Commit Convention
+
+In order to make it easy to review the previous commits and understand the "what"s and "why"s behind each change, the following commit pattern is used:
+
+- To make descriptive commits the command `git commit -v` is used.
+- Otherwhise, `git commit -m "[<type>]: <message>"` command can be used when the commit message is not long enought to give it a body.
+
+```
+[<type>]: <subject>
+<BLANK_LINE>
+<body> (optional)
+```
+
+The definition for each commit section is as follows:
+
+`<type>`: A short label of the type of change.
+
+- It can be any of the following:
+  - FEAT: A new feature
+  - FIX: Bug fix
+  - DOCS: Documentation changes
+  - STYLE: Formatting, missing spaces, etc
+  - REFACTOR: Code that it's neither a feat nor a fix
+
+`<subject>`: It is a short description of the commit
+
+- In general, no more than 80 characters
+- Written in present tense
+- Starts with capital letter
+
+`<body>`: The long description of the commit
+
+- Explains why the commit is needed
+- Briefly explains what the commit does
+- Talks about the related test cases and docs
+- In general, no more than 80 characters per line
+
+## Coding style
+
+Please follow the coding style of the project. Dropzone ui uses prettier and eslint, so if possible, enable linting in your editor to get real-time feedback.
+
+Finally, when you submit a Pull Request, they are run again by our continuous integration tools, but hopefully, your code is already clean!
+
+## License
+
+By contributing your code to the [dropzone-ui/react](https://github.com/dropzone-ui/react) GitHub repository, you agree to license your contribution under the [MIT license](/LICENSE).
diff --git a/README.md b/README.md
index c44636bf4179596cf1873d44255a284daaa3099a..a348f5814387611d007eb777656bbca04a381bd8 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,23 @@
+
+<a href="https://www.files-ui.com">
 <p align="center">
 <img src="https://user-images.githubusercontent.com/43678736/226257748-6ba2f8cf-59c5-40d1-a545-a388ddab0f68.png" width="150" height="150" alt="fui-logo"/>
 </p>
-<h1 align="center">Files ui - core</h1>
+</a>
+
+<h1 align="center">Files ui</h1>
+
+UI components for file uploas with [React js](https://react.dev/).
+**Files UI** is a complete library for handling files in the UI. You can validate and upload them.
 
-Base code for **Files UI** 
 
+<div align="center">
+
+[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/dropzone-ui/react/blob/HEAD/LICENSE)
+[![npm latest package](https://img.shields.io/npm/v/@dropzone-ui/react.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen)](https://www.npmjs.com/package/@dropzone-ui/react) [![Rate on Openbase](https://badges.openbase.com/js/rating/@dropzone-ui/react.svg)](https://openbase.com/js/@dropzone-ui/react?utm_source=embedded&utm_medium=badge&utm_campaign=rate-badge) [![kandi X-Ray](https://kandi.openweaver.com/badges/xray.svg)](https://kandi.openweaver.com/typescript/dropzone-ui/dropzone-ui-react) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
+[![GitHub Repo stars](https://img.shields.io/github/stars/dropzone-ui/react?label=Star%20me%20please%20:D&style=social)](https://github.com/dropzone-ui/react)
+
+</div>
 
 ## Installation
 
@@ -12,15 +25,28 @@ Base code for **Files UI**
 
 ```sh
 // with npm
-npm i @files-ui/core
+npm i @files-ui/react
 ```
 
 ```sh
 // with yarn
-yarn add @files-ui/core
+yarn add @files-ui/react
 ```
 
 ## License
 
 This project is licensed under the terms of the
 [MIT license](/LICENSE).
+
+<p align="center">
+<a href="https://github.com/files-ui/files-ui-react#">
+<img src="http://randojs.com/images/barsSmallTransparentBackground.gif" alt="Animated footer bars" width="100%"/>
+</a>
+</p>
+
+<br/>
+<p align="center">
+<a href="https://github.com/files-ui/files-ui-react#readme">
+<img src="http://randojs.com/images/backToTopButtonTransparentBackground.png" alt="Back to top" height="28"/>
+</a>
+</p>
diff --git a/package-lock.json b/package-lock.json
index 3ba5dec37556cf9281ddb255ead31dbd06ef2608..052c72b211e408e842353c53709522860382de0b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,13 +9,16 @@
       "version": "1.0.0",
       "license": "MIT",
       "dependencies": {
-        "@dynamicss/dynamicss": "^2.2.8"
+        "@dynamicss/dynamicss": "^2.2.8",
+        "theamazingunkowntext": "^1.0.2"
       },
       "devDependencies": {
         "@rollup/plugin-commonjs": "^24.0.1",
         "@rollup/plugin-node-resolve": "^15.0.1",
+        "@rollup/plugin-typescript": "^11.0.0",
         "@testing-library/jest-dom": "^5.16.5",
-        "@testing-library/react": "^14.0.0",
+        "@testing-library/react": "^12.1.5",
+        "autoprefixer": "^10.4.14",
         "identity-obj-proxy": "^3.0.0",
         "jest": "^29.5.0",
         "jest-environment-jsdom": "^29.5.0",
@@ -27,8 +30,9 @@
         "typescript": "^5.0.2"
       },
       "peerDependencies": {
-        "react": "^18.2.0",
-        "react-dom": "^18.2.0"
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.2 || ^18.0.0",
+        "react-dom": "^17.0.2 || ^18.0.0"
       }
     },
     "node_modules/@adobe/css-tools": {
@@ -1187,6 +1191,32 @@
         }
       }
     },
+    "node_modules/@rollup/plugin-typescript": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz",
+      "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==",
+      "dev": true,
+      "dependencies": {
+        "@rollup/pluginutils": "^5.0.1",
+        "resolve": "^1.22.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^2.14.0||^3.0.0",
+        "tslib": "*",
+        "typescript": ">=3.7.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        },
+        "tslib": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@rollup/pluginutils": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
@@ -1234,9 +1264,9 @@
       }
     },
     "node_modules/@testing-library/dom": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz",
-      "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==",
+      "version": "8.20.0",
+      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz",
+      "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==",
       "dev": true,
       "dependencies": {
         "@babel/code-frame": "^7.10.4",
@@ -1245,11 +1275,11 @@
         "aria-query": "^5.0.0",
         "chalk": "^4.1.0",
         "dom-accessibility-api": "^0.5.9",
-        "lz-string": "^1.5.0",
+        "lz-string": "^1.4.4",
         "pretty-format": "^27.0.2"
       },
       "engines": {
-        "node": ">=14"
+        "node": ">=12"
       }
     },
     "node_modules/@testing-library/dom/node_modules/chalk": {
@@ -1323,21 +1353,21 @@
       }
     },
     "node_modules/@testing-library/react": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz",
-      "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==",
+      "version": "12.1.5",
+      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
+      "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
       "dev": true,
       "dependencies": {
         "@babel/runtime": "^7.12.5",
-        "@testing-library/dom": "^9.0.0",
-        "@types/react-dom": "^18.0.0"
+        "@testing-library/dom": "^8.0.0",
+        "@types/react-dom": "<18.0.0"
       },
       "engines": {
-        "node": ">=14"
+        "node": ">=12"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "<18.0.0",
+        "react-dom": "<18.0.0"
       }
     },
     "node_modules/@tootallnate/once": {
@@ -1457,9 +1487,9 @@
       }
     },
     "node_modules/@types/node": {
-      "version": "18.15.7",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.7.tgz",
-      "integrity": "sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA==",
+      "version": "18.15.8",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz",
+      "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==",
       "dev": true
     },
     "node_modules/@types/prettier": {
@@ -1471,14 +1501,13 @@
     "node_modules/@types/prop-types": {
       "version": "15.7.5",
       "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
+      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
     },
     "node_modules/@types/react": {
       "version": "18.0.29",
       "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
       "integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
-      "dev": true,
+      "peer": true,
       "dependencies": {
         "@types/prop-types": "*",
         "@types/scheduler": "*",
@@ -1486,12 +1515,23 @@
       }
     },
     "node_modules/@types/react-dom": {
-      "version": "18.0.11",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
-      "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
+      "version": "17.0.19",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
+      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
       "dev": true,
       "dependencies": {
-        "@types/react": "*"
+        "@types/react": "^17"
+      }
+    },
+    "node_modules/@types/react-dom/node_modules/@types/react": {
+      "version": "17.0.53",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
+      "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
+      "dev": true,
+      "dependencies": {
+        "@types/prop-types": "*",
+        "@types/scheduler": "*",
+        "csstype": "^3.0.2"
       }
     },
     "node_modules/@types/resolve": {
@@ -1503,8 +1543,7 @@
     "node_modules/@types/scheduler": {
       "version": "0.16.3",
       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
-      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
-      "dev": true
+      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
     },
     "node_modules/@types/stack-utils": {
       "version": "2.0.1",
@@ -1667,6 +1706,39 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
       "dev": true
     },
+    "node_modules/autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+        }
+      ],
+      "dependencies": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
     "node_modules/available-typed-arrays": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -2137,8 +2209,7 @@
     "node_modules/csstype": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
-      "dev": true
+      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
     },
     "node_modules/data-urls": {
       "version": "3.0.2",
@@ -2288,9 +2359,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.4.339",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.339.tgz",
-      "integrity": "sha512-MSXHBJGcbBydq/DQDlpBeUKnJ6C7aTiNCTRpfDV5Iz0sNr/Ng6RJFloq82AAicp/SrmDq4zF6XsKG0B8Xwn1UQ==",
+      "version": "1.4.340",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz",
+      "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==",
       "dev": true
     },
     "node_modules/emittery": {
@@ -2563,6 +2634,19 @@
         "node": ">= 6"
       }
     },
+    "node_modules/fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "type": "patreon",
+        "url": "https://www.patreon.com/infusion"
+      }
+    },
     "node_modules/fs-extra": {
       "version": "10.1.0",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -4610,6 +4694,19 @@
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
       "dev": true
     },
+    "node_modules/nanoid": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
     "node_modules/natural-compare": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -4637,6 +4734,15 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/npm-run-path": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -4655,6 +4761,15 @@
       "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
       "dev": true
     },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/object-inspect": {
       "version": "1.12.3",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
@@ -4901,6 +5016,37 @@
         "node": ">=8"
       }
     },
+    "node_modules/postcss": {
+      "version": "8.4.21",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
+      "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "nanoid": "^3.3.4",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
     "node_modules/prelude-ls": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -4996,28 +5142,30 @@
       }
     },
     "node_modules/react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
       "peer": true,
       "dependencies": {
-        "loose-envify": "^1.1.0"
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
       },
       "engines": {
         "node": ">=0.10.0"
       }
     },
     "node_modules/react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
       "peer": true,
       "dependencies": {
         "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.0"
+        "object-assign": "^4.1.1",
+        "scheduler": "^0.20.2"
       },
       "peerDependencies": {
-        "react": "^18.2.0"
+        "react": "17.0.2"
       }
     },
     "node_modules/react-is": {
@@ -5324,12 +5472,13 @@
       }
     },
     "node_modules/scheduler": {
-      "version": "0.23.0",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
       "peer": true,
       "dependencies": {
-        "loose-envify": "^1.1.0"
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
       }
     },
     "node_modules/semver": {
@@ -5659,6 +5808,11 @@
         "node": "*"
       }
     },
+    "node_modules/theamazingunkowntext": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/theamazingunkowntext/-/theamazingunkowntext-1.0.2.tgz",
+      "integrity": "sha512-ayfiI3yuVDYqt1Fd4n5hA8WRV1nvmzo+Hdtaqb+ERXroGpaEulorIeMYRhC/qQOgna3Jq6tlv453ARDwIAuveA=="
+    },
     "node_modules/tmpl": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -7067,6 +7221,16 @@
         "resolve": "^1.22.1"
       }
     },
+    "@rollup/plugin-typescript": {
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz",
+      "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^5.0.1",
+        "resolve": "^1.22.1"
+      }
+    },
     "@rollup/pluginutils": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
@@ -7103,9 +7267,9 @@
       }
     },
     "@testing-library/dom": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz",
-      "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==",
+      "version": "8.20.0",
+      "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz",
+      "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.10.4",
@@ -7114,7 +7278,7 @@
         "aria-query": "^5.0.0",
         "chalk": "^4.1.0",
         "dom-accessibility-api": "^0.5.9",
-        "lz-string": "^1.5.0",
+        "lz-string": "^1.4.4",
         "pretty-format": "^27.0.2"
       },
       "dependencies": {
@@ -7173,14 +7337,14 @@
       }
     },
     "@testing-library/react": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz",
-      "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==",
+      "version": "12.1.5",
+      "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz",
+      "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.12.5",
-        "@testing-library/dom": "^9.0.0",
-        "@types/react-dom": "^18.0.0"
+        "@testing-library/dom": "^8.0.0",
+        "@types/react-dom": "<18.0.0"
       }
     },
     "@tootallnate/once": {
@@ -7297,9 +7461,9 @@
       }
     },
     "@types/node": {
-      "version": "18.15.7",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.7.tgz",
-      "integrity": "sha512-LFmUbFunqmBn26wJZgZPYZPrDR1RwGOu2v79Mgcka1ndO6V0/cwjivPTc4yoK6n9kmw4/ls1r8cLrvh2iMibFA==",
+      "version": "18.15.8",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.8.tgz",
+      "integrity": "sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==",
       "dev": true
     },
     "@types/prettier": {
@@ -7311,14 +7475,13 @@
     "@types/prop-types": {
       "version": "15.7.5",
       "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
-      "dev": true
+      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
     },
     "@types/react": {
       "version": "18.0.29",
       "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
       "integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
-      "dev": true,
+      "peer": true,
       "requires": {
         "@types/prop-types": "*",
         "@types/scheduler": "*",
@@ -7326,12 +7489,25 @@
       }
     },
     "@types/react-dom": {
-      "version": "18.0.11",
-      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
-      "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
+      "version": "17.0.19",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz",
+      "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==",
       "dev": true,
       "requires": {
-        "@types/react": "*"
+        "@types/react": "^17"
+      },
+      "dependencies": {
+        "@types/react": {
+          "version": "17.0.53",
+          "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
+          "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
+          "dev": true,
+          "requires": {
+            "@types/prop-types": "*",
+            "@types/scheduler": "*",
+            "csstype": "^3.0.2"
+          }
+        }
       }
     },
     "@types/resolve": {
@@ -7343,8 +7519,7 @@
     "@types/scheduler": {
       "version": "0.16.3",
       "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
-      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==",
-      "dev": true
+      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
     },
     "@types/stack-utils": {
       "version": "2.0.1",
@@ -7477,6 +7652,20 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
       "dev": true
     },
+    "autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
     "available-typed-arrays": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -7823,8 +8012,7 @@
     "csstype": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
-      "dev": true
+      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
     },
     "data-urls": {
       "version": "3.0.2",
@@ -7939,9 +8127,9 @@
       }
     },
     "electron-to-chromium": {
-      "version": "1.4.339",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.339.tgz",
-      "integrity": "sha512-MSXHBJGcbBydq/DQDlpBeUKnJ6C7aTiNCTRpfDV5Iz0sNr/Ng6RJFloq82AAicp/SrmDq4zF6XsKG0B8Xwn1UQ==",
+      "version": "1.4.340",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz",
+      "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==",
       "dev": true
     },
     "emittery": {
@@ -8144,6 +8332,12 @@
         "mime-types": "^2.1.12"
       }
     },
+    "fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true
+    },
     "fs-extra": {
       "version": "10.1.0",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
@@ -9664,6 +9858,13 @@
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
       "dev": true
     },
+    "nanoid": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+      "dev": true,
+      "peer": true
+    },
     "natural-compare": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -9688,6 +9889,12 @@
       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
       "dev": true
     },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "dev": true
+    },
     "npm-run-path": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -9703,6 +9910,12 @@
       "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==",
       "dev": true
     },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "peer": true
+    },
     "object-inspect": {
       "version": "1.12.3",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
@@ -9876,6 +10089,24 @@
         "find-up": "^4.0.0"
       }
     },
+    "postcss": {
+      "version": "8.4.21",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
+      "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+      "dev": true,
+      "peer": true,
+      "requires": {
+        "nanoid": "^3.3.4",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
     "prelude-ls": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -9945,22 +10176,24 @@
       }
     },
     "react": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
+      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
       "peer": true,
       "requires": {
-        "loose-envify": "^1.1.0"
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
       }
     },
     "react-dom": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
+      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
       "peer": true,
       "requires": {
         "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.0"
+        "object-assign": "^4.1.1",
+        "scheduler": "^0.20.2"
       }
     },
     "react-is": {
@@ -10184,12 +10417,13 @@
       }
     },
     "scheduler": {
-      "version": "0.23.0",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
       "peer": true,
       "requires": {
-        "loose-envify": "^1.1.0"
+        "loose-envify": "^1.1.0",
+        "object-assign": "^4.1.1"
       }
     },
     "semver": {
@@ -10445,6 +10679,11 @@
         }
       }
     },
+    "theamazingunkowntext": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/theamazingunkowntext/-/theamazingunkowntext-1.0.2.tgz",
+      "integrity": "sha512-ayfiI3yuVDYqt1Fd4n5hA8WRV1nvmzo+Hdtaqb+ERXroGpaEulorIeMYRhC/qQOgna3Jq6tlv453ARDwIAuveA=="
+    },
     "tmpl": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
diff --git a/package.json b/package.json
index e966f5218be3f843b2ef66580fa83c39ea33df03..83f84fd9503c6c521e90e06f2bbbfde9447e8738 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@files-ui/react",
   "version": "1.0.0",
-  "description": "UI components and uploader for files with react js / Ui File Upload library",
+  "description": "UI components for file uploas with React js",
   "main": "./build/index.js",
   "module": "./build/index.es.js",
   "types": "./build/index.d.ts",
@@ -43,12 +43,13 @@
     "url": "https://github.com/files-ui/files-ui-react/issues"
   },
   "homepage": "https://www.files-ui.com",
-  "sideEffects": false,
   "devDependencies": {
     "@rollup/plugin-commonjs": "^24.0.1",
     "@rollup/plugin-node-resolve": "^15.0.1",
+    "@rollup/plugin-typescript": "^11.0.0",
     "@testing-library/jest-dom": "^5.16.5",
-    "@testing-library/react": "^14.0.0",
+    "@testing-library/react": "^12.1.5",
+    "autoprefixer": "^10.4.14",
     "identity-obj-proxy": "^3.0.0",
     "jest": "^29.5.0",
     "jest-environment-jsdom": "^29.5.0",
@@ -60,10 +61,15 @@
     "typescript": "^5.0.2"
   },
   "peerDependencies": {
-    "react": "^18.2.0",
-    "react-dom": "^18.2.0"
+    "@types/react": "^17.0.0 || ^18.0.0",
+    "react": "^17.0.2 || ^18.0.0",
+    "react-dom": "^17.0.2 || ^18.0.0"
   },
   "dependencies": {
-    "@dynamicss/dynamicss": "^2.2.8"
+    "@dynamicss/dynamicss": "^2.2.8",
+    "theamazingunkowntext": "^1.0.2"
+  },
+  "publishConfig": {
+    "access": "public"
   }
 }
diff --git a/rollup.config.js b/rollup.config.js
index 88df14dd65b57ec35379abb7a858710e1faed391..b0622e9b9e2d4fc1269c2784ec3658411079da3c 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -6,7 +6,7 @@ import sass from "rollup-plugin-sass";
 import packageJson from "./package.json";
 //import jsx from 'rollup-plugin-jsx'
 //import json from "rollup-plugin-json";
-import { terser } from "rollup-plugin-terser";
+//import { terser } from "rollup-plugin-terser";
 export default {
   input: "./src/index.ts",
   output: [
@@ -23,13 +23,14 @@ export default {
   ],
   plugins: [
     sass({ insert: true }),
+    
     peerDepsExternal(),
     resolve(
      // { preferBuiltins: true, mainFields: ['browser'] }
       ),
     commonjs(),
     typescript(),
-    terser(),
+    //terser(),
     //json(),
     // jsx( {factory: 'React.createElement'} ),
   ],
diff --git a/src/Avatar/Avatar.tsx b/src/Avatar/Avatar.tsx
index e956c12e85fd2b5d6e78fe64748b23cb7c1c681b..1999208ee6db702e1e1868b37e904e74a81083f5 100644
--- a/src/Avatar/Avatar.tsx
+++ b/src/Avatar/Avatar.tsx
@@ -7,6 +7,7 @@ import { useAvatarStyle } from "./useAvatarStyle";
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
 import Layer from "../FileMosaic/components/file-mosaic-layer/Layer";
 import ImagePreview from "../ImagePreview/ImagePreview";
+import { FileIdGenerator } from "theamazingunkowntext";
 const Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {
   const {
     readOnly,
@@ -30,18 +31,20 @@ const Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {
     style,
     ...rest
   } = mergeProps(props, defaultAvatarProps);
-  console.log("Avatar smartImgFit", smartImgFit);
+  //console.log("Avatar smartImgFit", smartImgFit);
 
   const inputRef: React.RefObject<HTMLInputElement> =
     React.useRef<HTMLInputElement>(null);
 
-  const avatarId = React.useId();
+  //const avatarId = React.useId();
+  const avatarId = React.useMemo(() => FileIdGenerator.getNextId() + "", []);
+
   const finalClassNameBorder: string | undefined = useAvatarStyle(
-    avatarId.replaceAll(":", ""),
+    avatarId.replace(":", "").replace(":", ""),
     borderRadius
   );
 
-  console.log("finalClassNameBorder", finalClassNameBorder);
+  //console.log("finalClassNameBorder", finalClassNameBorder);
 
   const handleClick = () => {
     // alert("Agregar fotooooooo");
@@ -63,7 +66,7 @@ const Avatar: React.FC<AvatarProps> = (props: AvatarProps) => {
   const handleError: React.ReactEventHandler<HTMLImageElement> = (
     evt: React.SyntheticEvent<HTMLImageElement, Event>
   ) => {
-    console.log("Avatar error", evt);
+    //console.log("Avatar error", evt);
     onError?.(evt);
   };
 
diff --git a/src/Avatar/index.ts b/src/Avatar/index.ts
index 81cfdf3693b271542d3e875c09ba7f80a2394c73..cc7320ba5597d31971949c7b42c23bebb910103a 100644
--- a/src/Avatar/index.ts
+++ b/src/Avatar/index.ts
@@ -1,2 +1,4 @@
 export { default as Avatar } from "./Avatar";
-export * from "./Avatar";
\ No newline at end of file
+export * from "./Avatar";
+
+export type { AvatarProps } from "./AvatarProps";
diff --git a/src/Avatar/package.json b/src/Avatar/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..dbaeed3fd9bdfc0d2af8827437b40dbf9ef313d0
--- /dev/null
+++ b/src/Avatar/package.json
@@ -0,0 +1,5 @@
+{
+    "module": "./index.js",
+    "main": "../node/List/index.js",
+    "types": "./index.d.ts"
+}
\ No newline at end of file
diff --git a/src/Avatar/useAvatarStyle.ts b/src/Avatar/useAvatarStyle.ts
index e8cb5af35045c2c15eb9a14be8bee67fcc7864f1..41d462d3d9a689c0f064cb2c4c7c757468165bdd 100644
--- a/src/Avatar/useAvatarStyle.ts
+++ b/src/Avatar/useAvatarStyle.ts
@@ -5,7 +5,7 @@ export const useAvatarStyle = (avatarId: string, borderRadius: string | undefine
     const [idAvatarStyles, setIdAvatarStyles] = React.useState<string>("");
     const [styleInjected, setStyleInjected] = React.useState<boolean>(false);
     const [classNameBorder, setClassNameBorder] = React.useState<string | undefined>(undefined);
-console.log("borderRadius",borderRadius);
+    //console.log("borderRadius",borderRadius);
     /**
      * creates a dynamic css sheet for avatar
      * @param borderRadius the border radius
@@ -29,9 +29,9 @@ console.log("borderRadius",borderRadius);
 
     React.useEffect(() => {
         return () => {
-            console.log("avatar, deleting init", styleInjected, idAvatarStyles);
+            //console.log("avatar, deleting init", styleInjected, idAvatarStyles);
             if (styleInjected) {
-                console.log("avatar, catch css delete");
+                //console.log("avatar, catch css delete");
 
                 DynamiCSS.removeStyleSheet(idAvatarStyles);
             }
@@ -60,24 +60,24 @@ console.log("borderRadius",borderRadius);
                     setStyleInjected(true);
                 }
             }
-        } else  if (!styleInjected) {
-                // check if classname was added
-                // if yes, edit css
-                // if not insert css
-                console.log("avatar, no css, inserting");
-                idStyle = DynamiCSS.insertStyleSheet(styleSheet);
-                console.log("avatar, no css, inserted OK", idStyle);
+        } else if (!styleInjected) {
+            // check if classname was added
+            // if yes, edit css
+            // if not insert css
+            //console.log("avatar, no css, inserting");
+            idStyle = DynamiCSS.insertStyleSheet(styleSheet);
+            //console.log("avatar, no css, inserted OK", idStyle);
 
-                setIdAvatarStyles(idStyle);
+            setIdAvatarStyles(idStyle);
 
-                if (idStyle !== "") {
-                    setStyleInjected(true);
-                }
-            } else {
-                console.log("avatar, catch css, modifiying", idAvatarStyles);
-                DynamiCSS.editStyleSheet(idAvatarStyles, styleSheet.sheetRules || []);
+            if (idStyle !== "") {
+                setStyleInjected(true);
             }
-        setClassNameBorder("fui-avatar-border-"+avatarId);
+        } else {
+            //console.log("avatar, catch css, modifiying", idAvatarStyles);
+            DynamiCSS.editStyleSheet(idAvatarStyles, styleSheet.sheetRules || []);
+        }
+        setClassNameBorder("fui-avatar-border-" + avatarId);
         // eslint-disable-next-line
     }, [borderRadius]);
 
diff --git a/src/DownloadHidden/DownloadHidden.tsx b/src/DownloadHidden/DownloadHidden.tsx
index 966c226a1aa1f6b44ed55583b06b453193b52fd5..72958c03b48bf08c1ee7cc0a33e9a7432309ce39 100644
--- a/src/DownloadHidden/DownloadHidden.tsx
+++ b/src/DownloadHidden/DownloadHidden.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-//import { handleClickUtil } from "../../core";
+//import { handleClickUtil } from "theamazingunkowntext"
 export type DownloadHiddenProps = {
   downloadUrl?: string;
   anchorRef: React.RefObject<HTMLAnchorElement>;
diff --git a/src/DropLayer/utils/dropLayerDynamicStyle.ts b/src/DropLayer/utils/dropLayerDynamicStyle.ts
index c81aae7a12a6efa7f61b91f027759198da435f67..c9c8a722a1290478821a7728fb46a6aab28c5f06 100644
--- a/src/DropLayer/utils/dropLayerDynamicStyle.ts
+++ b/src/DropLayer/utils/dropLayerDynamicStyle.ts
@@ -1,4 +1,4 @@
-import { completeAsureColor } from "../../core";
+import { completeAsureColor } from "theamazingunkowntext"
 import { DEFAULT_BORDER_RADIUS } from "../../Dropzone/components/dropzone/DropzoneProps";
 
 
diff --git a/src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx b/src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
index 4b5cdc4fb7ccd3167b596d6f901b712eb8e56f06..dfc069cdc6e860392b5b59e4870f9a465e231153 100644
--- a/src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
+++ b/src/Dropzone/components/DropzoneButtons/DropzoneButtons.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { addClassName, Localization } from "../../../core";
+import { addClassName, Localization } from "theamazingunkowntext"
 import { MaterialButton } from "../../../MaterialButton";
 import { ActionButtonItem, DropzoneActions } from "../dropzone/DropzoneProps";
 import "./DropzoneButtons.scss";
@@ -75,6 +75,9 @@ const DropzoneButtons: React.FC<DropzoneButtonsProps> = (
   return (
     <div className={finalClassName} style={containerStyle}>
       {actionButtonsList.map(
+
+
+
         (actionButtonProps: ActionButtonItem, index: number) => {
           const { children, label, resetStyles, className, style, onClick } =
             actionButtonProps;
@@ -91,7 +94,12 @@ const DropzoneButtons: React.FC<DropzoneButtonsProps> = (
             </MaterialButton>
           );
         }
-      )}
+      
+      
+      
+        )
+      
+      }
     </div>
   );
 };
diff --git a/src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx b/src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
index 99be7e75990fd620599bb98fc217a6f6877f1abd..e5af2f274ed575136e385ea3b3d5526eabc0dc51 100644
--- a/src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
+++ b/src/Dropzone/components/DropzoneChildren/DropzoneChildren.tsx
@@ -3,7 +3,7 @@ import {
   DropzoneLocalizerSelector,
   Localization,
   LocalLabels,
-} from "../../../core";
+} from "theamazingunkowntext"
 import "./DropzoneChildren.scss";
 
 declare type DropzoneChildrenProps = {
diff --git a/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx b/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
index 486a47f0e9aa272435d15e0f5269cba2a96a705c..76ea8fd04602b836c5cb4d5609c5aa85701de302 100644
--- a/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
+++ b/src/Dropzone/components/DropzoneDisabledLayer/DropzoneDisabledLayer.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import {
   addClassName,
-} from "../../../core";
+} from "theamazingunkowntext"
 import {
   handleClickUtil,
   handleDragUtil,
diff --git a/src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx b/src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
index 159ae739d41643937146f6d784d4c9aeb51cc599..620a3a9d66d7ffa561ca1c1838d742df406bc06c 100644
--- a/src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
+++ b/src/Dropzone/components/DropzoneFooter/DropzoneFooter.tsx
@@ -5,7 +5,7 @@ import {
   FunctionLabel,
   Localization,
   LocalLabels,
-} from "../../../core";
+} from "theamazingunkowntext"
 import { handleClickUtil } from "../../../utils";
 import { FooterConfig } from "../dropzone/DropzoneProps";
 
@@ -57,7 +57,7 @@ const DropzoneFooter: React.FC<DropzoneFooterProps> = (
         borderBotomLeftRadius: borderRadius,
         borderBotomRightRadius: borderRadius,
       };
-  console.log("files-ui-footer", finalStyle);
+  //console.log("files-ui-footer", finalStyle);
 
   return (
     <div className={finalClassName} onClick={handleClick} style={finalStyle}>
diff --git a/src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx b/src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
index 2361326d53b5243527fc7e545056a12ec9796371..260bce957800794d8672b882a1dd7036e4b38be1 100644
--- a/src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
+++ b/src/Dropzone/components/DropzoneHeader/DropzoneHeader.tsx
@@ -7,7 +7,7 @@ import {
   FunctionLabel,
   Localization,
   LocalLabels,
-} from "../../../core";
+} from "theamazingunkowntext"
 import { UploadingProcess, Clean, Cancel, Upload } from "../../../icons";
 
 export type DropzoneHeaderProps = {
@@ -125,10 +125,10 @@ const DropzoneHeader: React.FC<DropzoneHeaderProps> = (
         borderTopLeftRadius: borderRadius,
         borderTopRightRadius: borderRadius,
       };
-  console.log("headerx resetStyles", resetStyles);
-  console.log("headerx style", style);
+  //console.log("headerx resetStyles", resetStyles);
+  //console.log("headerx style", style);
 
-  console.log("headerx finalStyle", finalStyle);
+  //console.log("headerx finalStyle", finalStyle);
   return (
     <div className={finalClassName} onClick={handleClick} style={finalStyle}>
       {makeHeader().map((HeaderItem, index) => (
diff --git a/src/Dropzone/components/dropzone/Dropzone.tsx b/src/Dropzone/components/dropzone/Dropzone.tsx
index f7b2610f55edcf0f5f3534cb23281b7c7e2dc326..3343cc47f94c6ee7abfe1150c5d08fbb73b8f8d4 100644
--- a/src/Dropzone/components/dropzone/Dropzone.tsx
+++ b/src/Dropzone/components/dropzone/Dropzone.tsx
@@ -28,8 +28,8 @@ import {
   unexpectedErrorUploadResult,
   getRandomInt,
   addClassName,
-  Localization,completeAsureColor,
-} from "../../../core";
+  Localization,completeAsureColor, FileIdGenerator,
+} from "theamazingunkowntext"
 import { mergeProps } from "../../../overridable";
 import InputHidden from "../../../InputHidden/InputHidden";
 import {
@@ -186,7 +186,8 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
   const [localMessage, setLocalMessage] = React.useState<string>("");
   //Id for uploding through FuiFileManager
   //const dropzoneId: string | number = useDropzoneFileListID();
-  const dropzoneId: string | number = React.useId();
+ // const dropzoneId: string | number = React.useId();
+  const dropzoneId: string = React.useMemo(() => FileIdGenerator.getNextId() + "",[]);
   //React.useId();
   //Flag that determines whether to validate or not
   const validateFilesFlag: boolean = isValidateActive(
@@ -235,10 +236,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
    * @returns nothing
    */
   const uploadfiles = async (localFiles: ExtFile[]): Promise<void> => {
-    console.log(
-      "incomming extfiles uploadfiles localFiles",
-      localFiles.map((x) => x.uploadStatus)
-    );
+
     //set uploading flag to true
     setIsUploading(true);
 
@@ -262,14 +260,12 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
     let arrOfExtFilesInstances: ExtFileInstance[] = [];
 
     const totalNumber: number = localFiles.length;
-    console.log("upload start: totalNumber", totalNumber);
-
+   
     const missingUpload: number = localFiles.filter((extFile: ExtFile) =>
       isUploadAbleExtFile(extFile, validateFilesFlag)
     ).length;
 
-    console.log("upload start: missingUpload", missingUpload);
-
+ 
     let totalRejected: number = 0;
     let currentCountUpload: number = 0;
 
@@ -278,7 +274,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
 
     //no missing to upload
     if (!(missingUpload > 0)) {
-      console.log("upload start: noFilesMessage", missingUpload);
+     
       setTimeout(() => {
         if (noMissingFilesLabel)
           setLocalMessage(DropzoneLocalizer.noFilesMessage as string);
@@ -293,7 +289,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
       setLocalMessage(uploadingMessenger(`${missingUpload}/${totalNumber}`));
     //  setIsUploading(true);
     //PREPARING stage
-    console.log("validateFilesFlag", validateFilesFlag);
+    
     onUploadStart?.(localFiles);
 
     arrOfExtFilesInstances =
@@ -308,33 +304,23 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
       x.toExtFile()
     );
 
-    console.log(
-      "FileManagerLog after setFileListMapPreparing",
-      arrOfExtFilesInstances
-    );
-
+  
     //CHANGE (o alejo el isUploading o lo alejo para que tenga m,as tiempo antes de la respuyesta)
     // setIsUploading(true);
     handleFilesChange(newExtFileLocal, true);
 
-    console.log("FileManagerLog before sleep", arrOfExtFilesInstances);
+   
     //AWAIT when preparing time is given
     //general sleep for all files
     await sleepPreparing(preparingTime);
 
-    console.log("FileManagerLog after sleep", arrOfExtFilesInstances);
-
     //return;
     let serverResponses: Array<ExtFile> = [];
     //Uplad files one by one
     for (let i = 0; i < arrOfExtFilesInstances.length; i++) {
       const currentExtFileInstance: ExtFileInstance = arrOfExtFilesInstances[i];
 
-      console.log(
-        "FileManagerLog currentExtFileInstance " + i,
-        currentExtFileInstance
-      );
-
+     
       if (
         currentExtFileInstance.uploadStatus === "preparing" &&
         !currentExtFileInstance.extraData?.deleted
@@ -389,7 +375,6 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
         }
 
         const uploadedFile = uploadResponse;
-        console.log("fake uploadResponse uploadedFile", uploadedFile);
 
         //update instances
         currentExtFileInstance.uploadStatus = uploadedFile.uploadStatus;
@@ -430,8 +415,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
   const handleAbortUpload = () => {
     const listExtFileLocal: ExtFileInstance[] | undefined =
       ExtFileManager.getExtFileInstanceList(dropzoneId);
-    console.log("Aborting", listExtFileLocal, dropzoneId);
-
+    
     if (!listExtFileLocal) return;
     listExtFileLocal.forEach((extFileInstance: ExtFileInstance) => {
       if (
@@ -505,10 +489,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
     extFileList: ExtFile[],
     isUploading?: boolean
   ): void => {
-    console.log(
-      "handleFilesChange",
-      extFileList.map((F) => F.uploadMessage)
-    );
+    
     let finalExtFileList: ExtFile[] =
       behaviour === "add" && !isUploading
         ? [...localFiles, ...extFileList]
@@ -519,7 +500,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
       setLocalFiles(finalExtFileList);
     }
     if (autoUpload && !isUploading) {
-      console.log("autoUpload", finalExtFileList);
+      
       uploadfiles(finalExtFileList);
     }
   };
@@ -563,8 +544,8 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
    */
   const outerFuiValidation = (fuiFileListToValidate: ExtFile[]): ExtFile[] => {
     const localValidator: FileValidatorProps = { maxFileSize, accept };
-    console.log("validatedFuiFileList pre", fuiFileListToValidate);
-
+   
+    
     let finalNumberOfValids: number = numberOfValidFiles;
     if (behaviour === "replace") {
       //re-start number of valids
@@ -579,7 +560,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
       maxFiles,
       localization
     );
-    console.log("validatedFuiFileList aft", validatedFuiFileList);
+  
     return validatedFuiFileList;
   };
 
@@ -686,7 +667,6 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
       setLocalFiles(localFiles.filter((f) => f.valid));
     }
   };
-  console.log("Dropzone styleHeader", styleHeader);
 
   const finalDropzoneClassNameBorder: string | undefined = !dropzoneClassName
     ? undefined
diff --git a/src/Dropzone/components/dropzone/DropzoneProps.ts b/src/Dropzone/components/dropzone/DropzoneProps.ts
index df0714536c82a7bd52bf7d1fbe1b3cfd758dd9a3..9d760b1a0dd6a34896fe73176be1324e2dad96e3 100644
--- a/src/Dropzone/components/dropzone/DropzoneProps.ts
+++ b/src/Dropzone/components/dropzone/DropzoneProps.ts
@@ -1,4 +1,4 @@
-import { ExtFile, ValidateFileResponse, Localization, UploadConfig } from "../../../core";
+import { ExtFile, ValidateFileResponse, Localization, UploadConfig } from "theamazingunkowntext"
 
 import * as React from "react";
 import { OverridableComponentProps } from "../../../overridable";
@@ -216,7 +216,7 @@ export interface DropzoneFullProps extends OverridableComponentProps {
 
 
 export type HeaderConfig = {
-  customHeader?: JSX.Element;
+  customHeader?: React.ReactNode;
   deleteFiles?: boolean;
   cleanFiles?: boolean;
   uploadFiles?: boolean;
@@ -246,9 +246,9 @@ export type FooterConfig = {
    */
   noMissingFilesLabel?: boolean;
 
-  customMessage?: JSX.Element;
+  customMessage?: React.ReactNode;
 
-  customFooter?: JSX.Element;
+  customFooter?: React.ReactNode;
 
   style?: React.CSSProperties;
   className?: string;
@@ -257,7 +257,7 @@ export type FooterConfig = {
 
 
 export type ActionButtonItem = {
-  children?: JSX.Element;
+  children?: React.ReactNode;
   label?: string;
   style?: React.CSSProperties;
   className?: string;
diff --git a/src/FileCard/FileCard.tsx b/src/FileCard/FileCard.tsx
index de6a33e60c12322736878d1dc8da60f0f8d0d129..4f27c556bf84a33d779785cdd88674ecbac9d176 100644
--- a/src/FileCard/FileCard.tsx
+++ b/src/FileCard/FileCard.tsx
@@ -9,7 +9,7 @@ import {
   Localization,
   //handleClickUtil,
   shrinkWord,
-} from "../core";
+} from "theamazingunkowntext"
 
 import FileCardRightActions from "./components/FileCardRightActions";
 import FileCardInfoLayer from "./components/FileCardInfoLayer";
@@ -46,7 +46,7 @@ const makeFileCardClassName = (
   className: string | undefined,
   clickable?: boolean
 ): string => {
-  console.log("FileCard makeFileCardClassName", elevation, darkMode, className);
+  //console.log("FileCard makeFileCardClassName", elevation, darkMode, className);
   let finalClassName: string =
     "files-ui-file-card-main-container files-ui-tooltip card";
 
@@ -60,7 +60,7 @@ const makeFileCardClassName = (
   if (className) {
     finalClassName += ` ${className}`;
   }
-  console.log("FileCard finalClassName", finalClassName);
+  //console.log("FileCard finalClassName", finalClassName);
 
   return finalClassName;
 };
@@ -124,7 +124,7 @@ const FileCard: React.FC<FileCardProps> = (props: FileCardProps) => {
     locProps !== undefined ? locProps : locContext;
   const darkMode: boolean | undefined =
     darkModeProp !== undefined ? darkModeProp : darkModeContext;
-  console.log("globalConfig", darkMode, icons);
+  //console.log("globalConfig", darkMode, icons);
 
   //ref for anchor element
   const downloadRef = React.useRef<HTMLAnchorElement>(null);
@@ -196,7 +196,7 @@ const FileCard: React.FC<FileCardProps> = (props: FileCardProps) => {
   const isUploading: boolean = useIsUploading(uploadStatus);
 
   React.useEffect(() => {
-    //console.log("Change isUploading", isUploading);
+    ////console.log("Change isUploading", isUploading);
     if (isUploading && showInfo) handleCloseInfo();
 
     // eslint-disable-next-line
diff --git a/src/FileCard/components/FileCardInfoLayer.tsx b/src/FileCard/components/FileCardInfoLayer.tsx
index 526ef80aa32785dc854c6bef5670127892161d94..475bf5dcfe0bd1d16f38572217d9bf0eaff6eaae 100644
--- a/src/FileCard/components/FileCardInfoLayer.tsx
+++ b/src/FileCard/components/FileCardInfoLayer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { FileMosaicInfoLayerProps } from "../../FileMosaic";
 import { Cancel } from "../../icons";
 type FileCardInfoLayerProps = FileMosaicInfoLayerProps;
@@ -7,10 +7,10 @@ const FileCardInfoLayer: React.FC<FileCardInfoLayerProps> = (
   props: FileCardInfoLayerProps
 ) => {
   const {
-    valid,
+    //valid,
     localization,
     onCloseInfo,
-    uploadStatus,
+   // uploadStatus,
     localName,
     sizeFormatted,
     localType,
diff --git a/src/FileCard/components/FileCardUploadLayer.tsx b/src/FileCard/components/FileCardUploadLayer.tsx
index 013d20a87289a0d86bb9da43877ee149ec5b2c99..6aeeb3cb7ced66bc7d3282c72bd7f92fef59a1f5 100644
--- a/src/FileCard/components/FileCardUploadLayer.tsx
+++ b/src/FileCard/components/FileCardUploadLayer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { Localization, UPLOADSTATUS } from "../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 import {
   AbortedStatus,
   EmptyStatus,
diff --git a/src/FileInputButton/FileInputButton.tsx b/src/FileInputButton/FileInputButton.tsx
index 0a7a275a6a69fa32f27f646f49fa6b35f62803ff..8b3fd566df0c7d163fd9222e64a6108530f2db6c 100644
--- a/src/FileInputButton/FileInputButton.tsx
+++ b/src/FileInputButton/FileInputButton.tsx
@@ -22,7 +22,8 @@ import {
   fileListToExtFileArray,
   toUploadableExtFileList,
   cleanInput,
-} from "../core";
+  FileIdGenerator,
+} from "theamazingunkowntext"
 import { DropzoneActions } from "../Dropzone/components/dropzone/DropzoneProps";
 import DropzoneButtons from "../Dropzone/components/DropzoneButtons/DropzoneButtons";
 import { FilesUiContext } from "../FilesUiProvider/FilesUiContext";
@@ -136,7 +137,8 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
   const [isUploading, setIsUploading] = React.useState<boolean>(false);
 
   //Id for uploding through FuiFileManager
-  const inputButtonId: string | number = React.useId();
+  //const inputButtonId: string | number = React.useId();
+  const inputButtonId: string = React.useMemo(() => FileIdGenerator.getNextId() + "",[]);
   //Flag that determines whether to validate or not
   const validateFilesFlag: boolean = isValidateActive(
     accept,
@@ -185,10 +187,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
    * @returns nothing
    */
   const uploadfiles = async (localFiles: ExtFile[]): Promise<void> => {
-    console.log(
-      "incomming extfiles uploadfiles localFiles",
-      localFiles.map((x) => x.uploadStatus)
-    );
+   
     //set uploading flag to true
     setIsUploading(true);
 
@@ -207,18 +206,18 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
     // initialize a new list of ExtFileInstances
     let arrOfExtFilesInstances: ExtFileInstance[] = [];
 
-    const totalNumber: number = localFiles.length;
-    console.log("upload start: totalNumber", totalNumber);
+    //const totalNumber: number = localFiles.length;
+    //console.log("upload start: totalNumber", totalNumber);
 
     const missingUpload: number = localFiles.filter((extFile: ExtFile) =>
       isUploadAbleExtFile(extFile, validateFilesFlag)
     ).length;
 
-    console.log("upload start: missingUpload", missingUpload);
+    //console.log("upload start: missingUpload", missingUpload);
 
     //no missing to upload
     if (!(missingUpload > 0)) {
-      console.log("upload start: noFilesMessage", missingUpload);
+      //console.log("upload start: noFilesMessage", missingUpload);
 
       setIsUploading(false);
 
@@ -227,7 +226,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
 
     //  setIsUploading(true);
     //PREPARING stage
-    console.log("validateFilesFlag", validateFilesFlag);
+    //console.log("validateFilesFlag", validateFilesFlag);
     onUploadStart?.(localFiles);
 
     arrOfExtFilesInstances =
@@ -242,21 +241,17 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
       x.toExtFile()
     );
 
-    console.log(
-      "FileManagerLog after setFileListMapPreparing",
-      arrOfExtFilesInstances
-    );
 
     //CHANGE (o alejo el isUploading o lo alejo para que tenga m,as tiempo antes de la respuyesta)
     // setIsUploading(true);
     handleFilesChange(newExtFileLocal, true);
 
-    console.log("FileManagerLog before sleep", arrOfExtFilesInstances);
+    //console.log("FileManagerLog before sleep", arrOfExtFilesInstances);
     //AWAIT when preparing time is given
     //general sleep for all files
     await sleepPreparing(preparingTime);
 
-    console.log("FileManagerLog after sleep", arrOfExtFilesInstances);
+    //console.log("FileManagerLog after sleep", arrOfExtFilesInstances);
 
     //return;
     let serverResponses: Array<ExtFile> = [];
@@ -264,10 +259,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
     for (let i = 0; i < arrOfExtFilesInstances.length; i++) {
       const currentExtFileInstance: ExtFileInstance = arrOfExtFilesInstances[i];
 
-      console.log(
-        "FileManagerLog currentExtFileInstance " + i,
-        currentExtFileInstance
-      );
+   
 
       if (
         currentExtFileInstance.uploadStatus === "preparing" &&
@@ -317,7 +309,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
         }
 
         const uploadedFile = uploadResponse;
-        console.log("fake uploadResponse uploadedFile", uploadedFile);
+        //console.log("fake uploadResponse uploadedFile", uploadedFile);
 
         //update instances
         currentExtFileInstance.uploadStatus = uploadedFile.uploadStatus;
@@ -346,7 +338,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
   const handleAbortUpload = () => {
     const listExtFileLocal: ExtFileInstance[] | undefined =
       ExtFileManager.getExtFileInstanceList(inputButtonId);
-    console.log("Aborting", listExtFileLocal, inputButtonId);
+    //console.log("Aborting", listExtFileLocal, inputButtonId);
 
     if (!listExtFileLocal) return;
     listExtFileLocal.forEach((extFileInstance: ExtFileInstance) => {
@@ -391,10 +383,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
     extFileList: ExtFile[],
     isUploading?: boolean
   ): void => {
-    console.log(
-      "handleFilesChange",
-      extFileList.map((F) => F.uploadMessage)
-    );
+
     let finalExtFileList: ExtFile[] =
       behaviour === "add" && !isUploading
         ? [...localFiles, ...extFileList]
@@ -405,7 +394,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
       setLocalFiles(finalExtFileList);
     }
     if (autoUpload && !isUploading) {
-      console.log("autoUpload", finalExtFileList);
+      //console.log("autoUpload", finalExtFileList);
       uploadfiles(finalExtFileList);
     }
   };
@@ -449,7 +438,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
    */
   const outerFuiValidation = (fuiFileListToValidate: ExtFile[]): ExtFile[] => {
     const localValidator: FileValidatorProps = { maxFileSize, accept };
-    console.log("validatedFuiFileList pre", fuiFileListToValidate);
+    //console.log("validatedFuiFileList pre", fuiFileListToValidate);
 
     let finalNumberOfValids: number = numberOfValidFiles;
     if (behaviour === "replace") {
@@ -465,13 +454,13 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
       maxFiles,
       localization
     );
-    console.log("validatedFuiFileList aft", validatedFuiFileList);
+    //console.log("validatedFuiFileList aft", validatedFuiFileList);
     return validatedFuiFileList;
   };
 
   // HANDLERS for CLICK
   function handleClick(): void {
-    //console.log("HAAAAAAAA");
+    ////console.log("HAAAAAAAA");
     //handleClickUtil(evt);
     if (disabled) return;
 
@@ -530,6 +519,7 @@ const FileInputButton: React.FC<FileInputButtonProps> = (
         onClick={handleClick}
         disableRipple={disableRipple}
         darkMode={darkMode}
+        id={inputButtonId}
         {...rest}
       >
         {children || label}
diff --git a/src/FileInputButton/InputButtonProps.ts b/src/FileInputButton/InputButtonProps.ts
index 9540459a9fcab2d9925357a87aaba96a7ff8c1ac..27f408c8f02e99789f4794e91f0fb5c6ca8f3571 100644
--- a/src/FileInputButton/InputButtonProps.ts
+++ b/src/FileInputButton/InputButtonProps.ts
@@ -1,4 +1,4 @@
-import { ValidateFileResponse, ExtFile, Localization, UploadConfig } from "../core";
+import { ValidateFileResponse, ExtFile, Localization, UploadConfig } from "theamazingunkowntext"
 import { ActionButtons } from "../Dropzone/components/dropzone/DropzoneProps";
 import { MaterialButtonProps } from "../MaterialButton/MaterialButtonProps";
 
diff --git a/src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx b/src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
index 18bda30f2bbb4bc83c59a50da5d8723b021c13ca..318838af5ad69cb079017006ca92e905afdebf6f 100644
--- a/src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
+++ b/src/FileMosaic/components/FIleMosaicImageLayer/FileMosaicImageLayer.tsx
@@ -43,7 +43,7 @@ interface FileMosaicImageLayerProps {
 const FileMosaicImageLayer: React.FC<FileMosaicImageLayerProps> = (
   props: FileMosaicImageLayerProps
 ) => {
-  //console.log("FileMosaicImageLayer", props);
+  ////console.log("FileMosaicImageLayer", props);
   const { imageSource, url, fileName, card, isBlur,smartImgFit } = props;
 
   const [localSource, setLocalSource] = React.useState<string | undefined>(
@@ -63,7 +63,7 @@ const FileMosaicImageLayer: React.FC<FileMosaicImageLayerProps> = (
   const handleError = () => {
     setError(true);
     setLocalSource(url);
-    console.log("FileMosaicImageLayer error", url);
+    //console.log("FileMosaicImageLayer error", url);
   };
 
   //If blur is true
diff --git a/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
index c6c4bdb23aac113206101347672a38c6c589c78e..6220c17084de3b61f9c1ba6b974f7175275a8a92 100644
--- a/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
+++ b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../../../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { Cancel } from "../../../icons";
 import FileMosaicStatus from "../FileMosaicStatus/FileMosaicStatus";
 import { FileMosaicInfoLayerProps } from "./FileMosaicInfoLayerProps";
diff --git a/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
index c141ae75822cd4a7f188c7a44b81bee9cf2c6910..dd8cf879185da872d0d53a0bbb599af6803a8d80 100644
--- a/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
+++ b/src/FileMosaic/components/FileMosaicInfoLayer/FileMosaicInfoLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 
 export type FileMosaicInfoLayerProps = {
     valid: boolean | null | undefined;
diff --git a/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts b/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
index ed3f3dd442f410663f0c17a4f863be567b205aa1..c08370511c9012ece415432762cd944d161f11ff 100644
--- a/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
+++ b/src/FileMosaic/components/FileMosaicMainLayer.tsx/FileMosaicMainLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 
 export interface FileMosaicMainLayerProps {
     darkMode?: boolean;
diff --git a/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
index 7cccfd599c4c723e564f02585abc1900ef0cac19..9d1529bd5ab971388bae317183cc4e39feab205f 100644
--- a/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatus.tsx
+++ b/src/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 "theamazingunkowntext"
 
 const FileMosaicStatus: React.FC<FileMosaicStatusProps> = (
   props: FileMosaicStatusProps
diff --git a/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
index b439eaa5bf7fac14fe16510fda89c7a206a435a7..8091b93d6efc9a115e7ae76f2a0ffd4116e36100 100644
--- a/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
+++ b/src/FileMosaic/components/FileMosaicStatus/FileMosaicStatusProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 
 
 export interface FileMosaicStatusProps {
diff --git a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
index f12ab5ebf913fd65a378b57b0ca74094933f0bf9..31c3e498cffbae80973eb5ba72a4dad36b0e90a2 100644
--- a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
+++ b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayer.tsx
@@ -1,7 +1,7 @@
 import * as React from "react";
 import { FileMosaicUploadLayerProps } from "./FileMosaicUploadLayerProps";
 import "./FileMosaicUploadLayer.scss";
-import { UPLOADSTATUS } from "../../../core";
+import { UPLOADSTATUS } from "theamazingunkowntext"
 import {
   PreparingStatus,
   UploadingStatus,
diff --git a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
index 4c5674e0396d4979c535e72bfb9e871ae964f08d..a549911aca48bf4330f42e345f7472c08f746437 100644
--- a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
+++ b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerLegacy.tsx
@@ -6,7 +6,7 @@ import {
   FileItemLocalizerSelector,
   LocalLabels,
   UPLOADSTATUS,
-} from "../../../core";
+} from "theamazingunkowntext"
 import { CheckCircle, CloudDone, UploadError } from "../../../icons";
 import { DynamicLoader } from "../../../loader";
 
diff --git a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
index 5d1fb28b79e6bd0e400a86972894cbe01ef19c4b..fbff914ec6c4d66ddbd2ebf626f7988cb3de7777 100644
--- a/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
+++ b/src/FileMosaic/components/FileMosaicUploadLayer/FileMosaicUploadLayerProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 
 export interface FileMosaicUploadLayerPropsMap {
     visible?: boolean;
diff --git a/src/FileMosaic/components/file-mosaic-layer/Layer.tsx b/src/FileMosaic/components/file-mosaic-layer/Layer.tsx
index 652658ce5bb2657ddb2dd097b936bbf6360ea849..6c26273ea9b1a055dc59ffdc40c4c87c260fc074 100644
--- a/src/FileMosaic/components/file-mosaic-layer/Layer.tsx
+++ b/src/FileMosaic/components/file-mosaic-layer/Layer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { addClassName } from "../../../core";
+import { addClassName } from "theamazingunkowntext"
 import { OverridableComponentProps } from "../../../overridable";
 import "./Layer.scss";
 
diff --git a/src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
index c62a534818dd169ec81cf7ade69c6adfe332572b..aa46e329a09a99ae1261535f75049e77fa5a96c6 100644
--- a/src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
+++ b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.scss
@@ -1,3 +1,5 @@
 .files-ui-layer-container{
+
     position: relative;
+
 }
\ No newline at end of file
diff --git a/src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
index 83f6a8c275002878c368a3889d5353a18d9fe7e1..c3c94a5e370d405743b109e04ada723c23d78598 100644
--- a/src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
+++ b/src/FileMosaic/components/file-mosaic-layer/LayerContainer.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { addClassName } from "../../../core";
+import { addClassName } from "theamazingunkowntext"
 import { OverridableComponentProps } from "../../../overridable";
 import "./LayerContainer.scss";
 
diff --git a/src/FileMosaic/components/file-mosaic/FileMosaic.tsx b/src/FileMosaic/components/file-mosaic/FileMosaic.tsx
index 45094d1e270193dbf6dfe6b360abc06a0645f118..f7efc3f5d11309acc05dac0c892dc327fbcdeccb 100644
--- a/src/FileMosaic/components/file-mosaic/FileMosaic.tsx
+++ b/src/FileMosaic/components/file-mosaic/FileMosaic.tsx
@@ -4,7 +4,7 @@ import {
   fileSizeFormater,
   getLocalFileItemData,
   Localization,
-} from "../../../core";
+} from "theamazingunkowntext"
 import "./FileMosaic.scss";
 import "./../../../icons/IconStyles.scss";
 import { FileMosaicProps } from "./FileMosaicProps";
@@ -79,7 +79,7 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
     locProps !== undefined ? locProps : locContext;
   const darkMode: boolean | undefined =
     darkModeProp !== undefined ? darkModeProp : darkModeContext;
-  console.log("globalConfig", darkMode, icons);
+  ////console.log("globalConfig", darkMode, icons);
 
   //localizers
 
@@ -108,7 +108,7 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
   // handle progress
   const localProgress: number | undefined = useProgress(progress, xhr);
 
-  //console.log("FileMosaic progress localProgress " + localProgress);
+  ////console.log("FileMosaic progress localProgress " + localProgress);
 
   //Initialize File Item
   const [isReady, isImage, isVideo, url, imageSource, videoSource]: [
@@ -159,7 +159,7 @@ const FileMosaic: React.FC<FileMosaicProps> = (props: FileMosaicProps) => {
   const isUploading: boolean = useIsUploading(uploadStatus);
 
   React.useEffect(() => {
-    //console.log("Change isUploading", isUploading);
+    ////console.log("Change isUploading", isUploading);
     if (isUploading && showInfo) {
       handleCloseInfo();
     }
diff --git a/src/FileMosaic/components/file-mosaic/FileMosaicProps.ts b/src/FileMosaic/components/file-mosaic/FileMosaicProps.ts
index 3e4ec49f69a6796bd9aa10518a47a51aa3745c7b..3f49545b74f850825d79d9e47540c0031ca307af 100644
--- a/src/FileMosaic/components/file-mosaic/FileMosaicProps.ts
+++ b/src/FileMosaic/components/file-mosaic/FileMosaicProps.ts
@@ -1,4 +1,4 @@
-import { Localization, UPLOADSTATUS } from "../../../core";
+import { Localization, UPLOADSTATUS } from "theamazingunkowntext"
 import { OverridableComponentProps } from "../../../overridable";
 
 export interface FileMosaicPropsMap extends OverridableComponentProps {
diff --git a/src/FileStatus/AbortedStatus.tsx b/src/FileStatus/AbortedStatus.tsx
index ecd235def5649eec92df70d8acf68c202b587bb5..500045bdab08ade95c50a27cc009c4dbbea03e37 100644
--- a/src/FileStatus/AbortedStatus.tsx
+++ b/src/FileStatus/AbortedStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { DoDisturb } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface AbortedStatusProps extends FileStatusProps {}
diff --git a/src/FileStatus/ErrorStatus.tsx b/src/FileStatus/ErrorStatus.tsx
index 0d7b0fb0609ddae02f13c372a8ae9c039356e30a..90a2424ed0c2ee8003062ccd0969d11d6e4db8e9 100644
--- a/src/FileStatus/ErrorStatus.tsx
+++ b/src/FileStatus/ErrorStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { Clear } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface ErrorStatusProps extends FileStatusProps {}
diff --git a/src/FileStatus/FileStatusProps.ts b/src/FileStatus/FileStatusProps.ts
index f73e560b94ba97742402963703cada93ccddd766..a2f82d7a58a925c926c759d889202f290892ad1e 100644
--- a/src/FileStatus/FileStatusProps.ts
+++ b/src/FileStatus/FileStatusProps.ts
@@ -1,4 +1,4 @@
-import { Localization } from "../core";
+import { Localization } from "theamazingunkowntext"
 
 export type FileStatusProps = {
     localization?: Localization;
diff --git a/src/FileStatus/PreparingStatus.tsx b/src/FileStatus/PreparingStatus.tsx
index 1ceceae9b07c640692002a8144ebbaa7bde4f883..de84de245f2cae13cdd1a89571e6f21812e7df45 100644
--- a/src/FileStatus/PreparingStatus.tsx
+++ b/src/FileStatus/PreparingStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
 import { FileStatusProps } from "./FileStatusProps";
 
diff --git a/src/FileStatus/SuccessStatus.tsx b/src/FileStatus/SuccessStatus.tsx
index c0d4c7bdcd27ce06a21fc9843c2a957489d9c22a..fcb532cbcc6ded29d8500cc17353d78d0e9e2a99 100644
--- a/src/FileStatus/SuccessStatus.tsx
+++ b/src/FileStatus/SuccessStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { CheckCircle } from "../icons";
 import { FileStatusProps } from "./FileStatusProps";
 interface SuccessStatusProps extends FileStatusProps {}
diff --git a/src/FileStatus/UploadingStatus.tsx b/src/FileStatus/UploadingStatus.tsx
index c53d6f80b42fc98ea9778756245a2122633f37d0..823efba366fefeb8f2c46fe85b44c176ea63971c 100644
--- a/src/FileStatus/UploadingStatus.tsx
+++ b/src/FileStatus/UploadingStatus.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { FileItemLocalizerSelector, LocalLabels } from "../core";
+import { FileItemLocalizerSelector, LocalLabels } from "theamazingunkowntext"
 import { DynamicLoader } from "../loader";
 import InfiniteLoader from "../loader/InfiniteLoader/InfiniteLoader";
 import { FileStatusProps } from "./FileStatusProps";
diff --git a/src/FilesUiProvider/FilesUIConfig.ts b/src/FilesUiProvider/FilesUIConfig.ts
index cf78842d9594dfa7f19b15005772b5425f87a2e5..3ab4f7e10f0b133c841f1a77fb8eb196bd320a4f 100644
--- a/src/FilesUiProvider/FilesUIConfig.ts
+++ b/src/FilesUiProvider/FilesUIConfig.ts
@@ -1,4 +1,4 @@
-import { IconsMap, Localization } from "../core";
+import { IconsMap, Localization } from "theamazingunkowntext"
 
 export type FilesUIConfig = {
     /**
diff --git a/src/ImagePreview/ImagePreview.scss b/src/ImagePreview/ImagePreview.scss
index 99b209489bb9d2fe6aa3365e9f01c3091ba40b59..ca52d95d5dec466da2ae5d2d3134cdaf47dc59da 100644
--- a/src/ImagePreview/ImagePreview.scss
+++ b/src/ImagePreview/ImagePreview.scss
@@ -1,5 +1,4 @@
 .fui-image-preview {
   position: relative;
   border-radius: 10px;
-  //transition: transform 0.3s 0.2s;
 }
diff --git a/src/ImagePreview/ImagePreview.tsx b/src/ImagePreview/ImagePreview.tsx
index 23c9b2e9bd4fc17d0b0deef99a9e09291189e18a..420b345acca77ef71a6a4c00a7ad3eb2d8d41df4 100644
--- a/src/ImagePreview/ImagePreview.tsx
+++ b/src/ImagePreview/ImagePreview.tsx
@@ -4,7 +4,7 @@ import {
   ImagePreviewProps,
 } from "./ImagePreviewProps";
 import { mergeProps } from "../overridable";
-import { getImageOrientation, readAsDataURL } from "../core";
+import { getImageOrientation, readAsDataURL } from "theamazingunkowntext"
 
 import "./ImagePreview.scss";
 
@@ -22,12 +22,12 @@ const ImagePreview: React.FC<ImagePreviewProps> = (
     style,
     className,
   } = mergeProps(props, ImagePreviewDefaultProps);
-console.log("ImagePreview smartImgFit",smartImgFit);
+//console.log("ImagePreview smartImgFit",smartImgFit);
   const [[finalHeight, finalWidth], setfinalDimensions] = React.useState<
     [number | string | undefined, number | string | undefined]
   >([undefined, undefined]);
 
-  //console.table({ src, alt, className, style, width, height });
+  ////console.table({ src, alt, className, style, width, height });
   const [source, setSource] = React.useState<string | undefined>(undefined);
   /*  const [orientation, setOrientation] = React.useState<
     "landscape" | "portrait" | undefined
@@ -39,9 +39,9 @@ console.log("ImagePreview smartImgFit",smartImgFit);
   };
 
   const handleSetStrSource = async (imageSource: string | undefined) => {
-    console.log("handleSetStrSource", imageSource);
+    //console.log("handleSetStrSource", imageSource);
     if (imageSource === "" || !imageSource) {
-      console.log("handleSetStrSource return", imageSource);
+      //console.log("handleSetStrSource return", imageSource);
 
       return;
     }
@@ -52,19 +52,19 @@ console.log("ImagePreview smartImgFit",smartImgFit);
     let finalWidth = undefined;
 
     if (!smartImgFit) {
-      console.log("handleSetStrSource no imgfit", imageSource);
+      //console.log("handleSetStrSource no imgfit", imageSource);
 
       //if not given
       finalWidth = "100%";
     } else {
-      console.log("handleSetStrSource yes imgfit", smartImgFit, imageSource);
+      //console.log("handleSetStrSource yes imgfit", smartImgFit, imageSource);
 
       try {
         const orientation: "landscape" | "portrait" = await getImageOrientation(
           imageSource
         );
 
-        console.log("handleSetStrSource orientation obtained", orientation);
+        //console.log("handleSetStrSource orientation obtained", orientation);
         if (orientation === "landscape") {
           if (smartImgFit === "orientation") {
             finalHeight = undefined;
@@ -96,7 +96,7 @@ console.log("ImagePreview smartImgFit",smartImgFit);
   React.useEffect(() => {
     //if not undefined
     if (!src) return;
-    //console.log("ImagePreview There is source :D");
+    ////console.log("ImagePreview There is source :D");
 
     if (typeof src === "string") {
       //if a url string is given, assign it directly
@@ -114,16 +114,16 @@ console.log("ImagePreview smartImgFit",smartImgFit);
     }
     // eslint-disable-next-line
   }, [src]);
-  //console.log("ImagePreview", src, source);
+  ////console.log("ImagePreview", src, source);
 
   /* const finalWidth: string | number | undefined =
     width || (orientation === "landscape" && smart ? "100%" : undefined);
   const finalHeight: string | number | undefined =
     height || (orientation === "portrait" && smart ? "100%" : undefined); */
 
-  console.log("Image result", src, source, finalHeight, finalWidth);
+  //console.log("Image result", src, source, finalHeight, finalWidth);
   const handleError = (evt: React.SyntheticEvent<HTMLImageElement, Event>) => {
-    console.log("handleError", onError);
+    //console.log("handleError", onError);
     onError?.();
   };
 
diff --git a/src/InputHidden/InputHidden.tsx b/src/InputHidden/InputHidden.tsx
index 9725bcccc3681ab8cac2a30fd805fe8562a5a0ca..d78c7e4b41b82ede43e303c4b3f7945c0819c80e 100644
--- a/src/InputHidden/InputHidden.tsx
+++ b/src/InputHidden/InputHidden.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-//import { handleClickUtil } from "../../core";
+//import { handleClickUtil } from "theamazingunkowntext"
 import { InputHiddenProps } from "./InputHiddenProps";
 
 const InputHidden: React.FC<InputHiddenProps> = (props: InputHiddenProps) => {
diff --git a/src/MaterialButton/MaterialButton.tsx b/src/MaterialButton/MaterialButton.tsx
index 14f7f3c7ac262c9e6c881cc1fb870511bfb906eb..d600db5d15f09d72f72be427c4baed91b7312bb6 100644
--- a/src/MaterialButton/MaterialButton.tsx
+++ b/src/MaterialButton/MaterialButton.tsx
@@ -2,11 +2,10 @@ import * as React from "react";
 import useMaterialButtonClassName from "./hooks/useMaterialButtonClassName";
 import { MaterialButtonProps } from "./MaterialButtonProps";
 import "./MaterialButton.scss";
-import { addClassName } from "../core";
+import { addClassName, FileIdGenerator } from "theamazingunkowntext";
 import { FilesUiContext } from "../FilesUiProvider/FilesUiContext";
 import { createRippleButton } from "../utils";
 
-
 const MaterialButton: React.FC<MaterialButtonProps> = (
   props: MaterialButtonProps
 ) => {
@@ -24,14 +23,16 @@ const MaterialButton: React.FC<MaterialButtonProps> = (
     resetStyles,
     disableRipple,
     darkMode: darkModeProp,
+    id,
+    ...rest
   } = props;
   //context
   const { darkMode: darkModeContext } = React.useContext(FilesUiContext);
   const darkMode: boolean | undefined =
     darkModeProp !== undefined ? darkModeProp : darkModeContext;
 
-
-  const idClassName = React.useId();
+  //  const idClassName = React.useId();
+  const idClassName = React.useMemo(() => id ||FileIdGenerator.getNextId() + "", [id]);
 
   const materialButtonClassName: string | undefined =
     useMaterialButtonClassName(
@@ -41,15 +42,15 @@ const MaterialButton: React.FC<MaterialButtonProps> = (
       textColor,
       textDecoration,
       className,
-      idClassName.replaceAll(":", ""),
+      idClassName.replace(":", "").replace(":", ""),
       resetStyles
     );
-  const finalMBClassNameDarkMode: string | undefined = materialButtonClassName && darkMode
-    ? addClassName(materialButtonClassName, `darkmode`)
-    : materialButtonClassName;
-
+  const finalMBClassNameDarkMode: string | undefined =
+    materialButtonClassName && darkMode
+      ? addClassName(materialButtonClassName, `darkmode`)
+      : materialButtonClassName;
 
-    console.log("finalMBClassNameDarkMode", finalMBClassNameDarkMode, darkMode);
+  //console.log("finalMBClassNameDarkMode", finalMBClassNameDarkMode, darkMode);
   function handleClick<T extends HTMLAnchorElement | HTMLButtonElement>(
     e: React.MouseEvent<T, MouseEvent>
   ): void {
@@ -64,13 +65,15 @@ const MaterialButton: React.FC<MaterialButtonProps> = (
 
   if (finalMBClassNameDarkMode !== undefined || resetStyles)
     return React.createElement(href ? "a" : "button", {
-      className: resetStyles && className ? className : finalMBClassNameDarkMode,
+      className:
+        resetStyles && className ? className : finalMBClassNameDarkMode,
       "data-testid": href ? "dui-anchor" : "dui-button",
       onClick: handleClick,
       href: href,
       style: style,
       children: <span className="material-button-label">{children}</span>,
       disabled: disabled,
+      ...rest
     });
   else return <React.Fragment>loading styes</React.Fragment>;
 };
diff --git a/src/MaterialButton/MaterialButtonProps.ts b/src/MaterialButton/MaterialButtonProps.ts
index d6aa971644ed67d07912554068b9dd9053fe057a..34abe19b795fb5067707b37f9256d28e0d871393 100644
--- a/src/MaterialButton/MaterialButtonProps.ts
+++ b/src/MaterialButton/MaterialButtonProps.ts
@@ -1,5 +1,5 @@
 import { OverridableComponentProps } from "../overridable";
-
+import * as React from "react";
 export interface MaterialButtonPropsInterface extends OverridableComponentProps {
     /////// BUTTON props
     /**
diff --git a/src/MaterialButton/hooks/useMaterialButtonClassName.ts b/src/MaterialButton/hooks/useMaterialButtonClassName.ts
index 21103068629b7858200014afda33db6640d2fc56..ad0f40ff0dd93cec0382dad93c716ede1f134ec2 100644
--- a/src/MaterialButton/hooks/useMaterialButtonClassName.ts
+++ b/src/MaterialButton/hooks/useMaterialButtonClassName.ts
@@ -12,8 +12,8 @@ const useMaterialButtonClassName = (
     idClassName?: number | string,
     resetStyles?: boolean
 ): string | undefined => {
-    console.log("useMaterialButtonClassName", variant, disabled, color, textColor,
-        textDecoration, className, idClassName, resetStyles);
+    //console.log("useMaterialButtonClassName", variant, disabled, color, textColor,
+       // textDecoration, className, idClassName, resetStyles);
 
     const baseClassName: string = "material-button-root material-button";
 
@@ -51,14 +51,14 @@ const useMaterialButtonClassName = (
         let idStyle: string = "";
         if (!styleInjected) {
             idStyle = DynamiCSS.insertStyleSheet(styleSheet);
-            console.log("DynamiCSS insert", idStyle);
+            //console.log("DynamiCSS insert", idStyle);
             setIdStyles(idStyle);
             if (idStyle !== "")
                 setStyleInjected(true);
         } else {
             //already a stylesheet associated
             DynamiCSS.editStyleSheet(idStyles, styleSheet.sheetRules || []);
-            console.log("DynamiCSS edit", idStyle);
+            //console.log("DynamiCSS edit", idStyle);
 
         }
 
@@ -95,10 +95,10 @@ const useMaterialButtonClassName = (
 
 
     const removeStyle = (styleInjected: boolean, idStyles: string) => {
-        //console.log("DynamiCSS removing", styleInjected, idStyles);
+        ////console.log("DynamiCSS removing", styleInjected, idStyles);
         if (styleInjected) {
             /* const res =  */DynamiCSS.removeStyleSheet(idStyles);
-            //console.log("DynamiCSS removing res", res);
+            ////console.log("DynamiCSS removing res", res);
 
             setStyleInjected(false);
             setIdStyles("");
diff --git a/src/MaterialButton/utils/MaterialButtonStyleManager.ts b/src/MaterialButton/utils/MaterialButtonStyleManager.ts
index 985bb494f703dc6c67f099791d373040dde5e164..8037fc1f75fed342d612431b95836924dea4097a 100644
--- a/src/MaterialButton/utils/MaterialButtonStyleManager.ts
+++ b/src/MaterialButton/utils/MaterialButtonStyleManager.ts
@@ -1,4 +1,4 @@
-import { asureColor, colourNameToHex, completeAsureColor, darkerColor } from "../../core";
+import { asureColor, colourNameToHex, completeAsureColor, darkerColor } from "theamazingunkowntext"
 import { DynamicSheet, DynamicSheetRule } from "@dynamicss/dynamicss";
 
 export default class MaterialButtonStyleManager {
@@ -9,7 +9,7 @@ export default class MaterialButtonStyleManager {
      */
     static getNextId(): number {
         MaterialButtonStyleManager.nextButtonClassNameNumber++;
-        console.log("Id called " + MaterialButtonStyleManager.nextButtonClassNameNumber);
+        //console.log("Id called " + MaterialButtonStyleManager.nextButtonClassNameNumber);
         return MaterialButtonStyleManager.nextButtonClassNameNumber;
     }
     /**
diff --git a/src/core/color/colors.d.ts b/src/core/color/colors.d.ts
deleted file mode 100644
index 471c4120619d011dfd48494532d1e9d053043a9c..0000000000000000000000000000000000000000
--- a/src/core/color/colors.d.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Make the color into a darker color
- * @param colorInput
- * @returns the darked color in
- */
-export declare const darkerColor: (colorInput: string, percentage?: number) => string;
-/**
- * Make the color into a brighted color
- * @param colorInput
- * @returns the brighted color
- */
-export declare const brighterColor: (colorInput: string, percentage?: number) => string;
-/**
- * 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 declare const hexColorToRGB: (colorInput: string | undefined, perc?: number, defaultColor?: string) => string;
-/**
- * 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 declare const isHexColor: (colorInput: string) => boolean;
-/**
- * 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 declare function colourNameToHex(colour: string | undefined): string;
-/**
- * Converts hex number in string representation to decimal number
- *
- *
- * @param letter the string hex number
- * @returns a decimal number
- */
-export declare const hexTodec: (letter: string) => number;
-/**
- * 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 declare const asureColor: (color?: string) => string;
-/**
- * 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 declare const completeAsureColor: (color?: string, perc?: number) => string;
-export declare const DEFAULT_FONT_COLOR = "#646c7f";
diff --git a/src/core/color/index.d.ts b/src/core/color/index.d.ts
deleted file mode 100644
index 2b51c13cd1efebcf647c650532931c074f0ab6f6..0000000000000000000000000000000000000000
--- a/src/core/color/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { NAMED_COLORS } from "./namedColors";
-export { asureColor, brighterColor, colourNameToHex, darkerColor, hexColorToRGB, hexTodec, isHexColor, completeAsureColor } from "./colors";
diff --git a/src/core/color/namedColors.d.ts b/src/core/color/namedColors.d.ts
deleted file mode 100644
index 661cdc353c7239cbb5dec0a7bbfc78fa0da809f3..0000000000000000000000000000000000000000
--- a/src/core/color/namedColors.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { NamedColor } from "../types/NamedColor";
-/**
- * The full list of named Colors provided by
- * https://htmlcolorcodes.com/es/nombres-de-los-colores/
- */
-export declare const NAMED_COLORS: NamedColor;
diff --git a/src/core/download/downloadFile.d.ts b/src/core/download/downloadFile.d.ts
deleted file mode 100644
index 5bd48e9ad5c2e6a8b7201985e73fb5c76ee4fd33..0000000000000000000000000000000000000000
--- a/src/core/download/downloadFile.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export declare const downloadFileAnchor: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadFileXHR: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadFileFetch: (fileName?: string, downloadUrl?: string) => Promise<void>;
-export declare const downloadAnchor: (fileName?: string, downloadUrl?: string) => Promise<void>;
diff --git a/src/core/file-manager/index.d.ts b/src/core/file-manager/index.d.ts
deleted file mode 100644
index 2ef646c95ef59472bcdbeb52ace12de4d4e432fe..0000000000000000000000000000000000000000
--- a/src/core/file-manager/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { extFileReconcilation } from "./reconcilation";
diff --git a/src/core/file-manager/reconcilation.d.ts b/src/core/file-manager/reconcilation.d.ts
deleted file mode 100644
index 198c59f3bd6f500d0360d41def4cee13b74f2e1f..0000000000000000000000000000000000000000
--- a/src/core/file-manager/reconcilation.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const extFileReconcilation: (dropzoneId: number | string | undefined, extFileIncomming: ExtFile[]) => ExtFile[] | undefined;
diff --git a/src/core/index.d.ts b/src/core/index.d.ts
deleted file mode 100644
index 899e9931af84c701a0ef2cfc3705c318e7aece2c..0000000000000000000000000000000000000000
--- a/src/core/index.d.ts
+++ /dev/null
@@ -1,12 +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, 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";
-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, 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 { 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";
diff --git a/src/core/index.es.js b/src/core/index.es.js
deleted file mode 100644
index 68eb2961f37a33226757b48dfe53a28039beffd8..0000000000000000000000000000000000000000
--- a/src/core/index.es.js
+++ /dev/null
@@ -1,2 +0,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 "},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/core/index.es.js.map b/src/core/index.es.js.map
deleted file mode 100644
index c4a8edb4f9b9d15ce32af04ce7d75a85b3d06df8..0000000000000000000000000000000000000000
--- a/src/core/index.es.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"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/core/index.js b/src/core/index.js
deleted file mode 100644
index 73109351a6991b2093e65cc3cc6c84d258038c69..0000000000000000000000000000000000000000
--- a/src/core/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"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/core/index.js.map b/src/core/index.js.map
deleted file mode 100644
index bfd639ec327266600a8f7301ac3a51d3791fe975..0000000000000000000000000000000000000000
--- a/src/core/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"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/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts b/src/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts
deleted file mode 100644
index 86e19f420e6f56579a8f6657bcbc89ecfd45f742..0000000000000000000000000000000000000000
--- a/src/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneSimplifiedChinese: LocalLabels;
-/**
- * Chinnese translation for FileItem component
- */
-export declare const FileItemSimplifiedChinese: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorSimplifiedChinese: LocalLabels;
diff --git a/src/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts b/src/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts
deleted file mode 100644
index 49e8ee4193c869a9d2a618cc9d17b1bfa30359b2..0000000000000000000000000000000000000000
--- a/src/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneTraditionalChinese: LocalLabels;
-/**
- * Chinese translation for FileItem component
- */
-export declare const FileItemTraditionalChinese: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorTraditionalChinese: LocalLabels;
diff --git a/src/core/localization/English/localization.english.d.ts b/src/core/localization/English/localization.english.d.ts
deleted file mode 100644
index 85e31dbb3d3e59e248c6d76e11839a5e0e722ac6..0000000000000000000000000000000000000000
--- a/src/core/localization/English/localization.english.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * English translation for Dropzone component
- */
-export declare const DropzoneEnglish: LocalLabels;
-/**
- * English translation for FileItem component
- */
-export declare const FileItemEnglish: LocalLabels;
-/**
- * English translation for Validation Errors
- */
-export declare const ValidateErrorEnglish: LocalLabels;
diff --git a/src/core/localization/FileItem.localization.d.ts b/src/core/localization/FileItem.localization.d.ts
deleted file mode 100644
index b1a9b14e0cab54d86df4b2b2e53de3337a434462..0000000000000000000000000000000000000000
--- a/src/core/localization/FileItem.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-export declare const FileItemLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const FileItemLocalizerSelector: (local?: Localization) => LocalLabels;
diff --git a/src/core/localization/French/localization.french.d.ts b/src/core/localization/French/localization.french.d.ts
deleted file mode 100644
index ebdaf57c4754f3671c78af189094b42943c40d5a..0000000000000000000000000000000000000000
--- a/src/core/localization/French/localization.french.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * French translation for Dropzone component
- */
-export declare const DropzoneFrench: LocalLabels;
-/**
- * French translation for FileItem component
- */
-export declare const FileItemFrench: LocalLabels;
-/**
- * French translation for Validation Errors
- */
-export declare const ValidateErrorFrench: LocalLabels;
diff --git a/src/core/localization/Italian/localization.italian.d.ts b/src/core/localization/Italian/localization.italian.d.ts
deleted file mode 100644
index 5ee58b5fffa3dd25046f9217b431bdd74ab45573..0000000000000000000000000000000000000000
--- a/src/core/localization/Italian/localization.italian.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Italian translation for Dropzone component
- */
-export declare const DropzoneItalian: LocalLabels;
-/**
- * Italian translation for FileItem component
- */
-export declare const FileItemItalian: LocalLabels;
-/**
- * Italian translation for Validation Errors
- */
-export declare const ValidateErrorItalian: LocalLabels;
diff --git a/src/core/localization/Portuguese/localization.portuguese.d.ts b/src/core/localization/Portuguese/localization.portuguese.d.ts
deleted file mode 100644
index bafe87d9b82c69b656898b215fef2cabd9ae07b2..0000000000000000000000000000000000000000
--- a/src/core/localization/Portuguese/localization.portuguese.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Portuguese translation for Dropzone
- */
-export declare const DropzonePortuguese: LocalLabels;
-/**
- * Portuguese translation for FileItem component
- */
-export declare const FileItemPortuguese: LocalLabels;
-/**
- * Portuguese translation for Validation Errors
- */
-export declare const ValidateErrorPortuguese: LocalLabels;
diff --git a/src/core/localization/Russian/localization.russian.d.ts b/src/core/localization/Russian/localization.russian.d.ts
deleted file mode 100644
index 3e68a80398807e5e87d84121a845e3a7bae3fcfa..0000000000000000000000000000000000000000
--- a/src/core/localization/Russian/localization.russian.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Russian translation for Dropzone component
- */
-export declare const DropzoneRussian: LocalLabels;
-/**
- * Russian translation for FileItem component
- *
- */
-export declare const FileItemRussian: LocalLabels;
-/**
- * Russian translation for Validation Errors
- */
-export declare const ValidateErrorRussian: LocalLabels;
diff --git a/src/core/localization/Spanish/localization.spanish.d.ts b/src/core/localization/Spanish/localization.spanish.d.ts
deleted file mode 100644
index 75c9376b42a72da3543d6007895c413c4452c893..0000000000000000000000000000000000000000
--- a/src/core/localization/Spanish/localization.spanish.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { LocalLabels } from "../../types";
-/**
- * Spanish translation for Dropzone component
- */
-export declare const DropzoneSpanish: LocalLabels;
-/**
- * Spanish translation for FileItem component
- */
-export declare const FileItemSpanish: LocalLabels;
-/**
- * Spanish translation for Validation Errors
- */
-export declare const ValidateErrorSpanish: LocalLabels;
diff --git a/src/core/localization/avatar.localization.d.ts b/src/core/localization/avatar.localization.d.ts
deleted file mode 100644
index 3130a0af65f1493c4b5eb56212fb0e240aef7c55..0000000000000000000000000000000000000000
--- a/src/core/localization/avatar.localization.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "../types";
-/**
- * TO-DO: Add Avatar localization in next release, inthe meanwhile it accepts custom labels
- */
-export declare const AvatarLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const AvatarLocalizerSelector: (local?: Localization) => LocalLabels;
diff --git a/src/core/localization/dropzone.localization.d.ts b/src/core/localization/dropzone.localization.d.ts
deleted file mode 100644
index cdd108202b7b189d719474862e39ef338617de3f..0000000000000000000000000000000000000000
--- a/src/core/localization/dropzone.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, Localization, LocalLabels } from "../types";
-export declare const DropzoneLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const DropzoneLocalizerSelector: (local: Localization | undefined) => LocalLabels;
diff --git a/src/core/localization/index.d.ts b/src/core/localization/index.d.ts
deleted file mode 100644
index 440cac806b6c6a2f3df22e82dbc136b5733e6210..0000000000000000000000000000000000000000
--- a/src/core/localization/index.d.ts
+++ /dev/null
@@ -1,14 +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 };
diff --git a/src/core/localization/validationError.localization.d.ts b/src/core/localization/validationError.localization.d.ts
deleted file mode 100644
index 8284ffa71442cabf312e1d0318fdadb4d8654f67..0000000000000000000000000000000000000000
--- a/src/core/localization/validationError.localization.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ComponentLocalizer, LocalLabels, Localization } from "./../types";
-export declare const ValidateErrorLocalizer: ComponentLocalizer;
-/**
- * Secure translation through a selector
- * @param local the Localization
- * @returns a ComponentLocalizer object that contains the translation
- */
-export declare const ValidateErrorLocalizerSelector: (local: Localization | undefined) => LocalLabels;
diff --git a/src/core/mime/icons.d.ts b/src/core/mime/icons.d.ts
deleted file mode 100644
index a36bfb9d99fda56ee23082e5b010e44c8f6d133b..0000000000000000000000000000000000000000
--- a/src/core/mime/icons.d.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-export declare const sevenzip = "https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png";
-export declare const aac = "https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png";
-export declare const abw = "https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png";
-export declare const accdb = "https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png";
-export declare const avi = "https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png";
-export declare const azw = "https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png";
-export declare const bmp = "https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png";
-export declare const bz = "https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png";
-export declare const bz2 = "https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png";
-export declare const c = "https://user-images.githubusercontent.com/43678736/132086599-7a5cd692-b4df-45f5-80d9-384cb3e0c314.png";
-export declare const cda = "https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png";
-export declare const csh = "https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png";
-export declare const css = "https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png";
-export declare const csv = "https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png";
-export declare const docx = "https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png";
-export declare const docx2 = "https://user-images.githubusercontent.com/43678736/132086607-a246b386-52c9-4fe1-a7e4-204894e6722d.png";
-export declare const drawio = "https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png";
-export declare const dw = "https://user-images.githubusercontent.com/43678736/132086616-0c7842d6-d20e-4ede-988b-3dd063a4de8d.png";
-export declare const eml = "https://user-images.githubusercontent.com/43678736/132086617-1e351075-ffaf-4b81-a1fe-0b7b338772a2.png";
-export declare const eot = "https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png";
-export declare const eps = "https://user-images.githubusercontent.com/43678736/132086619-9daf0b61-dbb0-4d47-8a12-9fba13b88856.png";
-export declare const epub = "https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png";
-export declare const freearc = "https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png";
-export declare const gif = "https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png";
-export declare const gzip = "https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png";
-export declare const html = "https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png";
-export declare const icalendar = "https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png";
-export declare const ind = "https://user-images.githubusercontent.com/43678736/132086627-2f24067a-00bc-424a-af36-349a9ba14b6c.png";
-export declare const ini = "https://user-images.githubusercontent.com/43678736/132086649-20c9c9e6-8e63-4d87-9b8e-8fe8eba12ada.png";
-export declare const java = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export declare const jar = "https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png";
-export declare const javascript = "https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png";
-export declare const jpeg = "https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png";
-export declare const jsf = "https://user-images.githubusercontent.com/43678736/132086654-c510bd8f-8de7-4afe-8c20-cc810b004b07.png";
-export declare const json = "https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png";
-export declare const jsonld = "https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png";
-export declare const midi = "https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png";
-export declare const mov = "https://user-images.githubusercontent.com/43678736/132086660-adcecedd-56b4-4286-8b0f-69417f77e961.png";
-export declare const mp3 = "https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png";
-export declare const mp4 = "https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png";
-export declare const mpeg = "https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png";
-export declare const mpkg = "https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png";
-export declare const octet = "https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png";
-export declare const odp = "https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png";
-export declare const ods = "https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png";
-export declare const odt = "https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png";
-export declare const oga = "https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png";
-export declare const ogv = "https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png";
-export declare const ogx = "https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png";
-export declare const opus = "https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png";
-export declare const otf = "https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png";
-export declare const pdf = "https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png";
-export declare const php = "https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png";
-export declare const png = "https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png";
-export declare const pptx = "https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png";
-export declare const pptx2 = "https://user-images.githubusercontent.com/43678736/132086676-6de1bbd7-764f-4197-9aa4-405a60ce6734.png";
-export declare const proj = "https://user-images.githubusercontent.com/43678736/132086683-3dc0a8b8-72f8-4fa1-a08a-fcfd75b465e1.png";
-export declare const psd = "https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png";
-export declare const pst = "https://user-images.githubusercontent.com/43678736/132086686-3888e43a-5abf-41f7-9940-4b86e436521f.png";
-export declare const publisher = "https://user-images.githubusercontent.com/43678736/132086687-d92b56ff-f7f7-4be7-bbf4-47b8a33f4c6f.png";
-export declare const python = "https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png";
-export declare const tar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export declare const rar = "https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png";
-export declare const react = "https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png";
-export declare const richtextformat = "https://user-images.githubusercontent.com/43678736/132086692-df6e3518-2e6a-4553-883d-e21694980449.png";
-export declare const rtf = "https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png";
-export declare const sass = "https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png";
-export declare const settings = "https://user-images.githubusercontent.com/43678736/132086696-0dd21f83-b9fc-490c-9ed5-bd88151dc9bb.png";
-export declare const sh = "https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png";
-export declare const swf = "https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png";
-export declare const text = "https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png";
-export declare const tiff = "https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png";
-export declare const ttf = "https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png";
-export declare const typescript = "https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png";
-export declare const url = "https://user-images.githubusercontent.com/43678736/132086703-86d97476-b76e-4949-b89a-31ecb03f3b6e.png";
-export declare const vsd = "https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png";
-export declare const vue = "https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png";
-export declare const wav = "https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png";
-export declare const webm = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export declare const weba = "https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png";
-export declare const webp = "https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png";
-export declare const wma = "https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png";
-export declare const wmv = "https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png";
-export declare const woff = "https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png";
-export declare const xlsx = "https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png";
-export declare const xlsx2 = "https://user-images.githubusercontent.com/43678736/132086714-7ddf285d-2b83-4115-80a5-f02f510300a1.png";
-export declare const xml = "https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png";
-export declare const xul = "https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png";
-export declare const zip = "https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png";
diff --git a/src/core/mime/index.d.ts b/src/core/mime/index.d.ts
deleted file mode 100644
index 3549a7ae81ae96af525757254b4ea309acaceb5c..0000000000000000000000000000000000000000
--- a/src/core/mime/index.d.ts
+++ /dev/null
@@ -1,3 +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, getURLFileIcoFromNameAndType, } from "./mime";
diff --git a/src/core/mime/mime.d.ts b/src/core/mime/mime.d.ts
deleted file mode 100644
index 3b88f13dfee1d8a1d0f4bfe4d511f49ed005bf30..0000000000000000000000000000000000000000
--- a/src/core/mime/mime.d.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { IconsMap } from "../types";
-/**
- *
- * @param tailMime
- * @returns
- */
-export declare const audioSelector: (tailMime: string) => keyof IconsMap;
-export declare const textSelector: (tailMime: string) => keyof IconsMap;
-export declare const imageSelector: (tailMime: string) => keyof IconsMap;
-export declare const fontSelector: (tailMime: string) => keyof IconsMap;
-export declare const videoSelector: (tailMime: string) => keyof IconsMap;
-/**
- *
- * @param tailMime
- * @returns
- */
-export declare const applicationSelector: (tailMime: string) => keyof IconsMap;
-/**
- * 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 declare const mimeSelector: (mimeType?: string) => keyof IconsMap;
-/**
- * Selects to wich mapped extension
- * the given exension belongs to
- *
- * @param extension
- * @returns
- */
-export declare const extensionSelector: (extension?: string) => keyof IconsMap;
-/**
- * Chack for extention whether the file is code os not
- * @param extension
- * @returns
- */
-export declare const checkIsCode: (extension?: string) => keyof IconsMap;
-/**
- * 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 declare const getURLFileIco: (file: File | undefined, customIcons: IconsMap | undefined) => ResultFileIco;
-/**
- * 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 declare const getURLFileIcoFromNameAndType: (name: string | undefined, type: string | undefined, customIcons: IconsMap | undefined) => ResultFileIco;
-interface ResultFileIco {
-    url: string;
-    mimeResume: keyof IconsMap;
-}
-export {};
diff --git a/src/core/mocks/extFileMock.d.ts b/src/core/mocks/extFileMock.d.ts
deleted file mode 100644
index 14469566d5c176ad00ca63b82097d0b7536e5d0a..0000000000000000000000000000000000000000
--- a/src/core/mocks/extFileMock.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const extFileMock: (id?: number) => ExtFile;
diff --git a/src/core/mocks/index.d.ts b/src/core/mocks/index.d.ts
deleted file mode 100644
index eb8f2d891af962dcc1a06e5a0aca76b108a5fd09..0000000000000000000000000000000000000000
--- a/src/core/mocks/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { extFileMock } from "./extFileMock";
diff --git a/src/core/reader/imageOrientation.d.ts b/src/core/reader/imageOrientation.d.ts
deleted file mode 100644
index 55b3c8cfcca0af50364fe1702bba3ca8347c58ee..0000000000000000000000000000000000000000
--- a/src/core/reader/imageOrientation.d.ts
+++ /dev/null
@@ -1,10 +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 declare function getImageOrientation(imageSource: string | undefined): Promise<"landscape" | "portrait">;
diff --git a/src/core/reader/index.d.ts b/src/core/reader/index.d.ts
deleted file mode 100644
index f51527a5d750760a62135ce2e9e956602a8dd017..0000000000000000000000000000000000000000
--- a/src/core/reader/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { readAsArrayBuffer, readAsBinaryString, readAsDataURL, readAsText } from "./readers";
-export { resizeImage } from "./resizeImage";
-export { getImageOrientation } from "./imageOrientation";
diff --git a/src/core/reader/readers.d.ts b/src/core/reader/readers.d.ts
deleted file mode 100644
index 4e65f594b27457fbd7ae48b6bbf8cb86f0340521..0000000000000000000000000000000000000000
--- a/src/core/reader/readers.d.ts
+++ /dev/null
@@ -1,31 +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 declare const readAsDataURL: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | 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 declare const readAsText: (file: File | Blob, encoding?: string, onProgress?: Function, onError?: Function) => Promise<string | 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 declare const readAsBinaryString: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | 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 declare const readAsArrayBuffer: (file: File | Blob, onProgress?: Function, onError?: Function) => Promise<string | undefined>;
diff --git a/src/core/reader/resizeImage.d.ts b/src/core/reader/resizeImage.d.ts
deleted file mode 100644
index 3ac433add532bda7aa715dfad084ccee4be74149..0000000000000000000000000000000000000000
--- a/src/core/reader/resizeImage.d.ts
+++ /dev/null
@@ -1,10 +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 declare function resizeImage(base64Str: string, maxWidth?: number, maxHeight?: number): Promise<string | undefined>;
diff --git a/src/core/synthetic-file/SyntheticFile.d.ts b/src/core/synthetic-file/SyntheticFile.d.ts
deleted file mode 100644
index 43cb064eb52ed857742cd3ced23f22af1f300e34..0000000000000000000000000000000000000000
--- a/src/core/synthetic-file/SyntheticFile.d.ts
+++ /dev/null
@@ -1,551 +0,0 @@
-/**
- * A syntetic file creator.
- * Very useful for tests
- */
-export declare 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) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_aac: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_abw: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_freearc: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_avi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_azw: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_octet: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bmp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_bz2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_cda: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csh: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_css: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_csv: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_doc: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_docx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_eot: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_epub: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gzip: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_gif: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_htm: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_html: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ico: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_icalendar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpeg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jpg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_js: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_json: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_jsonld: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mid: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_mid: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_midi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_x_midi: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mjs: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp3: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mp4: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpeg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_mpkg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ods: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_odt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_oga: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogv: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ogx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_opus: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_otf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_png: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pdf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_php: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ppt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_pptx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_rtf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_sh: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_svg: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_swf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tar: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tif: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_tiff: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ts: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_ttf: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_text: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_typescript: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vsd: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_wav: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_weba: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webm: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_webp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_woff2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xhtml: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xlsx: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xls: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xml_txt: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_xul: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_zip: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp2: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_a: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_3gp_v: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_7z: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_python: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_java: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_react: (size?: number) => File;
-    /**
-    *
-    * @param size the file size
-    * @returns a syntetic File object instance
-    */
-    static create_vue: (size?: number) => File;
-    /**
-     * 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[];
-}
-/**
- * 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 declare const createListOfMultiTypeFile: (size?: number) => File[];
-/**
- * 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 declare const createSyntheticFile: (name?: string, size?: number, type?: string) => File;
diff --git a/src/core/synthetic-file/index.d.ts b/src/core/synthetic-file/index.d.ts
deleted file mode 100644
index 185ff18df6d032b3123c3f5cd361840e2f1bf7c6..0000000000000000000000000000000000000000
--- a/src/core/synthetic-file/index.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { SyntheticFile, createListOfMultiTypeFile, createSyntheticFile } from "./SyntheticFile";
-export { makeSyntheticExtFile } from "./syntheticfileGenerator";
diff --git a/src/core/synthetic-file/syntheticfileGenerator.d.ts b/src/core/synthetic-file/syntheticfileGenerator.d.ts
deleted file mode 100644
index 5479f50f7f4058bac469cc8a5022c49ed3734eea..0000000000000000000000000000000000000000
--- a/src/core/synthetic-file/syntheticfileGenerator.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ExtFile, UPLOADSTATUS } from "../types";
-/**
- * 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 declare const makeSyntheticExtFile: (file?: File, valid?: boolean, uploadStatus?: UPLOADSTATUS, uploadMessage?: string) => ExtFile;
diff --git a/src/core/types/ExtFile.d.ts b/src/core/types/ExtFile.d.ts
deleted file mode 100644
index 6d2dcc5a15dc27a61313d9779e20c426feb1598f..0000000000000000000000000000000000000000
--- a/src/core/types/ExtFile.d.ts
+++ /dev/null
@@ -1,172 +0,0 @@
-import { UPLOADSTATUS, ServerResponse } from "../types";
-/**
- * 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 declare class ExtFileInstance {
-    /**
-     * An identifier for the extFile
-     */
-    id?: number | string;
-    /**
-     * 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;
-    imageUrl?: string;
-    /**
-     * 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[];
-    /**
-     * A message that shows the result of the upload process
-     */
-    uploadMessage?: string;
-    /**
-     * The current upload status. (e.g. "uploading")
-     */
-    uploadStatus?: UPLOADSTATUS | undefined;
-    /**
-     * The current upload progress
-     */
-    progress?: number;
-    /**
-     * The XMLHttpRequest object for performing uploads to a server
-     */
-    xhr?: XMLHttpRequest;
-    /**
-     * The additional data that will be sent to the server
-     */
-    extraData?: Record<string, any>;
-    /**
-     * The additional data that will be sent to the server
-     * when filesare uploaded individually
-     */
-    extraUploadData?: Record<string, any>;
-    /**
-     * The upload response from server
-     */
-    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
-     */
-    downloadUrl?: string;
-    /**
-     * Link, URI, FIle object or string representation of a video
-     */
-    videoUrl?: string;
-    constructor(extFile: ExtFile);
-    /**
-     * method under construction
-     */
-    /**
-     * 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;
-    /**
-     * Copies all non undefined attributes from ExtFileInstance to a new ExtFile object.
-     * @returns an ExtFile object
-     */
-    toExtFile(): ExtFile;
-}
diff --git a/src/core/types/ExtFileManager.d.ts b/src/core/types/ExtFileManager.d.ts
deleted file mode 100644
index 8922bca3769b40ef6433984cc804a66fd61d6fbd..0000000000000000000000000000000000000000
--- a/src/core/types/ExtFileManager.d.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { ExtFileInstance, ExtFile } from "./ExtFile";
-export declare class ExtFileManager {
-    private static nextId;
-    static fileLists: Record<number | string, ExtFileInstance[] | undefined>;
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    static getNextId(): number;
-    /**
-     * 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
-     */
-    static setFileList(id: number | string | undefined, extFilesInstances: ExtFileInstance[]): number | string;
-    /**
-     * Generates a new ID
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    static createFileListMap(): number;
-    /**
-     * Deletes a list map
-     * @returns the next Id asociated with a DuiFIle list
-     */
-    static removeFileListMap(id?: number | string): number | string;
-    /**
-     *
-     * @param id the id of the dropzone
-     * @returns
-     */
-    static getExtFileInstanceList(id?: number | string): ExtFileInstance[] | 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
-     */
-    static setFileListMapPreparing(dropzoneId: number | string, localFiles: ExtFile[], validateFiles: boolean, cleanOnUpload: boolean): ExtFileInstance[] | 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
- */
-    static setFileListMapPreparing2(dropzoneId: number | string, localFiles: ExtFile[], validateFiles: boolean, cleanOnUpload: boolean): ExtFileInstance[] | undefined;
-}
diff --git a/src/core/types/FileListMap.d.ts b/src/core/types/FileListMap.d.ts
deleted file mode 100644
index b5d6917f5cdcbafcebc389a993d8ac811461c278..0000000000000000000000000000000000000000
--- a/src/core/types/FileListMap.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { ExtFileInstance } from "./ExtFile";
-export declare type ExtFileListMap = {
-    [id: number | string]: ExtFileInstance[] | undefined;
-};
diff --git a/src/core/types/IconsMap.d.ts b/src/core/types/IconsMap.d.ts
deleted file mode 100644
index dbd9ea586ad6cc9228c304885d8628f277737b5f..0000000000000000000000000000000000000000
--- a/src/core/types/IconsMap.d.ts
+++ /dev/null
@@ -1,77 +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?: string;
-};
diff --git a/src/core/types/NamedColor.d.ts b/src/core/types/NamedColor.d.ts
deleted file mode 100644
index e4cf51bfbb77b6ee31fde583a242d36581d8303e..0000000000000000000000000000000000000000
--- a/src/core/types/NamedColor.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Interface to describe a named color
- */
-export interface NamedColor {
-    [colorName: string]: string;
-}
diff --git a/src/core/types/UploadConfig.d.ts b/src/core/types/UploadConfig.d.ts
deleted file mode 100644
index 59cfa60b04116eaca8dac9f739529216c4be8f31..0000000000000000000000000000000000000000
--- a/src/core/types/UploadConfig.d.ts
+++ /dev/null
@@ -1,58 +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 declare const createUploadConfig: (url?: string, method?: Method, headers?: Record<string, string>, uploadLabel?: string, cleanonUpload?: boolean) => {
-    url: string;
-    method: Method;
-    headers: Record<string, string>;
-    uploadLabel: string;
-    cleanonUpload: boolean;
-};
diff --git a/src/core/types/UploadStatus.d.ts b/src/core/types/UploadStatus.d.ts
deleted file mode 100644
index 6fce661a4c717aa683b7e06ff2ede10e4abb0fcb..0000000000000000000000000000000000000000
--- a/src/core/types/UploadStatus.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export type UPLOADSTATUS = "preparing" | "aborted" | "uploading" | "success" | "error";
diff --git a/src/core/types/behaviur.d.ts b/src/core/types/behaviur.d.ts
deleted file mode 100644
index b39ce8a0b0cf0f999af9730225f430f637933798..0000000000000000000000000000000000000000
--- a/src/core/types/behaviur.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * View mode for File Items inside dropzone
- */
-export declare type Behaviour = "add" | "replace";
diff --git a/src/core/types/index.d.ts b/src/core/types/index.d.ts
deleted file mode 100644
index b2d02fb872b8f5cac72f1a48b2146958ff5a4bfc..0000000000000000000000000000000000000000
--- a/src/core/types/index.d.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export type { Behaviour } from "./behaviur";
-export type { ExtFile } from "./ExtFile";
-export { ExtFileInstance } 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";
diff --git a/src/core/types/localization.d.ts b/src/core/types/localization.d.ts
deleted file mode 100644
index a0ff069c9321807414841707b2b7be85cb3e431f..0000000000000000000000000000000000000000
--- a/src/core/types/localization.d.ts
+++ /dev/null
@@ -1,8 +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 type ComponentLocalizer = {
-    [language in Localization]: LocalLabels;
-};
diff --git a/src/core/types/method.d.ts b/src/core/types/method.d.ts
deleted file mode 100644
index b752da5486873f017f62fe0798d55d75e61a1259..0000000000000000000000000000000000000000
--- a/src/core/types/method.d.ts
+++ /dev/null
@@ -1,10 +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 declare const idValidMethod: (method: string) => boolean;
diff --git a/src/core/types/uploadTypes.d.ts b/src/core/types/uploadTypes.d.ts
deleted file mode 100644
index 0266517b81bf2c0841c8843c8adc835f151d2b49..0000000000000000000000000000000000000000
--- a/src/core/types/uploadTypes.d.ts
+++ /dev/null
@@ -1,28 +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/core/types/validation.d.ts b/src/core/types/validation.d.ts
deleted file mode 100644
index f35040a1115ed941515359305b3c0545aefac492..0000000000000000000000000000000000000000
--- a/src/core/types/validation.d.ts
+++ /dev/null
@@ -1,20 +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/core/upload/addExtraData.upload.d.ts b/src/core/upload/addExtraData.upload.d.ts
deleted file mode 100644
index a57b6d5d6c4d497516d6da288a2960a23f760afc..0000000000000000000000000000000000000000
--- a/src/core/upload/addExtraData.upload.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function addExtraData(formData: FormData, extraData: Record<string, string> | undefined): void;
diff --git a/src/core/upload/addheaders.upload.d.ts b/src/core/upload/addheaders.upload.d.ts
deleted file mode 100644
index 6889520dcc00f5ded82f4d7e6271cfde45d39fe3..0000000000000000000000000000000000000000
--- a/src/core/upload/addheaders.upload.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export default function addHeaders(xhr: XMLHttpRequest, headers: Record<string, string> | undefined): void;
diff --git a/src/core/upload/errors.upload.d.ts b/src/core/upload/errors.upload.d.ts
deleted file mode 100644
index 0975c2461051d59eec20504c8242fa9c9c1f7eec..0000000000000000000000000000000000000000
--- a/src/core/upload/errors.upload.d.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { ExtFile } from "../types";
-export declare const TIMEOUT_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const ABORTED_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const JSON_PARSE_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const UNEXPECTED_ERROR_RESPONSE: {
-    success: boolean;
-    message: string;
-    payload: {};
-};
-export declare const NO_XHR_PROVIDED_ERROR: (extFile: ExtFile) => ExtFile;
diff --git a/src/core/upload/index.d.ts b/src/core/upload/index.d.ts
deleted file mode 100644
index ef809cc94675df1896ebf712e99f01489deb0837..0000000000000000000000000000000000000000
--- a/src/core/upload/index.d.ts
+++ /dev/null
@@ -1,6 +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/core/upload/response.upload.d.ts b/src/core/upload/response.upload.d.ts
deleted file mode 100644
index 2a24ac4efd652391dc1f2566e14308b808cdd864..0000000000000000000000000000000000000000
--- a/src/core/upload/response.upload.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ExtFile, ServerResponse } from "../types";
-export declare const makeServerResponse: (success: any, message: string, payload: any) => ServerResponse;
-export declare const JsonParseResponse: (xhr: XMLHttpRequest) => ServerResponse;
-export declare const makeSuccessUploadResponse: (extFile: ExtFile, responseFui: ServerResponse) => ExtFile;
-export declare const makeErrorUploadResponse: (extFile: ExtFile, responseFui: ServerResponse) => ExtFile;
diff --git a/src/core/upload/upload.d.ts b/src/core/upload/upload.d.ts
deleted file mode 100644
index 783be826478a479f76c48452dee693fa350a81fd..0000000000000000000000000000000000000000
--- a/src/core/upload/upload.d.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { ExtFile, Method } from "../types";
-import { ServerResponse } from "../types/uploadTypes";
-/**
- * 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 declare const uploadFormData: (xhr: XMLHttpRequest, method: Method | undefined, endpoint: string, data: FormData, headers: Record<string, string> | undefined) => Promise<ServerResponse>;
-/**
- *
- * @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 declare const uploadExtFile: (extFile: ExtFile, url: string, method?: Method, headers?: Record<string, string>, uploadLabel?: string) => Promise<ExtFile>;
-export declare function uploadFile(file: File, url: string, method?: Method, label?: string, headers?: Record<string, string>): Promise<ServerResponse>;
-/**
- * @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 declare const FuiUpload: (xhr: XMLHttpRequest, method: Method, endpoint: string, data: FormData, headers: Record<string, string>) => Promise<ServerResponse>;
diff --git a/src/core/upload/utils.upload.d.ts b/src/core/upload/utils.upload.d.ts
deleted file mode 100644
index 54e00c251c5d54c302d1ae542e06fedcf6a238f9..0000000000000000000000000000000000000000
--- a/src/core/upload/utils.upload.d.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { ExtFile, ExtFileInstance, ServerResponse, UploadResponse, UPLOADSTATUS } from "../types";
-export declare const unexpectedErrorUploadResult: (extFile: ExtFile) => ExtFile;
-export declare const unableToUploadResult: (extFile: ExtFile) => UploadResponse;
-export declare const completeUploadResult: (extFile: ExtFile, serverResponse: ServerResponse, uploadStatusresult: UPLOADSTATUS) => UploadResponse;
-/**
- * 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 declare const toUploadableExtFileList: (extFileList: ExtFile[] | ExtFileInstance[]) => ExtFile[];
-/**
- * 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 declare const instantPreparingToUploadOne: (extFile: ExtFileInstance | ExtFile) => ExtFileInstance | ExtFile;
-/**
- *
- * @param extFile the extended file
- * @returns
- */
-export declare const preparingToUploadOne: (extFile: ExtFileInstance | ExtFile) => Promise<ExtFileInstance | ExtFile>;
-/**
- * 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 declare const sleepTransition: (time?: number) => Promise<boolean>;
-/**
- * Removes the deleted files and updates the aborted ones with a message
- * @param arrExtFile incomming arr of extFle instances
- * @returns an array of ExtFle objects
- */
-export declare const sanitizeArrExtFile: (arrExtFile: ExtFileInstance[]) => ExtFile[];
-/**
- *
- * @param extFileInstance
- * @param extFileobj
- */
-export declare const setNextUploadStatus: (extFileInstance: ExtFileInstance, extFileobj: ExtFile) => void;
diff --git a/src/core/utils/IdGenerator.d.ts b/src/core/utils/IdGenerator.d.ts
deleted file mode 100644
index d1bcc090aac7865f8fe3fee452f1a2f6bf076156..0000000000000000000000000000000000000000
--- a/src/core/utils/IdGenerator.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * An id generator for FileItems
- */
-export declare abstract class FileIdGenerator {
-    static nextId: number;
-    /**
-     * Increases the id counter and returns the next id available.
-     * @returns the next integer id available
-     */
-    static getNextId(): number;
-}
diff --git a/src/core/utils/addClassName.d.ts b/src/core/utils/addClassName.d.ts
deleted file mode 100644
index c1b5925d6f2684d5786e991e7fa9b0db81d29218..0000000000000000000000000000000000000000
--- a/src/core/utils/addClassName.d.ts
+++ /dev/null
@@ -1,7 +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 declare const addClassName: (baseClassName: string, className: string | undefined) => string;
diff --git a/src/core/utils/dropzone.utils.d.ts b/src/core/utils/dropzone.utils.d.ts
deleted file mode 100644
index c872040334f679011fb0d3700671ba64d3f863c5..0000000000000000000000000000000000000000
--- a/src/core/utils/dropzone.utils.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export declare const isValidateActive: (accept: string | undefined, maxFileSize: number | undefined, maxFiles: number | undefined, validator: Function | undefined) => boolean;
diff --git a/src/core/utils/fakeupload.utils.d.ts b/src/core/utils/fakeupload.utils.d.ts
deleted file mode 100644
index ea34da16bf6392f6a43ba9736754209cda194866..0000000000000000000000000000000000000000
--- a/src/core/utils/fakeupload.utils.d.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-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 declare const setPrepToUploading: (extFile: ExtFile) => Promise<ExtFile>;
-/**
- * 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 declare const uploadOne: (extFile: ExtFile) => Promise<ExtFile>;
-/**
- * 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 declare const sleepPreparing: (preparingTime?: number) => Promise<void>;
-/**
- *
- * @param extFileInstance
- * @returns
- */
-export declare const prepToUploadOne: (extFileInstance: ExtFileInstance | ExtFile) => Promise<ExtFileInstance | ExtFile>;
-/**
- *
- * @param extFileInstance
- * @returns
- */
-export declare const uploadOneExtFile: (extFileInstance: ExtFileInstance) => Promise<Object>;
-/**
- *
- * @param extFile the extFile to upload
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export declare const fakeFuiUpload: (extFileInstance: ExtFileInstance, DropzoneLocalizer?: import("../types").LocalLabels) => Promise<ExtFile>;
-/**
- *
- * @param extFile the extFile to upload
- * @param DropzoneLocalizer the localization
- * @returns a duiUploadResponse object that describes the result
- */
-export declare const fakeFuiUploadExtFile: (extFileInstance: ExtFileInstance, DropzoneLocalizer?: import("../types").LocalLabels) => Promise<UploadResponse>;
diff --git a/src/core/utils/fileListParser.d.ts b/src/core/utils/fileListParser.d.ts
deleted file mode 100644
index 940a12384633537b85755c62af6c351a9758e39c..0000000000000000000000000000000000000000
--- a/src/core/utils/fileListParser.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ExtFile, ExtFileInstance } from "../types";
-/**
- * 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 declare const fileListToExtFileArray: (fileList: FileList) => ExtFile[];
-/**
- * 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 declare const fileListToExtFileInstanceArray: (fileList: FileList) => ExtFileInstance[];
diff --git a/src/core/utils/fileSizeFormatter.d.ts b/src/core/utils/fileSizeFormatter.d.ts
deleted file mode 100644
index a3a53b64bf2f892c030b9ef67021dbcad47e58aa..0000000000000000000000000000000000000000
--- a/src/core/utils/fileSizeFormatter.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Gives a XX.XX format in Bytes KB, MB, GB or TB
- * @param fileSize file size to give format in Bytes
- */
-export declare const fileSizeFormater: (fileSize?: number | false) => string | undefined;
diff --git a/src/core/utils/getExt.d.ts b/src/core/utils/getExt.d.ts
deleted file mode 100644
index 110c9f08a48e990d5af7b9088f204810fd1be558..0000000000000000000000000000000000000000
--- a/src/core/utils/getExt.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Looks for the first file extension
- * @param fileName file name
- * @returns the file name extension
- */
-export declare const getExt: (fileName: string) => string;
diff --git a/src/core/utils/getLocalFileItemData.d.ts b/src/core/utils/getLocalFileItemData.d.ts
deleted file mode 100644
index 6a94345e7e026a6951d350d8e7ef283b751adbf9..0000000000000000000000000000000000000000
--- a/src/core/utils/getLocalFileItemData.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- *
- * @param file
- * @param name
- * @param type
- * @param size
- * @returns the file name, type and size
- */
-export declare const getLocalFileItemData: (file: File | undefined, name: string | undefined, type: string | undefined, size: number | undefined) => [string, string | undefined, number | undefined];
diff --git a/src/core/utils/index.d.ts b/src/core/utils/index.d.ts
deleted file mode 100644
index c48ce5d2254177ae6deea000ea52e78cd508a578..0000000000000000000000000000000000000000
--- a/src/core/utils/index.d.ts
+++ /dev/null
@@ -1,13 +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 { 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";
diff --git a/src/core/utils/input.utils.d.ts b/src/core/utils/input.utils.d.ts
deleted file mode 100644
index 658f95c6e32d6068afa014f96206d8d0f42a4db2..0000000000000000000000000000000000000000
--- a/src/core/utils/input.utils.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Cleans the input.value attribute
- * @param inputElement
- */
-export declare const cleanInput: (inputElement?: HTMLInputElement | null) => void;
diff --git a/src/core/utils/isUploadAbleExtFile.d.ts b/src/core/utils/isUploadAbleExtFile.d.ts
deleted file mode 100644
index 248c16c3987ca7eeeb2cdb1c7f9e3fd1a790265a..0000000000000000000000000000000000000000
--- a/src/core/utils/isUploadAbleExtFile.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import { ExtFile } from "../types";
-export declare const isUploadAbleExtFile: (extFile: ExtFile, validateFilesFlag: boolean) => boolean;
diff --git a/src/core/utils/randomInt.d.ts b/src/core/utils/randomInt.d.ts
deleted file mode 100644
index 1d459e19b393ba6b027eaf12c79c27a41ed114dd..0000000000000000000000000000000000000000
--- a/src/core/utils/randomInt.d.ts
+++ /dev/null
@@ -1,7 +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 declare function getRandomInt(min?: number, max?: number): number;
diff --git a/src/core/utils/shrinkWord.d.ts b/src/core/utils/shrinkWord.d.ts
deleted file mode 100644
index fd5c13e6a043c17edf6bbb7f02e493db2cbb7028..0000000000000000000000000000000000000000
--- a/src/core/utils/shrinkWord.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * The max size of the word in characters
- */
-export declare const DEFAULT_MAX_SIZE_WORD = 30;
-/**
- *
- * @param word the word to be shrinked
- * @returns the shrinked word
- */
-export declare const shrinkWord: (word?: string, card?: boolean) => string;
diff --git a/src/core/validation/fakeerros.d.ts b/src/core/validation/fakeerros.d.ts
deleted file mode 100644
index 4c6e643c8499fd81c9d911fdb3866ea7267d6047..0000000000000000000000000000000000000000
--- a/src/core/validation/fakeerros.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * list of dumy errors in english
- */
-export declare const listOfErrors: string[];
diff --git a/src/core/validation/fileValidator.d.ts b/src/core/validation/fileValidator.d.ts
deleted file mode 100644
index ca0b54e13dadd8304b585ddb000b5fbe8955b17d..0000000000000000000000000000000000000000
--- a/src/core/validation/fileValidator.d.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { ExtFile, Localization, LocalLabels } from "../types";
-import { ValidateFileResponse, FileValidatorProps } from "../types/validation";
-/**
- *
- * @param preValidatedFiles FileList
- * @param remainingValids The number of remaining valid files
- * @param localValidator
- * @param validator
- * @param maxFiles
- * @param localization
- * @returns
- */
-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.
- * 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 declare const validateExtFileList: (extFileList: ExtFile[], remainingValids: number, localValidatorProps: FileValidatorProps, validator?: (f: File) => ValidateFileResponse, maxFiles?: number, localization?: Localization) => ExtFile[];
-/**
- *
- * @param extFile
- * @param validator
- * @param validatorProps
- * @param localErrors
- * @returns
- */
-export declare const validateExtFile: (extFile: ExtFile, validator: (f: File) => ValidateFileResponse, validatorProps: FileValidatorProps, localErrors: LocalLabels) => ExtFile;
-/**
- * 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 declare const validateFile: (file: File, validator: (f: File) => ValidateFileResponse, validatorProps: FileValidatorProps, localErrors: LocalLabels) => ExtFile;
diff --git a/src/core/validation/index.d.ts b/src/core/validation/index.d.ts
deleted file mode 100644
index 60029ff84608d611618d0b6c3bf17c737457e596..0000000000000000000000000000000000000000
--- a/src/core/validation/index.d.ts
+++ /dev/null
@@ -1,5 +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";
diff --git a/src/core/validation/randomStatus.d.ts b/src/core/validation/randomStatus.d.ts
deleted file mode 100644
index 9e7e4a0fce6d8eed946cf370910bff0dff63d1d7..0000000000000000000000000000000000000000
--- a/src/core/validation/randomStatus.d.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { UPLOADSTATUS } from "../types";
-/**
- * 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 declare const getRandomUploadStatus: () => UPLOADSTATUS | undefined;
diff --git a/src/core/validation/separateAccept.d.ts b/src/core/validation/separateAccept.d.ts
deleted file mode 100644
index fc7c610b36186b2ebaf88bbd46780984ef02f862..0000000000000000000000000000000000000000
--- a/src/core/validation/separateAccept.d.ts
+++ /dev/null
@@ -1,6 +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 declare const separateAccept: (accept: string | undefined) => string[];
diff --git a/src/core/validation/validateAccept.d.ts b/src/core/validation/validateAccept.d.ts
deleted file mode 100644
index 90f11d61ac022c2fa4af79c212fb343dc59020b8..0000000000000000000000000000000000000000
--- a/src/core/validation/validateAccept.d.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * 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 declare const validateAccept: (accept: string[], file: File) => boolean;
diff --git a/src/hooks/getProgress.ts b/src/hooks/getProgress.ts
index ca505f1d3551d01ef7135771267c1f5d7ce2ccb9..d17dd76aad3f7ef099ed6b7441ac6a1d7d2a5f4f 100644
--- a/src/hooks/getProgress.ts
+++ b/src/hooks/getProgress.ts
@@ -2,14 +2,14 @@ const getProgress = (
     progress: number | undefined,
     xhr?: XMLHttpRequest,) => {
         
-    console.log("getProgress", progress, xhr);
+    //console.log("getProgress", progress, xhr);
     if (progress !== undefined) {
         return progress;
     } else {
         if (xhr !== undefined && xhr !== null && xhr.upload.onprogress === null) {
             // xhr was given but it was not initialized the `onprogress` event
             xhr.upload.onprogress = (event: ProgressEvent<EventTarget>) => {
-                console.log("getProgress progress", progress, (event.loaded / event.total) * 100);
+                //console.log("getProgress progress", progress, (event.loaded / event.total) * 100);
 
 
                 return (event.loaded / event.total) * 100;
diff --git a/src/hooks/useDropLayerClassName.ts b/src/hooks/useDropLayerClassName.ts
index f9e29a0b41c9b10f3d7d8b33a0074b1a6213462c..38181c431451884a0814c8183640e580c8af242d 100644
--- a/src/hooks/useDropLayerClassName.ts
+++ b/src/hooks/useDropLayerClassName.ts
@@ -2,7 +2,7 @@ import { DynamicSheet, DynamiCSS } from "@dynamicss/dynamicss";
 import * as React from "react";
 import { makeDropLayerDynamicStyle } from "../DropLayer/utils/dropLayerDynamicStyle";
 
-const BASE_DROP_LAYER_STYLE: string = "files-ui-styles-drop-layer";
+//const BASE_DROP_LAYER_STYLE: string = "files-ui-styles-drop-layer"; 
 
 
 /**
@@ -22,11 +22,11 @@ export const useDropLayerClassName = (
     const [styleInjected, setStyleInjected] = React.useState<boolean>(false);
     const [classNameCreated, setClassNameCreated] = React.useState<string>("");
 
-    const finalDropzoneId: string = (color === undefined) ? "default" : dropzoneId.replaceAll(":", "_");
+    const finalDropzoneId: string = (color === undefined) ? "default" : dropzoneId.replace(":", "_").replace(":", "_");
 
 
     React.useEffect(() => {
-        //console.log("useDropLayerClassName", color, isDragging, makeClassName);
+        ////console.log("useDropLayerClassName", color, isDragging, makeClassName);
 
         const handleInserStyle = (
             color?: string,
@@ -38,7 +38,7 @@ export const useDropLayerClassName = (
             );
             let idStyle: string = "";
 
-            console.log("useDropLayerClassName handleInserStyle", color, styleSheet);
+            //console.log("useDropLayerClassName handleInserStyle", color, styleSheet);
 
 
             if (finalDropzoneId === "default" && !styleInjected) {
@@ -72,7 +72,7 @@ export const useDropLayerClassName = (
             setClassNameCreated(finalClassName);
         };
 
-        //console.log("=>", isDragging);
+        ////console.log("=>", isDragging);
 
         if (makeClassName) {
             handleInserStyle(color,
diff --git a/src/hooks/useDropzoneClassName.ts b/src/hooks/useDropzoneClassName.ts
index 2eadce96e4593d96dfe5dcdb16efff3cef15eb95..a700d4c25eb14d37468f514a85e8add87c78a169 100644
--- a/src/hooks/useDropzoneClassName.ts
+++ b/src/hooks/useDropzoneClassName.ts
@@ -1,6 +1,7 @@
 import { DynamicSheet, DynamicSheetRule, DynamiCSS } from "@dynamicss/dynamicss";
 import * as React from "react";
-import { completeAsureColor } from "../core";
+import { completeAsureColor } from "theamazingunkowntext";
+
 import { DEFAULT_BORDER_RADIUS } from "../Dropzone/components/dropzone/DropzoneProps";
 
 export function useDropzoneClassName(
@@ -15,7 +16,7 @@ export function useDropzoneClassName(
     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 finalDropzoneId: string = (color === undefined && background === undefined && minHeight === undefined) ? "default" : dropzoneId.replace(":", "_").replace(":", "_");
 
     const baseClassName: string = "fui-dropzone-root fui-dropzone-border";
 
@@ -80,14 +81,14 @@ export function useDropzoneClassName(
     }
 
     React.useEffect(() => {
-        makeClassName(className, 
+        makeClassName(className,
             //isDragging,
             //offset, 
             color,
             // borderRadius, 
             background, minHeight);
         // eslint-disable-next-line
-    }, [className, 
+    }, [className,
         //isDragging,
         // offset, 
         color,
@@ -154,9 +155,9 @@ const makeDynamicDropzoneStyleSheet = (
     const sheetRules: DynamicSheetRule[] =
         [
             rootColorBorderStyle,
-            rootColorBorderStyleHideBorder, 
-            headerBorderStyle, 
-            footerBorderStyle, 
+            rootColorBorderStyleHideBorder,
+            headerBorderStyle,
+            footerBorderStyle,
             disabledLayerStyle
         ];
 
diff --git a/src/hooks/useDropzoneFileUpdater.ts b/src/hooks/useDropzoneFileUpdater.ts
index e4549b48c9ff258f9989356691b2071c16352120..fe5974f13e3b3a50bcfa7a1304abf1e513701843 100644
--- a/src/hooks/useDropzoneFileUpdater.ts
+++ b/src/hooks/useDropzoneFileUpdater.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { ValidateFileResponse, ExtFile, ExtFileInstance, ExtFileManager, FileValidatorProps, Localization, setNextUploadStatus, validateExtFileList } from "../core";
+import { ValidateFileResponse, ExtFile, ExtFileInstance, ExtFileManager, FileValidatorProps, Localization, setNextUploadStatus, validateExtFileList } from "theamazingunkowntext"
 
 /**
  * Effect for keeping track of changes
@@ -25,9 +25,9 @@ export const useDropzoneFileListUpdater = (
     localization?: Localization,
     validateFilesFlag?: boolean
 ): [ExtFile[], number, React.Dispatch<React.SetStateAction<ExtFile[]>>] => {
-    console.log("incomming extfiles fileupdater value", value.map(x => x.uploadStatus));
+    //console.log("incomming extfiles fileupdater value", value.map(x => x.uploadStatus));
     
-    console.log("FileListUpdater", dropzoneId, value, isUploading, maxFileSize, accept, maxFiles, validateFilesFlag);
+    //console.log("FileListUpdater", dropzoneId, value, isUploading, maxFileSize, accept, maxFiles, validateFilesFlag);
 
     //state for managing the files locally
     const [localFiles, setLocalFiles] = React.useState<ExtFile[]>([]);
@@ -39,8 +39,8 @@ export const useDropzoneFileListUpdater = (
     React.useEffect(() => {
         let arrOfExtFiles: ExtFileInstance[] | undefined =
             ExtFileManager.getExtFileInstanceList(dropzoneId);
-        console.log("value changed", isUploading, value.map(F => F.uploadStatus), dropzoneId);
-        // console.log("value changed", value.map(F => F.uploadStatus));
+        //console.log("value changed", isUploading, value.map(F => F.uploadStatus), dropzoneId);
+        // //console.log("value changed", value.map(F => F.uploadStatus));
         if (!isUploading) {
             setLocalFiles(value);
         } else {
@@ -58,7 +58,7 @@ export const useDropzoneFileListUpdater = (
 
                     if (extFileIndex === -1) {
                         extFileInstance.extraData = { deleted: true }
-                        console.log("extFileUpdater not found", extFileInstance.id);
+                        //console.log("extFileUpdater not found", extFileInstance.id);
                     } else {
                         const currExtFileObj: ExtFile = value[extFileIndex];
 
@@ -75,7 +75,7 @@ export const useDropzoneFileListUpdater = (
                         &&
                         (arrOfExtFiles[i].uploadStatus === "preparing")
                     ) {
-                        console.log("useDropzoneFileListUpdater onCancel i", i);
+                        //console.log("useDropzoneFileListUpdater onCancel i", i);
                         arrOfExtFiles[i].uploadStatus = undefined;
                     }
                 } */
diff --git a/src/hooks/useDropzoneValidation.ts b/src/hooks/useDropzoneValidation.ts
index fae00ea290823637f1b63e04b2fbd5fe291f4276..a748b9c91da4d49fecd740f3221539d6409f1e03 100644
--- a/src/hooks/useDropzoneValidation.ts
+++ b/src/hooks/useDropzoneValidation.ts
@@ -1,5 +1,5 @@
 import * as React from "react"
-import { ValidateFileResponse } from "../core";
+import { ValidateFileResponse } from "theamazingunkowntext"
 
 export const useDropzoneValidation = (
     accept: string | undefined,
diff --git a/src/hooks/useFakeProgress.ts b/src/hooks/useFakeProgress.ts
index 9660e290fa3ad8fbbbcf9c3c81dc348b4d840baf..4cc74967e3cb938103610717b0ba2e60cedb7968 100644
--- a/src/hooks/useFakeProgress.ts
+++ b/src/hooks/useFakeProgress.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { getRandomInt } from "../core";
+import { getRandomInt } from "theamazingunkowntext"
 
 export const useFakeProgress = (time = 1500) => {
     const [progress, setProgress] = React.useState(28);
@@ -23,10 +23,10 @@ export const useFakeProgress = (time = 1500) => {
         const _myInterval = setInterval(() => {
             setProgress((_progress) => updateProgress(_progress));
         }, time);
-        console.log("useFakeProgress SET interval", _myInterval);
+        //console.log("useFakeProgress SET interval", _myInterval);
 
         return () => {
-            console.log("useFakeProgress CLEAR interval", _myInterval);
+            //console.log("useFakeProgress CLEAR interval", _myInterval);
             clearInterval(_myInterval as NodeJS.Timer);
         };
         // eslint-disable-next-line
diff --git a/src/hooks/useFileMosaicInitializer.ts b/src/hooks/useFileMosaicInitializer.ts
index 3bbd61aa34e48b44651963fa4634d50c4216fb75..381e52305e7b613a61f406ae0ca46448d9eea03b 100644
--- a/src/hooks/useFileMosaicInitializer.ts
+++ b/src/hooks/useFileMosaicInitializer.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { getURLFileIco, readAsDataURL, getURLFileIcoFromNameAndType } from "../core";
+import { getURLFileIco, readAsDataURL, getURLFileIcoFromNameAndType } from "theamazingunkowntext"
 import { IconsSet } from "../FilesUiProvider";
 
 /**
@@ -73,17 +73,16 @@ export const useFileMosaicInitializer = (
             setVideoSource(videoUrl);
             setIsReady(true);
         } else {
-            const [headerMime, tailMime] = getHeaderAndTail(file, type);
+            //const [headerMime, tailMime] = getHeaderAndTail(file, type);
+            const response = getHeaderAndTail(file, type);
 
-            setIsImage(headerMime === "image");
-
-            setIsVideo(
-                headerMime === "video" && ["mp4", "ogg", "webm"].includes(tailMime)
-            );
+            setIsImage(response[0] === "image");
+            if (["mp4", "ogg", "webm"].includes(response[1]))
+                setIsVideo(response[0] === "video");
             if (
                 preview &&
                 (valid || typeof valid === "undefined" || valid === null) &&
-                headerMime === "image"
+                response[0] === "image"
             ) {
                 //lets check for image preview from File
                 let response: string | undefined = undefined;
diff --git a/src/hooks/useIsUploading.ts b/src/hooks/useIsUploading.ts
index 0d14cbdca142f35bf7b54ae72c12fafdee61c1e1..e0fee0b07200255b29571c38342a68ada5998dc5 100644
--- a/src/hooks/useIsUploading.ts
+++ b/src/hooks/useIsUploading.ts
@@ -1,4 +1,4 @@
-import { UPLOADSTATUS } from "../core";
+import { UPLOADSTATUS } from "theamazingunkowntext"
 import * as React from "react";
 export const useIsUploading = (uploadStatus: UPLOADSTATUS | undefined): boolean => {
 
diff --git a/src/hooks/useNumberOfValidFiles.ts b/src/hooks/useNumberOfValidFiles.ts
index 4b7fdbefbc60a59e7c2d03bb36baf3c097006010..1cd83b066e8642bacb85a729b5bd8594617b4c50 100644
--- a/src/hooks/useNumberOfValidFiles.ts
+++ b/src/hooks/useNumberOfValidFiles.ts
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { ExtFile } from "../core";
+import { ExtFile } from "theamazingunkowntext"
 
 /**
  * Custom hook for managing
diff --git a/src/hooks/useProgress.ts b/src/hooks/useProgress.ts
index be1d763464906b00398449351b5faa2e632a4e53..db2bad0496893e841058c535106ad9e90495b22b 100644
--- a/src/hooks/useProgress.ts
+++ b/src/hooks/useProgress.ts
@@ -10,7 +10,7 @@ export const useProgress = (
     xhr?: XMLHttpRequest,
 
 ): number | undefined => {
-    console.log("getProgress", progress, xhr);
+    //console.log("getProgress", progress, xhr);
 
     const [localProgress, setLocalProgress] = React.useState<number | undefined>(undefined);
 
@@ -23,7 +23,7 @@ export const useProgress = (
         if (xhr !== undefined && xhr !== null && xhr.upload.onprogress === null) {
             // xhr was given but it was not initialized the `onprogress` event
             xhr.upload.onprogress = (event: ProgressEvent<EventTarget>) => {
-                console.log("getProgress progress", progress, (event.loaded / event.total) * 100);
+                //console.log("getProgress progress", progress, (event.loaded / event.total) * 100);
 
 
                 setLocalProgress((event.loaded / event.total) * 100);
diff --git a/src/index.ts b/src/index.ts
index a54e82645d188f6c4f7fc331973515aaff7e7938..494fbaab444aec5c71fe875492a4cd4394685f54 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -45,7 +45,7 @@ export {
     ExtFileInstance,
     ExtFileManager,
     createUploadConfig
-} from "./core";
+} from "theamazingunkowntext"
 
 export type {
     ExtFile,
@@ -57,7 +57,7 @@ export type {
     UploadConfig,
     ValidateFileResponse,
     IconsMap
-} from "./core";
+} from "theamazingunkowntext"
 
 
 export { default as FilesUiProvider } from "./FilesUiProvider/FilesUiProvider";
diff --git a/src/loader/DefaultLoader/DefaultLoader.tsx b/src/loader/DefaultLoader/DefaultLoader.tsx
index e2218c62327b91cd2ef32a53dc210022d376aac8..1260f24ea66b240d38148e218dc9136f5aae9f5a 100644
--- a/src/loader/DefaultLoader/DefaultLoader.tsx
+++ b/src/loader/DefaultLoader/DefaultLoader.tsx
@@ -1,5 +1,5 @@
 import * as React from "react";
-import { completeAsureColor } from "../../core";
+import { completeAsureColor } from "theamazingunkowntext"
 import "./DefaultLoader.scss";
 interface DefaultLoaderNeoProps {
   color?: string;
diff --git a/src/loader/DefaultLoader/loader.tsx b/src/loader/DefaultLoader/loader.tsx
index bba23913512d2a56e8d029fe077e756e818f2040..a32c5673bd70ab561244630d2a0e062841f6fcc7 100644
--- a/src/loader/DefaultLoader/loader.tsx
+++ b/src/loader/DefaultLoader/loader.tsx
@@ -1,7 +1,7 @@
 
 
 import React, { FC } from "react";
-import { hexColorToRGB } from "../../core";
+import { hexColorToRGB } from "theamazingunkowntext"
 interface LoaderProps {
   color?: string;
 }
diff --git a/src/loader/DynamicLoader/DynamicLoader.tsx b/src/loader/DynamicLoader/DynamicLoader.tsx
index f2d23cb090bac1757d8186db4ad1be579998a3cf..b245670f5fca0f027105573362f20d571476498b 100644
--- a/src/loader/DynamicLoader/DynamicLoader.tsx
+++ b/src/loader/DynamicLoader/DynamicLoader.tsx
@@ -23,8 +23,8 @@ const DynamicLoader: React.FC<DynamicLoaderProps> = (
     onClick,
   } = props;
 
-  console.table(props);
-  //console.log("percentage", percentage);
+  //console.table(props);
+  ////console.log("percentage", percentage);
 
   const finalRadius = radius || 28;
   const finalX = x || 30;
@@ -41,19 +41,14 @@ const DynamicLoader: React.FC<DynamicLoaderProps> = (
     circumference: number
   ) {
     myCircle.style.strokeDashoffset = `${circumference * (1 - percent / 100)}`;
-    console.log(
-      "dashOffset",
-      percent,
-      circumference,
-      circumference * (1 - percent / 100)
-    );
+
     //myCircle.style.strokeDashoffset = `0`;
     /* let pct = document.getElementById("pct");
     pct.innerHTML = percent.toFixed(0) + "%"; */
   }
   React.useEffect(() => {
     const myCircle: SVGCircleElement | null = circleRef.current;
-    console.log("percentage useEffect", percentage);
+    //console.log("percentage useEffect", percentage);
 
     if (
       myCircle !== null &&
diff --git a/src/overridable/OverridableComponentsProps.ts b/src/overridable/OverridableComponentsProps.ts
index b43c39e791d5fdc7b560454fd3c3337455724c7d..8c927a1c800451b8ae79032e0055fda3ab135224 100644
--- a/src/overridable/OverridableComponentsProps.ts
+++ b/src/overridable/OverridableComponentsProps.ts
@@ -1,3 +1,4 @@
+import * as React from "react";
 /**
  * Base props to override in all components
  * and take advantage of the
diff --git a/src/overridable/mergeProps.ts b/src/overridable/mergeProps.ts
index 2fad13c86632bc8a6dc4c17e0c661bd64e28ec56..c4551e23b6ccc1812b14ce1077afd25405d4a8bf 100644
--- a/src/overridable/mergeProps.ts
+++ b/src/overridable/mergeProps.ts
@@ -11,7 +11,7 @@ import { OverridableComponentProps } from "./OverridableComponentsProps";
  export function mergeProps<T extends OverridableComponentProps>
  (incommingProps: T | undefined,
      defaultProps: T): T {
-console.log("incommingProps",incommingProps);
+//console.log("incommingProps",incommingProps);
  if (!incommingProps) {
      return defaultProps;
  } else {
diff --git a/src/tooltip/Tooltip.tsx b/src/tooltip/Tooltip.tsx
index b4aac4dd6335374b2b7d6a9d522d73891642fdc4..fa00daf680fbd1cf9ef25071e607b692d8998b43 100644
--- a/src/tooltip/Tooltip.tsx
+++ b/src/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 "theamazingunkowntext"
 const Tooltip: React.FC<TooltipProps> = (props: TooltipProps) => {
   const {
     //message,
@@ -15,8 +15,7 @@ const Tooltip: React.FC<TooltipProps> = (props: TooltipProps) => {
     uploadMessage,
     open,
   } = props;
-  /*  console.log("ToolTip");
-  console.table(props); */
+
   const [statusClassName, setSatusClassName] = React.useState<
     string | undefined
   >(undefined);
diff --git a/src/tooltip/TooltipProps.ts b/src/tooltip/TooltipProps.ts
index 8271fc75967305b5b830e42b726385410bef082b..0467ceaf7fa1c8b3b960ed5cdf9026f384f97db7 100644
--- a/src/tooltip/TooltipProps.ts
+++ b/src/tooltip/TooltipProps.ts
@@ -1,4 +1,4 @@
-import { UPLOADSTATUS } from "../core";
+import { UPLOADSTATUS } from "theamazingunkowntext"
 import { OverridableComponentProps } from "../overridable";
 
 export interface TooltipPropsMap extends OverridableComponentProps {
diff --git a/src/utils/click.utils.ts b/src/utils/click.utils.ts
index a91e6a99917705b1bb7be27e4aa5a97a887af925..7e9c012dd6b42fc97adce6c547a372bcf70cbd1f 100644
--- a/src/utils/click.utils.ts
+++ b/src/utils/click.utils.ts
@@ -1,3 +1,5 @@
+import * as React from "react";
+
 /**
  * Performs stopPropagation and preventDefault functions on an click event instance
  * @param evt click event handler object
@@ -18,7 +20,6 @@ export function
 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/utils/dragdrop.utils.ts b/src/utils/dragdrop.utils.ts
index 9a04abbf7d2f10d496447768ed64c7b553f71d51..9fb7314237fc4535a592b26ad9099234f0fd8ebc 100644
--- a/src/utils/dragdrop.utils.ts
+++ b/src/utils/dragdrop.utils.ts
@@ -1,3 +1,4 @@
+import * as React from "react";
 /**
  * Performs stopPropagation and preventDefault functions on an drop event instance
  * @param evt drag event handler object
diff --git a/src/utils/ripple/ripple.ts b/src/utils/ripple/ripple.ts
index 6a8701319b3dd4865146119ee7886a89c150a153..cd76289fda635482092c390c38e9d7d0169f79e6 100644
--- a/src/utils/ripple/ripple.ts
+++ b/src/utils/ripple/ripple.ts
@@ -1,4 +1,5 @@
-import { completeAsureColor, hexColorToRGB } from "../../core";
+import * as React from "react";
+import { completeAsureColor, hexColorToRGB } from "theamazingunkowntext"
 
 const asureRippleColor = (color: string): string => {
   return completeAsureColor(color,
diff --git a/tsconfig.json b/tsconfig.json
index c61377225460f1f65b78dd349a18892d90d9a022..302e0326da537e9d4625b582fe111e21920ed706 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,13 +4,12 @@
     "declarationDir": "build",
     "module": "esnext",
     "target": "es5",
-    "lib": ["es6", "dom", "es2016", "es2021"],
+    "lib": ["es6", "dom", "es2016", "es2017"],
     "sourceMap": true,
     "jsx": "react",
     "moduleResolution": "node",
     "allowSyntheticDefaultImports": true,
-    "esModuleInterop": true,
-    
+    "esModuleInterop": true
   },
   "include": ["src/**/*"],
   "exclude": ["node_modules", "build"],