Files
2026-08-27 12:18:36 +08:00

31 lines
34 KiB
JavaScript

;(() => {
const stylesheetSelector = "link[rel=stylesheet]"
const loaded = new Set(Array.from(document.querySelectorAll(stylesheetSelector)).map(link => link.href))
const version = "1787646744133"
const findLoadedLink = href => Array.from(document.querySelectorAll(stylesheetSelector)).find(link => link.href === href)
const removeAfterLoad = (freshLink, staleLink) => {
const remove = () => staleLink.remove()
if (freshLink.sheet) {
requestAnimationFrame(remove)
return
}
freshLink.addEventListener("load", remove, { once: true })
}
for (const link of Array.from(document.querySelectorAll(stylesheetSelector))) {
const url = new URL(link.href, location.href)
if (url.origin !== location.origin || url.searchParams.get("v") === version) continue
url.searchParams.set("v", version)
if (loaded.has(url.href)) {
const freshLink = findLoadedLink(url.href)
if (freshLink && freshLink !== link) removeAfterLoad(freshLink, link)
continue
}
const freshLink = document.createElement("link")
freshLink.rel = "stylesheet"
freshLink.href = url.href
link.parentNode?.insertBefore(freshLink, link.nextSibling)
loaded.add(url.href)
removeAfterLoad(freshLink, link)
}
})();
import{r as e}from"./rolldown-runtime.js?v=1787646744133";import{Bt as t,Cn as n,Dn as r,En as i,Jn as a,Kn as o,Ln as s,Or as c,Qn as l,Sn as u,Xn as d,Yr as f,ar as p,bn as m,br as h,cr as g,ei as _,er as v,fn as ee,jt as y,kn as b,lr as x,mn as S,nn as C,rr as te,un as ne,vr as w,wr as re,xn as T,yn as E}from"./vendor-utils.js?v=1787646744133";import{a as D,o as ie}from"./vendor-vue.js?v=1787646744133";import{$ as O,A as ae,B as oe,F as k,I as A,St as j,Tt as M,Z as se,gt as ce,h as N,tt as P,v as le}from"./vendor-naive.js?v=1787646744133";import{Lf as F,Nf as ue,Oa as de,Rf as I,gp as fe,qf as pe,yp as L,zf as R}from"./app.js?v=1787646744133";import{aa as me,ia as he}from"./app-components.js?v=1787646744133";import{$o as ge,Cs as _e,Pu as ve,Yf as ye,fs as be,us as xe,ws as Se}from"./app-shared.js?v=1787646744133";C();var Ce=h(0),z=h([]),B=h([]),V=h(Date.now()),H=h(`root`),U=h(`trigger`),W=h({root:{nodeKey:`root`,parentNodeKey:``,type:`trigger`,id:0,parent_id:0,broken:!1,complete:!0,config:{type:`subscriber_added`,group_ids:[]}}}),G=h({}),K=h({}),we=h({}),Te=h({}),Ee=h({}),q=h({}),J=h({trigger:W,email:G,delay:K,webhook:we,action:Te,abTest:Ee,condition:q}),Y=h({nodeKey:``,parentNodeKey:``,type:`trigger`,next:null,id:0,parent_id:0,broken:!1,complete:!1}),De=h({trigger:h({...Y.value,config:{type:`subscriber_added`,group_ids:[]}}),email:h({...Y.value,email_id:0,name:``,subject:``,from:``,from_name:``,track_opens:!0,track_clicks:!0,track_unsubscribe:!0}),delay:h({...Y.value,value:0,unit:`days`,description:``}),webhook:h({...Y.value,url:``,secret:``}),action:h({...Y.value,action:`add_to_subscribers`,group_ids:[],description:``}),abTest:h({...Y.value,name:``,branches:[]}),condition:h({...Y.value,rules:[{type:null}],logic_type:`or`,yes:[],no:[],description:``})}),X={events:{},$on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]},$emit(e,t){this.events[e].forEach(e=>{e(t)})},$unsubscribe(e){this.events[e]=[]}};C();function Z(e,t){let n=e===`trigger`?`root`:pe(),r=y(De.value[e]);return r.nodeKey=n,r.parentNodeKey=t,r.type=e,J.value[e][n]=r,r}function Oe(e,t){let n=Z(e,`root`);if(t===``)B.value.unshift({type:e,key:n.nodeKey});else{let r=B.value.findIndex(e=>e.key==t);B.value.splice(r+1,0,{type:e,key:n.nodeKey})}return n}function ke(e,t){let n=Z(e,t);return q.value[t].yes.unshift({type:e,key:n.nodeKey}),e==`condition`&&X.$on(n.nodeKey,()=>{We(n.nodeKey,t)}),n}function Ae(e,t){let n=Z(e,t);return q.value[t].yes.push({type:e,key:n.nodeKey}),n}function je(e,t){let n=Z(e,t);return q.value[t].no.unshift({type:e,key:n.nodeKey}),e==`condition`&&X.$on(n.nodeKey,()=>{Ge(n.nodeKey,t)}),n}function Me(e,t){let n=Z(e,t);return q.value[t].no.push({type:e,key:n.nodeKey}),n}function Ne(e,t){let n=q.value[e],{parentNodeKey:r}=n;n[t].forEach(t=>{if(t.type!==`trigger`){let e=J.value[t.type];e[t.key].parentNodeKey=n.parentNodeKey}r===`root`?B.value.push({type:t.type,key:t.key}):q.value[r][Pe(e)].push({type:t.type,key:t.key})})}function Pe(e){let t=q.value[e].parentNodeKey;return q.value[t].yes.some(t=>t.key===e)?`yes`:`no`}function Fe(e,t){let n=B.value.findIndex(e=>e.key==t);B.value.splice(n,1),delete J.value[e][t]}function Ie(e){let t=h(1),n=J.value.condition[e],a=n.yes.length>0||n.no.length>0;ue({title:`Please choose one of the following`,width:400,content:()=>r(S,null,[a&&r(se,{value:t.value,onUpdateValue:e=>t.value=e},{default:()=>[r(`div`,null,[r(O,{value:1},{default:()=>[i(`Delete both branches including all steps below.`)]})]),r(`div`,{class:`mt-6px`},[r(O,{value:2},{default:()=>[i(`Delete only YES branch including steps below.`)]})]),r(`div`,{class:`mt-6px`},[r(O,{value:3},{default:()=>[i(`Delete only NO branch including steps below.`)]})])]}),!a&&r(`div`,null,[i(`Do you really want to delete this step?`)])]),onConfirm:async()=>{switch(t.value){case 1:Le(e),Re(e),ze(e);break;case 2:Le(e),Ne(e,`no`),ze(e);break;case 3:Re(e),Ne(e,`yes`),ze(e);break}await Q(),H.value===e&&(V.value=Date.now(),H.value=`root`,U.value=`trigger`)}})}function Le(e){q.value[e].yes.forEach(t=>{t.type!==`trigger`&&(t.type===`condition`?He(t.key):Be(t.type,e,t.key))})}function Re(e){q.value[e].no.forEach(t=>{t.type!==`trigger`&&(t.type===`condition`?Ue(t.key):Ve(t.type,e,t.key))})}function ze(e){let{parentNodeKey:t}=q.value[e];if(t===`root`)Fe(`condition`,e);else{let n=q.value[t],r=n.yes.findIndex(t=>t.key===e);r>-1?n.yes.splice(r,1):(r=n.no.findIndex(t=>t.key===e),n.no.splice(r,1))}}function Be(e,t,n){let r=q.value[t].yes.findIndex(e=>e.key==n);q.value[t].yes.splice(r,1),delete J.value[e][n]}function Ve(e,t,n){let r=q.value[t].no.findIndex(e=>e.key==n);q.value[t].no.splice(r,1),delete J.value[e][n]}function He(e){Le(e),X.$emit(e)}function Ue(e){Re(e),X.$emit(e)}function We(e,t){let n=q.value[t].yes.findIndex(t=>t.key==e);q.value[t].yes.splice(n,1),X.$unsubscribe(e)}function Ge(e,t){let n=q.value[t].no.findIndex(t=>t.key==e);q.value[t].no.splice(n,1),X.$unsubscribe(e)}function Ke(e){et();let{root:n,triggers:r}=e;t(r)&&r.length>0&&(r[0].type===`subscriber_added`&&(J.value.trigger.root.complete=r[0].group_ids.length>0),J.value.trigger.root.config=r[0]),B.value=qe(n,`root`)}function qe(e,t,n=!1){let r=[],i=e;for(;i;){let e=i.nodeKey,a={key:e,type:i.type};if(r.push(a),i.type!==`condition`)J.value[i.type][e]=Je(i),i=i.next;else{n&&X.$on(e,()=>{We(e,t)}),J.value.condition[e]=Ye(i,e);break}}return r}function Je(e){return{...e,next:null}}function Ye(e,t){return{...e,nodeKey:t,yes:qe(e.yes,t,!0),no:qe(e.no,t,!0),next:null}}function Xe(){let e=Ze(B.value);return{triggers:[re(J.value.trigger.root.config)],root:e}}function Ze(e){return e.reduceRight((e,t)=>{let n=J.value[t.type][t.key],r=y(n);return r.type===`condition`?{...Qe(r),next:e}:{...r,next:e}},null)}function Qe(e){return{...e,yes:Ze(e.yes),no:Ze(e.no),next:null}}async function $e(){let{message:e}=await be({id:Ce.value});L(e)&&Ke(e)}async function Q(e=`save`){let t=Xe(),{message:n}=await xe({id:Ce.value,...t});if(L(n)){switch(e){case`save`:F.success(`Save successfully`);break;case`del`:F.success(`Node deleted successfully`);break;case`add`:F.success(`Node added successfully`);break}Ke(n)}}async function et(){B.value=[],Object.keys(J.value).forEach(e=>{e!==`trigger`&&(J.value[e]={})})}function tt(e,t){let n=J.value[t],r=Object.entries(n).filter(([,t])=>t.id===e);return r.length>0?r[0][1].name:``}function nt(){V.value=Date.now(),H.value=`root`,U.value=`trigger`}C();var rt={class:`tool-icon`},it={class:`add-node`},at={class:`node-list`},ot=[`onClick`],st=R(b({__name:`ToolAdd`,props:{parentKey:{},parentType:{},last:{type:Boolean}},emits:[`addNode`],setup(e,{emit:t}){let i=e,o=t,s=p(`popoverRef`),l=h([{type:`email`,icon:``,desc:`Email`},{type:`delay`,icon:``,desc:`Delay`},{type:`webhook`,icon:``,desc:`Webhook`}]),u=E(()=>i.last?l.value:l.value.filter(e=>e.type!==`condition`));function f(e){var t;o(`addNode`,e,i.parentKey),(t=s.value)==null||t.setShow(!1)}return(e,t)=>{let i=I,o=M;return a(),T(o,{ref_key:`popoverRef`,ref:s,trigger:`click`},{trigger:g(()=>[m(`div`,rt,[r(i,{name:`base-add`,size:`16`})])]),default:g(()=>[m(`div`,it,[t[0]||(t[0]=m(`div`,{class:`header`},`Add a next step to your workflow`,-1)),m(`div`,at,[(a(!0),n(S,null,d(c(u),e=>(a(),n(`div`,{key:e.type,class:`node-item`,onClick:t=>f(e.type)},_(e.desc),9,ot))),128))])])]),_:1},512)}}}),[[`__scopeId`,`data-v-bb073909`]]);C();var ct={class:`normal-node`},lt={key:0,class:`font-bold`},ut=b({__name:`TriggerNode`,props:{type:{default:`trigger`},nodeKey:{default:``}},setup(e){let t=e,r=E(()=>W.value[t.nodeKey]),i=E(()=>{let{config:e}=r.value;if(e.type===`subscriber_added`&&e.group_ids.length===0)return`Set up workflow trigger`;switch(e.type){case`subscriber_added`:return`When a new email joins group(s) `;case`subscribed`:return`When subscriber joins group(s) `;case`opened`:return`When subscriber opens an email `;case`clicked`:return`When subscriber clicks a link ${e.link} `;case`unsubscribed`:return`When subscriber unsubscribes `;default:return`Set up workflow trigger `}}),o=E(()=>{let{config:e}=r.value;switch(e.type){case`subscriber_added`:case`subscribed`:return s(e.group_ids);case`clicked`:return e.link.url}return``}),s=e=>z.value.filter(t=>e.includes(t.id)).map(e=>e.mail_type).join(`, `);return(e,t)=>(a(),n(`div`,ct,[m(`span`,null,_(c(i)),1),c(o)?(a(),n(`span`,lt,_(c(o)),1)):u(``,!0)]))}});C();var dt={class:`normal-node`},ft={class:`mt-8px`},pt={key:0,class:`font-bold`},mt=b({__name:`ActionNode`,props:{type:{default:`trigger`},nodeKey:{default:``}},setup(e){let t=e,i=E(()=>Te.value[t.nodeKey]),o=E(()=>{if(i.value.complete&&i.value.group_ids.length>0)switch(i.value.action){case`add_to_subscribers`:return`Add to group(s) `;case`remove_from_subscribers`:return`Remove from group(s) `;case`mark_as_unsubscribe`:return`Mark as unsubscribed`}return`Define action`}),s=E(()=>{if(i.value.complete)switch(i.value.action){case`add_to_subscribers`:case`remove_from_subscribers`:return l(i.value.group_ids)}return``}),l=e=>z.value.filter(t=>e.includes(t.id)).map(e=>e.mail_type).join(`, `);return(e,t)=>{let i=I;return a(),n(`div`,dt,[m(`div`,null,[r(i,{name:`flow-action`,size:`16`})]),m(`div`,ft,[m(`span`,null,_(c(o)),1),c(s)?(a(),n(`span`,pt,_(c(s)),1)):u(``,!0)])])}}});C();var ht={class:`normal-node`},gt={class:`mt-8px`},_t=b({__name:`DelayNode`,props:{type:{default:`delay`},nodeKey:{default:``}},setup(e){let t=e,i=E(()=>K.value[t.nodeKey]),o=E(()=>i.value.complete?`Wait ${i.value.value} ${i.value.unit}`:`Set delay`);return(e,t)=>{let i=I;return a(),n(`div`,ht,[m(`div`,null,[r(i,{name:`flow-delay`,size:`16`})]),m(`div`,gt,_(c(o)),1)])}}});C();var vt={class:`normal-node`},yt={class:`mt-8px`},bt=R(b({__name:`EmailNode`,props:{type:{default:`email`},nodeKey:{default:``}},setup(e){let t=e,i=E(()=>G.value[t.nodeKey]),o=E(()=>i.value.complete?i.value.name:`Set email`);return(e,t)=>{let i=I;return a(),n(`div`,vt,[m(`div`,null,[r(i,{name:`flow-email`,size:`16`})]),m(`div`,yt,_(c(o)),1)])}}}),[[`__scopeId`,`data-v-9bb21c05`]]);C();var xt={class:`normal-node`},St={class:`mt-8px`},Ct=b({__name:`WebhookNode`,props:{type:{default:`webhook`},nodeKey:{default:``}},setup(e){let t=e,i=E(()=>we.value[t.nodeKey]),o=E(()=>i.value.complete?i.value.url:`Set webhook`);return(e,t)=>{let i=I;return a(),n(`div`,xt,[m(`div`,null,[r(i,{name:`flow-webhook`,size:`16`})]),m(`div`,St,_(c(o)),1)])}}});C();var wt={};function Tt(e,t){return a(),n(`div`)}var Et=R(wt,[[`render`,Tt]]);C();var Dt=R(b({__name:`index`,props:{type:{default:`trigger`},nodeKey:{default:``}},setup(e){let t=e,n=E(()=>{switch(t.type){case`trigger`:return ut;case`delay`:return _t;case`action`:return mt;case`email`:return bt;case`webhook`:return Ct;default:return Et}});return(t,r)=>(a(),T(v(c(n)),{type:e.type,"node-key":e.nodeKey},null,8,[`type`,`node-key`]))}}),[[`__scopeId`,`data-v-c03efef8`]]);C();var Ot={key:0,class:`line`},kt={class:`node-title`},At={key:1,class:`text`},jt={class:`tools-box`},$=R(b({__name:`NormalNode`,props:{last:{type:Boolean,default:!1},type:{default:`trigger`},nodeKey:{default:`root`}},emits:[`addNode`,`delNormalNode`,`selectNode`],setup(e,{emit:t}){let i=e,o=t,s=E(()=>i.type!==`trigger`),l=E(()=>!p.value.complete),d=E(()=>i.nodeKey===H.value),p=E(()=>J.value[i.type][i.nodeKey]),h=E(()=>i.type?he(i.type):``);function g(){o(`selectNode`,i.type,i.nodeKey)}function v(e){o(`addNode`,e,p.value)}function y(){if(i.type===`email`){let e=!1,t=J.value.email[i.nodeKey],n=J.value.condition,r=Object.entries(n);for(let[,n]of r){if(n.complete&&n.rules.length>0){for(let r of n.rules)if(r.type===`workflow`&&r.node_id===t.id){e=!0;break}}if(e)break}if(e){F.error(`The email node is used in the condition node and cannot be deleted`,{close:!0});return}}ue({title:`Please confirm`,content:`Do you really want to delete this step?`,onConfirm:async()=>{o(`delNormalNode`,i.type,i.nodeKey),await Q(`del`)}})}return(t,i)=>{let o=I;return a(),n(S,null,[c(s)?(a(),n(`div`,Ot)):u(``,!0),m(`div`,{class:f([`node-box`,{warning:c(l),action:c(d)}]),onClick:g},[m(`div`,kt,[c(l)?(a(),T(o,{key:0,class:`icon`,name:`warning`,color:`#FDCA62`})):u(``,!0),c(s)?(a(),n(`span`,At,_(c(h)),1)):u(``,!0)]),c(s)?(a(),n(`span`,{key:0,class:`del-node`,onClick:ee(y,[`stop`])},[r(o,{name:`flow-del`})])):u(``,!0),r(Dt,{type:e.type,"node-key":e.nodeKey},null,8,[`type`,`node-key`])],2),m(`div`,jt,[i[0]||(i[0]=m(`div`,{class:`line`},null,-1)),m(`div`,null,[r(st,{last:e.last,"parent-type":e.type,"parent-key":e.nodeKey,onAddNode:v},null,8,[`last`,`parent-type`,`parent-key`])])])],64)}}}),[[`__scopeId`,`data-v-69391ff2`]]);C();var Mt={class:`node-title`},Nt={class:`text-center`},Pt={class:`mt-12px text-14px text-center`},Ft={key:0,class:`font-bold`},It={class:`tools-box`},Lt={class:`condition-box`},Rt={class:`condition-item`},zt={class:`condition-state success`},Bt={class:`tools-box`},Vt={key:0,class:`flow-tree`},Ht={class:`condition-item`},Ut={class:`condition-state fail`},Wt={class:`tools-box`},Gt={key:0,class:`flow-tree`},Kt=R(b({name:`ConditionNode`,__name:`ConditionNode`,props:{type:{default:`trigger`},nodeKey:{default:`root`}},emits:[`delCondition`,`selectNode`],setup(e,{emit:t}){let i=e,o=t,s=E(()=>!h.value.complete),p=E(()=>i.nodeKey===H.value),h=E(()=>q.value[i.nodeKey]),g=new Map([[`clicked`,` had any link clicked`],[`link_clicked`,` had a specific link clicked`],[`link_not_clicked`,` did not have a specific link clicked`],[`opened`,` was opened`],[`not_opened`,` was not opened`],[`opened_with_not_clicked`,` was opened with no links clicked`]]),v=E(()=>{let{rules:e}=h.value;if(e.length>0&&e[0].type!==null)switch(e[0].type){case`campaign`:return e[0].campaign.name;case`workflow`:return tt(e[0].node_id,`email`)}return``}),y=E(()=>{let{complete:e,rules:t,logic_type:n}=h.value;if(e&&t.length>0&&t[0].type!==null){let e=g.get(t[0].action)||``;return t.length>1&&(e+=` ${n} +${t.length-1} condition`),e}return`Define condition`}),b=()=>{o(`selectNode`,`condition`,i.nodeKey)},x=(e,t)=>{o(`selectNode`,e,t)};async function C(e,t){let n=ke(e,t);await Q(`add`),x(n.type,n.nodeKey)}async function te(e){let t=Ae(e,i.nodeKey);await Q(`add`),x(t.type,t.nodeKey)}async function ne(e,t){let n=je(e,t);await Q(`add`),x(n.type,n.nodeKey)}async function w(e){let t=Me(e,i.nodeKey);await Q(`add`),x(t.type,t.nodeKey)}function re(){o(`delCondition`,i.nodeKey)}function D(e){Ie(e)}function ie(e,t){Be(e,i.nodeKey,t),H.value===t&&x(`trigger`,`root`)}function O(e,t){Ve(e,i.nodeKey,t),H.value===t&&x(`trigger`,`root`)}return(t,i)=>{let o=I,g=l(`ConditionNode`,!0);return a(),n(S,null,[i[8]||(i[8]=m(`div`,{class:`line`},null,-1)),m(`div`,{class:f([`node-box`,{warning:c(s),action:c(p)}]),onClick:b},[m(`div`,Mt,[c(s)?(a(),T(o,{key:0,class:`icon`,name:`warning`})):u(``,!0),i[0]||(i[0]=m(`span`,{class:`text`},`Condition`,-1))]),m(`span`,{class:`del-node`,onClick:ee(re,[`stop`])},[r(o,{name:`flow-del`})]),m(`div`,Nt,[r(o,{size:`16`,name:`flow-condition`})]),m(`div`,Pt,[c(v)?(a(),n(`span`,Ft,_(c(v)),1)):u(``,!0),m(`span`,null,_(c(y)),1)])],2),m(`div`,It,[i[7]||(i[7]=m(`div`,{class:`line`},null,-1)),m(`div`,Lt,[m(`div`,Rt,[i[2]||(i[2]=m(`div`,{class:`horizontal-line right`},null,-1)),i[3]||(i[3]=m(`div`,{class:`line`},null,-1)),m(`div`,zt,[r(o,{name:`flow-success`,size:`20`})]),m(`div`,Bt,[i[1]||(i[1]=m(`div`,{class:`line`},null,-1)),m(`div`,null,[r(st,{last:c(h).yes.length===0,"parent-type":e.type,"parent-key":e.nodeKey,onAddNode:C},null,8,[`last`,`parent-type`,`parent-key`])])]),c(h).yes.length?(a(),n(`ul`,Vt,[(a(!0),n(S,null,d(c(h).yes,(e,t)=>(a(),n(`li`,{key:e.key},[e.type==`condition`?(a(),T(g,{key:0,type:`condition`,"node-key":e.key,onSelectNode:x,onDelCondition:D},null,8,[`node-key`])):(a(),T($,{key:1,last:t===c(h).yes.length-1,type:e.type,"node-key":e.key,onAddNode:te,onSelectNode:x,onDelNormalNode:ie},null,8,[`last`,`type`,`node-key`]))]))),128))])):u(``,!0)]),m(`div`,Ht,[i[5]||(i[5]=m(`div`,{class:`horizontal-line left`},null,-1)),i[6]||(i[6]=m(`div`,{class:`line`},null,-1)),m(`div`,Ut,[r(o,{name:`flow-fail`,size:`20`})]),m(`div`,Wt,[i[4]||(i[4]=m(`div`,{class:`line`},null,-1)),m(`div`,null,[r(st,{last:c(h).no.length===0,"parent-type":e.type,"parent-key":e.nodeKey,onAddNode:ne},null,8,[`last`,`parent-type`,`parent-key`])])]),c(h).no.length?(a(),n(`ul`,Gt,[(a(!0),n(S,null,d(c(h).no,(e,t)=>(a(),n(`li`,{key:e.key},[e.type==`condition`?(a(),T(g,{key:0,type:`condition`,"node-key":e.key,onSelectNode:x,onDelCondition:D},null,8,[`node-key`])):(a(),T($,{key:1,last:t===c(h).no.length-1,type:e.type,"node-key":e.key,onAddNode:w,onSelectNode:x,onDelNormalNode:O},null,8,[`last`,`type`,`node-key`]))]))),128))])):u(``,!0)])])])],64)}}}),[[`__scopeId`,`data-v-50959610`]]);C();var qt={class:`flow-container`},Jt={class:`flow-tree`},Yt=R(b({__name:`index`,setup(e){async function t(e,t){let n=Oe(e,t.nodeKey);await Q(`add`),s(n.type,n.nodeKey)}function i(e){Ie(e)}function o(e,t){Fe(e,t),H.value===t&&s(`trigger`,`root`)}function s(e,t){V.value=Date.now(),U.value=e,H.value=t}return(e,l)=>(a(),n(`div`,qt,[m(`ul`,Jt,[m(`li`,null,[r($,{last:c(B).length===0,type:`trigger`,"node-key":`root`,onSelectNode:s,onAddNode:t},null,8,[`last`])]),(a(!0),n(S,null,d(c(B),(e,r)=>(a(),n(`li`,{key:e.key},[e.type==`condition`?(a(),T(Kt,{key:0,type:`condition`,"node-key":e.key,onSelectNode:s,onDelCondition:i},null,8,[`node-key`])):(a(),T($,{key:1,last:r===c(B).length-1,type:e.type,"node-key":e.key,onAddNode:t,onSelectNode:s,onDelNormalNode:o},null,8,[`last`,`type`,`node-key`]))]))),128))])]))}}),[[`__scopeId`,`data-v-267aedac`]]);C();var Xt={class:`p-20px`},Zt=b({__name:`TriggerConfig`,setup(e,{expose:t}){let i=p(`formRef`),o=h({type:`subscriber_added`,group_ids:[]}),s={group:{trigger:[`change`],validator:()=>(o.value.type===`subscriber_added`||o.value.type===`subscribed`)&&!o.value.group_ids.length?Error(`Please select group`):!0},link:{trigger:[`input`,`blur`],validator:()=>o.value.type===`clicked`&&!o.value.link.url?Error(`Please enter link`):!0}},l=h([{label:`When a new email joins group(s)`,value:`subscriber_added`}]),d=h([]),f=e=>{switch(e){case`subscriber_added`:case`subscribed`:o.value={type:e,group_ids:[]};break;case`clicked`:o.value={type:e,link:{url:``}};break;case`opened`:case`unsubscribed`:o.value={type:e};break}},m=async()=>{d.value=z.value.map(e=>({label:e.mail_type,value:e.id}))};return(()=>{if(m(),H.value){let e=W.value[H.value];e&&(o.value=y(e.config))}})(),t({submit:async()=>{var e;if(await((e=i.value)==null?void 0:e.validate()),H.value){let e=W.value[H.value];e.config=y(o.value),e.complete=!0}}}),(e,t)=>{let p=P,m=k,h=j,_=A;return a(),n(`div`,Xt,[r(_,{ref_key:`formRef`,ref:i,model:c(o),rules:s},{default:g(()=>[r(m,{label:`Trigger`},{default:g(()=>[r(p,{value:c(o).type,options:c(l),"onUpdate:value":f},null,8,[`value`,`options`])]),_:1}),c(o).type===`subscriber_added`||c(o).type===`subscribed`?(a(),T(m,{key:0,label:`Group`,path:`group`},{default:g(()=>[r(p,{value:c(o).group_ids,"onUpdate:value":t[0]||(t[0]=e=>c(o).group_ids=e),multiple:!0,filterable:!0,options:c(d)},null,8,[`value`,`options`])]),_:1})):u(``,!0),c(o).type===`clicked`?(a(),T(m,{key:1,label:`Link`,path:`link`},{default:g(()=>[r(h,{value:c(o).link.url,"onUpdate:value":t[1]||(t[1]=e=>c(o).link.url=e)},null,8,[`value`])]),_:1})):u(``,!0)]),_:1},8,[`model`])])}}});C();var Qt=b({__name:`index`,props:s({isInit:{type:Boolean,default:!1}},{value:{},valueModifiers:{}}),emits:s([`change`],[`update:value`]),setup(e,{expose:t,emit:n}){let r=e,i=n,{loading:o,setLoading:s}=de(),l=te(e,`value`),u=h([]),d=(e,t)=>{i(`change`,e,t)},f=async()=>{try{s(!0);let{message:e}=await ve();fe(e)&&e.length>0&&(u.value=[],u.value=e.map(e=>({label:e.username,value:e.username,data:e})),l.value||(l.value=e[0].username,i(`change`,e[0].username,u.value[0])))}finally{s(!1)}};return r.isInit&&f(),t({getList:f}),(e,t)=>{let n=P;return a(),T(n,{value:l.value,"onUpdate:value":[t[0]||(t[0]=e=>l.value=e),d],loading:c(o),filterable:!0,options:c(u)},null,8,[`value`,`loading`,`options`])}}});C();var $t={class:`p-20px`},en=b({__name:`EmailConfig`,setup(e,{expose:t}){let i=p(`formRef`),o=w({name:``,subject:``,from_name:``,from:``,email_id:null,track_opens:!0,track_clicks:!0,track_unsubscribe:!0}),s=h([]),l={email_id:{trigger:[`change`],validator:()=>o.email_id?!0:Error(`Please select email template`)},name:{trigger:[`blur`,`input`],validator:()=>o.name?!0:Error(`Please enter email name`)},subject:{trigger:[`blur`,`input`],validator:()=>o.subject?!0:Error(`Please enter email subject`)},from_name:{trigger:[`blur`,`input`],validator:()=>o.from_name?!0:Error(`Please enter sender name`)},from:{trigger:[`blur`,`input`],validator:()=>o.from?ye(o.from)?!0:Error(`Please enter a valid email address`):Error(`Please enter sender email`)}},d=(e,t)=>{let{data:n}=t;L(n)&&(o.from_name=n.full_name)},f=()=>{if(m(),H.value){let e=G.value[H.value];o.name=e.name,o.subject=e.subject,o.from_name=e.from_name,o.from=e.from,o.email_id=e.email_id===0?null:e.email_id,o.track_opens=e.track_opens,o.track_clicks=e.track_clicks,o.track_unsubscribe=e.track_unsubscribe}},m=async()=>{let{message:e}=await _e();fe(e)&&e.length>0&&(s.value=e.map(e=>({label:e.name,value:e.id})))};return f(),t({submit:async()=>{var e;if(await((e=i.value)==null?void 0:e.validate()),H.value){let e=G.value[H.value];e.name=o.name,e.subject=o.subject,e.from_name=o.from_name,e.from=o.from,e.email_id=o.email_id===null?0:o.email_id,e.track_opens=o.track_opens,e.track_clicks=o.track_clicks,e.track_unsubscribe=o.track_unsubscribe,e.complete=!0}}}),(e,t)=>{let f=j,p=k,m=P,h=N,_=A;return a(),n(`div`,$t,[r(_,{ref_key:`formRef`,ref:i,model:c(o),rules:l},{default:g(()=>[r(p,{label:`Email name`,path:`name`},{default:g(()=>[r(f,{value:c(o).name,"onUpdate:value":t[0]||(t[0]=e=>c(o).name=e),placeholder:`Name`},null,8,[`value`])]),_:1}),r(p,{label:`Sender email`,path:`from`},{default:g(()=>[r(Qt,{value:c(o).from,"onUpdate:value":t[1]||(t[1]=e=>c(o).from=e),"is-init":!0,placeholder:`Sender email`,onChange:d},null,8,[`value`])]),_:1}),r(p,{label:`Who is it from?`,path:`from_name`},{default:g(()=>[r(f,{value:c(o).from_name,"onUpdate:value":t[2]||(t[2]=e=>c(o).from_name=e),placeholder:`Sender name`},null,8,[`value`])]),_:1}),r(p,{label:`Subject`,path:`subject`},{default:g(()=>[r(f,{value:c(o).subject,"onUpdate:value":t[3]||(t[3]=e=>c(o).subject=e),placeholder:`Email subject`},null,8,[`value`])]),_:1}),r(p,{label:`Template`,path:`email_id`},{default:g(()=>[r(m,{value:c(o).email_id,"onUpdate:value":t[4]||(t[4]=e=>c(o).email_id=e),options:c(s)},null,8,[`value`,`options`])]),_:1}),u(``,!0),u(``,!0),r(p,{label:`Whether to enable the unsubscribe link and collect unsubscribe statistics`},{default:g(()=>[r(h,{value:c(o).track_unsubscribe,"onUpdate:value":t[7]||(t[7]=e=>c(o).track_unsubscribe=e)},null,8,[`value`])]),_:1})]),_:1},8,[`model`])])}}});C();var tn={class:`p-20px`},nn={class:`w-140px mr-12px`},rn={class:`flex-1`},an=b({__name:`DelayConfig`,setup(e,{expose:t}){let i=p(`formRef`),o=w({value:0,unit:`days`}),s=h([{label:`second(s)`,value:`seconds`},{label:`minute(s)`,value:`minutes`},{label:`hour(s)`,value:`hours`},{label:`day(s)`,value:`days`}]),l={value:{trigger:[`blur`,`input`],validator:()=>o.value<=0?Error(`Value must be at least 1`):o.unit===`days`&&o.value>700?Error(`Value must be less than 700`):Number.isInteger(o.value)?!0:Error(`Value must be an integer`)}};return(()=>{if(H.value){let e=K.value[H.value];o.value=e.value,o.unit=e.unit}})(),t({submit:async()=>{var e;if(await((e=i.value)==null?void 0:e.validate()),H.value){let e=K.value[H.value];e.value=o.value,e.unit=o.unit,e.complete=!0}}}),(e,t)=>{let u=ae,d=P,f=k,p=A;return a(),n(`div`,tn,[r(p,{ref_key:`formRef`,ref:i,model:c(o),rules:l},{default:g(()=>[r(f,{label:`Wait`,path:`value`},{default:g(()=>[m(`div`,nn,[r(u,{value:c(o).value,"onUpdate:value":t[0]||(t[0]=e=>c(o).value=e),min:0,"show-button":!1},null,8,[`value`])]),m(`div`,rn,[r(d,{value:c(o).unit,"onUpdate:value":t[1]||(t[1]=e=>c(o).unit=e),options:c(s)},null,8,[`value`,`options`])])]),_:1})]),_:1},8,[`model`])])}}});C();var on={class:`p-20px`},sn=b({__name:`ActionConfig`,setup(e,{expose:t}){let i=p(`formRef`),o=w({action:`add_to_subscribers`,group_ids:[]}),s=h([{label:`添加到联系人列表中`,value:`add_to_subscribers`},{label:`从联系人列表中删除`,value:`remove_from_subscribers`},{label:`标记为已退订`,value:`mark_as_unsubscribe`}]),l=h([]),u={group:{trigger:[`change`],validator:()=>(o.action===`add_to_subscribers`||o.action===`remove_from_subscribers`)&&!o.group_ids.length?Error(`Please select group`):!0}},d=()=>{o.group_ids=[]},f=async()=>{l.value=z.value.map(e=>({label:e.mail_type,value:e.id}))};return(()=>{if(f(),H.value){let e=Te.value[H.value];o.action=e.action,o.group_ids=y(e.group_ids)}})(),t({submit:async()=>{var e;if(await((e=i.value)==null?void 0:e.validate()),H.value){let e=Te.value[H.value];e.action=o.action,e.group_ids=y(o.group_ids),e.complete=!0}}}),(e,t)=>{let f=P,p=k,m=A;return a(),n(`div`,on,[r(m,{ref_key:`formRef`,ref:i,model:c(o),rules:u},{default:g(()=>[r(p,{label:`Choose an action`},{default:g(()=>[r(f,{value:c(o).action,"onUpdate:value":[t[0]||(t[0]=e=>c(o).action=e),d],options:c(s)},null,8,[`value`,`options`])]),_:1}),x(r(p,{label:`Group`,path:`group`},{default:g(()=>[r(f,{value:c(o).group_ids,"onUpdate:value":t[1]||(t[1]=e=>c(o).group_ids=e),multiple:!0,filterable:!0,options:c(l)},null,8,[`value`,`options`])]),_:1},512),[[ne,c(o).action===`add_to_subscribers`||c(o).action===`remove_from_subscribers`]])]),_:1},8,[`model`])])}}});C();var cn={class:`p-20px`},ln=b({__name:`WebhookConfig`,setup(e,{expose:t}){let i=p(`formRef`),o=w({url:``,secret:``}),s={url:{required:!0,trigger:[`blur`,`input`],message:`Please enter webhook URL`},secret:{required:!0,trigger:[`blur`,`input`],message:`Please enter secret key`}};return(()=>{if(H.value){let e=we.value[H.value];o.url=e.url,o.secret=e.secret}})(),t({submit:async()=>{var e;if(await((e=i.value)==null?void 0:e.validate()),H.value){let e=we.value[H.value];e.url=o.url,e.secret=o.secret,e.complete=!0}}}),(e,t)=>{let l=j,u=k,d=A;return a(),n(`div`,cn,[r(d,{ref_key:`formRef`,ref:i,model:c(o),rules:s},{default:g(()=>[r(u,{label:`Webhook URL`,path:`url`},{default:g(()=>[r(l,{value:c(o).url,"onUpdate:value":t[0]||(t[0]=e=>c(o).url=e),placeholder:``},null,8,[`value`])]),_:1}),r(u,{label:`Secret Key`,path:`secret`},{default:g(()=>[r(l,{value:c(o).secret,"onUpdate:value":t[1]||(t[1]=e=>c(o).secret=e),placeholder:``},null,8,[`value`])]),_:1})]),_:1},8,[`model`])])}}});C();var un={class:`p-20px`},dn={class:`flex-1`},fn={class:`mt-12px`},pn={class:`mt-12px`},mn={class:`condition-box mt-12px`},hn={class:`flex justify-between items-center mb-16px`},gn=R(b({__name:`ConditionConfig`,setup(e,{expose:t}){let o=p(`formRef`),s=w({logic_type:`or`,rules:[{type:null}]}),l=h([{label:`Campaign activity`,value:`campaign`},{label:`Workflow activity`,value:`workflow`}]),f=h([]),v=h([]),ee=h([{label:`had any link clicked`,value:`clicked`},{label:`had a specific link clicked`,value:`link_clicked`},{label:`did not have a specific link clicked`,value:`link_not_clicked`},{label:`was opened`,value:`opened`},{label:`was not opened`,value:`not_opened`},{label:`was opened with no links clicked`,value:`opened_with_not_clicked`}]),b=e=>({trigger:`change`,validator:()=>s.rules[e].type?!0:Error(`Please select type`)}),C=e=>({trigger:`change`,validator:()=>{let t=s.rules[e];return t.type===`campaign`&&!t.campaign.id?Error(`Please select campaign`):!0}}),te=e=>({trigger:`change`,validator:()=>{let t=s.rules[e];return(t.type===`workflow`||t.type===`campaign`)&&!t.action?Error(`Please select action`):!0}}),re=e=>({trigger:`change`,validator:()=>{let t=s.rules[e];return(t.type===`workflow`||t.type===`campaign`)&&t.action===`link_clicked`&&!t.link.url?Error(`Please input link`):!0}}),E=(e,t)=>{switch(e){case`campaign`:s.rules[t]={type:`campaign`,action:null,campaign:{id:null,name:``},link:{url:``}};break;case`workflow`:s.rules[t]={type:`workflow`,node_id:null,action:null,link:{url:``}};break}},D=(e,t)=>{L(t.data)&&s.rules[e].type===`campaign`&&(s.rules[e].campaign.name=t.data.subject)},ie=()=>{s.rules.push({type:null})},ae=e=>{s.rules.splice(e,1)},M=async()=>{let{message:e}=await ge();fe(e)&&(f.value=e.map(e=>({value:e.id,data:e,label:e.subject||e.task_name})))},N=()=>{let e=B.value.filter(e=>e.type===`email`).map(e=>G.value[e.key]).filter(e=>e.complete&&e.id!==0);v.value=e.map(e=>({label:e.name,value:e.id}))};return(()=>{if(M(),N(),H.value){let e=q.value[H.value];s.logic_type=e.logic_type,s.rules=y(e.rules)}})(),t({submit:async()=>{var e;if(await((e=o.value)==null?void 0:e.validate()),H.value){let e=q.value[H.value];e.logic_type=s.logic_type,e.rules=y(s.rules),e.complete=!0}}}),(e,t)=>{let p=O,h=se,y=oe,w=ce,M=P,N=k,le=j,F=A;return a(),n(`div`,un,[r(F,{ref_key:`formRef`,ref:o,model:c(s)},{default:g(()=>[r(N,{label:`Create a condition`},{default:g(()=>[m(`div`,dn,[t[6]||(t[6]=m(`div`,{class:`text-desc`},` Add up to 5 conditions. Define whether any or all of them must be applicable, for the condition to be met. `,-1)),r(h,{value:c(s).logic_type,"onUpdate:value":t[0]||(t[0]=e=>c(s).logic_type=e)},{default:g(()=>[m(`div`,fn,[r(p,{value:`or`},{default:g(()=>[...t[1]||(t[1]=[m(`div`,null,`Any rule`,-1),m(`div`,{class:`mt-8px text-desc`},` Select one or a few conditions where ANY rule can match the criteria. `,-1)])]),_:1})]),m(`div`,pn,[r(p,{value:`and`},{default:g(()=>[...t[2]||(t[2]=[m(`div`,null,`All rules`,-1),m(`div`,{class:`mt-8px text-desc`},` Select one or a few conditions where ALL rules must match the criteria. `,-1)])]),_:1})])]),_:1},8,[`value`]),(a(!0),n(S,null,d(c(s).rules,(e,o)=>(a(),n(S,{key:o},[o===0?u(``,!0):(a(),T(y,{key:0,class:`mt-12px!`,"title-placement":`left`},{default:g(()=>[i(_(c(s).logic_type),1)]),_:1})),m(`div`,mn,[m(`div`,hn,[t[4]||(t[4]=m(`span`,null,`Condition`,-1)),c(s).rules.length>1?(a(),T(w,{key:0,size:`small`,onClick:e=>ae(o)},{default:g(()=>[...t[3]||(t[3]=[i(`Delete`,-1)])]),_:1},8,[`onClick`])):u(``,!0)]),r(N,{"show-label":!1,path:`rules[${o}].type`,rule:b(o)},{default:g(()=>[r(M,{value:e.type,options:c(l),"onUpdate:value":e=>E(e,o)},null,8,[`value`,`options`,`onUpdate:value`])]),_:2},1032,[`path`,`rule`]),e.type===`campaign`?(a(),T(N,{key:0,"show-label":!1,path:`rules[${o}].campaign.id`,rule:C(o)},{default:g(()=>[r(M,{value:e.campaign.id,"onUpdate:value":[t=>e.campaign.id=t,(e,t)=>D(o,t)],options:c(f)},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1032,[`path`,`rule`])):u(``,!0),e.type===`workflow`?(a(),T(N,{key:1,"show-label":!1,path:`rules[${o}].workflow.node_id`},{default:g(()=>[r(M,{value:e.node_id,"onUpdate:value":t=>e.node_id=t,options:c(v)},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1032,[`path`])):u(``,!0),e.type===`campaign`&&e.campaign.id||e.type===`workflow`&&e.node_id?(a(),n(S,{key:2},[r(N,{"show-label":!1,path:`rules[${o}].action`,rule:te(o)},{default:g(()=>[r(M,{value:e.action,"onUpdate:value":t=>e.action=t,options:c(ee)},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1032,[`path`,`rule`]),x(r(N,{"show-label":!1,path:`rules[${o}].link.url`,rule:re(o)},{default:g(()=>[r(le,{value:e.link.url,"onUpdate:value":t=>e.link.url=t,placeholder:`Please input link`},null,8,[`value`,`onUpdate:value`])]),_:2},1032,[`path`,`rule`]),[[ne,e.action===`link_clicked`]])],64)):u(``,!0)])],64))),128)),r(w,{class:`mt-12px`,size:`small`,onClick:ie},{default:g(()=>[...t[5]||(t[5]=[i(` Add another condition `,-1)])]),_:1})])]),_:1})]),_:1},8,[`model`])])}}}),[[`__scopeId`,`data-v-c8dfd4ad`]]);C();var _n={};function vn(e,t){return a(),n(`div`)}var yn=R(_n,[[`render`,vn]]);C();var bn={class:`flow-config`},xn={class:`config-title`},Sn={class:`text-14px font-bold`},Cn={class:`flex-1 overflow-auto`},wn={class:`config-footer`},Tn=R(b({__name:`index`,setup(e){let t=h(),o=E(()=>{switch(U.value){case`trigger`:return Zt;case`email`:return en;case`action`:return sn;case`delay`:return an;case`webhook`:return ln;case`condition`:return gn;default:return yn}}),s=E(()=>{let e=U.value;return e?he(e):``}),l=async()=>{var e,n;await((e=t.value)==null||(n=e.submit)==null?void 0:n.call(e)),Q()};return(e,u)=>{let d=ce;return a(),n(`div`,bn,[m(`div`,xn,[m(`span`,Sn,_(c(s)),1)]),m(`div`,Cn,[(a(),T(v(c(o)),{ref_key:`compRef`,ref:t,key:c(V)}))]),m(`div`,wn,[r(d,{class:`font-bold`,size:`large`,type:`primary`,onClick:l},{default:g(()=>[...u[0]||(u[0]=[i(`Save`,-1)])]),_:1})])])}}}),[[`__scopeId`,`data-v-f73136bb`]]);C();var En={class:`mail-flow`},Dn={class:`relative flex flex-1 overflow-auto`},On={class:`absolute top-16px left-24px z-1000`},kn=b({__name:`index`,setup(e){let t=D();t.params.id&&(Ce.value=me(t.params.id));let n=ie(),s=async()=>{try{await Q()}finally{setTimeout(()=>{n.go(-1)},1e3)}},l=async()=>{let{message:e}=await Se();z.value=fe(e)?e:[]},u=h(!1);return(async()=>{try{u.value=!0,await Promise.all([l(),$e()]),nt()}finally{u.value=!1}})(),o(()=>{nt(),et()}),(e,t)=>{let n=ce,o=le;return a(),T(o,{class:`w-full h-full`,show:c(u)},{default:g(()=>[m(`div`,En,[m(`div`,Dn,[m(`div`,On,[r(n,{size:`large`,class:`font-bold`,secondary:``,onClick:s},{default:g(()=>[...t[0]||(t[0]=[i(`Save and back`,-1)])]),_:1})]),r(Yt),r(Tn)])])]),_:1},8,[`show`])}}}),An=e({default:()=>jn}),jn=R(kn,[[`__scopeId`,`data-v-aeba6cb3`]]);export{Qt as n,An as t};