@feedmepos/mf-connect 0.1.38-beta.52 → 0.1.38-beta.53

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 (130) hide show
  1. package/package.json +2 -2
  2. package/dist/Analytic-BU1mOMoX.js +0 -760
  3. package/dist/App-fw6iFNxW.js +0 -4638
  4. package/dist/AuditLogs-CliU8167.js +0 -1887
  5. package/dist/Bin-C49tzfas.js +0 -166
  6. package/dist/Broadcast-YZVnZTCD.js +0 -232
  7. package/dist/CampaignTypeDialog.vue_vue_type_script_setup_true_lang-DEwsZags.js +0 -122
  8. package/dist/Card-DcQQyJl9.js +0 -911
  9. package/dist/ChipMenu.vue_vue_type_script_setup_true_lang-BPpZZNkr.js +0 -97
  10. package/dist/Collections--8lmoXWR.js +0 -540
  11. package/dist/Credit-CfkLFMei.js +0 -227
  12. package/dist/CustomSelect.vue_vue_type_script_setup_true_lang-Du7fRSZC.js +0 -128
  13. package/dist/DateRangeChip.vue_vue_type_script_setup_true_lang-eIoPtgO5.js +0 -58
  14. package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-t6eac8yR.js +0 -3151
  15. package/dist/EffectSheet.vue_vue_type_style_index_0_lang-CXVOuiLI.js +0 -347
  16. package/dist/Experience-BnVVC2-L.js +0 -228
  17. package/dist/FileSaver.min-NlMItPOc.js +0 -74
  18. package/dist/FilterChip.vue_vue_type_script_setup_true_lang-DaU-9GzO.js +0 -129
  19. package/dist/Game-Dbz4DzY_.js +0 -297
  20. package/dist/Grab-CCqScmpp.js +0 -300
  21. package/dist/ImageInput.vue_vue_type_script_setup_true_lang-C5irH9v6.js +0 -145
  22. package/dist/Index-DPsM9D4W.js +0 -259
  23. package/dist/JsonViewer-v8_C7l5N.js +0 -87
  24. package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-CyGJxUol.js +0 -18737
  25. package/dist/MainLayout-B1aJoR95.js +0 -41
  26. package/dist/Marketing-CFwxWdJq.js +0 -21761
  27. package/dist/Member-ZPKbf5Bk.js +0 -281
  28. package/dist/MemberList-BDs-70nG.js +0 -1607
  29. package/dist/MemberOverview-wL_ailso.js +0 -58
  30. package/dist/MemberTransactions-C-zHpuZF.js +0 -45
  31. package/dist/MessageInput.vue_vue_type_script_setup_true_lang-B2TKmOOK.js +0 -60616
  32. package/dist/Mission-BHkb1E9m.js +0 -301
  33. package/dist/Overview-DYlcqNCX.js +0 -1079
  34. package/dist/Point-BEhNBY2_.js +0 -231
  35. package/dist/Promotion-DOXRIej4.js +0 -363
  36. package/dist/Queue-Bwa0LWhf.js +0 -260
  37. package/dist/Record-BoI8l1Qq.js +0 -341
  38. package/dist/Reward-BVQaqAYM.js +0 -442
  39. package/dist/RewardGroup.vue_vue_type_script_setup_true_lang-BC3dEiWi.js +0 -150
  40. package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-HpleMvjm.js +0 -1767
  41. package/dist/Segment-Cmy7nu27.js +0 -882
  42. package/dist/SelectItems.vue_vue_type_script_setup_true_lang-pab6X2DC.js +0 -181
  43. package/dist/SendCollectionSheet.vue_vue_type_script_setup_true_lang-BqIh8D8O.js +0 -189
  44. package/dist/SendVoucherSheet.vue_vue_type_script_setup_true_lang-CESoNd87.js +0 -147
  45. package/dist/Setting-DN8j_6Xv.js +0 -1993
  46. package/dist/SettingAdvertisements-qHdiaa6m.js +0 -264
  47. package/dist/Store-DfhVYCgX.js +0 -1936
  48. package/dist/StoreRewards-NYucFLJU.js +0 -535
  49. package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-BGOcOAXR.js +0 -1036
  50. package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-DRin8Jzw.js +0 -8093
  51. package/dist/Tier-Dl0aBuJz.js +0 -970
  52. package/dist/Title-DvO6Mira.js +0 -568
  53. package/dist/Transaction-ONVl4UZZ.js +0 -39
  54. package/dist/UserRuleGroup.vue_vue_type_script_setup_true_lang-FyE25D8o.js +0 -130
  55. package/dist/Voucher-BZ1feYh1.js +0 -399
  56. package/dist/VoucherEditor.vue_vue_type_script_setup_true_lang-Lilql8J4.js +0 -421
  57. package/dist/ZodTextField.vue_vue_type_script_setup_true_lang-C_ZdCOPI.js +0 -56
  58. package/dist/_commonjsHelpers-BkfeUUK-.js +0 -28
  59. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  60. package/dist/app-B_RRkjaD.js +0 -42566
  61. package/dist/app-wDQR6dpb.js +0 -39
  62. package/dist/app.js +0 -7
  63. package/dist/business-y5qSMcd-.js +0 -82
  64. package/dist/campaign-CpzFl8Vr.js +0 -4
  65. package/dist/campaign-DHgol2Lt.js +0 -219
  66. package/dist/campaign-Drxe0zPX.js +0 -253
  67. package/dist/campaign.enum-CwAPVgPe.js +0 -21
  68. package/dist/campaign.fn-DMx5xsiK.js +0 -776
  69. package/dist/collectible.enum-Bh4jnUgP.js +0 -19
  70. package/dist/collection.fn-BpC_YBwG.js +0 -26
  71. package/dist/dto-DWkf9QOb.js +0 -222
  72. package/dist/effect-D5ZWGpNS.js +0 -78
  73. package/dist/email-addresses-DFtVESS8.js +0 -705
  74. package/dist/export-BtUy3sWU.js +0 -97
  75. package/dist/feedme.ico +0 -0
  76. package/dist/helper-DtWMZoWX.js +0 -86
  77. package/dist/index-7HXC3sH0.js +0 -56
  78. package/dist/index-BQlhmw75.js +0 -3
  79. package/dist/index-BdX7CxUg.js +0 -30076
  80. package/dist/index-BerRe0M3.js +0 -76
  81. package/dist/index-BrZ3xZzk.js +0 -146
  82. package/dist/index-CJzBpsBP.js +0 -3412
  83. package/dist/index-CQiABpeB.js +0 -32456
  84. package/dist/index-CqIWlGW3.js +0 -38
  85. package/dist/index-CsaQJMAR.js +0 -66
  86. package/dist/index-DPCDboPA.js +0 -32
  87. package/dist/index-DPaH8jaV.js +0 -8884
  88. package/dist/index-Dkce3JZ_.js +0 -54
  89. package/dist/index-DrYv_gG4.js +0 -31
  90. package/dist/index-SfJbKfWl.js +0 -2407
  91. package/dist/index-vh86FiIQ.js +0 -10
  92. package/dist/index.esm2017-CbvE5vCC.js +0 -3069
  93. package/dist/loading-BWGIK17X.js +0 -71
  94. package/dist/lodash-B5I3zXaY.js +0 -3678
  95. package/dist/membership-Zy2P6O6X.js +0 -235
  96. package/dist/moment-D7p2TMB-.js +0 -2583
  97. package/dist/money-D_fZmBbi.js +0 -15
  98. package/dist/number-C4DhXkCm.js +0 -12
  99. package/dist/object-qECH92oz.js +0 -26
  100. package/dist/objectId-dwaoBfJX.js +0 -7
  101. package/dist/objectid-C6eRcDzI.js +0 -145
  102. package/dist/plugins-DDAJav2s.js +0 -1817
  103. package/dist/reward-Dxjvmy7-.js +0 -36
  104. package/dist/rule-builder-ZkPWAiTl.js +0 -102
  105. package/dist/rule-sclqeiyk.js +0 -1951
  106. package/dist/style.css +0 -4
  107. package/dist/template-CAs0lkTY.js +0 -188
  108. package/dist/tier-BJDhpH6X.js +0 -4
  109. package/dist/tiers/tier=1.png +0 -0
  110. package/dist/tiers/tier=2.png +0 -0
  111. package/dist/tiers/tier=3.png +0 -0
  112. package/dist/tiers/tier=4.png +0 -0
  113. package/dist/timezone-5t8ki0gE.js +0 -1151
  114. package/dist/titles/type=diamond.png +0 -0
  115. package/dist/titles/type=drinks.png +0 -0
  116. package/dist/titles/type=food.png +0 -0
  117. package/dist/titles/type=heart.png +0 -0
  118. package/dist/titles/type=medal.png +0 -0
  119. package/dist/titles/type=spend.png +0 -0
  120. package/dist/titles/type=thank-you.png +0 -0
  121. package/dist/titles/type=thumbs-up.png +0 -0
  122. package/dist/titles/type=years.png +0 -0
  123. package/dist/trigger-B2fpKTfg.js +0 -213
  124. package/dist/tslib.es6-BCqqvLQ_.js +0 -44
  125. package/dist/type_drinks-D6jnpvwV.js +0 -4
  126. package/dist/usePagination-Ds-cuHop.js +0 -223
  127. package/dist/user-ORhbAsqi.js +0 -55
  128. package/dist/vue-i18n-cyOhW8mW.js +0 -2365
  129. package/dist/xlsx-4klfjFae.js +0 -15491
  130. package/dist/zod-BsHmzMQd.js +0 -91
@@ -1,760 +0,0 @@
1
- import { defineComponent as B, openBlock as i, createElementBlock as k, Fragment as T, renderList as P, createElementVNode as a, toDisplayString as $, createCommentVNode as I, resolveComponent as _, createBlock as V, withCtx as R, createVNode as d, unref as e, ref as h, computed as L, onMounted as q, watch as ee, isRef as K, createSlots as te, createTextVNode as ae, reactive as ne, onBeforeMount as oe, normalizeClass as se } from "vue";
2
- import { _ as le } from "./campaign-CpzFl8Vr.js";
3
- import { f as ie } from "./number-C4DhXkCm.js";
4
- import { C as re } from "./campaign-Drxe0zPX.js";
5
- import { useRouter as Q } from "vue-router";
6
- import { c as G, u as ce } from "./campaign-DHgol2Lt.js";
7
- import { _ as ue } from "./ZodTextField.vue_vue_type_script_setup_true_lang-C_ZdCOPI.js";
8
- import { Z as me } from "./zod-BsHmzMQd.js";
9
- import { F as de } from "./dto-DWkf9QOb.js";
10
- import { J as pe } from "./JsonViewer-v8_C7l5N.js";
11
- import "./index-CQiABpeB.js";
12
- import { useSnackbar as fe } from "@feedmepos/ui-library";
13
- import { u as ye } from "./app-wDQR6dpb.js";
14
- import { u as ve } from "./loading-BWGIK17X.js";
15
- import { C as _e } from "./campaign.fn-DMx5xsiK.js";
16
- import { g as ge } from "./object-qECH92oz.js";
17
- import { u as he } from "./membership-Zy2P6O6X.js";
18
- import { u as be } from "./vue-i18n-cyOhW8mW.js";
19
- import { c as xe } from "./index-BdX7CxUg.js";
20
- import { h as Ce } from "./moment-D7p2TMB-.js";
21
- import { m as X } from "./index-BerRe0M3.js";
22
- const ke = { class: "divide-x flex flex-wrap" }, Fe = { class: "fm-typo-en-body-md-400 mb-2 text-fm-color-typo-secondary" }, Se = { class: "fm-typo-en-title-sm-800" }, we = /* @__PURE__ */ B({
23
- __name: "CampaignStat",
24
- props: {
25
- data: {
26
- type: Object,
27
- required: !0
28
- }
29
- },
30
- setup(y) {
31
- const r = y, c = [
32
- { label: "Credit Received", key: "CREDIT" },
33
- { label: "EXP Received", key: "POINT" },
34
- { label: "Points Received", key: "COIN" },
35
- { label: "Message Sent", key: "BROADCAST" },
36
- { label: "Vouchers Claimed", key: "VOUCHER" },
37
- { label: "Users Joined", key: "UNIQUE_USER" }
38
- ];
39
- function u(g) {
40
- var p;
41
- return ie((p = r.data) == null ? void 0 : p[g], 2, !0) || 0;
42
- }
43
- return (g, p) => (i(), k("div", ke, [
44
- (i(), k(T, null, P(c, (s) => (i(), k(T, null, [
45
- s.key in y.data ? (i(), k("div", {
46
- key: s.key,
47
- class: "px-16"
48
- }, [
49
- a("div", Fe, $(s.label), 1),
50
- a("div", Se, $(u(s.key)), 1)
51
- ])) : I("", !0)
52
- ], 64))), 64))
53
- ]));
54
- }
55
- }), $e = { class: "bg-fm-color-neutral-gray-100 gap-4 h-[30px] inline-flex items-center justify-center max-w-[250px] px-8 py-4 rounded-md" }, Ve = { class: "fm-typo-en-body-md-600 overflow-hidden select-none text-ellipsis text-fm-color-typo-secondary whitespace-nowrap" }, Te = /* @__PURE__ */ B({
56
- __name: "CampaignChip",
57
- props: {
58
- type: { type: String, required: !0 },
59
- icon: {
60
- type: Object,
61
- default: () => ({ icon: "circle", color: "typo-sucess" })
62
- },
63
- label: {
64
- type: String,
65
- default: ""
66
- }
67
- },
68
- setup(y) {
69
- const c = re[y.type];
70
- return (u, g) => {
71
- const p = _("FmIcon"), s = _("FmTooltip");
72
- return i(), V(s, {
73
- variant: "plain",
74
- placement: "top",
75
- content: y.label
76
- }, {
77
- default: R(() => [
78
- a("div", $e, [
79
- d(p, {
80
- name: e(c).icon,
81
- outline: "",
82
- size: "sm"
83
- }, null, 8, ["name"]),
84
- a("div", Ve, $(y.label), 1),
85
- d(p, {
86
- name: y.icon.name,
87
- color: y.icon.color,
88
- size: "sm"
89
- }, null, 8, ["name", "color"])
90
- ])
91
- ]),
92
- _: 1
93
- }, 8, ["content"]);
94
- };
95
- }
96
- }), Ae = { class: "flex flex-col" }, Re = { class: "flex flex-nowrap items-center justify-between mb-12" }, Ee = { class: "flex gap-4 items-center justify-start" }, Oe = { class: "fm-typo-en-title-sm-800" }, Me = { class: "flex flex-wrap gap-4 items-center mb-16 overflow-y-hidden" }, Pe = /* @__PURE__ */ B({
97
- __name: "CampaignGroup",
98
- props: {
99
- group: {
100
- type: Object,
101
- required: !0
102
- },
103
- onEdit: {
104
- type: Function,
105
- required: !0
106
- }
107
- },
108
- emits: ["changed"],
109
- setup(y, { emit: r }) {
110
- Q(), h(!1);
111
- const c = y, u = h([]), g = L(
112
- () => u.value.reduce(
113
- (s, l) => ({ ...s, [l.type]: l.totalAmount }),
114
- {}
115
- )
116
- ), p = L(() => {
117
- var s;
118
- return ((s = c.group.pf_campaigns) == null ? void 0 : s.map((l) => ({
119
- campaign: l,
120
- label: l.name
121
- }))) || [];
122
- });
123
- return q(async () => {
124
- u.value = await G.readStats({
125
- groupId: c.group._id.toString()
126
- });
127
- }), (s, l) => {
128
- const m = _("FmButton"), o = _("FmCard");
129
- return i(), V(o, {
130
- class: "mb-24 p-24",
131
- variant: "outlined"
132
- }, {
133
- default: R(() => [
134
- a("div", Ae, [
135
- a("div", Re, [
136
- a("div", Ee, [
137
- a("div", Oe, $(y.group.name), 1),
138
- d(m, {
139
- icon: "edit",
140
- variant: "tertiary",
141
- onClick: l[0] || (l[0] = (b) => y.onEdit(y.group))
142
- })
143
- ])
144
- ]),
145
- a("div", Me, [
146
- (i(!0), k(T, null, P(e(p), (b) => (i(), V(Te, {
147
- key: s.index,
148
- type: b.campaign.type,
149
- label: b.label
150
- }, null, 8, ["type", "label"]))), 128))
151
- ]),
152
- d(we, { data: e(g) }, null, 8, ["data"])
153
- ])
154
- ]),
155
- _: 1
156
- });
157
- };
158
- }
159
- }), Be = { class: "ml-32 flex flex-col" }, Ue = /* @__PURE__ */ B({
160
- __name: "CampaignCard",
161
- props: {
162
- title: {},
163
- items: {},
164
- modelValue: {}
165
- },
166
- emits: ["update:model-value"],
167
- setup(y, { emit: r }) {
168
- const c = y, u = r, g = (m) => {
169
- m ? l.value = c.items.map((o) => o.value) : l.value = [], s.value = m, u("update:model-value", l.value);
170
- }, p = (m) => {
171
- l.value = m, s.value = m.length === c.items.length, u("update:model-value", m);
172
- }, s = h(!1), l = h([]);
173
- return ee(
174
- () => c.modelValue,
175
- () => {
176
- l.value = c.modelValue.filter(
177
- (m) => c.items.find((o) => o.value === m)
178
- );
179
- }
180
- ), q(() => {
181
- l.value = c.modelValue.filter(
182
- (m) => c.items.find((o) => o.value === m)
183
- );
184
- }), (m, o) => {
185
- const b = _("FmCheckbox"), S = _("FmCard");
186
- return i(), V(S, {
187
- variant: "outlined",
188
- class: "p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-3"
189
- }, {
190
- default: R(() => [
191
- d(b, {
192
- "model-value": e(s),
193
- value: "1",
194
- label: c.title,
195
- indeterminate: e(l).length > 0,
196
- "onUpdate:modelValue": g
197
- }, null, 8, ["model-value", "label", "indeterminate"]),
198
- a("div", Be, [
199
- (i(!0), k(T, null, P(c.items, (x, D) => (i(), V(b, {
200
- key: D,
201
- "model-value": e(l),
202
- label: x.label,
203
- value: x.value,
204
- "onUpdate:modelValue": p
205
- }, null, 8, ["model-value", "label", "value"]))), 128))
206
- ])
207
- ]),
208
- _: 1
209
- });
210
- };
211
- }
212
- }), Ie = { class: "space-y-16" }, Le = { class: "flex items-center" }, De = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary w-[300px]" }, Ge = { class: "space-y-[40px]" }, Ne = /* @__PURE__ */ B({
213
- __name: "LinkCampaign",
214
- props: {
215
- modelValue: {
216
- type: Array,
217
- required: !0
218
- },
219
- campaigns: {
220
- type: Object,
221
- required: !0
222
- }
223
- },
224
- emits: ["update:model-value"],
225
- setup(y, { emit: r }) {
226
- const c = h(""), u = h([]), g = y, p = r, s = L(() => Object.entries(g.campaigns).reduce((m, [o, b]) => {
227
- const S = b.filter(
228
- (x) => x.label.toLowerCase().includes(c.value.toLowerCase())
229
- );
230
- return S.length > 0 && (m[o] = S), m;
231
- }, {}));
232
- function l(m, o) {
233
- u.value = u.value.filter(
234
- (b) => !o.map((S) => S.value).includes(b)
235
- ), u.value = [.../* @__PURE__ */ new Set([...u.value, ...m])], p("update:model-value", u.value);
236
- }
237
- return q(() => {
238
- u.value = g.modelValue;
239
- }), (m, o) => {
240
- const b = _("FmTextField");
241
- return i(), k(T, null, [
242
- d(pe, { json: y.campaigns }, null, 8, ["json"]),
243
- a("div", Ie, [
244
- a("div", Le, [
245
- a("div", De, $(e(u).length) + " campaign(s) linked ", 1),
246
- d(b, {
247
- modelValue: e(c),
248
- "onUpdate:modelValue": o[0] || (o[0] = (S) => K(c) ? c.value = S : null),
249
- "prepend-icon": "search",
250
- placeholder: "Search",
251
- class: "w-full"
252
- }, null, 8, ["modelValue"])
253
- ]),
254
- a("div", Ge, [
255
- (i(!0), k(T, null, P(e(s), (S, x) => (i(), V(Ue, {
256
- "model-value": e(u),
257
- title: x,
258
- items: S,
259
- "onUpdate:modelValue": (D) => l(D, S)
260
- }, null, 8, ["model-value", "title", "items", "onUpdate:modelValue"]))), 256))
261
- ])
262
- ])
263
- ], 64);
264
- };
265
- }
266
- }), je = { class: "flex items-center gap-x-8" }, He = {
267
- key: 0,
268
- class: "space-y-16 pr-12"
269
- }, qe = { class: "flex items-center gap-x-16" }, ze = { class: "fm-typo-en-body-lg-400 text-fm-color-typo-secondary" }, Je = { class: "mt-16" }, Ke = { class: "text-fm-color-typo-secondary fm-typo-en-body-md-600 py-8 px-16 bg-gray-100" }, We = { class: "flex justify-between items-center py-8 px-16 border-b-1" }, Ze = { class: "flex items-center gap-8" }, Qe = /* @__PURE__ */ B({
270
- __name: "AnalyticSheet",
271
- emits: ["success"],
272
- setup(y, { expose: r, emit: c }) {
273
- const u = c, g = ye();
274
- fe();
275
- const p = h(!1), s = h(!1), l = {
276
- name: "",
277
- campaigns: []
278
- }, m = h(""), o = h({ ...l }), b = de.superRefine((n, t) => {
279
- }), S = h([]), x = h(null), { global: D, minor: z } = ve, W = L(() => {
280
- const n = b.safeParse(o.value);
281
- return n.success ? [] : n.error.errors;
282
- });
283
- function A(n) {
284
- var t;
285
- p.value = !0, n ? (x.value = { ...n }, o.value = { ...n, campaigns: (t = n.pf_campaigns) == null ? void 0 : t.map((F) => F._id) }) : (x.value = null, o.value = { ...l });
286
- }
287
- function N() {
288
- p.value = !1, x.value = null;
289
- }
290
- function C() {
291
- s.value = !0;
292
- }
293
- async function f() {
294
- const n = await G.readAll({
295
- limit: 1e3,
296
- skip: 0,
297
- sortBy: "_id",
298
- search: "",
299
- descending: !0
300
- });
301
- S.value = n.resources.filter(
302
- (t) => !["MEMBERSHIP", "REWARD_POOL"].includes(t.type) && !["ISSUE_REWARD"].includes("event" in t ? t == null ? void 0 : t.event.type : "")
303
- );
304
- }
305
- const v = L(() => {
306
- const n = (F) => F.map((O) => ({
307
- label: O.name,
308
- value: O._id
309
- }));
310
- return ge(
311
- S.value,
312
- (F) => _e.formattedType(F.type),
313
- n
314
- );
315
- }), M = L(() => Object.entries(v.value).reduce(
316
- (n, [t, F]) => {
317
- const O = F.filter((H) => {
318
- var J, w;
319
- return (w = (J = o.value) == null ? void 0 : J.campaigns) == null ? void 0 : w.includes(H.value);
320
- }).filter(
321
- (H) => H.label.toLowerCase().includes(m.value.toLowerCase())
322
- );
323
- return O.length > 0 && (n[t] = O), n;
324
- },
325
- {}
326
- ));
327
- function E(n) {
328
- var F, O;
329
- const t = (F = o.value.campaigns) == null ? void 0 : F.indexOf(n);
330
- t != null && t > -1 && ((O = o.value.campaigns) == null || O.splice(t, 1));
331
- }
332
- async function U() {
333
- b.safeParse(o.value).success && await z(
334
- async () => {
335
- var t;
336
- x.value ? await G.updateGroup(
337
- (t = x.value) == null ? void 0 : t._id,
338
- o.value
339
- ) : await G.createGroup(o.value), u("success"), N();
340
- },
341
- {
342
- message: "Saving group",
343
- successMessage: "Group saved"
344
- }
345
- );
346
- }
347
- async function j() {
348
- await z(
349
- async () => {
350
- var n;
351
- await G.deleteGroup((n = x.value) == null ? void 0 : n._id), u("success"), N();
352
- },
353
- {
354
- message: "Deleting group",
355
- successMessage: "Group deleted"
356
- }
357
- );
358
- }
359
- return q(async () => {
360
- await f();
361
- }), r({
362
- showSheet: A,
363
- hideSheet: N
364
- }), (n, t) => {
365
- const F = _("FmButton"), O = _("FmTextField"), H = _("FmList"), J = _("FmSideSheet");
366
- return i(), V(J, {
367
- modelValue: e(p),
368
- "onUpdate:modelValue": t[7] || (t[7] = (w) => K(p) ? p.value = w : null),
369
- header: e(x) ? "Edit group" : "Add group",
370
- "dismiss-away": "",
371
- "close-button": !0,
372
- "max-width": 550
373
- }, te({
374
- "side-sheet-footer": R(() => [
375
- a("div", Ze, [
376
- e(s) ? I("", !0) : (i(), k(T, { key: 0 }, [
377
- d(F, {
378
- label: "Submit",
379
- onClick: U,
380
- disabled: e(W).length > 0 || e(g).isLoading
381
- }, null, 8, ["disabled"]),
382
- d(F, {
383
- label: "Cancel",
384
- onClick: t[4] || (t[4] = (w) => N()),
385
- variant: "tertiary"
386
- }),
387
- e(x) ? (i(), V(F, {
388
- key: 0,
389
- label: "Delete",
390
- variant: "plain",
391
- class: "ml-auto fm-color-system-error-300",
392
- onClick: t[5] || (t[5] = (w) => j())
393
- })) : I("", !0)
394
- ], 64)),
395
- e(s) ? (i(), V(F, {
396
- key: 1,
397
- label: "Confirm",
398
- onClick: t[6] || (t[6] = (w) => s.value = !1)
399
- })) : I("", !0)
400
- ])
401
- ]),
402
- default: R(() => [
403
- e(s) ? I("", !0) : (i(), k("div", He, [
404
- t[9] || (t[9] = a("div", { class: "fm-typo-en-title-sm-800" }, "Group detail", -1)),
405
- d(ue, {
406
- modelValue: e(o).name,
407
- "onUpdate:modelValue": t[1] || (t[1] = (w) => e(o).name = w),
408
- label: "Name",
409
- schema: e(me).typeAtPath(e(b), "name")
410
- }, null, 8, ["modelValue", "schema"]),
411
- t[10] || (t[10] = a("div", { class: "fm-typo-en-title-sm-800" }, "Link campaign", -1)),
412
- a("div", qe, [
413
- a("div", ze, $(e(o).campaigns.length) + " campaign(s) linked ", 1),
414
- d(O, {
415
- modelValue: e(m),
416
- "onUpdate:modelValue": t[2] || (t[2] = (w) => K(m) ? m.value = w : null),
417
- "prepend-icon": "search",
418
- placeholder: "Search",
419
- class: "w-auto"
420
- }, null, 8, ["modelValue"])
421
- ]),
422
- d(F, {
423
- variant: "plain",
424
- icon: "link",
425
- label: "Link Campaign",
426
- onClick: C
427
- })
428
- ])),
429
- e(s) ? (i(), V(Ne, {
430
- key: 1,
431
- modelValue: e(o).campaigns,
432
- "onUpdate:modelValue": t[3] || (t[3] = (w) => e(o).campaigns = w),
433
- campaigns: e(v)
434
- }, null, 8, ["modelValue", "campaigns"])) : I("", !0),
435
- a("div", Je, [
436
- e(s) ? I("", !0) : (i(!0), k(T, { key: 0 }, P(e(M), (w, Y) => (i(), k("div", null, [
437
- a("div", Ke, $(Y), 1),
438
- d(H, { separator: !0 }, {
439
- default: R(() => [
440
- (i(!0), k(T, null, P(w, (Z) => (i(), k("div", We, [
441
- a("div", null, $(Z.label), 1),
442
- a("div", null, [
443
- d(F, {
444
- icon: "delete",
445
- onClick: (yt) => E(Z.value),
446
- variant: "tertiary"
447
- }, null, 8, ["onClick"])
448
- ])
449
- ]))), 256))
450
- ]),
451
- _: 2
452
- }, 1024)
453
- ]))), 256))
454
- ])
455
- ]),
456
- _: 2
457
- }, [
458
- e(s) ? {
459
- name: "side-sheet-header",
460
- fn: R(() => [
461
- a("div", je, [
462
- d(F, {
463
- icon: "arrow_back",
464
- variant: "tertiary",
465
- onClick: t[0] || (t[0] = (w) => s.value = !1)
466
- }),
467
- t[8] || (t[8] = ae("Link campaign ", -1))
468
- ])
469
- ]),
470
- key: "0"
471
- } : void 0
472
- ]), 1032, ["modelValue", "header"]);
473
- };
474
- }
475
- }), Xe = {
476
- class: "flex justify-center",
477
- style: { height: "400px" }
478
- }, Ye = /* @__PURE__ */ B({
479
- __name: "TierDistribution",
480
- props: {
481
- data: {},
482
- metrics: {}
483
- },
484
- setup(y) {
485
- const r = y;
486
- return (c, u) => {
487
- const g = _("JsonViewer"), p = _("FmPieChart");
488
- return i(), k(T, null, [
489
- d(g, {
490
- json: r.data
491
- }, null, 8, ["json"]),
492
- a("div", Xe, [
493
- d(p, {
494
- paragraph: "",
495
- variant: "doughnut",
496
- datasets: r.data,
497
- metrics: r.metrics,
498
- legend: !1,
499
- "text-color": "#1C1C1E",
500
- "text-style": "bold 50px sans-serif",
501
- height: 400,
502
- "maintain-aspect-ratio": !1
503
- }, null, 8, ["datasets", "metrics"])
504
- ])
505
- ], 64);
506
- };
507
- }
508
- }), et = { class: "grow" }, tt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, at = { class: "flex flex-col items-end" }, nt = { class: "fm-typo-en-body-sm-400 text-fm-color-typo-secondary" }, ot = /* @__PURE__ */ B({
509
- __name: "TopSpentMemberList",
510
- setup(y) {
511
- const r = h([]);
512
- async function c(u) {
513
- const g = await X.read({
514
- limit: u,
515
- skip: 0,
516
- sortBy: "stats.avgBillSize",
517
- search: "",
518
- descending: !0
519
- });
520
- r.value = g.resources, console.log(`top ${u} members:`, g.resources);
521
- }
522
- return q(async () => {
523
- await c(3);
524
- }), (u, g) => {
525
- const p = _("FmCardHeader"), s = _("FmListItem"), l = _("FmList"), m = _("FmCard");
526
- return i(), V(m, {
527
- variant: "outlined",
528
- class: "p-16"
529
- }, {
530
- default: R(() => [
531
- d(p, { title: "Top spent members" }),
532
- d(l, { class: "w-full" }, {
533
- default: R(() => [
534
- (i(!0), k(T, null, P(e(r), (o) => (i(), V(s, null, {
535
- default: R(() => [
536
- a("div", et, [
537
- a("div", null, $(o.name), 1),
538
- a("div", tt, $(o.phoneNumber), 1)
539
- ]),
540
- a("div", at, [
541
- a("div", null, $(e(xe.Dinero).fromNumber({
542
- number: Number(
543
- o.stats.avgBillSize * o.stats.visitCount || 0
544
- )
545
- }).toFormat(!0)), 1),
546
- a("div", nt, " Last visit " + $(e(Ce)(o.stats.lastVisit).fromNow()), 1)
547
- ])
548
- ]),
549
- _: 2
550
- }, 1024))), 256))
551
- ]),
552
- _: 1
553
- })
554
- ]),
555
- _: 1
556
- });
557
- };
558
- }
559
- }), st = { class: "px-24 space-y-32 pb-24" }, lt = { class: "space-y-16" }, it = { class: "flex items-center justify-end" }, rt = { class: "fm-typo-en-body-lg-600" }, ct = { class: "grid grid-cols-6 xs:grid-cols-2 gap-4 divide-x xs:divide-x-0" }, ut = { class: "fm-typo-body-md-400 fm-typo-en-body-md-400 mb-2 text-fm-color-typo-secondary" }, mt = { class: "fm-typo-en-title-sm-800" }, dt = { class: "grid grid-cols-3 xs:grid-cols-1 gap-16" }, pt = { class: "fm-typo-body-en-md-400 text-center text-fm-color-typo-secondary" }, ft = { class: "flex gap-16 items-center" }, Ut = /* @__PURE__ */ B({
560
- __name: "Analytic",
561
- setup(y) {
562
- const { t: r } = be(), c = {
563
- label: r("connect.analytic.addGroup"),
564
- value: "create",
565
- isPrimary: !0,
566
- prependIcon: "add"
567
- }, u = ce(), g = h(), p = h([]), s = h(""), l = ne({
568
- totalCampaign: 0,
569
- totalProgram: 0,
570
- totalMember: 0,
571
- totalTier: 0,
572
- totalTitle: 0
573
- }), m = h("1"), o = h([]), b = h([]), S = [
574
- {
575
- key: r("connect.analytic.summary.totalCampaign"),
576
- value: () => l.totalCampaign
577
- },
578
- {
579
- key: r("connect.analytic.summary.totalProgram"),
580
- value: () => l.totalProgram
581
- },
582
- {
583
- key: r("connect.analytic.summary.totalMember"),
584
- value: () => l.totalMember
585
- },
586
- {
587
- key: r("connect.analytic.summary.totalTitle"),
588
- value: () => l.totalTitle
589
- },
590
- {
591
- key: r("connect.analytic.summary.totalTier"),
592
- value: () => l.totalTier
593
- }
594
- ];
595
- function x(C) {
596
- var f;
597
- m.value = (/* @__PURE__ */ new Date()).toISOString(), (f = g.value) == null || f.showSheet(C);
598
- }
599
- async function D() {
600
- await u.readGroups();
601
- const C = await G.readAllGrouped({
602
- limit: 100,
603
- skip: 0,
604
- sortBy: "_id",
605
- search: "",
606
- descending: !0
607
- });
608
- p.value = C.resources;
609
- }
610
- async function z() {
611
- var M, E, U, j;
612
- const C = await X.read({
613
- limit: 1,
614
- skip: 0,
615
- sortBy: "_id",
616
- search: "",
617
- descending: !1
618
- }), f = await G.readAll({
619
- limit: 1e3,
620
- skip: 0,
621
- sortBy: "_id",
622
- search: "",
623
- descending: !1
624
- });
625
- l.totalCampaign = ((M = f.resources) == null ? void 0 : M.filter(
626
- (n) => ["PROMOTION", "VOUCHER", "BROADCAST"].includes(n.type) && !["ISSUE_REWARD"].includes("event" in n ? n == null ? void 0 : n.event.type : "")
627
- ).length) ?? 0, l.totalProgram = ((E = f.resources) == null ? void 0 : E.filter(
628
- (n) => ["POINT", "COIN", "CREDIT", "GAME", "MISSION"].includes(n.type)
629
- ).length) ?? 0, l.totalMember = C.meta.totalResources ?? 0;
630
- const v = f.resources.find(
631
- (n) => n.type === "MEMBERSHIP"
632
- );
633
- l.totalTier = ((U = v == null ? void 0 : v.tiers) == null ? void 0 : U.length) ?? 0, l.totalTitle = ((j = v == null ? void 0 : v.titles) == null ? void 0 : j.length) ?? 0;
634
- }
635
- const W = L(() => p.value.filter((C) => {
636
- var f;
637
- return C.name.includes(s.value) || ((f = C.pf_campaigns) == null ? void 0 : f.filter((v) => v.name.includes(s.value)).length);
638
- })), A = he();
639
- Q(), h(!0), L(() => {
640
- var C, f, v, M;
641
- return !A.storeOption || !A.storeOption.company ? -1 : !A.payoutAccount || !A.payoutAccount.enable || A.payoutAccount.status != "APPROVED" ? 0 : (f = (C = A.store) == null ? void 0 : C.categories) != null && f.length ? (M = (v = A.store) == null ? void 0 : v.categories) != null && M.some(
642
- (E) => E.bundles.some((U) => U.isFeedvibe)
643
- ) ? 3 : 2 : 1;
644
- });
645
- function N() {
646
- const C = A.sortedTiers;
647
- b.value = (C == null ? void 0 : C.map((v) => v.name)) || [];
648
- const f = C.map((v) => (v == null ? void 0 : v.member_count) || 0) || [];
649
- o.value = [
650
- {
651
- label: "Total Members",
652
- data: f,
653
- backgroundColor: [
654
- "#FF5D53",
655
- "#007BA7",
656
- "#FCA23E",
657
- "#8CE6D7",
658
- "#73C8E6",
659
- "#F2F2F7"
660
- ],
661
- hoverOffset: 5
662
- }
663
- ];
664
- }
665
- return oe(async () => {
666
- await u.read(), await D(), await z(), await A.readMemberStore(), await A.readMembership(), await N(), await A.readPayoutAccount();
667
- }), (C, f) => {
668
- const v = _("FmPageHead"), M = _("FmSearch"), E = _("FmCard"), U = _("FmCardHeader"), j = _("FmButton");
669
- return i(), k(T, null, [
670
- d(v, {
671
- title: e(r)("connect.analytic.title"),
672
- actions: e(p).length > 0 ? [c] : [],
673
- "onClick:action": f[0] || (f[0] = (n) => x())
674
- }, null, 8, ["title", "actions"]),
675
- a("div", st, [
676
- a("div", lt, [
677
- a("div", it, [
678
- d(M, {
679
- class: "xs:hidden",
680
- modelValue: e(s),
681
- "onUpdate:modelValue": f[1] || (f[1] = (n) => K(s) ? s.value = n : null),
682
- placeholder: e(r)("connect.analytic.search"),
683
- collapsible: ""
684
- }, null, 8, ["modelValue", "placeholder"])
685
- ]),
686
- d(E, {
687
- variant: "outlined",
688
- class: "flex flex-col gap-16 p-16"
689
- }, {
690
- default: R(() => [
691
- a("div", rt, $(e(r)("connect.analytic.summary.title")), 1),
692
- a("div", ct, [
693
- (i(), k(T, null, P(S, (n, t) => a("div", {
694
- key: n.key,
695
- class: se(["px-8", { "xs:!border-r": t % 2 == 0 }])
696
- }, [
697
- a("div", ut, $(n.key), 1),
698
- a("div", mt, $(n.value()), 1)
699
- ], 2)), 64))
700
- ])
701
- ]),
702
- _: 1
703
- })
704
- ]),
705
- a("div", dt, [
706
- d(E, {
707
- variant: "outlined",
708
- class: "p-16"
709
- }, {
710
- default: R(() => [
711
- d(U, { title: "Tier Distribution" }),
712
- d(Ye, {
713
- data: e(o),
714
- metrics: e(b)
715
- }, null, 8, ["data", "metrics"])
716
- ]),
717
- _: 1
718
- }),
719
- d(ot)
720
- ]),
721
- e(p).length ? I("", !0) : (i(), V(E, {
722
- key: 0,
723
- variant: "outlined",
724
- class: "flex flex-col gap-y-24 items-center p-16"
725
- }, {
726
- default: R(() => [
727
- f[3] || (f[3] = a("img", {
728
- src: le,
729
- class: "w-[150px]"
730
- }, null, -1)),
731
- f[4] || (f[4] = a("div", { class: "fm-typo-en-title-sm-800 text-center" }, " Create campaign group to track performance ", -1)),
732
- a("div", pt, $(e(r)("connect.analytic.emptyState.description")), 1),
733
- a("div", ft, [
734
- d(j, {
735
- label: e(r)("connect.analytic.emptyState.action"),
736
- icon: "add",
737
- onClick: f[2] || (f[2] = (n) => x())
738
- }, null, 8, ["label"])
739
- ])
740
- ]),
741
- _: 1
742
- })),
743
- (i(!0), k(T, null, P(e(W), (n) => (i(), V(Pe, {
744
- key: n._id.toString(),
745
- group: n,
746
- "on-edit": x
747
- }, null, 8, ["group"]))), 128)),
748
- d(Qe, {
749
- ref_key: "sheetRef",
750
- ref: g,
751
- onSuccess: D
752
- }, null, 512)
753
- ])
754
- ], 64);
755
- };
756
- }
757
- });
758
- export {
759
- Ut as default
760
- };