@feedmepos/mf-hrm-portal 2.0.17-dev.2 → 2.0.17-dev.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 (50) hide show
  1. package/dist/{AuditLogList-DQOiwup5.js → AuditLogList-CV82_8fj.js} +350 -324
  2. package/dist/EmployeeList-dE0So94R.js +736 -0
  3. package/dist/FormSection.vue_vue_type_script_setup_true_lang-BVb8c4YU.js +71 -0
  4. package/dist/HorizontalSplitter-o860F4xM.js +12 -0
  5. package/dist/{Main-5nIpv-Sp.js → Main-BAx-c_oZ.js} +9 -9
  6. package/dist/{Main-2uJvk5L7.js → Main-CfAQYaaW.js} +14 -15
  7. package/dist/{Main-C8ja5xs6.js → Main-CyReTP3K.js} +8 -8
  8. package/dist/PermissionSetList-DmsJnW2i.js +341 -0
  9. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BbcY9q1x.js +3480 -0
  10. package/dist/RoleList-CKB8L-BW.js +530 -0
  11. package/dist/TeamMemberList-CszlbmAX.js +1108 -0
  12. package/dist/{TimesheetList-D1ByiuwP.js → TimesheetList-NRUfSiYL.js} +6 -6
  13. package/dist/{app-hS6MBhCw.js → app-B0bANDrM.js} +1891 -1404
  14. package/dist/app.js +1 -1
  15. package/dist/{dayjs.min-DFcH-XYr.js → dayjs.min-DdUO0d-2.js} +1 -1
  16. package/dist/{employee-fBtBUEwZ.js → employee-DJDUT0Wj.js} +3 -3
  17. package/dist/{iteration-D23fqAQH.js → iteration-DqYIXL4P.js} +1 -1
  18. package/dist/{lodash-Cqc7y4P5.js → lodash-BBQT31li.js} +1 -1
  19. package/dist/rule-T7VKkRdN.js +996 -0
  20. package/dist/src/api/report-query/index.d.ts +2 -2
  21. package/dist/src/components/CheckboxInput.vue.d.ts +1 -1
  22. package/dist/src/components/CollapsibleWrapper.vue.d.ts +0 -2
  23. package/dist/src/composables/useBasePermission.d.ts +1 -1
  24. package/dist/src/views/hr/locales/index.d.ts +172 -16
  25. package/dist/src/views/team/components/BasePermission.vue.d.ts +6 -2
  26. package/dist/src/views/team/components/PosRolePermission.vue.d.ts +2 -2
  27. package/dist/src/views/team/locales/index.d.ts +312 -32
  28. package/dist/src/views/team/member/AddMemberForm.vue.d.ts +3 -3
  29. package/dist/style.css +1 -1
  30. package/dist/{timesheet-OfLQjuvO.js → timesheet-DjtuB4we.js} +2 -2
  31. package/dist/tsconfig.app.tsbuildinfo +1 -1
  32. package/dist/{useAppStore-Du6PRBq0.js → useAppStore-CBb-dugK.js} +1 -1
  33. package/dist/useDebounce-B8ZPVS5C.js +15 -0
  34. package/dist/{useLoading-DkTCR5A7.js → useLoading-BCOj8y-t.js} +1 -1
  35. package/dist/useReportPermissions-DyzhBpi8.js +70 -0
  36. package/dist/useSearch-B6WK1LBB.js +15 -0
  37. package/package.json +2 -2
  38. package/dist/CollapsibleWrapper.vue_vue_type_script_setup_true_lang-BLJlmPVa.js +0 -58
  39. package/dist/EmployeeList-oERrzrAd.js +0 -828
  40. package/dist/FormItem.vue_vue_type_script_setup_true_lang-CoorkndT.js +0 -34
  41. package/dist/FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js +0 -49
  42. package/dist/PermissionSetList-CtpaWlVM.js +0 -323
  43. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-B-hvBqE0.js +0 -3439
  44. package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +0 -132
  45. package/dist/RoleList-CDBP2W5v.js +0 -544
  46. package/dist/TeamMemberList-DSzNjP4y.js +0 -996
  47. package/dist/rule-BBJzenE1.js +0 -990
  48. package/dist/team-Dq3VcGNH.js +0 -33
  49. package/dist/useReportPermissions-DhhjBwPs.js +0 -60
  50. package/dist/useSearch-BAPEUu1R.js +0 -15
@@ -0,0 +1,996 @@
1
+ import { g as b, b as v, q as F, s as k, d as H, e as h } from "./iteration-DqYIXL4P.js";
2
+ import { e as I, P as W, d as D, y as j, C as Y, i as J } from "./app-B0bANDrM.js";
3
+ import { s as Z } from "./utils-BZkjJbju.js";
4
+ import { defineStore as V, storeToRefs as z } from "pinia";
5
+ import { ref as S, computed as T } from "vue";
6
+ import { useCoreStore as M } from "@feedmepos/mf-common";
7
+ const B = [
8
+ {
9
+ label: "",
10
+ subject: "order",
11
+ actions: ["update"],
12
+ conditions: {
13
+ operation: "discount",
14
+ adjustment: {
15
+ $lte: 1
16
+ }
17
+ },
18
+ inverted: !1,
19
+ reason: null
20
+ },
21
+ {
22
+ label: "",
23
+ subject: "order",
24
+ actions: ["update"],
25
+ conditions: { operation: "changePrice" },
26
+ inverted: !1,
27
+ reason: null
28
+ },
29
+ {
30
+ label: "",
31
+ subject: "order",
32
+ actions: ["update"],
33
+ conditions: { operation: "void" },
34
+ inverted: !1,
35
+ reason: null
36
+ },
37
+ {
38
+ label: "",
39
+ subject: "order",
40
+ actions: ["update"],
41
+ conditions: { operation: "payment" },
42
+ inverted: !1,
43
+ reason: null
44
+ },
45
+ {
46
+ label: "",
47
+ subject: "order",
48
+ actions: ["update"],
49
+ conditions: { operation: "claimDeposit" },
50
+ inverted: !1,
51
+ reason: null
52
+ },
53
+ {
54
+ label: "",
55
+ subject: "order",
56
+ actions: ["update"],
57
+ conditions: { operation: "resend" },
58
+ inverted: !1,
59
+ reason: null
60
+ },
61
+ {
62
+ label: "",
63
+ subject: "order",
64
+ actions: ["update"],
65
+ conditions: { operation: "changePaymentType" },
66
+ inverted: !1,
67
+ reason: null
68
+ },
69
+ {
70
+ label: "",
71
+ subject: "refund",
72
+ actions: ["create"],
73
+ conditions: null,
74
+ inverted: !1,
75
+ reason: null
76
+ },
77
+ {
78
+ label: "",
79
+ subject: "counter",
80
+ actions: ["manage"],
81
+ conditions: null,
82
+ inverted: !1,
83
+ reason: null
84
+ },
85
+ {
86
+ label: "",
87
+ subject: "mallIntegration",
88
+ actions: ["manage"],
89
+ conditions: null,
90
+ inverted: !1,
91
+ reason: null
92
+ },
93
+ {
94
+ label: "",
95
+ subject: "drawer",
96
+ actions: ["manage"],
97
+ conditions: null,
98
+ inverted: !1,
99
+ reason: null
100
+ },
101
+ {
102
+ label: "",
103
+ subject: "menu",
104
+ actions: ["manage"],
105
+ conditions: null,
106
+ inverted: !1,
107
+ reason: null
108
+ },
109
+ {
110
+ label: "",
111
+ subject: "inventory",
112
+ actions: ["manage"],
113
+ conditions: null,
114
+ inverted: !1,
115
+ reason: null
116
+ },
117
+ {
118
+ label: "",
119
+ subject: "deposit",
120
+ actions: ["manage"],
121
+ conditions: null,
122
+ inverted: !1,
123
+ reason: null
124
+ },
125
+ {
126
+ label: "",
127
+ subject: "delivery",
128
+ actions: ["manage"],
129
+ conditions: null,
130
+ inverted: !1,
131
+ reason: null
132
+ },
133
+ {
134
+ label: "",
135
+ subject: "counterRecord",
136
+ actions: ["manage"],
137
+ conditions: null,
138
+ inverted: !1,
139
+ reason: null
140
+ },
141
+ {
142
+ label: "",
143
+ subject: "restaurantSetting",
144
+ actions: ["manage"],
145
+ conditions: null,
146
+ inverted: !1,
147
+ reason: null
148
+ },
149
+ {
150
+ label: "",
151
+ subject: "display",
152
+ actions: ["manage"],
153
+ conditions: null,
154
+ inverted: !1,
155
+ reason: null
156
+ },
157
+ {
158
+ label: "",
159
+ subject: "printer",
160
+ actions: ["manage"],
161
+ conditions: null,
162
+ inverted: !1,
163
+ reason: null
164
+ },
165
+ {
166
+ label: "",
167
+ subject: "table",
168
+ actions: ["manage"],
169
+ conditions: null,
170
+ inverted: !1,
171
+ reason: null
172
+ },
173
+ {
174
+ label: "",
175
+ subject: "employee",
176
+ actions: ["manage"],
177
+ conditions: null,
178
+ inverted: !1,
179
+ reason: null
180
+ },
181
+ {
182
+ label: "",
183
+ subject: "system",
184
+ actions: ["manage"],
185
+ conditions: null,
186
+ inverted: !1,
187
+ reason: null
188
+ },
189
+ {
190
+ label: "",
191
+ subject: "tax",
192
+ actions: ["manage"],
193
+ conditions: null,
194
+ inverted: !1,
195
+ reason: null
196
+ },
197
+ {
198
+ label: "",
199
+ subject: "paymentType",
200
+ actions: ["manage"],
201
+ conditions: null,
202
+ inverted: !1,
203
+ reason: null
204
+ },
205
+ {
206
+ label: "",
207
+ subject: "faceId",
208
+ actions: ["manage"],
209
+ conditions: null,
210
+ inverted: !1,
211
+ reason: null
212
+ },
213
+ {
214
+ label: "",
215
+ subject: "report",
216
+ actions: ["read"],
217
+ conditions: { name: "closeup" },
218
+ inverted: !1,
219
+ reason: ""
220
+ },
221
+ {
222
+ label: "",
223
+ subject: "report",
224
+ actions: ["read"],
225
+ conditions: { name: "counter" },
226
+ inverted: !1,
227
+ reason: ""
228
+ },
229
+ {
230
+ label: "",
231
+ subject: "report",
232
+ actions: ["read"],
233
+ conditions: { name: "hourlySales" },
234
+ inverted: !1,
235
+ reason: ""
236
+ },
237
+ {
238
+ label: "",
239
+ subject: "report",
240
+ actions: ["read"],
241
+ conditions: { name: "dailySales" },
242
+ inverted: !1,
243
+ reason: ""
244
+ },
245
+ {
246
+ label: "",
247
+ subject: "report",
248
+ actions: ["read"],
249
+ conditions: { name: "productSales" },
250
+ inverted: !1,
251
+ reason: ""
252
+ },
253
+ {
254
+ label: "",
255
+ subject: "report",
256
+ actions: ["read"],
257
+ conditions: { name: "sourceProductSales" },
258
+ inverted: !1,
259
+ reason: ""
260
+ },
261
+ {
262
+ label: "",
263
+ subject: "report",
264
+ actions: ["read"],
265
+ conditions: { name: "userProductSales" },
266
+ inverted: !1,
267
+ reason: ""
268
+ },
269
+ {
270
+ label: "",
271
+ subject: "report",
272
+ actions: ["read"],
273
+ conditions: { name: "categorySales" },
274
+ inverted: !1,
275
+ reason: ""
276
+ },
277
+ {
278
+ label: "",
279
+ subject: "report",
280
+ actions: ["read"],
281
+ conditions: { name: "addonSales" },
282
+ inverted: !1,
283
+ reason: ""
284
+ },
285
+ {
286
+ label: "",
287
+ subject: "report",
288
+ actions: ["read"],
289
+ conditions: { name: "slotSales" },
290
+ inverted: !1,
291
+ reason: ""
292
+ },
293
+ {
294
+ label: "",
295
+ subject: "report",
296
+ actions: ["read"],
297
+ conditions: { name: "drawer" },
298
+ inverted: !1,
299
+ reason: ""
300
+ },
301
+ {
302
+ label: "",
303
+ subject: "report",
304
+ actions: ["read"],
305
+ conditions: { name: "discount" },
306
+ inverted: !1,
307
+ reason: ""
308
+ },
309
+ {
310
+ label: "",
311
+ subject: "report",
312
+ actions: ["read"],
313
+ conditions: { name: "refund" },
314
+ inverted: !1,
315
+ reason: ""
316
+ },
317
+ {
318
+ label: "",
319
+ subject: "report",
320
+ actions: ["read"],
321
+ conditions: { name: "void" },
322
+ inverted: !1,
323
+ reason: ""
324
+ },
325
+ {
326
+ label: "",
327
+ subject: "report",
328
+ actions: ["read"],
329
+ conditions: { name: "timesheet" },
330
+ inverted: !1,
331
+ reason: ""
332
+ },
333
+ {
334
+ label: "",
335
+ subject: "report",
336
+ actions: ["read"],
337
+ conditions: { name: "counterPayment" },
338
+ inverted: !1,
339
+ reason: ""
340
+ }
341
+ ], A = "/permission-sets", O = {
342
+ async read() {
343
+ return b(await v().get(A));
344
+ },
345
+ async create(e) {
346
+ return b(await v().post(A, e));
347
+ },
348
+ async update(e, s) {
349
+ return b(await v().put(`${A}/${e}`, s));
350
+ },
351
+ async delete(e) {
352
+ return b(await v().delete(`${A}/${e}`));
353
+ }
354
+ }, q = V("permissionSet", () => {
355
+ const { currentBusiness: e } = M(), s = S([]), n = S(null);
356
+ async function o() {
357
+ var l;
358
+ const c = ((l = e.value) == null ? void 0 : l._id) ?? null;
359
+ if (n.value === c) return;
360
+ const u = await O.read();
361
+ s.value = r(u), n.value = c;
362
+ }
363
+ async function i(c) {
364
+ const u = await O.create(c);
365
+ s.value = r([...s.value, u]);
366
+ }
367
+ async function t(c, u) {
368
+ const l = await O.update(c, u);
369
+ s.value = r(s.value.map((d) => d.id === c ? l : d));
370
+ }
371
+ async function a(c) {
372
+ await O.delete(c), s.value = r(s.value.filter((u) => u.id !== c));
373
+ }
374
+ function r(c) {
375
+ return c.sort((u, l) => u.name.localeCompare(l.name));
376
+ }
377
+ return {
378
+ permissionSets: s,
379
+ readPermissionSets: o,
380
+ createPermissionSet: i,
381
+ updatePermissionSet: t,
382
+ deletePermissionSet: a
383
+ };
384
+ }), ee = () => {
385
+ const e = q();
386
+ return {
387
+ ...e,
388
+ ...z(e)
389
+ };
390
+ };
391
+ function K(e) {
392
+ const s = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), o = (i, t, a) => {
393
+ var r, c;
394
+ const u = `${t.subject}::${JSON.stringify([...t.actions].sort())}`, l = i.get(u);
395
+ if (!l) {
396
+ i.set(u, { ...t, setNames: [a.name], setId: a._id });
397
+ return;
398
+ }
399
+ if (l.setNames.push(a.name), l.conditions && t.conditions) {
400
+ const d = typeof l.conditions == "string" ? JSON.parse(l.conditions) : l.conditions, p = typeof t.conditions == "string" ? JSON.parse(t.conditions) : t.conditions;
401
+ for (const m in p)
402
+ (r = d[m]) != null && r.$in && (c = p[m]) != null && c.$in ? d[m].$in = Array.from(/* @__PURE__ */ new Set([...d[m].$in, ...p[m].$in])) : d[m] || (d[m] = p[m]);
403
+ l.conditions = JSON.stringify(d);
404
+ }
405
+ };
406
+ for (const i of e)
407
+ for (const t of i.permissions)
408
+ o(t.inverted ? n : s, t, i);
409
+ return [...Array.from(s.values()), ...Array.from(n.values())];
410
+ }
411
+ function U(e, s) {
412
+ return `${e}::${[...s].sort().join(",")}`;
413
+ }
414
+ function X(e, s) {
415
+ const n = [...e], o = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
416
+ for (const r of e) {
417
+ const c = I(r.subject);
418
+ o.add(U(c, r.actions)), r.inverted && r.actions.includes("manage") && i.add(`set_${c}`), !r.inverted && r.actions.includes("manage") && t.add(c);
419
+ }
420
+ const a = [...e];
421
+ for (; a.length > 0; ) {
422
+ const r = a.shift(), c = `set_${I(r.subject)}`, u = s[c];
423
+ if (!u || i.has(c) || !r.actions.includes("manage") || r.inverted) continue;
424
+ i.add(c);
425
+ const l = se(r);
426
+ r.source && !r.source.trace && (r.source = { ...r.source, trace: l });
427
+ const d = [...l, `${u.name} (system)`];
428
+ for (const p of u.permissions ?? []) {
429
+ const m = I(p.subject), f = U(m, p.actions);
430
+ o.has(f) || t.has(m) || (o.add(f), n.push({
431
+ ...p,
432
+ // FdoPermissionRule.fields is string[] | null; RawRule expects string[] | undefined
433
+ fields: p.fields ?? void 0,
434
+ source: {
435
+ type: "systemPermissionSet",
436
+ permissionSetId: u.key,
437
+ permissionSetName: u.name,
438
+ trace: d
439
+ }
440
+ }));
441
+ }
442
+ for (const p of u.permissionSets ?? []) {
443
+ const m = I(p), f = U(m, ["manage"]), g = {
444
+ subject: m,
445
+ actions: ["manage"],
446
+ source: {
447
+ type: "systemPermissionSet",
448
+ permissionSetId: u.key,
449
+ permissionSetName: u.name,
450
+ trace: d
451
+ }
452
+ };
453
+ o.has(f) || (o.add(f), n.push(g)), a.push(g);
454
+ }
455
+ }
456
+ return [...n.filter((r) => !r.inverted), ...n.filter((r) => r.inverted)];
457
+ }
458
+ function se(e) {
459
+ if (!e.source) return [];
460
+ const { type: s, trace: n, permissionSetName: o } = e.source;
461
+ if (n && n.length > 0) return n;
462
+ switch (s) {
463
+ case "permissionSet":
464
+ return o ? [o] : [];
465
+ case "custom":
466
+ return ["custom"];
467
+ default:
468
+ return [];
469
+ }
470
+ }
471
+ function Q(e, s, n = /* @__PURE__ */ new Set()) {
472
+ var i;
473
+ const o = [];
474
+ for (const t of e) {
475
+ if (n.has(t)) continue;
476
+ n.add(t);
477
+ const a = s.find((r) => r.id === t);
478
+ a && (o.push(a), (i = a.permissionSetIds) != null && i.length && o.push(...Q(a.permissionSetIds, s, n)));
479
+ }
480
+ return o;
481
+ }
482
+ function ye(e) {
483
+ const s = K(e).map(
484
+ ({ setNames: i, setId: t, ...a }) => a
485
+ ), n = s.filter((i) => !i.inverted), o = s.filter((i) => i.inverted);
486
+ return L(n, o);
487
+ }
488
+ function Pe(e, s, n) {
489
+ const o = /* @__PURE__ */ new Map();
490
+ return e.forEach(
491
+ ({ name: i, permissions: t }) => t.forEach(({ conditions: a, actions: r }) => {
492
+ var u, l;
493
+ const c = JSON.parse(a || "{}");
494
+ (u = c[s]) != null && u.$in ? (l = c[s]) == null || l.$in.forEach(
495
+ (d) => (o.get(d) ?? o.set(d, /* @__PURE__ */ new Set()).get(d)).add(i)
496
+ ) : r[0] === "manage" && n.forEach((d) => {
497
+ (o.get(d) ?? o.set(d, /* @__PURE__ */ new Set()).get(d)).add(i);
498
+ });
499
+ })
500
+ ), [...o].map(([i, t]) => ({
501
+ id: i,
502
+ setNames: [...t]
503
+ }));
504
+ }
505
+ function we(e, s) {
506
+ const n = (r, c) => {
507
+ const u = { ...r }, l = JSON.parse(u.conditions || "{}");
508
+ if (c)
509
+ if (c.length > 0) {
510
+ const d = Object.keys(l)[0];
511
+ l[d].$in = c;
512
+ } else
513
+ delete u.conditions;
514
+ return {
515
+ ...u,
516
+ inverted: !0,
517
+ ...u.conditions && { conditions: JSON.stringify(l) }
518
+ };
519
+ }, o = new Map(e.map((r) => [r.subject, r])), i = new Map(s.map((r) => [r.subject, r])), t = [], a = /* @__PURE__ */ new Set([...o.keys(), ...i.keys()]);
520
+ for (const r of a) {
521
+ const c = o.get(r), u = i.get(r);
522
+ if (c && u) {
523
+ if (c.conditions && u.conditions) {
524
+ const l = JSON.parse(c.conditions), d = JSON.parse(u.conditions), p = Object.keys(l)[0], m = l[p].$in.filter(
525
+ (g) => !d[p].$in.includes(g)
526
+ );
527
+ m.length > 0 && t.push(n(c, m)), d[p].$in.filter(
528
+ (g) => !l[p].$in.includes(g)
529
+ ).length > 0 && t.push(u);
530
+ } else if (!c.conditions && u.conditions)
531
+ t.push(u);
532
+ else if (!c.conditions && !u.conditions) {
533
+ const l = new Set(c.actions), d = new Set(u.actions), p = u.actions.some((f) => !l.has(f)), m = c.actions.filter((f) => !d.has(f));
534
+ if (p) {
535
+ const f = u.actions.filter((g) => !l.has(g));
536
+ t.push({
537
+ ...u,
538
+ actions: f
539
+ });
540
+ }
541
+ m.length > 0 && t.push({
542
+ ...c,
543
+ actions: m,
544
+ inverted: !0
545
+ });
546
+ }
547
+ continue;
548
+ }
549
+ if (c) {
550
+ t.push(
551
+ n(
552
+ c,
553
+ // If base has conditions, set diffIds to empty array, disallow all access to collection
554
+ // otherwise, invert directly
555
+ c.conditions && []
556
+ )
557
+ );
558
+ continue;
559
+ }
560
+ u && t.push(u);
561
+ }
562
+ return t;
563
+ }
564
+ function $e(e) {
565
+ const s = X(
566
+ e,
567
+ W
568
+ ), n = new Set(
569
+ s.filter((i) => {
570
+ var t;
571
+ return ((t = i.source) == null ? void 0 : t.type) === "systemPermissionSet" && !i.inverted;
572
+ }).map((i) => i.subject)
573
+ ), o = new Set(
574
+ s.filter(
575
+ (i) => {
576
+ var t;
577
+ return ((t = i.source) == null ? void 0 : t.type) === "systemPermissionSet" && !i.inverted && i.actions.includes("manage");
578
+ }
579
+ ).map((i) => i.subject)
580
+ );
581
+ return e.filter((i) => i.inverted ? !(n.has(i.subject) && !o.has(i.subject)) : !n.has(i.subject));
582
+ }
583
+ const ne = "business::report::";
584
+ function Re(e, s) {
585
+ const n = [], o = e.filter((i) => {
586
+ const t = i.subject;
587
+ return !t.startsWith(ne) || s.has(t) ? !0 : (n.push(t), !1);
588
+ });
589
+ return n.length > 0 && console.warn("[filterStalePermissions] dropped stale report permissions:", n), o;
590
+ }
591
+ const te = "business::report::reports::", oe = "business::report::allDefaultReports", ie = "business::report::allCustomReports";
592
+ function Ie(e, s) {
593
+ const n = e.find(
594
+ (a) => !a.inverted && a.subject === oe
595
+ ), o = e.find(
596
+ (a) => !a.inverted && a.subject === ie
597
+ );
598
+ if (!n && !o) return e;
599
+ const i = n ? new Set(n.actions) : null, t = o ? new Set(o.actions) : null;
600
+ return e.reduce((a, r) => {
601
+ if (r.inverted)
602
+ return a.push(r), a;
603
+ const c = r.subject;
604
+ if (!c.startsWith(te))
605
+ return a.push(r), a;
606
+ const l = s.has(c) ? i : t;
607
+ if (!l)
608
+ return a.push(r), a;
609
+ if (l.has("manage")) return a;
610
+ const d = new Set(r.actions), p = d.has("manage");
611
+ let m = !1;
612
+ for (const f of l)
613
+ f !== "manage" && d.delete(f) && (m = !0);
614
+ return p && m && d.delete("manage"), d.size === 0 || a.push({ ...r, actions: Array.from(d) }), a;
615
+ }, []);
616
+ }
617
+ function L(e, s) {
618
+ var o, i;
619
+ const n = new Map(e.map((t) => [t.subject, t]));
620
+ for (const t of s) {
621
+ if (t.inverted) {
622
+ const r = n.get(t.subject);
623
+ if (t.conditions) {
624
+ if (r != null && r.conditions) {
625
+ const c = JSON.parse(r.conditions), u = JSON.parse(t.conditions), l = Object.keys(u)[0], d = ((o = u[l]) == null ? void 0 : o.$in) ?? [], m = (((i = c[l]) == null ? void 0 : i.$in) ?? []).filter((f) => !d.includes(f));
626
+ m.length > 0 ? n.set(t.subject, {
627
+ ...r,
628
+ conditions: JSON.stringify({ [l]: { $in: m } })
629
+ }) : n.delete(t.subject);
630
+ } else
631
+ n.delete(t.subject);
632
+ continue;
633
+ }
634
+ if (r) {
635
+ const c = new Set(t.actions), u = r.actions.filter((l) => !c.has(l));
636
+ u.length > 0 ? n.set(t.subject, { ...r, actions: u }) : n.delete(t.subject);
637
+ continue;
638
+ }
639
+ continue;
640
+ }
641
+ if (t.conditions) {
642
+ n.set(t.subject, t);
643
+ continue;
644
+ }
645
+ const a = n.get(t.subject);
646
+ if (a) {
647
+ const r = [
648
+ .../* @__PURE__ */ new Set([
649
+ ...a.actions,
650
+ ...t.actions
651
+ ])
652
+ ];
653
+ n.set(t.subject, { ...a, actions: r });
654
+ } else
655
+ n.set(t.subject, t);
656
+ }
657
+ return Array.from(n.values());
658
+ }
659
+ function re(e, s) {
660
+ const n = L(e, s), o = new Set(e.map((t) => t.subject)), i = s.filter(
661
+ (t) => t.inverted && !o.has(t.subject)
662
+ );
663
+ return [...n, ...i];
664
+ }
665
+ const y = "/permission-assignments", P = {
666
+ async readAll() {
667
+ return b(await v().get(y));
668
+ },
669
+ async readByUserId(e) {
670
+ return b(await v().get(`${y}/user/${e}`));
671
+ },
672
+ async readById(e) {
673
+ return b(await v().get(`${y}/${e}`));
674
+ },
675
+ async create(e) {
676
+ return b(await v().post(y, e));
677
+ },
678
+ async update(e, s) {
679
+ return b(await v().put(`${y}/${e}`, s));
680
+ },
681
+ async delete(e) {
682
+ return b(await v().delete(`${y}/${e}`));
683
+ },
684
+ async addReportManagePermission(e, s) {
685
+ return b(
686
+ await v().post("/my-permissions/report-manage", { permissionKey: e, label: s })
687
+ );
688
+ }
689
+ }, ae = V("permissionAssignment", () => {
690
+ const e = S([]);
691
+ async function s() {
692
+ const r = await P.readAll();
693
+ e.value = r;
694
+ }
695
+ async function n(r) {
696
+ return await P.readByUserId(r);
697
+ }
698
+ async function o(r) {
699
+ const c = await P.create(r);
700
+ e.value = [...e.value, c];
701
+ }
702
+ async function i(r, c) {
703
+ const u = await P.update(r, c);
704
+ e.value = e.value.map((l) => l.id === r ? u : l);
705
+ }
706
+ async function t(r) {
707
+ await P.delete(r), e.value = e.value.filter((c) => c.id !== r);
708
+ }
709
+ function a(r) {
710
+ return e.value.find((c) => c.userId === r);
711
+ }
712
+ return {
713
+ permissionAssignments: e,
714
+ readPermissionAssignments: s,
715
+ readPermissionAssignmentByUserId: n,
716
+ createPermissionAssignment: o,
717
+ updatePermissionAssignment: i,
718
+ deletePermissionAssignment: t,
719
+ getPermissionAssignmentByUserId: a
720
+ };
721
+ }), ce = () => {
722
+ const e = ae();
723
+ return {
724
+ ...e,
725
+ ...z(e)
726
+ };
727
+ }, ue = {
728
+ async fetchReportPermissions(e, s) {
729
+ const n = s ? { lang: s } : {};
730
+ return b(
731
+ await F().get(`/report-query/hrm/${e}/reports`, { params: n })
732
+ );
733
+ },
734
+ async fetchReportPermissionsForPortal(e, s) {
735
+ const n = s ? { isSupportPos: !1, lang: s } : { isSupportPos: !1 };
736
+ return b(
737
+ await F().get(`/report-query/hrm/${e}/reports`, { params: n })
738
+ );
739
+ }
740
+ }, _ = S([]), E = S(!1), w = S(!1), $ = S(null), x = S(null), C = S(!1);
741
+ function le() {
742
+ const e = M();
743
+ async function s() {
744
+ var t;
745
+ const o = (t = e.currentBusiness.value) == null ? void 0 : t.id;
746
+ if (!o) return;
747
+ const i = localStorage.getItem("locale");
748
+ if ($.value !== o && (_.value = [], E.value = !1, w.value = !1, $.value = o, C.value = !1), !(E.value && x.value === i)) {
749
+ if (w.value) {
750
+ C.value = !0;
751
+ return;
752
+ }
753
+ w.value = !0;
754
+ try {
755
+ const a = await ue.fetchReportPermissionsForPortal(o, i);
756
+ if ($.value !== o) return;
757
+ _.value = a, E.value = !0, x.value = i;
758
+ } catch (a) {
759
+ if ($.value !== o) return;
760
+ console.warn("Failed to fetch custom report permissions:", a), _.value = [];
761
+ } finally {
762
+ $.value === o && (w.value = !1, C.value && (C.value = !1, await s()));
763
+ }
764
+ }
765
+ }
766
+ const n = T(() => _.value.map(
767
+ (o) => o.isDefault ? {
768
+ label: o.name,
769
+ subject: `business::report::reports::${o.permissionKey}`,
770
+ actions: [j.manage, j.read, j.create],
771
+ category: D.reports
772
+ } : {
773
+ label: o.name,
774
+ subject: `business::report::reports::${o.permissionKey}`,
775
+ actions: [
776
+ j.manage,
777
+ j.read,
778
+ j.create,
779
+ j.update,
780
+ j.delete
781
+ ],
782
+ category: D.customReports
783
+ }
784
+ ));
785
+ return {
786
+ fetchCustomReportPermissions: s,
787
+ customReportPermissions: n,
788
+ isLoading: T(() => w.value),
789
+ isLoaded: T(() => E.value)
790
+ };
791
+ }
792
+ function R(e) {
793
+ const s = M(), n = ee(), o = ce(), i = s.restaurants, { customReportPermissions: t } = le(), a = o.getPermissionAssignmentByUserId(e.id), r = Q(
794
+ (a == null ? void 0 : a.permissionSetIds) ?? [],
795
+ n.permissionSets.value
796
+ ), c = K(r).map(
797
+ ({ setNames: f, ...g }) => g
798
+ ), u = a == null ? void 0 : a.customPermissions, l = u ?? e.permissions.map((f) => ({
799
+ ...f,
800
+ subject: I(f.subject)
801
+ })), d = L(c, l), p = X(
802
+ re(c, l),
803
+ W
804
+ ).filter((f) => !f.inverted), m = me(p) || i.value.map((f) => f._id);
805
+ return {
806
+ doc: e,
807
+ id: e.id,
808
+ name: e.name && e.name !== e.email && e.name !== e.phoneNumber ? e.name : "-",
809
+ phoneNumber: e.phoneNumber,
810
+ email: e.email,
811
+ restaurants: k(
812
+ m.map(
813
+ (f) => {
814
+ var g;
815
+ return ((g = i.value.find((G) => G._id === f)) == null ? void 0 : g.profile.name) ?? "";
816
+ }
817
+ )
818
+ ),
819
+ managableRestaurantIds: m,
820
+ permissionLabels: pe(p, t.value),
821
+ permissions: d
822
+ };
823
+ }
824
+ const de = Object.freeze(
825
+ Object.values(Y)
826
+ ), Ae = {
827
+ async readTeamMembers() {
828
+ return b(
829
+ await v().get("/portal-users")
830
+ ).map(R);
831
+ },
832
+ async readTeamMembersPage(e) {
833
+ var n, o;
834
+ const s = b(
835
+ await v().get("/portal-users/paged", {
836
+ params: {
837
+ limit: e.limit,
838
+ offset: e.offset,
839
+ search: e.search,
840
+ restaurantIds: (n = e.restaurantIds) != null && n.length ? e.restaurantIds : void 0,
841
+ permissionSubjects: (o = e.permissionSubjects) != null && o.length ? e.permissionSubjects : void 0
842
+ }
843
+ })
844
+ );
845
+ return {
846
+ items: s.items.map(R),
847
+ total: s.total
848
+ };
849
+ },
850
+ async readTeamMember(e) {
851
+ return R(
852
+ b(await v().get(`/portal-users/${e}`))
853
+ );
854
+ },
855
+ async createTeamMember(e) {
856
+ return R(
857
+ b(await v().post("/portal-users", e))
858
+ );
859
+ },
860
+ async updateTeamMember(e, s) {
861
+ return R(
862
+ b(await v().put(`/portal-users/${e}`, s))
863
+ );
864
+ },
865
+ async deleteTeamMember(e) {
866
+ return b(await v().delete(`/portal-users/${e}`));
867
+ },
868
+ async readTeamMemberPosUserIds() {
869
+ return b(await v().get("/portal-users")).map((s) => s.posUserId);
870
+ }
871
+ };
872
+ function Oe(e, s, n) {
873
+ if (e.some((a) => a.subject === "all")) return "All";
874
+ const o = (n ?? B).filter(
875
+ (a) => a.subject === s
876
+ ), i = new Set(o.map((a) => N(a).value)), t = e.filter((a) => a.subject === s).filter((a) => i.has(N(a).value));
877
+ return t.length === o.length ? "All" : t.length === 0 ? "-" : `${t.length} permission allow`;
878
+ }
879
+ function N(e) {
880
+ const s = H(e), n = s.subject;
881
+ return {
882
+ ...s,
883
+ get conditions() {
884
+ return typeof s.conditions == "string" ? JSON.parse(s.conditions) : s.conditions;
885
+ },
886
+ get isDiscountOperation() {
887
+ var o;
888
+ return n === h.F_RULE_SUBJECT.enum.order && ((o = this.conditions) == null ? void 0 : o.operation) === h.F_RULE_ORDER_OPERATION.enum.discount;
889
+ },
890
+ get isOrderOperation() {
891
+ return n === h.F_RULE_SUBJECT.enum.order;
892
+ },
893
+ get isReportPermission() {
894
+ return n === h.F_RULE_SUBJECT.enum.report;
895
+ },
896
+ get formatted() {
897
+ const o = (i) => i.endsWith("_") ? i.slice(0, i.length - 1) : i;
898
+ return this.isOrderOperation ? o(this.conditions.operation) : this.isReportPermission ? o(this.conditions.name) : n.toString();
899
+ },
900
+ get label() {
901
+ return s.label || Z(this.formatted);
902
+ },
903
+ get value() {
904
+ return this.isOrderOperation ? `${n}:${this.conditions.operation}` : this.isReportPermission ? `${n}:${this.conditions.name}` : n.toString();
905
+ }
906
+ };
907
+ }
908
+ function _e(e) {
909
+ const s = e.map((n) => N(n)).find((n) => n.isDiscountOperation);
910
+ return s ? parseInt((s.conditions.adjustment.$lte * 100).toFixed(0)) : 100;
911
+ }
912
+ function me(e) {
913
+ const s = e.find(
914
+ (n) => n.subject === J.Subject.Restaurant.restaurant
915
+ );
916
+ return s ? s.conditions ? JSON.parse(s.conditions).restaurantId.$in : null : [];
917
+ }
918
+ function Ee(e) {
919
+ return (e == null ? void 0 : e.some((s) => s.subject === "all")) ?? !1;
920
+ }
921
+ function Ce(e) {
922
+ const s = e.find((n) => n.subject === J.Subject.Business.role);
923
+ return s ? s.conditions ? JSON.parse(s.conditions).roleId.$in : null : [];
924
+ }
925
+ function Ne(e, s) {
926
+ return e.map((n) => {
927
+ const o = fe(n);
928
+ return {
929
+ subject: o.subject,
930
+ actions: o.actions,
931
+ conditions: {
932
+ ...o.conditions,
933
+ adjustment: o.isDiscountOperation ? { $lte: parseFloat((s / 100).toFixed(2)) } : void 0
934
+ }
935
+ };
936
+ });
937
+ }
938
+ function fe(e) {
939
+ const [s, n] = e.split(":");
940
+ let o;
941
+ return n ? (o = B.find(
942
+ (i) => i.subject === s && [
943
+ (typeof i.conditions == "object" ? i.conditions : JSON.parse(i.conditions)).operation,
944
+ i.conditions.name
945
+ ].includes(n)
946
+ ), !o && s === h.F_RULE_SUBJECT.enum.report && (o = {
947
+ label: "",
948
+ subject: h.F_RULE_SUBJECT.enum.report,
949
+ actions: ["read"],
950
+ conditions: { name: n },
951
+ inverted: !1,
952
+ reason: ""
953
+ })) : o = B.find((i) => i.subject === s), N(o || { subject: h.F_RULE_SUBJECT.enum.order, actions: [], label: "" });
954
+ }
955
+ function pe(e, s = []) {
956
+ return k(
957
+ e.reduce((n, o) => {
958
+ const i = de.find(
959
+ (t) => t.subject === o.subject && o.actions.includes("manage")
960
+ ) || s.find((t) => t.subject === o.subject);
961
+ if (i) {
962
+ const t = i.subject === J.Subject.Business.inventory_stock ? "Warehouse Management" : i.label;
963
+ n.push(t);
964
+ }
965
+ return n;
966
+ }, [])
967
+ );
968
+ }
969
+ export {
970
+ X as $,
971
+ ue as R,
972
+ Oe as a,
973
+ re as b,
974
+ Q as c,
975
+ le as d,
976
+ B as e,
977
+ Ne as f,
978
+ _e as g,
979
+ Ee as h,
980
+ ne as i,
981
+ Ce as j,
982
+ Re as k,
983
+ Ie as l,
984
+ ye as m,
985
+ we as n,
986
+ ce as o,
987
+ de as p,
988
+ pe as q,
989
+ N as r,
990
+ $e as s,
991
+ Ae as t,
992
+ ee as u,
993
+ K as v,
994
+ Pe as w,
995
+ me as x
996
+ };