@feedmepos/mf-connect 0.0.4-beta.2 → 0.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/Analytic-XsqIKjg4.js +1 -0
- package/dist/assets/Broadcast-Dz-FscmF.js +1 -0
- package/dist/assets/CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BujPf8x6.js +1 -0
- package/dist/assets/Card-D9K2A6-E.js +1 -0
- package/dist/assets/ChipMenu.vue_vue_type_script_setup_true_lang-CsGgYPFM.js +1 -0
- package/dist/assets/Collections-ns_Jvys8.js +1 -0
- package/dist/assets/Credit-C7uaBS8G.js +1 -0
- package/dist/assets/EditCampaignSheet.vue_vue_type_script_setup_true_lang-C0Xomf3d.js +2 -0
- package/dist/assets/EffectSheet-BGbGarYC.css +1 -0
- package/dist/assets/EffectSheet.vue_vue_type_style_index_0_lang-LpSxDaP8.js +84 -0
- package/dist/assets/Experience-DXbTqFBT.js +1 -0
- package/dist/assets/Game-CkKwTMdw.js +1 -0
- package/dist/assets/ImageInput.vue_vue_type_script_setup_true_lang-CCuaZFwt.js +1 -0
- package/dist/assets/JsonViewer-BWdrUcER.js +1 -0
- package/dist/assets/JsonViewer-TCQu3aHR.css +1 -0
- package/dist/assets/MainLayout-DiZ38QBb.js +9 -0
- package/dist/assets/Marketing-DHgKBK7s.js +1 -0
- package/dist/assets/Member-BFOjwUZ-.js +1 -0
- package/dist/assets/MemberList-Bi4euQbG.js +2 -0
- package/dist/assets/MemberOverview-ByPmPfmr.js +1 -0
- package/dist/assets/MemberTransactions-wv8rktP1.js +1 -0
- package/dist/assets/MessageInput.vue_vue_type_script_setup_true_lang-_lB_cppN.js +1 -0
- package/dist/assets/Point-D1uQ_zi1.js +1 -0
- package/dist/assets/Promotion-B9c2OYtA.js +1 -0
- package/dist/assets/RuleGroup.vue_vue_type_script_setup_true_lang-DojVdz8u.js +1 -0
- package/dist/assets/Segment-pjOA51eq.js +1 -0
- package/dist/assets/Setting-OtgyBOGk.js +8 -0
- package/dist/assets/Store-CJSGCyws.js +3 -0
- package/dist/assets/StoreRewards-DSPXA0nm.js +1 -0
- package/dist/assets/StoreTransactions.vue_vue_type_script_setup_true_lang-CXxZ8vT7.js +1 -0
- package/dist/assets/TargetLocationInput.vue_vue_type_script_setup_true_lang-B4UebvZ7.js +1 -0
- package/dist/assets/Tier-D6RhTb4u.js +7 -0
- package/dist/assets/Title-C5q2vE9i.js +1 -0
- package/dist/assets/Transaction-DrxJSWy7.js +1 -0
- package/dist/assets/Voucher-tBvXmOu9.js +1 -0
- package/dist/assets/ZodTextField.vue_vue_type_script_setup_true_lang-Dpxt04Yi.js +1 -0
- package/dist/assets/campaign-C02xBw-U.js +1 -0
- package/dist/assets/campaign-DFKsTujB.js +1 -0
- package/dist/assets/campaign-RaA2how_.png +0 -0
- package/dist/assets/collection.fn-XeAQiy2e.js +1 -0
- package/dist/assets/dto-jiD_9888.js +1 -0
- package/dist/assets/effect-JKYpiYIk.js +1 -0
- package/dist/assets/helper-DJw9ArrH.js +1 -0
- package/dist/assets/index-Aywm26oG.js +1 -0
- package/dist/assets/index-BCbWWyGB.js +1 -0
- package/dist/assets/index-BDoiV8qX.js +1 -0
- package/dist/assets/index-BeQzC2Hy.css +1 -0
- package/dist/assets/index-BpFeuIxZ.js +1 -0
- package/dist/assets/index-CT3SY4v4.js +6 -0
- package/dist/assets/index-CY-yFFeT.js +16 -0
- package/dist/assets/index-ChOJjj6_.js +2455 -0
- package/dist/assets/index-DEASct5_.js +1 -0
- package/dist/assets/index-DLmGTZ8t.js +1 -0
- package/dist/assets/index-Ddc7FFA7.js +1 -0
- package/dist/assets/index-DyuxW8ak.js +42 -0
- package/dist/assets/index-KvahLGSQ.js +1 -0
- package/dist/assets/index-clhrUTcF.js +1 -0
- package/dist/assets/index-nLnzOIMT.js +1 -0
- package/dist/assets/loading-vPEGhWbt.js +1 -0
- package/dist/assets/lodash-BEGh9Xm-.js +27 -0
- package/dist/assets/membership-CXrF-E0m.js +1 -0
- package/dist/assets/moment-G82_0lEo.js +10 -0
- package/dist/assets/money-CuuiG4HR.js +1 -0
- package/dist/assets/number-B2g3Qpa4.js +1 -0
- package/dist/assets/object-BR0mMUJk.js +1 -0
- package/dist/assets/objectId-CjGgm01l.js +1 -0
- package/dist/assets/rule-builder-CuZa3154.js +1 -0
- package/dist/assets/rule-nHDm3dEn.js +7 -0
- package/dist/assets/template-bmRsMRsK.js +1 -0
- package/dist/assets/tier-Ckw3--LB.png +0 -0
- package/dist/assets/tier-zcR_G9_e.js +1 -0
- package/dist/assets/title-DnaKpu2C.png +0 -0
- package/dist/assets/xlsx-BkdIhkZ0.js +95 -0
- package/dist/index.html +18 -0
- package/package.json +1 -1
- package/dist/Analytic-DHQR-SHk.js +0 -614
- package/dist/Broadcast-KzqGidbi.js +0 -216
- package/dist/CampaignTypeDialog.vue_vue_type_script_setup_true_lang-BiyMRarb.js +0 -117
- package/dist/Card-BJiSrOCc.js +0 -775
- package/dist/ChipMenu.vue_vue_type_script_setup_true_lang-BPpZZNkr.js +0 -97
- package/dist/Collections-TNmJik3t.js +0 -437
- package/dist/Credit-CARACfnX.js +0 -214
- package/dist/EditCampaignSheet.vue_vue_type_script_setup_true_lang-2Yoq-zqV.js +0 -1952
- package/dist/EffectSheet.vue_vue_type_style_index_0_lang-ATryhexJ.js +0 -309
- package/dist/Experience-B4s-rhnj.js +0 -211
- package/dist/Game-7NH8wnr2.js +0 -242
- package/dist/ImageInput.vue_vue_type_script_setup_true_lang-DMsxZkxf.js +0 -144
- package/dist/JsonViewer-bHzawHht.js +0 -87
- package/dist/MainLayout-CCalJ8jQ.js +0 -18770
- package/dist/Marketing-gMb3Sr9f.js +0 -309
- package/dist/Member-Bz8mHlcc.js +0 -90
- package/dist/MemberList-zsDGIO6y.js +0 -1752
- package/dist/MemberOverview-C2n9oJZh.js +0 -58
- package/dist/MemberTransactions-BjpxVoMf.js +0 -38
- package/dist/MessageInput.vue_vue_type_script_setup_true_lang-CYxM1D3h.js +0 -163
- package/dist/Point-gmL-uWKm.js +0 -211
- package/dist/Promotion-CzFeZVp4.js +0 -219
- package/dist/RuleGroup.vue_vue_type_script_setup_true_lang-dwAnXr4W.js +0 -1461
- package/dist/Segment-BvV8j0mY.js +0 -392
- package/dist/Setting-B1xDS3WQ.js +0 -1862
- package/dist/Store-CL3Lstwk.js +0 -1415
- package/dist/StoreRewards-BJroZjFy.js +0 -432
- package/dist/StoreTransactions.vue_vue_type_script_setup_true_lang-f3qm_T86.js +0 -640
- package/dist/TargetLocationInput.vue_vue_type_script_setup_true_lang-utmfVlSO.js +0 -124
- package/dist/Tier-BRl_TyIf.js +0 -821
- package/dist/Title-BxDn64c_.js +0 -496
- package/dist/Transaction-1uKiQhtr.js +0 -34
- package/dist/Voucher-DrARkBsQ.js +0 -448
- package/dist/ZodTextField.vue_vue_type_script_setup_true_lang-3LlSDiq0.js +0 -140
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
- package/dist/app-B11W-Deo.js +0 -31282
- package/dist/app.js +0 -5
- package/dist/campaign-BHTb0aK4.js +0 -93
- package/dist/campaign-CpzFl8Vr.js +0 -4
- package/dist/collection.fn-DHlfGYAC.js +0 -24
- package/dist/dto-8rV8zC62.js +0 -353
- package/dist/effect-CKdUGQ_o.js +0 -61
- package/dist/helper-lRzyFn6k.js +0 -58
- package/dist/index-BNeObBNg.js +0 -38
- package/dist/index-BSOyX20d.js +0 -1742
- package/dist/index-BsWhC0Kp.js +0 -674
- package/dist/index-ByjvgiZy.js +0 -104
- package/dist/index-COcIG_uC.js +0 -190
- package/dist/index-CmfAkpnK.js +0 -64
- package/dist/index-Cq9ispy9.js +0 -1757
- package/dist/index-CuvNtC_M.js +0 -61
- package/dist/index-DKvCRP1s.js +0 -234
- package/dist/index-DLJX211w.js +0 -99
- package/dist/index-Dbd4WA4r.js +0 -61
- package/dist/index-PjAFHAGP.js +0 -8796
- package/dist/index-_pPtg7ss.js +0 -29565
- package/dist/loading-CWNfxQGq.js +0 -3131
- package/dist/lodash-DXLJObRV.js +0 -3678
- package/dist/membership-BS-83QpN.js +0 -213
- package/dist/moment-BWErdI6_.js +0 -2578
- package/dist/money-DW-bWdhO.js +0 -15
- package/dist/number-CDpC21qz.js +0 -12
- package/dist/object-qECH92oz.js +0 -26
- package/dist/objectId-dwaoBfJX.js +0 -7
- package/dist/rule-B4_ou2AD.js +0 -1966
- package/dist/rule-builder-COd6-sY6.js +0 -89
- package/dist/style.css +0 -1
- package/dist/template-Q-P6k0CF.js +0 -190
- package/dist/tier-BJDhpH6X.js +0 -4
- package/dist/xlsx-DM234X6E.js +0 -15491
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as X}from"./campaign-DFKsTujB.js";import{f as Y}from"./number-B2g3Qpa4.js";import{d as I,o,e as h,F as V,t as T,q as a,x as U,m as B,h as S,i as F,y as O,j as p,u as n,z as ee,r as C,a as P,A as q,b as te,B as M,l as ae,N as ne,C as se,D as oe,E as le,G as ie,s as re}from"./index-ChOJjj6_.js";import{C as ce,F as ue,a as de}from"./dto-jiD_9888.js";import{c as G}from"./index-BpFeuIxZ.js";import{Z as me,_ as pe}from"./ZodTextField.vue_vue_type_script_setup_true_lang-Dpxt04Yi.js";import{J as fe}from"./JsonViewer-BWdrUcER.js";import"./index-CY-yFFeT.js";import{u as ve}from"./loading-vPEGhWbt.js";import{g as ye}from"./object-BR0mMUJk.js";import{u as _e}from"./campaign-C02xBw-U.js";import{m as ge}from"./index-KvahLGSQ.js";import"./moment-G82_0lEo.js";import"./index-DEASct5_.js";import"./index-DyuxW8ak.js";import"./index-CT3SY4v4.js";import"./index-nLnzOIMT.js";import"./index-Aywm26oG.js";import"./effect-JKYpiYIk.js";import"./rule-builder-CuZa3154.js";import"./rule-nHDm3dEn.js";import"./membership-CXrF-E0m.js";import"./index-BDoiV8qX.js";import"./index-DLmGTZ8t.js";const he={class:"divide-x flex flex-wrap"},be={class:"fm-typo-en-body-md-400 mb-2 text-fm-color-typo-secondary"},xe={class:"fm-typo-en-title-sm-800"},Ce=I({__name:"CampaignStat",props:{data:{type:Object,required:!0}},setup(m){const R=m,i=[{label:"Credit Received",key:"CREDIT"},{label:"EXP Received",key:"POINT"},{label:"Points Received",key:"COIN"},{label:"Message Sent",key:"BROADCAST"},{label:"Vouchers Claimed",key:"VOUCHER"},{label:"Users Joined",key:"UNIQUE_USER"}];function u(_){var r;return Y((r=R.data)==null?void 0:r[_],2,!0)||0}return(_,r)=>(o(),h("div",he,[(o(),h(V,null,T(i,e=>(o(),h(V,null,[e.key in m.data?(o(),h("div",{key:e.key,class:"px-16"},[a("div",be,U(e.label),1),a("div",xe,U(u(e.key)),1)])):B("",!0)],64))),64))]))}}),ke={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"},Se={class:"fm-typo-en-body-md-600 overflow-hidden select-none text-ellipsis text-fm-color-typo-secondary whitespace-nowrap"},we=I({__name:"CampaignChip",props:{type:{type:String,required:!0},icon:{type:Object,default:()=>({icon:"circle",color:"typo-sucess"})},label:{type:String,default:""}},setup(m){const i=ce[m.type];return(u,_)=>{const r=S("FmIcon"),e=S("FmTooltip");return o(),F(e,{variant:"plain",placement:"top",content:m.label},{default:O(()=>[a("div",ke,[p(r,{name:n(i).icon,outline:"",size:"sm"},null,8,["name"]),a("div",Se,U(m.label),1),p(r,{name:m.icon.name,color:m.icon.color,size:"sm"},null,8,["name","color"])])]),_:1},8,["content"])}}}),$e={class:"flex flex-col"},Fe={class:"flex flex-nowrap items-center justify-between mb-12"},Ve={class:"flex gap-4 items-center justify-start"},Re={class:"fm-typo-en-title-sm-800"},Ae={class:"flex flex-wrap gap-4 items-center mb-16 overflow-y-hidden"},Ue=I({__name:"CampaignGroup",props:{group:{type:Object,required:!0},onEdit:{type:Function,required:!0}},emits:["changed"],setup(m,{emit:R}){ee(),C(!1);const i=m,u=C([]),_=P(()=>u.value.reduce((e,c)=>({...e,[c.type]:c.totalAmount}),{})),r=P(()=>{var e;return((e=i.group.pf_campaigns)==null?void 0:e.map(c=>({campaign:c,label:c.name})))||[]});return q(async()=>{u.value=await G.readStats({groupId:i.group._id.toString()})}),(e,c)=>{const l=S("FmButton"),s=S("FmCard");return o(),F(s,{class:"mb-24 p-24",variant:"outlined"},{default:O(()=>[a("div",$e,[a("div",Fe,[a("div",Ve,[a("div",Re,U(m.group.name),1),p(l,{icon:"edit",variant:"tertiary",onClick:c[0]||(c[0]=f=>m.onEdit(m.group))})])]),a("div",Ae,[(o(!0),h(V,null,T(n(r),f=>(o(),F(we,{key:e.index,type:f.campaign.type,label:f.label},null,8,["type","label"]))),128))]),p(Ce,{data:n(_)},null,8,["data"])])]),_:1})}}}),Oe={class:"ml-32 flex flex-col"},Ee=I({__name:"CampaignCard",props:{title:{},items:{},modelValue:{}},emits:["update:model-value"],setup(m,{emit:R}){const i=m,u=R,_=l=>{l?c.value=i.items.map(s=>s.value):c.value=[],e.value=l,u("update:model-value",c.value)},r=l=>{c.value=l,e.value=l.length===i.items.length,u("update:model-value",l)},e=C(!1),c=C([]);return te(()=>i.modelValue,()=>{c.value=i.modelValue.filter(l=>i.items.find(s=>s.value===l))}),q(()=>{c.value=i.modelValue.filter(l=>i.items.find(s=>s.value===l))}),(l,s)=>{const f=S("FmCheckbox"),b=S("FmCard");return o(),F(b,{variant:"outlined",class:"p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-3"},{default:O(()=>[p(f,{"model-value":n(e),value:"1",label:i.title,indeterminate:n(c).length>0,"onUpdate:modelValue":_},null,8,["model-value","label","indeterminate"]),a("div",Oe,[(o(!0),h(V,null,T(i.items,(g,w)=>(o(),F(f,{key:w,"model-value":n(c),label:g.label,value:g.value,"onUpdate:modelValue":r},null,8,["model-value","label","value"]))),128))])]),_:1})}}}),Be={class:"space-y-16"},Te={class:"flex items-center"},Ge={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary w-[300px]"},Pe={class:"space-y-[40px]"},Ie=I({__name:"LinkCampaign",props:{modelValue:{type:Array,required:!0},campaigns:{type:Object,required:!0}},emits:["update:model-value"],setup(m,{emit:R}){const i=C(""),u=C([]),_=m,r=R,e=P(()=>Object.entries(_.campaigns).reduce((l,[s,f])=>{const b=f.filter(g=>g.label.toLowerCase().includes(i.value.toLowerCase()));return b.length>0&&(l[s]=b),l},{}));function c(l,s){u.value=u.value.filter(f=>!s.map(b=>b.value).includes(f)),u.value=[...new Set([...u.value,...l])],r("update:model-value",u.value)}return q(()=>{u.value=_.modelValue}),(l,s)=>{const f=S("FmTextField");return o(),h(V,null,[p(fe,{json:m.campaigns},null,8,["json"]),a("div",Be,[a("div",Te,[a("div",Ge,U(n(u).length)+" campaign(s) linked ",1),p(f,{modelValue:n(i),"onUpdate:modelValue":s[0]||(s[0]=b=>M(i)?i.value=b:null),"prepend-icon":"search",placeholder:"Search",class:"w-full"},null,8,["modelValue"])]),a("div",Pe,[(o(!0),h(V,null,T(n(e),(b,g)=>(o(),F(Ee,{"model-value":n(u),title:g,items:b,"onUpdate:modelValue":w=>c(w,b)},null,8,["model-value","title","items","onUpdate:modelValue"]))),256))])])],64)}}}),Le={class:"flex items-center gap-x-8"},je={key:0,class:"space-y-16 pr-12"},Ne=a("div",{class:"fm-typo-en-title-sm-800"},"Group detail",-1),De=a("div",{class:"fm-typo-en-title-sm-800"},"Link campaign",-1),Me={class:"flex items-center gap-x-16"},qe={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},He={class:"mt-16"},ze={class:"text-fm-color-typo-secondary fm-typo-en-body-md-600 py-8 px-16 bg-gray-100"},Ke={class:"flex justify-between items-center py-8 px-16 border-b-1"},Je={class:"flex items-center gap-8"},We=I({__name:"AnalyticSheet",emits:["success"],setup(m,{expose:R,emit:i}){const u=i,_=ae();ne();const r=C(!1),e=C(!1),c={name:"",campaigns:[]},l=C(""),s=C({...c}),f=ue.superRefine((d,t)=>{}),b=C([]),g=C(null),{global:w,minor:v}=ve,E=P(()=>{const d=f.safeParse(s.value);return d.success?[]:d.error.errors});function L(d){var t;r.value=!0,d?(g.value={...d},s.value={...d,campaigns:(t=d.pf_campaigns)==null?void 0:t.map(y=>y._id)}):(g.value=null,s.value={...c})}function k(){r.value=!1,g.value=null}function H(){e.value=!0}async function $(){const d=await G.readAll({limit:1e3,skip:0,sortBy:"_id",search:"",descending:!0});b.value=d.resources.filter(t=>!["MEMBERSHIP","REWARD_POOL"].includes(t.type)&&!["ISSUE_REWARD"].includes("event"in t?t==null?void 0:t.event.type:""))}const N=P(()=>{const d=y=>y.map(A=>({label:A.name,value:A._id}));return ye(b.value,y=>de.formattedType(y.type),d)}),K=P(()=>Object.entries(N.value).reduce((d,[t,y])=>{const A=y.filter(j=>{var D,x;return(x=(D=s.value)==null?void 0:D.campaigns)==null?void 0:x.includes(j.value)}).filter(j=>j.label.toLowerCase().includes(l.value.toLowerCase()));return A.length>0&&(d[t]=A),d},{}));function J(d){var y,A;const t=(y=s.value.campaigns)==null?void 0:y.indexOf(d);t!=null&&t>-1&&((A=s.value.campaigns)==null||A.splice(t,1))}async function W(){f.safeParse(s.value).success&&await v(async()=>{var t;g.value?await G.updateGroup((t=g.value)==null?void 0:t._id,s.value):await G.createGroup(s.value),u("success"),k()},{message:"Saving group",successMessage:"Group saved"})}async function Z(){await v(async()=>{var d;await G.deleteGroup((d=g.value)==null?void 0:d._id),u("success"),k()},{message:"Deleting group",successMessage:"Group deleted"})}return q(async()=>{await $()}),R({showSheet:L,hideSheet:k}),(d,t)=>{const y=S("FmButton"),A=S("FmTextField"),j=S("FmList"),D=S("FmSideSheet");return o(),F(D,{modelValue:n(r),"onUpdate:modelValue":t[7]||(t[7]=x=>M(r)?r.value=x:null),header:n(g)?"Edit group":"Add group","dismiss-away":"","close-button":!0,"max-width":550},se({"side-sheet-footer":O(()=>[a("div",Je,[n(e)?B("",!0):(o(),h(V,{key:0},[p(y,{label:"Submit",onClick:W,disabled:n(E).length>0||n(_).isLoading},null,8,["disabled"]),p(y,{label:"Cancel",onClick:t[4]||(t[4]=x=>k()),variant:"tertiary"}),n(g)?(o(),F(y,{key:0,label:"Delete",variant:"plain",class:"ml-auto fm-color-system-error-300",onClick:t[5]||(t[5]=x=>Z())})):B("",!0)],64)),n(e)?(o(),F(y,{key:1,label:"Confirm",onClick:t[6]||(t[6]=x=>e.value=!1)})):B("",!0)])]),default:O(()=>[n(e)?B("",!0):(o(),h("div",je,[Ne,p(pe,{modelValue:n(s).name,"onUpdate:modelValue":t[1]||(t[1]=x=>n(s).name=x),label:"Name",schema:n(me).typeAtPath(n(f),"name")},null,8,["modelValue","schema"]),De,a("div",Me,[a("div",qe,U(n(s).campaigns.length)+" campaign(s) linked ",1),p(A,{modelValue:n(l),"onUpdate:modelValue":t[2]||(t[2]=x=>M(l)?l.value=x:null),"prepend-icon":"search",placeholder:"Search",class:"w-auto"},null,8,["modelValue"])]),p(y,{variant:"plain",icon:"link",label:"Link Campaign",onClick:H})])),n(e)?(o(),F(Ie,{key:1,modelValue:n(s).campaigns,"onUpdate:modelValue":t[3]||(t[3]=x=>n(s).campaigns=x),campaigns:n(N)},null,8,["modelValue","campaigns"])):B("",!0),a("div",He,[n(e)?B("",!0):(o(!0),h(V,{key:0},T(n(K),(x,Q)=>(o(),h("div",null,[a("div",ze,U(Q),1),p(j,{separator:!0},{default:O(()=>[(o(!0),h(V,null,T(x,z=>(o(),h("div",Ke,[a("div",null,U(z.label),1),a("div",null,[p(y,{icon:"delete",onClick:it=>J(z.value),variant:"tertiary"},null,8,["onClick"])])]))),256))]),_:2},1024)]))),256))])]),_:2},[n(e)?{name:"side-sheet-header",fn:O(()=>[a("div",Le,[p(y,{icon:"arrow_back",variant:"tertiary",onClick:t[0]||(t[0]=x=>e.value=!1)}),oe("Link campaign ")])]),key:"0"}:void 0]),1032,["modelValue","header"])}}}),Ze={class:"px-24 flex flex-col gap-y-32 pb-24"},Qe={class:"space-y-16"},Xe={class:"flex items-center justify-end"},Ye=a("div",{class:"fm-typo-en-body-lg-600"},"Connect summary",-1),et={class:"grid grid-cols-4 xs:grid-cols-2 gap-4 divide-x xs:divide-x-0"},tt={class:"fm-typo-body-md-400 fm-typo-en-body-md-400 mb-2 text-fm-color-typo-secondary"},at={class:"fm-typo-en-title-sm-800"},nt=a("img",{src:X,class:"w-[150px]"},null,-1),st=a("div",{class:"fm-typo-en-title-sm-800 text-center"}," Create campaign group to track performance ",-1),ot=a("div",{class:"fm-typo-body-en-md-400 text-center text-fm-color-typo-secondary"}," Start organizing your campaigns and promotions by creating groups. Groups allow you to aggregate performance metrics across multiple vouchers, promotions, or other rewards. ",-1),lt={class:"flex gap-16 items-center"},Ot=I({__name:"Analytic",setup(m){const R={label:"Add group",value:"create",isPrimary:!0,prependIcon:"add"},i=_e(),u=C(),_=C([]),r=C(""),e=le({totalCampaign:0,totalProgram:0,totalMember:0}),c=C("1"),l=[{key:"Total campaign",value:()=>e.totalCampaign},{key:"Total Program",value:()=>e.totalProgram},{key:"Total Member",value:()=>e.totalMember}];function s(w){var v;c.value=new Date().toISOString(),(v=u.value)==null||v.showSheet(w)}async function f(){await i.readGroups();const w=await G.readAllGrouped({limit:100,skip:0,sortBy:"_id",search:"",descending:!0});_.value=w.resources}async function b(){var E,L;const w=await ge.read({limit:1,skip:0,sortBy:"_id",search:"",descending:!1}),v=await G.readAll({limit:1e3,skip:0,sortBy:"_id",search:"",descending:!1});e.totalCampaign=((E=v.resources)==null?void 0:E.filter(k=>["PROMOTION","VOUCHER","BROADCAST"].includes(k.type)&&!["ISSUE_REWARD"].includes("event"in k?k==null?void 0:k.event.type:"")).length)??0,e.totalProgram=((L=v.resources)==null?void 0:L.filter(k=>["POINT","COIN","CREDIT","GAME"].includes(k.type)).length)??0,e.totalMember=w.meta.totalResources??0}const g=P(()=>_.value.filter(w=>{var v;return w.name.includes(r.value)||((v=w.pf_campaigns)==null?void 0:v.filter(E=>E.name.includes(r.value)).length)}));return ie(async()=>{await f(),await b()}),(w,v)=>{const E=S("FmPageHead"),L=S("FmSearch"),k=S("FmCard"),H=S("FmButton");return o(),h(V,null,[p(E,{title:"Analytic",actions:n(_).length>0?[R]:[],"onClick:action":v[0]||(v[0]=$=>s())},null,8,["actions"]),a("div",Ze,[a("div",Qe,[a("div",Xe,[p(L,{class:"xs:hidden",modelValue:n(r),"onUpdate:modelValue":v[1]||(v[1]=$=>M(r)?r.value=$:null),placeholder:"Search Table",collapsible:""},null,8,["modelValue"])]),p(k,{variant:"outlined",class:"flex flex-col gap-16 p-16"},{default:O(()=>[Ye,a("div",et,[(o(),h(V,null,T(l,($,N)=>a("div",{key:$.key,class:re(["px-8",{"xs:!border-r":N%2==0}])},[a("div",tt,U($.key),1),a("div",at,U($.value()),1)],2)),64))])]),_:1})]),n(_).length?B("",!0):(o(),F(k,{key:0,variant:"outlined",class:"flex flex-col gap-y-24 items-center p-16"},{default:O(()=>[nt,st,ot,a("div",lt,[p(H,{label:"Create group",icon:"add",onClick:v[2]||(v[2]=$=>s())})])]),_:1})),(o(!0),h(V,null,T(n(g),$=>(o(),F(Ue,{key:$._id.toString(),group:$,"on-edit":s},null,8,["group"]))),128)),p(We,{ref_key:"sheetRef",ref:u,onSuccess:f},null,512)])],64)}}});export{Ot as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as N}from"./campaign-DFKsTujB.js";import{d as P,M as U,H as j,r as _,a as H,A as q,h as i,o as l,e as f,j as r,u as a,q as s,F as g,y as h,t as E,m as J,i as w,I as z,J as G,K as Q,x as C}from"./index-ChOJjj6_.js";import{u as W,p as X}from"./loading-vPEGhWbt.js";import{u as Y}from"./campaign-C02xBw-U.js";import{g as F,b as k}from"./dto-jiD_9888.js";import{_ as Z}from"./ChipMenu.vue_vue_type_script_setup_true_lang-CsGgYPFM.js";import{_ as ee}from"./EditCampaignSheet.vue_vue_type_script_setup_true_lang-C0Xomf3d.js";import{u as te}from"./template-bmRsMRsK.js";import{c as y}from"./index-BpFeuIxZ.js";import"./moment-G82_0lEo.js";import"./index-DEASct5_.js";import"./index-CY-yFFeT.js";import"./index-DyuxW8ak.js";import"./index-CT3SY4v4.js";import"./index-nLnzOIMT.js";import"./index-Aywm26oG.js";import"./effect-JKYpiYIk.js";import"./rule-builder-CuZa3154.js";import"./rule-nHDm3dEn.js";import"./membership-CXrF-E0m.js";import"./index-BDoiV8qX.js";import"./index-DLmGTZ8t.js";import"./lodash-BEGh9Xm-.js";import"./ZodTextField.vue_vue_type_script_setup_true_lang-Dpxt04Yi.js";import"./JsonViewer-BWdrUcER.js";import"./ImageInput.vue_vue_type_script_setup_true_lang-CCuaZFwt.js";import"./EffectSheet.vue_vue_type_style_index_0_lang-LpSxDaP8.js";import"./TargetLocationInput.vue_vue_type_script_setup_true_lang-B4UebvZ7.js";import"./RuleGroup.vue_vue_type_script_setup_true_lang-DojVdz8u.js";import"./index-Ddc7FFA7.js";import"./helper-DJw9ArrH.js";import"./object-BR0mMUJk.js";import"./index-clhrUTcF.js";import"./MessageInput.vue_vue_type_script_setup_true_lang-_lB_cppN.js";import"./collection.fn-XeAQiy2e.js";import"./index-BCbWWyGB.js";const oe={class:"px-24 flex flex-col gap-y-16"},ae={class:"flex items-center justify-between w-full"},se={class:"flex gap-8 overflow-x-auto"},ne={class:"space-y-8"},re={class:"flex w-full gap-4 items-center"},ie={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},le={class:"space-y-4"},ce={class:"fm-typo-en-body-lg-600"},me={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},de={key:0},pe=s("div",{class:"text-fm-color-typo-secondary fm-typo-en-body-md-600"}," No results found ",-1),ue=[pe],fe=s("img",{src:N,class:"aspect-square w-[150px]"},null,-1),ye=s("div",{class:"flex flex-col gap-16 text-center"},[s("div",{class:"fm-typo-en-title-sm-800"}," Create your broadcast campaign "),s("div",{class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"}," Broadcasts are virtual money that customers can use to pay for their purchases, similar to cash within your store. ")],-1),Ze=P({__name:"Broadcast",setup(_e){const A={label:"Create campaign",value:"create",isPrimary:!0,prependIcon:"add"},V=te("BROADCAST",U()),R=j(),c=Y(),{global:L,minor:b}=W,D=_(new Date().toISOString()),n=_({searchKey:"",location:null}),p=H(()=>c.campaigns.broadcast.filter(e=>!n.value.location||!e.targetLocation||e.targetLocation.includes(n.value.location))),K=[{header:"Broadcast title",accessorFn:e=>e.name},{header:"Status",cell(e){return F(e.row.original)}},{header:"Summary",accessorFn:e=>k(e)},{header:"Message sent",accessorFn:e=>e.currentReceive??"N/A"},{header:"Actions",cell(e){return z(G.FmButton,{variant:"tertiary",icon:"delete",iconColor:"neutral-gray-400",onClick:o=>{o.stopPropagation(),x(e.row.original)}})}}],v=_();async function x(e){await X.remove(`Are you sure you want to remove ${e.name}?`)&&await b(async()=>{await y.delete(e._id),await c.read("BROADCAST")},{message:`Removing ${e.name}`,successMessage:`Removed ${e.name} successfully`})}async function u(e){D.value=new Date().toISOString(),e?await o():V.open(async m=>{await o(m)});async function o(m){var d;(d=v.value)==null||d.showSheet(!0,"BROADCAST",e?await y.readById(e._id):void 0,m)}}async function T(e){await b(async()=>{e.campaign._id?await y.update(e.campaign._id,e):await y.create(e),await c.read("BROADCAST")},{message:`${e.campaign._id?"Updating":"Creating"} broadcast`,successMessage:`Broadcast ${e.campaign._id?"updated":"created"} successfully`})}return q(async()=>{await L(async()=>{await c.read("BROADCAST")})}),(e,o)=>{const m=i("FmPageHead"),d=i("FmSearch"),$=i("FmTable"),S=i("FmButton"),I=i("FmListItem"),O=i("FmList"),M=i("FmCard");return l(),f(g,null,[r(m,{title:"Broadcast",actions:a(p).length>0?[A]:[],"onClick:action":o[0]||(o[0]=()=>u())},null,8,["actions"]),s("div",oe,[r(d,{modelValue:a(n).searchKey,"onUpdate:modelValue":o[1]||(o[1]=t=>a(n).searchKey=t),class:"hidden xs:block border-b-2 border-fm-color-neutral-gray-100",placeholder:"search",collapsible:""},null,8,["modelValue"]),a(c).campaigns.broadcast&&a(c).campaigns.broadcast.length>0?(l(),f(g,{key:0},[s("div",ae,[s("div",se,[r(Z,{modelValue:a(n).location,"onUpdate:modelValue":o[2]||(o[2]=t=>a(n).location=t),label:"Location: ","show-item-label":!0,icon:"storefront",placement:"bottom-start",items:a(R).locationItems},null,8,["modelValue","items"])]),r(d,{modelValue:a(n).searchKey,"onUpdate:modelValue":o[3]||(o[3]=t=>a(n).searchKey=t),class:"xs:hidden",placeholder:"search",collapsible:""},null,8,["modelValue"])]),r($,{class:"xs:hidden","row-data":a(p),"column-defs":K,"search-value":a(n).searchKey,"column-filter":[],onRowClick:o[4]||(o[4]=t=>u(t.original)),"hide-footer":!0},null,8,["row-data","search-value"]),r(O,{class:"hidden xs:flex flex-col mx-[-24px]"},{default:h(()=>[(l(!0),f(g,null,E(a(p).filter(t=>t.name.toLowerCase().includes(a(n).searchKey.toLowerCase())),t=>(l(),w(I,{key:t._id.toString(),onClick:B=>u(t),class:"py-12 px-16 flex items-center justify-between border-b border-fm-color-neutral-gray-100"},{default:h(()=>[s("div",ne,[s("div",re,[(l(),w(Q(a(F)(t)))),s("div",ie,C(t.currentReceive??0)+" sent ",1)]),s("div",le,[s("div",ce,C(t.name),1),s("div",me,C(a(k)(t)),1)])]),r(S,{icon:"delete","icon-color":"neutral-gray-400",variant:"tertiary",onClick:B=>(B.stopPropagation(),x(t))},null,8,["onClick"])]),_:2},1032,["onClick"]))),128))]),_:1}),a(p).length==0?(l(),f("div",de,ue)):J("",!0)],64)):(l(),w(M,{key:1,variant:"outlined",class:"w-full flex flex-col items-center justify-center gap-y-24 p-24"},{default:h(()=>[fe,ye,r(S,{variant:"primary",label:"Create broadcast campaign",icon:"add",onClick:o[5]||(o[5]=t=>u())})]),_:1})),r(ee,{ref_key:"sheetRef",ref:v,"onSubmit:modelValue":T},null,512)])],64)}}});export{Ze as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{R as RuleOperator,_}from"./index-DyuxW8ak.js";import{i as isRuleGroup}from"./rule-builder-CuZa3154.js";import{d as defineComponent,M as Mre,h as resolveComponent,o as openBlock,i as createBlock,y as withCtx,q as createBaseVNode,e as createElementBlock,F as Fragment,t as renderList,j as createVNode,x as toDisplayString}from"./index-ChOJjj6_.js";import"./index-nLnzOIMT.js";import{a as F_RUNNABLE_CAMPAIGN_TYPE}from"./index-DEASct5_.js";import"./index-CT3SY4v4.js";import"./index-Ddc7FFA7.js";import"./index-Aywm26oG.js";import"./index-clhrUTcF.js";function validateRule(data,r,date){const rules=new RuleOperator(date??new Date);function meetConditions(e){return Object.entries(e.conditions??{}).reduce((o,[a,t])=>{const s=e.property?e.property==="__now"?rules.ruleNow:_.get(data,e.property):data;if(!t)return o;const i=rules[a](s,t);return o&&i},!0)}function evaluateRuleResult(rr,logic){const target=Object.entries(rr).reduce((e,[o,a])=>e.replace(RegExp(`\\b${o}\\b`,"g"),a?"true":"false"),logic);return!logic||!!eval(target)}function getRuleResults(e){return isRuleGroup(e)?Object.entries(e.rules).reduce((o,[a,t])=>({...o,[a]:isRuleGroup(t)?evaluateRuleResult(getRuleResults(t),t.logic):meetConditions(t)}),{}):{[e.name]:meetConditions(e)}}return isRuleGroup(r)?evaluateRuleResult(getRuleResults(r),r.logic):meetConditions(r)}const _hoisted_1=createBaseVNode("div",{class:""},[createBaseVNode("div",{class:"fm-typo-en-title-sm-800"},"Add benefit"),createBaseVNode("div",{class:"fm-typo-en-body-sm-400 text-fm-color-typo-secondary"}," Select the benefit type that you want to reward the selected tier. ")],-1),_hoisted_2={class:"flex flex-col h-full space-y-24"},_hoisted_3={class:"fm-typo-en-title-sm-800"},_hoisted_4={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_sfc_main=defineComponent({__name:"CampaignTypeDialog",props:{onSelect:{type:Function,required:!0}},setup(e){const o=e,a=Mre(),t=[{title:"Promotion",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.PROMOTION},{title:"Voucher",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.VOUCHER},{title:"Experience",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.POINT},{title:"Point",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.COIN},{title:"Game",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.GAME},{title:"Credit",description:"Special offers or deals made available for a limited time",value:F_RUNNABLE_CAMPAIGN_TYPE.enum.CREDIT}];function s(i){a.close(),o.onSelect(i)}return(i,c)=>{const n=resolveComponent("FmCard");return openBlock(),createBlock(n,{class:"p-24 space-y-16"},{default:withCtx(()=>[_hoisted_1,createBaseVNode("div",_hoisted_2,[(openBlock(),createElementBlock(Fragment,null,renderList(t,l=>createVNode(n,{variant:"outlined",key:l.value,onClick:d=>s(l.value),class:"p-16"},{default:withCtx(()=>[createBaseVNode("div",_hoisted_3,toDisplayString(l.title),1),createBaseVNode("div",_hoisted_4,toDisplayString(l.description),1)]),_:2},1032,["onClick"])),64))])]),_:1})}}});export{_sfc_main as _,validateRule as v};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as te}from"./moment-G82_0lEo.js";import{d as q,r as b,a as V,b as pe,A as z,h,o as _,i as D,y,q as f,j as m,u as n,l as ve,B as W,e as x,t as Y,F,m as T,s as Ee,g as Se,M as ke,C as Te,H as Re,I as $,J as ye}from"./index-ChOJjj6_.js";import"./index-CY-yFFeT.js";import{u as ue,f as se}from"./loading-vPEGhWbt.js";import{u as J}from"./membership-CXrF-E0m.js";import{_ as oe}from"./index-Ddc7FFA7.js";import{m as Q}from"./index-BDoiV8qX.js";import{_ as ae}from"./ImageInput.vue_vue_type_script_setup_true_lang-CCuaZFwt.js";import"./index-nLnzOIMT.js";import"./index-DyuxW8ak.js";import{g as Ae}from"./index-DEASct5_.js";import"./index-CT3SY4v4.js";import"./index-Aywm26oG.js";import"./index-clhrUTcF.js";import{a as Ce}from"./object-BR0mMUJk.js";import{l as Ie}from"./lodash-BEGh9Xm-.js";import{o as Oe}from"./objectId-CjGgm01l.js";import"./rule-builder-CuZa3154.js";import"./helper-DJw9ArrH.js";const Ne=f("div",{class:"fm-typo-en-body-lg-600"},"Number type",-1),De={class:"space-y-16"},xe=f("div",{class:"fm-typo-en-body-lg-600"},"Number Settings",-1),Ue={class:"gap-16 grid grid-cols-2"},we={class:"space-y-16"},He=f("div",{class:"fm-typo-en-body-lg-600"},"Card Settings",-1),Be={key:0,class:"flex flex-col gap-[16px] w-full"},Fe={class:"flex flex-col gap-[8px]"},Ve=f("p",{class:"fm-typo-en-title-sm-800"},"Design preview",-1),Me=["src"],Pe={class:"flex pt-[24px] gap-[24px]"},Ge=["src","onClick","alt"],Le={class:"flex items-center gap-8"},je=q({__name:"CreateCardSheet",emits:["success"],setup(e,{expose:i,emit:A}){const{minor:w}=ue,v=J(),H=b(),S=b(!1),C=A,l=b(!1);function U(u){l.value=u,u&&(o.value={quantity:1,code:"",codeConfig:{length:12,charset:"1234567890",prefix:"",suffix:"",pattern:"####-####-####-####"}})}const o=b({quantity:1,code:"",codeConfig:{length:12,charset:"1234567890",prefix:"",suffix:"",pattern:"####-####-####-####"},setCardOnBind:!1,bundle:void 0}),I=[{label:"Bulk number",value:"bulk",sublabel:"Bulk generate unique number"},{label:"Custom number",value:"single",sublabel:"Enter your own custom number"}],p=[{label:"Alphanumeric",value:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Alphabetic",value:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Alphabetic Lowercase",value:"abcdefghijklmnopqrstuvwxyz"},{label:"Alphabetic Uppercase",value:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Numbers",value:"0123456789"},{label:"Custom",value:""}],a=b(p[0].value),E=b("bulk"),R=b(0),O=V(()=>{var u;return(u=v.membership.design)==null?void 0:u[R.value]}),c=b(!1),r=V(()=>v.sortedStoreCategories.flatMap(u=>u.bundles));async function g(u){var t,B;await((t=H.value)==null?void 0:t.validateInputs()),S.value&&(u.design=(B=O.value)==null?void 0:B.image,await w(async()=>{await Q.createCards(u),await C("success")},{message:"Creating card(s)",successMessage:"Card(s) created"}))}return i({showSheet:U}),pe(()=>o.value.codeConfig.length,(u,t)=>{u!=t&&(o.value.codeConfig.pattern="#".repeat(Number(u)))}),z(async()=>{await v.readMemberStore()}),(u,t)=>{const B=h("FmRadio"),ce=h("FmRadioGroup"),Z=h("FmSwitch"),_e=h("FmStepperField"),fe=h("FmSelect"),M=h("FmTextField"),ge=h("FmTextarea"),G=h("FmButton"),be=h("FmForm"),he=h("FmSideSheet");return _(),D(he,{"max-width":560,"dismiss-away":!0,header:"Create collection",modelValue:n(l),"onUpdate:modelValue":[t[19]||(t[19]=N=>W(l)?l.value=N:null),t[20]||(t[20]=N=>l.value=N)]},{"side-sheet-footer":y(()=>[f("div",Le,[m(G,{label:"Save",onClick:t[17]||(t[17]=N=>g(n(o))),loading:n(ve)().isLoading},null,8,["loading"]),m(G,{label:"Cancel",type:"button",variant:"tertiary",onClick:t[18]||(t[18]=N=>l.value=!1)})])]),default:y(()=>[m(be,{ref_key:"form",ref:H,class:"space-y-40",onValidationSuccess:t[15]||(t[15]=N=>S.value=!0),onValidationFailed:t[16]||(t[16]=N=>S.value=!1)},{default:y(()=>{var N,ee,ne;return[f("div",null,[Ne,m(ce,{modelValue:n(E),"onUpdate:modelValue":t[0]||(t[0]=s=>W(E)?E.value=s:null),inline:!1},{default:y(()=>[(_(),x(F,null,Y(I,s=>m(B,{key:s.value,value:s.value,label:s.label,sublabel:s.sublabel},null,8,["value","label","sublabel"])),64))]),_:1},8,["modelValue"])]),f("div",De,[xe,n(E)==="bulk"?(_(),x(F,{key:0},[m(Z,{"model-value":n(c),"label-placement":"right",value:"true",label:"Advance number setting",required:!0,"onUpdate:modelValue":t[1]||(t[1]=()=>c.value=!n(c))},null,8,["model-value"]),n(c)?(_(),x(F,{key:0},[m(_e,{"model-value":n(o).codeConfig.length||null,"onUpdate:modelValue":t[2]||(t[2]=s=>n(o).codeConfig.length=s),label:"Code length",rules:[s=>Number(s)>=1||"Code length must at least 1"],required:!0},null,8,["model-value","rules"]),m(fe,{label:"Charset","model-value":n(a),items:p,"helper-text":n(o).codeConfig.charset.length>62?`${n(o).codeConfig.charset.substring(0,62)}...`:n(o).codeConfig.charset,"onUpdate:modelValue":t[3]||(t[3]=s=>{a.value=s,n(o).codeConfig.charset=s})},null,8,["model-value","helper-text"]),n(a)===""?(_(),D(M,{key:0,modelValue:n(o).codeConfig.charset,"onUpdate:modelValue":t[4]||(t[4]=s=>n(o).codeConfig.charset=s),label:"Custom Charset",required:""},null,8,["modelValue"])):T("",!0),f("div",Ue,[m(M,{modelValue:n(o).codeConfig.prefix,"onUpdate:modelValue":t[5]||(t[5]=s=>n(o).codeConfig.prefix=s),label:"Prefix (Optional)"},null,8,["modelValue"]),m(M,{modelValue:n(o).codeConfig.suffix,"onUpdate:modelValue":t[6]||(t[6]=s=>n(o).codeConfig.suffix=s),label:"Suffix (Optional)"},null,8,["modelValue"])]),m(M,{modelValue:n(o).codeConfig.pattern,"onUpdate:modelValue":t[7]||(t[7]=s=>n(o).codeConfig.pattern=s),label:"Pattern",required:!0},null,8,["modelValue"])],64)):T("",!0),m(M,{modelValue:n(o).quantity,"onUpdate:modelValue":t[8]||(t[8]=s=>n(o).quantity=s),label:"Number of code",rules:[s=>s>=1||"Quantity cannot be less than 1",s=>s<=1e4||"Quantity cannot more than 10,000"],required:!0,"helper-text":`${n(o).quantity} card will be created`},null,8,["modelValue","rules","helper-text"])],64)):T("",!0),n(E)!=="bulk"?(_(),D(ge,{key:1,modelValue:n(o).code,"onUpdate:modelValue":t[9]||(t[9]=s=>n(o).code=s),label:"Custom Card Number",rules:[s=>n(E)!="single"||!!s||"Custom code is required"],placeholder:"(For multiple numbers, please enter in the new row.)"},null,8,["modelValue","rules"])):T("",!0)]),f("div",we,[He,m(Z,{"label-placement":"right",label:"Set card number on bind","model-value":n(o).setCardOnBind||!1,"onUpdate:modelValue":t[10]||(t[10]=s=>n(o).setCardOnBind=s)},null,8,["model-value"]),m(oe,{label:"Activate bundle on bind",placeholder:"Select bundle",items:n(r).filter(s=>!s.stripePriceId).map(s=>({label:s.name,value:s._id})),modelValue:n(o).bundle,"onUpdate:modelValue":t[12]||(t[12]=s=>n(o).bundle=s)},{append:y(()=>[n(o).bundle?(_(),D(G,{key:0,icon:"link_off",variant:"plain",onClick:t[11]||(t[11]=s=>n(o).bundle=void 0)})):T("",!0)]),_:1},8,["items","modelValue"]),(ee=(N=n(v).store)==null?void 0:N.stripe)!=null&&ee.apiKey?(_(),D(oe,{key:0,label:"Linked subscription bundle",placeholder:"Select bundle",items:n(r).filter(s=>s.stripePriceId).map(s=>({label:s.name,value:s._id})),modelValue:n(o).subscriptionBundle,"onUpdate:modelValue":t[14]||(t[14]=s=>n(o).subscriptionBundle=s)},{append:y(()=>[n(o).subscriptionBundle?(_(),D(G,{key:0,icon:"link_off",variant:"plain",onClick:t[13]||(t[13]=s=>n(o).subscriptionBundle=void 0)})):T("",!0)]),_:1},8,["items","modelValue"])):T("",!0)]),n(v).membership.design?(_(),x("div",Be,[f("div",Fe,[Ve,f("img",{src:(ne=n(O))==null?void 0:ne.image,class:"aspect-[16/9]"},null,8,Me),f("div",Pe,[(_(!0),x(F,null,Y(n(v).membership.design,(s,L)=>(_(),x("img",{src:s.image,key:`image_${L}`,class:Ee(["w-[112px] h-[63px] cursor-pointer",`${n(R)===L?"border-[2px] border-fm-color-primary":""}`]),onClick:dn=>R.value=L,alt:`ai_image_predict_${L}`,style:{objectFit:"cover"}},null,10,Ge))),128))])])])):T("",!0)]}),_:1},512)]),_:1},8,["modelValue"])}}});var K={env:{GITHUB_STATE:"/home/runner/work/_temp/_runner_file_commands/save_state_d09408ac-4dee-4bca-9aa5-fc5d48359bf5",npm_package_dependencies_zod:"3.22.4",npm_package_devDependencies__types_node:"^18.19.36",STATS_TRP:"true",DEPLOYMENT_BASEPATH:"/opt/runner",DOTNET_NOLOGO:"1",npm_package_dependencies_pinia:"^2.1.7",USER:"runner",npm_config_user_agent:"pnpm/9.11.0 npm/? node/v20.17.0 linux x64",CI:"true",npm_package_dependencies_vue:"^3.4.29",RUNNER_ENVIRONMENT:"github-hosted",GITHUB_ENV:"/home/runner/work/_temp/_runner_file_commands/set_env_d09408ac-4dee-4bca-9aa5-fc5d48359bf5",PIPX_HOME:"/opt/pipx",npm_package_devDependencies_vite:"^5.3.1",npm_node_execpath:"/opt/hostedtoolcache/node/20.17.0/x64/bin/node",JAVA_HOME_8_X64:"/usr/lib/jvm/temurin-8-jdk-amd64",SHLVL:"1",npm_package_files_0:"dist",HOME:"/home/runner",RUNNER_TEMP:"/home/runner/work/_temp",GITHUB_EVENT_PATH:"/home/runner/work/_temp/_github_workflow/event.json",npm_package_scripts_build_mf_dev:"vite build --mode fmmf",npm_package_dependencies__types_qrcode:"^1.5.5",JAVA_HOME_11_X64:"/usr/lib/jvm/temurin-11-jdk-amd64",PIPX_BIN_DIR:"/opt/pipx_bin",GITHUB_REPOSITORY_OWNER:"feedmepos",npm_package_scripts_build_mf_prod:"vite build --mode fmmf:prod",npm_package_dependencies_change_case:"^5.4.4",NODE_OPTIONS:"--max-old-space-size=8096",GRADLE_HOME:"/usr/share/gradle-8.10.1",ANDROID_NDK_LATEST_HOME:"/usr/local/lib/android/sdk/ndk/27.1.12297006",JAVA_HOME_21_X64:"/usr/lib/jvm/temurin-21-jdk-amd64",STATS_RDCL:"true",GITHUB_RETENTION_DAYS:"90",npm_package_dependencies__feedmepos_mf_common:"1.8.8",npm_package_dependencies_fabric:"^6.4.2",GITHUB_REPOSITORY_OWNER_ID:"54831515",POWERSHELL_DISTRIBUTION_CHANNEL:"GitHub-Actions-ubuntu22",AZURE_EXTENSION_DIR:"/opt/az/azcliextensions",GITHUB_HEAD_REF:"",SYSTEMD_EXEC_PID:"482",npm_package_dependencies__feedmepos_ui_library:"1.2.40",npm_package_dependencies_dayjs:"^1.11.11",npm_package_dependencies_dotenv:"^16.4.5",npm_package_dependencies_moment:"^2.30.1",GITHUB_GRAPHQL_URL:"https://api.github.com/graphql",npm_package_scripts_build_only_dev:"pnpm build:mf:dev && pnpm build:dts && pnpm build-types",npm_package_devDependencies_tailwindcss:"^3.4.4",npm_package_devDependencies_typescript:"^5.4.5",GOROOT_1_20_X64:"/opt/hostedtoolcache/go/1.20.14/x64",NVM_DIR:"/home/runner/.nvm",npm_package_scripts_build_dev:"vite build --mode development",npm_package_scripts_build_only_prod:"pnpm build:mf:prod && pnpm build:dts && pnpm build-types",npm_package_dependencies_xlsx:"^0.18.5",npm_package_devDependencies_vue_tsc:"^2.0.21",DOTNET_SKIP_FIRST_TIME_EXPERIENCE:"1",GOROOT_1_21_X64:"/opt/hostedtoolcache/go/1.21.13/x64",JAVA_HOME_17_X64:"/usr/lib/jvm/temurin-17-jdk-amd64",ImageVersion:"20240922.1.0",npm_package_scripts_dev:"vite",npm_package_scripts_build_prod:"vite build --mode production",npm_package_dependencies_unplugin_auto_import:"^0.17.6",RUNNER_OS:"Linux",GITHUB_API_URL:"https://api.github.com",GOROOT_1_22_X64:"/opt/hostedtoolcache/go/1.22.7/x64",STORE_PATH:"/home/runner/setup-pnpm/node_modules/.bin/store/v3",SWIFT_PATH:"/usr/share/swift/usr/bin",npm_package_type:"module",RUNNER_USER:"runner",STATS_V3PS:"true",CHROMEWEBDRIVER:"/usr/local/share/chromedriver-linux64",JOURNAL_STREAM:"8:2971",GITHUB_WORKFLOW:"Publish mf-connect",_:"/home/runner/setup-pnpm/node_modules/.bin/pnpm",npm_package_module:"./dist/app.js",npm_package_devDependencies_autoprefixer:"^10.4.19",npm_package_devDependencies__types_uuid:"^9.0.8",npm_config_registry:"https://registry.npmjs.org/",ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE:"/opt/actionarchivecache",STATS_D:"false",GITHUB_RUN_ID:"11065279517",STATS_VMFE:"true",npm_package_dependencies_bson_objectid:"^2.0.4",npm_package_devDependencies__types_lodash:"^4.17.5",GITHUB_REF_TYPE:"branch",BOOTSTRAP_HASKELL_NONINTERACTIVE:"1",GITHUB_WORKFLOW_SHA:"9b792a985f7052e6d23b38463484a18e0d3b98f6",GITHUB_BASE_REF:"",ImageOS:"ubuntu22",npm_package_exports___import:"./dist/app.js",npm_package_devDependencies__vitejs_plugin_vue:"^5.0.5",GITHUB_WORKFLOW_REF:"feedmepos/marketing-services/.github/workflows/publish-mf-connect.yml@refs/heads/release/integrate-with-portal-v3",PERFLOG_LOCATION_SETTING:"RUNNER_PERFLOG",GITHUB_ACTION_REPOSITORY:"",npm_package_dependencies_axios:"^1.7.2",npm_config_node_gyp:"/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/dist/node_modules/node-gyp/bin/node-gyp.js",PATH:"/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.bin:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/dist/node-gyp-bin:/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.bin:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/dist/node-gyp-bin:/home/runner/setup-pnpm/node_modules/.bin:/opt/hostedtoolcache/node/20.17.0/x64/bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin",ANT_HOME:"/usr/share/ant",DOTNET_MULTILEVEL_LOOKUP:"0",RUNNER_TRACKING_ID:"github_da06d1aa-c8d0-4b50-8ea2-ce6d6f26fe2b",INVOCATION_ID:"957b50a688fd414991b69f58aac0288f",RUNNER_TOOL_CACHE:"/opt/hostedtoolcache",NODE:"/opt/hostedtoolcache/node/20.17.0/x64/bin/node",npm_package_name:"@feedmepos/mf-connect",npm_package_scripts_deploy_dev:"pnpm run build-only:dev && pnpm publish --no-git-checks .",GITHUB_ACTION:"__run_5",GITHUB_RUN_NUMBER:"14",GITHUB_TRIGGERING_ACTOR:"qaijunse",RUNNER_ARCH:"X64",XDG_RUNTIME_DIR:"/run/user/1001",AGENT_TOOLSDIRECTORY:"/opt/hostedtoolcache",npm_package_scripts_deploy_prod:"pnpm run build-only:prod && pnpm publish --no-git-checks .",npm_config_frozen_lockfile:"",LANG:"C.UTF-8",VCPKG_INSTALLATION_ROOT:"/usr/local/share/vcpkg",npm_package_dependencies__feedmepos_mf_core_ui:"1.0.8",CONDA:"/usr/share/miniconda",RUNNER_NAME:"GitHub Actions 178",XDG_CONFIG_HOME:"/home/runner/.config",STATS_VMD:"true",GITHUB_REF_NAME:"release/integrate-with-portal-v3",GITHUB_REPOSITORY:"feedmepos/marketing-services",STATS_D_D:"false",npm_package_scripts_build_dts:"vue-tsc --declaration --noEmit false --emitDeclarationOnly -p tsconfig.json --outDir ./dist && mv ./dist/src/* dist",npm_package_scripts_build_types:"vue-tsc --declaration --emitDeclarationOnly -p tsconfig.json --outDir dist --composite false",npm_package_dependencies__feedmepos_core:"^2.10.4",npm_lifecycle_script:"vite build --mode fmmf",STATS_UE:"true",ANDROID_NDK_ROOT:"/usr/local/lib/android/sdk/ndk/27.1.12297006",GITHUB_ACTION_REF:"",DEBIAN_FRONTEND:"noninteractive",npm_package_dependencies_rrule:"^2.8.1",npm_package_dependencies_vue3_lottie:"^3.3.0",GITHUB_REPOSITORY_ID:"615151795",GITHUB_ACTIONS:"true",NODE_PATH:"/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.pnpm/vite@5.3.4_@types+node@18.19.41/node_modules/vite/bin/node_modules:/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.pnpm/vite@5.3.4_@types+node@18.19.41/node_modules/vite/node_modules:/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.pnpm/vite@5.3.4_@types+node@18.19.41/node_modules:/home/runner/work/marketing-services/marketing-services/packages/connect/node_modules/.pnpm/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/bin/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/bin/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules:/home/runner/setup-pnpm/node_modules/.pnpm/node_modules",npm_package_version:"0.0.5-beta.0",npm_lifecycle_event:"build:mf:dev",GITHUB_REF_PROTECTED:"false",npm_package_scripts_build:"vue-tsc && vite build",npm_package_dependencies_uuid:"^10.0.0",GITHUB_WORKSPACE:"/home/runner/work/marketing-services/marketing-services",ACCEPT_EULA:"Y",GITHUB_JOB:"deploy",RUNNER_PERFLOG:"/home/runner/perflog",npm_package_dependencies_lodash:"^4.17.21",GITHUB_SHA:"9b792a985f7052e6d23b38463484a18e0d3b98f6",GITHUB_RUN_ATTEMPT:"1",npm_package_exports___style:"./dist/style.css",npm_package_dependencies_vue_router:"^4.3.3",GITHUB_REF:"refs/heads/release/integrate-with-portal-v3",GITHUB_ACTOR:"qaijunse",ANDROID_SDK_ROOT:"/usr/local/lib/android/sdk",npm_package_dependencies_email_addresses:"^5.0.0",LEIN_HOME:"/usr/local/lib/lein",npm_package_dependencies_firebase:"^10.12.2",npm_package_dependencies_qrcode:"^1.5.3",GITHUB_PATH:"/home/runner/work/_temp/_runner_file_commands/add_path_d09408ac-4dee-4bca-9aa5-fc5d48359bf5",JAVA_HOME:"/usr/lib/jvm/temurin-11-jdk-amd64",PWD:"/home/runner/work/marketing-services/marketing-services/packages/connect",GITHUB_ACTOR_ID:"39590157",RUNNER_WORKSPACE:"/home/runner/work/marketing-services",npm_execpath:"/home/runner/setup-pnpm/node_modules/.pnpm/pnpm@9.11.0/node_modules/pnpm/bin/pnpm.cjs",HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS:"3650",STATS_TIS:"mining",GITHUB_EVENT_NAME:"workflow_dispatch",HOMEBREW_NO_AUTO_UPDATE:"1",ANDROID_HOME:"/usr/local/lib/android/sdk",GITHUB_SERVER_URL:"https://github.com",GECKOWEBDRIVER:"/usr/local/share/gecko_driver",LEIN_JAR:"/usr/local/lib/lein/self-installs/leiningen-2.11.2-standalone.jar",GHCUP_INSTALL_BASE_PREFIX:"/usr/local",GITHUB_OUTPUT:"/home/runner/work/_temp/_runner_file_commands/set_output_d09408ac-4dee-4bca-9aa5-fc5d48359bf5",npm_package_exports___types:"./dist/packages/connect/src/app.d.ts",EDGEWEBDRIVER:"/usr/local/share/edge_driver",STATS_EXT:"true",PNPM_SCRIPT_SRC_DIR:"/home/runner/work/marketing-services/marketing-services/packages/connect",npm_package_devDependencies_postcss:"^8.4.38",npm_command:"run-script",ANDROID_NDK:"/usr/local/lib/android/sdk/ndk/27.1.12297006",SGX_AESM_ADDR:"1",CHROME_BIN:"/usr/bin/google-chrome",npm_package_scripts_preview:"vite preview",SELENIUM_JAR_PATH:"/usr/share/java/selenium-server.jar",PNPM_HOME:"/home/runner/setup-pnpm/node_modules/.bin",STATS_EXTP:"https://provjobdsettingscdn.blob.core.windows.net/settings/provjobdsettings-0.5.189/provjobd.data",ANDROID_NDK_HOME:"/usr/local/lib/android/sdk/ndk/27.1.12297006",GITHUB_STEP_SUMMARY:"/home/runner/work/_temp/_runner_file_commands/step_summary_d09408ac-4dee-4bca-9aa5-fc5d48359bf5",INIT_CWD:"/home/runner/work/marketing-services/marketing-services/packages/connect",NODE_ENV:"production",FEEDME_NAMESPACE:"dev",FIREBASE_API_KEY:"AIzaSyAj8JdCHtP0Vc5vZobCfgoLzWxPIn0WUG4",FIREBASE_AUTH_DOMAIN:"feedme-dev-4c3ef.firebaseapp.com",FIREBASE_DATABASE_URL:"https://feedme-dev-4c3ef.firebaseio.com",FIREBASE_PROJECT_ID:"feedme-dev-4c3ef",FIREBASE_STORAGE_BUCKET:"feedme-dev-4c3ef.appspot.com",FIREBASE_MESSAGING_SENDER_ID:"458797803788",FIREBASE_APP_ID:"1:458797803788:web:37f2af2926a84288f0c129",FIREBASE_MEASUREMENT_ID:"G-J2QG09D2Q7",ASSET_STORAGE_BUCKET:"feedme-dev-4c3ef.appspot.com",AUTH_URL:"https://portal-v2-dev.feedmeapi.com/",SLACK_WEBHOOK_URL:"https://hooks.slack.com/services/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",MEMBER_APP_URL:"member.feedmedev.cc",CRM_APP_URL:"crm.feedmedev.cc",CLIENT_ID:"1a362d621873497b277ea55258cc82594ba148d235257f7bd44ea2acc132d8a4"}},X=Math.floor(Math.random()*16777215),re=d.index=parseInt(Math.random()*16777215,10),ie=(typeof K>"u"||typeof K.pid!="number"?Math.floor(Math.random()*1e5):K.pid)%65535,le=(()=>{try{return _Buffer}catch{try{return Buffer}catch{return null}}})(),j=function(e){return!!(e!=null&&e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e))},me=[];for(var k=0;k<256;k++)me[k]=(k<=15?"0":"")+k.toString(16);var de=new RegExp("^[0-9a-fA-F]{24}$"),P=[];k=0;for(;k<10;)P[48+k]=k++;for(;k<16;)P[55+k]=P[87+k]=k++;function d(e){if(!(this instanceof d))return new d(e);if(e&&(e instanceof d||e._bsontype==="ObjectID"))return e;if(this._bsontype="ObjectID",e==null||typeof e=="number"){this.id=this.generate(e);return}var i=d.isValid(e);if(!i&&e!=null)throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");if(i&&typeof e=="string"&&e.length===24)return d.createFromHexString(e);if(e!=null&&e.length===12)this.id=e;else{if(e!=null&&typeof e.toHexString=="function")return e;throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters")}}var $e=d;d.default=d;d.createFromTime=function(e){return e=parseInt(e,10)%4294967295,new d(Xe(8,e)+"0000000000000000")};d.createFromHexString=function(e){if(typeof e>"u"||e!=null&&e.length!==24)throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");for(var i="",A=0;A<24;)i+=String.fromCharCode(P[e.charCodeAt(A++)]<<4|P[e.charCodeAt(A++)]);return new d(i)};d.isValid=function(e){return e==null?!1:typeof e=="number"?!0:typeof e=="string"?e.length===12||e.length===24&&de.test(e):e instanceof d?!0:j(e)?d.isValid(e.toString("hex")):typeof e.toHexString=="function"&&le&&(e.id instanceof le||typeof e.id=="string")?e.id.length===12||e.id.length===24&&de.test(e.id):!1};d.prototype={constructor:d,toHexString:function(){if(!this.id||!this.id.length)throw new Error("invalid ObjectId, ObjectId.id must be either a string or a Buffer, but is ["+JSON.stringify(this.id)+"]");if(this.id.length===24)return this.id;if(j(this.id))return this.id.toString("hex");for(var e="",i=0;i<this.id.length;i++)e+=me[this.id.charCodeAt(i)];return e},equals:function(e){return e instanceof d?this.toString()===e.toString():typeof e=="string"&&d.isValid(e)&&e.length===12&&j(this.id)?e===this.id.toString("binary"):typeof e=="string"&&d.isValid(e)&&e.length===24?e.toLowerCase()===this.toHexString():typeof e=="string"&&d.isValid(e)&&e.length===12?e===this.id:e!=null&&(e instanceof d||e.toHexString)?e.toHexString()===this.toHexString():!1},getTimestamp:function(){var e=new Date,i;return j(this.id)?i=this.id[3]|this.id[2]<<8|this.id[1]<<16|this.id[0]<<24:i=this.id.charCodeAt(3)|this.id.charCodeAt(2)<<8|this.id.charCodeAt(1)<<16|this.id.charCodeAt(0)<<24,e.setTime(Math.floor(i)*1e3),e},generate:function(e){typeof e!="number"&&(e=~~(Date.now()/1e3)),e=parseInt(e,10)%4294967295;var i=Ke();return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255,X>>16&255,X>>8&255,X&255,ie>>8&255,ie&255,i>>16&255,i>>8&255,i&255)}};function Ke(){return re=(re+1)%16777215}function Xe(e,i){return i=i.toString(16),i.length===e?i:"00000000".substring(i.length,e)+i}var We=Symbol&&Symbol.for&&Symbol.for("nodejs.util.inspect.custom")||"inspect";d.prototype[We]=function(){return"ObjectID("+this+")"};d.prototype.toJSON=d.prototype.toHexString;d.prototype.toString=d.prototype.toHexString;const Ye=Se($e),qe={key:0,class:"grid grid-cols-1 gap-8"},ze={class:"flex items-center gap-8"},Je={class:"flex items-center gap-8"},Qe=5,Ze=q({__name:"CardDesignSheet",emits:["success"],setup(e,{expose:i,emit:A}){const{minor:w}=ue,v=J(),H=ke(),S=b(!1);b(),b(!1);const C=b(),l=b(null);V(()=>{var c,r;return Math.min((((r=(c=C.value)==null?void 0:c.design)==null?void 0:r.length)??0)+1,Qe)});const U=A,o=V(()=>{var c,r;return((r=(c=v.membership)==null?void 0:c.design)==null?void 0:r.filter(g=>g.image))||[]}),I=b(!1);function p(c){I.value=c}function a(){S.value=!0}async function E(){await w(async()=>{var g;const c=Ce(C.value),r=Ae.parse(c);if(r.design=(r==null?void 0:r.design)||[],l.value){const u=Ye().toHexString(),t=await se.update(se.designPath(u,l.value),l.value);(g=r.design)==null||g.push({_id:u,image:t})}await Q.update(r),await O(),await U("success"),l.value=null,S.value=!1},{message:"Saving card design",successMessage:"Card design saved"})}async function R(c,r){c?l.value=c:r&&H.open({title:"Delete Design",message:"Are you sure you want to delete this design?",primaryActions:{text:"Delete",close:!0},secondaryActions:{text:"Cancel",close:!1}}).onPrimary(async()=>{var u,t;const g=(u=C.value.design)==null?void 0:u.findIndex(B=>B._id==r);console.log(g),g!==-1&&((t=C.value.design)==null||t.splice(g,1)),await E()}).onSecondary(()=>{H.close()})}async function O(){await v.readMembership(),C.value=v.membership}return i({showSheet:p}),z(async()=>{await O(),o.value.length||(S.value=!0)}),(c,r)=>{const g=h("FmButton"),u=h("FmSideSheet");return _(),D(u,{"max-width":560,"dismiss-away":!0,header:"Manage Design",modelValue:n(I),"onUpdate:modelValue":[r[2]||(r[2]=t=>W(I)?I.value=t:null),r[3]||(r[3]=t=>I.value=t)]},Te({default:y(()=>[n(S)?T("",!0):(_(),x("div",qe,[(_(!0),x(F,null,Y(n(o),t=>(_(),D(ae,{key:String(t._id),"image-fit":"cover",label:"","aspect-ratio":"16/9",thumbnail:t.image,accept:".png, .jpg, .jpeg, .gif","recommended-size":"Recommended 16:9 ratio / 1280px x 720px",file:void 0,"delete-button":!1},{"delete-button":y(()=>[m(g,{class:"!text-neutral-50 !bg-neutral-700",icon:"delete",variant:"tertiary",onClick:B=>R(null,t._id)},null,8,["onClick"])]),_:2},1032,["thumbnail"]))),128))])),n(S)?(_(),D(ae,{key:1,"image-fit":"cover",label:"","aspect-ratio":"16/9",accept:".png, .jpg, .jpeg, .gif","recommended-size":"Recommended 16:9 ratio / 1280px x 720px","onUpdate:file":R})):T("",!0)]),_:2},[n(S)?{name:"side-sheet-footer",fn:y(()=>[f("div",Je,[m(g,{label:"Save",onClick:E,disabled:!n(l)},null,8,["disabled"]),m(g,{label:"Cancel",type:"button",variant:"tertiary",onClick:r[1]||(r[1]=t=>S.value=!1)})])]),key:"1"}:{name:"side-sheet-footer",fn:y(()=>[f("div",ze,[m(g,{label:"Add Design",onClick:a}),m(g,{label:"Cancel",type:"button",variant:"tertiary",onClick:r[0]||(r[0]=t=>I.value=!1)})])]),key:"0"}]),1032,["modelValue"])}}}),en={class:"flex items-center"},nn=f("span",{class:"fm-typo-en-title-sm-800"}," Card ",-1),tn={class:"px-24 flex flex-col gap-y-32 pb-24"},sn={class:"flex items-center justify-end py-4 xs:hidden"},on={key:0,class:"w-full flex flex-col gap-16 items-center pt-16"},an=f("div",{class:"fm-typo-en-body-lg-600"},"No data found",-1),rn=f("div",{class:"fm-typo-en-body-sm-400 text-fm-color-typo-secondary"}," No data to show at the current moment. ",-1),ln=[an,rn],On=q({__name:"Card",setup(e){const i=b(),A=b(),w=Re(),v=J(),H=V(()=>v.sortedStoreCategories.flatMap(p=>p.bundles)),S=[{header:"Card Number",accessorFn:p=>p.serialNumber},{header:"Redeemed by",accessorKey:"user",enableSorting:!1,cell(p){const a=p.row.original.pf_member;return $("div",{class:"flex items-center gap-x-8"},[$(ye.FmAvatar,{name:a!=null&&a.photoUrl||a==null?void 0:a.name,src:(a==null?void 0:a.photoUrl)??void 0,size:"sm"}),$("span",{class:"fm-typo-en-body-sm-400"},a==null?void 0:a.name)])}},{header:"Phone",accessorFn:p=>{var a;return((a=p.pf_member)==null?void 0:a.phoneNumber)||"-"}},{header:"Created at",accessorKey:"_id",accessorFn:p=>te(Oe(p._id.toString())).format("DD MMM YYYY hh:mmA")},{header:"Bundle",accessorFn:p=>{var a,E,R;return((E=(a=p.pf_transaction)==null?void 0:a.bundle)==null?void 0:E.name)||((R=H.value.find(O=>O._id===p.bundle))==null?void 0:R.name)||"-"}},{header:"Redeemed at",accessorFn:p=>p.redeemedAt?te(p.redeemedAt).format("DD MMM YYYY hh:mmA"):"-"}],C=async p=>{U.value=[],l.value.isLoading=!0;const a=await Q.readCards({limit:p.pageSize,skip:p.pageIndex??0,sortBy:"_id",search:l.value.searchValue,descending:!0});U.value=a.resources,l.value.totalRows=a.meta.totalResources??0,l.value.pageCount=a.meta.totalPages??0,l.value.isLoading=!1},l=b({searchValue:"",pageSize:10,pageCount:0,pageIndex:0,totalRows:0,isLoading:!1}),U=b([]);async function o(){var p;await C({pageSize:10,pageIndex:0}),(p=i.value)==null||p.showSheet(!1)}const I=V(()=>w.isPremium?[{label:"Create cards",value:"create",isPrimary:!0},{label:"Manage Design",value:"design",isPrimary:!0}]:[]);return z(async()=>{await w.readPremium(),await v.readMemberStore(),await v.readMembership()}),pe(()=>l.value.searchValue,Ie.debounce(async()=>{await o()},500)),(p,a)=>{const E=h("FmChip"),R=h("FmPageHead"),O=h("FmSearch"),c=h("FmTable");return _(),x(F,null,[m(R,{title:"Card",actions:n(I),"onClick:action":a[0]||(a[0]=r=>{var g,u;console.log(r),r==="design"&&((g=n(A))==null||g.showSheet(!0)),r==="create"&&((u=n(i))==null||u.showSheet(!0))})},{title:y(()=>[f("div",en,[nn,n(w).isPremium?T("",!0):(_(),D(E,{key:0,class:"ml-8",label:"Premium"}))])]),_:1},8,["actions"]),f("div",tn,[m(O,{class:"hidden xs:flex border-b border-fm-color-neutral-gray-100",modelValue:n(l).searchValue,"onUpdate:modelValue":a[1]||(a[1]=r=>n(l).searchValue=r),placeholder:"Search Table",collapsible:""},null,8,["modelValue"]),f("div",sn,[m(O,{modelValue:n(l).searchValue,"onUpdate:modelValue":a[2]||(a[2]=r=>n(l).searchValue=r),placeholder:"Search Table",collapsible:""},null,8,["modelValue"])]),m(c,{loading:n(l).isLoading,"row-data":n(U),"column-defs":S,"row-count":n(l).totalRows,"page-count":n(l).pageCount,"hide-footer":n(l).totalRows<10,"fetch-fn":C,"shrink-at":!1,"page-size":n(l).pageSize},null,8,["loading","row-data","row-count","page-count","hide-footer","page-size"]),n(U).length==0&&n(l).isLoading==!1?(_(),x("div",on,ln)):T("",!0),m(je,{ref_key:"sheetRef",ref:i,onSuccess:o},null,512),m(Ze,{ref_key:"designSheetRef",ref:A,onSuccess:o},null,512)])],64)}}});export{On as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as w,r as C,a as g,h as o,o as u,i as m,y as d,j as p,s as c,m as q,q as V,x as b,u as i,P as k,e as S,t as B,F as I}from"./index-ChOJjj6_.js";const M={class:"fm-typo-en-body-md-600 select-none text-ellipsis overflow-hidden whitespace-nowrap"},z=w({__name:"ChipMenu",props:{modelValue:{type:Object,required:!1},label:{type:String,required:!0},showItemLabel:{type:Boolean,default:!1},placement:{type:String,required:!1,default:"bottom-end"},class:{type:String,required:!1},disabled:{type:Boolean,required:!1},items:{type:Array,required:!1},icon:{type:String,required:!1}},emits:["update:model-value"],setup(t,{emit:f}){const e=t,v=f,r=C(!1),y=g(()=>{var s,l;return(l=(s=e.items)==null?void 0:s.find(n=>n.value===e.modelValue))==null?void 0:l.label});return(s,l)=>{const n=o("FmIcon"),_=o("FmChip"),h=o("FmMenuItem"),F=o("FmMenu");return u(),m(F,{placement:t.placement||"bottom-end",disabled:t.disabled==!0,"model-value":i(r),onMenuChanged:l[0]||(l[0]=a=>r.value=a)},{"menu-button":d(()=>[p(_,{label:e.label,class:c(e.class||"text-fm-color-neutral-gray-400 cursor-pointer")},{default:d(()=>[e.icon?(u(),m(n,{key:0,name:e.icon,class:c(e.class),outline:"",size:"sm"},null,8,["name","class"])):q("",!0),V("div",M,b(e.label)+" "+b(t.showItemLabel?i(y):""),1),p(n,{name:i(r)?"keyboard_arrow_up":"keyboard_arrow_down",class:c(e.class),outline:"",size:"sm"},null,8,["name","class"])]),_:1},8,["label","class"])]),default:d(()=>[k(s.$slots,"default",{},()=>[(u(!0),S(I,null,B(e.items??[],a=>(u(),m(h,{key:a.value,value:a.value,label:a.label,"model-value":e.modelValue===a.value,"onUpdate:modelValue":x=>v("update:model-value",a.value)},null,8,["value","label","model-value","onUpdate:modelValue"]))),128))])]),_:3},8,["placement","disabled","model-value"])}}});export{z as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var ee=Object.defineProperty;var ae=(v,r,p)=>r in v?ee(v,r,{enumerable:!0,configurable:!0,writable:!0,value:p}):v[r]=p;var D=(v,r,p)=>ae(v,typeof r!="symbol"?r+"":r,p);import{h as M}from"./moment-G82_0lEo.js";import{d as z,k as Y,r as g,a as O,b as j,h as m,o as C,i as T,y as I,q as h,j as i,u as e,l as oe,B as $,e as S,t as te,F as U,m as _,R as le,I as q,J as se}from"./index-ChOJjj6_.js";import"./index-CY-yFFeT.js";import{u as G}from"./loading-vPEGhWbt.js";import{c as N}from"./index-BpFeuIxZ.js";import{l as ne}from"./lodash-BEGh9Xm-.js";import{u as A,w as re}from"./xlsx-BkdIhkZ0.js";import{m as ie}from"./index-BDoiV8qX.js";import{o as de}from"./objectId-CjGgm01l.js";const ue=h("div",{class:"fm-typo-en-body-lg-600"},"Code type",-1),ce={class:"space-y-16"},me=h("div",{class:"fm-typo-en-body-lg-600"},"Settings",-1),pe={class:"gap-16 grid grid-cols-2"},fe={class:"flex items-center gap-8"},ge=z({__name:"CreateCollectionSheet",emits:["success"],setup(v,{expose:r,emit:p}){const{minor:V}=G,k=Y(),B=g(),w=g(!1),R=p,n=g(!1);function y(c){n.value=c,c&&(l.value={quantity:1,code:"",codeConfig:{length:8,charset:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",prefix:"",suffix:"",pattern:"########"}})}const l=g({quantity:1,code:"",codeConfig:{length:8,charset:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",prefix:"",suffix:"",pattern:"########"}}),P=[{label:"Bulk codes",value:"bulk",sublabel:"Bulk generate unique codes"},{label:"Custom code",value:"single",sublabel:"Enter your own custom codes"}],s=[{label:"Alphanumeric",value:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Alphabetic",value:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Alphabetic Lowercase",value:"abcdefghijklmnopqrstuvwxyz"},{label:"Alphabetic Uppercase",value:"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},{label:"Numbers",value:"0123456789"},{label:"Custom",value:""}],t=g(s[0].value),u=g("bulk"),d=g(!1),x=O(()=>k.params.id);async function f(c){var a;await((a=B.value)==null?void 0:a.validateInputs()),w.value&&await V(async()=>{await N.createCollectionByCampaignId(x.value,c),await R("success")},{message:"Creating claim(s)",successMessage:"Claim(s) created"})}return r({showSheet:y}),j(()=>l.value.codeConfig.length,(c,a)=>{c!=a&&(l.value.codeConfig.pattern="#".repeat(Number(c)))}),(c,a)=>{const L=m("FmRadio"),H=m("FmRadioGroup"),K=m("FmSwitch"),Q=m("FmStepperField"),J=m("FmSelect"),F=m("FmTextField"),W=m("FmTextarea"),X=m("FmForm"),E=m("FmButton"),Z=m("FmSideSheet");return C(),T(Z,{"max-width":560,"dismiss-away":!0,header:"Create collection",modelValue:e(n),"onUpdate:modelValue":[a[14]||(a[14]=o=>$(n)?n.value=o:null),a[15]||(a[15]=o=>n.value=o)]},{"side-sheet-footer":I(()=>[h("div",fe,[i(E,{label:"Save",onClick:a[12]||(a[12]=o=>f(e(l))),loading:e(oe)().isLoading},null,8,["loading"]),i(E,{label:"Cancel",type:"button",variant:"tertiary",onClick:a[13]||(a[13]=o=>n.value=!1)})])]),default:I(()=>[i(X,{ref_key:"form",ref:B,class:"space-y-40",onValidationSuccess:a[10]||(a[10]=o=>w.value=!0),onValidationFailed:a[11]||(a[11]=o=>w.value=!1)},{default:I(()=>[h("div",null,[ue,i(H,{modelValue:e(u),"onUpdate:modelValue":a[0]||(a[0]=o=>$(u)?u.value=o:null),inline:!1},{default:I(()=>[(C(),S(U,null,te(P,o=>i(L,{key:o.value,value:o.value,label:o.label,sublabel:o.sublabel},null,8,["value","label","sublabel"])),64))]),_:1},8,["modelValue"])]),h("div",ce,[me,e(u)==="bulk"?(C(),S(U,{key:0},[i(K,{"model-value":e(d),"label-placement":"right",value:"true",label:"Advance code setting",required:!0,"onUpdate:modelValue":a[1]||(a[1]=()=>d.value=!e(d))},null,8,["model-value"]),e(d)?(C(),S(U,{key:0},[i(Q,{modelValue:e(l).codeConfig.length,"onUpdate:modelValue":a[2]||(a[2]=o=>e(l).codeConfig.length=o),label:"Code length",rules:[o=>Number(o)>=1||"Code length must at least 1"],required:!0},null,8,["modelValue","rules"]),i(J,{label:"Charset","model-value":e(t),items:s,"helper-text":e(l).codeConfig.charset.length>62?`${e(l).codeConfig.charset.substring(0,62)}...`:e(l).codeConfig.charset,"onUpdate:modelValue":a[3]||(a[3]=o=>{t.value=o,e(l).codeConfig.charset=o})},null,8,["model-value","helper-text"]),e(t)===""?(C(),T(F,{key:0,modelValue:e(l).codeConfig.charset,"onUpdate:modelValue":a[4]||(a[4]=o=>e(l).codeConfig.charset=o),label:"Custom Charset",required:""},null,8,["modelValue"])):_("",!0),h("div",pe,[i(F,{modelValue:e(l).codeConfig.prefix,"onUpdate:modelValue":a[5]||(a[5]=o=>e(l).codeConfig.prefix=o),label:"Prefix (Optional)"},null,8,["modelValue"]),i(F,{modelValue:e(l).codeConfig.suffix,"onUpdate:modelValue":a[6]||(a[6]=o=>e(l).codeConfig.suffix=o),label:"Suffix (Optional)"},null,8,["modelValue"])]),i(F,{modelValue:e(l).codeConfig.pattern,"onUpdate:modelValue":a[7]||(a[7]=o=>e(l).codeConfig.pattern=o),label:"Pattern",required:!0},null,8,["modelValue"])],64)):_("",!0),i(F,{modelValue:e(l).quantity,"onUpdate:modelValue":a[8]||(a[8]=o=>e(l).quantity=o),label:"Number of code",rules:[o=>o>=1||"Quantity cannot be less than 1",o=>o<=1e4||"Quantity cannot more than 10,000"],required:!0,"helper-text":`${e(l).quantity} claim will be created`},null,8,["modelValue","rules","helper-text"])],64)):_("",!0),e(u)!=="bulk"?(C(),T(W,{key:1,modelValue:e(l).code,"onUpdate:modelValue":a[9]||(a[9]=o=>e(l).code=o),label:"Custom Code",rules:[o=>e(u)!="single"||!!o||"Custom code is required"],placeholder:"(For multiple codes, please enter in the new row.)"},null,8,["modelValue","rules"])):_("",!0)])]),_:1},512)]),_:1},8,["modelValue"])}}});class be{constructor(){D(this,"data",[])}addRecord(r){this.data.push(r)}buildExcel(){const r=A.book_new(),p=A.json_to_sheet(this.data);return A.book_append_sheet(r,p,"Collection"),r}}const b={sortBy:"_id",descending:!1,rowsPerPage:1e3,page:1,rowsNumber:0},he={class:"px-24 flex flex-col gap-y-32 pb-24"},ve={class:"flex items-center justify-end py-4 xs:hidden"},Ce={key:0,class:"w-full flex flex-col gap-16 items-center pt-16"},ye=h("div",{class:"fm-typo-en-body-lg-600"},"No data found",-1),xe=h("div",{class:"fm-typo-en-body-sm-400 text-fm-color-typo-secondary"}," No data to show at the current moment. ",-1),Ve=[ye,xe],Pe=z({__name:"Collections",setup(v){const r=Y(),p=g(),V=O(()=>r.params.id),k=g(!1),{custom:B}=G,w=[{header:"ID/Code",accessorFn:s=>s.code||s._id},{header:"User",accessorKey:"user",enableSorting:!1,cell(s){const t=s.row.original.pf_user;return q("div",{class:"flex items-center gap-x-8"},[q(se.FmAvatar,{name:t!=null&&t.photoUrl||t==null?void 0:t.name,src:(t==null?void 0:t.photoUrl)??void 0,size:"sm"}),q("span",t==null?void 0:t.name)])}},{header:"Phone",accessorFn:s=>{var t;return((t=s.pf_user)==null?void 0:t.phoneNumber)||"-"}},{header:"Balance",accessorKey:"balance"},{header:"Created at",accessorKey:"_id",accessorFn:s=>M(de(s._id.toString())).format("DD MMM YYYY")},{header:"Nearest expired at",accessorFn:s=>{var t;return s.expiryBalance&&s.expiryBalance.length?M((t=s.expiryBalance)==null?void 0:t[0].expiredAt).format("DD MMM YYYY"):"Never expires"}}],R=async s=>{y.value=[],n.value.isLoading=!0;const u={"mf-connect-STORE_REWARD_COLLECTIONS":ie.readCollectionsByRewardId,"mf-connect-CAMPAIGN_VOUCHER_COLLECTIONS":N.readCollectionsByCampaignId}[r.name],d=await u(V.value,{limit:s.pageSize,skip:s.pageIndex??0,sortBy:"_id",search:n.value.searchValue,descending:!0});y.value=d.resources,n.value.totalRows=d.meta.totalResources??0,n.value.pageCount=d.meta.totalPages??0,n.value.isLoading=!1},n=g({searchValue:"",pageSize:10,pageCount:0,pageIndex:0,totalRows:0,isLoading:!1}),y=g([]);async function l(){var s;await R({pageSize:10,pageIndex:0}),(s=p.value)==null||s.showSheet(!1)}async function P(){k.value||B(async()=>{var d;const s=new be,t=(await N.readCollectionsByCampaignId(V.value,{limit:1,skip:0,sortBy:b.sortBy,descending:b.descending})).meta.totalResources??0,u=b.rowsPerPage;for(let x=0;x<t;x+=u){const f={...b,limit:u,skip:(b.page-1)*b.rowsPerPage,sortBy:b.sortBy,descending:b.descending},c=await N.readCollectionsByCampaignId(V.value,f);for await(const a of c.resources){const L={Id:(a==null?void 0:a.code)||((d=a._id)==null?void 0:d.toString())||""};s.addRecord(L)}b.page++}await re(s.buildExcel(),`members-${new Date().toISOString()}.xlsx`,{bookType:"xlsx",bookSST:!1,type:"array"}),b.page=1},{isLoading:k})}return j(()=>n.value.searchValue,ne.debounce(async()=>{await l()},500)),(s,t)=>{const u=m("FmPageHead"),d=m("FmSearch"),x=m("FmTable");return C(),S(U,null,[i(u,{title:"Collections","back-button":!0,actions:[{label:"Export",value:"export",isPrimary:!1},{label:"Create collection",value:"create",isPrimary:!0}],"onClick:back":t[0]||(t[0]=f=>e(le).back()),"onClick:action":t[1]||(t[1]=f=>{var c;f==="create"&&((c=e(p))==null||c.showSheet(!0)),f==="export"&&P()})}),h("div",he,[i(d,{class:"hidden xs:flex border-b border-fm-color-neutral-gray-100",modelValue:e(n).searchValue,"onUpdate:modelValue":t[2]||(t[2]=f=>e(n).searchValue=f),placeholder:"Search Table",collapsible:""},null,8,["modelValue"]),h("div",ve,[i(d,{modelValue:e(n).searchValue,"onUpdate:modelValue":t[3]||(t[3]=f=>e(n).searchValue=f),placeholder:"Search Table",collapsible:""},null,8,["modelValue"])]),i(x,{loading:e(n).isLoading,"row-data":e(y),"column-defs":w,"row-count":e(n).totalRows,"page-count":e(n).pageCount,"hide-footer":e(n).totalRows<10,"fetch-fn":R,"shrink-at":!1,"page-size":e(n).pageSize},null,8,["loading","row-data","row-count","page-count","hide-footer","page-size"]),e(y).length==0&&e(n).isLoading==!1?(C(),S("div",Ce,Ve)):_("",!0),i(ge,{ref_key:"sheetRef",ref:p,onSuccess:l},null,512)])],64)}}});export{Pe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as A}from"./campaign-DFKsTujB.js";import{d as M,M as N,H as U,r as k,a as j,A as H,h as i,o as l,e as f,j as n,u as o,q as s,F as g,y as h,t as q,m as J,i as C,I as z,J as G,K as O,x as y}from"./index-ChOJjj6_.js";import{u as Q,p as W}from"./loading-vPEGhWbt.js";import{u as X}from"./campaign-C02xBw-U.js";import{g as S,b as V}from"./dto-jiD_9888.js";import{_ as Y}from"./ChipMenu.vue_vue_type_script_setup_true_lang-CsGgYPFM.js";import{_ as Z}from"./EditCampaignSheet.vue_vue_type_script_setup_true_lang-C0Xomf3d.js";import{u as ee}from"./template-bmRsMRsK.js";import{c as _}from"./index-BpFeuIxZ.js";import"./moment-G82_0lEo.js";import"./index-DEASct5_.js";import"./index-CY-yFFeT.js";import"./index-DyuxW8ak.js";import"./index-CT3SY4v4.js";import"./index-nLnzOIMT.js";import"./index-Aywm26oG.js";import"./effect-JKYpiYIk.js";import"./rule-builder-CuZa3154.js";import"./rule-nHDm3dEn.js";import"./membership-CXrF-E0m.js";import"./index-BDoiV8qX.js";import"./index-DLmGTZ8t.js";import"./lodash-BEGh9Xm-.js";import"./ZodTextField.vue_vue_type_script_setup_true_lang-Dpxt04Yi.js";import"./JsonViewer-BWdrUcER.js";import"./ImageInput.vue_vue_type_script_setup_true_lang-CCuaZFwt.js";import"./EffectSheet.vue_vue_type_style_index_0_lang-LpSxDaP8.js";import"./TargetLocationInput.vue_vue_type_script_setup_true_lang-B4UebvZ7.js";import"./RuleGroup.vue_vue_type_script_setup_true_lang-DojVdz8u.js";import"./index-Ddc7FFA7.js";import"./helper-DJw9ArrH.js";import"./object-BR0mMUJk.js";import"./index-clhrUTcF.js";import"./MessageInput.vue_vue_type_script_setup_true_lang-_lB_cppN.js";import"./collection.fn-XeAQiy2e.js";import"./index-BCbWWyGB.js";const te={class:"px-24 flex flex-col gap-y-16"},oe={class:"flex items-center justify-between w-full"},ae={class:"flex gap-8 overflow-x-auto"},se={class:"space-y-8"},re={class:"flex w-full gap-4 items-center"},ne={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},ie={class:"space-y-4"},le={class:"fm-typo-en-body-lg-600"},ce={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},me={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},de={key:0},pe=s("div",{class:"text-fm-color-typo-secondary fm-typo-en-body-md-600"}," No results found ",-1),ue=[pe],fe=s("img",{src:A,class:"aspect-square w-[150px]"},null,-1),ye=s("div",{class:"flex flex-col gap-16 text-center"},[s("div",{class:"fm-typo-en-title-sm-800"},"Create your credit program"),s("div",{class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"}," Credits are virtual money that customers can use to pay for their purchases, similar to cash within your store. ")],-1),Ze=M({__name:"Credit",setup(_e){const R={label:"Create program",value:"create",isPrimary:!0,prependIcon:"add"},I=ee("CREDIT",N()),L=U(),c=X(),{global:B,minor:w}=Q,r=k({searchKey:"",location:null}),m=j(()=>c.campaigns.credit.filter(e=>!r.value.location||!e.targetLocation||e.targetLocation.includes(r.value.location))),T=[{header:"Program title",accessorFn:e=>e.name},{header:"Status",cell(e){return S(e.row.original)}},{header:"Summary",accessorFn:e=>V(e)},{header:"Actions",cell(e){return z(G.FmButton,{variant:"tertiary",icon:"delete",iconColor:"neutral-gray-400",onClick:a=>{a.stopPropagation(),v(e.row.original)}})}}],x=k();async function v(e){await W.remove(`Are you sure you want to remove ${e.name}?`)&&await w(async()=>{await _.delete(e._id),await c.read("CREDIT")},{message:`Removing ${e.name}`,successMessage:`Removed ${e.name} successfully`})}async function u(e){e?await a():I.open(async d=>{await a(d)});async function a(d){var p;(p=x.value)==null||p.showSheet(!0,"CREDIT",e?await _.readById(e._id):void 0,d)}}async function $(e){await w(async()=>{e.campaign._id?await _.update(e.campaign._id,e):await _.create(e),await c.read("CREDIT")},{message:`${e.campaign._id?"Updating":"Creating"} credit program`,successMessage:`Credit program ${e.campaign._id?"updated":"created"} successfully`})}return H(async()=>{await B(async()=>{await c.read("CREDIT")})}),(e,a)=>{const d=i("FmPageHead"),p=i("FmSearch"),D=i("FmTable"),b=i("FmButton"),K=i("FmListItem"),E=i("FmList"),P=i("FmCard");return l(),f(g,null,[n(d,{title:"Credit",actions:o(m).length>0?[R]:[],"onClick:action":a[0]||(a[0]=()=>u())},null,8,["actions"]),s("div",te,[n(p,{modelValue:o(r).searchKey,"onUpdate:modelValue":a[1]||(a[1]=t=>o(r).searchKey=t),class:"hidden xs:block border-b-2 border-fm-color-neutral-gray-100",placeholder:"search",collapsible:""},null,8,["modelValue"]),o(c).campaigns.credit&&o(c).campaigns.credit.length>0?(l(),f(g,{key:0},[s("div",oe,[s("div",ae,[n(Y,{modelValue:o(r).location,"onUpdate:modelValue":a[2]||(a[2]=t=>o(r).location=t),label:"Location: ","show-item-label":!0,icon:"storefront",placement:"bottom-start",items:o(L).locationItems},null,8,["modelValue","items"])]),n(p,{modelValue:o(r).searchKey,"onUpdate:modelValue":a[3]||(a[3]=t=>o(r).searchKey=t),class:"xs:hidden",placeholder:"search",collapsible:""},null,8,["modelValue"])]),n(D,{class:"xs:hidden","row-data":o(m),"column-defs":T,"search-value":o(r).searchKey,"column-filter":[],onRowClick:a[4]||(a[4]=t=>u(t.original)),"hide-footer":o(m).length<10},null,8,["row-data","search-value","hide-footer"]),n(E,{class:"hidden xs:flex flex-col mx-[-24px]"},{default:h(()=>[(l(!0),f(g,null,q(o(m).filter(t=>t.name.toLowerCase().includes(o(r).searchKey.toLowerCase())),t=>(l(),C(K,{key:t._id.toString(),onClick:F=>u(t),class:"py-12 px-16 flex items-center justify-between border-b border-fm-color-neutral-gray-100"},{default:h(()=>[s("div",se,[s("div",re,[(l(),C(O(o(S)(t)))),s("div",ne,y(t.currentReceive??0)+" used ",1)]),s("div",ie,[s("div",le,y(t.name),1),s("div",ce,y(o(V)(t)),1)]),s("div",me," Credit received: "+y(t.currentReceive??0),1)]),n(b,{icon:"delete","icon-color":"neutral-gray-400",variant:"tertiary",onClick:F=>(F.stopPropagation(),v(t))},null,8,["onClick"])]),_:2},1032,["onClick"]))),128))]),_:1}),o(m).length==0?(l(),f("div",de,ue)):J("",!0)],64)):(l(),C(P,{key:1,variant:"outlined",class:"w-full flex flex-col items-center justify-center gap-y-24 p-24"},{default:h(()=>[fe,ye,n(b,{variant:"primary",label:"Create credit program",icon:"add",onClick:a[5]||(a[5]=t=>u())})]),_:1})),n(Z,{ref_key:"sheetRef",ref:x,"onSubmit:modelValue":$},null,512)])],64)}}});export{Ze as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_}from"./lodash-BEGh9Xm-.js";import{d as defineComponent,a as computed,o as openBlock,i as createBlock,u as unref,r as ref,b as watch,h as resolveComponent,e as createElementBlock,q as createBaseVNode,F as Fragment,t as renderList,j as createVNode,B as isRef,m as createCommentVNode,y as withCtx,x as toDisplayString,s as normalizeClass,D as createTextVNode,Q as core,O as jt,K as resolveDynamicComponent,S as z,M as Mre,C as createSlots,H as useBusinessStore,T as SvcConfig}from"./index-ChOJjj6_.js";import{Z as ZodHelper,_ as _sfc_main$l}from"./ZodTextField.vue_vue_type_script_setup_true_lang-Dpxt04Yi.js";import{c as campaignRefinement,d as getCampaignSummaryObject,e as CampaignDtos,C as CampaignOptions,f as campaignTransform}from"./dto-jiD_9888.js";import{u as useMembershipStore,C as CollectibleOptions}from"./membership-CXrF-E0m.js";import{a as FdoEarningOption,b as F_GAME_TYPE,F as FdtoCollectibleConfig}from"./index-DyuxW8ak.js";import{i as isRuleGroup,R as RuleBuilder,a as isRuleEntry}from"./rule-builder-CuZa3154.js";import{J as JsonViewer}from"./JsonViewer-BWdrUcER.js";import{h as hooks}from"./moment-G82_0lEo.js";import{_ as _sfc_main$m}from"./ImageInput.vue_vue_type_script_setup_true_lang-CCuaZFwt.js";import{_ as _sfc_main$n,a as _sfc_main$o,b as _sfc_main$q}from"./EffectSheet.vue_vue_type_style_index_0_lang-LpSxDaP8.js";import{_ as _sfc_main$p}from"./TargetLocationInput.vue_vue_type_script_setup_true_lang-B4UebvZ7.js";import{_ as _sfc_main$j,a as _sfc_main$k}from"./RuleGroup.vue_vue_type_script_setup_true_lang-DojVdz8u.js";import{p as prompt,c as cases,f as firebaseStorage,u as useLoading}from"./loading-vPEGhWbt.js";import{_ as _sfc_main$i,T as TEMPLATES}from"./index-Ddc7FFA7.js";import{b as F_CAMPAIGN_TRIGGER_TYPE,C as CAMPAIGN_TRIGGER,c as FdtoRandomReward}from"./index-DEASct5_.js";import{_ as _sfc_main$r}from"./MessageInput.vue_vue_type_script_setup_true_lang-_lB_cppN.js";import{c as calculateNextScheduleAt,S as SummarizeRrule,R as RRule}from"./rule-nHDm3dEn.js";import"./index-nLnzOIMT.js";import"./index-CT3SY4v4.js";import"./index-Aywm26oG.js";import"./index-clhrUTcF.js";import{i as initCollectibleConfig}from"./helper-DJw9ArrH.js";import{C as CollectionUtils}from"./collection.fn-XeAQiy2e.js";import"./index-CY-yFFeT.js";import{a as cleanPF}from"./object-BR0mMUJk.js";const _sfc_main$h=defineComponent({__name:"SegmentConfigurator",props:{modelValue:{type:Object,required:!0}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=computed(()=>{var t;const[s]=isRuleGroup(o.modelValue)?Object.values(((t=o.modelValue)==null?void 0:t.rules)??{}):[null];return(s??RuleBuilder.constructEntry("user.segment","_hasAny",[])).conditions._hasAny}),r=u;return(s,a)=>(openBlock(),createBlock(_sfc_main$i,{multiselect:!0,items:unref(useMembershipStore)().segmentOptions,"model-value":unref(n),"onUpdate:modelValue":a[0]||(a[0]=t=>r("update:model-value",unref(RuleBuilder).setRuleToGroup(unref(RuleBuilder).scaffoldGroup("g_segment"),unref(RuleBuilder).constructEntry("user.segment","_hasAny",t)))),label:"Select segment(s) to match"},null,8,["items","model-value"]))}}),_hoisted_1$c={class:"space-y-16"},_hoisted_2$a={key:0},_sfc_main$g=defineComponent({__name:"UserRuleGroup",props:{modelValue:{type:Object,default:()=>{}}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=ref(o.modelValue?RuleBuilder.getRules(o.modelValue.rules.g_user).length>0?"custom":RuleBuilder.getRules(o.modelValue.rules.g_segment).length>0?"segment":"all_users":"all_users"),s=[{value:"all_users",label:"All audience"},{value:"segment",label:"Member segment"},{value:"custom",label:"Custom audience"}];return watch(r,async(a,t)=>{var l;if(t!="all_users"&&t!=a&&RuleBuilder.getRules((l=o.modelValue)==null?void 0:l.rules[t=="custom"?"g_user":"g_segment"]).length>0){const m=await prompt.confirm("Are you sure you want to change the audience type? This will remove all the rules you have set.");m&&n("update:model-value",RuleBuilder.setRuleToGroup(o.modelValue??RuleBuilder.scaffoldGroup(),RuleBuilder.scaffoldGroup(t=="custom"?"g_user":"g_segment"))),r.value=m?a:t}}),(a,t)=>{var m,f;const l=resolveComponent("FmRadio");return openBlock(),createElementBlock("div",_hoisted_1$c,[createBaseVNode("div",null,[(openBlock(),createElementBlock(Fragment,null,renderList(s,c=>createVNode(l,{key:c.value,value:c.value,label:c.label,modelValue:unref(r),"onUpdate:modelValue":t[0]||(t[0]=p=>isRef(r)?r.value=p:null)},null,8,["value","label","modelValue"])),64))]),unref(r)=="segment"?(openBlock(),createElementBlock("div",_hoisted_2$a,[createVNode(_sfc_main$h,{modelValue:((m=e.modelValue)==null?void 0:m.rules.g_segment)??unref(RuleBuilder).scaffoldGroup("g_segment"),"onUpdate:modelValue":t[1]||(t[1]=c=>n("update:model-value",unref(RuleBuilder).setRuleToGroup(e.modelValue??unref(RuleBuilder).scaffoldGroup(),c,"&&")))},null,8,["modelValue"])])):createCommentVNode("",!0),unref(r)=="custom"?(openBlock(),createBlock(_sfc_main$j,{key:1,"include-only":"user","trigger-type":"MEMBERSHIP_JOINED","model-value":((f=e.modelValue)==null?void 0:f.rules.g_user)??unref(RuleBuilder).scaffoldGroup("g_user"),"onUpdate:modelValue":t[2]||(t[2]=c=>n("update:model-value",unref(RuleBuilder).setRuleToGroup(e.modelValue??unref(RuleBuilder).scaffoldGroup(),c,"&&")))},null,8,["model-value"])):createCommentVNode("",!0)])}}}),_hoisted_1$b={class:"space-y-24"},_sfc_main$f=defineComponent({__name:"TimeRuleGroup",props:{modelValue:{type:Object,default:()=>{}}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=ref(!o.modelValue||!o.modelValue.rules.g_time?"all_time":RuleBuilder.getRules(o.modelValue.rules.g_time).length>0?"custom":"all_time");watch(r,async(a,t)=>{var l;if(t=="custom"&&a=="all_time"&&RuleBuilder.getRules((l=o.modelValue)==null?void 0:l.rules.g_time).length>0){const m=await prompt.confirm("Are you sure you want to turn off custom conditons? This will remove all the rules you have set.");m&&n("update:model-value",RuleBuilder.setRuleToGroup(o.modelValue??RuleBuilder.scaffoldGroup(),RuleBuilder.scaffoldGroup("g_time"))),r.value=m?a:t}});async function s(a){var t;if(a=="custom"&&RuleBuilder.getRules((t=o.modelValue)==null?void 0:t.rules.g_time).length>0){if(!await prompt.confirm("Are you sure you want to turn off custom conditons? This will remove all the rules you have set.")){r.value="all_time";return}n("update:model-value",RuleBuilder.setRuleToGroup(o.modelValue??RuleBuilder.scaffoldGroup(),RuleBuilder.scaffoldGroup("g_time")))}}return(a,t)=>{var f;const l=resolveComponent("FmRadio"),m=resolveComponent("FmRadioGroup");return openBlock(),createElementBlock("div",_hoisted_1$b,[createVNode(m,{modelValue:unref(r),"onUpdate:modelValue":[t[0]||(t[0]=c=>isRef(r)?r.value=c:null),t[1]||(t[1]=c=>s(c))]},{default:withCtx(()=>[createVNode(l,{label:"All time",value:"all_time"}),createVNode(l,{label:"Custom date/time",value:"custom"})]),_:1},8,["modelValue"]),unref(r)=="custom"?(openBlock(),createBlock(_sfc_main$j,{key:0,class:"!mt-[0px]","include-only":"trigger","trigger-type":"SCHEDULE","model-value":((f=e.modelValue)==null?void 0:f.rules.g_time)??unref(RuleBuilder).scaffoldGroup("g_time"),"onUpdate:modelValue":t[2]||(t[2]=c=>n("update:model-value",unref(RuleBuilder).setRuleToGroup(e.modelValue??unref(RuleBuilder).scaffoldGroup(),c,"&&")))},null,8,["model-value"])):createCommentVNode("",!0)])}}}),_sfc_main$e=defineComponent({__name:"BillRuleGroup",props:{modelValue:{type:Object,default:()=>{}}},emits:["update:model-value"],setup(e,{emit:u}){const o=u;return(n,r)=>{var s;return openBlock(),createBlock(_sfc_main$j,{"include-only":"bill","trigger-type":"BILL_COMPLETED","model-value":((s=e.modelValue)==null?void 0:s.rules.g_bill)??unref(RuleBuilder).scaffoldGroup("g_bill"),"onUpdate:modelValue":r[0]||(r[0]=a=>o("update:model-value",unref(RuleBuilder).setRuleToGroup(e.modelValue??unref(RuleBuilder).scaffoldGroup(),a,"&&")))},null,8,["model-value"])}}}),_sfc_main$d=defineComponent({__name:"BirthdayInput",props:{modelValue:{type:Object}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=computed(()=>{const{property:s,operator:a,equator:t}=RuleBuilder.simplify(o.modelValue??RuleBuilder.constructEntry("user.birthday","_isDay",{op:"before",x:1}));return{property:s,operator:a,equator:t}});return(s,a)=>{const t=resolveComponent("FmRadio"),l=resolveComponent("FmStepperField");return openBlock(),createElementBlock("div",null,[createVNode(t,{label:"On birthday",value:"_isRange-day","model-value":`${unref(r).operator}-${unref(r).equator.unit}`,"onUpdate:modelValue":a[0]||(a[0]=()=>{n("update:model-value",unref(RuleBuilder).constructEntry("user.birthday","_isRange",{op:"this",unit:"day",ignoreYear:!0}))})},null,8,["model-value"]),createVNode(t,{label:"N days before birthday",value:"_isDay","model-value":unref(r).operator,"onUpdate:modelValue":a[1]||(a[1]=()=>{n("update:model-value",unref(RuleBuilder).constructEntry("user.birthday","_isDay",{op:"after",x:1,ignoreYear:!0}))})},null,8,["model-value"]),unref(r).operator=="_isDay"?(openBlock(),createBlock(l,{key:0,label:"Days before birthday","show-steppers":!1,"model-value":unref(r).equator.x,"onUpdate:modelValue":a[2]||(a[2]=m=>n("update:model-value",unref(RuleBuilder).constructEntry("user.birthday","_isDay",{op:"after",x:m,ignoreYear:!0})))},null,8,["model-value"])):createCommentVNode("",!0),createVNode(t,{label:"In birthday week",value:"_isRange-week","model-value":`${unref(r).operator}-${unref(r).equator.unit}`,"onUpdate:modelValue":a[3]||(a[3]=()=>{n("update:model-value",unref(RuleBuilder).constructEntry("user.birthday","_isRange",{op:"this",unit:"week",ignoreYear:!0}))})},null,8,["model-value"]),createVNode(t,{label:"In birthday month",value:"_isRange-month","model-value":`${unref(r).operator}-${unref(r).equator.unit}`,"onUpdate:modelValue":a[4]||(a[4]=()=>{n("update:model-value",unref(RuleBuilder).constructEntry("user.birthday","_isRange",{op:"this",unit:"month",ignoreYear:!0}))})},null,8,["model-value"])])}}}),_sfc_main$c=defineComponent({__name:"FeedbackRuleGroup",props:{modelValue:{type:Object,default:()=>{}}},emits:["update:model-value"],setup(e,{emit:u}){const o=u;return(n,r)=>{var s;return openBlock(),createBlock(_sfc_main$j,{"include-only":"feedback","trigger-type":"FEEDBACK","model-value":((s=e.modelValue)==null?void 0:s.rules.g_feedback)??unref(RuleBuilder).scaffoldGroup("g_feedback"),"onUpdate:modelValue":r[0]||(r[0]=a=>o("update:model-value",unref(RuleBuilder).setRuleToGroup(e.modelValue??unref(RuleBuilder).scaffoldGroup(),a,"&&")))},null,8,["model-value"])}}}),TriggerOptions={[F_CAMPAIGN_TRIGGER_TYPE.enum.BILL_COMPLETED]:{name:"Bill complete",description:"Reward customers upon the completion of their bill.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.BILL_COMPLETED,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.FEEDBACK]:{name:"Feedback",description:"Reward customers for providing feedback.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.FEEDBACK,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.GAME_COMPLETED]:{name:"Game complete",description:"Reward customers upon the completion of a game.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.GAME_COMPLETED,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.MAKING_ORDER]:{name:"Making order",description:"Reward customers upon the creation of their order.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.MAKING_ORDER,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.MEMBERSHIP_JOINED]:{name:"Member joined ",description:"Trigger rewards when customers join your membership program.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.MEMBERSHIP_JOINED,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.SCHEDULE]:{name:"Schedule",description:"Set rewards to be triggered at specific times or dates.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.SCHEDULE,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.SIMPLE_CLAIM]:{name:"Simple claim",description:"Activate rewards when customers claim an offer",value:F_CAMPAIGN_TRIGGER_TYPE.enum.SIMPLE_CLAIM,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.TIER_UPGRADED]:{name:"Tier upgrade",description:"Activate rewards when their membership tier gets upgraded.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.TIER_UPGRADED,hidden:!1},[F_CAMPAIGN_TRIGGER_TYPE.enum.ISSUE_REWARD]:{name:"Issue reward",description:"Triggers whenever customer receives a reward in any kind.",value:F_CAMPAIGN_TRIGGER_TYPE.enum.ISSUE_REWARD,hidden:!0}},TypeToTriggerOptions=Object.fromEntries(["VOUCHER","PROMOTION","POINT","CREDIT","MEMBERSHIP","BROADCAST","COIN","REWARD_POOL","GAME"].map(e=>{const u=CAMPAIGN_TRIGGER[e];return[e,(u==null?void 0:u.map(o=>TriggerOptions[o]).filter(o=>!o.hidden))??[]]})),_hoisted_1$a={class:"space-y-16"},_hoisted_2$9=createBaseVNode("div",{class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"}," Define the conditions that must be met to activate a reward. ",-1),_hoisted_3$9={class:"grid grid-cols-3 gap-16"},_hoisted_4$8={class:"fm-typo-en-title-sm-800"},_hoisted_5$5={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_sfc_main$b=defineComponent({__name:"CampaignTriggerInput",props:{campaignType:{type:String,required:!0},modelValue:{type:String},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=computed(()=>o.disabled?TypeToTriggerOptions[o.campaignType].filter(s=>s.value==o.modelValue):TypeToTriggerOptions[o.campaignType]);return(s,a)=>{const t=resolveComponent("FmCard");return openBlock(),createElementBlock("div",_hoisted_1$a,[_hoisted_2$9,createBaseVNode("div",_hoisted_3$9,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(r),l=>(openBlock(),createBlock(t,{variant:"outlined",disabled:o.disabled,class:normalizeClass(["p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-3",{"col-span-3":unref(r).length==1,"border-fm-color-primary bg-fm-color-system-warning-100 hover:border-[var(--fm-color-system-orange-300)]":e.modelValue==l.value,"hover:bg-fm-color-opacity-sm":e.modelValue!=l.value}]),onClick:()=>{o.modelValue!=l.value&&!o.disabled&&n("update:model-value",l.value)},key:l.name},{default:withCtx(()=>[createBaseVNode("div",_hoisted_4$8,toDisplayString(l.name),1),createBaseVNode("div",_hoisted_5$5,toDisplayString(l.description),1)]),_:2},1032,["disabled","class","onClick"]))),128))])])}}}),_sfc_main$a=defineComponent({__name:"DateInput",props:{label:{type:String,required:!1},modelValue:{type:Object,required:!1}},emits:["update:model-value"],setup(e,{emit:u}){const o=u;return(n,r)=>{const s=resolveComponent("FmButton"),a=resolveComponent("FmField"),t=resolveComponent("FmSimpleDatePicker");return openBlock(),createBlock(t,{label:e.label,"model-value":e.modelValue||"","onUpdate:modelValue":r[1]||(r[1]=l=>o("update:model-value",l))},{"trigger-button":withCtx(({opened:l})=>[createVNode(a,{class:"flex items-center","prepend-icon":"calendar_month","icon-outlined":!l},{append:withCtx(()=>[e.modelValue?(openBlock(),createBlock(s,{key:0,variant:"tertiary",icon:"clear",onClick:r[0]||(r[0]=m=>(m.stopPropagation(),o("update:model-value",null)))})):createCommentVNode("",!0)]),default:withCtx(()=>[createBaseVNode("div",{class:normalizeClass(["fm-typo-en-body-lg-400",{"text-fm-color-typo-secondary":!e.modelValue}])},toDisplayString(e.modelValue?unref(hooks)(e.modelValue).format("DD MMM YYYY"):"DD MM YYYY"),3)]),_:2},1032,["icon-outlined"])]),_:1},8,["label","model-value"])}}}),_hoisted_1$9={class:"flex items-center gap-8 w-full"},_hoisted_2$8={class:"flex-1"},_hoisted_3$8=createBaseVNode("div",{class:"mt-5"},"to",-1),_hoisted_4$7={class:"flex-1"},_sfc_main$9=defineComponent({__name:"DateRangeInput",props:{modelValue:{type:Object,required:!1}},emits:["update:model-value"],setup(e,{emit:u}){const o=u;return(n,r)=>{var s,a;return openBlock(),createElementBlock("div",_hoisted_1$9,[createBaseVNode("div",_hoisted_2$8,[createVNode(_sfc_main$a,{"model-value":((s=e.modelValue)==null?void 0:s.startDate)??null,label:"Start date","onUpdate:modelValue":r[0]||(r[0]=t=>{var l;return o("update:model-value",{startDate:t,endDate:((l=e.modelValue)==null?void 0:l.endDate)??null})})},null,8,["model-value"])]),_hoisted_3$8,createBaseVNode("div",_hoisted_4$7,[createVNode(_sfc_main$a,{"model-value":((a=e.modelValue)==null?void 0:a.endDate)??null,label:"End date","onUpdate:modelValue":r[1]||(r[1]=t=>{var l;return o("update:model-value",{startDate:((l=e.modelValue)==null?void 0:l.startDate)??null,endDate:t})})},null,8,["model-value"])])])}}}),_hoisted_1$8={class:"space-y-8"},_hoisted_2$7={class:"grid grid-cols-2 gap-16"},_hoisted_3$7={key:0,class:"space-y-4"},_hoisted_4$6={class:"fm-typo-en-body-lg-400 class flex items-center justify-between"},_hoisted_5$4=createBaseVNode("div",null,"Notify date",-1),_hoisted_6$2={class:"text-ellipsis line-clamp-1"},_sfc_main$8=defineComponent({__name:"ScheduleRuleInput",props:{modelValue:{type:Object,required:!0},startDate:{type:String},endDate:{type:String}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u;function r(){const c=RuleBuilder.getRules(o.modelValue);return c.length==0?"fixed":c.some(p=>isRuleEntry(p)&&RuleBuilder.simplify(p).operator=="_rrule")?"repeating":"fixed"}const s=ref(r()),a=ref(!1),t=computed(()=>{const c=RuleBuilder.getRules(o.modelValue),p=c.find(i=>isRuleEntry(i)&&RuleBuilder.simplify(i).property=="trigger.date"),y=c.find(i=>isRuleEntry(i)&&RuleBuilder.simplify(i).property=="trigger.time");return{date:p?RuleBuilder.simplify(p).equator:null,time:y?RuleBuilder.simplify(y).equator:null}}),l=computed(()=>calculateNextScheduleAt(o.modelValue,new Date,o.startDate?new Date(o.startDate):void 0,o.endDate?new Date(o.endDate):void 0));function m(c){const p=c.label.toLowerCase(),y=p=="fixed"?[RuleBuilder.constructEntry("trigger.date","_isOnDate",new Date().toISOString()),RuleBuilder.constructEntry("trigger.time","_isOnTime","00:00")]:[RuleBuilder.constructEntry("trigger.date","_rrule","RRULE:FREQ=DAILY;INTERVAL=1;BYHOUR=0;BYMINUTE=0;BYSECOND=0;WKST=SU"),RuleBuilder.constructEntry("trigger.time","_isOnTime","00:00")];n("update:model-value",RuleBuilder.setRuleToGroup(RuleBuilder.scaffoldGroup("g_schedule"),y)),s.value=p}function f(c){s.value=="fixed"?n("update:model-value",RuleBuilder.setRuleToGroup(RuleBuilder.scaffoldGroup("g_schedule"),[RuleBuilder.constructEntry("trigger.date","_isOnDate",c.date),RuleBuilder.constructEntry("trigger.time","_isOnTime",c.time)])):n("update:model-value",RuleBuilder.setRuleToGroup(RuleBuilder.scaffoldGroup("g_schedule"),[RuleBuilder.constructEntry("trigger.date","_rrule",c.date),RuleBuilder.constructEntry("trigger.time","_isOnTime",c.time)]))}return(c,p)=>{const y=resolveComponent("FmButtonGroup"),i=resolveComponent("FmTimePicker"),d=resolveComponent("FmIcon"),v=resolveComponent("FmTooltip"),h=resolveComponent("FmField"),b=resolveComponent("FmCard"),B=resolveComponent("FmPopover"),V=resolveComponent("FmDatePicker"),g=resolveComponent("FmHelperText");return openBlock(),createElementBlock(Fragment,null,[createVNode(y,{items:[{label:"Fixed"},{label:"Repeating"}],"model-value":{label:unref(cases).title(unref(s))},"onUpdate:modelValue":m,class:"mb-8"},null,8,["model-value"]),createBaseVNode("div",_hoisted_1$8,[createBaseVNode("div",_hoisted_2$7,[createVNode(i,{label:"Notify time","model-value":unref(t).time,"onUpdate:modelValue":p[0]||(p[0]=k=>f({date:unref(t).date,time:k})),"helper-text":unref(t).time?void 0:"Time is required","helper-state":unref(t).time?void 0:"error"},null,8,["model-value","helper-text","helper-state"]),unref(s)=="repeating"?(openBlock(),createElementBlock("div",_hoisted_3$7,[createBaseVNode("div",_hoisted_4$6,[_hoisted_5$4,unref(t).date?(openBlock(),createBlock(v,{key:0,"z-index":9999,content:unref(SummarizeRrule)(unref(RRule).fromString(unref(t).date).options)},{default:withCtx(()=>[createVNode(d,{name:"info",size:"sm",outline:!0})]),_:1},8,["content"])):createCommentVNode("",!0)]),createVNode(B,{"show-popover":unref(a),onPopoverChanged:p[3]||(p[3]=k=>a.value=k)},{"popover-button":withCtx(()=>[createVNode(h,{class:"cursor-pointer","helper-text":unref(t).date?void 0:"Date is required","helper-state":unref(t).date?void 0:"error"},{default:withCtx(()=>[createBaseVNode("div",_hoisted_6$2,toDisplayString(unref(t).date?unref(SummarizeRrule)(unref(RRule).fromString(unref(t).date).options):"Set a repeating date"),1)]),_:1},8,["helper-text","helper-state"])]),default:withCtx(()=>[createVNode(b,{class:"elevated p-8 w-[450px]"},{default:withCtx(()=>[createVNode(_sfc_main$k,{"apply-button":!0,"model-value":unref(t).date||"",onCancel:p[1]||(p[1]=k=>a.value=!1),"onUpdate:modelValue":p[2]||(p[2]=k=>(f({date:k,time:unref(t).time}),a.value=!1))},null,8,["model-value"])]),_:1})]),_:1},8,["show-popover"])])):(openBlock(),createBlock(V,{key:1,label:"Notify date","model-value":unref(t).date||"","onUpdate:modelValue":p[4]||(p[4]=k=>f({date:k,time:unref(t).time})),"helper-text":unref(t).date?void 0:"Date is required","helper-state":unref(t).date?void 0:"error"},null,8,["model-value","helper-text","helper-state"]))]),unref(t).date&&unref(t).time&&unref(l)?(openBlock(),createBlock(g,{key:0,text:`${unref(hooks)(unref(l)).isAfter(unref(hooks)())?"The next notification will be sent on ":"Last trigger is on "} ${unref(hooks)(unref(l)).format("dddd, DD MMM YYYY")} at
|
|
2
|
+
${unref(hooks)(unref(l)).format("hh:mmA")} (${unref(hooks)(unref(l)).fromNow()})`},null,8,["text"])):createCommentVNode("",!0)])],64)}}}),_hoisted_1$7={class:"space-y-24"},_hoisted_2$6={class:"grid grid-cols-2 gap-16"},_hoisted_3$6={class:"fm-typo-en-title-sm-800"},_hoisted_4$5={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_hoisted_5$3={class:"flex items-center gap-16"},_hoisted_6$1={key:0,class:"mr-32"},_hoisted_7$1=createBaseVNode("div",null,"to every",-1),_sfc_main$7=defineComponent({__name:"EarningOptionInput",props:{modelValue:{type:Object},extras:{type:Object},fixedType:{type:Boolean},errorText:{type:String}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=[{label:"Based on spending",sublabel:"Customers earn rewards based on how much they spend.",value:"PROPORTIONAL"},{label:"Fixed amount",sublabel:"Customers earn a set amount of rewards for specific actions.",value:"FIXED"}].filter(t=>{var l;return o.fixedType||((l=o.extras)==null?void 0:l.event.type)!="BILL_COMPLETED"?t.value=="FIXED":!0}),s=computed(()=>{const t=FdoEarningOption.safeParse(o.modelValue);return t.success?[]:t.error.errors});function a(t){var l;t!=((l=o.modelValue)==null?void 0:l.type)&&n("update:model-value",t==="FIXED"?{type:"FIXED",amount:1}:{type:"PROPORTIONAL",amount:1,every:1})}return(t,l)=>{var p,y,i;const m=resolveComponent("FmCard"),f=resolveComponent("FmStepperField"),c=resolveComponent("FmHelperText");return openBlock(),createElementBlock("div",_hoisted_1$7,[createBaseVNode("div",_hoisted_2$6,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(r),d=>{var v,h;return openBlock(),createBlock(m,{variant:"outlined",class:normalizeClass(["p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-2",{"col-span-2":unref(r).length==1,"border-fm-color-primary bg-fm-color-system-warning-100 hover:border-[var(--fm-color-system-orange-300)]":((v=e.modelValue)==null?void 0:v.type)===d.value,"hover:bg-fm-color-opacity-sm":((h=e.modelValue)==null?void 0:h.type)!=d.value}]),onClick:b=>a(d.value),key:d.value},{default:withCtx(()=>[createBaseVNode("div",_hoisted_3$6,toDisplayString(d.label),1),createBaseVNode("div",_hoisted_4$5,toDisplayString(d.sublabel),1)]),_:2},1032,["class","onClick"])}),128))]),createBaseVNode("div",_hoisted_5$3,[createVNode(f,{label:"Receive amount",class:"flex-1","model-value":((p=e.modelValue)==null?void 0:p.amount)??null,"onUpdate:modelValue":l[0]||(l[0]=d=>n("update:model-value",{...e.modelValue??{type:"FIXED"},amount:d}))},{append:withCtx(()=>{var d;return[e.extras?(openBlock(),createElementBlock("div",_hoisted_6$1,toDisplayString(unref(CollectibleOptions)[(d=e.extras)==null?void 0:d.type].name.toLowerCase())+"(s) ",1)):createCommentVNode("",!0)]}),_:1},8,["model-value"]),((y=e.modelValue)==null?void 0:y.type)==="PROPORTIONAL"?(openBlock(),createElementBlock(Fragment,{key:0},[_hoisted_7$1,createVNode(f,{label:`Amount spend (${unref(core.Config).getCountry().currency.symbol})`,class:"flex-1","model-value":((i=e.modelValue)==null?void 0:i.every)??null,"onUpdate:modelValue":l[1]||(l[1]=d=>n("update:model-value",{...e.modelValue,every:d}))},{prepend:withCtx(()=>[createTextVNode(toDisplayString(unref(core.Config).getCountry().currency.symbol),1)]),_:1},8,["label","model-value"])],64)):createCommentVNode("",!0)]),e.errorText||unref(s).length>0?(openBlock(),createBlock(c,{key:0,class:"!mt-4",text:e.errorText||unref(ZodHelper).helperText(unref(s),""),state:"error"},null,8,["text"])):createCommentVNode("",!0)])}}}),_hoisted_1$6={class:"space-y-16"},_hoisted_2$5=createBaseVNode("div",{class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"}," Select a game where you want your customer to play. ",-1),_hoisted_3$5={class:"grid grid-cols-2 gap-16"},_hoisted_4$4={class:"fm-typo-en-title-sm-800"},_hoisted_5$2={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_sfc_main$6=defineComponent({__name:"GameTypeInput",props:{modelValue:{type:String}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=computed(()=>[{label:"Fortune Wheel",description:"Allow customers to spin the Fortune Wheel to win various rewards.",value:F_GAME_TYPE.enum.FORTUNE_WHEEL,hidden:!1},{label:"Rock paper scissor",description:"Customers play a game of Rock Paper Scissors against the cashier.",value:F_GAME_TYPE.enum.ROCK_PAPER_SCISSORS,hidden:!0}].filter(s=>!s.hidden));return(s,a)=>{const t=resolveComponent("FmCard");return openBlock(),createElementBlock("div",_hoisted_1$6,[_hoisted_2$5,createBaseVNode("div",_hoisted_3$5,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(r),l=>(openBlock(),createBlock(t,{variant:"outlined",class:normalizeClass(["p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-3",{"col-span-2":unref(r).length==1,"border-fm-color-primary bg-fm-color-system-warning-100 hover:border-[var(--fm-color-system-orange-300)]":e.modelValue==l.value,"hover:bg-fm-color-opacity-sm":e.modelValue!=l.value}]),onClick:()=>{o.modelValue!=l.value&&n("update:model-value",l.value)},key:l.value},{default:withCtx(()=>[createBaseVNode("div",_hoisted_4$4,toDisplayString(l.label),1),createBaseVNode("div",_hoisted_5$2,toDisplayString(l.description),1)]),_:2},1032,["class","onClick"]))),128))])])}}}),_hoisted_1$5={class:"fm-typo-en-body-sm-400 text-fm-color-typo-secondary flex items-center justify-between"},_hoisted_2$4=createBaseVNode("div",null,"Voucher description should not exceed 200 characters.",-1),_hoisted_3$4=createBaseVNode("div",{class:"fm-typo-en-title-sm-800"},"Discount",-1),_hoisted_4$3=createBaseVNode("div",{class:"fm-typo-en-title-sm-800 !mb-[-8px]"},"Usage configuration",-1),_hoisted_5$1=createBaseVNode("div",{class:"fm-typo-en-title-sm-800 !mb-[-8px]"},"Availability",-1),_sfc_main$5=defineComponent({__name:"VoucherEditor",props:{modelValue:{type:Object},rewardImage:{type:Object}},emits:["update:model-value","update:reward-image"],setup(e,{emit:u}){const n=ref(e.modelValue??initCollectibleConfig("VOUCHER",{business:jt().currentBusiness.value._id,name:""})),r=FdtoCollectibleConfig,s=u;return(a,t)=>{var c,p,y;const l=resolveComponent("FmTextarea"),m=resolveComponent("FmHelperText"),f=resolveComponent("FmSwitch");return openBlock(),createElementBlock(Fragment,null,[createVNode(_sfc_main$l,{modelValue:unref(n).name,"onUpdate:modelValue":t[0]||(t[0]=i=>unref(n).name=i),label:"Voucher name",schema:unref(ZodHelper).typeAtPath(unref(r),"name",[unref(n).type])},null,8,["modelValue","schema"]),createVNode(l,{class:"!mb-[-16px]",modelValue:unref(n).description,"onUpdate:modelValue":t[1]||(t[1]=i=>unref(n).description=i),rules:[unref(ZodHelper).ruleAtPath(unref(r),"description",[unref(n).type])]},{label:withCtx(()=>[(openBlock(),createBlock(resolveDynamicComponent(unref(ZodHelper).toInputLabel(unref(ZodHelper).typeAtPath(unref(r),"description",[unref(n).type]),"Voucher description"))))]),_:1},8,["modelValue","rules"]),createBaseVNode("div",_hoisted_1$5,[_hoisted_2$4,createBaseVNode("div",null,toDisplayString(((c=unref(n).description)==null?void 0:c.length)??0)+"/200",1)]),createVNode(_sfc_main$m,{class:"w-1/2 xs:w-2/3","aspect-ratio":"16/9",file:e.rewardImage??void 0,thumbnail:unref(n).image??void 0,"onUpdate:file":t[2]||(t[2]=async i=>{s("update:reward-image",i),i||(unref(n).image=null)})},{label:withCtx(()=>[(openBlock(),createBlock(resolveDynamicComponent(unref(ZodHelper).toInputLabel(unref(ZodHelper).typeAtPath(unref(r),"image",[unref(n).type]),"Voucher image"))))]),_:1},8,["file","thumbnail"]),_hoisted_3$4,createVNode(_sfc_main$n,{"model-value":unref(n).extras.effect,"onUpdate:modelValue":t[3]||(t[3]=i=>unref(n).extras.effect=i)},null,8,["model-value"]),unref(n).extras.effect==null?(openBlock(),createBlock(m,{key:0,class:"!mt-8",text:"Effect is required",state:"error"})):createCommentVNode("",!0),_hoisted_4$3,createVNode(_sfc_main$o,{"model-value":unref(n).options,"no-campaign":unref(n).noCampaign,"onUpdate:modelValue":t[4]||(t[4]=i=>unref(n).options=i),schema:unref(ZodHelper).typeAtPath(unref(r),"options",["VOUCHER"])},null,8,["model-value","no-campaign","schema"]),_hoisted_5$1,unref(n).type==="VOUCHER"?(openBlock(),createBlock(_sfc_main$p,{key:1,"model-value":((y=(p=unref(n).extras)==null?void 0:p.targetLocation)==null?void 0:y.map(String))??null,type:"select","onUpdate:modelValue":t[5]||(t[5]=i=>{unref(n).extras.targetLocation=i}),rules:[unref(ZodHelper).ruleAtPath(unref(r),"extras.targetLocation")]},null,8,["model-value","rules"])):createCommentVNode("",!0),createVNode(f,{modelValue:unref(n).internal,"onUpdate:modelValue":t[6]||(t[6]=i=>unref(n).internal=i),"label-placement":"right",label:"Internal only",sublabel:"Voucher will not be shown to customer"},null,8,["modelValue"])],64)}}}),_hoisted_1$4={key:0,class:"flex flex-col gap-y-24"},_hoisted_2$3=createBaseVNode("div",{class:"fm-typo-en-title-sm-800"},"Earning option",-1),_hoisted_3$3={class:"flex gap-8 items-center justify-start"},_sfc_main$4=defineComponent({__name:"EditRewardPoolSheet",emits:["update:model-value"],setup(e,{expose:u,emit:o}){const n=useMembershipStore(),{minor:r}=useLoading,s=ref(!1),a=ref(),t=ref(),l=ref(0),m=FdtoRandomReward,f=computed(()=>{const i=m.safeParse(a.value);return i.success?[]:i.error.errors});function c(i,d,v){i&&(a.value=d,l.value=v),s.value=i}const p=o;async function y(){const i=m.safeParse(a.value);i.success&&(await r(async()=>{i.data.type==="VOUCHER"&&t.value&&(i.data.collectibleConfig.image=await firebaseStorage.update(i.data.collectibleConfig.image||firebaseStorage.collectibleImagePath(void 0,t.value),t.value))},{message:"Uploading reward image",successMessage:"Reward image updated"}),p("update:model-value",i.data,l.value))}return u({showSheet:c}),(i,d)=>{const v=resolveComponent("FmSelect"),h=resolveComponent("FmStepperField"),b=resolveComponent("FmButton"),B=resolveComponent("FmSideSheet");return openBlock(),createBlock(B,{"max-width":560,modelValue:unref(s),"onUpdate:modelValue":[d[9]||(d[9]=V=>isRef(s)?s.value=V:null),d[10]||(d[10]=V=>s.value=V)],header:"Edit reward","dismiss-away":""},{"side-sheet-footer":withCtx(()=>[createBaseVNode("div",_hoisted_3$3,[createVNode(b,{variant:"primary",type:"button",disabled:unref(f).length>0,label:"Confirm",onClick:d[7]||(d[7]=V=>y())},null,8,["disabled"]),createVNode(b,{variant:"secondary",type:"button",label:"Cancel",onClick:d[8]||(d[8]=V=>s.value=!1)})])]),default:withCtx(()=>{var V;return[unref(a)?(openBlock(),createElementBlock("div",_hoisted_1$4,[createVNode(v,{label:"Reward Type",items:[{label:"No Reward",value:"NO_REWARD"},{label:"Voucher",value:"VOUCHER"},{label:"Loyalty",value:"LOYALTY"}],"model-value":unref(a).type,"onUpdate:modelValue":d[0]||(d[0]=g=>{g=="NO_REWARD"?a.value={type:"NO_REWARD",collectible:null,weight:1}:g==="VOUCHER"?a.value={collectible:null,type:"VOUCHER",collectibleConfig:unref(initCollectibleConfig)("VOUCHER",{business:unref(jt)().currentBusiness.value._id}),earningOption:{amount:1,type:"FIXED"},validityOption:{validForDay:7},weight:1}:a.value={collectible:unref(n).loyaltyRewards.raw[0]._id,type:"LOYALTY",earningOption:{amount:1,type:"FIXED"},validityOption:{validForDay:7},weight:1}})},null,8,["model-value"]),unref(a).type=="LOYALTY"?(openBlock(),createBlock(v,{key:0,label:"Loyalty type",rules:[unref(ZodHelper).ruleAtPath(unref(m),"collectible",[unref(a).type])],items:unref(n).loyaltyRewards.items,"model-value":unref(a).collectible,"onUpdate:modelValue":d[1]||(d[1]=g=>unref(a).collectible=g)},null,8,["rules","items","model-value"])):createCommentVNode("",!0),createVNode(h,{label:"Weight",rules:[unref(ZodHelper).ruleAtPath(unref(m),"weight",[unref(a).type])],"model-value":unref(a).weight,"onUpdate:modelValue":d[2]||(d[2]=g=>a.value={...unref(a),weight:g})},null,8,["rules","model-value"]),unref(a).type==="LOYALTY"?(openBlock(),createElementBlock(Fragment,{key:1},[_hoisted_2$3,createVNode(_sfc_main$7,{class:"mt-[-8px]",rules:[unref(ZodHelper).ruleAtPath(unref(m),"earningOption",[unref(a).type])],"helper-state":unref(ZodHelper).helperState(unref(f),"earningOption"),"error-text":unref(ZodHelper).helperText(unref(f),"earningOption"),"fixed-type":!0,"model-value":unref(a).earningOption,"onUpdate:modelValue":d[3]||(d[3]=g=>a.value={...unref(a),earningOption:g})},null,8,["rules","helper-state","error-text","model-value"]),createVNode(_sfc_main$q,{class:"!gap-24",rules:[unref(ZodHelper).ruleAtPath(unref(m),"validityOption",[unref(a).type])],"model-value":unref(a).validityOption,"onUpdate:modelValue":d[4]||(d[4]=g=>a.value={...unref(a),validityOption:g})},null,8,["rules","model-value"])],64)):createCommentVNode("",!0),unref(a).type==="VOUCHER"?(openBlock(),createBlock(_sfc_main$5,{key:2,"reward-image":unref(t),"model-value":((V=unref(a))==null?void 0:V.collectibleConfig)??void 0,"onUpdate:modelValue":d[5]||(d[5]=g=>a.value={...unref(a),collectibleConfig:g}),"onUpdate:rewardImage":d[6]||(d[6]=g=>t.value=g)},null,8,["reward-image","model-value"])):createCommentVNode("",!0),createVNode(JsonViewer,{json:unref(f)},null,8,["json"])])):createCommentVNode("",!0)]}),_:1},8,["modelValue"])}}});function isNullOrEmpty(e){return e==null||e===""}const _hoisted_1$3={class:"space-y-16"},_hoisted_2$2=createBaseVNode("div",{class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"}," Configure the reward type and weightage given to your customer. ",-1),_hoisted_3$2={class:"fm-typo-en-body-lg-400"},_hoisted_4$2={class:"fm-typo-en-body-md-400 text-fm-color-typo-secondary"},_sfc_main$3=defineComponent({__name:"RewardPoolInput",props:{modelValue:{type:Array,default:()=>[{collectible:null,type:"NO_REWARD",weight:1}]}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=useMembershipStore(),s=z.array(z.lazy(()=>FdtoRandomReward)).min(1,"Requires at least 1 reward"),a=computed(()=>o.modelValue??[]),t=computed(()=>{const i=s.safeParse(a.value);return i.success?[]:i.error.errors}),l=ref();function m(i,d){var h;const v=[...a.value];v[d]=i,(h=l.value)==null||h.showSheet(!1),n("update:model-value",v)}function f(i){const d=i.type=="VOUCHER"?i.collectibleConfig:r.collectibles.find(b=>b._id.toString()==i.collectible),v=CollectionUtils.formattedType((d==null?void 0:d.name)||""),h=i.weight;return{label:isNullOrEmpty(v)?"NO REWARD":v,sublabel:`${h} (${(h/a.value.reduce((b,B)=>b+B.weight,0)*100).toFixed(2)}%)`}}function c(i){var v;const d=[...a.value];(v=l.value)==null||v.showSheet(!0,d[i],i)}function p(i){const d=[...a.value];d.splice(i,1),n("update:model-value",d)}function y(){var i;(i=l.value)==null||i.showSheet(!0,{type:"NO_REWARD",collectible:null,weight:1},a.value.length)}return(i,d)=>{const v=resolveComponent("FmButton"),h=resolveComponent("FmCard"),b=resolveComponent("FmHelperText");return openBlock(),createElementBlock("div",_hoisted_1$3,[_hoisted_2$2,createVNode(v,{label:"Add Reward",onClick:d[0]||(d[0]=B=>y()),variant:"plain",icon:"add"}),(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(a),(B,V)=>(openBlock(),createBlock(h,{key:V,class:"px-16 py-12 flex items-center justify-between cursor-pointer",variant:"outlined",onClick:g=>c(V)},{default:withCtx(()=>[createBaseVNode("div",null,[createBaseVNode("div",_hoisted_3$2,toDisplayString(f(B).label),1),createBaseVNode("div",_hoisted_4$2,toDisplayString(f(B).sublabel),1)]),createVNode(v,{icon:"delete",variant:"tertiary",onClick:g=>(g.stopPropagation(),p(V))},null,8,["onClick"])]),_:2},1032,["onClick"]))),128)),(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(t).filter(B=>B.path.join(".")==""),B=>(openBlock(),createBlock(b,{key:B.message,text:B.message,state:"error"},null,8,["text"]))),128)),createVNode(_sfc_main$4,{ref_key:"sheetRef",ref:l,"onUpdate:modelValue":m},null,512)])}}}),_hoisted_1$2={class:"space-y-16"},_hoisted_2$1={key:0,class:"grid grid-cols-2 gap-16"},_hoisted_3$1={class:"fm-typo-en-title-sm-800"},_hoisted_4$1={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_sfc_main$2=defineComponent({__name:"PromotionGameTypeInput",props:{modelValue:{type:Object}},emits:["update:model-value"],setup(e,{emit:u}){const o=e,n=u,r=computed(()=>[{label:"Rock paper scissor",description:"Customers play a game of Rock Paper Scissors against the cashier.",value:F_GAME_TYPE.enum.ROCK_PAPER_SCISSORS}]);return(s,a)=>{var m,f;const t=resolveComponent("FmSwitch"),l=resolveComponent("FmCard");return openBlock(),createElementBlock("div",_hoisted_1$2,[createVNode(t,{label:"Enable game","model-value":!!((m=e.modelValue)!=null&&m.gameType),"onUpdate:modelValue":a[0]||(a[0]=c=>c?n("update:model-value",{gameType:"ROCK_PAPER_SCISSORS"}):n("update:model-value",null))},null,8,["model-value"]),((f=e.modelValue)==null?void 0:f.gameType)=="ROCK_PAPER_SCISSORS"?(openBlock(),createElementBlock("div",_hoisted_2$1,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(r),c=>{var p,y;return openBlock(),createBlock(l,{variant:"outlined",class:normalizeClass(["p-16 space-y-8 h-full cursor-pointer select-none xs:col-span-3",{"col-span-2":unref(r).length==1,"border-fm-color-primary bg-fm-color-system-warning-100 hover:border-[var(--fm-color-system-orange-300)]":((p=e.modelValue)==null?void 0:p.gameType)==c.value,"hover:bg-fm-color-opacity-sm":((y=e.modelValue)==null?void 0:y.gameType)!=c.value}]),onClick:()=>{var i;((i=o.modelValue)==null?void 0:i.gameType)!=c.value&&n("update:model-value",{gameType:c.value})},key:c.value},{default:withCtx(()=>[createBaseVNode("div",_hoisted_3$1,toDisplayString(c.label),1),createBaseVNode("div",_hoisted_4$1,toDisplayString(c.description),1)]),_:2},1032,["class","onClick"])}),128))])):createCommentVNode("",!0)])}}}),_hoisted_1$1={key:22},_sfc_main$1=defineComponent({__name:"TemplateInput",props:{field:{type:Object,required:!0},modelValue:{type:Object},schema:{type:Object},extras:{type:Object},helperText:{type:String},disabled:{type:Boolean,default:!1}},emits:["update:model-value","update:file"],setup(e,{emit:u}){const o=e,n=u;function r(l){switch(o.field.type){case"timeframe":const m=l.startDate?hooks(l.startDate).startOf("day").toISOString():void 0,f=l.endDate?hooks(l.endDate).endOf("day").toISOString():void 0;n("update:model-value",{type:"timeframe",property:"__now",start:m,end:f});break;case"image":{n("update:file",l,s.value||firebaseStorage.collectibleImagePath(void 0,l));break}default:n("update:model-value",l);break}}const s=computed(()=>{switch(o.field.type){case"timeframe":{const l=o.modelValue;return{startDate:l!=null&&l.start?hooks(l==null?void 0:l.start).format("YYYY-MM-DD"):null,endDate:l!=null&&l.end?hooks(l==null?void 0:l.end).format("YYYY-MM-DD"):null}}default:return o.modelValue}});function a(){if(!t.value.schema)return[];const l=t.value.schema.safeParse(o.modelValue);return l.success?[]:l.error.errors}const t=computed(()=>({schema:o.schema,unwrapped:o.schema?ZodHelper.unwrap(o.schema):void 0,rules:o.schema?[ZodHelper.ruleAtPath(o.schema,"")]:void 0,labelMark:o.schema&&ZodHelper.isRequired(o.schema)==!1?"optional":void 0,zodLabel:o.schema?ZodHelper.toInputLabel(o.schema,o.field.label):void 0}));return(l,m)=>{var d,v,h,b,B;const f=resolveComponent("FmTextField"),c=resolveComponent("FmStepperField"),p=resolveComponent("FmTextarea"),y=resolveComponent("FmHelperText"),i=resolveComponent("FmSwitch");return e.field.type==="text"?(openBlock(),createBlock(f,{key:0,label:e.field.label,"label-mark":unref(t).labelMark,rules:unref(t).rules,"model-value":unref(s),"onUpdate:modelValue":r},null,8,["label","label-mark","rules","model-value"])):e.field.type==="number"?(openBlock(),createElementBlock(Fragment,{key:1},[createVNode(JsonViewer,{json:{schema:unref(t).unwrapped,props:o}},null,8,["json"]),createVNode(c,{label:e.field.label,"label-mark":e.field.isRuleChildren?void 0:unref(t).labelMark,"model-value":unref(s),rules:e.field.isRuleChildren?[]:unref(t).rules,"onUpdate:modelValue":r,"helper-state":e.field.isRuleChildren&&e.helperText?"error":void 0,"helper-text":e.field.isRuleChildren?e.helperText:void 0},null,8,["label","label-mark","model-value","rules","helper-state","helper-text"])],64)):e.field.type==="textarea"?(openBlock(),createBlock(p,{key:2,label:e.field.label,"label-mark":unref(t).labelMark,rules:unref(t).rules,"model-value":unref(s),"onUpdate:modelValue":r,"show-word-count":"","max-length":(B=(b=(h=(v=(d=unref(t))==null?void 0:d.unwrapped)==null?void 0:v._def)==null?void 0:h.checks)==null?void 0:b.find(V=>V.kind=="max"))==null?void 0:B.value},null,8,["label","label-mark","rules","model-value","max-length"])):e.field.type==="trigger"?(openBlock(),createBlock(_sfc_main$b,{key:3,"campaign-type":e.extras,"model-value":unref(s),disabled:e.disabled,"onUpdate:modelValue":r},null,8,["campaign-type","model-value","disabled"])):e.field.type==="timeframe"?(openBlock(),createElementBlock(Fragment,{key:4},[createVNode(_sfc_main$9,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),createVNode(y,{class:"!mt-[8px]",text:unref(ZodHelper).helperText(a(),""),state:unref(ZodHelper).helperState(a(),"")},null,8,["text","state"])],64)):e.field.type==="image"?(openBlock(),createBlock(_sfc_main$m,{key:5,thumbnail:unref(s),"aspect-ratio":"16 / 9",class:"w-1/2 xs:w-2/3","onUpdate:file":r},{label:withCtx(()=>[(openBlock(),createBlock(resolveDynamicComponent(unref(t).zodLabel)))]),_:1},8,["thumbnail"])):e.field.type==="switch"?(openBlock(),createBlock(i,{key:6,label:e.field.label,"label-placement":"right",sublabel:e.field.property=="campaign.notify"?"Notify customer when customer receives the reward":void 0,"label-mark":unref(t).labelMark,rules:unref(t).rules,"model-value":unref(s),"onUpdate:modelValue":r},null,8,["label","sublabel","label-mark","rules","model-value"])):e.field.type==="collectible_options"?(openBlock(),createBlock(_sfc_main$o,{key:7,"model-value":unref(s),"onUpdate:modelValue":r,"no-campaign":!1,schema:unref(t).schema},null,8,["model-value","schema"])):e.field.type==="target_location"?(openBlock(),createBlock(_sfc_main$p,{key:8,"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"])):e.field.type=="effect"?(openBlock(),createElementBlock(Fragment,{key:9},[createVNode(_sfc_main$n,{"model-value":unref(s),"onUpdate:modelValue":r,"can-set-auto-apply":e.field.property=="campaign.effect"},null,8,["model-value","can-set-auto-apply"]),unref(s)?createCommentVNode("",!0):(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:"Effect is required",state:"error"}))],64)):e.field.type==="message"?(openBlock(),createBlock(_sfc_main$r,{key:10,"model-value":unref(s),"onUpdate:modelValue":r,"helper-text":unref(ZodHelper).helperText(a(),""),"helper-state":unref(ZodHelper).helperState(a(),"")},null,8,["model-value","helper-text","helper-state"])):e.field.type==="earning_option"?(openBlock(),createBlock(_sfc_main$7,{key:11,"model-value":unref(s),"onUpdate:modelValue":r,extras:e.extras},null,8,["model-value","extras"])):e.field.type==="validity_option"?(openBlock(),createBlock(_sfc_main$q,{key:12,type:"custom","model-value":unref(s),"onUpdate:modelValue":r,"helper-text":unref(ZodHelper).helperText(a(),""),"helper-state":unref(ZodHelper).helperState(a(),"")},null,8,["model-value","helper-text","helper-state"])):e.field.type==="game_type"?(openBlock(),createBlock(_sfc_main$6,{key:13,"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"])):e.field.type==="reward_pool"?(openBlock(),createBlock(_sfc_main$3,{key:14,"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"])):e.field.type==="rule_schedule"?(openBlock(),createElementBlock(Fragment,{key:15},[createVNode(_sfc_main$8,{"model-value":unref(s),"onUpdate:modelValue":r,"start-date":e.extras.start,"end-date":e.extras.end},null,8,["model-value","start-date","end-date"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="rule_user"?(openBlock(),createElementBlock(Fragment,{key:16},[createVNode(_sfc_main$g,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="rule_time"?(openBlock(),createElementBlock(Fragment,{key:17},[createVNode(_sfc_main$f,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="rule_bill"?(openBlock(),createElementBlock(Fragment,{key:18},[createVNode(_sfc_main$e,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="rule_feedback"?(openBlock(),createElementBlock(Fragment,{key:19},[createVNode(_sfc_main$c,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="rule_birthday"?(openBlock(),createElementBlock(Fragment,{key:20},[createVNode(_sfc_main$d,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):e.field.type==="promotion_game_type"?(openBlock(),createElementBlock(Fragment,{key:21},[createVNode(_sfc_main$2,{"model-value":unref(s),"onUpdate:modelValue":r},null,8,["model-value"]),e.helperText?(openBlock(),createBlock(y,{key:0,class:"!mt-[8px]",text:e.helperText,state:"error"},null,8,["text"])):createCommentVNode("",!0)],64)):(openBlock(),createElementBlock("pre",_hoisted_1$1,toDisplayString(o.field),1))}}}),_hoisted_1={class:"xs:hidden px-24 pb-[14px] pt-[22px] flex items-center justify-between w-full border-b"},_hoisted_2={class:"flex items-center gap-8"},_hoisted_3={key:0,class:"max-w-6xl mx-auto"},_hoisted_4={class:"hidden xs:flex gap-8 items-center w-full px-16 py-8 border-b border-fm-color-neutral-gray-100"},_hoisted_5={class:"grid grid-cols-3 gap-40"},_hoisted_6={class:"col-span-2 space-y-40 xs:col-span-3 xs:px-16 xs:pt-16"},_hoisted_7={class:"fm-typo-en-title-sm-800 !mb-[-16px]"},_hoisted_8={class:"w-full flex items-center justify-end gap-8 pb-24"},_hoisted_9=createBaseVNode("div",{class:"fm-typo-en-body-lg-600"},"Campaign summary",-1),_hoisted_10=createBaseVNode("div",{class:"border-b border-fm-color-neutral-gray-100 w-full"},null,-1),_hoisted_11={class:"fm-typo-en-body-lg-400 text-fm-color-typo-secondary"},_hoisted_12={class:"fm-typo-en-body-lg-600"},_hoisted_13={class:"max-w-6xl mx-auto rounded-md p-4 w-full"},_hoisted_14={class:"animate-pulse flex space-x-4 pt-16"},_hoisted_15={class:"grid grid-cols-3 w-full gap-40"},_hoisted_16=createBaseVNode("div",{class:"col-span-2 space-y-80 xs:col-span-3 xs:px-16 xs:pt-16"},[createBaseVNode("div",{class:"flex-1 space-y-6 py-1"},[createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100 rounded"}),createBaseVNode("div",{class:"h-[80px] bg-fm-color-neutral-gray-100 rounded"}),createBaseVNode("div",{class:"space-y-3"},[createBaseVNode("div",{class:"grid grid-cols-2 gap-4"},[createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"}),createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"})]),createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"})]),createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100 rounded"}),createBaseVNode("div",{class:"h-[80px] bg-fm-color-neutral-gray-100 rounded"}),createBaseVNode("div",{class:"space-y-3"},[createBaseVNode("div",{class:"grid grid-cols-2 gap-4"},[createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"}),createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"})]),createBaseVNode("div",{class:"h-32 bg-fm-color-neutral-gray-100"})])])],-1),_sfc_main=defineComponent({__name:"EditCampaignSheet",emits:["submit:model-value"],setup(__props,{expose:__expose,emit:__emit}){const Dialog=Mre(),sheetVisible=ref(!1),currentStep=ref(1),data=ref(),schema=ref(z.any()),template=ref(TEMPLATES.VOUCHER),{minor}=useLoading,isLoading=ref(!1),sheetTitle=ref("Create Campaign");async function showSheet(visible,type,campaign,selectedTemplate){var e,u;if(sheetVisible.value=visible,visible==!0){try{isLoading.value=visible,await useMembershipStore().readRewards(),await useBusinessStore().readLocations(),await useMembershipStore().readSegments(),await useMembershipStore().readMembership()}catch{}finally{await new Promise(o=>setTimeout(o,120)),isLoading.value=!1}template.value=selectedTemplate??TEMPLATES[type],schema.value=CampaignDtos[type],data.value=campaign!=null?{...campaign,templateId:(e=campaign.template)==null?void 0:e._id}:_.cloneDeep({...(u=template.value)==null?void 0:u.defaultValue}),"configs"in data.value&&typeof data.value.configs=="string"&&(data.value.configs=eval(data.value.configs)),data.value=cleanPF(data.value),data.value.templateId=SvcConfig.getBusinessId(),data.value.campaign.business=SvcConfig.getBusinessId(),data.value.campaign.templateId=SvcConfig.getBusinessId(),"configs"in data.value&&(data.value.configs.business=SvcConfig.getBusinessId()),currentStep.value=1,sheetTitle.value=campaign?`Edit ${CampaignOptions[type].name} Campaign`:`Create ${CampaignOptions[type].name} Campaign`}}async function hideSheet(){Dialog.open({title:"Unsaved Changes",message:"Are you sure you want to discard this changes?",primaryActions:{text:"Discard",close:!0},secondaryActions:{text:"Cancel",close:!1}}).onPrimary(()=>{sheetVisible.value=!1}).onSecondary(()=>{Dialog.close()})}const emits=__emit,errors=computed(()=>{const e=schema.value.superRefine(campaignRefinement).safeParse(data.value);return e.success?[]:e.error.errors});function stepErrors(e=currentStep.value-1){const u=template.value.steps[e].groups.flatMap(o=>o.fields.map(n=>n.property));return errors.value.filter(o=>u.includes(o.path.join(".")))}__expose({showSheet});function onUpdateProperty(e,u){if(_.set(data.value,e,u),e!="campaign.event.type")return;const o=RuleBuilder.setRuleToGroup(RuleBuilder.scaffoldGroup(),[RuleBuilder.scaffoldGroup("g_schedule"),RuleBuilder.scaffoldGroup("g_time"),RuleBuilder.scaffoldGroup("g_user"),RuleBuilder.scaffoldGroup("g_bill")]),n=RuleBuilder.setRuleToGroup(RuleBuilder.scaffoldGroup("g_schedule"),[RuleBuilder.constructEntry("trigger.date","_rrule","RRULE:FREQ=DAILY;INTERVAL=1;BYHOUR=0;BYMINUTE=0;BYSECOND=0;WKST=SU"),RuleBuilder.constructEntry("trigger.time","_isOnTime","00:00")],"&&");if(u!="SCHEDULE"){_.set(data.value,"campaign.event.rule",o);return}_.set(data.value,"campaign.event.rule",RuleBuilder.setRuleToGroup(o,n))}async function onUpdateFile(e,u){return e?await minor(async()=>firebaseStorage.update(u,e),{message:`${e?"Uploading":"Removing"} file`,successMessage:`File ${e?"uploaded":"removed"} successfully`}):""}function isDisable(e){var u,o;switch(e==null?void 0:e.property){case"campaign.event.type":return((o=(u=data.value)==null?void 0:u.campaign)==null?void 0:o._id)||!1;default:return!1}}function onSubmit(){const e=schema.value.superRefine(campaignRefinement).transform(campaignTransform).safeParse(data.value);e.success&&(emits("submit:model-value",cleanPF(JSON.parse(JSON.stringify(e.data)))),sheetVisible.value=!1)}return(e,u)=>{const o=resolveComponent("FmButton"),n=resolveComponent("FmStep"),r=resolveComponent("FmStepper"),s=resolveComponent("FmCard"),a=resolveComponent("FmTopSheet");return openBlock(),createBlock(a,{"fullscreen-size":"lg",modelValue:unref(sheetVisible),"onUpdate:modelValue":[u[6]||(u[6]=t=>isRef(sheetVisible)?sheetVisible.value=t:null),u[7]||(u[7]=t=>sheetVisible.value=t)]},createSlots({"top-sheet-header":withCtx(()=>[createBaseVNode("div",_hoisted_1,[createBaseVNode("div",null,toDisplayString(unref(sheetTitle)),1),createBaseVNode("div",_hoisted_2,[createVNode(o,{onClick:u[0]||(u[0]=t=>hideSheet()),label:"Cancel",variant:"tertiary"}),createVNode(o,{onClick:onSubmit,label:"Save",disabled:unref(errors).length>0},null,8,["disabled"])])])]),_:2},[unref(isLoading)?{name:"default",fn:withCtx(()=>[createBaseVNode("div",_hoisted_13,[createBaseVNode("div",_hoisted_14,[createBaseVNode("div",_hoisted_15,[_hoisted_16,createVNode(s,{class:"h-[150px] bg-fm-color-neutral-gray-100"})])])])]),key:"1"}:{name:"default",fn:withCtx(()=>[unref(data)?(openBlock(),createElementBlock("div",_hoisted_3,[createVNode(r,{modelValue:unref(currentStep),"onUpdate:modelValue":u[1]||(u[1]=t=>isRef(currentStep)?currentStep.value=t:null),orientation:"horizontal",class:"xs:hidden mx-[-24px] mt-16 mb-24 flex-1"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(template).steps,(t,l)=>(openBlock(),createBlock(n,{key:t.name,title:t.name,value:l+1,error:()=>stepErrors(l).length>0,complete:()=>l+1<=unref(currentStep)&&stepErrors(unref(currentStep)-1).length==0},null,8,["title","value","error","complete"]))),128))]),_:1},8,["modelValue"]),createBaseVNode("div",_hoisted_4,[createVNode(o,{icon:"close",variant:"tertiary",onClick:u[2]||(u[2]=t=>sheetVisible.value=!1)}),createVNode(r,{modelValue:unref(currentStep),"onUpdate:modelValue":u[3]||(u[3]=t=>isRef(currentStep)?currentStep.value=t:null),orientation:"horizontal",class:"flex-1"},{default:withCtx(()=>[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(template).steps,(t,l)=>(openBlock(),createBlock(n,{key:t.name,title:unref(data).campaign._id?"Create campaign":"Edit campaign",description:t.name,value:l+1,error:()=>stepErrors(l).length>0,complete:()=>l+1<=unref(currentStep)&&stepErrors(unref(currentStep)-1).length==0},null,8,["title","description","value","error","complete"]))),128))]),_:1},8,["modelValue"]),createVNode(o,{icon:"info",variant:"tertiary"})]),createBaseVNode("div",_hoisted_5,[createBaseVNode("div",_hoisted_6,[createVNode(JsonViewer,{json:{data:unref(data),errors:unref(errors).map(t=>`${t.path.join(".")} - ${t.message}`),stepErrors:stepErrors().map(t=>`${t.path.join(".")} - ${t.message}`),schema:unref(schema)}},null,8,["json"]),(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(template).steps[unref(currentStep)-1].groups.filter(t=>t.fields.length&&(!t.condition||unref(_).get(unref(data),t.condition.property)==t.condition.value==(t.condition.not!=!0))),(t,l)=>(openBlock(),createElementBlock("div",{key:l,class:"space-y-24"},[createBaseVNode("div",_hoisted_7,toDisplayString(t.name),1),(openBlock(!0),createElementBlock(Fragment,null,renderList(t.fields,(m,f)=>(openBlock(),createElementBlock("div",{key:f},[(openBlock(),createBlock(_sfc_main$1,{key:f,field:m,modelValue:unref(_).get(unref(data),m.property),disabled:isDisable(m),"onUpdate:modelValue":c=>onUpdateProperty(m.property,c),"onUpdate:file":async(c,p)=>{const y=await onUpdateFile(c,p);onUpdateProperty(m.property,y||"")},schema:unref(ZodHelper).typeAtPath(unref(schema),m.property,[unref(data).campaign.type]),"helper-text":unref(ZodHelper).helperText(unref(errors),m.property),extras:m.extras?unref(_).get(unref(data),m.extras):void 0},null,8,["field","modelValue","disabled","onUpdate:modelValue","onUpdate:file","schema","helper-text","extras"]))]))),128))]))),128)),createBaseVNode("div",_hoisted_8,[createVNode(o,{label:"Back",variant:"tertiary",disabled:unref(currentStep)==1,onClick:u[4]||(u[4]=t=>currentStep.value--)},null,8,["disabled"]),createVNode(o,{disabled:stepErrors().length>0,label:unref(currentStep)-1<unref(template).steps.length-1?"Next":"Submit",onClick:u[5]||(u[5]=t=>unref(currentStep)-1<unref(template).steps.length-1?currentStep.value++:onSubmit())},null,8,["disabled","label"])])]),createVNode(s,{variant:"outlined",class:"p-16 space-y-8 xs:hidden"},{default:withCtx(()=>[_hoisted_9,_hoisted_10,(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(getCampaignSummaryObject)(unref(data)),(t,l)=>(openBlock(),createElementBlock("div",{class:"space-y-4",key:l},[t?(openBlock(),createElementBlock(Fragment,{key:0},[createBaseVNode("div",_hoisted_11,toDisplayString(l),1),createBaseVNode("div",_hoisted_12,toDisplayString(t),1)],64)):createCommentVNode("",!0)]))),128))]),_:1})])])):createCommentVNode("",!0)]),key:"0"}]),1032,["modelValue"])}}});export{_sfc_main as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.fm-effect-sheet>div{padding:0!important;border-radius:0!important}.fm-effect-sheet>div>div>div{padding:0!important}
|