@siamf/upload 1.0.0 → 1.2.0

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,120 @@
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 FileUpload = ({ children, onChange, value, onError, inputProps, acceptType, maxFileSize }) => {
19
+ //Validations
20
+ //@ts-ignore
21
+ if (Array.isArray(acceptType) && acceptType.includes(typings_1.FileAcceptType.ALL)) {
22
+ throw new Error("Invalid accept type: FileAcceptType.All cannot be included in an array.");
23
+ }
24
+ //Ref
25
+ const inputRef = (0, react_1.useRef)(null);
26
+ //State
27
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
28
+ const [errors, setErrors] = (0, react_1.useState)({ acceptType: false, maxFileSize: false });
29
+ //Handle Change
30
+ const handleChange = (files) => __awaiter(void 0, void 0, void 0, function* () {
31
+ if (!files)
32
+ return null;
33
+ const file = files[0];
34
+ if (!file)
35
+ return null;
36
+ //Default
37
+ const newErrors = {
38
+ acceptType: false,
39
+ maxFileSize: false,
40
+ };
41
+ const uploadSize = Number((file.size / 1024 * 1024).toFixed(2));
42
+ if (maxFileSize && uploadSize > maxFileSize)
43
+ newErrors.maxFileSize = true;
44
+ if (!(0, utils_1.getFileAccepts)(acceptType).includes(file.type))
45
+ newErrors.acceptType = true;
46
+ setErrors(newErrors);
47
+ if (newErrors.acceptType || newErrors.maxFileSize) {
48
+ onError === null || onError === void 0 ? void 0 : onError(newErrors);
49
+ return;
50
+ }
51
+ onChange({
52
+ file: file, fileInfo: {
53
+ name: file.name.split(".")[0],
54
+ size: uploadSize,
55
+ type: file.type,
56
+ }
57
+ });
58
+ });
59
+ //On File Remove
60
+ const onFileRemove = () => {
61
+ onChange(null);
62
+ };
63
+ //In Component Handler
64
+ const onInputChange = (e) => __awaiter(void 0, void 0, void 0, function* () {
65
+ yield handleChange(e.target.files);
66
+ if (inputRef.current)
67
+ inputRef.current.value = '';
68
+ });
69
+ const handleClickInput = (0, react_1.useCallback)(() => (0, utils_1.openFileDialog)(inputRef), [
70
+ inputRef,
71
+ ]);
72
+ const onFileUpload = (0, react_1.useCallback)(() => {
73
+ handleClickInput();
74
+ }, [handleClickInput]);
75
+ const handleDrag = (e) => {
76
+ e.preventDefault();
77
+ e.stopPropagation();
78
+ };
79
+ const handleDragIn = (e) => {
80
+ e.preventDefault();
81
+ e.stopPropagation();
82
+ if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
83
+ setIsDragging(true);
84
+ }
85
+ };
86
+ const handleDragOut = (e) => {
87
+ e.preventDefault();
88
+ e.stopPropagation();
89
+ setIsDragging(false);
90
+ };
91
+ const handleDrop = (e) => {
92
+ e.preventDefault();
93
+ e.stopPropagation();
94
+ setIsDragging(false);
95
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
96
+ handleChange(e.dataTransfer.files);
97
+ }
98
+ };
99
+ const handleDragStart = (e) => {
100
+ e.preventDefault();
101
+ e.stopPropagation();
102
+ e.dataTransfer.clearData();
103
+ };
104
+ 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.getFileAccepts)(acceptType).join(","), multiple: false, onChange: onInputChange, ref: inputRef }, inputProps)), children === null || children === void 0 ? void 0 : children({
105
+ onFileUpload,
106
+ onFileRemove: onFileRemove,
107
+ dragProps: {
108
+ onDrop: handleDrop,
109
+ onDragEnter: handleDragIn,
110
+ onDragLeave: handleDragOut,
111
+ onDragOver: handleDrag,
112
+ onDragStart: handleDragStart
113
+ },
114
+ isDragging,
115
+ errors,
116
+ fileInfo: value
117
+ })] }));
118
+ };
119
+ exports.default = FileUpload;
120
+ //# sourceMappingURL=FileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../../../src/components/file/FileUpload.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;AACb,iCAA8E;AAC9E,uCAA2E;AAE3E,OAAO;AACP,0CAAgE;AAEhE,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAkB,EAAE,EAAE;IAC/G,aAAa;IACb,YAAY;IACZ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,wBAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;IAC9F,CAAC;IAED,KAAK;IACL,MAAM,QAAQ,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAC;IAEvD,OAAO;IACP,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAiB,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAGhG,eAAe;IACf,MAAM,YAAY,GAAG,CAAO,KAAsB,EAAE,EAAE;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,SAAS;QACT,MAAM,SAAS,GAAmB;YAC9B,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;SACrB,CAAA;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,WAAW,IAAI,UAAU,GAAG,WAAW;YAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1E,IAAI,CAAC,IAAA,sBAAc,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;QAEjF,SAAS,CAAC,SAAS,CAAC,CAAA;QAEpB,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAChD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,SAAS,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,QAAQ,CAAC;YACL,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB;SACJ,CAAC,CAAC;IACP,CAAC,CAAA,CAAC;IAGF,gBAAgB;IAChB,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAA;IAGD,sBAAsB;IACtB,MAAM,aAAa,GAAG,CAAO,CAAgC,EAAE,EAAE;QAC7D,MAAM,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,QAAQ,CAAC,OAAO;YAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACtD,CAAC,CAAA,CAAA;IAED,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,QAAQ,CAAC,EAAE;QACjE,QAAQ;KACX,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAS,EAAE;QACxC,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,UAAU,GAAG,CAAC,CAA4B,EAAE,EAAE;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,CAA4B,EAAE,EAAE;QAClD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,aAAa,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAA4B,EAAE,EAAE;QACnD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAA4B,EAAE,EAAE;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,CAA4B,EAAE,EAAE;QACrD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,CACH,6DACI,gDACI,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,MAAM,EAAE,IAAA,sBAAc,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC5C,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,QAAQ,IACT,UAAU,EAChB,EACD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG;gBACR,YAAY;gBACZ,YAAY,EAAE,YAAY;gBAC1B,SAAS,EAAE;oBACP,MAAM,EAAE,UAAU;oBAClB,WAAW,EAAE,YAAY;oBACzB,WAAW,EAAE,aAAa;oBAC1B,UAAU,EAAE,UAAU;oBACtB,WAAW,EAAE,eAAe;iBAC/B;gBACD,UAAU;gBACV,MAAM;gBACN,QAAQ,EAAE,KAAK;aAClB,CAAC,IACH,CACN,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
@@ -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;
@@ -0,0 +1,160 @@
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
+ exports.DEFAULT_INDEX = void 0;
14
+ const jsx_runtime_1 = require("react/jsx-runtime");
15
+ const react_1 = require("react");
16
+ const typings_1 = require("./typings");
17
+ //Utils
18
+ const utils_1 = require("../utils/utils");
19
+ exports.DEFAULT_INDEX = -1;
20
+ const MultiFileUpload = ({ children, onChange, value, onError, inputProps, acceptType, maxFileSize, maxNumber = 10 }) => {
21
+ //Validations
22
+ //@ts-ignore
23
+ if (Array.isArray(acceptType) && acceptType.includes(typings_1.FileAcceptType.ALL)) {
24
+ throw new Error("Invalid accept type: FileAccept.All cannot be included in an array.");
25
+ }
26
+ //Ref
27
+ const inputRef = (0, react_1.useRef)(null);
28
+ //State
29
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
30
+ const [indexKey, setIndexKey] = (0, react_1.useState)(exports.DEFAULT_INDEX);
31
+ const [errors, setErrors] = (0, react_1.useState)({ acceptType: false, maxFileSize: false, maxNumber: false });
32
+ //Handle File
33
+ const handleFile = (file) => ({
34
+ file,
35
+ fileInfo: {
36
+ name: file.name.split(".")[0] || file.name,
37
+ size: Number((file.size / 1024 * 1024).toFixed(2)),
38
+ type: file.type,
39
+ }
40
+ });
41
+ //Handle The File Change
42
+ const handleChange = (files) => __awaiter(void 0, void 0, void 0, function* () {
43
+ if (!files)
44
+ return;
45
+ var changeFiles = [];
46
+ let newErrors = {
47
+ acceptType: false,
48
+ maxFileSize: false,
49
+ maxNumber: false,
50
+ };
51
+ if (files.length > maxNumber)
52
+ newErrors.maxNumber = true;
53
+ for (let i = 0; i < files.length; i++) {
54
+ const file = files[i];
55
+ const uploadSize = Number((file.size / 1024 * 1024).toFixed(2));
56
+ //Accept Type Error
57
+ if (!(0, utils_1.getFileAccepts)(acceptType).includes(file.type))
58
+ newErrors.acceptType = true;
59
+ //Max File Size Error
60
+ if (maxFileSize && (uploadSize > maxFileSize))
61
+ newErrors.maxFileSize = true;
62
+ //Get Files Ready
63
+ changeFiles.push(handleFile(file));
64
+ }
65
+ setErrors(newErrors);
66
+ if (newErrors.acceptType || newErrors.maxFileSize || newErrors.maxNumber) {
67
+ onError === null || onError === void 0 ? void 0 : onError(newErrors);
68
+ return;
69
+ }
70
+ if (indexKey > exports.DEFAULT_INDEX) {
71
+ onChange(value.map((a, i) => {
72
+ if (i === indexKey) {
73
+ return changeFiles[0];
74
+ }
75
+ return a;
76
+ }));
77
+ }
78
+ else {
79
+ onChange(changeFiles);
80
+ }
81
+ });
82
+ //On File Remove ALl
83
+ const onFileRemoveAll = () => {
84
+ onChange([]);
85
+ };
86
+ //On File Remove Index
87
+ const onFileRemove = (index) => {
88
+ onChange(value.filter((_, i) => i !== index));
89
+ };
90
+ //Handle File Upload
91
+ const onFileUpdate = (index) => {
92
+ setIndexKey(index);
93
+ };
94
+ //In Component Method
95
+ const onInputChange = (e) => __awaiter(void 0, void 0, void 0, function* () {
96
+ yield handleChange(e.target.files);
97
+ indexKey > exports.DEFAULT_INDEX && setIndexKey(exports.DEFAULT_INDEX);
98
+ if (inputRef.current)
99
+ inputRef.current.value = '';
100
+ });
101
+ const handleClickInput = (0, react_1.useCallback)(() => (0, utils_1.openFileDialog)(inputRef), [
102
+ inputRef,
103
+ ]);
104
+ const onFileUpload = (0, react_1.useCallback)(() => {
105
+ setIndexKey(exports.DEFAULT_INDEX);
106
+ handleClickInput();
107
+ }, [handleClickInput]);
108
+ const handleDrag = (e) => {
109
+ e.preventDefault();
110
+ e.stopPropagation();
111
+ };
112
+ const handleDragIn = (e) => {
113
+ e.preventDefault();
114
+ e.stopPropagation();
115
+ if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
116
+ setIsDragging(true);
117
+ }
118
+ };
119
+ const handleDragOut = (e) => {
120
+ e.preventDefault();
121
+ e.stopPropagation();
122
+ setIsDragging(false);
123
+ };
124
+ const handleDrop = (e) => {
125
+ e.preventDefault();
126
+ e.stopPropagation();
127
+ setIsDragging(false);
128
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
129
+ handleChange(e.dataTransfer.files);
130
+ }
131
+ };
132
+ const handleDragStart = (e) => {
133
+ e.preventDefault();
134
+ e.stopPropagation();
135
+ e.dataTransfer.clearData();
136
+ };
137
+ (0, react_1.useEffect)(() => {
138
+ if (indexKey > exports.DEFAULT_INDEX) {
139
+ handleClickInput();
140
+ }
141
+ }, [indexKey]);
142
+ 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.getFileAccepts)(acceptType).join(","), multiple: indexKey === exports.DEFAULT_INDEX, onChange: onInputChange, ref: inputRef }, inputProps)), children === null || children === void 0 ? void 0 : children({
143
+ onFileUpload,
144
+ onFileRemove,
145
+ onFileUpdate,
146
+ onFileRemoveAll: onFileRemoveAll,
147
+ dragProps: {
148
+ onDrop: handleDrop,
149
+ onDragEnter: handleDragIn,
150
+ onDragLeave: handleDragOut,
151
+ onDragOver: handleDrag,
152
+ onDragStart: handleDragStart
153
+ },
154
+ isDragging,
155
+ errors,
156
+ fileInfo: value
157
+ })] }));
158
+ };
159
+ exports.default = MultiFileUpload;
160
+ //# sourceMappingURL=MultiFileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiFileUpload.js","sourceRoot":"","sources":["../../../../src/components/file/MultiFileUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { DragEvent } from "react";
2
+ export type FileType = {
3
+ file: File;
4
+ fileInfo: {
5
+ name: string;
6
+ size: number;
7
+ type: string;
8
+ };
9
+ } | null;
10
+ type TExportTypes = {
11
+ dragProps: {
12
+ onDrop: (e: DragEvent<HTMLDivElement>) => void;
13
+ onDragEnter: (e: DragEvent<HTMLDivElement>) => void;
14
+ onDragLeave: (e: DragEvent<HTMLDivElement>) => void;
15
+ onDragOver: (e: DragEvent<HTMLDivElement>) => void;
16
+ onDragStart: (e: DragEvent<HTMLDivElement>) => void;
17
+ };
18
+ isDragging: boolean;
19
+ onFileUpload: () => void;
20
+ };
21
+ type TPropsTypes = {
22
+ inputProps?: React.HTMLProps<HTMLInputElement>;
23
+ acceptType?: FileAcceptType | Exclude<FileAcceptType, FileAcceptType.ALL>[];
24
+ maxFileSize?: number;
25
+ };
26
+ export declare enum FileAcceptType {
27
+ ALL = "all",
28
+ PDF = "application/pdf",
29
+ DOC = "application/msword",
30
+ DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
31
+ PPT = "application/vnd.ms-powerpoint",
32
+ PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation",
33
+ XLS = "application/vnd.ms-excel",
34
+ XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
35
+ ODT = "application/vnd.oasis.opendocument.text",
36
+ ODS = "application/vnd.oasis.opendocument.spreadsheet",
37
+ ODP = "application/vnd.oasis.opendocument.presentation",
38
+ RTF = "application/rtf",
39
+ EPUB = "application/epub+zip",
40
+ CSV = "text/csv",
41
+ TEXT = "text/plain",
42
+ MARKDOWN = "text/markdown",
43
+ HTML = "text/html",
44
+ XML = "application/xml",
45
+ JSON = "application/json",
46
+ YAML = "application/yaml",
47
+ TSV = "text/tab-separated-values",
48
+ ZIP = "application/zip",
49
+ RAR = "application/vnd.rar",
50
+ TAR = "application/x-tar",
51
+ GZIP = "application/gzip",
52
+ SEVENZ = "application/x-7z-compressed",
53
+ MP3 = "audio/mpeg",
54
+ WAV = "audio/wav",
55
+ OGG = "audio/ogg",
56
+ AAC = "audio/aac",
57
+ FLAC = "audio/flac",
58
+ MP4 = "video/mp4",
59
+ AVI = "video/x-msvideo",
60
+ MOV = "video/quicktime",
61
+ WEBM = "video/webm",
62
+ MKV = "video/x-matroska",
63
+ WOFF = "font/woff",
64
+ WOFF2 = "font/woff2",
65
+ TTF = "font/ttf",
66
+ OTF = "font/otf",
67
+ EXE = "application/vnd.microsoft.portable-executable",
68
+ DMG = "application/x-apple-diskimage"
69
+ }
70
+ export type FileErrorTypes = {
71
+ maxFileSize: boolean;
72
+ acceptType: boolean;
73
+ };
74
+ export interface FileExportTypes extends TExportTypes {
75
+ fileInfo: FileType;
76
+ errors: FileErrorTypes;
77
+ onFileRemove: () => void;
78
+ }
79
+ export interface FilePropsTypes extends TPropsTypes {
80
+ children: (props: FileExportTypes) => React.ReactNode;
81
+ onChange: (value: FileType) => void;
82
+ value: FileType;
83
+ onError?: (errors: FileErrorTypes) => void;
84
+ }
85
+ export type MultiFileType = FileType[];
86
+ export interface MultiFileErrorTypes extends FileErrorTypes {
87
+ maxNumber: boolean;
88
+ }
89
+ export interface MultiFileExportTypes extends TExportTypes {
90
+ fileInfo: MultiFileType;
91
+ errors: MultiFileErrorTypes;
92
+ onFileRemove: (index: number) => void;
93
+ onFileUpdate: (index: number) => void;
94
+ onFileRemoveAll: () => void;
95
+ }
96
+ export interface MultiFilePropsTypes extends TPropsTypes {
97
+ children: (props: MultiFileExportTypes) => React.ReactNode;
98
+ onChange: (value: MultiFileType) => void;
99
+ value: MultiFileType;
100
+ onError?: (errors: MultiFileErrorTypes) => void;
101
+ maxNumber?: number;
102
+ }
103
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileAcceptType = void 0;
4
+ var FileAcceptType;
5
+ (function (FileAcceptType) {
6
+ // Special type
7
+ FileAcceptType["ALL"] = "all";
8
+ // Documents
9
+ FileAcceptType["PDF"] = "application/pdf";
10
+ FileAcceptType["DOC"] = "application/msword";
11
+ FileAcceptType["DOCX"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
12
+ FileAcceptType["PPT"] = "application/vnd.ms-powerpoint";
13
+ FileAcceptType["PPTX"] = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
14
+ FileAcceptType["XLS"] = "application/vnd.ms-excel";
15
+ FileAcceptType["XLSX"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
16
+ FileAcceptType["ODT"] = "application/vnd.oasis.opendocument.text";
17
+ FileAcceptType["ODS"] = "application/vnd.oasis.opendocument.spreadsheet";
18
+ FileAcceptType["ODP"] = "application/vnd.oasis.opendocument.presentation";
19
+ FileAcceptType["RTF"] = "application/rtf";
20
+ FileAcceptType["EPUB"] = "application/epub+zip";
21
+ // Text-based formats
22
+ FileAcceptType["CSV"] = "text/csv";
23
+ FileAcceptType["TEXT"] = "text/plain";
24
+ FileAcceptType["MARKDOWN"] = "text/markdown";
25
+ FileAcceptType["HTML"] = "text/html";
26
+ FileAcceptType["XML"] = "application/xml";
27
+ FileAcceptType["JSON"] = "application/json";
28
+ FileAcceptType["YAML"] = "application/yaml";
29
+ FileAcceptType["TSV"] = "text/tab-separated-values";
30
+ // Archives
31
+ FileAcceptType["ZIP"] = "application/zip";
32
+ FileAcceptType["RAR"] = "application/vnd.rar";
33
+ FileAcceptType["TAR"] = "application/x-tar";
34
+ FileAcceptType["GZIP"] = "application/gzip";
35
+ FileAcceptType["SEVENZ"] = "application/x-7z-compressed";
36
+ // Audio
37
+ FileAcceptType["MP3"] = "audio/mpeg";
38
+ FileAcceptType["WAV"] = "audio/wav";
39
+ FileAcceptType["OGG"] = "audio/ogg";
40
+ FileAcceptType["AAC"] = "audio/aac";
41
+ FileAcceptType["FLAC"] = "audio/flac";
42
+ // Video
43
+ FileAcceptType["MP4"] = "video/mp4";
44
+ FileAcceptType["AVI"] = "video/x-msvideo";
45
+ FileAcceptType["MOV"] = "video/quicktime";
46
+ FileAcceptType["WEBM"] = "video/webm";
47
+ FileAcceptType["MKV"] = "video/x-matroska";
48
+ // Fonts
49
+ FileAcceptType["WOFF"] = "font/woff";
50
+ FileAcceptType["WOFF2"] = "font/woff2";
51
+ FileAcceptType["TTF"] = "font/ttf";
52
+ FileAcceptType["OTF"] = "font/otf";
53
+ // Executables
54
+ FileAcceptType["EXE"] = "application/vnd.microsoft.portable-executable";
55
+ FileAcceptType["DMG"] = "application/x-apple-diskimage";
56
+ })(FileAcceptType || (exports.FileAcceptType = FileAcceptType = {}));
57
+ //# sourceMappingURL=typings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typings.js","sourceRoot":"","sources":["../../../../src/components/file/typings.ts"],"names":[],"mappings":";;;AA6BA,IAAY,cA0DX;AA1DD,WAAY,cAAc;IACtB,eAAe;IACf,6BAAW,CAAA;IAEX,YAAY;IACZ,yCAAuB,CAAA;IACvB,4CAA0B,CAAA;IAC1B,kGAAgF,CAAA;IAChF,uDAAqC,CAAA;IACrC,oGAAkF,CAAA;IAClF,kDAAgC,CAAA;IAChC,4FAA0E,CAAA;IAC1E,iEAA+C,CAAA;IAC/C,wEAAsD,CAAA;IACtD,yEAAuD,CAAA;IACvD,yCAAuB,CAAA;IACvB,+CAA6B,CAAA;IAE7B,qBAAqB;IACrB,kCAAgB,CAAA;IAChB,qCAAmB,CAAA;IACnB,4CAA0B,CAAA;IAC1B,oCAAkB,CAAA;IAClB,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,2CAAyB,CAAA;IACzB,mDAAiC,CAAA;IAEjC,WAAW;IACX,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,2CAAyB,CAAA;IACzB,2CAAyB,CAAA;IACzB,wDAAsC,CAAA;IAEtC,QAAQ;IACR,oCAAkB,CAAA;IAClB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;IAEnB,QAAQ;IACR,mCAAiB,CAAA;IACjB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,0CAAwB,CAAA;IAExB,QAAQ;IACR,oCAAkB,CAAA;IAClB,sCAAoB,CAAA;IACpB,kCAAgB,CAAA;IAChB,kCAAgB,CAAA;IAEhB,cAAc;IACd,uEAAqD,CAAA;IACrD,uDAAqC,CAAA;AACzC,CAAC,EA1DW,cAAc,8BAAd,cAAc,QA0DzB"}
@@ -0,0 +1,3 @@
1
+ import { ImagePropsTypes } from "./typings";
2
+ declare const ImageUpload: ({ inputProps, acceptType, maxFileSize, resolutionWidth, resolutionHeight, resolutionType, children, onChange, value, onError }: ImagePropsTypes) => import("react/jsx-runtime").JSX.Element;
3
+ export default ImageUpload;
@@ -0,0 +1,126 @@
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 ImageUpload = ({ inputProps, acceptType, maxFileSize, resolutionWidth, resolutionHeight, resolutionType = "absolute", children, onChange, value, onError }) => {
19
+ //Validations
20
+ //@ts-ignore
21
+ if (Array.isArray(acceptType) && acceptType.includes(typings_1.ImageAcceptType.ALL)) {
22
+ throw new Error("Invalid accept type: ImageAcceptType.All cannot be included in an array.");
23
+ }
24
+ //Ref
25
+ const inputRef = (0, react_1.useRef)(null);
26
+ //State
27
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
28
+ const [errors, setErrors] = (0, react_1.useState)({ acceptType: false, maxFileSize: false, resolution: false });
29
+ //Handle Change
30
+ const handleChange = (files) => __awaiter(void 0, void 0, void 0, function* () {
31
+ if (!files)
32
+ return null;
33
+ const file = files[0];
34
+ if (!file)
35
+ return null;
36
+ //Default
37
+ const newErrors = {
38
+ acceptType: false,
39
+ maxFileSize: false,
40
+ resolution: false,
41
+ };
42
+ const uploadSize = Number((file.size / 1024 * 1024).toFixed(2));
43
+ //Max File Size Check
44
+ if (maxFileSize && uploadSize > maxFileSize)
45
+ newErrors.maxFileSize = true;
46
+ //Accept Type Check
47
+ if (!(0, utils_1.getImageAccepts)(acceptType).includes(file.type))
48
+ newErrors.acceptType = true;
49
+ //Resolution Check
50
+ const image = yield (0, utils_1.getImage)(file);
51
+ const checkRes = (0, utils_1.isResolutionValid)(image, resolutionType, resolutionWidth, resolutionHeight);
52
+ if (!checkRes)
53
+ newErrors.resolution = true;
54
+ setErrors(newErrors);
55
+ if (newErrors.acceptType || newErrors.maxFileSize || newErrors.resolution) {
56
+ onError === null || onError === void 0 ? void 0 : onError(newErrors);
57
+ return;
58
+ }
59
+ const dataUrl = yield (0, utils_1.getBase64)(file);
60
+ onChange({
61
+ file: file,
62
+ dataURL: dataUrl,
63
+ });
64
+ });
65
+ //On Image Remove
66
+ const onImageRemove = () => {
67
+ onChange(null);
68
+ };
69
+ //In Component Handler
70
+ const onInputChange = (e) => __awaiter(void 0, void 0, void 0, function* () {
71
+ yield handleChange(e.target.files);
72
+ if (inputRef.current)
73
+ inputRef.current.value = '';
74
+ });
75
+ const handleClickInput = (0, react_1.useCallback)(() => (0, utils_1.openFileDialog)(inputRef), [
76
+ inputRef,
77
+ ]);
78
+ const onImageUpload = (0, react_1.useCallback)(() => {
79
+ handleClickInput();
80
+ }, [handleClickInput]);
81
+ const handleDrag = (e) => {
82
+ e.preventDefault();
83
+ e.stopPropagation();
84
+ };
85
+ const handleDragIn = (e) => {
86
+ e.preventDefault();
87
+ e.stopPropagation();
88
+ if (e.dataTransfer.items && e.dataTransfer.items.length > 0) {
89
+ setIsDragging(true);
90
+ }
91
+ };
92
+ const handleDragOut = (e) => {
93
+ e.preventDefault();
94
+ e.stopPropagation();
95
+ setIsDragging(false);
96
+ };
97
+ const handleDrop = (e) => {
98
+ e.preventDefault();
99
+ e.stopPropagation();
100
+ setIsDragging(false);
101
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
102
+ handleChange(e.dataTransfer.files);
103
+ }
104
+ };
105
+ const handleDragStart = (e) => {
106
+ e.preventDefault();
107
+ e.stopPropagation();
108
+ e.dataTransfer.clearData();
109
+ };
110
+ 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: false, onChange: onInputChange, ref: inputRef }, inputProps)), children === null || children === void 0 ? void 0 : children({
111
+ onImageUpload,
112
+ onImageRemove: onImageRemove,
113
+ dragProps: {
114
+ onDrop: handleDrop,
115
+ onDragEnter: handleDragIn,
116
+ onDragLeave: handleDragOut,
117
+ onDragOver: handleDrag,
118
+ onDragStart: handleDragStart
119
+ },
120
+ isDragging,
121
+ errors,
122
+ imageInfo: value,
123
+ })] }));
124
+ };
125
+ exports.default = ImageUpload;
126
+ //# sourceMappingURL=ImageUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUpload.js","sourceRoot":"","sources":["../../../../src/components/image/ImageUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { MultiImagePropsTypes } from "./typings";
2
+ declare const MultiImageUpload: ({ inputProps, acceptType, maxFileSize, resolutionWidth, resolutionHeight, resolutionType, children, onChange, value, onError, maxNumber }: MultiImagePropsTypes) => import("react/jsx-runtime").JSX.Element;
3
+ export default MultiImageUpload;