wcz-test 6.4.2 → 6.4.4

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 (49) hide show
  1. package/dist/Approval-gLhUz6rw.d.ts +284 -0
  2. package/dist/FileMeta-CC014fnB.d.ts +18 -0
  3. package/dist/chunk-4FRZRIAO.js +29 -0
  4. package/dist/chunk-4FRZRIAO.js.map +1 -0
  5. package/dist/chunk-4UULRYGW.js +46 -0
  6. package/dist/chunk-4UULRYGW.js.map +1 -0
  7. package/dist/chunk-5WRI5ZAA.js +31 -0
  8. package/dist/chunk-5WRI5ZAA.js.map +1 -0
  9. package/dist/chunk-BZEEKZFG.js +206 -0
  10. package/dist/chunk-BZEEKZFG.js.map +1 -0
  11. package/dist/chunk-GBRG7C6R.js +61 -0
  12. package/dist/chunk-GBRG7C6R.js.map +1 -0
  13. package/dist/chunk-TME53DAF.js +20 -0
  14. package/dist/chunk-TME53DAF.js.map +1 -0
  15. package/dist/chunk-TVEJZEZT.js +883 -0
  16. package/dist/chunk-TVEJZEZT.js.map +1 -0
  17. package/dist/chunk-YHTLF4NN.js +27 -0
  18. package/dist/chunk-YHTLF4NN.js.map +1 -0
  19. package/dist/chunk-ZMWQQXZT.js +17 -0
  20. package/dist/chunk-ZMWQQXZT.js.map +1 -0
  21. package/dist/components.d.ts +89 -0
  22. package/dist/components.js +546 -0
  23. package/dist/components.js.map +1 -0
  24. package/dist/hooks.d.ts +129 -0
  25. package/dist/hooks.js +304 -0
  26. package/dist/hooks.js.map +1 -0
  27. package/dist/i18next-browser-languagedetector.d.ts +4 -0
  28. package/dist/i18next-browser-languagedetector.js +8 -0
  29. package/dist/i18next-browser-languagedetector.js.map +1 -0
  30. package/dist/i18next.d.ts +2 -0
  31. package/dist/i18next.js +9 -0
  32. package/dist/i18next.js.map +1 -0
  33. package/dist/index.d.ts +4 -3542
  34. package/dist/index.js +228 -2752
  35. package/dist/index.js.map +1 -1
  36. package/dist/models.d.ts +161 -0
  37. package/dist/models.js +249 -0
  38. package/dist/models.js.map +1 -0
  39. package/dist/queries.d.ts +1024 -0
  40. package/dist/queries.js +364 -0
  41. package/dist/queries.js.map +1 -0
  42. package/dist/react-i18next.d.ts +1 -0
  43. package/dist/react-i18next.js +3 -0
  44. package/dist/react-i18next.js.map +1 -0
  45. package/dist/utils-DLRiZ02r.d.ts +47 -0
  46. package/dist/utils.d.ts +2154 -0
  47. package/dist/utils.js +27 -0
  48. package/dist/utils.js.map +1 -0
  49. package/package.json +37 -5
@@ -0,0 +1,284 @@
1
+ import z__default from 'zod';
2
+
3
+ declare const EmployeeSchema: z__default.ZodObject<{
4
+ badgeId: z__default.ZodString;
5
+ category: z__default.ZodString;
6
+ categoryGroup: z__default.ZodEnum<{
7
+ IDL: "IDL";
8
+ FD: "FD";
9
+ FI: "FI";
10
+ }>;
11
+ companyCode: z__default.ZodString;
12
+ contactPhone: z__default.ZodString;
13
+ departmentId: z__default.ZodString;
14
+ departmentDescription: z__default.ZodString;
15
+ emailString: z__default.ZodString;
16
+ employeeId: z__default.ZodString;
17
+ extensionNumber: z__default.ZodString;
18
+ firstName: z__default.ZodString;
19
+ gender: z__default.ZodString;
20
+ hiredDate: z__default.ZodDate;
21
+ lastName: z__default.ZodString;
22
+ managerId: z__default.ZodString;
23
+ middleName: z__default.ZodString;
24
+ name: z__default.ZodString;
25
+ nameTitleCase: z__default.ZodString;
26
+ nfcSn: z__default.ZodString;
27
+ plantId: z__default.ZodString;
28
+ position: z__default.ZodString;
29
+ previousEmployeeIds: z__default.ZodNullable<z__default.ZodString>;
30
+ reHiredDate: z__default.ZodNullable<z__default.ZodDate>;
31
+ recordNumber: z__default.ZodNumber;
32
+ status: z__default.ZodEnum<{
33
+ Active: "Active";
34
+ Terminated: "Terminated";
35
+ "Leave of Absence": "Leave of Absence";
36
+ }>;
37
+ supervisorId: z__default.ZodString;
38
+ terminationDate: z__default.ZodNullable<z__default.ZodDate>;
39
+ terminationFutureDate: z__default.ZodNullable<z__default.ZodDate>;
40
+ type: z__default.ZodString;
41
+ upperDepartmentId: z__default.ZodString;
42
+ jobCode: z__default.ZodString;
43
+ jobDescription: z__default.ZodString;
44
+ terminationReason: z__default.ZodNullable<z__default.ZodString>;
45
+ supervisorRecordNumber: z__default.ZodNumber;
46
+ }, z__default.core.$strip>;
47
+ type Employee = z__default.infer<typeof EmployeeSchema>;
48
+
49
+ declare const DepartmentSchema: z__default.ZodObject<{
50
+ departmentId: z__default.ZodString;
51
+ description: z__default.ZodString;
52
+ managerId: z__default.ZodString;
53
+ managerRecordNumber: z__default.ZodString;
54
+ treeLevel: z__default.ZodNumber;
55
+ upperDepartmentId: z__default.ZodString;
56
+ companyCode: z__default.ZodString;
57
+ location: z__default.ZodString;
58
+ salLocation: z__default.ZodString;
59
+ plantId: z__default.ZodString;
60
+ manager: z__default.ZodObject<{
61
+ badgeId: z__default.ZodString;
62
+ category: z__default.ZodString;
63
+ categoryGroup: z__default.ZodEnum<{
64
+ IDL: "IDL";
65
+ FD: "FD";
66
+ FI: "FI";
67
+ }>;
68
+ companyCode: z__default.ZodString;
69
+ contactPhone: z__default.ZodString;
70
+ departmentId: z__default.ZodString;
71
+ departmentDescription: z__default.ZodString;
72
+ emailString: z__default.ZodString;
73
+ employeeId: z__default.ZodString;
74
+ extensionNumber: z__default.ZodString;
75
+ firstName: z__default.ZodString;
76
+ gender: z__default.ZodString;
77
+ hiredDate: z__default.ZodDate;
78
+ lastName: z__default.ZodString;
79
+ managerId: z__default.ZodString;
80
+ middleName: z__default.ZodString;
81
+ name: z__default.ZodString;
82
+ nameTitleCase: z__default.ZodString;
83
+ nfcSn: z__default.ZodString;
84
+ plantId: z__default.ZodString;
85
+ position: z__default.ZodString;
86
+ previousEmployeeIds: z__default.ZodNullable<z__default.ZodString>;
87
+ reHiredDate: z__default.ZodNullable<z__default.ZodDate>;
88
+ recordNumber: z__default.ZodNumber;
89
+ status: z__default.ZodEnum<{
90
+ Active: "Active";
91
+ Terminated: "Terminated";
92
+ "Leave of Absence": "Leave of Absence";
93
+ }>;
94
+ supervisorId: z__default.ZodString;
95
+ terminationDate: z__default.ZodNullable<z__default.ZodDate>;
96
+ terminationFutureDate: z__default.ZodNullable<z__default.ZodDate>;
97
+ type: z__default.ZodString;
98
+ upperDepartmentId: z__default.ZodString;
99
+ jobCode: z__default.ZodString;
100
+ jobDescription: z__default.ZodString;
101
+ terminationReason: z__default.ZodNullable<z__default.ZodString>;
102
+ supervisorRecordNumber: z__default.ZodNumber;
103
+ }, z__default.core.$strip>;
104
+ }, z__default.core.$strip>;
105
+ type Department = z__default.infer<typeof DepartmentSchema>;
106
+
107
+ declare const ApprovalSchema: z__default.ZodObject<{
108
+ id: z__default.ZodUUID;
109
+ number: z__default.ZodOptional<z__default.ZodString>;
110
+ applicationName: z__default.ZodString;
111
+ type: z__default.ZodOptional<z__default.ZodDefault<z__default.ZodEnum<{
112
+ Single: "Single";
113
+ Batch: "Batch";
114
+ }>>>;
115
+ status: z__default.ZodEnum<{
116
+ WaitingForApproval: "WaitingForApproval";
117
+ Approved: "Approved";
118
+ Rejected: "Rejected";
119
+ Withdrawn: "Withdrawn";
120
+ Cancelled: "Cancelled";
121
+ PartiallyApproved: "PartiallyApproved";
122
+ }>;
123
+ emailBody: z__default.ZodString;
124
+ created: z__default.ZodDate;
125
+ createdBy: z__default.ZodCustom<{
126
+ employeeId: string;
127
+ name: string;
128
+ email: string;
129
+ }, {
130
+ employeeId: string;
131
+ name: string;
132
+ email: string;
133
+ }>;
134
+ updated: z__default.ZodDate;
135
+ updatedBy: z__default.ZodCustom<{
136
+ employeeId: string;
137
+ name: string;
138
+ email: string;
139
+ }, {
140
+ employeeId: string;
141
+ name: string;
142
+ email: string;
143
+ }>;
144
+ approvalFlows: z__default.ZodArray<z__default.ZodCustom<{
145
+ id: string;
146
+ approvalStage: number;
147
+ approvalSequence: number;
148
+ stepApprovalOrder: "Serial" | "Parallel" | "OneOfThem";
149
+ steps: {
150
+ id: string;
151
+ order: number;
152
+ approver: {
153
+ employeeId: string;
154
+ name: string;
155
+ email: string;
156
+ };
157
+ approverRole?: string | undefined;
158
+ actualApprover?: {
159
+ employeeId: string;
160
+ name: string;
161
+ email: string;
162
+ } | undefined;
163
+ result?: "NotAvailable" | "FutureApproval" | "WaitingForApproval" | "Approved" | "Rejected" | "Skipped" | "Withdrawn" | "Cancelled" | undefined;
164
+ resultDate?: Date | undefined;
165
+ resultComment?: string | undefined;
166
+ }[];
167
+ batchSequence?: number | undefined;
168
+ isActive?: boolean | undefined;
169
+ }, {
170
+ id: string;
171
+ approvalStage: number;
172
+ approvalSequence: number;
173
+ stepApprovalOrder: "Serial" | "Parallel" | "OneOfThem";
174
+ steps: {
175
+ id: string;
176
+ order: number;
177
+ approver: {
178
+ employeeId: string;
179
+ name: string;
180
+ email: string;
181
+ };
182
+ approverRole?: string | undefined;
183
+ actualApprover?: {
184
+ employeeId: string;
185
+ name: string;
186
+ email: string;
187
+ } | undefined;
188
+ result?: "NotAvailable" | "FutureApproval" | "WaitingForApproval" | "Approved" | "Rejected" | "Skipped" | "Withdrawn" | "Cancelled" | undefined;
189
+ resultDate?: Date | undefined;
190
+ resultComment?: string | undefined;
191
+ }[];
192
+ batchSequence?: number | undefined;
193
+ isActive?: boolean | undefined;
194
+ }>>;
195
+ currentApprovers: z__default.ZodArray<z__default.ZodCustom<{
196
+ employeeId: string;
197
+ name: string;
198
+ email: string;
199
+ }, {
200
+ employeeId: string;
201
+ name: string;
202
+ email: string;
203
+ }>>;
204
+ }, z__default.core.$strip>;
205
+ type Approval = z__default.infer<typeof ApprovalSchema>;
206
+ declare const CreateApprovalSchema: z__default.ZodObject<{
207
+ number: z__default.ZodOptional<z__default.ZodString>;
208
+ type: z__default.ZodOptional<z__default.ZodDefault<z__default.ZodEnum<{
209
+ Single: "Single";
210
+ Batch: "Batch";
211
+ }>>>;
212
+ id: z__default.ZodUUID;
213
+ applicationName: z__default.ZodString;
214
+ emailBody: z__default.ZodString;
215
+ approvalFlows: z__default.ZodArray<z__default.ZodObject<{
216
+ stepApprovalOrder: z__default.ZodEnum<{
217
+ Serial: "Serial";
218
+ Parallel: "Parallel";
219
+ OneOfThem: "OneOfThem";
220
+ }>;
221
+ approvalStage: z__default.ZodNumber;
222
+ batchSequence: z__default.ZodOptional<z__default.ZodNumber>;
223
+ steps: z__default.ZodArray<z__default.ZodObject<{
224
+ approver: z__default.ZodObject<{
225
+ employeeId: z__default.ZodString;
226
+ name: z__default.ZodString;
227
+ email: z__default.ZodEmail;
228
+ }, z__default.core.$strip>;
229
+ approverRole: z__default.ZodOptional<z__default.ZodDefault<z__default.ZodString>>;
230
+ }, z__default.core.$strip>>;
231
+ }, z__default.core.$strip>>;
232
+ }, z__default.core.$strip>;
233
+ type CreateApproval = z__default.infer<typeof CreateApprovalSchema>;
234
+ declare const ApproveApprovalSchema: z__default.ZodObject<{
235
+ id: z__default.ZodUUID;
236
+ result: z__default.ZodEnum<{
237
+ NotAvailable: "NotAvailable";
238
+ FutureApproval: "FutureApproval";
239
+ WaitingForApproval: "WaitingForApproval";
240
+ Approved: "Approved";
241
+ Rejected: "Rejected";
242
+ Skipped: "Skipped";
243
+ Withdrawn: "Withdrawn";
244
+ Cancelled: "Cancelled";
245
+ }>;
246
+ resultComment: z__default.ZodOptional<z__default.ZodString>;
247
+ emailBody: z__default.ZodString;
248
+ }, z__default.core.$strip>;
249
+ type ApproveApproval = z__default.infer<typeof ApproveApprovalSchema>;
250
+ declare const ResubmitApprovalSchema: z__default.ZodObject<{
251
+ id: z__default.ZodUUID;
252
+ approvalFlows: z__default.ZodArray<z__default.ZodObject<{
253
+ stepApprovalOrder: z__default.ZodEnum<{
254
+ Serial: "Serial";
255
+ Parallel: "Parallel";
256
+ OneOfThem: "OneOfThem";
257
+ }>;
258
+ approvalStage: z__default.ZodNumber;
259
+ batchSequence: z__default.ZodOptional<z__default.ZodNumber>;
260
+ steps: z__default.ZodArray<z__default.ZodObject<{
261
+ approver: z__default.ZodObject<{
262
+ employeeId: z__default.ZodString;
263
+ name: z__default.ZodString;
264
+ email: z__default.ZodEmail;
265
+ }, z__default.core.$strip>;
266
+ approverRole: z__default.ZodOptional<z__default.ZodDefault<z__default.ZodString>>;
267
+ }, z__default.core.$strip>>;
268
+ }, z__default.core.$strip>>;
269
+ }, z__default.core.$strip>;
270
+ type ResubmitApproval = z__default.infer<typeof ResubmitApprovalSchema>;
271
+ declare const CancelApprovalSchema: z__default.ZodObject<{
272
+ id: z__default.ZodUUID;
273
+ comment: z__default.ZodString;
274
+ emailBody: z__default.ZodString;
275
+ }, z__default.core.$strip>;
276
+ type CancelApproval = z__default.infer<typeof CancelApprovalSchema>;
277
+ declare const WithdrawApprovalSchema: z__default.ZodObject<{
278
+ id: z__default.ZodUUID;
279
+ comment: z__default.ZodString;
280
+ emailBody: z__default.ZodString;
281
+ }, z__default.core.$strip>;
282
+ type WithdrawApproval = z__default.infer<typeof WithdrawApprovalSchema>;
283
+
284
+ export { type Approval as A, type CreateApproval as C, type Department as D, type Employee as E, type ResubmitApproval as R, type WithdrawApproval as W, type ApproveApproval as a, type CancelApproval as b, EmployeeSchema as c, DepartmentSchema as d, ApprovalSchema as e, CreateApprovalSchema as f, ApproveApprovalSchema as g, ResubmitApprovalSchema as h, CancelApprovalSchema as i, WithdrawApprovalSchema as j };
@@ -0,0 +1,18 @@
1
+ import * as z from 'zod';
2
+
3
+ declare const FileMetaSchema: z.ZodObject<{
4
+ id: z.ZodUUID;
5
+ subId: z.ZodUUID;
6
+ appName: z.ZodString;
7
+ fileName: z.ZodString;
8
+ fileExtension: z.ZodString;
9
+ fileSize: z.ZodNumber;
10
+ mediaSubType: z.ZodString;
11
+ mediaType: z.ZodString;
12
+ mimeType: z.ZodString;
13
+ createdBy: z.ZodString;
14
+ createdDate: z.ZodDate;
15
+ }, z.core.$strip>;
16
+ type FileMeta = z.infer<typeof FileMetaSchema>;
17
+
18
+ export { type FileMeta as F, FileMetaSchema as a };
@@ -0,0 +1,29 @@
1
+ // src/models/approval/ApprovalStepResult.ts
2
+ import z from "zod";
3
+ var ApprovalStepResult = z.enum([
4
+ "NotAvailable",
5
+ "FutureApproval",
6
+ "WaitingForApproval",
7
+ "Approved",
8
+ "Rejected",
9
+ "Skipped",
10
+ "Withdrawn",
11
+ "Cancelled"
12
+ ]);
13
+
14
+ // src/models/approval/ApprovalStatus.ts
15
+ import z2 from "zod";
16
+ var ApprovalStatus = z2.enum([
17
+ "WaitingForApproval",
18
+ "Approved",
19
+ "PartiallyApproved",
20
+ "Rejected",
21
+ "Withdrawn",
22
+ "Cancelled"
23
+ ]);
24
+
25
+ export {
26
+ ApprovalStepResult,
27
+ ApprovalStatus
28
+ };
29
+ //# sourceMappingURL=chunk-4FRZRIAO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/models/approval/ApprovalStepResult.ts","../src/models/approval/ApprovalStatus.ts"],"sourcesContent":["import z from \"zod\";\r\n\r\nexport const ApprovalStepResult = z.enum([\r\n \"NotAvailable\",\r\n \"FutureApproval\",\r\n \"WaitingForApproval\",\r\n \"Approved\",\r\n \"Rejected\",\r\n \"Skipped\",\r\n \"Withdrawn\",\r\n \"Cancelled\"\r\n]);","import z from \"zod\";\r\n\r\nexport const ApprovalStatus = z.enum([\r\n \"WaitingForApproval\",\r\n \"Approved\",\r\n \"PartiallyApproved\",\r\n \"Rejected\",\r\n \"Withdrawn\",\r\n \"Cancelled\"\r\n]);"],"mappings":";AAAA,OAAO,OAAO;AAEP,IAAM,qBAAqB,EAAE,KAAK;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;;;ACXD,OAAOA,QAAO;AAEP,IAAM,iBAAiBA,GAAE,KAAK;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;","names":["z"]}
@@ -0,0 +1,46 @@
1
+ // src/hooks/DialogsHooks.tsx
2
+ import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from "@mui/material";
3
+ import { useContext } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+
6
+ // src/contexts/DialogsContext.ts
7
+ import { createContext } from "react";
8
+ var DialogsContext = createContext({});
9
+
10
+ // src/hooks/DialogsHooks.tsx
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ function AlertDialog({ open, payload, onClose }) {
13
+ const { t } = useTranslation();
14
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(), disableRestoreFocus: true, children: [
15
+ /* @__PURE__ */ jsx(DialogTitle, { children: payload.title ?? t("Layout.Dialog.Alert") }),
16
+ /* @__PURE__ */ jsx(DialogContent, { children: payload.message }),
17
+ /* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(Button, { onClick: () => onClose(), autoFocus: true, children: t("Layout.Dialog.Confirm") }) })
18
+ ] });
19
+ }
20
+ function ConfirmDialog({ open, payload, onClose }) {
21
+ const { t } = useTranslation();
22
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(false), disableRestoreFocus: true, children: [
23
+ /* @__PURE__ */ jsx(DialogTitle, { children: payload.title ?? t("Layout.Dialog.Confirm") }),
24
+ /* @__PURE__ */ jsx(DialogContent, { children: payload.message }),
25
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
26
+ /* @__PURE__ */ jsx(Button, { onClick: () => onClose(false), children: payload.cancelText ?? t("Layout.Dialog.Cancel") }),
27
+ /* @__PURE__ */ jsx(Button, { onClick: () => onClose(true), autoFocus: true, children: t("Layout.Dialog.Confirm") })
28
+ ] })
29
+ ] });
30
+ }
31
+ function useDialogs() {
32
+ const { open, close } = useContext(DialogsContext);
33
+ const alert = useEventCallback(
34
+ (message, { ...options } = {}) => open(AlertDialog, { ...options, message })
35
+ );
36
+ const confirm = useEventCallback(
37
+ (message, { ...options } = {}) => open(ConfirmDialog, { ...options, message })
38
+ );
39
+ return { alert, confirm, open, close };
40
+ }
41
+
42
+ export {
43
+ DialogsContext,
44
+ useDialogs
45
+ };
46
+ //# sourceMappingURL=chunk-4UULRYGW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/DialogsHooks.tsx","../src/contexts/DialogsContext.ts"],"sourcesContent":["import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from \"@mui/material\";\r\nimport { useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DialogsContext } from \"../contexts/DialogsContext\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface OpenDialogOptions<TResult> {\r\n onClose?: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport interface AlertOptions {\r\n title?: ReactNode;\r\n}\r\n\r\nexport interface ConfirmOptions {\r\n title?: ReactNode;\r\n cancelText?: ReactNode;\r\n}\r\n\r\nexport interface DialogProps<TPayload = undefined, TResult = void> {\r\n payload: TPayload;\r\n open: boolean;\r\n onClose: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\r\n\r\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\r\n\r\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;\r\n\r\nexport interface OpenDialog {\r\n <TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n <TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n}\r\n\r\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\r\n\r\nexport interface AlertDialogPayload extends AlertOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>\r\n\r\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose()} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport interface ConfirmDialogPayload extends ConfirmOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>\r\n\r\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose(false)}>\r\n {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\r\n </Button>\r\n <Button onClick={() => onClose(true)} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\ninterface DialogHook {\r\n alert: OpenAlertDialog;\r\n confirm: OpenConfirmDialog;\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport function useDialogs(): DialogHook {\r\n const { open, close } = useContext(DialogsContext);\r\n\r\n const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\r\n open(AlertDialog, { ...options, message }),\r\n );\r\n\r\n const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\r\n open(ConfirmDialog, { ...options, message }),\r\n );\r\n\r\n return { alert, confirm, open, close };\r\n}\r\n","import { createContext } from \"react\";\r\nimport type { CloseDialog, OpenDialog } from \"../hooks/DialogsHooks\";\r\n\r\nexport interface DialogsContextValue {\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport const DialogsContext = createContext<DialogsContextValue>({} as DialogsContextValue);"],"mappings":";AAAA,SAAS,QAAQ,QAAQ,eAAe,eAAe,aAAa,wBAAwB;AAC5F,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;;;ACF/B,SAAS,qBAAqB;AAQvB,IAAM,iBAAiB,cAAmC,CAAC,CAAwB;;;ADwClF,SACI,KADJ;AAJD,SAAS,YAAY,EAAE,MAAM,SAAS,QAAQ,GAA+B;AAChF,QAAM,EAAE,EAAE,IAAI,eAAe;AAE7B,SACI,qBAAC,UAAO,UAAS,MAAK,WAAS,MAAC,MAAY,SAAS,MAAM,QAAQ,GAAG,qBAAmB,MACrF;AAAA,wBAAC,eAAa,kBAAQ,SAAS,EAAE,qBAAqB,GAAE;AAAA,IACxD,oBAAC,iBAAe,kBAAQ,SAAQ;AAAA,IAChC,oBAAC,iBACG,8BAAC,UAAO,SAAS,MAAM,QAAQ,GAAG,WAAS,MACtC,YAAE,uBAAuB,GAC9B,GACJ;AAAA,KACJ;AAER;AAQO,SAAS,cAAc,EAAE,MAAM,SAAS,QAAQ,GAAiC;AACpF,QAAM,EAAE,EAAE,IAAI,eAAe;AAE7B,SACI,qBAAC,UAAO,UAAS,MAAK,WAAS,MAAC,MAAY,SAAS,MAAM,QAAQ,KAAK,GAAG,qBAAmB,MAC1F;AAAA,wBAAC,eAAa,kBAAQ,SAAS,EAAE,uBAAuB,GAAE;AAAA,IAC1D,oBAAC,iBAAe,kBAAQ,SAAQ;AAAA,IAChC,qBAAC,iBACG;AAAA,0BAAC,UAAO,SAAS,MAAM,QAAQ,KAAK,GAC/B,kBAAQ,cAAc,EAAE,sBAAsB,GACnD;AAAA,MACA,oBAAC,UAAO,SAAS,MAAM,QAAQ,IAAI,GAAG,WAAS,MAC1C,YAAE,uBAAuB,GAC9B;AAAA,OACJ;AAAA,KACJ;AAER;AASO,SAAS,aAAyB;AACrC,QAAM,EAAE,MAAM,MAAM,IAAI,WAAW,cAAc;AAEjD,QAAM,QAAQ;AAAA,IAAkC,CAAC,SAAS,EAAE,GAAG,QAAQ,IAAI,CAAC,MACxE,KAAK,aAAa,EAAE,GAAG,SAAS,QAAQ,CAAC;AAAA,EAC7C;AAEA,QAAM,UAAU;AAAA,IAAoC,CAAC,SAAS,EAAE,GAAG,QAAQ,IAAI,CAAC,MAC5E,KAAK,eAAe,EAAE,GAAG,SAAS,QAAQ,CAAC;AAAA,EAC/C;AAEA,SAAO,EAAE,OAAO,SAAS,MAAM,MAAM;AACzC;","names":[]}
@@ -0,0 +1,31 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+
27
+ export {
28
+ __commonJS,
29
+ __toESM
30
+ };
31
+ //# sourceMappingURL=chunk-5WRI5ZAA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,206 @@
1
+ import {
2
+ httpClient,
3
+ toKebabCase
4
+ } from "./chunk-GBRG7C6R.js";
5
+ import {
6
+ clientEnv
7
+ } from "./chunk-YHTLF4NN.js";
8
+ import {
9
+ FileMetaSchema
10
+ } from "./chunk-TME53DAF.js";
11
+
12
+ // src/queries/FileHooks.ts
13
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
14
+ import saveAs from "file-saver";
15
+ import { useState } from "react";
16
+ import { Upload as TusUpload } from "tus-js-client";
17
+ import { uuidv7 } from "uuidv7";
18
+ import z from "zod";
19
+ var QUERY_KEY = "file";
20
+ var HOUR = 1e3 * 60 * 60;
21
+ var APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);
22
+ var GetFileMetasParamsSchema = z.object({
23
+ appName: z.string().min(1).max(255).default(APP_NAME).optional(),
24
+ subId: z.uuid()
25
+ });
26
+ var useGetFileMetas = (params, options) => {
27
+ const queryParams = new URLSearchParams();
28
+ queryParams.append("appName", params.appName ?? APP_NAME);
29
+ queryParams.append("subId", params.subId);
30
+ return useQuery({
31
+ ...options,
32
+ queryKey: [QUERY_KEY, "meta", params.appName ?? APP_NAME, params.subId],
33
+ queryFn: ({ signal }) => httpClient.request({
34
+ url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,
35
+ method: "GET",
36
+ signal
37
+ }),
38
+ staleTime: HOUR,
39
+ gcTime: HOUR,
40
+ refetchOnWindowFocus: false
41
+ });
42
+ };
43
+ var GetFileThumbnailParamsSchema = z.object({
44
+ appName: z.string().min(1).max(255).default(APP_NAME).optional(),
45
+ meta: FileMetaSchema
46
+ });
47
+ var useGetFileThumbnail = (params, options) => {
48
+ const queryParams = new URLSearchParams();
49
+ queryParams.append("appName", params.appName ?? APP_NAME);
50
+ queryParams.append("id", params.meta.id);
51
+ return useQuery({
52
+ ...options,
53
+ queryKey: [QUERY_KEY, "thumbnail", params.appName ?? APP_NAME, params.meta.id],
54
+ queryFn: ({ signal }) => httpClient.request({
55
+ url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,
56
+ method: "GET",
57
+ signal,
58
+ responseType: "blob"
59
+ }),
60
+ select: (data) => URL.createObjectURL(data),
61
+ staleTime: HOUR,
62
+ gcTime: HOUR,
63
+ refetchOnWindowFocus: false
64
+ });
65
+ };
66
+ var GetFileParamsSchema = z.object({
67
+ appName: z.string().min(1).max(255).default(APP_NAME).optional(),
68
+ meta: FileMetaSchema
69
+ });
70
+ var useGetFile = (params, options) => {
71
+ const queryParams = new URLSearchParams();
72
+ queryParams.append("appName", params.appName ?? APP_NAME);
73
+ queryParams.append("id", params.meta.id);
74
+ return useQuery({
75
+ ...options,
76
+ queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta.id],
77
+ queryFn: ({ signal }) => httpClient.request({
78
+ url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,
79
+ method: "GET",
80
+ signal,
81
+ responseType: "blob"
82
+ }),
83
+ select: (data) => URL.createObjectURL(data),
84
+ staleTime: HOUR,
85
+ gcTime: HOUR,
86
+ refetchOnWindowFocus: false
87
+ });
88
+ };
89
+ var useDownloadFile = (options) => {
90
+ return useMutation({
91
+ ...options,
92
+ mutationFn: (meta) => httpClient.request({
93
+ url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,
94
+ method: "GET",
95
+ responseType: "blob"
96
+ }),
97
+ onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`)
98
+ });
99
+ };
100
+ var useOpenFile = (options) => {
101
+ return useMutation({
102
+ ...options,
103
+ mutationFn: (meta) => httpClient.request({
104
+ url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,
105
+ method: "GET",
106
+ responseType: "blob"
107
+ }),
108
+ onSuccess: (data) => {
109
+ window.open(URL.createObjectURL(data));
110
+ }
111
+ });
112
+ };
113
+ var useUpdateFileMeta = (options) => {
114
+ const queryClient = useQueryClient();
115
+ return useMutation({
116
+ ...options,
117
+ mutationFn: (meta) => httpClient.request({
118
+ url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,
119
+ method: "PUT",
120
+ data: meta
121
+ }),
122
+ onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false })
123
+ });
124
+ };
125
+ var useDeleteFile = (options) => {
126
+ const queryClient = useQueryClient();
127
+ return useMutation({
128
+ ...options,
129
+ mutationFn: (meta) => httpClient.request({
130
+ url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,
131
+ method: "DELETE"
132
+ }),
133
+ onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false })
134
+ });
135
+ };
136
+ var useDeleteFiles = (options) => {
137
+ const queryClient = useQueryClient();
138
+ return useMutation({
139
+ ...options,
140
+ mutationFn: (subId) => httpClient.request({
141
+ url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,
142
+ method: "DELETE"
143
+ }),
144
+ onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta"], exact: false })
145
+ });
146
+ };
147
+ var useUploadFile = ({ subId, onSuccess, onError }) => {
148
+ const [progress, setProgress] = useState(0);
149
+ const queryClient = useQueryClient();
150
+ const mutate = async (file) => {
151
+ if (!subId) throw new Error("subId is required for file upload");
152
+ const metadata = {
153
+ id: uuidv7(),
154
+ appName: APP_NAME,
155
+ subId,
156
+ fileName: file.name
157
+ };
158
+ const upload = new TusUpload(file, {
159
+ endpoint: `${clientEnv.VITE_BASE_URL}/${QUERY_KEY}/v1/upload`,
160
+ chunkSize: 1048576,
161
+ // 1 MB
162
+ metadata: {
163
+ id: metadata.id,
164
+ appName: metadata.appName,
165
+ subId: metadata.subId,
166
+ fileName: metadata.fileName,
167
+ fileExtension: file.type
168
+ },
169
+ // headers: { "Authorization": `Bearer ${await getToken()}` }, //TODO: implement token retrieval
170
+ onError: (error) => {
171
+ setProgress(0);
172
+ onError?.(error);
173
+ },
174
+ onProgress: (bytesUploaded, bytesTotal) => {
175
+ setProgress(bytesUploaded / bytesTotal * 100);
176
+ },
177
+ onSuccess: () => {
178
+ setProgress(0);
179
+ queryClient.invalidateQueries({ queryKey: [QUERY_KEY, "meta", subId], exact: false });
180
+ onSuccess?.(metadata);
181
+ }
182
+ });
183
+ const previousUploads = await upload.findPreviousUploads();
184
+ if (previousUploads.length > 0) {
185
+ upload.resumeFromPreviousUpload(previousUploads[0]);
186
+ }
187
+ upload.start();
188
+ };
189
+ return { mutate, progress };
190
+ };
191
+
192
+ export {
193
+ GetFileMetasParamsSchema,
194
+ useGetFileMetas,
195
+ GetFileThumbnailParamsSchema,
196
+ useGetFileThumbnail,
197
+ GetFileParamsSchema,
198
+ useGetFile,
199
+ useDownloadFile,
200
+ useOpenFile,
201
+ useUpdateFileMeta,
202
+ useDeleteFile,
203
+ useDeleteFiles,
204
+ useUploadFile
205
+ };
206
+ //# sourceMappingURL=chunk-BZEEKZFG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/queries/FileHooks.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport saveAs from \"file-saver\";\r\nimport { useState } from \"react\";\r\nimport { Upload as TusUpload } from \"tus-js-client\";\r\nimport { uuidv7 } from \"uuidv7\";\r\nimport z from \"zod\";\r\nimport type { DetailedError } from \"tus-js-client\";\r\nimport type { DefinedInitialDataOptions, UseMutationOptions } from \"@tanstack/react-query\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\r\nimport { httpClient, toKebabCase } from \"~/lib/utils\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst QUERY_KEY = \"file\";\r\nconst HOUR = 1000 * 60 * 60;\r\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\r\n\r\ntype OptionalId = string | undefined | null;\r\n\r\ntype BaseFileMetaArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<FileMeta>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseBlobQueryOptions = Omit<DefinedInitialDataOptions<Blob, Error, string>, \"queryKey\" | \"queryFn\" | \"select\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseFileMetaMutationOptions = Omit<UseMutationOptions<FileMeta, Error, FileMeta>, \"mutationFn\" | \"onSettled\">;\r\ntype BaseBlobMutationOptions = Omit<UseMutationOptions<Blob, Error, FileMeta>, \"mutationFn\" | \"onSuccess\">;\r\ntype BaseStringMutationOptions = Omit<UseMutationOptions<string, Error, string>, \"mutationFn\" | \"onSettled\">;\r\n\r\nexport const GetFileMetasParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n subId: z.uuid(),\r\n});\r\n\r\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\r\n\r\nexport const useGetFileMetas = (params: GetFileMetasParams, options?: BaseFileMetaArrayQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"subId\", params.subId);\r\n\r\n return useQuery<Array<FileMeta>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n }),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const GetFileThumbnailParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema,\r\n});\r\n\r\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\r\n\r\nexport const useGetFileThumbnail = (params: GetFileThumbnailParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta.id);\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const GetFileParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema,\r\n});\r\n\r\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\r\n\r\nexport const useGetFile = (params: GetFileParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta.id);\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false\r\n });\r\n};\r\n\r\nexport const useDownloadFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`)\r\n });\r\n};\r\n\r\nexport const useOpenFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: data => { window.open(URL.createObjectURL(data)); }\r\n });\r\n};\r\n\r\nexport const useUpdateFileMeta = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"PUT\",\r\n data: meta\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\nexport const useDeleteFile = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n};\r\n\r\nexport const useDeleteFiles = (options?: BaseStringMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<string, Error, string>({\r\n ...options,\r\n mutationFn: subId => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\ninterface UseUploadFileProps {\r\n subId: OptionalId;\r\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\r\n onError?: (error: Error | DetailedError) => void;\r\n}\r\n\r\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\r\n const [progress, setProgress] = useState<number>(0);\r\n const queryClient = useQueryClient();\r\n\r\n const mutate = async (file: File) => {\r\n if (!subId) throw new Error(\"subId is required for file upload\");\r\n\r\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\r\n id: uuidv7(),\r\n appName: APP_NAME,\r\n subId: subId,\r\n fileName: file.name,\r\n };\r\n\r\n const upload = new TusUpload(file, {\r\n endpoint: `${clientEnv.VITE_BASE_URL}/${QUERY_KEY}/v1/upload`,\r\n chunkSize: 1_048_576, // 1 MB\r\n metadata: {\r\n id: metadata.id,\r\n appName: metadata.appName,\r\n subId: metadata.subId,\r\n fileName: metadata.fileName,\r\n fileExtension: file.type\r\n },\r\n // headers: { \"Authorization\": `Bearer ${await getToken()}` }, //TODO: implement token retrieval\r\n onError: (error) => {\r\n setProgress(0);\r\n onError?.(error);\r\n },\r\n onProgress: (bytesUploaded, bytesTotal) => {\r\n setProgress((bytesUploaded / bytesTotal) * 100);\r\n },\r\n onSuccess: () => {\r\n setProgress(0);\r\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\r\n onSuccess?.(metadata);\r\n },\r\n });\r\n\r\n const previousUploads = await upload.findPreviousUploads();\r\n if (previousUploads.length > 0) {\r\n upload.resumeFromPreviousUpload(previousUploads[0]);\r\n }\r\n\r\n upload.start();\r\n };\r\n\r\n return { mutate, progress };\r\n};\r\n"],"mappings":"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","names":[]}