@feedmepos/mf-connect 0.0.16-beta.10 → 0.0.16-beta.12

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 (85) hide show
  1. package/dist/{Analytic-BVk0jPDU.js → Analytic-DIc9BYb0.js} +32 -20
  2. package/dist/{App-BbAalq1k.js → App-BzzL9_Jw.js} +33 -27
  3. package/dist/Broadcast-dVPgK5QV.js +223 -0
  4. package/dist/{CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DiU3MnH0.js → CampaignTypeDialog.vue_vue_type_script_setup_true_lang-TnEPvafD.js} +18 -11
  5. package/dist/{Card-B5in1RMa.js → Card-Bj2Yd2pr.js} +178 -158
  6. package/dist/ChipMenu.vue_vue_type_script_setup_true_lang-BPpZZNkr.js +97 -0
  7. package/dist/Collections-Fkb_zzqZ.js +453 -0
  8. package/dist/{Credit-Bc9EzdsC.js → Credit-DHn9OkE8.js} +78 -69
  9. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-C1ZXQski.js +2788 -0
  10. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-D6mWny8y.js +344 -0
  11. package/dist/{Experience-CgKak5ik.js → Experience-DX3aJihS.js} +64 -55
  12. package/dist/{Game-QhfKqrN_.js → Game-CcVQvETd.js} +54 -45
  13. package/dist/ImageInput.vue_vue_type_script_setup_true_lang-rWUkV9gn.js +144 -0
  14. package/dist/JsonViewer-v8_C7l5N.js +87 -0
  15. package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-CyGJxUol.js +18737 -0
  16. package/dist/MainLayout-B1aJoR95.js +41 -0
  17. package/dist/{Marketing-CSx4N7UJ.js → Marketing-B9kykWEh.js} +79 -72
  18. package/dist/{Member-CY6WMD8D.js → Member-RoJSCSC5.js} +25 -22
  19. package/dist/{MemberList-8iRwm7Sz.js → MemberList-BUDxqMEK.js} +321 -307
  20. package/dist/{MemberTransactions-CknqkWO3.js → MemberTransactions-Bh_tT1Rp.js} +1 -1
  21. package/dist/MessageInput.vue_vue_type_script_setup_true_lang-Cj3-JHOX.js +432 -0
  22. package/dist/{Mission-BTy1p7lU.js → Mission-DDvgCLy0.js} +50 -40
  23. package/dist/{Point-A6B_ggSy.js → Point-BbPkt4kF.js} +67 -58
  24. package/dist/Promotion-DEo-lxpX.js +221 -0
  25. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-BGjeTeqS.js +1751 -0
  26. package/dist/{Segment-CFVXtyEj.js → Segment-DAcpZWIN.js} +145 -130
  27. package/dist/{Setting-Jmtw-_DV.js → Setting-CgXohUPt.js} +167 -154
  28. package/dist/{Store-DQypT-7e.js → Store-BVyHbQ8o.js} +504 -489
  29. package/dist/{StoreRewards-M-utm0iI.js → StoreRewards-sccMDbkj.js} +124 -108
  30. package/dist/{StoreTransactions.vue_vue_type_script_setup_true_lang-B60mQ5kq.js → StoreTransactions.vue_vue_type_script_setup_true_lang--sdQ_l8g.js} +131 -123
  31. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-CXlkvt2u.js +139 -0
  32. package/dist/{Tier-D1jymeLK.js → Tier--P27XXbB.js} +144 -125
  33. package/dist/{Title-DN9DIP2k.js → Title-B27S3SxD.js} +107 -90
  34. package/dist/{Transaction-BAJvAoU6.js → Transaction-CYTtwwHY.js} +2 -2
  35. package/dist/Voucher-BZ8PKgO5.js +488 -0
  36. package/dist/ZodTextField.vue_vue_type_script_setup_true_lang-CWt4tVdk.js +55 -0
  37. package/dist/_commonjsHelpers-BkfeUUK-.js +28 -0
  38. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  39. package/dist/app-CnKzqAcN.js +53428 -0
  40. package/dist/app-FfENBuoE.js +5381 -0
  41. package/dist/app-wDQR6dpb.js +39 -0
  42. package/dist/app.js +2 -1
  43. package/dist/business-CXyP9G7A.js +78 -0
  44. package/dist/campaign-0aM2KYOy.js +96 -0
  45. package/dist/campaign-CpzFl8Vr.js +4 -0
  46. package/dist/collection.fn-FicQhH1t.js +26 -0
  47. package/dist/dto-BiYLkVdL.js +1169 -0
  48. package/dist/effect-Cg-eNEjg.js +61 -0
  49. package/dist/{export-DjeNY5Pc.js → export-D7BuObOL.js} +19 -16
  50. package/dist/helper-DvD-D7c7.js +71 -0
  51. package/dist/index-B1Q0GAWp.js +95 -0
  52. package/dist/index-B4UZgSB-.js +28058 -0
  53. package/dist/index-B6c-fUij.js +203 -0
  54. package/dist/index-BP_5cfKa.js +38 -0
  55. package/dist/index-BRXg5Si1.js +2071 -0
  56. package/dist/index-BuDwICBJ.js +761 -0
  57. package/dist/index-CDMC-8iO.js +94 -0
  58. package/dist/index-CcZt3OrE.js +73 -0
  59. package/dist/index-CuvNtC_M.js +61 -0
  60. package/dist/index-DA-fzkRR.js +1737 -0
  61. package/dist/index-Dbd4WA4r.js +61 -0
  62. package/dist/index-Dkeb_9ER.js +8832 -0
  63. package/dist/index-DmdKoKk_.js +298 -0
  64. package/dist/index-G-88ujCM.js +3 -0
  65. package/dist/loading-uCNeZibp.js +32697 -0
  66. package/dist/lodash-B5I3zXaY.js +3678 -0
  67. package/dist/membership-DFRO9TyM.js +221 -0
  68. package/dist/moment-BWErdI6_.js +2578 -0
  69. package/dist/money-OtkT4Pzp.js +15 -0
  70. package/dist/number-Cg3NCouc.js +12 -0
  71. package/dist/object-qECH92oz.js +26 -0
  72. package/dist/objectId-dwaoBfJX.js +7 -0
  73. package/dist/rule-Ch2HRiGw.js +1973 -0
  74. package/dist/rule-builder-B_M9yvEe.js +89 -0
  75. package/dist/template-1o0LbOoJ.js +190 -0
  76. package/dist/usePagination-BeF5K3M7.js +223 -0
  77. package/dist/vue-i18n-AtGIa4qH.js +2365 -0
  78. package/dist/xlsx-pChq0adn.js +15491 -0
  79. package/dist/zod-W_PvIofQ.js +90 -0
  80. package/package.json +3 -3
  81. package/dist/Collections-CFCZ9YIG.js +0 -4
  82. package/dist/MainLayout-JbHzENFy.js +0 -4
  83. package/dist/app-BpzzygYP.js +0 -87765
  84. package/dist/money-DKGIIplY.js +0 -15
  85. package/dist/number-tPodRxTN.js +0 -12
@@ -0,0 +1,89 @@
1
+ import { l as i } from "./index-Dkeb_9ER.js";
2
+ function a(c, t) {
3
+ let r = "", s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
4
+ const e = s.length;
5
+ for (let n = 0; n < c; n++)
6
+ r += s.charAt(Math.floor(Math.random() * e));
7
+ return r;
8
+ }
9
+ function p(c) {
10
+ return !c.property && "rules" in c;
11
+ }
12
+ function l(c) {
13
+ return "property" in c && !!c.property;
14
+ }
15
+ class o {
16
+ static scaffoldGroup(t) {
17
+ return {
18
+ name: t ?? `g_${a(4)}`,
19
+ rules: {},
20
+ logic: ""
21
+ };
22
+ }
23
+ static scaffoldEntry(t) {
24
+ return {
25
+ name: `r_${a(4)}`,
26
+ property: t ?? "",
27
+ conditions: {},
28
+ negated: !1
29
+ };
30
+ }
31
+ static constructEntry(t, r, s, e) {
32
+ return {
33
+ name: e ?? `e_${a(4)}`,
34
+ property: t,
35
+ conditions: {
36
+ [r]: s
37
+ },
38
+ negated: !1
39
+ };
40
+ }
41
+ static getLogic(t) {
42
+ return (t.logic ?? "").includes("||") ? "||" : "&&";
43
+ }
44
+ static constructLogic(t, r) {
45
+ const s = r ?? o.getLogic(t);
46
+ return Object.entries(t.rules).map(([e, n]) => p(n) ? e : `${n.negated ? "!" : ""}${e}`).join(` ${s} `);
47
+ }
48
+ static setRuleToGroup(t, r, s) {
49
+ let e = i.cloneDeep(t);
50
+ return Object.keys(e.rules).length === 0 && (e = o.scaffoldGroup(e.name)), Array.isArray(r) ? r.forEach((n) => {
51
+ e.rules[n.name] = n;
52
+ }) : e.rules[r.name] = r, e.logic = o.constructLogic(e, s), e;
53
+ }
54
+ static removeEntry(t, r, s) {
55
+ const e = i.cloneDeep(t);
56
+ return delete e.rules[r], e.logic = o.constructLogic(e, s), e;
57
+ }
58
+ static constructRule(t) {
59
+ switch (t.type) {
60
+ case "timeframe": {
61
+ const r = t.property, s = o.scaffoldGroup("timeframe"), e = [];
62
+ return (t.start || t.end) && e.push(
63
+ o.constructEntry(r, "_isBetween", {
64
+ start: t.start || void 0,
65
+ end: t.end || void 0
66
+ })
67
+ ), o.setRuleToGroup(s, e, "&&");
68
+ }
69
+ default:
70
+ throw Error("invalid config type");
71
+ }
72
+ }
73
+ static getRules(t) {
74
+ return t && "rules" in t ? Object.values(t.rules) : [];
75
+ }
76
+ static simplify(t) {
77
+ const [r] = Object.entries(t.conditions);
78
+ return r[0], {
79
+ property: t.property,
80
+ operator: r[0],
81
+ equator: r[1]
82
+ };
83
+ }
84
+ }
85
+ export {
86
+ o as R,
87
+ l as a,
88
+ p as i
89
+ };
@@ -0,0 +1,190 @@
1
+ import { defineComponent as L, openBlock as r, createBlock as C, resolveDynamicComponent as D, unref as e, ref as E, computed as I, onMounted as j, resolveComponent as c, withCtx as d, createElementVNode as l, createElementBlock as w, createVNode as i, normalizeClass as h, createTextVNode as T, Fragment as S, renderList as N, toDisplayString as g, createCommentVNode as M } from "vue";
2
+ import { u as P } from "./campaign-0aM2KYOy.js";
3
+ import { useDialog as q } from "@feedmepos/ui-library";
4
+ import { F as J } from "./index-BRXg5Si1.js";
5
+ import { C as A } from "./collection.fn-FicQhH1t.js";
6
+ import { s as V } from "./index-CuvNtC_M.js";
7
+ import { _ as G } from "./lodash-B5I3zXaY.js";
8
+ import { C as H } from "./dto-BiYLkVdL.js";
9
+ import { J as U } from "./JsonViewer-v8_C7l5N.js";
10
+ const K = /* @__PURE__ */ L({
11
+ __name: "CampaignChip",
12
+ props: {
13
+ type: { type: String, required: !0 }
14
+ },
15
+ setup(u) {
16
+ const a = H[u.type];
17
+ return (o, t) => (r(), C(D(e(a).chip())));
18
+ }
19
+ }), Q = { class: "flex flex-nowrap gap-x-2 grow h-full" }, R = {
20
+ key: 0,
21
+ class: "p-8 w-1/4"
22
+ }, W = { class: "flex flex-col grow p-24" }, X = { class: "space-y-4" }, Y = { class: "fm-typo-en-title-sm-800" }, Z = { class: "grow pb-16 pr-16 pt-6 w-full max-h-[400px] overflow-y-auto" }, ee = { class: "gap-24 grid grid-cols-1 lg:grid-cols-2" }, te = { class: "gap-4 h-[22px] inline-flex items-center justify-center min-w-min rounded-md" }, ne = { class: "fm-typo-en-title-sm-800" }, oe = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, se = { class: "flex gap-4 items-end justify-end py-8" }, le = /* @__PURE__ */ L({
23
+ __name: "TemplateDialog",
24
+ props: {
25
+ campaignType: {
26
+ type: String,
27
+ default: () => {
28
+ }
29
+ },
30
+ onOk: {
31
+ type: Function,
32
+ required: !0
33
+ }
34
+ },
35
+ setup(u) {
36
+ const p = q(), a = P(), o = u, t = E({
37
+ intention: null,
38
+ template: null
39
+ }), b = I(() => {
40
+ const m = (a.templates ?? []).filter(
41
+ () => !0
42
+ //t.intention && t.intention.length > 0
43
+ );
44
+ return o.campaignType ? m.filter(
45
+ (n) => {
46
+ var y, f;
47
+ return ((f = (y = n.defaultValue) == null ? void 0 : y.campaign) == null ? void 0 : f.type) === o.campaignType;
48
+ }
49
+ ) : t.value.intention === null ? G.sampleSize(m, 7) : m.filter(
50
+ (n) => n.intention.includes(t.value.intention)
51
+ );
52
+ });
53
+ j(async () => {
54
+ await a.readTemplates();
55
+ });
56
+ function O() {
57
+ o.onOk(void 0), p.close();
58
+ }
59
+ function $() {
60
+ const m = t.value.template;
61
+ o.onOk(a.templates.find((n) => n._id === m)), p.close();
62
+ }
63
+ return (m, n) => {
64
+ const y = c("FmChip"), f = c("FmListItem"), z = c("FmList"), k = c("FmCard"), v = c("FmButton"), B = c("FmSpacer");
65
+ return r(), C(k, { class: "h-[534px] max-w-6xl" }, {
66
+ default: d(() => [
67
+ l("div", Q, [
68
+ o.campaignType ? M("", !0) : (r(), w("div", R, [
69
+ i(z, null, {
70
+ default: d(() => [
71
+ i(f, {
72
+ class: h([{
73
+ "bg-fm-color-system-warning-100": e(t).intention === null
74
+ }, "rounded-sm"]),
75
+ onClick: n[0] || (n[0] = (s) => {
76
+ e(t).intention = null, e(t).template = null;
77
+ })
78
+ }, {
79
+ append: d(() => [
80
+ i(y, {
81
+ label: "Hot",
82
+ variant: "critical"
83
+ })
84
+ ]),
85
+ default: d(() => [
86
+ n[2] || (n[2] = T(" Most popular "))
87
+ ]),
88
+ _: 1
89
+ }, 8, ["class"]),
90
+ (r(!0), w(S, null, N(e(J).options, (s, x) => (r(), C(f, {
91
+ key: x,
92
+ class: h(["rounded-sm", {
93
+ "bg-fm-color-system-warning-100": e(t).intention === s
94
+ }]),
95
+ style: { padding: "8px 16px" },
96
+ onClick: (_) => {
97
+ e(t).intention = s, e(t).template = null;
98
+ }
99
+ }, {
100
+ default: d(() => [
101
+ T(g(e(V)(s)), 1)
102
+ ]),
103
+ _: 2
104
+ }, 1032, ["class", "onClick"]))), 128))
105
+ ]),
106
+ _: 1
107
+ })
108
+ ])),
109
+ l("div", W, [
110
+ l("div", X, [
111
+ l("div", Y, g(o.campaignType ? e(V)(
112
+ `${e(A).formattedType(o.campaignType)} campaign`
113
+ ) : "Template list"), 1),
114
+ n[3] || (n[3] = l("div", { class: "text-fm-color-typo-secondary fm-typo-en-body-md-400" }, " Get started faster with templates that flex with your business. ", -1))
115
+ ]),
116
+ l("div", Z, [
117
+ i(U, { json: e(b) }, null, 8, ["json"]),
118
+ l("div", ee, [
119
+ (r(!0), w(S, null, N(e(b), (s, x) => (r(), C(k, {
120
+ key: x,
121
+ variant: "outlined",
122
+ class: h(["box-border cursor-pointer h-full p-16 scroll-p-4 space-y-8", {
123
+ "bg-fm-color-system-warning-100 border-fm-color-primary border-2": e(t).template === s._id.toString()
124
+ }]),
125
+ onClick: (_) => e(t).template = s._id.toString()
126
+ }, {
127
+ default: d(() => {
128
+ var _, F;
129
+ return [
130
+ l("div", te, [
131
+ i(K, {
132
+ type: (F = (_ = s.defaultValue) == null ? void 0 : _.campaign) == null ? void 0 : F.type
133
+ }, null, 8, ["type"])
134
+ ]),
135
+ l("div", ne, g(s.name), 1),
136
+ l("p", oe, g(s.description), 1)
137
+ ];
138
+ }),
139
+ _: 2
140
+ }, 1032, ["class", "onClick"]))), 128))
141
+ ])
142
+ ]),
143
+ l("div", se, [
144
+ i(v, {
145
+ class: "sm:w-full xs:w-full",
146
+ variant: "plain",
147
+ label: "Custom Campaign",
148
+ size: "md",
149
+ onClick: O
150
+ }),
151
+ i(B, { class: "sm:hidden xs:hidden" }),
152
+ i(v, {
153
+ class: "sm:w-full xs:w-full",
154
+ variant: "tertiary",
155
+ label: "Cancel",
156
+ size: "md",
157
+ onClick: n[1] || (n[1] = (s) => e(p).close())
158
+ }),
159
+ i(v, {
160
+ class: "sm:w-full xs:w-full",
161
+ variant: "primary",
162
+ label: "Start",
163
+ size: "md",
164
+ disabled: !e(t).template,
165
+ onClick: $
166
+ }, null, 8, ["disabled"])
167
+ ])
168
+ ])
169
+ ])
170
+ ]),
171
+ _: 1
172
+ });
173
+ };
174
+ }
175
+ }), ye = (u, p) => ({
176
+ open: async (a) => {
177
+ p.open({
178
+ title: "",
179
+ dialogComponent: le,
180
+ dialogComponentProps: {
181
+ campaignType: u,
182
+ onOk: async (o) => (console.debug(o, "selected template"), await a(o))
183
+ },
184
+ overlay: !0
185
+ });
186
+ }
187
+ });
188
+ export {
189
+ ye as u
190
+ };
@@ -0,0 +1,223 @@
1
+ import { defineComponent as M, ref as w, resolveComponent as C, openBlock as v, createBlock as F, withCtx as B, createVNode as c, createElementVNode as i, normalizeStyle as N, createElementBlock as S, Fragment as P, renderList as E, computed as h, onMounted as L, watch as R, unref as p, createCommentVNode as V, toDisplayString as x } from "vue";
2
+ import { l as A } from "./lodash-B5I3zXaY.js";
3
+ const T = ["id"], D = /* @__PURE__ */ M({
4
+ __name: "FmTableSelection",
5
+ props: {
6
+ value: {},
7
+ items: {}
8
+ },
9
+ emits: ["update:modelValue"],
10
+ setup(f, { emit: g }) {
11
+ const a = g, l = f, r = w(!1);
12
+ return (d, u) => {
13
+ const y = C("FmButton"), b = C("FmMenuItem"), o = C("FmMenu");
14
+ return v(), F(o, {
15
+ "max-height": 264,
16
+ shift: "",
17
+ onMenuChanged: u[0] || (u[0] = (n) => r.value = n)
18
+ }, {
19
+ "menu-button": B(() => {
20
+ var n;
21
+ return [
22
+ c(y, {
23
+ icon: r.value ? "expand_less" : "expand_more",
24
+ label: (n = d.items.find((s) => s.value === l.value)) == null ? void 0 : n.label,
25
+ "icon-position": "append",
26
+ size: "md",
27
+ variant: "tertiary"
28
+ }, null, 8, ["icon", "label"])
29
+ ];
30
+ }),
31
+ "menu-wrapper": B(({ maxHeight: n }) => [
32
+ i("div", {
33
+ id: `menu-wrapper-${n}`,
34
+ style: N({ maxHeight: `${n}px` }),
35
+ class: "bg-fm-color-neutral-white flex flex-col overflow-y-auto px-4 py-12 rounded-md shadow-light-300 w-[75px]"
36
+ }, [
37
+ (v(!0), S(P, null, E(d.items, (s) => (v(), F(b, {
38
+ key: s.value,
39
+ label: s.label,
40
+ value: s.value,
41
+ "model-value": s.value === l.value,
42
+ "onUpdate:modelValue": (z) => a("update:modelValue", s.value)
43
+ }, null, 8, ["label", "value", "model-value", "onUpdate:modelValue"]))), 128))
44
+ ], 12, T)
45
+ ]),
46
+ _: 1
47
+ });
48
+ };
49
+ }
50
+ }), U = { class: "" }, O = {
51
+ key: 0,
52
+ class: "w-full flex flex-col gap-16 items-center py-16"
53
+ }, j = {
54
+ key: 1,
55
+ class: "basis-72 bg-white flex items-center justify-between px-24 pt-6 border-t border-fm-color-border"
56
+ }, W = { class: "flex gap-24 items-center justify-between xs:hidden xs:invisible" }, q = { class: "flex gap-8 items-center" }, G = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, H = { class: "flex gap-8 items-center" }, J = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-primary xs:mr-auto" }, K = { class: "flex gap-8" }, Y = /* @__PURE__ */ M({
57
+ __name: "BaseTable",
58
+ props: {
59
+ rowData: {},
60
+ columnDefs: {},
61
+ loading: { type: Boolean, default: !1 },
62
+ rowCount: { default: 0 },
63
+ shrinkAt: { type: [Number, Boolean], default: !1 },
64
+ pageCount: {},
65
+ pageIndex: {},
66
+ hideFooter: { type: Boolean, default: !1 },
67
+ pageSize: {},
68
+ pageSizeOptions: { default: () => [
69
+ { label: "10", value: 10 },
70
+ { label: "20", value: 20 },
71
+ { label: "50", value: 50 }
72
+ ] }
73
+ },
74
+ emits: ["sortChange", "rowClick", "pageChange"],
75
+ setup(f, { emit: g }) {
76
+ const a = f, l = g, r = h(() => a.pageIndex + 1), d = h(() => a.pageIndex * a.pageSize), u = h(
77
+ () => Math.min(d.value + a.pageSize, a.rowCount || 0)
78
+ ), y = h(() => a.pageIndex > 0), b = h(() => a.pageIndex < a.pageCount - 1), o = (e) => {
79
+ l("sortChange", e);
80
+ }, n = (e) => {
81
+ l("rowClick", e);
82
+ }, s = (e) => {
83
+ l("pageChange", { pageIndex: e, pageSize: a.pageSize });
84
+ }, z = (e) => {
85
+ l("pageChange", { pageIndex: 0, pageSize: e });
86
+ }, I = w(!1);
87
+ return L(() => {
88
+ R(
89
+ () => a.loading,
90
+ (e, t) => {
91
+ t === !0 && e === !1 && (I.value = !0);
92
+ }
93
+ );
94
+ }), (e, t) => {
95
+ const $ = C("FmTable"), k = C("FmButton");
96
+ return v(), S("div", U, [
97
+ c($, {
98
+ loading: e.loading,
99
+ "row-data": e.rowData,
100
+ "row-count": e.rowCount,
101
+ "column-defs": e.columnDefs,
102
+ "shrink-at": e.shrinkAt,
103
+ "page-count": e.pageCount,
104
+ "page-size": e.pageSize,
105
+ "fetch-fn": void 0,
106
+ "hide-footer": "",
107
+ onSortChange: o,
108
+ onRowClick: n
109
+ }, null, 8, ["loading", "row-data", "row-count", "column-defs", "shrink-at", "page-count", "page-size"]),
110
+ e.rowData.length == 0 && e.loading == !1 && p(I) ? (v(), S("div", O, t[5] || (t[5] = [
111
+ i("div", { class: "fm-typo-en-body-lg-600" }, "No data found", -1),
112
+ i("div", { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, " No data to show at the current moment. ", -1)
113
+ ]))) : V("", !0),
114
+ e.hideFooter ? V("", !0) : (v(), S("div", j, [
115
+ i("div", W, [
116
+ i("div", q, [
117
+ t[6] || (t[6] = i("span", { class: "fm-typo-en-body-lg-400 text-fm-color-typo-primary" }, " Items per page: ", -1)),
118
+ c(D, {
119
+ items: e.pageSizeOptions,
120
+ value: e.pageSize,
121
+ "onUpdate:modelValue": z
122
+ }, null, 8, ["items", "value"])
123
+ ]),
124
+ i("span", G, x(p(d) + 1) + " - " + x(p(u)) + " of " + x(e.rowCount) + " items ", 1)
125
+ ]),
126
+ i("div", H, [
127
+ c(D, {
128
+ items: Array.from(Array(e.pageCount), (m, _) => ({
129
+ label: (_ + 1).toString(),
130
+ value: _ + 1
131
+ })),
132
+ value: p(r),
133
+ "onUpdate:modelValue": t[0] || (t[0] = (m) => s(m - 1))
134
+ }, null, 8, ["items", "value"]),
135
+ i("span", J, " of " + x(e.pageCount) + " pages ", 1),
136
+ i("div", K, [
137
+ c(k, {
138
+ disabled: !p(y),
139
+ icon: "first_page",
140
+ "icon-color": "neutral-black",
141
+ variant: "tertiary",
142
+ onClick: t[1] || (t[1] = (m) => s(0))
143
+ }, null, 8, ["disabled"]),
144
+ c(k, {
145
+ disabled: !p(y),
146
+ icon: "chevron_left",
147
+ "icon-color": "neutral-black",
148
+ variant: "tertiary",
149
+ onClick: t[2] || (t[2] = (m) => s(e.pageIndex - 1))
150
+ }, null, 8, ["disabled"]),
151
+ c(k, {
152
+ disabled: !p(b),
153
+ icon: "chevron_right",
154
+ "icon-color": "neutral-black",
155
+ variant: "tertiary",
156
+ onClick: t[3] || (t[3] = (m) => s(e.pageIndex + 1))
157
+ }, null, 8, ["disabled"]),
158
+ c(k, {
159
+ disabled: !p(b),
160
+ icon: "last_page",
161
+ "icon-color": "neutral-black",
162
+ variant: "tertiary",
163
+ onClick: t[4] || (t[4] = (m) => s(e.pageCount - 1))
164
+ }, null, 8, ["disabled"])
165
+ ])
166
+ ])
167
+ ]))
168
+ ]);
169
+ };
170
+ }
171
+ });
172
+ function Z(f, g = { key: "_id", descending: !0 }) {
173
+ const a = w({
174
+ pageCount: 0,
175
+ searchValue: "",
176
+ pageIndex: 0,
177
+ totalRows: 0,
178
+ isLoading: !1,
179
+ pageSize: 10
180
+ }), l = w(g), r = w([]), d = async (o) => {
181
+ a.value.isLoading = !0, r.value = [];
182
+ try {
183
+ const n = await f({
184
+ limit: o.pageSize || a.value.pageSize,
185
+ skip: o.pageIndex ?? 0,
186
+ sortBy: l.value.key,
187
+ descending: l.value.descending,
188
+ search: a.value.searchValue
189
+ });
190
+ r.value = n.resources, a.value.totalRows = n.meta.totalResources ?? 0, a.value.pageCount = n.meta.totalPages ?? 0, a.value.pageIndex = n.meta.skip ?? 0;
191
+ } catch (n) {
192
+ console.error("Error fetching data:", n);
193
+ } finally {
194
+ a.value.isLoading = !1;
195
+ }
196
+ }, u = A.debounce(async (o) => {
197
+ a.value.pageSize = (o == null ? void 0 : o.pageSize) || a.value.pageSize, await d({
198
+ pageSize: a.value.pageSize,
199
+ pageIndex: (o == null ? void 0 : o.pageIndex) || 0
200
+ });
201
+ }, 200);
202
+ return {
203
+ tableMeta: a,
204
+ rowData: r,
205
+ sortBy: l,
206
+ fetchData: d,
207
+ debouncedFetchData: u,
208
+ onSort: async (o) => {
209
+ var n;
210
+ console.log("sortState", (n = o[0]) == null ? void 0 : n.id), o.length ? (l.value = {
211
+ key: o[0].id.startsWith("_") ? o[0].id : o[0].id.replace(new RegExp("_", "g"), "."),
212
+ descending: o[0].desc
213
+ }, console.log("sortBy", l.value)) : l.value = g, await u();
214
+ },
215
+ onSearch: () => {
216
+ u({ pageIndex: 0, pageSize: a.value.pageSize });
217
+ }
218
+ };
219
+ }
220
+ export {
221
+ Y as _,
222
+ Z as u
223
+ };