@siamf/upload 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +691 -0
  2. package/dist/cjs/components/file/FileUpload.d.ts +3 -0
  3. package/dist/cjs/components/file/FileUpload.js +120 -0
  4. package/dist/cjs/components/file/FileUpload.js.map +1 -0
  5. package/dist/cjs/components/file/MultiFileUpload.d.ts +4 -0
  6. package/dist/cjs/components/file/MultiFileUpload.js +160 -0
  7. package/dist/cjs/components/file/MultiFileUpload.js.map +1 -0
  8. package/dist/cjs/components/file/typings.d.ts +103 -0
  9. package/dist/cjs/components/file/typings.js +57 -0
  10. package/dist/cjs/components/file/typings.js.map +1 -0
  11. package/dist/cjs/components/image/ImageUpload.d.ts +3 -0
  12. package/dist/cjs/components/image/ImageUpload.js +126 -0
  13. package/dist/cjs/components/image/ImageUpload.js.map +1 -0
  14. package/dist/cjs/components/image/MultiImageUpload.d.ts +3 -0
  15. package/dist/cjs/components/image/MultiImageUpload.js +162 -0
  16. package/dist/cjs/components/image/MultiImageUpload.js.map +1 -0
  17. package/dist/cjs/components/image/typings.d.ts +73 -0
  18. package/dist/cjs/components/image/typings.js +18 -0
  19. package/dist/cjs/components/image/typings.js.map +1 -0
  20. package/dist/cjs/components/utils/utils.d.ts +9 -0
  21. package/dist/cjs/components/utils/utils.js +78 -0
  22. package/dist/cjs/components/utils/utils.js.map +1 -0
  23. package/dist/cjs/index.d.ts +8 -0
  24. package/dist/cjs/index.js +21 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/esm/components/file/FileUpload.d.ts +3 -0
  27. package/dist/esm/components/file/FileUpload.js +118 -0
  28. package/dist/esm/components/file/FileUpload.js.map +1 -0
  29. package/dist/esm/components/file/MultiFileUpload.d.ts +4 -0
  30. package/dist/esm/components/file/MultiFileUpload.js +157 -0
  31. package/dist/esm/components/file/MultiFileUpload.js.map +1 -0
  32. package/dist/esm/components/file/typings.d.ts +103 -0
  33. package/dist/esm/components/file/typings.js +54 -0
  34. package/dist/esm/components/file/typings.js.map +1 -0
  35. package/dist/esm/components/image/ImageUpload.d.ts +3 -0
  36. package/dist/esm/components/image/ImageUpload.js +124 -0
  37. package/dist/esm/components/image/ImageUpload.js.map +1 -0
  38. package/dist/esm/components/image/MultiImageUpload.d.ts +3 -0
  39. package/dist/esm/components/image/MultiImageUpload.js +160 -0
  40. package/dist/esm/components/image/MultiImageUpload.js.map +1 -0
  41. package/dist/esm/components/image/typings.d.ts +73 -0
  42. package/dist/esm/components/image/typings.js +15 -0
  43. package/dist/esm/components/image/typings.js.map +1 -0
  44. package/dist/esm/components/utils/utils.d.ts +9 -0
  45. package/dist/esm/components/utils/utils.js +69 -0
  46. package/dist/esm/components/utils/utils.js.map +1 -0
  47. package/dist/esm/index.d.ts +8 -0
  48. package/dist/esm/index.js +9 -0
  49. package/dist/esm/index.js.map +1 -0
  50. package/package.json +52 -8
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ "use client";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const jsx_runtime_1 = require("react/jsx-runtime");
14
+ const react_1 = require("react");
15
+ const typings_1 = require("./typings");
16
+ //Utils
17
+ const utils_1 = require("../utils/utils");
18
+ const DEFAULT_INDEX = -1;
19
+ const MultiImageUpload = ({ inputProps, acceptType, maxFileSize, resolutionWidth, resolutionHeight, resolutionType = "absolute", children, onChange, value, onError, maxNumber = 10 }) => {
20
+ //Validations
21
+ //@ts-ignore
22
+ if (Array.isArray(acceptType) && acceptType.includes(typings_1.ImageAcceptType.ALL)) {
23
+ throw new Error("Invalid accept type: FileAccept.All cannot be included in an array.");
24
+ }
25
+ //Ref
26
+ const inputRef = (0, react_1.useRef)(null);
27
+ //State
28
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
29
+ const [indexKey, setIndexKey] = (0, react_1.useState)(DEFAULT_INDEX);
30
+ const [errors, setErrors] = (0, react_1.useState)({ acceptType: false, maxFileSize: false, resolution: false, maxNumber: false });
31
+ //Handle The File Change
32
+ const handleChange = (files) => __awaiter(void 0, void 0, void 0, function* () {
33
+ if (!files)
34
+ return;
35
+ if (files.length === 0)
36
+ return;
37
+ var changeFiles = [];
38
+ let newErrors = {
39
+ acceptType: false,
40
+ maxFileSize: false,
41
+ resolution: false,
42
+ maxNumber: false,
43
+ };
44
+ if (files.length > maxNumber)
45
+ newErrors.maxNumber = true;
46
+ for (let i = 0; i < files.length; i++) {
47
+ const file = files[i];
48
+ const uploadSize = Number((file.size / 1024 * 1024).toFixed(2));
49
+ //Accept Type Error
50
+ if (!(0, utils_1.getImageAccepts)(acceptType).includes(file.type))
51
+ newErrors.acceptType = true;
52
+ //Max File Size Error
53
+ if (maxFileSize && (uploadSize > maxFileSize))
54
+ newErrors.maxFileSize = true;
55
+ //Resolution Check
56
+ const image = yield (0, utils_1.getImage)(file);
57
+ const checkRes = (0, utils_1.isResolutionValid)(image, resolutionType, resolutionWidth, resolutionHeight);
58
+ if (!checkRes)
59
+ newErrors.resolution = true;
60
+ const dataUrl = yield (0, utils_1.getBase64)(file);
61
+ //Get Files Ready
62
+ changeFiles.push({
63
+ file: file,
64
+ dataURL: dataUrl,
65
+ });
66
+ }
67
+ setErrors(newErrors);
68
+ if (newErrors.acceptType || newErrors.maxFileSize || newErrors.maxNumber || newErrors.resolution) {
69
+ onError === null || onError === void 0 ? void 0 : onError(newErrors);
70
+ return;
71
+ }
72
+ if (indexKey > DEFAULT_INDEX) {
73
+ onChange(value.map((a, i) => {
74
+ if (i === indexKey) {
75
+ return changeFiles[0];
76
+ }
77
+ return a;
78
+ }));
79
+ }
80
+ else {
81
+ onChange(changeFiles);
82
+ }
83
+ });
84
+ //On File Remove ALl
85
+ const onImageRemoveAll = () => {
86
+ onChange([]);
87
+ };
88
+ //On File Remove Index
89
+ const onImageRemove = (index) => {
90
+ onChange(value.filter((_, i) => i !== index));
91
+ };
92
+ //Handle File Upload
93
+ const onImageUpdate = (index) => {
94
+ setIndexKey(index);
95
+ };
96
+ //In Component Method
97
+ const onInputChange = (e) => __awaiter(void 0, void 0, void 0, function* () {
98
+ yield handleChange(e.target.files);
99
+ indexKey > DEFAULT_INDEX && setIndexKey(DEFAULT_INDEX);
100
+ if (inputRef.current)
101
+ inputRef.current.value = '';
102
+ });
103
+ const handleClickInput = (0, react_1.useCallback)(() => (0, utils_1.openFileDialog)(inputRef), [
104
+ inputRef,
105
+ ]);
106
+ const onImageUpload = (0, react_1.useCallback)(() => {
107
+ setIndexKey(DEFAULT_INDEX);
108
+ handleClickInput();
109
+ }, [handleClickInput]);
110
+ const handleDrag = (e) => {
111
+ e.preventDefault();
112
+ e.stopPropagation();
113
+ };
114
+ const handleDragIn = (e) => {
115
+ e.preventDefault();
116
+ e.stopPropagation();
117
+ if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
118
+ setIsDragging(true);
119
+ }
120
+ };
121
+ const handleDragOut = (e) => {
122
+ e.preventDefault();
123
+ e.stopPropagation();
124
+ setIsDragging(false);
125
+ };
126
+ const handleDrop = (e) => {
127
+ e.preventDefault();
128
+ e.stopPropagation();
129
+ setIsDragging(false);
130
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
131
+ handleChange(e.dataTransfer.files);
132
+ }
133
+ };
134
+ const handleDragStart = (e) => {
135
+ e.preventDefault();
136
+ e.stopPropagation();
137
+ e.dataTransfer.clearData();
138
+ };
139
+ (0, react_1.useEffect)(() => {
140
+ if (indexKey > DEFAULT_INDEX) {
141
+ handleClickInput();
142
+ }
143
+ }, [indexKey]);
144
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("input", Object.assign({ type: "file", style: { display: "none" }, accept: (0, utils_1.getImageAccepts)(acceptType).join(","), multiple: indexKey === DEFAULT_INDEX, onChange: onInputChange, ref: inputRef }, inputProps)), children === null || children === void 0 ? void 0 : children({
145
+ onImageUpload,
146
+ onImageRemove,
147
+ onImageUpdate,
148
+ onImageRemoveAll,
149
+ dragProps: {
150
+ onDrop: handleDrop,
151
+ onDragEnter: handleDragIn,
152
+ onDragLeave: handleDragOut,
153
+ onDragOver: handleDrag,
154
+ onDragStart: handleDragStart
155
+ },
156
+ isDragging,
157
+ errors,
158
+ imageInfo: value
159
+ })] }));
160
+ };
161
+ exports.default = MultiImageUpload;
162
+ //# sourceMappingURL=MultiImageUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiImageUpload.js","sourceRoot":"","sources":["../../../../src/components/image/MultiImageUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { DragEvent } from "react";
2
+ export type ImageType = {
3
+ file?: File;
4
+ dataURL?: string;
5
+ } | null;
6
+ type TExportTypes = {
7
+ dragProps: {
8
+ onDrop: (e: DragEvent<HTMLDivElement>) => void;
9
+ onDragEnter: (e: DragEvent<HTMLDivElement>) => void;
10
+ onDragLeave: (e: DragEvent<HTMLDivElement>) => void;
11
+ onDragOver: (e: DragEvent<HTMLDivElement>) => void;
12
+ onDragStart: (e: DragEvent<HTMLDivElement>) => void;
13
+ };
14
+ isDragging: boolean;
15
+ onImageUpload: () => void;
16
+ };
17
+ type TPropsTypes = {
18
+ inputProps?: React.HTMLProps<HTMLInputElement>;
19
+ acceptType?: ImageAcceptType | Exclude<ImageAcceptType, ImageAcceptType.ALL>[];
20
+ maxFileSize?: number;
21
+ resolutionWidth?: number;
22
+ resolutionHeight?: number;
23
+ resolutionType?: ResolutionType;
24
+ };
25
+ export declare enum ImageAcceptType {
26
+ ALL = "all",
27
+ SVG = "image/svg+xml",
28
+ PNG = "image/png",
29
+ JPEG = "image/jpeg",
30
+ GIF = "image/gif",
31
+ BMP = "image/bmp",
32
+ WEBP = "image/webp",
33
+ TIFF = "image/tiff",
34
+ ICO = "image/x-icon",
35
+ HEIC = "image/heic",
36
+ HEIF = "image/heif"
37
+ }
38
+ export type ImageErrorTypes = {
39
+ maxFileSize: boolean;
40
+ acceptType: boolean;
41
+ resolution: boolean;
42
+ };
43
+ export interface ImageExportTypes extends TExportTypes {
44
+ imageInfo: ImageType;
45
+ errors: ImageErrorTypes;
46
+ onImageRemove: () => void;
47
+ }
48
+ export interface ImagePropsTypes extends TPropsTypes {
49
+ children: (props: ImageExportTypes) => React.ReactNode;
50
+ onChange: (value: ImageType) => void;
51
+ value: ImageType;
52
+ onError?: (errors: ImageErrorTypes) => void;
53
+ }
54
+ export type MultiImageType = ImageType[];
55
+ export interface MultiImageErrorTypes extends ImageErrorTypes {
56
+ maxNumber: boolean;
57
+ }
58
+ export interface MultiImageExportTypes extends TExportTypes {
59
+ imageInfo: MultiImageType;
60
+ errors: MultiImageErrorTypes;
61
+ onImageRemove: (index: number) => void;
62
+ onImageUpdate: (index: number) => void;
63
+ onImageRemoveAll: () => void;
64
+ }
65
+ export interface MultiImagePropsTypes extends TPropsTypes {
66
+ children: (props: MultiImageExportTypes) => React.ReactNode;
67
+ onChange: (value: MultiImageType) => void;
68
+ value: MultiImageType;
69
+ onError?: (errors: MultiImageErrorTypes) => void;
70
+ maxNumber?: number;
71
+ }
72
+ export type ResolutionType = "absolute" | "less" | "more" | "ratio";
73
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageAcceptType = void 0;
4
+ var ImageAcceptType;
5
+ (function (ImageAcceptType) {
6
+ ImageAcceptType["ALL"] = "all";
7
+ ImageAcceptType["SVG"] = "image/svg+xml";
8
+ ImageAcceptType["PNG"] = "image/png";
9
+ ImageAcceptType["JPEG"] = "image/jpeg";
10
+ ImageAcceptType["GIF"] = "image/gif";
11
+ ImageAcceptType["BMP"] = "image/bmp";
12
+ ImageAcceptType["WEBP"] = "image/webp";
13
+ ImageAcceptType["TIFF"] = "image/tiff";
14
+ ImageAcceptType["ICO"] = "image/x-icon";
15
+ ImageAcceptType["HEIC"] = "image/heic";
16
+ ImageAcceptType["HEIF"] = "image/heif";
17
+ })(ImageAcceptType || (exports.ImageAcceptType = ImageAcceptType = {}));
18
+ //# sourceMappingURL=typings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typings.js","sourceRoot":"","sources":["../../../../src/components/image/typings.ts"],"names":[],"mappings":";;;AA6BA,IAAY,eAYX;AAZD,WAAY,eAAe;IACvB,8BAAW,CAAA;IACX,wCAAqB,CAAA;IACrB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;IACjB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;IACnB,uCAAoB,CAAA;IACpB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACvB,CAAC,EAZW,eAAe,+BAAf,eAAe,QAY1B"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { FileAcceptType } from "../file/typings";
3
+ import { ImageAcceptType, ResolutionType } from "../image/typings";
4
+ export declare const openFileDialog: (inputRef: React.RefObject<HTMLInputElement | null>) => void;
5
+ export declare const getFileAccepts: (acceptType?: FileAcceptType | Exclude<FileAcceptType, FileAcceptType.ALL>[]) => string[];
6
+ export declare const getImageAccepts: (acceptType?: ImageAcceptType | Exclude<ImageAcceptType, ImageAcceptType.ALL>[]) => string[];
7
+ export declare const getImage: (file: File) => Promise<HTMLImageElement>;
8
+ export declare const getBase64: (file: File) => Promise<string>;
9
+ export declare const isResolutionValid: (image: HTMLImageElement, resolutionType: ResolutionType, resolutionWidth: number | undefined, resolutionHeight: number | undefined) => boolean;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResolutionValid = exports.getBase64 = exports.getImage = exports.getImageAccepts = exports.getFileAccepts = exports.openFileDialog = void 0;
4
+ const typings_1 = require("../file/typings");
5
+ const typings_2 = require("../image/typings");
6
+ const openFileDialog = (inputRef) => {
7
+ if (inputRef.current)
8
+ inputRef.current.click();
9
+ };
10
+ exports.openFileDialog = openFileDialog;
11
+ const getFileAccepts = (acceptType) => {
12
+ if (!acceptType || acceptType === typings_1.FileAcceptType.ALL) {
13
+ const defaultArray = Object.values(typings_1.FileAcceptType).filter(value => value !== typings_1.FileAcceptType.ALL);
14
+ return defaultArray;
15
+ }
16
+ else {
17
+ return acceptType;
18
+ }
19
+ };
20
+ exports.getFileAccepts = getFileAccepts;
21
+ const getImageAccepts = (acceptType) => {
22
+ if (!acceptType || acceptType === typings_2.ImageAcceptType.ALL) {
23
+ const defaultArray = Object.values(typings_2.ImageAcceptType).filter(value => value !== typings_2.ImageAcceptType.ALL);
24
+ return defaultArray;
25
+ }
26
+ else {
27
+ return acceptType;
28
+ }
29
+ };
30
+ exports.getImageAccepts = getImageAccepts;
31
+ const getImage = (file) => {
32
+ const image = new Image();
33
+ return new Promise((resolve) => {
34
+ image.addEventListener('load', () => resolve(image));
35
+ image.src = URL.createObjectURL(file);
36
+ });
37
+ };
38
+ exports.getImage = getImage;
39
+ const getBase64 = (file) => {
40
+ const reader = new FileReader();
41
+ return new Promise((resolve) => {
42
+ reader.addEventListener('load', () => resolve(String(reader.result)));
43
+ reader.readAsDataURL(file);
44
+ });
45
+ };
46
+ exports.getBase64 = getBase64;
47
+ const isResolutionValid = (image, resolutionType, resolutionWidth, resolutionHeight) => {
48
+ if (!resolutionWidth || !resolutionHeight || !image.width || !image.height)
49
+ return true;
50
+ switch (resolutionType) {
51
+ case 'absolute': {
52
+ if (image.width === resolutionWidth && image.height === resolutionHeight)
53
+ return true;
54
+ break;
55
+ }
56
+ case 'ratio': {
57
+ const ratio = resolutionWidth / resolutionHeight;
58
+ if (image.width / image.height === ratio)
59
+ return true;
60
+ break;
61
+ }
62
+ case 'less': {
63
+ if (image.width <= resolutionWidth && image.height <= resolutionHeight)
64
+ return true;
65
+ break;
66
+ }
67
+ case 'more': {
68
+ if (image.width >= resolutionWidth && image.height >= resolutionHeight)
69
+ return true;
70
+ break;
71
+ }
72
+ default:
73
+ break;
74
+ }
75
+ return false;
76
+ };
77
+ exports.isResolutionValid = isResolutionValid;
78
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/utils/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { default as FileUpload } from "./components/file/FileUpload";
2
+ export { default as MultiFileUpload } from "./components/file/MultiFileUpload";
3
+ export { FileAcceptType } from "./components/file/typings";
4
+ export type { FileType, MultiFileType, FileErrorTypes, MultiFileErrorTypes } from "./components/file/typings";
5
+ export { default as ImageUpload } from "./components/image/ImageUpload";
6
+ export { default as MultiImageUpload } from "./components/image/MultiImageUpload";
7
+ export { ImageAcceptType } from "./components/image/typings";
8
+ export type { ImageType, MultiImageType, ImageErrorTypes, MultiImageErrorTypes } from "./components/image/typings";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ImageAcceptType = exports.MultiImageUpload = exports.ImageUpload = exports.FileAcceptType = exports.MultiFileUpload = exports.FileUpload = void 0;
7
+ //Files
8
+ var FileUpload_1 = require("./components/file/FileUpload");
9
+ Object.defineProperty(exports, "FileUpload", { enumerable: true, get: function () { return __importDefault(FileUpload_1).default; } });
10
+ var MultiFileUpload_1 = require("./components/file/MultiFileUpload");
11
+ Object.defineProperty(exports, "MultiFileUpload", { enumerable: true, get: function () { return __importDefault(MultiFileUpload_1).default; } });
12
+ var typings_1 = require("./components/file/typings");
13
+ Object.defineProperty(exports, "FileAcceptType", { enumerable: true, get: function () { return typings_1.FileAcceptType; } });
14
+ //Image
15
+ var ImageUpload_1 = require("./components/image/ImageUpload");
16
+ Object.defineProperty(exports, "ImageUpload", { enumerable: true, get: function () { return __importDefault(ImageUpload_1).default; } });
17
+ var MultiImageUpload_1 = require("./components/image/MultiImageUpload");
18
+ Object.defineProperty(exports, "MultiImageUpload", { enumerable: true, get: function () { return __importDefault(MultiImageUpload_1).default; } });
19
+ var typings_2 = require("./components/image/typings");
20
+ Object.defineProperty(exports, "ImageAcceptType", { enumerable: true, get: function () { return typings_2.ImageAcceptType; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO;AACP,2DAAqE;AAA5D,yHAAA,OAAO,OAAc;AAC9B,qEAA+E;AAAtE,mIAAA,OAAO,OAAmB;AACnC,qDAA2D;AAAlD,yGAAA,cAAc,OAAA;AAGvB,OAAO;AACP,8DAAwE;AAA/D,2HAAA,OAAO,OAAe;AAC/B,wEAAkF;AAAzE,qIAAA,OAAO,OAAoB;AACpC,sDAA6D;AAApD,0GAAA,eAAe,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { FilePropsTypes } from "./typings";
2
+ declare const FileUpload: ({ children, onChange, value, onError, inputProps, acceptType, maxFileSize }: FilePropsTypes) => import("react/jsx-runtime").JSX.Element;
3
+ export default FileUpload;
@@ -0,0 +1,118 @@
1
+ "use client";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { useRef, useState, useCallback } from "react";
13
+ import { FileAcceptType } from "./typings";
14
+ //Utils
15
+ import { openFileDialog, getFileAccepts } from "../utils/utils";
16
+ const FileUpload = ({ children, onChange, value, onError, inputProps, acceptType, maxFileSize }) => {
17
+ //Validations
18
+ //@ts-ignore
19
+ if (Array.isArray(acceptType) && acceptType.includes(FileAcceptType.ALL)) {
20
+ throw new Error("Invalid accept type: FileAcceptType.All cannot be included in an array.");
21
+ }
22
+ //Ref
23
+ const inputRef = useRef(null);
24
+ //State
25
+ const [isDragging, setIsDragging] = useState(false);
26
+ const [errors, setErrors] = useState({ acceptType: false, maxFileSize: false });
27
+ //Handle Change
28
+ const handleChange = (files) => __awaiter(void 0, void 0, void 0, function* () {
29
+ if (!files)
30
+ return null;
31
+ const file = files[0];
32
+ if (!file)
33
+ return null;
34
+ //Default
35
+ const newErrors = {
36
+ acceptType: false,
37
+ maxFileSize: false,
38
+ };
39
+ const uploadSize = Number((file.size / 1024 * 1024).toFixed(2));
40
+ if (maxFileSize && uploadSize > maxFileSize)
41
+ newErrors.maxFileSize = true;
42
+ if (!getFileAccepts(acceptType).includes(file.type))
43
+ newErrors.acceptType = true;
44
+ setErrors(newErrors);
45
+ if (newErrors.acceptType || newErrors.maxFileSize) {
46
+ onError === null || onError === void 0 ? void 0 : onError(newErrors);
47
+ return;
48
+ }
49
+ onChange({
50
+ file: file, fileInfo: {
51
+ name: file.name.split(".")[0],
52
+ size: uploadSize,
53
+ type: file.type,
54
+ }
55
+ });
56
+ });
57
+ //On File Remove
58
+ const onFileRemove = () => {
59
+ onChange(null);
60
+ };
61
+ //In Component Handler
62
+ const onInputChange = (e) => __awaiter(void 0, void 0, void 0, function* () {
63
+ yield handleChange(e.target.files);
64
+ if (inputRef.current)
65
+ inputRef.current.value = '';
66
+ });
67
+ const handleClickInput = useCallback(() => openFileDialog(inputRef), [
68
+ inputRef,
69
+ ]);
70
+ const onFileUpload = useCallback(() => {
71
+ handleClickInput();
72
+ }, [handleClickInput]);
73
+ const handleDrag = (e) => {
74
+ e.preventDefault();
75
+ e.stopPropagation();
76
+ };
77
+ const handleDragIn = (e) => {
78
+ e.preventDefault();
79
+ e.stopPropagation();
80
+ if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
81
+ setIsDragging(true);
82
+ }
83
+ };
84
+ const handleDragOut = (e) => {
85
+ e.preventDefault();
86
+ e.stopPropagation();
87
+ setIsDragging(false);
88
+ };
89
+ const handleDrop = (e) => {
90
+ e.preventDefault();
91
+ e.stopPropagation();
92
+ setIsDragging(false);
93
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
94
+ handleChange(e.dataTransfer.files);
95
+ }
96
+ };
97
+ const handleDragStart = (e) => {
98
+ e.preventDefault();
99
+ e.stopPropagation();
100
+ e.dataTransfer.clearData();
101
+ };
102
+ return (_jsxs(_Fragment, { children: [_jsx("input", Object.assign({ type: "file", style: { display: "none" }, accept: getFileAccepts(acceptType).join(","), multiple: false, onChange: onInputChange, ref: inputRef }, inputProps)), children === null || children === void 0 ? void 0 : children({
103
+ onFileUpload,
104
+ onFileRemove: onFileRemove,
105
+ dragProps: {
106
+ onDrop: handleDrop,
107
+ onDragEnter: handleDragIn,
108
+ onDragLeave: handleDragOut,
109
+ onDragOver: handleDrag,
110
+ onDragStart: handleDragStart
111
+ },
112
+ isDragging,
113
+ errors,
114
+ fileInfo: value
115
+ })] }));
116
+ };
117
+ export default FileUpload;
118
+ //# sourceMappingURL=FileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../../../src/components/file/FileUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { MultiFilePropsTypes } from "./typings";
2
+ export declare const DEFAULT_INDEX = -1;
3
+ declare const MultiFileUpload: ({ children, onChange, value, onError, inputProps, acceptType, maxFileSize, maxNumber }: MultiFilePropsTypes) => import("react/jsx-runtime").JSX.Element;
4
+ export default MultiFileUpload;