From 9638db153b5b069c07912ab306f38d25b2920bc0 Mon Sep 17 00:00:00 2001 From: Jose Manuel Serrano Amaut <a20122128@pucp.pe> Date: Sat, 25 Mar 2023 02:16:27 -0500 Subject: [PATCH] [INIT]: MVP for files-ui/react --- CHANGELOG.md | 183 ++++++ CODE_OF_CONDUCT.md | 47 ++ CONTRIBUTING.md | 115 ++++ README.md | 34 +- package-lock.json | 409 ++++++++++--- package.json | 18 +- rollup.config.js | 5 +- src/Avatar/Avatar.tsx | 13 +- src/Avatar/index.ts | 4 +- src/Avatar/package.json | 5 + src/Avatar/useAvatarStyle.ts | 36 +- src/DownloadHidden/DownloadHidden.tsx | 2 +- src/DropLayer/utils/dropLayerDynamicStyle.ts | 2 +- .../DropzoneButtons/DropzoneButtons.tsx | 12 +- .../DropzoneChildren/DropzoneChildren.tsx | 2 +- .../DropzoneDisabledLayer.tsx | 2 +- .../DropzoneFooter/DropzoneFooter.tsx | 4 +- .../DropzoneHeader/DropzoneHeader.tsx | 8 +- src/Dropzone/components/dropzone/Dropzone.tsx | 56 +- .../components/dropzone/DropzoneProps.ts | 10 +- src/FileCard/FileCard.tsx | 10 +- src/FileCard/components/FileCardInfoLayer.tsx | 6 +- .../components/FileCardUploadLayer.tsx | 2 +- src/FileInputButton/FileInputButton.tsx | 52 +- src/FileInputButton/InputButtonProps.ts | 2 +- .../FileMosaicImageLayer.tsx | 4 +- .../FileMosaicInfoLayer.tsx | 2 +- .../FileMosaicInfoLayerProps.ts | 2 +- .../FileMosaicMainLayerProps.ts | 2 +- .../FileMosaicStatus/FileMosaicStatus.tsx | 2 +- .../FileMosaicStatus/FileMosaicStatusProps.ts | 2 +- .../FileMosaicUploadLayer.tsx | 2 +- .../FileMosaicUploadLayerLegacy.tsx | 2 +- .../FileMosaicUploadLayerProps.ts | 2 +- .../components/file-mosaic-layer/Layer.tsx | 2 +- .../file-mosaic-layer/LayerContainer.scss | 2 + .../file-mosaic-layer/LayerContainer.tsx | 2 +- .../components/file-mosaic/FileMosaic.tsx | 8 +- .../components/file-mosaic/FileMosaicProps.ts | 2 +- src/FileStatus/AbortedStatus.tsx | 2 +- src/FileStatus/ErrorStatus.tsx | 2 +- src/FileStatus/FileStatusProps.ts | 2 +- src/FileStatus/PreparingStatus.tsx | 2 +- src/FileStatus/SuccessStatus.tsx | 2 +- src/FileStatus/UploadingStatus.tsx | 2 +- src/FilesUiProvider/FilesUIConfig.ts | 2 +- src/ImagePreview/ImagePreview.scss | 1 - src/ImagePreview/ImagePreview.tsx | 24 +- src/InputHidden/InputHidden.tsx | 2 +- src/MaterialButton/MaterialButton.tsx | 25 +- src/MaterialButton/MaterialButtonProps.ts | 2 +- .../hooks/useMaterialButtonClassName.ts | 12 +- .../utils/MaterialButtonStyleManager.ts | 4 +- src/core/color/colors.d.ts | 65 --- src/core/color/index.d.ts | 2 - src/core/color/namedColors.d.ts | 6 - src/core/download/downloadFile.d.ts | 4 - src/core/file-manager/index.d.ts | 1 - src/core/file-manager/reconcilation.d.ts | 2 - src/core/index.d.ts | 12 - src/core/index.es.js | 2 - src/core/index.es.js.map | 1 - src/core/index.js | 2 - src/core/index.js.map | 1 - .../localization.simplifiedChinese.d.ts | 13 - .../localization.traditionalChinese.d.ts | 13 - .../English/localization.english.d.ts | 13 - .../localization/FileItem.localization.d.ts | 8 - .../French/localization.french.d.ts | 13 - .../Italian/localization.italian.d.ts | 13 - .../Portuguese/localization.portuguese.d.ts | 13 - .../Russian/localization.russian.d.ts | 14 - .../Spanish/localization.spanish.d.ts | 13 - .../localization/avatar.localization.d.ts | 11 - .../localization/dropzone.localization.d.ts | 8 - src/core/localization/index.d.ts | 14 - .../validationError.localization.d.ts | 8 - src/core/mime/icons.d.ts | 89 --- src/core/mime/index.d.ts | 3 - src/core/mime/mime.d.ts | 56 -- src/core/mocks/extFileMock.d.ts | 2 - src/core/mocks/index.d.ts | 1 - src/core/reader/imageOrientation.d.ts | 10 - src/core/reader/index.d.ts | 3 - src/core/reader/readers.d.ts | 31 - src/core/reader/resizeImage.d.ts | 10 - src/core/synthetic-file/SyntheticFile.d.ts | 551 ------------------ src/core/synthetic-file/index.d.ts | 2 - .../syntheticfileGenerator.d.ts | 13 - src/core/types/ExtFile.d.ts | 172 ------ src/core/types/ExtFileManager.d.ts | 61 -- src/core/types/FileListMap.d.ts | 4 - src/core/types/IconsMap.d.ts | 77 --- src/core/types/NamedColor.d.ts | 6 - src/core/types/UploadConfig.d.ts | 58 -- src/core/types/UploadStatus.d.ts | 1 - src/core/types/behaviur.d.ts | 4 - src/core/types/index.d.ts | 14 - src/core/types/localization.d.ts | 8 - src/core/types/method.d.ts | 10 - src/core/types/uploadTypes.d.ts | 28 - src/core/types/validation.d.ts | 20 - src/core/upload/addExtraData.upload.d.ts | 1 - src/core/upload/addheaders.upload.d.ts | 1 - src/core/upload/errors.upload.d.ts | 22 - src/core/upload/index.d.ts | 6 - src/core/upload/response.upload.d.ts | 5 - src/core/upload/upload.d.ts | 33 -- src/core/upload/utils.upload.d.ts | 42 -- src/core/utils/IdGenerator.d.ts | 11 - src/core/utils/addClassName.d.ts | 7 - src/core/utils/dropzone.utils.d.ts | 1 - src/core/utils/fakeupload.utils.d.ts | 45 -- src/core/utils/fileListParser.d.ts | 13 - src/core/utils/fileSizeFormatter.d.ts | 5 - src/core/utils/getExt.d.ts | 6 - src/core/utils/getLocalFileItemData.d.ts | 9 - src/core/utils/index.d.ts | 13 - src/core/utils/input.utils.d.ts | 5 - src/core/utils/isUploadAbleExtFile.d.ts | 2 - src/core/utils/randomInt.d.ts | 7 - src/core/utils/shrinkWord.d.ts | 10 - src/core/validation/fakeerros.d.ts | 4 - src/core/validation/fileValidator.d.ts | 43 -- src/core/validation/index.d.ts | 5 - src/core/validation/randomStatus.d.ts | 11 - src/core/validation/separateAccept.d.ts | 6 - src/core/validation/validateAccept.d.ts | 8 - src/hooks/getProgress.ts | 4 +- src/hooks/useDropLayerClassName.ts | 10 +- src/hooks/useDropzoneClassName.ts | 15 +- src/hooks/useDropzoneFileUpdater.ts | 14 +- src/hooks/useDropzoneValidation.ts | 2 +- src/hooks/useFakeProgress.ts | 6 +- src/hooks/useFileMosaicInitializer.ts | 15 +- src/hooks/useIsUploading.ts | 2 +- src/hooks/useNumberOfValidFiles.ts | 2 +- src/hooks/useProgress.ts | 4 +- src/index.ts | 4 +- src/loader/DefaultLoader/DefaultLoader.tsx | 2 +- src/loader/DefaultLoader/loader.tsx | 2 +- src/loader/DynamicLoader/DynamicLoader.tsx | 13 +- src/overridable/OverridableComponentsProps.ts | 1 + src/overridable/mergeProps.ts | 2 +- src/tooltip/Tooltip.tsx | 5 +- src/tooltip/TooltipProps.ts | 2 +- src/utils/click.utils.ts | 3 +- src/utils/dragdrop.utils.ts | 1 + src/utils/ripple/ripple.ts | 3 +- tsconfig.json | 5 +- 150 files changed, 941 insertions(+), 2142 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 src/Avatar/package.json delete mode 100644 src/core/color/colors.d.ts delete mode 100644 src/core/color/index.d.ts delete mode 100644 src/core/color/namedColors.d.ts delete mode 100644 src/core/download/downloadFile.d.ts delete mode 100644 src/core/file-manager/index.d.ts delete mode 100644 src/core/file-manager/reconcilation.d.ts delete mode 100644 src/core/index.d.ts delete mode 100644 src/core/index.es.js delete mode 100644 src/core/index.es.js.map delete mode 100644 src/core/index.js delete mode 100644 src/core/index.js.map delete mode 100644 src/core/localization/Chinese-simplified/localization.simplifiedChinese.d.ts delete mode 100644 src/core/localization/Chinese-traditional/localization.traditionalChinese.d.ts delete mode 100644 src/core/localization/English/localization.english.d.ts delete mode 100644 src/core/localization/FileItem.localization.d.ts delete mode 100644 src/core/localization/French/localization.french.d.ts delete mode 100644 src/core/localization/Italian/localization.italian.d.ts delete mode 100644 src/core/localization/Portuguese/localization.portuguese.d.ts delete mode 100644 src/core/localization/Russian/localization.russian.d.ts delete mode 100644 src/core/localization/Spanish/localization.spanish.d.ts delete mode 100644 src/core/localization/avatar.localization.d.ts delete mode 100644 src/core/localization/dropzone.localization.d.ts delete mode 100644 src/core/localization/index.d.ts delete mode 100644 src/core/localization/validationError.localization.d.ts delete mode 100644 src/core/mime/icons.d.ts delete mode 100644 src/core/mime/index.d.ts delete mode 100644 src/core/mime/mime.d.ts delete mode 100644 src/core/mocks/extFileMock.d.ts delete mode 100644 src/core/mocks/index.d.ts delete mode 100644 src/core/reader/imageOrientation.d.ts delete mode 100644 src/core/reader/index.d.ts delete mode 100644 src/core/reader/readers.d.ts delete mode 100644 src/core/reader/resizeImage.d.ts delete mode 100644 src/core/synthetic-file/SyntheticFile.d.ts delete mode 100644 src/core/synthetic-file/index.d.ts delete mode 100644 src/core/synthetic-file/syntheticfileGenerator.d.ts delete mode 100644 src/core/types/ExtFile.d.ts delete mode 100644 src/core/types/ExtFileManager.d.ts delete mode 100644 src/core/types/FileListMap.d.ts delete mode 100644 src/core/types/IconsMap.d.ts delete mode 100644 src/core/types/NamedColor.d.ts delete mode 100644 src/core/types/UploadConfig.d.ts delete mode 100644 src/core/types/UploadStatus.d.ts delete mode 100644 src/core/types/behaviur.d.ts delete mode 100644 src/core/types/index.d.ts delete mode 100644 src/core/types/localization.d.ts delete mode 100644 src/core/types/method.d.ts delete mode 100644 src/core/types/uploadTypes.d.ts delete mode 100644 src/core/types/validation.d.ts delete mode 100644 src/core/upload/addExtraData.upload.d.ts delete mode 100644 src/core/upload/addheaders.upload.d.ts delete mode 100644 src/core/upload/errors.upload.d.ts delete mode 100644 src/core/upload/index.d.ts delete mode 100644 src/core/upload/response.upload.d.ts delete mode 100644 src/core/upload/upload.d.ts delete mode 100644 src/core/upload/utils.upload.d.ts delete mode 100644 src/core/utils/IdGenerator.d.ts delete mode 100644 src/core/utils/addClassName.d.ts delete mode 100644 src/core/utils/dropzone.utils.d.ts delete mode 100644 src/core/utils/fakeupload.utils.d.ts delete mode 100644 src/core/utils/fileListParser.d.ts delete mode 100644 src/core/utils/fileSizeFormatter.d.ts delete mode 100644 src/core/utils/getExt.d.ts delete mode 100644 src/core/utils/getLocalFileItemData.d.ts delete mode 100644 src/core/utils/index.d.ts delete mode 100644 src/core/utils/input.utils.d.ts delete mode 100644 src/core/utils/isUploadAbleExtFile.d.ts delete mode 100644 src/core/utils/randomInt.d.ts delete mode 100644 src/core/utils/shrinkWord.d.ts delete mode 100644 src/core/validation/fakeerros.d.ts delete mode 100644 src/core/validation/fileValidator.d.ts delete mode 100644 src/core/validation/index.d.ts delete mode 100644 src/core/validation/randomStatus.d.ts delete mode 100644 src/core/validation/separateAccept.d.ts delete mode 100644 src/core/validation/validateAccept.d.ts diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..982ceab --- /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 0000000..c7f9c73 --- /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 0000000..52eaf85 --- /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 c44636b..a348f58 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"> + +[](https://github.com/dropzone-ui/react/blob/HEAD/LICENSE) +[](https://www.npmjs.com/package/@dropzone-ui/react) [](https://openbase.com/js/@dropzone-ui/react?utm_source=embedded&utm_medium=badge&utm_campaign=rate-badge) [](https://kandi.openweaver.com/typescript/dropzone-ui/dropzone-ui-react) [](http://makeapullrequest.com) +[](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 3ba5dec..052c72b 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 e966f52..83f84fd 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 88df14d..b0622e9 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 e956c12..1999208 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 81cfdf3..cc7320b 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 0000000..dbaeed3 --- /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 e8cb5af..41d462d 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 966c226..72958c0 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 c81aae7..c9c8a72 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 4b5cdc4..dfc069c 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 99be7e7..e5af2f2 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 486a47f..76ea8fd 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 159ae73..620a3a9 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 2361326..260bce9 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 f7b2610..3343cc4 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 df07145..9d760b1 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 de6a33e..4f27c55 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 526ef80..475bf5d 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 013d20a..6aeeb3c 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 0a7a275..8b3fd56 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 9540459..27f408c 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 18bda30..318838a 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 c6c4bdb..6220c17 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 c141ae7..dd8cf87 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 ed3f3dd..c083705 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 7cccfd5..9d1529b 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 b439eaa..8091b93 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 f12ab5e..31c3e49 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 4c5674e..a549911 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 5d1fb28..fbff914 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 652658c..6c26273 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 c62a534..aa46e32 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 83f6a8c..c3c94a5 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 45094d1..f7efc3f 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 3e4ec49..3f49545 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 ecd235d..500045b 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 0d7b0fb..90a2424 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 f73e560..a2f82d7 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 1ceceae..de84de2 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 c0d4c7b..fcb532c 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 c53d6f8..823efba 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 cf78842..3ab4f7e 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 99b2094..ca52d95 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 23c9b2e..420b345 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 9725bcc..d78c7e4 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 14f7f3c..d600db5 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 d6aa971..34abe19 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 2110306..ad0f40f 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 985bb49..8037fc1 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 471c412..0000000 --- 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 2b51c13..0000000 --- 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 661cdc3..0000000 --- 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 5bd48e9..0000000 --- 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 2ef646c..0000000 --- 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 198c59f..0000000 --- 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 899e993..0000000 --- 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 68eb296..0000000 --- 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 c4a8edb..0000000 --- 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 7310935..0000000 --- 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 bfd639e..0000000 --- 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 86e19f4..0000000 --- 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 49e8ee4..0000000 --- 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 85e31db..0000000 --- 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 b1a9b14..0000000 --- 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 ebdaf57..0000000 --- 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 5ee58b5..0000000 --- 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 bafe87d..0000000 --- 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 3e68a80..0000000 --- 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 75c9376..0000000 --- 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 3130a0a..0000000 --- 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 cdd1082..0000000 --- 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 440cac8..0000000 --- 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 8284ffa..0000000 --- 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 a36bfb9..0000000 --- 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 3549a7a..0000000 --- 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 3b88f13..0000000 --- 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 1446956..0000000 --- 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 eb8f2d8..0000000 --- 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 55b3c8c..0000000 --- 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 f51527a..0000000 --- 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 4e65f59..0000000 --- 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 3ac433a..0000000 --- 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 43cb064..0000000 --- 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 185ff18..0000000 --- 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 5479f50..0000000 --- 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 6d2dcc5..0000000 --- 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 8922bca..0000000 --- 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 b5d6917..0000000 --- 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 dbd9ea5..0000000 --- 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 e4cf51b..0000000 --- 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 59cfa60..0000000 --- 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 6fce661..0000000 --- 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 b39ce8a..0000000 --- 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 b2d02fb..0000000 --- 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 a0ff069..0000000 --- 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 b752da5..0000000 --- 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 0266517..0000000 --- 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 f35040a..0000000 --- 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 a57b6d5..0000000 --- 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 6889520..0000000 --- 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 0975c24..0000000 --- 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 ef809cc..0000000 --- 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 2a24ac4..0000000 --- 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 783be82..0000000 --- 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 54e00c2..0000000 --- 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 d1bcc09..0000000 --- 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 c1b5925..0000000 --- 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 c872040..0000000 --- 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 ea34da1..0000000 --- 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 940a123..0000000 --- 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 a3a53b6..0000000 --- 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 110c9f0..0000000 --- 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 6a94345..0000000 --- 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 c48ce5d..0000000 --- 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 658f95c..0000000 --- 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 248c16c..0000000 --- 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 1d459e1..0000000 --- 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 fd5c13e..0000000 --- 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 4c6e643..0000000 --- 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 ca0b54e..0000000 --- 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 60029ff..0000000 --- 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 9e7e4a0..0000000 --- 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 fc7c610..0000000 --- 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 90f11d6..0000000 --- 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 ca505f1..d17dd76 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 f9e29a0..38181c4 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 2eadce9..a700d4c 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 e4549b4..fe5974f 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 fae00ea..a748b9c 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 9660e29..4cc7496 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 3bbd61a..381e523 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 0d14cbd..e0fee0b 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 4b7fdbe..1cd83b0 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 be1d763..db2bad0 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 a54e826..494fbaa 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 e2218c6..1260f24 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 bba2391..a32c567 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 f2d23cb..b245670 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 b43c39e..8c927a1 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 2fad13c..c4551e2 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 b4aac4d..fa00daf 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 8271fc7..0467cea 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 a91e6a9..7e9c012 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 9a04abb..9fb7314 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 6a87013..cd76289 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 c613772..302e032 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"], -- GitLab