1import{a as W,b as ht,c as xt,d as ii,e as jt}from"./chunk-C6KQZB75.js";import{a as qe,b as Ge}from"./chunk-UXCZQ35S.js";import{a as si}from"./chunk-LJERZFSJ.js";import{a as Qe}from"./chunk-ML3TPQZR.js";import{a as ne,c as Xe,d as Ze,e as ti,g as ei}from"./chunk-GIFS5XFY.js";import{c as Ke}from"./chunk-D3OIRDRZ.js";import"./chunk-YZZ6CKB3.js";import{b as Je,i as Ye,k as $t}from"./chunk-IFQKYFJ3.js";import"./chunk-6X3X7JYT.js";import"./chunk-FSAIB72R.js";import"./chunk-A2Y7EL3B.js";import{C as ze,Oa as He,ma as Re}from"./chunk-KMATS7MR.js";import"./chunk-SOWBZJHY.js";import"./chunk-5PPGBWZY.js";import"./chunk-AJIXN4TP.js";import"./chunk-W2WMVSUV.js";import"./chunk-Z5IDDGYY.js";import"./chunk-QPSR7IOW.js";import"./chunk-EW7HN6J6.js";import"./chunk-77A7GLJT.js";import"./chunk-NU5RVLAA.js";import{c as je,d as We}from"./chunk-4ZVJIHHJ.js";import"./chunk-FQIDAGIB.js";import{a as ie}from"./chunk-3RVQ53QU.js";import"./chunk-7ZBURVDA.js";import"./chunk-7SYR2AQN.js";import"./chunk-2WBHW3LQ.js";import"./chunk-6L2VFEGZ.js";import{a as Rt,b as dt}from"./chunk-CZWE744E.js";import"./chunk-QDRIPFVV.js";import{a as Le,b as Ue}from"./chunk-HH446EG3.js";import"./chunk-X4XHRKJK.js";import"./chunk-OUVDWREM.js";import{c as $e}from"./chunk-WWYUABQM.js";import"./chunk-DGOHN5MI.js";import"./chunk-P6TIZVOU.js";import"./chunk-DRMZ367D.js";import"./chunk-UVNRP7DL.js";import"./chunk-MPKK35XZ.js";import"./chunk-4HVR5UFO.js";import{f as Ut,g as pt}from"./chunk-CLSAFS5Q.js";import"./chunk-CJXEOJFV.js";import"./chunk-DGJ3RKEZ.js";import"./chunk-4WAUMBH6.js";import{a as Oe,b as Ie}from"./chunk-DAYZHUJE.js";import"./chunk-KH7K5DGA.js";import{a as he,b as xe}from"./chunk-THXGMAON.js";import{a as Se,b as Me,c as Pe,d as ke,e as Te,f as Be}from"./chunk-CBOWKMQR.js";import{c as De}from"./chunk-2EYN7LRM.js";import{b as ee}from"./chunk-XQXSI2MI.js";import{a as j}from"./chunk-JZVF4UFD.js";import{a as Q}from"./chunk-EBRNEVEB.js";import{c as Lt}from"./chunk-JFIIL3O5.js";import"./chunk-QCRLQ6PS.js";import"./chunk-A3CGAD34.js";import{a as Ee,b as Fe}from"./chunk-ACAFCOC3.js";import"./chunk-VO63BEYI.js";import{a as J}from"./chunk-XXUVMEHX.js";import"./chunk-5WAKHBSE.js";import{a as Ae}from"./chunk-5QZ3NKAH.js";import"./chunk-TRRJULT5.js";import{a as Ve}from"./chunk-SIVW2O5K.js";import"./chunk-IXYALPCC.js";import{a as Ne}from"./chunk-X25PQIQX.js";import"./chunk-ATONT6NO.js";import{a as st,b as Y}from"./chunk-6KLVNBIT.js";import{a as ct}from"./chunk-YLMGPHJT.js";import"./chunk-2INMHT5S.js";import{b as ve}from"./chunk-TW5YOGRO.js";import"./chunk-AV4I7H6P.js";import{C as zt,E as $,F as G,c as we,d as At,g as q,h as at,i as be,k as ye,l as Bt,m as ot,q as rt,t as lt}from"./chunk-3G75FYOC.js";import{d as U,f as R,g as A}from"./chunk-MIJHCTDG.js";import{U as Ce}from"./chunk-PZHDZNOO.js";import"./chunk-ICVBEL6B.js";import{a as L}from"./chunk-GGODJQRR.js";import{o as Nt}from"./chunk-4ZHAVEY3.js";import"./chunk-EVJHW347.js";import"./chunk-ERNNOIEA.js";import"./chunk-BFJOYHTI.js";import"./chunk-SRQR6N6L.js";import"./chunk-7QCXACDV.js";import{qa as fe}from"./chunk-PQEV5SKX.js";import{Ac as It,Db as S,Dc as nt,Fb as x,Hb as _,K as le,Ka as ce,Kd as ge,La as o,Lb as gt,Ma as ut,Mb as Ct,Md as Vt,Nb as ft,Pd as te,Rb as Z,Ta as I,Tb as kt,Ub as Tt,Vc as _e,Wa as z,Wb as g,Wc as Et,Xa as Mt,Xb as D,Xc as ue,Yb as v,Zb as Dt,_b as de,a as bt,ab as T,ac as Yt,ba as yt,bc as Xt,cc as Zt,ea as F,fd as Ft,gb as se,gc as me,jb as Pt,kb as M,la as f,lc as Ot,ma as h,mb as P,mc as it,md as N,ob as pe,pb as tt,qb as et,rb as d,sb as c,tb as l,ua as E,ub as w,vc as p,wc as u,xa as St,xc as B,yb as Qt,zb as Jt}from"./chunk-NMIDHYRA.js";import{a as K,b as wt,h as ci,k as b}from"./chunk-ZOCHBAGS.js";var re=ci(si());var ui=["mapping"];function gi(i,r){if(i&1&&(c(0,"dapta-select-option",13),g(1),l()),i&2){let n=r.$implicit;d("value",n.value),o(),v(" ",n.label," ")}}function Ci(i,r){i&1&&(c(0,"p",9),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"the-phone-number-column-is-required")," "))}var Ht=(()=>{let r=class r{constructor(t,e,a,s,m){this.daptaAlertController=t,this.daptaPopUpController=e,this.daptaToastController=a,this.crmService=s,this.translate=m,this.columns=[],this.countryOptions=Re.map(C=>({label:`${C.flag} ${C.country} (${C.internationalDialing})`,value:C.countryCode})),this.form=new be({countryCode:new ye("US")}),this.uploading=!1}importContacts(){return b(this,null,function*(){let t=this.mapping;if(!t||!t.valid){this.daptaToastController.handleError({message:this.translate.instant("the-phone-number-column-is-required")});return}if(!this.file){this.daptaToastController.handleError({message:this.translate.instant("error-processing-csv-file")}
1);return}try{this.uploading=!0,this.daptaAlertController.startLoading(this.translate.instant("uploading-contacts"));let e=yield t.commit(),a=this.form.value.countryCode||void 0;yield this.crmService.importContactsFile(this.file,e,a),this.daptaAlertController.stopLoading(),this.daptaPopUpController.closePopUp({success:!0})}catch(e){console.error(e),this.daptaAlertController.stopLoading(),this.daptaToastController.handleError({message:Je(this.translate,e)})}finally{this.uploading=!1}})}close(){this.daptaPopUpController.closePopUp()}};r.\u0275fac=function(e){return new(e||r)(I(ct),I(Q),I(j),I(W),I(U))},r.\u0275cmp=z({type:r,selectors:[["app-import-from-file-pop-up"]],viewQuery:function(e,a){if(e&1&>(ui,5),e&2){let s;Ct(s=ft())&&(a.mapping=s.first)}},decls:19,vars:16,consts:[["mapping",""],[1,"import-from-file-pop-up"],[1,"text"],[1,"import-from-file-pop-up__label","flex","flex-column","gap-2",3,"formGroup"],["for","countryCode"],["formControlName","countryCode"],[3,"value",4,"ngFor","ngForOf"],[1,"import-from-file-pop-up__scroll"],[3,"cancelled","columns","sourceType"],[1,"import-from-file-pop-up__hint"],[1,"import-from-file-pop-up__actions","flex","flex-row","gap-2"],[3,"onClick","label","disabled"],["variant","outlined",3,"onClick","label"],[3,"value"]],template:function(e,a){if(e&1){let s=S();c(0,"div",1)(1,"p",2),g(2),l(),c(3,"form",3)(4,"label",4),g(5),p(6,"translate"),l(),c(7,"dapta-dropdown")(8,"dapta-select",5),T(9,gi,2,2,"dapta-select-option",6),l()()(),c(10,"div",7)(11,"app-campaign-google-sheet-mapping",8,0),x("cancelled",function(){return f(s),h(a.close())}),l()(),M(13,Ci,3,3,"p",9),c(14,"div",10)(15,"dui-button",11),p(16,"translate"),x("onClick",function(){return f(s),h(a.importContacts())}),l(),c(17,"dui-button",12),p(18,"translate"),x("onClick",function(){return f(s),h(a.close())}),l()()()}if(e&2){let s=Z(12);o(2),D(a.file==null?null:a.file.name),o(),d("formGroup",a.form),o(2),D(u(6,10,"import-default-country")),o(4),d("ngForOf",a.countryOptions),o(2),d("columns",a.columns)("sourceType","csv"),o(2),P(s&&!s.valid?13:-1),o(2),d("label",u(16,12,"import"))("disabled",a.uploading||!(s!=null&&s.val
1id)),o(2),d("label",u(18,14,"COMMON.CANCEL"))}},dependencies:[N,Et,$,ot,q,at,G,rt,lt,A,Me,Pe,Se,L,ii,R],styles:[".import-from-file-pop-up[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;max-height:80vh;height:100%}.import-from-file-pop-up[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{flex:0 0 auto;margin:0;font-weight:600;word-break:break-all}.import-from-file-pop-up__scroll[_ngcontent-%COMP%]{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}.import-from-file-pop-up__label[_ngcontent-%COMP%]{flex:0 0 auto}.import-from-file-pop-up__hint[_ngcontent-%COMP%]{flex:0 0 auto;margin:0;font-size:12px;color:var(--danger-400, #f87171)}.import-from-file-pop-up__actions[_ngcontent-%COMP%]{flex:0 0 auto}"]});let i=r;return i})();function vt(i){if(!i)return null;let r=i.disconnection_reason?.toLowerCase()||"",n=i.call_successful===!0;return i.in_voicemail===!0?{icon:"voicemail",labelKey:"crm-panel-call-disposition-voicemail",severity:"secondary"}:n?{icon:"check_circle",labelKey:"crm-panel-call-disposition-connected",severity:"success"}:i.call_status==="ended"&&["user_hangup","inactivity","agent_hangup","max_duration_reached","call_transfer"].includes(r)&&(i.duration_ms??0)>3e4?{icon:"check_circle",labelKey:"crm-panel-call-disposition-connected",severity:"success"}:r.includes("no_answer")||r==="dial_no_answer"?{icon:"phone_missed",labelKey:"crm-panel-call-disposition-no-answer",severity:"danger"}:r.includes("busy")?{icon:"phone_disabled",labelKey:"crm-panel-call-disposition-busy",severity:"warn"}:r.includes("wrong_number")||r.includes("invalid")?{icon:"error_outline",labelKey:"crm-panel-call-disposition-wrong-number",severity:"danger"}:{icon:"phone_missed",labelKey:"crm-panel-call-disposition-no-answer",severity:"danger"}}var X=class X{constructor(){this.contactId=null,this.existingFieldNames=[],this.submitting=E(!1),this.fb=F(zt),this.crmService=F(W),this.toast=F(j),this.translate=F(U),this.popUpController=F(Q),this.form=this.fb.group({field_name:["",[At.required,At.maxLength(64)]],field_value:["",[At.required]]})}normalizeFieldName(r){return r.toLowerCase().replace(/[^a-z0-9\s_]/g,"").replace(/\s+/g,"_").replace(/^[0-9]/,"_$&")}isDuplicate(r){let n=r.toLowerCase();return this.existingFieldNames.some(t=>t?.toLowerCase()===n)}isReserved(r){return X.RESERVED_NAMES.has(r.toLowerCase())}submit(){return b(this,null,function*(){if(!this.contactId)return;let r=(this.form.value.field_name||"").trim(),n=(this.form.value.field_value??"").toString().trim();if(!r){this.toast.handleError({message:this.translate.instant("add-custom-field-popup-name-required")});return}if(!n){this.toast.handleError({message:this.translate.instant("add-custom-field-popup-value-required")});return}let t=this.normalizeFieldName(r);if(!t){this.toast.handleError({message:this.translate.instant("add-custom-field-popup-name-required")});return}if(this.isReserved(t)){this.toast.handleError({message:this.translate.instant("this-name-is-reserved")});return}if(this.isDuplicate(t)){this.toast.handleError({message:this.translate.instant("add-custom-field-popup-name-duplicate")});return}this.submitting.set(!0);try{yield this.crmService.addDynamicFieldApi(this.contactId,t,n),this.toast.handleSuccess({message:this.translate.instant("add-custom-field-popup-success")}),this.popUpController.closePopUp({added:!0,field_name:t,field_value:n})}catch(e){console.error("Failed to add dynamic field",e),this.toast.handleError({message:e?.message||this.translate.instant("add-custom-field-popup-error")})}finally{this.submitting.set(!1)}})}cancel(){this.popUpController.closePopUp()}};X.RESERVED_NAMES=new Set(["id","contact_id","name","phone_number","country_code","organization_id","project_id","created_at","updated_at","tags","status","call_number"]),X.\u0275fac=function(n){return new(n||X)},X.\u0275cmp=z({type:X,selectors:[["app-add-custom-field-popup"]],inputs:{contactId:"contactId",existingFieldNames:"existingFieldNames"},decls:18,vars:21,consts:[[1,"add-custom-field-popup","flex","flex-column","gap-3",3,"formGroup"],[1,"flex","flex-column","form-field"],[1,"form-field__label"],["inputClass","w-full","formControlName","field_name",3,"type","placeholder"],["inputClass","w-full","formControlName","field_value",3,"placeholder"],[1,"flex","flex-row","justify-end","gap-2"],["variant","text",3,"onClick","label"],[3,"onClick","label","disabled"]],template:function(n,t){n&1&&(c(0,"form",0)(1,"div",1)(2,"label",2),g(3),p(4,"translate"),l(),w(5,"dapta-input",3),p(6,"translate"),l(),c(7,"div",1)(8,"label",2),g(9),p(10,"translate"),l(),w(11,"dapta-input",4),p(12,"translate"),l(),c(13,"div",5)(14,"dui-button",6),p(15,"translate"),x("onClick",function(){return t.cancel()}
1),l(),c(16,"dui-button",7),p(17,"translate"),x("onClick",function(){return t.submit()}),l()()()),n&2&&(d("formGroup",t.form),o(3),v(" ",u(4,9,"add-custom-field-popup-field-name")," "),o(2),d("type","variable")("placeholder",u(6,11,"add-custom-field-popup-field-name")),o(4),v(" ",u(10,13,"add-custom-field-popup-field-value")," "),o(2),d("placeholder",u(12,15,"add-custom-field-popup-field-value")),o(3),d("label",u(15,17,"add-custom-field-popup-cancel-button")),o(2),d("label",u(17,19,"add-custom-field-popup-add-button"))("disabled",t.form.invalid||t.submitting()))},dependencies:[N,$,ot,q,at,G,rt,lt,A,L,Lt,R],styles:[".add-custom-field-popup[_ngcontent-%COMP%]{padding:4px}.add-custom-field-popup[_ngcontent-%COMP%] .form-field[_ngcontent-%COMP%]{gap:6px}.add-custom-field-popup[_ngcontent-%COMP%] .form-field__label[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300);font-weight:var(--font-weight-medium, 500)}"],changeDetection:0});var Kt=X;function xi(i,r){i&1&&(c(0,"div",5),w(1,"p-progressSpinner"),l())}function vi(i,r){i&1&&(c(0,"div",6),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"crm-contact-campaigns-empty")," "))}function wi(i,r){if(i&1&&(w(0,"p-tag",12),p(1,"translate")),i&2){let n=_().$implicit,t=_(2);d("value",u(1,2,t.getStatusLabelKey(n.status))||n.status)("severity",t.getStatusSeverity(n.status))}}function bi(i,r){if(i&1&&(c(0,"span",14),g(1),p(2,"translate"),l()),i&2){let n=_().$implicit;o(),Dt(" ",u(2,2,"campaign-contact-drawer-redials"),": ",n.redials," ")}}function yi(i,r){if(i&1&&(c(0,"span",15),p(1,"translate"),w(2,"dapta-material-icon",23),g(3),p(4,"translate"),p(5,"date"),l()),i&2){let n=_().$implicit;d("pTooltip",u(1,3,"campaign-smart-callback-tooltip")),o(3),Dt(" ",u(4,5,"campaign-scheduled-call-callback"),": ",B(5,7,n.next_dial_at,"MMM d, h:mm a")," ")}}function Si(i,r){if(i&1&&(c(0,"span",16),g(1),p(2,"translate"),p(3,"date"),l()),i&2){let n=_().$implicit;o(),Dt(" ",u(2,2,"campaign-contact-drawer-last-call"),": ",B(3,4,n.last_called_at,"MMM d, y h:mm a")," ")}}function Mi(i,r){if(i&1){let n=S();c(0,"button",18),p(1,"translate"),x("click",function(){f(n);let e=_().$implicit,a=_(2);return h(a.reincludeInCampaign(e))}),w(2,"dapta-material-icon",24),l()}i&2&&d("pTooltip",u(1,1,"campaign-contact-drawer-reinclude-button"))}function Pi(i,r){if(i&1){let n=S();c(0,"button",25),p(1,"translate"),x("click",function(){f(n);let e=_().$implicit,a=_(2);return h(a.removeFromCampaign(e))}),w(2,"dapta-material-icon",26),l()}i&2&&d("pTooltip",u(1,1,"crm-contact-campaigns-remove-button"))}function ki(i,r){if(i&1){let n=S();c(0,"li",8)(1,"div",9)(2,"span",10),g(3),l(),c(4,"div",11),M(5,wi,2,4,"p-tag",12),c(6,"span",13),g(7),p(8,"translate"),l(),M(9,bi,3,4,"span",14),M(10,yi,6,10,"span",15),M(11,Si,4,7,"span",16),l()(),c(12,"div",17)(13,"button",18),p(14,"translate"),x("click",function(){let e=f(n).$implicit,a=_(2);return h(a.openCampaign(e))}),w(15,"dapta-material-icon",19),l(),c(16,"button",18),p(17,"translate"),x("click",function(){let e=f(n).$implicit,a=_(2);return h(a.openCopyModal(e))}),w(18,"dapta-material-icon",20),l(),M(19,Mi,3,3,"button",21)(20,Pi,3,3,"button",22),l()()}if(i&2){let n=r.$implicit,t=_(2);o(3),v(" ",n.campaign_name||n.campaign_id," "),o(2),P(n.status?5:-1),o(2),de(" ",u(8,11,"campaign-contact-drawer-attempts"),": ",n.attempts??0," / ",n.max_attempts??"\u2014"," "),o(2),P(n.redials&&n.redials>0?9:-1),o(),P(n.callback&&t.isScheduledCallPending(n)?10:-1),o(),P(n.last_called_at?11:-1),o(2),d("pTooltip",u(14,13,"crm-contact-campaigns-open-button")),o(3),d("pTooltip",u(17,15,"crm-contact-campaigns-copy-button")),o(3),P(n.status==="excluded"?19:20)}}function Ti(i,r){if(i&1&&(c(0,"ul",7),tt(1,ki,21,17,"li",8,Pt().trackByCampaign,!0),l()),i&2){let n=_();o(),et(n.campaigns())}}function Di(i,r){i&1&&(g(0),p(1,"translate")),i&2&&v(" ",u(1,1,"crm-contact-campaigns-add-button")," ")}function Oi(i,r){i&1&&(g(0),p(1,"translate")),i&2&&v(" ",u(1,1,"campaign-contact-drawer-copy-modal-title")," ")}function Ii(i,r){i&1&&(c(0,"div",34),w(1,"p-progressSpinner"),l())}function Ei(i,r){i&1&&(c(0,"div",35),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u
1(2,1,"campaign-contact-drawer-no-target-campaigns")," "))}function Fi(i,r){if(i&1){let n=S();c(0,"label",39),g(1),p(2,"translate"),l(),c(3,"input",41),p(4,"translate"),x("ngModelChange",function(e){f(n);let a=_(3);return h(a.onModalReasonChange(e))}),l()}if(i&2){let n=_(3);o(),v(" ",u(2,3,"campaign-contact-drawer-copy-reason-placeholder")," "),o(2),d("ngModel",n.modalReason())("placeholder",u(4,5,"campaign-contact-drawer-copy-reason-placeholder"))}}function Vi(i,r){if(i&1){let n=S();c(0,"label",39),g(1),p(2,"translate"),l(),c(3,"p-select",40),p(4,"translate"),x("ngModelChange",function(e){f(n);let a=_(2);return h(a.onModalTargetChange(e))}),l(),M(5,Fi,5,7)}if(i&2){let n=_(2);o(),v(" ",u(2,6,"crm-contact-campaigns-select-placeholder")," "),o(2),d("options",n.modalCampaigns())("ngModel",n.modalTargetCampaignId())("placeholder",u(4,8,"crm-contact-campaigns-select-placeholder"))("filter",!0),o(2),P(n.modalMode()==="copy"?5:-1)}}function Ni(i,r){i&1&&(g(0),p(1,"translate")),i&2&&v(" ",u(1,1,"campaign-contacts-add-contact-confirm-button")," ")}function Ai(i,r){i&1&&(g(0),p(1,"translate")),i&2&&v(" ",u(1,1,"campaign-contact-drawer-move-button")," ")}function Bi(i,r){if(i&1){let n=S();c(0,"div",27),x("click",function(){f(n);let e=_();return h(e.closeModal())}),l(),c(1,"div",28)(2,"header",29)(3,"h3",30),M(4,Di,2,3)(5,Oi,2,3),l(),c(6,"button",31),x("click",function(){f(n);let e=_();return h(e.closeModal())}),w(7,"i",32),l()(),c(8,"div",33),M(9,Ii,2,0,"div",34)(10,Ei,3,3,"div",35)(11,Vi,6,10),l(),c(12,"footer",36)(13,"dui-button",37),x("onClick",function(){f(n);let e=_();return h(e.closeModal())}),g(14),p(15,"translate"),l(),c(16,"dui-button",38),x("onClick",function(){f(n);let e=_();return h(e.confirmModal())}),M(17,Ni,2,3)(18,Ai,2,3),l()()()}if(i&2){let n=_();o(4),P(n.modalMode()==="add"?4:5),o(5),P(n.modalCampaignsLoading()?9:n.modalCampaigns().length===0?10:11),o(5),v(" ",u(15,5,"cancel")," "),o(2),d("disabled",!n.modalTargetCampaignId()||n.modalSubmitting()),o(),P(n.modalMode()==="add"?17:18)}}var ai=(()=>{let r=class r{constructor(){this.contactId=null,this.campaignsChanged=new ut,this.campaigns=E([]),this.loading=E(!1),this.modalVisible=E(!1),this.modalMode=E("add"),this.modalSourceCampaignId=E(null),this.modalTargetCampaignId=E(null),this.modalReason=E(""),this.modalSubmitting=E(!1),this.modalCampaigns=E([]),this.modalCampaignsLoading=E(!1),this.statusSeverityMap={pending:"secondary",in_progress:"info",completed:"success",excluded:"danger",max_attempts:"warn"},this.statusLabelKeyMap={pending:"campaign-contacts-status-pending",in_progress:"campaign-contacts-status-in-progress",completed:"campaign-contacts-status-completed",excluded:"campaign-contacts-status-excluded",max_attempts:"campaign-contacts-status-max-attempts"},this.crmService=F(W),this.campaignsService=F($t),this.toast=F(j),this.alert=F(ct),this.translate=F(U),this.router=F(Vt)}ngOnChanges(t){t.contactId&&this.contactId&&this.loadCampaigns()}loadCampaigns(){return b(this,null,function*(){if(this.contactId){this.loading.set(!0);try{let t=yield this.crmService.getContactCampaigns(this.contactId);this.campaigns.set(t||[])}catch(t){console.error("Failed to load contact campaigns",t),this.campaigns.set([]),this.toast.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.loading.set(!1)}}})}getStatusSeverity(t){return t?this.statusSeverityMap[t]??"secondary":"secondary"}getStatusLabelKey(t){return t?this.statusLabelKeyMap[t]??null:null}isScheduledCallPending(t){if(!t?.next_dial_at)return!1;let e=new Date(t.next_dial_at).getTime();return Number.isFinite(e)&&e>Date.now()}openCampaign(t){this.router.navigate(["/campaigns",t.campaign_id])}removeFromCampaign(t){if(!this.contactId)return;let e=this.contactId;this.alert.confirmAction({title:this.translate.instant("crm-contact-campaigns-remove-confirm-title"),message:this.translate.instant("crm-contact-campaigns-remove-confirm-message"),confirmFunction:()=>b(this,null,function*(){this.alert.startLoading();try{yield this.campaignsService.bulkRemoveContactsFromCampaign(t.campaign_id,[e]),this.toast.handleSuccess({message:this.translate.instant("crm-contact-campaigns-remove-success")}),yield this.loadCampaigns(),this.campaignsChanged.emit()}catch(a){console.error(a),this.toast.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.alert.stopLoading()}})})}reincludeInCampaign(t){if(!this.contactId)return;let e=this.contactId;this.alert.confirmAction({title:this.translate.instant("campaign-contact-drawer-reinclude-confirm-title"),message:this.translate.instant("campaign-contact-drawer-reinclude-confirm-message"),confirmFunction:()=>b(this,null,function*(){this.alert.startLoading();try{yield this.campaignsService.resetContactInCampaign(t.campaign_id,[e]),this.toast.handleSuccess({message:this.translate.instant("campaign-contact-drawer-reinclude-success")}),yield this.loadCampaigns(),this.campaignsChanged.emit()}catch(a){console.error(a),this.toast.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.alert.stopLoading()}})})}openAddModal(){return b(this,null,function*(){this.modalMode.set("add"),this.modalSourceCampaignId.set(null),this.modalTargetCampaignId.set(null),this.modalReason.set(""),this.modalVisible.set(!0),yield this.loadAvailableCampaigns(null)})}openCopyModal(t){return b(this,null,function*(){this.modalMode.set("copy"),this.modalSourceCampaignId.set(t.campaign_id),this.modalTargetCampaignId.set(null),this.modalReason.set(""),this.modalVisible.set(!0),yield this.loadAvailableCampaigns(t.campaign_id)})}closeModal(){this.modalVisible.set(!1)}loadAvailableCampaigns(t){return b(this,null,function*(){this.modalCampaignsLoading.set(!0);try{let e=yield this.campaignsService.getCampaigns(1,"","name","ASC",100),a=Array.isArray(e?.campaigns)?e.campaigns:Array.isArray(e)?e:[],s=new Set(this.campaigns().filter(C=>C.status!=="excluded").map(C=>C.campaign_id)),m=a.filter(C=>!!C?.id).filter(C=>C.id!==t).filter(C=>this.modalMode()==="add"?!s.has(C.id):!0).map(C=>({id:C.id,name:C.name}));this.modalCampaigns.set(m)}catch(e){console.error("Failed to load campaigns",e),this.modalCampaigns.set([])}finally{this.modalCampaignsLoading.set(!1)}})}confirmModal(){return b(this,null,function*(){let t=this.modalTargetCampaignId();if(!(!t||!this.contactId)){this.modalSubmitting.set(!0);try{if(this.modalMode()==="add"){let e=yield this.campaignsService.addContactsToCampaign(t,[this.contactId]),a=jt(e,"single"),s=this.translate.instant(a.key,a.params);a.tone==="info"?this.toast.handleWarning({message:s}):this.toast.handleSuccess({message:s})}else yield this.crmService.copyContactToCampaign(this.contactId,t,this.modalReason()?.trim()||void 0),this.toast.handleSuccess({message:this.translate.instant("campaign-contact-drawer-copy-success")});this.modalVisible.set(!1),yield this.loadCampaigns(),this.campaignsChanged.emit()}catch(e){console.error(e),this.toast.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.modalSubmitting.set(!1)}}})}onModalTargetChange(t){this.modalTargetCampaignId.set(t)}onModalReasonChange(t){this.modalReason.set(t)}trackByCampaign(t,e){return e.campaign_id}};r.\u0275fac=function(e){return new(e||r)},r.\u0275cmp=z({type:r,selectors:[["app-contact-campaigns-section"]],inputs:{contactId:"contactId"},outputs:{campaignsChanged:"campaignsChanged"},features:[St],decls:13,vars:8,consts:[[1,"contact-campaigns-section"],[1,"contact-campaigns-section__header"],[1,"contact-campaigns-section__title"],["variant","outlined","styleClass","contact-campaigns-section__add",3,"onClick"],["iconName","add","iconClass","dapta-button__icon"],[1,"contact-campaigns-section__loading"],[1,"contact-campaigns-section__empty"],[1,"contact-campaigns-list"],[1,"contact-campaigns-list__item"],[1,"contact-campaigns-list__main"],[1,"contact-campaigns-list__name"],[1,"contact-campaigns-list__meta"],[3,"value","severity"],[1,"contact-campaigns-list__attempts"],[1,"contact-campaigns-list__redials"],["tooltipPosition","top",1,"contact-campaigns-list__callback",3,"pTooltip"],[1,"contact-campaigns-list__last"],[1,"contact-campaigns-list__actions"],["type","button","tooltipPosition","top",1,"contact-campaigns-list__action",3,"click","pTooltip"],["iconName","open_in_new","iconClass","contact-campaigns-list__action-icon","size","18px"],["iconName","swap_horiz","iconClass","contact-campaigns-list__action-icon","size","18px"],["type","button","tooltipPosition","top",1,"contact-campaigns-list__action",3,"pTooltip"],["type","button","tooltipPosition","top",1,"contact-campaigns-list__action","contact-campaigns-list__action--danger",3,"pTooltip"],["iconName","event","size","14px"],["iconName","restart_alt","iconClass","contact-campaigns-list__action-icon","size","18px"],["type","button","tooltipPosition","top",1,"contact-campaigns-list__action","contact-campaigns-list__action--danger",3,"click","pTooltip"],["iconName","remove_circle","iconClass","contact-campaigns-list__action-icon","size","18px"],[1,"contact-campaigns-modal__backdrop",3,"click"],["role","dialog",1,"contact-campaigns-modal"],[1,"contact-campaigns-modal__header"],[1,"contact-campaigns-modal__title"],["type","button",1,"contact-campaigns-modal__close",3,"click"],[1,"pi","pi-times"],[1,"contact-campaigns-modal__body"],[1,"contact-campaigns-modal__loading"],[1,"contact-campaigns-modal__empty"],[1,"contact-campaigns-modal__footer"],["variant","text",3,"onClick"],["variant","regular",3,"onClick","disabled"],[1,"contact-campaigns-modal__label"],["o
1ptionLabel","name","optionValue","id","filterBy","name","appendTo","body","styleClass","w-full",3,"ngModelChange","options","ngModel","placeholder","filter"],["pInputText","","type","text",1,"w-full",3,"ngModelChange","ngModel","placeholder"]],template:function(e,a){e&1&&(c(0,"section",0)(1,"header",1)(2,"h2",2),g(3),p(4,"translate"),l(),c(5,"dui-button",3),x("onClick",function(){return a.openAddModal()}),w(6,"dapta-material-icon",4),g(7),p(8,"translate"),l()(),M(9,xi,2,0,"div",5)(10,vi,3,3,"div",6)(11,Ti,3,0,"ul",7),l(),M(12,Bi,19,7)),e&2&&(o(3),v(" ",u(4,4,"crm-contact-campaigns-section-title")," "),o(4),v(" ",u(8,6,"crm-contact-campaigns-add-button")," "),o(2),P(a.loading()?9:a.campaigns().length===0?10:11),o(3),P(a.modalVisible()?12:-1))},dependencies:[N,$,we,q,Bt,A,dt,Rt,Y,st,xe,he,pt,Ut,Ie,Oe,J,L,Ft,R],styles:[".contact-campaigns-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;padding:16px 0;border-top:1px solid var(--space-300)}.contact-campaigns-section__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px}.contact-campaigns-section__title[_ngcontent-%COMP%]{margin:0;font-size:var(--font-size-h6, 16px);font-weight:var(--font-weight-semibold, 600);color:var(--contrast-100)}.contact-campaigns-section__loading[_ngcontent-%COMP%], .contact-campaigns-section__empty[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--contrast-300);text-align:center;min-height:80px}.contact-campaigns-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.contact-campaigns-list__item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--space-300);border-radius:8px;background-color:var(--space-500)}.contact-campaigns-list__main[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 auto}.contact-campaigns-list__name[_ngcontent-%COMP%]{font-size:var(--font-size-body, 14px);font-weight:var(--font-weight-medium, 500);color:var(--contrast-100);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-campaigns-list__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--contrast-300);font-size:var(--font-size-caption, 12px)}.contact-campaigns-list__callback[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.contact-campaigns-list__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.contact-campaigns-list__action[_ngcontent-%COMP%]{border:none;background:transparent;color:var(--contrast-200);cursor:pointer;width:30px;height:30px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s ease,color .15s ease}.contact-campaigns-list__action[_ngcontent-%COMP%]:hover{background-color:var(--space-400);color:var(--contrast-100)}.contact-campaigns-list__action--danger[_ngcontent-%COMP%]:hover{color:var(--danger-500, var(--contrast-100))}.contact-campaigns-modal[_ngcontent-%COMP%]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(420px,95vw);max-height:90vh;background-color:var(--space-500);border:1px solid var(--space-300);border-radius:12px;box-shadow:0 16px 32px #0000002e;display:flex;flex-direction:column;z-index:1100}.contact-campaigns-modal__backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#00000059;z-index:1090}.contact-campaigns-modal__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--space-300)}.contact-campaigns-modal__title[_ngcontent-%COMP%]{margin:0;font-size:var(--font-size-h6, 16px);font-weight:var(--font-weight-semibold, 600);color:var(--contrast-100)}.contact-campaigns-modal__close[_ngcontent-%COMP%]{border:none;background:transparent;color:var(--contrast-200);cursor:pointer;width:32px;height:32px;border-radius:999px}.contact-campaigns-modal__close[_ngcontent-%COMP%]:hover{background-color:var(--space-300);color:var(--contrast-100)}.contact-campaigns-modal__body[_ngcontent-%COMP%]{padding:16px 20px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.contact-campaigns-modal__label[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300);margin-top:4px}.contact-campaigns-modal__loading[_ngcontent-%COMP%], .contact-campaigns-modal__empty[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:24px;min-height:100px;color:var(--contrast-300);text-align:center}.contact-campaigns-modal__footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;
1gap:12px;padding:12px 20px;border-top:1px solid var(--space-300)}"],changeDetection:0});let i=r;return i})();var zi=()=>({width:"min(480px, 100vw)"}),Li=(i,r)=>r.call_id;function Ui(i,r){i&1&&(c(0,"span",6),g(1),l()),i&2&&(o(),D(r))}function Ri(i,r){i&1&&w(0,"dapta-material-icon",7),i&2&&d("size","20px")}function $i(i,r){if(i&1&&(c(0,"span",10),g(1),l()),i&2){let n=_();o(),D(n.phone_number)}}function ji(i,r){if(i&1){let n=S();c(0,"div",3)(1,"div",4)(2,"div",5),M(3,Ui,2,1,"span",6)(4,Ri,1,1,"dapta-material-icon",7),l(),c(5,"div",8)(6,"h3",9),g(7),p(8,"translate"),l(),M(9,$i,2,1,"span",10),l()(),c(10,"button",11),x("click",function(){f(n);let e=_(2);return h(e.close())}),w(11,"i",12),l()()}if(i&2){let n,t=r,e=_(2);o(3),P((n=e.initials())?3:4,n),o(4),v(" ",t.name||t.phone_number||u(8,3,"not-available")," "),o(2),P(t.name&&t.phone_number?9:-1)}}function Wi(i,r){if(i&1){let n=S();c(0,"div",3)(1,"h3",9),g(2),p(3,"translate"),l(),c(4,"button",11),x("click",function(){f(n);let e=_(2);return h(e.close())}),w(5,"i",12),l()()}
1i&2&&(o(2),v(" ",u(3,1,"crm-contact-drawer-title")," "))}function Hi(i,r){if(i&1&&M(0,ji,12,5,"div",3)(1,Wi,6,3,"div",3),i&2){let n,t=_();P((n=t.viewContact())?0:1,n)}}function Ki(i,r){if(i&1){let n=S();c(0,"div",19)(1,"span",17),g(2),p(3,"translate"),l(),c(4,"span",28)(5,"span",29),g(6),l(),c(7,"button",30),p(8,"translate"),p(9,"translate"),x("click",function(){f(n);let e=_(),a=_();return h(a.copyContactId(e.contact_id))}),w(10,"dapta-material-icon",31),l()()()}if(i&2){let n=_();o(2),D(u(3,5,"crm-contact-drawer-contact-id")),o(3),d("title",n.contact_id),o(),D(n.contact_id),o(),d("pTooltip",u(8,7,"copy-contact-id")),se("aria-label",u(9,9,"copy-contact-id"))}}function qi(i,r){if(i&1&&(c(0,"div",16)(1,"span",17),g(2),p(3,"translate"),l(),c(4,"span",18),g(5),l()()),i&2){let n=_();o(2),D(u(3,2,"country")),o(3),D(n.country_code)}}function Gi(i,r){if(i&1&&(c(0,"div",19)(1,"span",17),g(2),p(3,"translate"),l(),c(4,"span",18),g(5),l()()),i&2){let n=_();o(2),D(u(3,2,"crm-contact-drawer-project")),o(3),D(n.project_id)}}function Qi(i,r){if(i&1&&(c(0,"span",33),w(1,"span",34),g(2),l()),i&2){let n=r.$implicit;o(2),v(" ",n," ")}}function Ji(i,r){if(i&1&&(c(0,"div",19)(1,"span",17),g(2),p(3,"translate"),l(),c(4,"div",32),tt(5,Qi,3,1,"span",33,pe),l()()),i&2){let n=_(),t=_();o(2),D(u(3,1,"crm-contact-drawer-active-campaigns")),o(3),et(t.parseCampaignNames(n.active_campaigns_names))}}function Yi(i,r){i&1&&(c(0,"div",20),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"crm-contact-drawer-no-custom-fields")," "))}function Xi(i,r){if(i&1&&(c(0,"li",35)(1,"span",36),g(2),p(3,"snakeToTitleCase"),l(),c(4,"span",37),g(5),l()()),i&2){let n=r.$implicit,t=_(3);o(2),v(" ",u(3,3,n.display_name)," "),o(2),d("title",t.formatValue(n.value)),o(),v(" ",t.formatValue(n.value)," ")}}function Zi(i,r){if(i&1&&(c(0,"ul",21),tt(1,Xi,6,5,"li",35,Pt().trackByField,!0),l()),i&2){let n=_(2);o(),et(n.customFields())}}function tn(i,r){if(i&1&&(c(0,"span",24),g(1),l()),i&2){let n=_(2);o(),v("(",n.calls().length,")")}}function en(i,r){i&1&&(c(0,"div",20),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"loading"),"\u2026 "))}function nn(i,r){i&1&&(c(0,"div",20),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"crm-contact-drawer-no-calls")," "))}function an(i,r){if(i&1&&(w(0,"p-tag",41),p(1,"translate")),i&2){let n=r;d("value",u(1,2,n.labelKey))("severity",n.severity)}}function on(i,r){i&1&&w(0,"dapta-material-icon",43),i&2&&d("size","14px")}function rn(i,r){if(i&1&&(c(0,"span",45),w(1,"dapta-material-icon",46),g(2),l()),i&2){let n=_().$implicit;o(),d("size","12px"),o(),v(" ",n.campaign_name," ")}}function ln(i,r){i&1&&(c(0,"span",45),w(1,"dapta-material-icon",47),g(2),l()),i&2&&(o(),d("size","12px"),o(),v(" ",r," "))}function cn(i,r){if(i&1&&(c(0,"span",45),w(1,"dapta-material-icon",48),g(2),l()),i&2){let n=_().$implicit;o(),d("size","12px"),o(),v(" ",n.credits," ")}}function sn(i,r){if(i&1){let n=S();c(0,"li",39),x("click",function(){let e=f(n).$implicit,a=_(3);return h(a.openCallDetail(e))}),c(1,"div",40),M(2,an,2,4,"p-tag",41),c(3,"span",42),g(4),l(),M(5,on,1,1,"dapta-material-icon",43),l(),c(6,"div",44),M(7,rn,3,2,"span",45),M(8,ln,3,2,"span",45),M(9,cn,3,2,"span",45),l()()}if(i&2){let n,t,e=r.$implicit,a=_(3);kt("drawer-calls__item--clickable",e.voice_call_id),o(2),P((n=a.callDisposition(e))?2:-1,n),o(2),v(" ",a.formatRelativeTime(e.created_at)," "),o(),P(e.voice_call_id?5:-1),o(2),P(e.campaign_name?7:-1),o(),P((t=a.formatCallDuration(e.duration_ms))?8:-1,t),o(),P(e.credits!=null?9:-1)}}function pn(i,r){if(i&1&&(c(0,"ul",25),tt(1,sn,10,8,"li",38,Li),l()),i&2){let n=_(2);o(),et(n.calls())}}function dn(i,r){if(i&1){let n=S();c(0,"section",13)(1,"h4",14),g(2),p(3,"translate"),l(),c(4,"div",15)(5,"div",16)(6,"span",17),g(7),p(8,"translate"),l(),c(9,"span",18),g(10),p(11,"date"),p(12,"translate"),l()(),c(13,"div",16)(14,"span",17),g(15),p(16,"translate"),l(),c(17,"span",18),g(18),p(19,"date"),p(20,"translate"),l()(),M(21,Ki,11,11,"div",19),M(22,qi,6,4,"div",16),M(23,Gi,6,4,"div",19),M(24,Ji,7,3,"div",19),l()(),c(25,"section",13)(26,"h4",14),g(27),p(28,"translate"),l(),M(29,Yi,3,3,"div",20)(30,Zi,3,0,"ul",21),c(31,"dui-button",22),x("onClick",function(){f(n);let e=_();return h(e.openAddCustomFieldPopup())}),w(32,"dapta-material-icon",23),g(33),p(34,"translate"),l()(),c(35,"section",13)(36,"h4",14),g(37),p(38,"translate"),M(39,tn,2,1,"span",24),l(),M(40,en,3,3,"div",20)(41,nn,3,3,"div",20)(42,pn,3,0,"ul",25),l(),c(43,"section",26)(44,"app-contact-campaigns-section",27),x("campaignsChanged",function(){f(n);let e=_();return h(e.contactUpdated.emit())}),l()()}if(i&2){let n=r,t=_();
1o(2),v(" ",u(3,16,"crm-contact-drawer-about")," "),o(5),D(u(8,18,"crm-contact-drawer-created")),o(3),v(" ",n.created_at?B(11,20,n.created_at,"MMM d, y h:mm a"):u(12,23,"not-available")," "),o(5),D(u(16,25,"crm-contact-drawer-updated")),o(3),v(" ",n.updated_at?B(19,27,n.updated_at,"MMM d, y h:mm a"):u(20,30,"not-available")," "),o(3),P(n.contact_id?21:-1),o(),P(n.country_code?22:-1),o(),P(n.project_id?23:-1),o(),P((n.active_campaigns_count||0)>0?24:-1),o(3),v(" ",u(28,32,"crm-contact-drawer-custom-fields")," "),o(2),P(t.customFields().length===0?29:30),o(4),v(" ",u(34,34,"crm-contact-drawer-add-custom-field")," "),o(4),v(" ",u(38,36,"crm-contact-drawer-calls")," "),o(2),P(t.calls().length>0?39:-1),o(),P(t.loadingCalls()?40:t.calls().length===0?41:42),o(4),d("contactId",n.contact_id)}}var oi=(()=>{let r=class r{constructor(){this.contact=null,this.visible=!1,this.dynamicFieldDefinitions=[],this.visibleChange=new ut,this.contactUpdated=new ut,this.contactSignal=E(null),this.definitionsSignal=E([]),this.localFieldOverrides=E({}),this.viewContact=nt(()=>{let t=this.contactSignal();if(!t)return null;let e=this.localFieldOverrides();return Object.keys(e).length?K(K({},t),e):t}),this.customFields=nt(()=>{let t=this.viewContact();if(!t)return[];let e=[];for(let m of this.definitionsSignal()){let C=t[m.field_name];C==null||C===""||e.push({name:m.field_name,display_name:m.display_name||m.field_name,value:C})}let a=new Set(this.definitionsSignal().map(m=>m.field_name)),s=this.localFieldOverrides();for(let m of Object.keys(s)){if(a.has(m))continue;let C=s[m];C==null||C===""||e.push({name:m,display_name:m,value:C})}return e}),this.lastCallView=nt(()=>{let t=this.viewContact();return t?vt(t.last_call_result):null}),this.initials=nt(()=>{let e=this.viewContact()?.name?.trim();if(!e)return null;let a=e.split(/\s+/).filter(Boolean);return a.length===1?a[0].slice(0,2).toUpperCase():(a[0][0]+a[1][0]).toUpperCase()}),this.existingFieldNames=nt(()=>{let t=new Set(this.definitionsSignal().map(e=>e.field_name));return Object.keys(this.localFieldOverrides()).forEach(e=>t.add(e)),Array.from(t)}),this.translate=F(U),this.popUpController=F(Q),this.crmService=F(W),this.toast=F(j),this.calls=E([]),this.loadingCalls=E(!1),this.trackByField=(t,e)=>e.name}callDisposition(t){return vt({disconnection_reason:t.disconnection_reason??null,call_successful:t.call_analysis?.call_successful??null,duration_ms:t.duration_ms??null,campaign_id:t.campaign_id,campaign_name:t.campaign_name??"",created_at:t.created_at,call_status:t.call_status??null,in_voicemail:t.call_analysis?.in_voicemail??null})}openCallDetail(t){if(!t.voice_call_id)return;let e=`/agents-studio/voice-agents/calls-history/${t.voice_call_id}`;window.open(e,"_blank")}copyContactId(t){return b(this,null,function*(){if(t)try{if(navigator.clipboard&&window.isSecureContext)yield navigator.clipboard.writeText(t);else{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.focus(),e.select(),document.execCommand("copy"),document.body.removeChild(e)}this.toast.handleSuccess({message:this.translate.instant("contact-id-copied-to-clipboard")})}catch(e){console.error("Error copying contact id to clipboard:",e)}})}fetchCalls(t){return b(this,null,function*(){this.loadingCalls.set(!0);try{let e=yield this.crmService.getContactCalls(t);this.calls.set(e)}catch(e){console.error("Failed to fetch contact calls",e),this.calls.set([])}finally{this.loadingCalls.set(!1)}})}ngOnChanges(t){t.contact&&(this.contactSignal.set(this.contact),this.localFieldOverrides.set({}),this.contact?.contact_id?this.fetchCalls(this.contact.contact_id):this.calls.set([])),t.dynamicFieldDefinitions&&this.definitionsSignal.set(this.dynamicFieldDefinitions??[])}onVisibleChange(t){this.visible=t,this.visibleChange.emit(t)}close(){this.onVisibleChange(!1)}openAddCustomFieldPopup(){return b(this,null,function*(){let t=this.viewContact();if(!t?.contact_id)return;(yield this.popUpController.openPopUp({component:Kt,componentProps:{contactId:t.contact_id,existingFieldNames:this.existingFieldNames()},header:{title:this.translate.instant("add-custom-field-popup-title")},styles:{height:"fit-content",width:"420px",maxWidth:"95vw"}})).popUpClosed().then(a=>{a?.added&&(this.localFieldOverrides.update(s=>wt(K({},s),{[a.field_name]:a.field_value})),this.contactUpdated.emit())})})}formatRelativeTime(t){if(!t)return this.translate.instant("crm-panel-time-never");let e=new Date(t);if(Number.isNaN(e.getTime()))return this.translate.instant("crm-panel-time-never");let a=e.getTime()-Date.now(),s=Math.round(a/1e3),m=Math.abs(s),C=this.translate.currentLang||this.translate.getDefaultLang()||"en",y=new Intl.RelativeTimeFormat(C,{numeric:"auto"});if(m<60)return y.format(Math.round(s),"second");let k=Math.round(s/60);if(Math.abs(k)<60)return y.format(k,"minute");let O=Math.round(k/60);if(Math.abs(O)<24)return y.format(O,"hour");let V=Math.round(O/24);if(Math.abs(V)<30)return y.format(V,"day");let H=Math.round(V/30);if(Math.abs(H)<12)return y.format(H,"month");let _t=Math.round(H/12);return y.format(_t,"year")}formatCallDuration(t){if(t==null||Number.isNaN(t)||t<=0)return"";let e=Math.round(t/1e3),a=Math.floor(e/3600),s=Math.floor(e%3600/60),m=e%60;return a>0?`${a}h ${s}m`:s>0?`${s}m ${m}s`:`${m}s`}formatCampaignNames(t){return this.parseCampaignNames(t).join(", ")}parseCampaignNames(t){if(!t)return[];if(Array.isArray(t))return t.filter(Boolean);if(typeof t=="string"){let e=t.trim();return e.startsWith("{")&&e.endsWith("}
1")?e.slice(1,-1).split(",").map(a=>a.trim().replace(/^"(.*)"$/,"$1")).filter(Boolean):[e]}return[]}formatValue(t){if(t==null)return"";if(typeof t=="boolean")return t?"true":"false";if(typeof t=="object")try{return JSON.stringify(t)}catch{return String(t)}return String(t)}};r.\u0275fac=function(e){return new(e||r)},r.\u0275cmp=z({type:r,selectors:[["app-crm-contact-drawer"]],inputs:{contact:"contact",visible:"visible",dynamicFieldDefinitions:"dynamicFieldDefinitions"},outputs:{visibleChange:"visibleChange",contactUpdated:"contactUpdated"},features:[St],decls:5,vars:6,consts:[["header",""],["position","right","styleClass","crm-contact-drawer",3,"visibleChange","visible","showCloseIcon"],[1,"drawer-body"],[1,"drawer-header"],[1,"drawer-header__main"],[1,"drawer-header__avatar"],[1,"drawer-header__avatar-text"],["iconName","person",3,"size"],[1,"drawer-header__titles"],[1,"drawer-header__title"],[1,"drawer-header__subtitle"],["type","button",1,"drawer-close-button",3,"click"],[1,"pi","pi-times"],[1,"drawer-section"],[1,"drawer-section__title"],[1,"drawer-stat-grid"],[1,"drawer-stat"],[1,"drawer-stat__label"],[1,"drawer-stat__value"],[1,"drawer-stat","drawer-stat--wide"],[1,"drawer-empty","drawer-empty--inline"],[1,"drawer-fields"],["variant","outlined","styleClass","drawer-fields__add-button w-full",3,"onClick"],["iconName","add","iconClass","dapta-button__icon"],[1,"drawer-section__count"],[1,"drawer-calls"],[1,"drawer-section","drawer-section--campaigns"],[3,"campaignsChanged","contactId"],[1,"drawer-stat__value","drawer-stat__value--copyable"],[1,"drawer-stat__id",3,"title"],["type","button","tooltipPosition","top",1,"drawer-stat__copy",3,"click","pTooltip"],["iconName","content_copy","size","16px"],[1,"drawer-active-campaigns-list"],[1,"drawer-active-campaigns-pill"],[1,"drawer-active-campaigns-pill__dot"],[1,"drawer-fields__item"],[1,"drawer-fields__key"],[1,"drawer-fields__value",3,"title"],[1,"drawer-calls__item",3,"drawer-calls__item--clickable"],[1,"drawer-calls__item",3,"click"],[1,"drawer-calls__row"],["styleClass","drawer-calls__disposition",3,"value","severity"],[1,"drawer-calls__date"],["iconName","open_in_new","iconClass","drawer-calls__open-icon",3,"size"],[1,"drawer-calls__row","drawer-calls__row--meta"],[1,"drawer-calls__meta"],["iconName","campaign","iconClass","drawer-calls__icon",3,"size"],["iconName","schedule","iconClass","drawer-calls__icon",3,"size"],["iconName","paid","iconClass","drawer-calls__icon",3,"size"]],template:function(e,a){if(e&1){let s=S();c(0,"p-drawer",1),x("visibleChange",function(C){return f(s),h(a.onVisibleChange(C))}),T(1,Hi,2,1,"ng-template",null,0,It),c(3,"div",2),M(4,dn,45,38),l()()}if(e&2){let s;Tt(Ot(5,zi)),d("visible",a.visible)("showCloseIcon",!1),o(4),P((s=a.viewContact())?4:-1,s)}},dependencies:[N,A,Ge,qe,Y,st,dt,Rt,Nt,J,L,ai,Ft,R,Qe],styles:["[_nghost-%COMP%] .crm-contact-drawer .p-drawer-content{padding:0;display:flex;flex-direction:column}[_nghost-%COMP%] .crm-contact-drawer .p-drawer-header{padding:16px 20px;border-bottom:1px solid var(--space-300)}[_nghost-%COMP%] .crm-contact-drawer .p-drawer-footer{padding:12px 20px;border-top:1px solid var(--space-300);background-color:var(--space-500)}
1.drawer-header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;width:100%;gap:8px}.drawer-header__main[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1 1 auto;min-width:0}.drawer-header__avatar[_ngcontent-%COMP%]{flex:0 0 auto;width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:var(--font-weight-semibold, 600);font-size:var(--font-size-body, 14px);box-shadow:0 0 0 3px var(--space-400, rgba(255, 255, 255, .06))}.drawer-header__avatar-text[_ngcontent-%COMP%]{text-transform:uppercase;letter-spacing:.02em}.drawer-header__titles[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.drawer-header__title[_ngcontent-%COMP%]{margin:0;font-size:var(--font-size-h6, 16px);font-weight:var(--font-weight-semibold, 600);color:var(--contrast-100);word-break:break-word}.drawer-header__subtitle[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300)}.drawer-header__tag[_ngcontent-%COMP%]{margin-top:4px;align-self:flex-start}.drawer-close-button[_ngcontent-%COMP%]{border:none;background:transparent;color:var(--contrast-200);cursor:pointer;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;transition:background-color .15s ease;flex:0 0 auto}.drawer-close-button[_ngcontent-%COMP%]:hover{background-color:var(--space-300);color:var(--contrast-100)}.drawer-body[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:column;gap:20px;padding:16px 20px 24px;overflow-y:auto}.drawer-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.drawer-section__title[_ngcontent-%COMP%]{margin:0;font-size:var(--font-size-body, 13px);font-weight:var(--font-weight-semibold, 600);color:var(--contrast-200);text-transform:uppercase;letter-spacing:.04em}.drawer-section--campaigns[_ngcontent-%COMP%]{margin-top:4px}.drawer-stat-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}.drawer-stat[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.drawer-stat__label[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300)}.drawer-stat__value[_ngcontent-%COMP%]{font-size:var(--font-size-body, 14px);color:var(--contrast-100);font-weight:var(--font-weight-medium, 500);word-break:break-word}.drawer-stat--wide[_ngcontent-%COMP%]{grid-column:span 2}.drawer-stat__value--copyable[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.drawer-stat__id[_ngcontent-%COMP%]{font-family:var(--font-family-mono, monospace);font-size:var(--font-size-caption, 12px);font-weight:var(--font-weight-regular, 400);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}.drawer-stat__copy[_ngcontent-%COMP%]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:2px;border:none;background:transparent;color:var(--contrast-300);cursor:pointer;border-radius:4px;transition:color .15s ease,background .15s ease}.drawer-stat__copy[_ngcontent-%COMP%]:hover{color:var(--contrast-100);background:var(--contrast-700, rgba(255, 255, 255, .08))}.drawer-active-campaigns-list[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.drawer-active-campaigns-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#86efac;background-color:#22c55e2e;padding:4px 10px;border-radius:999px;font-weight:var(--font-weight-medium, 500);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-active-campaigns-pill__dot[_ngcontent-%COMP%]{flex-shrink:0;width:6px;height:6px;border-radius:999px;background-color:#22c55e}.drawer-fields[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--space-300);border-radius:8px;overflow:hidden}.drawer-fields__item[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:12px;padding:10px 12px;background-color:var(--space-500);border-bottom:1px solid var(--space-300)}
1.drawer-fields__item[_ngcontent-%COMP%]:last-child{border-bottom:none}.drawer-fields__key[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300);align-self:center;word-break:break-word}.drawer-fields__value[_ngcontent-%COMP%]{font-size:var(--font-size-body, 14px);color:var(--contrast-100);font-weight:var(--font-weight-medium, 500);text-align:right;word-break:break-word}.drawer-fields__add-button[_ngcontent-%COMP%]{width:100%;justify-content:center}.drawer-empty[_ngcontent-%COMP%]{padding:16px;text-align:center;color:var(--contrast-300);border:1px dashed var(--space-300);border-radius:8px}.drawer-empty--inline[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);padding:12px}.drawer-section__count[_ngcontent-%COMP%]{margin-left:6px;font-size:12px;color:var(--contrast-300);font-weight:400}.drawer-calls[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto}.drawer-calls__item[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;padding:8px 12px;border:1px solid var(--space-300);border-radius:8px;background-color:var(--space-500);transition:background-color .15s ease,border-color .15s ease}.drawer-calls__item--clickable[_ngcontent-%COMP%]{cursor:pointer}.drawer-calls__item--clickable[_ngcontent-%COMP%]:hover{background-color:var(--space-400);border-color:var(--space-200)}.drawer-calls__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.drawer-calls__row--meta[_ngcontent-%COMP%]{color:var(--contrast-300);font-size:12px}
1.drawer-calls__date[_ngcontent-%COMP%]{font-size:12px;color:var(--contrast-300);margin-left:auto}.drawer-calls__open-icon[_ngcontent-%COMP%]{color:var(--contrast-300)}.drawer-calls__meta[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.drawer-calls__icon[_ngcontent-%COMP%]{color:inherit}.drawer-recent[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--space-300);border-radius:8px;background-color:var(--space-500)}.drawer-recent__row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.drawer-recent__row--meta[_ngcontent-%COMP%]{color:var(--contrast-300);font-size:var(--font-size-caption, 12px);justify-content:flex-start}.drawer-recent__date[_ngcontent-%COMP%]{font-size:var(--font-size-caption, 12px);color:var(--contrast-300)}.drawer-recent__campaign[_ngcontent-%COMP%], .drawer-recent__duration[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.drawer-recent__icon[_ngcontent-%COMP%]{color:inherit}.drawer-footer[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:8px;width:100%}.drawer-footer__button[_ngcontent-%COMP%]{flex:1 1 0}"],changeDetection:0});let i=r;return i})();var mn=["tablePrime"],_n=["settingsSidebar"],un=i=>({"crm-panel__settings--open":i}),gn=()=>({width:"420px"}),qt=i=>({count:i});function Cn(i,r){if(i&1){let n=S();c(0,"dui-button",46),x("onClick",function(){f(n);let e=_();return h(e.clearSearch())}),w(1,"dapta-material-icon",47),l()}i&2&&(o(),d("size","18px"))}function fn(i,r){if(i&1){let n=S();c(0,"dui-button",15),p(1,"translate"),x("onClick",function(){f(n);let e=Z(4);return h(e.click())}),w(2,"dapta-material-icon",48),c(3,"input",49,3),x("change",function(e){f(n);let a=_();return h(a.importContactsFromCsv(e))}),l()()}i&2&&d("pTooltip",u(1,2,"import-csv"))("showDelay",1e3)}function hn(i,r){if(i&1){let n=S();c(0,"dui-button",15),p(1,"translate"),x("onClick",function(){f(n);let e=_();return h(e.openSettingsSidebar())}),w(2,"dapta-material-icon",50),l()}i&2&&d("pTooltip",u(1,2,"customize-properties"))("showDelay",1e3)}function xn(i,r){if(i&1&&(c(0,"span",54),g(1),l()),i&2){let n=_().$implicit,t=_();o(),v(" (",t.getChipCount(n.value),") ")}}function vn(i,r){if(i&1){let n=S();c(0,"button",51),x("click",function(){let e=f(n).$implicit,a=_();return h(a.onFilterChipClick(e.value))}),c(1,"span",52),g(2),p(3,"translate"),l(),T(4,xn,2,1,"span",53),l()}if(i&2){let n=r.$implicit,t=_();kt("crm-panel-chip--active",t.selectedFilter===n.value)("crm-panel-chip--all",n.value==="all"),o(2),D(u(3,6,n.labelKey)),o(2),d("ngIf",t.getChipCount(n.value)!==null)}}function wn(i,r){if(i&1){let n=S();c(0,"dui-button",60),x("onClick",function(){f(n);let e=_(2);return h(e.openBulkAddToCampaign())}),w(1,"dapta-material-icon",61),g(2),p(3,"translate"),l()}
1i&2&&(o(2),v(" ",u(3,1,"crm-bulk-add-to-campaign")," "))}function bn(i,r){if(i&1){let n=S();c(0,"dui-button",62),x("onClick",function(){f(n);let e=_(2);return h(e.bulkRemoveFromCrm())}),w(1,"dapta-material-icon",63),g(2),p(3,"translate"),l()}i&2&&(o(2),v(" ",u(3,1,"crm-bulk-remove-from-crm")," "))}function yn(i,r){if(i&1){let n=S();c(0,"div",55)(1,"span",42),g(2),p(3,"translate"),l(),c(4,"div",56),T(5,wn,4,3,"dui-button",57)(6,bn,4,3,"dui-button",58),c(7,"dui-button",59),x("onClick",function(){f(n);let e=_();return h(e.cancelSelection())}),w(8,"dapta-material-icon",31),g(9),p(10,"translate"),l()()()}if(i&2){let n=_();o(2),v(" ",B(3,4,"crm-bulk-contacts-selected",it(9,qt,n.selectedContacts.length))," "),o(3),d("appHasPermission",n.permissionsList.CAMPAIGNS.WRITE),o(),d("appHasPermission",n.permissionsList.CRM.WRITE),o(3),v(" ",u(10,7,"crm-bulk-cancel-selection")," ")}}function Sn(i,r){if(i&1&&(c(0,"span",67),g(1),l()),i&2){let n=_().$implicit;o(),v(" ",n.row.phone_number," ")}}function Mn(i,r){if(i&1&&(c(0,"div",64)(1,"span",65),g(2),p(3,"translate"),l(),T(4,Sn,2,1,"span",66),l()),i&2){let n=r.$implicit;o(2),v(" ",n.row.name||n.row.phone_number||u(3,2,"not-available")," "),o(2),d("ngIf",n.row.name&&n.row.phone_number)}}function Pn(i,r){if(i&1&&(c(0,"span",72),w(1,"span",73),g(2),p(3,"translate"),l()),i&2){let n=_(2).$implicit,t=_();d("pTooltip",t.formatCampaignNames(n.row.all_campaigns_names??n.row.active_campaigns_names)),o(2),v(" ",B(3,2,"crm-panel-campaigns",it(5,qt,n.row.all_campaigns_count??n.row.active_campaigns_count))," ")}}function kn(i,r){if(i&1&&(c(0,"span",74),w(1,"span",73),g(2),p(3,"translate"),l()),i&2){let n=_(2).$implicit,t=_();d("pTooltip",t.formatCampaignNames(n.row.text_campaigns_names)),o(2),v(" ",B(3,2,"crm-panel-text-campaigns",it(5,qt,n.row.text_campaigns_count))," ")}}function Tn(i,r){if(i&1&&(Qt(0),c(1,"div",69),T(2,Pn,4,7,"span",70)(3,kn,4,7,"span",71),l(),Jt()),i&2){let n=_().$implicit;o(2),d("ngIf",((n.row.all_campaigns_count??n.row.active_campaigns_count)||0)>0),o(),d("ngIf",(n.row.text_campaigns_count||0)>0)}}function Dn(i,r){if(i&1){let n=S();c(0,"dui-button",77),x("onClick",function(e){f(n);let a=_(2).$implicit,s=_();return h(s.onAddToCampaign(a.row,e))}),w(1,"dapta-material-icon",78),c(2,"span"),g(3),p(4,"translate"),l()()}i&2&&(o(),d("size","14px"),o(2),D(u(4,2,"add")))}function On(i,r){if(i&1&&(c(0,"div",75),T(1,Dn,5,4,"dui-button",76),l()),i&2){let n=_(2);o(),d("appHasPermission",n.permissionsList.CAMPAIGNS.WRITE)}}function In(i,r){if(i&1&&T(0,Tn,4,2,"ng-container",68)(1,On,2,1,"ng-template",null,4,It),i&2){let n=r.$implicit,t=Z(2);d("ngIf",((n.row.all_campaigns_count??n.row.active_campaigns_count)||0)+(n.row.text_campaigns_count||0)>0)("ngIfElse",t)}}function En(i,r){i&1&&w(0,"dapta-material-icon",81),i&2&&d("size","14px")}function Fn(i,r){if(i&1&&(c(0,"div",79)(1,"span"),g(2),l(),T(3,En,1,1,"dapta-material-icon",80),l()),i&2){let n=r.$implicit,t=_();o(2),D(t.formatRelativeTime(n.row.last_activity_at)),o(),d("ngIf",t.isRecentActivity(n.row.last_activity_at))}}function Vn(i,r){if(i&1){let n=S();c(0,"dui-button",83),p(1,"translate"),x("onClick",function(e){f(n);let a=_().$implicit,s=_();return h(s.onQuickActionMove(a.row,e))}),w(2,"dapta-material-icon",88),l()}i&2&&(d("pTooltip",u(1,2,"crm-panel-quick-action-move")),o(2),d("size","18px"))}function Nn(i,r){if(i&1){let n=S();c(0,"div",89)(1,"div",90)(2,"dapta-tooltip-content",91)(3,"ul",92)(4,"li",93),x("click",function(e){f(n);let a=_().$implicit,s=_();return h(s.editCrmContact(a.row,e))}),w(5,"span",94),g(6),p(7,"translate"),l(),c(8,"li",93),x("click",function(e){f(n);let a=_().$implicit,s=_();return h(s.updateCrmContactStatus(a.row,e))}),w(9,"span",95),g(10),p(11,"translate"),l()()()()()}i&2&&(o(),d("openOnClick",!0),o(),d("showOrigin",!1),o(4),v(" ",u(7,4,"edit")," "),o(4),v(" ",u(11,6,"delete")," "))}function An(i,r){if(i&1){let n=S();c(0,"div",82),x("click",function(e){return f(n),h(e.stopPropagation())}),c(1,"dui-button",83),p(2,"translate"),x("onClick",function(e){let a=f(n).$implicit,s=_();return h(s.onQuickActionCall(a.row,e))}),w(3,"dapta-material-icon",84),l(),T(4,Vn,3,4,"dui-button",85),c(5,"dui-button",83),p(6,"translate"),x("onClick",function(e){let a=f(n).$implicit,s=_();return h(s.onQuickActionDetail(a.row,e))}),w(7,"dapta-material-icon",86),l(),T(8,Nn,12,8,"div",87),l()}if(i&2){let n=_();o(),d("pTooltip",u(2,6,"crm-panel-quick-action-call")),o(2),d("size","18px"),o(),d("appHasPermission",
1n.permissionsList.CAMPAIGNS.WRITE),o(),d("pTooltip",u(6,8,"crm-panel-quick-action-detail")),o(2),d("size","18px"),o(),d("appHasPermission",n.permissionsList.CRM.WRITE)}}function Bn(i,r){if(i&1&&w(0,"dapta-material-icon",106),i&2){let n=_().$implicit;d("iconName",n.visibility?"visibility":"visibility_off")("size","18px")}}function zn(i,r){i&1&&w(0,"dapta-spinner",107),i&2&&d("size","18px")}function Ln(i,r){if(i&1){let n=S();c(0,"div",96)(1,"div",97),w(2,"dapta-material-icon",98),c(3,"div",99),g(4),l()(),c(5,"div",97)(6,"dui-button",100),x("onClick",function(e){let a=f(n).$implicit,s=_();return h(s.updateColumnVisibility(a,e))}),T(7,Bn,1,2,"dapta-material-icon",101)(8,zn,1,1,"dapta-spinner",102),l(),c(9,"div",103),w(10,"dapta-material-icon",104),c(11,"dapta-tooltip-content",105)(12,"ul",92)(13,"li",93),x("click",function(e){let a=f(n).$implicit,s=_();return h(s.editColumn(a,e))}),w(14,"span",94),g(15),p(16,"translate"),l(),c(17,"li",93),x("click",function(e){let a=f(n).$implicit,s=_();return h(s.deleteColumn(a,e))}),w(18,"span",95),g(19),p(20,"translate"),l()()()()()()}if(i&2){let n=r.$implicit,t=_();o(2),d("iconName","drag_indicator"),o(2),D(n.display_name),o(2),d("disabled",t.updatingColumnId===n.id),o(),d("ngIf",t.updatingColumnId!==n.id),o(),d("ngIf",t.updatingColumnId===n.id),o(),d("openOnClick",!0),o(),d("iconName","more_vert"),o(),d("showOrigin",!1),o(4),v(" ",u(16,10,"edit")," "),o(4),v(" ",u(20,12,"delete")," ")}}function Un(i,r){i&1&&(c(0,"div",108),w(1,"dapta-spinner",107),l()),i&2&&(o(),d("size","24px"))}function Rn(i,r){i&1&&(c(0,"div"),g(1),p(2,"translate"),l()),i&2&&(o(),v(" ",u(2,1,"campaign-contact-drawer-no-target-campaigns")," "))}function $n(i,r){if(i&1){let n=S();Qt(0),c(1,"label",99),g(2),p(3,"translate"),l(),c(4,"p-select",109),p(5,"translate"),Zt("ngModelChange",function(e){f(n);let a=_();return Xt(a.bulkAddSelectedCampaignId,e)||(a.bulkAddSelectedCampaignId=e),h(e)}),l(),Jt()}if(i&2){let n=_();o(2),v(" ",u(3,5,"crm-contact-campaigns-select-placeholder")," "),o(2),d("options",n.bulkAddCampaigns),Yt("ngModel",n.bulkAddSelectedCampaignId),d("placeholder",u(5,7,"crm-contact-campaigns-select-placeholder"))("filter",!0)}}function jn(i,r){if(i&1){let n=S();c(0,"dui-button",59),x("onClick",function(){f(n);let e=_();return h(e.closeBulkAddToCampaign())}),g(1),p(2,"translate"),l(),c(3,"dui-button",110),x("onClick",function(){f(n);let e=_();return h(e.confirmBulkAddToCampaign())}),g(4),p(5,"translate"),l()}if(i&2){let n=_();o(),v(" ",u(2,3,"cancel")," "),o(2),d("disabled",!n.bulkAddSelectedCampaignId||n.bulkAddSubmitting),o(),v(" ",u(5,5,"campaign-contacts-add-contact-confirm-button")," ")}}var Gt=(()=>{let r=class r{clickOutside(t){let e=t.target;this.settingsSidebarOpen&&!this.settingsSidebar.nativeElement.contains(e)&&!e.closest(".dapta-button")&&!e.closest("dui-button")&&!this.popUpOpen&&this.closeSettingsSidebar()}constructor(t,e,a,s,m,C,y,k,O,V,H,_t,li){this.activatedRoute=t,this.authService=e,this.billingService=a,this.crmService=s,this.campaignsService=m,this.daptaAlertController=C,this.daptaPopUpController=y,this.daptaToastController=k,this.formBuilder=O,this.router=V,this.translate=H,this.iamAuthService=_t,this.importNotifications=li,this.queryParamsSub=new bt,this.columnsTablePrime=[],this.filterSortForm=this.formBuilder.group({sort:["created_at"],sortDirection:["DESC"]}),this.crmContacts=[],this.dynamicFieldDefinitions=[],this.loadingCrmData=!1,this.loadingDynamicFieldDefinitions=!1,this.totalResults=0,this.searchForm=this.formBuilder.group({search:[""]}),this.searchSub=new bt,this.currentPage=1,this.pageSize=10,this.settingsSidebarOpen=!1,this.popUpOpen=!1,this.updatingColumnId=null,this.selectedContacts=[],this.bulkAddCampaignVisible=!1,this.bulkAddCampaigns=[],this.bulkAddCampaignsLoading=!1,this.bulkAddSelectedCampaignId=null,this.bulkAddSubmitting=!1,this.drawerVisible=!1,this.selectedContactForDrawer=null,this.chipOptions=[{value:"all",labelKey:"crm-panel-filter-all"},{value:"in_campaign",labelKey:"crm-panel-filter-in-campaign"},{value:"not_in_campaign",labelKey:"crm-panel-filter-not-in-campaign"},{value:"never_called",labelKey:"crm-panel-filter-never-called"}],this.selectedFilter="all",this.leadStats=null,this.loadingStats=!1,this.permissionsList=Ne,this.importNotificationsSub=new bt}ngOnInit(){this.initialLoad(),this.importNotifications.ensureConnected(),this.importNotificationsSub=this.importNotifications.crmImportCompleted$.subscribe(()=>{this.loadDynamicFieldDefinitions(),this.loadCrmData(this.currentPage,this.searchForm.get("search")?.value||""),this.loadLeadStats()})}ngOnDestroy(){this.searchSub.unsubscribe(),this.importNotificationsSub.unsubscribe()}getDynamicFieldsForRow(t,e=3){if(!t||!this.dynamicFieldDefinitions?.length)return[];let a=[];for(let s of this.dynamicFieldDefinitions){if(a.length>=e)break;let m=t[s.field_name];m==null||m===""||a.push({name:s.field_name,value:m})}return a}formatCampaignNames(t){return this.parseCampaignNames(t).join(", ")}parseCampaignNames(t){if(!t)return[];if(Array.isArray(t))return t.filter(Boolean);if(typeof t=="string"){let e=t.trim();return e.startsWith("{")&&e.endsWith("}
1")?e.slice(1,-1).split(",").map(a=>a.trim().replace(/^"(.*)"$/,"$1")).filter(Boolean):[e]}return[]}initialLoad(){return b(this,null,function*(){try{yield this.loadDynamicFieldDefinitions(),yield this.loadCrmData(),this.loadLeadStats()}catch(t){console.error(t),this.daptaToastController.handleError({message:t?.message})}})}loadDynamicFieldDefinitions(){return b(this,null,function*(){this.loadingDynamicFieldDefinitions=!0;try{let t=yield this.crmService.getDynamicFieldDefinitionsApi();this.dynamicFieldDefinitions=t||[],this.setTableConfig()}catch(t){console.error(t),this.daptaToastController.handleError({message:this.translate.instant("error-getting-dynamic-field-definitions")})}finally{this.loadingDynamicFieldDefinitions=!1}})}setTableConfig(){this.columnsTablePrime=[{field:"contact",header:this.translate.instant("crm-panel-column-contact"),type:"text",sortable:!0,columnTemplateName:"contact",minWidth:"220px"},{field:"campaigns",header:this.translate.instant("crm-panel-column-campaigns"),type:"text",sortable:!1,columnTemplateName:"campaigns",minWidth:"160px"},{field:"last_activity_at",header:this.translate.instant("crm-panel-column-last-activity"),type:"date",sortable:!0,columnTemplateName:"last_activity",minWidth:"140px"},{field:"created_at",header:this.translate.instant("created-at"),type:"date",sortable:!0,minWidth:"160px",customFormatter:t=>this.formatAbsoluteDate(t)},{field:"updated_at",header:this.translate.instant("updated-at"),type:"date",sortable:!0,minWidth:"160px",customFormatter:t=>this.formatAbsoluteDate(t)},{field:"actions",header:this.translate.instant("actions"),type:"text",sortable:!1,columnTemplateName:"actions",minWidth:"140px"}]}loadCrmData(t=1,e=""){return b(this,null,function*(){this.loadingCrmData=!0;try{let a=yield this.crmService.getCrmContactsApi(t,e,this.filterSortForm.get("sort")?.value||"created_at",this.filterSortForm.get("sortDirection")?.value||"DESC",this.pageSize,this.selectedFilter);this.currentPage=t,this.totalResults=a.total||0,this.crmContacts=a.contacts||[]}catch(a){console.error(a),this.daptaToastController.handleError({message:this.translate.instant("error-getting-crm-contacts")})}finally{this.loadingCrmData=!1}})}loadLeadStats(){return b(this,null,function*(){let t=this.iamAuthService.ngxsAuthState?.workspaceId;if(t){this.loadingStats=!0;try{this.leadStats=yield this.crmService.getLeadStats(t)}catch(e){console.error("Failed to load CRM lead stats",e),this.leadStats=null}finally{this.loadingStats=!1}}})}onFilterChipClick(t){this.selectedFilter!==t&&(this.selectedFilter=t,this.currentPage=1,this.selectedContacts=[],this.loadCrmData(1,this.searchForm.get("search")?.value||""))}getChipCount(t){if(!this.leadStats)return null;switch(t){case"all":return this.leadStats.total??0;case"in_campaign":return this.leadStats.in_campaign??0;case"not_in_campaign":return this.leadStats.not_in_campaign??0;case"never_called":return this.leadStats.never_called??0}}getCallDisposition(t){return vt(t.last_call_result)}formatRelativeTime(t){if(!t)return this.translate.instant("crm-panel-time-never");let e=new Date(t);if(Number.isNaN(e.getTime()))return this.translate.instant("crm-panel-time-never");let a=e.getTime()-Date.now(),s=Math.round(a/1e3),m=Math.abs(s),C=this.translate.currentLang||this.translate.getDefaultLang()||"en",y=new Intl.RelativeTimeFormat(C,{numeric:"auto"});if(m<60)return y.format(Math.round(s),"second");let k=Math.round(s/60);if(Math.abs(k)<60)return y.format(k,"minute");let O=Math.round(k/60);if(Math.abs(O)<24)return y.format(O,"hour");let V=Math.round(O/24);if(Math.abs(V)<30)return y.format(V,"day");let H=Math.round(V/30);if(Math.abs(H)<12)return y.format(H,"month");let _t=Math.round(H/12);return y.format(_t,"year")}formatAbsoluteDate(t){if(!t)return this.translate.instant("not-available");let e=new Date(t);if(Number.isNaN(e.getTime()))return this.translate.instant("not-available");let a=this.translate.currentLang||this.translate.getDefaultLang()||"en";return new Intl.DateTimeFormat(a,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",hour12:!0}).format(e)}isRecentActivity(t){if(!t)return!1;let e=new Date(t).getTime();return Number.isNaN(e)?!1:Date.now()-e<1440*60*1e3}formatCallDuration(t){if(t==null||Number.isNaN(t)||t<=0)return"";let e=Math.round(t/1e3),a=Math.floor(e/3600),s=Math.floor(e%3600/60),m=e%60;return a>0?`${a}h ${s}m`:s>0?`${s}m ${m}s`:`${m}s`}loadTable(t){this.pageSize=t.rows??this.pageSize;let e=(t.first||0)/this.pageSize+1,a=t.globalFilter||this.searchForm.get("search")?.value||"";if(t.sortField){let s=Array.isArray(t.sortField)?t.sortField[0]:t.sortField,m=s==="contact"?"phone_number":s,C=(t.sortOrder??-1)>0?"ASC":"DESC";
1m&&this.filterSortForm.patchValue({sort:m,sortDirection:C})}this.loadCrmData(e,a)}onSelectionChange(t){this.selectedContacts=Array.isArray(t)?t:t?[t]:[]}cancelSelection(){this.selectedContacts=[]}bulkRemoveFromCrm(){if(!this.selectedContacts.length)return;let t=this.selectedContacts.length,e=this.selectedContacts.map(s=>s.contact_id),a=this.iamAuthService.ngxsAuthState?.workspaceId;this.daptaAlertController.confirmAction({title:this.translate.instant("crm-bulk-confirm-remove-crm-title"),message:this.translate.instant("crm-bulk-confirm-remove-crm-message",{count:t}),confirmFunction:()=>b(this,null,function*(){this.daptaAlertController.startLoading();try{yield this.crmService.bulkHideContacts(e,a??void 0),this.daptaToastController.handleSuccess({message:this.translate.instant("crm-bulk-success-hidden-crm",{count:t})}),this.selectedContacts=[],yield this.loadCrmData(this.currentPage,this.searchForm.get("search")?.value||""),this.loadLeadStats()}catch(s){console.error(s),this.daptaToastController.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.daptaAlertController.stopLoading()}})})}openBulkAddToCampaign(){return b(this,null,function*(){this.selectedContacts.length&&(this.bulkAddSelectedCampaignId=null,this.bulkAddCampaignVisible=!0,yield this.loadBulkAddCampaigns())})}loadBulkAddCampaigns(){return b(this,null,function*(){this.bulkAddCampaignsLoading=!0;try{let t=yield this.campaignsService.getCampaigns(1,"","name","ASC",100),e=Array.isArray(t?.campaigns)?t.campaigns:Array.isArray(t)?t:[];this.bulkAddCampaigns=e.filter(a=>!!a?.id).map(a=>({id:a.id,name:a.name}))}catch(t){console.error("Failed to load campaigns",t),this.bulkAddCampaigns=[]}finally{this.bulkAddCampaignsLoading=!1}})}closeBulkAddToCampaign(){this.bulkAddCampaignVisible=!1}confirmBulkAddToCampaign(){return b(this,null,function*(){let t=this.bulkAddSelectedCampaignId;if(!t||!this.selectedContacts.length)return;let e=this.bulkAddCampaigns.find(s=>s.id===t)?.name||"",a=this.selectedContacts.map(s=>s.contact_id);this.bulkAddSubmitting=!0;try{let s=yield this.campaignsService.addContactsToCampaign(t,a),m=jt(s,"bulk",e),C=this.translate.instant(m.key,m.params);m.tone==="info"?this.daptaToastController.handleWarning({message:C}):this.daptaToastController.handleSuccess({message:C}),this.bulkAddCampaignVisible=!1,this.cancelSelection(),yield this.loadCrmData(this.currentPage,this.searchForm.get("search")?.value||""),this.loadLeadStats()}catch(s){console.error(s),this.daptaToastController.handleError({message:this.translate.instant("crm-bulk-error-generic")})}finally{this.bulkAddSubmitting=!1}})}downloadCrmAsExcel(){return b(this,null,function*(){try{this.daptaToastController.startLoading({message:this.translate.instant("downloading-crm-contacts")});let t=yield this.crmService.getAllCrmContactsApi();if(t.contacts.length===0){this.daptaToastController.stopLoading(),this.daptaToastController.handleError({message:this.translate.instant("no-crm-contacts-found")});return}let e=t.contacts.map(m=>{let C={phone_number:m.phone_number,name:m.name,call_number:m.call_number},y={created_at:m.created_at,updated_at:m.updated_at},k=this.dynamicFieldDefinitions.filter(O=>O.visibility).reduce((O,V)=>wt(K({},O),{[V.display_name]:m[V.field_name]}),{});return K(K(K({},C),k),y)}),a=new re.Workbook,s=a.addWorksheet(this.translate.instant("crm-contacts"));if(e&&e.length>0){let m=Object.keys(e[0]);s.addRow(m),e.forEach(C=>{let y=m.map(k=>C[k]);s.addRow(y)})}s.columns&&s.columns.length>0&&s.columns.forEach((m,C)=>{m.width=15}),a.xlsx.writeBuffer().then(m=>{let C=new Blob([m],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),y=window.URL.createObjectURL(C),k=document.createElement("a");k.href=y,k.download=`crm_contacts_${new Date().toISOString()}.xlsx`,document.body.appendChild(k),k.click(),document.body.removeChild(k),window.URL.revokeObjectURL(y),this.daptaToastController.stopLoading(),this.daptaToastController.handleSuccess({message:this.translate.instant("crm-contacts-downloaded-successfully")})}).catch(m=>{console.error("Error generating Excel file:",m),this.daptaToastController.stopLoading(),this.daptaToastController.handleError({message:this.translate.instant("failed-to-download-crm-contacts")}
1)})}catch(t){console.error(t),this.daptaToastController.stopLoading(),this.daptaToastController.handleError({message:this.translate.instant("failed-to-download-crm-contacts")})}})}setSearchDebounce(){this.searchSub=this.searchForm.controls.search.valueChanges.pipe(le(500)).subscribe(t=>{this.loadCrmData(1,t||"")})}crmContactDetail(t){t?.contact_id&&(this.selectedContactForDrawer=t,this.drawerVisible=!0)}onDrawerVisibleChange(t){this.drawerVisible=t,t||(this.selectedContactForDrawer=null)}onDrawerContactUpdated(){this.loadCrmData(this.currentPage,this.searchForm.value.search||""),this.loadLeadStats()}onQuickActionDetail(t,e){e.stopPropagation(),this.crmContactDetail(t)}onQuickActionCall(t,e){e.stopPropagation(),this.crmContactDetail(t)}onAddToCampaign(t,e){e&&e.stopPropagation(),this.crmContactDetail(t)}onQuickActionMove(t,e){this.onAddToCampaign(t,e)}newCrmContact(){return b(this,null,function*(){this.popUpOpen=!0,(yield this.daptaPopUpController.openPopUp({component:ht,header:{title:this.translate.instant("new-contact")},styles:{height:"fit-content",width:"500px"}})).popUpClosed().then(e=>{e?.created&&this.crmContacts.unshift(e.crmContact),this.popUpOpen=!1})})}editCrmContact(t,e){return b(this,null,function*(){e.stopPropagation(),this.popUpOpen=!0,(yield this.daptaPopUpController.openPopUp({component:ht,componentProps:{crmContact:t},header:{title:this.translate.instant("edit-contact")},styles:{height:"fit-content",maxWidth:"500px"}})).popUpClosed().then(s=>{if(s?.updated){let m=this.crmContacts.findIndex(C=>C.id===s.crmContact.id);m!==-1&&(this.crmContacts[m]=s.crmContact)}this.popUpOpen=!1})})}updateCrmContactStatus(t,e){e.stopPropagation();let a=t.name||t.phone_number,s=`${this.translate.instant("are-you-sure-you-want-to-delete-this-contact")} ${a}`;this.daptaAlertController.confirmAction({message:s,confirmFunction:()=>b(this,null,function*(){this.daptaAlertController.startLoading();try{yield this.crmService.updateCrmContactApi(t.contact_id,{status:"DELETED"}),this.daptaToastController.handleSuccess({message:this.translate.instant("contact-deleted-successfully")}),this.loadCrmData(this.currentPage,this.searchForm.get("search")?.value||"")}catch{this.daptaToastController.handleError({message:this.translate.instant("error-deleting-contact")})}finally{this.daptaAlertController.stopLoading()}})})}openSettingsSidebar(){this.settingsSidebarOpen=!0}closeSettingsSidebar(){this.settingsSidebarOpen=!1}openAddColumnPopUp(){return b(this,null,function*(){this.popUpOpen=!0,(yield this.daptaPopUpController.openPopUp({component:xt,componentProps:{dynamicFieldDefinitions:this.dynamicFieldDefinitions},header:{title:this.translate.instant("add-property")},styles:{height:"fit-content",width:"500px"}})).popUpClosed().then(e=>{e?.created&&(this.loadDynamicFieldDefinitions(),this.daptaToastController.handleSuccess({message:this.translate.instant("property-added-successfully")})),this.popUpOpen=!1})})}onDragDrop(t){return b(this,null,function*(){let e=this.dynamicFieldDefinitions;if(e)try{ne(e,t.previousIndex,t.currentIndex),this.dynamicFieldDefinitions=e;let a=yield this.crmService.updateDynamicFieldDefinitionPositionApi(e[t.currentIndex].id,{position:t.currentIndex});this.loadDynamicFieldDefinitions()}catch{this.daptaToastController.handleError({message:this.translate.instant("error-updating-property-position")}),ne(e,t.currentIndex,t.previousIndex),this.dynamicFieldDefinitions=e}})}editColumn(t,e){return b(this,null,function*(){e.stopPropagation(),this.popUpOpen=!0,(yield this.daptaPopUpController.openPopUp({component:xt,componentProps:{column:t,dynamicFieldDefinitions:this.dynamicFieldDefinitions},header:{title:this.translate.instant("edit-property")},styles:{height:"fit-content",width:"500px"}})).popUpClosed().then(s=>{s?.updated&&(this.loadDynamicFieldDefinitions(),this.daptaToastController.handleSuccess({message:this.translate.instant("property-updated-successfully")})),this.popUpOpen=!1})})}deleteColumn(t,e){e.stopPropagation(),this.popUpOpen=!0,this.daptaAlertController.confirmAction({message:this.translate.instant("are-you-sure-you-want-to-delete-this-property"),confirmFunction:()=>b(this,null,function*(){this.daptaAlertController.startLoading();try{yield this.crmService.deleteDynamicFieldDefinitionApi(t.id),this.daptaToastController.handleSuccess({message:this.translate.instant("property-deleted-successfully")}),this.loadDynamicFieldDefinitions()}catch{this.daptaToastController.handleError({message:this.translate.instant("error-deleting-property")})}finally{this.daptaAlertController.stopLoading(),this.popUpOpen=!1}}),cancelFunction:()=>{setTimeout(()=>{this.popUpOpen=!1},1e3)}})}updateColumnVisibility(t,e){return b(this,null,function*(){e.stopPropagation();
1try{this.updatingColumnId=t.id;let a=t.visibility??!1;yield this.crmService.updateDynamicFieldDefinitionApi(t.id,{visibility:!a}),yield this.loadDynamicFieldDefinitions()}catch{this.daptaToastController.handleError({message:this.translate.instant("error-updating-property-visibility")})}finally{this.updatingColumnId=null}})}clearSearch(){this.searchForm.patchValue({search:""}),this.loadCrmData(1,"")}importContactsFromCsv(t){return b(this,null,function*(){let e=t.target.files?.[0];if(e){t.target.value="",this.daptaToastController.startLoading({message:this.translate.instant("reading-file")});try{let a=yield this.extractFileHeaders(e);this.daptaToastController.stopLoading(),yield this.daptaPopUpController.openPopUp({component:Ht,header:{title:this.translate.instant("import-contacts")},componentProps:{file:e,columns:a},styles:{maxHeight:"80vh",maxWidth:"560px",width:"100%"}})}catch(a){this.daptaToastController.stopLoading(),this.daptaToastController.handleError({message:a?.message||this.translate.instant("error-processing-csv-file")})}}})}extractFileHeaders(t){let e=/\.csv$/i.test(t.name);return new Promise((a,s)=>{let m=new FileReader;m.onerror=()=>s(new Error(this.translate.instant("error-processing-csv-file"))),m.onload=()=>b(this,null,function*(){try{if(e){let y=new TextDecoder("utf-8").decode(m.result).split(/\r?\n/).find(V=>V.trim().length>0)||"",k=this.detectCsvDelimiter(y),O=this.splitCsvLine(y,k);if(!O.length)throw new Error(this.translate.instant("error-processing-csv-file"));a(O)}else{let C=new re.Workbook;try{yield C.xlsx.load(m.result)}catch{throw new Error(this.translate.instant("error-processing-csv-file"))}let y=C.getWorksheet(1);if(!y)throw new Error(this.translate.instant("no-worksheet-found-in-the-file"));let k=[];y.getRow(1).eachCell((O,V)=>{k[V-1]=O.value?.toString()||`${this.translate.instant("column")} ${V}`}),a(k.filter(O=>O!=null))}}catch(C){s(C)}}),m.readAsArrayBuffer(t)})}detectCsvDelimiter(t){let e=[",",";"," ","|"],a=",",s=0;for(let m of e){let C=t.split(m).length-1;C>s&&(s=C,a=m)}return a}splitCsvLine(t,e){let a=[],s="",m=!1;for(let C=0;C<t.length;C++){let y=t[C];y==='"'?m&&t[C+1]==='"'?(s+='"',C++):m=!m:y===e&&!m?(a.push(s.trim()),s=""):s+=y}return a.push(s.trim()),a.filter(C=>C.length>0)}};r.\u0275fac=function(e){return new(e||r)(I(ge),I(ve),I(He),I(W),I($t),I(ct),I(Q),I(j),I(zt),I(Vt),I(U),I(Ce),I(Ye))},r.\u0275cmp=z({type:r,selectors:[["app-crm-panel"]],viewQuery:function(e,a){if(e&1&&(gt(mn,5),gt(_n,5)),e&2){let s;Ct(s=ft())&&(a.tablePrime=s.first),Ct(s=ft())&&(a.settingsSidebar=s.first)}},hostBindings:function(e,a){e&1&&x("click",function(m){return a.clickOutside(m)},ce)},decls:60,vars:63,consts:[["input",""],["tablePrime",""],["settingsSidebar",""],["fileInput",""],["noCampaigns",""],[1,"crm-panel"],[1,"text--title"],[1,"flex","flex-column","sm:flex-row","justify-content-start","sm:justify-content-between","margin-top--16","w-full","gap--8"],[1,"flex","flex-row","gap-2","w-full","search-form",3,"formGroup"],[1,"flex","align-items-center","relative","w-full"],["inputClass","filter-input","formControlName","search",1,"w-full",3,"enter","placeholder"],["leftContent","",1,"pi","pi-search","common-icon--sm",2,"margin-left","8px"],["rightContent","","variant","text","styleClass","dapta-button--white dapta-button--icon-only clear-button",3,"onClick",4,"ngIf"],[1,"flex","flex-row","gap-2"],["tooltipPosition","left","variant","outlined","styleClass","dapta-button--icon-only",3,"pTooltip","showDelay","onClick",4,"appHasPermission"],["tooltipPosition","left","variant","outlined","styleClass","dapta-button--icon-only",3,"onClick","pTooltip","showDelay"],["iconName","download","iconClass","dapta-button__icon"],["iconName","autorenew","iconClass","dapta-button__icon"],[1,"crm-panel-chips","flex","flex-row","flex-wrap","gap-2","mt-3"],["type","button","class","crm-panel-chip",3,"crm-panel-chip--active","crm-panel-chip--all","click",4,"ngFor","ngForOf"],["class","crm-panel__action-bar flex flex-row align-items-center gap-3 mt-3",4,"ngIf"],[1,"flex","flex-column","w-full","overflow-x-auto","crm-panel__table-container"],["selectionMode","multiple","dataKey","contact_id",3,"selectionChange","lazyLoad","rowClicked","columns","data","rows","totalRecords","lazy","paginator","showCaption","loading","selection"],["daptaPrimeCellTemplate","contact"],["daptaPrimeCellTemplate","campaigns"],["daptaPrimeCellTemplate","last_activity"],["daptaPrimeCellTemplate","actions"],[1,"crm-panel__settings","flex","flex-column",3,"ngClass"],[1,"crm-panel__settings-header","flex","flex-row","justify-content-between","align-items-center","hide-on-collapse"],[1,"text--title","mb-2"],["variant","text","styleClass","dapta-button--w
1hite dapta-button--icon-only",3,"onClick"],["iconName","close","iconClass","dapta-button__icon"],[1,"text--body","mb-2","hide-on-collapse"],[1,"crm-panel__settings-body","flex-1","flex","flex-column","gap--8","overflow-y-auto","hide-on-collapse"],["cdkDropList","",1,"crm-panel__settings-columns","flex","flex-column","gap--8",3,"cdkDropListDropped"],["class","flex flex-row gap--8 align-items-center dynamic-field-definition","cdkDrag","",4,"ngFor","ngForOf"],["variant","text","styleClass","add-column-button w-min mt-3 flex align-items-center flex-shrink-0 hide-on-collapse",3,"onClick"],["iconName","add","iconClass","dapta-button__icon"],[1,"text-nowrap"],[3,"visibleChange","contactUpdated","contact","visible","dynamicFieldDefinitions"],[3,"visibleChange","onHide","header","visible","modal","draggable","resizable","dismissableMask"],[1,"flex","flex-column","gap-2"],[1,"crm-panel__action-bar-count"],["class","flex justify-content-center py-3",4,"ngIf"],[4,"ngIf"],["pTemplate","footer"],["rightContent","","variant","text","styleClass","dapta-button--white dapta-button--icon-only clear-button",3,"onClick"],["iconName","cancel","iconClass","dapta-button__icon",3,"size"],["iconName","upload","iconClass","dapta-button__icon"],["type","file","accept",".csv, .xlsx",2,"display","none",3,"change"],["iconName","settings","iconClass","dapta-button__icon"],["type","button",1,"crm-panel-chip",3,"click"],[1,"crm-panel-chip__label"],["class","crm-panel-chip__count",4,"ngIf"],[1,"crm-panel-chip__count"],[1,"crm-panel__action-bar","flex","flex-row","align-items-center","gap-3","mt-3"],[1,"flex","flex-row","gap-2","ml-auto"],["variant","outlined",3,"onClick",4,"appHasPermission"],["variant","regular","buttonColor","danger",3,"onClick",4,"appHasPermission"],["variant","text",3,"onClick"],["variant","outlined",3,"onClick"],["iconName","campaign","iconClass","dapta-button__icon"],["variant","regular","buttonColor","danger",3,"onClick"],["iconName","delete","iconClass","dapta-button__icon"],[1,"crm-panel__contact-cell"],[1,"crm-panel__contact-name"],["class","crm-panel__contact-phone",4,"ngIf"],[1,"crm-panel__contact-phone"],[4,"ngIf","ngIfElse"],[1,"flex","flex-row","align-items-center","gap-1","flex-wrap"],["class","crm-panel__campaign-badge","tooltipPosition","top",3,"pTooltip",4,"ngIf"],["class","crm-panel__campaign-badge crm-panel__campaign-badge--text","tooltipPosition","top",3,"pTooltip",4,"ngIf"],["tooltipPosition","top",1,"crm-panel__campaign-badge",3,"pTooltip"],[1,"crm-panel__campaign-badge-dot"],["tooltipPosition","top",1,"crm-panel__campaign-badge","crm-panel__campaign-badge--text",3,"pTooltip"],[1,"flex","flex-row","align-items-center","gap-2","crm-panel__no-campaign"],["variant","text","styleClass","crm-panel__add-campaign-btn",3,"onClick",4,"appHasPermission"],["variant","text","styleClass","crm-panel__add-campaign-btn",3,"onClick"],["iconName","add",3,"size"],[1,"flex","align-items-center","gap-1","crm-panel__last-activity"],["iconName","bolt","class","crm-panel__last-activity-bolt",3,"size",4,"ngIf"],["iconName","bolt",1,"crm-panel__last-activity-bolt",3,"size"],[1,"display--flex","gap--8","align-items-center","crm-panel__row-actions",3,"click"],["variant","text","styleClass","dapta-button--white dapta-button--icon-only crm-panel__quick-action","tooltipPosition","top",3,"onClick","pTooltip"],["iconName","phone",3,"size"],["variant","text","styleClass","dapta-button--white dapta-button--icon-only crm-panel__quick-action","tooltipPosition","top",3,"pTooltip","onClick",4,"appHasPermission"],["iconName","visibility",3,"size"],["class","display--flex gap--8",4,"appHasPermission"],["iconName","swap_horiz",3,"size"],[1,"display--flex","gap--8"],["daptaTooltip","",1,"bx","bx-dots-vertical-rounded","common-icon--md","pointer",3,"openOnClick"],["moveToLeft","-44px","moveToBottom","20px",3,"showOrigin"],[1,"options"],[1,"options__item",3,"click"],[1,"bx","bx-pencil"],[1,"bx","bx-trash"],["cdkDrag","",1,"flex","flex-row","gap--8","align-items-center","dynamic-field-definition"],[1,"flex","flex-row","gap--8","align-items-center"],["cdkDragHandle","",1,"drag-handle",3,"iconName"],[1,"text--label"],["variant","text","styleClass","dapta-button--w
1hite dapta-button--icon-only column-option-button",3,"onClick","disabled"],["class","more-vert-icon",3,"iconName","size",4,"ngIf"],[3,"size",4,"ngIf"],["daptaTooltip","",1,"flex","flex-row","gap--8","align-items-center",3,"openOnClick"],[1,"more-vert-icon",3,"iconName"],["moveToLeft","-80px","moveToBottom","100px",3,"showOrigin"],[1,"more-vert-icon",3,"iconName","size"],[3,"size"],[1,"flex","justify-content-center","py-3"],["optionLabel","name","optionValue","id","filterBy","name","appendTo","body","styleClass","w-full",3,"ngModelChange","options","ngModel","placeholder","filter"],["variant","regular",3,"onClick","disabled"]],template:function(e,a){if(e&1){let s=S();c(0,"section",5)(1,"h1",6),g(2,"CRM"),l(),c(3,"div",7)(4,"form",8)(5,"div",9)(6,"dapta-input",10,0),p(8,"translate"),x("enter",function(){f(s);let C=Z(7);return h(a.loadCrmData(1,C.value))}),w(9,"div",11),T(10,Cn,2,1,"dui-button",12),l()()(),c(11,"div",13),T(12,fn,5,4,"dui-button",14),c(13,"dui-button",15),p(14,"translate"),x("onClick",function(){return f(s),h(a.downloadCrmAsExcel())}),w(15,"dapta-material-icon",16),l(),c(16,"dui-button",15),p(17,"translate"),x("onClick",function(){return f(s),a.loadCrmData(a.currentPage,a.searchForm.value.search||""),h(a.loadLeadStats())}),w(18,"dapta-material-icon",17),l(),T(19,hn,3,4,"dui-button",14),l()(),c(20,"div",18),T(21,vn,5,8,"button",19),l(),T(22,yn,11,11,"div",20),c(23,"div",21)(24,"app-dapta-table-prime",22,1),x("selectionChange",function(C){return f(s),h(a.onSelectionChange(C))})("lazyLoad",function(C){return f(s),h(a.loadTable(C))})("rowClicked",function(C){return f(s),h(a.crmContactDetail(C.data))}),T(26,Mn,5,4,"ng-template",23)(27,In,3,2,"ng-template",24)(28,Fn,4,2,"ng-template",25)(29,An,9,10,"ng-template",26),l()()(),c(30,"div",27,2)(32,"div",28)(33,"h2",29),g(34),p(35,"translate"),l(),c(36,"dui-button",30),x("onClick",function(){return f(s),h(a.closeSettingsSidebar())}),w(37,"dapta-material-icon",31),l()(),c(38,"p",32),g(39),p(40,"translate"),l(),c(41,"div",33)(42,"div",34),x("cdkDropListDropped",function(C){return f(s),h(a.onDragDrop(C))}),T(43,Ln,21,14,"div",35),l()(),c(44,"dui-button",36),x("onClick",function(){return f(s),h(a.openAddColumnPopUp())}),w(45,"dapta-material-icon",37),c(46,"div",38),g(47),p(48,"translate"),l()()(),c(49,"app-crm-contact-drawer",39),x("visibleChange",function(C){return f(s),h(a.onDrawerVisibleChange(C))})("contactUpdated",function(){return f(s),h(a.onDrawerContactUpdated())}),l(),c(50,"p-dialog",40),p(51,"translate"),Zt("visibleChange",function(C){return f(s),Xt(a.bulkAddCampaignVisible,C)||(a.bulkAddCampaignVisible=C),h(C)}),x("onHide",function(){return f(s),h(a.closeBulkAddToCampaign())}),c(52,"div",41)(53,"span",42),g(54),p(55,"translate"),l(),T(56,Un,2,1,"div",43)(57,Rn,3,3,"div",44)(58,$n,6,9,"ng-container",44),l(),T(59,jn,6,7,"ng-template",45),l()}if(e&2){let s=Z(7);o(4),d("formGroup",a.searchForm),o(2),d("placeholder",me(u(8,41,"contact-search"))),o(4),d("ngIf",s.value),o(2),d("appHasPermission",a.permissionsList.CRM.WRITE),o(),d("pTooltip",u(14,43,"download-as-excel"))("showDelay",1e3),o(3),d("pTooltip",u(17,45,"refresh"))("showDelay",1e3),o(3),d("appHasPermission",a.permissionsList.CRM.WRITE),o(2),d("ngForOf",a.chipOptions),o(),d("ngIf",a.selectedContacts.length>0),o(2),d("columns",a.columnsTablePrime)("data",a.crmContacts)("rows",a.pageSize)("totalRecords",a.totalResults)("lazy",!0)("paginator",!0)("showCaption",!1)("loading",a.loadingCrmData||a.loadingDynamicFieldDefinitions)("selection",a.selectedContacts),o(6),d("ngClass",it(58,un,a.settingsSidebarOpen)),o(4),D(u(35,47,"customize-properties")),o(5),D(u(40,49,"drag-to-reorder")),o(4),d("ngForOf",a.dynamicFieldDefinitions),o(4),D(u(48,51,"add-property")),o(2),d("contact",a.selectedContactForDrawer)("visible",a.drawerVisible)("dynamicFieldDefinitions",a.dynamicFieldDefinitions),o(),Tt(Ot(60,gn)),d("header",u(51,53,"crm-bulk-add-to-campaign-title")),Yt("visible",a.bulkAddCampaignVisible),d("modal",!0)("draggable",!1)("resizable",!1)("dismissableMask",!0),o(4),v(" ",B(55,55,"crm-bulk-contacts-selected",it(61,qt,a.selectedContacts.length))," "),o(2),d("ngIf",a.bulkAddCampaignsLoading),o(),d("ngIf",!a.bulkAddCampaignsLoading&&a.bulkAddCampaigns.length===0),o(),d("ngIf",!a.bulkAddCampaignsLoading&&a.bulkAddCampaigns.length>0)}}
1,dependencies:[N,_e,Et,ue,$,ot,q,at,Bt,G,rt,lt,Lt,J,Y,st,dt,fe,Ue,Le,pt,Ut,We,je,Fe,Ee,ti,Ze,Xe,Ae,A,L,Ve,oi,R],styles:[".crm-panel[_ngcontent-%COMP%]{height:100%;overflow:auto;padding:var(--page-padding);padding-bottom:0!important;position:relative}.crm-panel[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%]{max-width:350px}.crm-panel__create-crm[_ngcontent-%COMP%]{width:100%;height:100%;margin-top:24px}@media(min-width:800px){.crm-panel__create-crm[_ngcontent-%COMP%]{text-align:center}}.crm-panel__create-crm[_ngcontent-%COMP%] .dapta-button[_ngcontent-%COMP%]{width:100%;max-width:176px;margin-top:8px;font-size:var(--font-size-body)}.crm-panel__create-crm-text[_ngcontent-%COMP%]{font-family:var(--input-font-family);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-body);letter-spacing:0em;text-align:left}.crm-panel__settings[_ngcontent-%COMP%]{position:absolute;top:0;right:0;width:100%;max-width:0;padding:0;height:100%;overflow:hidden;background-color:var(--space-500);z-index:10;transition:max-width .2s ease-in-out,padding .2s ease-in-out}.crm-panel__settings[_ngcontent-%COMP%] .hide-on-collapse[_ngcontent-%COMP%]{opacity:0;transition:opacity .2s ease-in-out}.crm-panel__settings--open[_ngcontent-%COMP%]{max-width:500px;padding:24px}.crm-panel__settings--open[_ngcontent-%COMP%] .hide-on-collapse[_ngcontent-%COMP%]{opacity:1}.crm-panel__settings-body[_ngcontent-%COMP%]{min-height:0}.clear-button[_ngcontent-%COMP%]{padding:0;width:18px!important;height:18px!important;margin-right:8px}.dapta-button--icon-only[_ngcontent-%COMP%]{width:40px;height:40px}[_nghost-%COMP%] .add-column-button{padding:0}[_nghost-%COMP%] .add-column-button:hover{color:var(--primary-500)!important}.add-column-shortcut-button[_ngcontent-%COMP%]{padding:0;width:18px!important;height:18px!important;margin-left:16px}.column-option-button[_ngcontent-%COMP%]{width:18px!important;height:18px!important;padding:0}.dynamic-field-definition[_ngcontent-%COMP%]{padding:4px 8px;border-radius:6px;background:var(--space-400);display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:4px}.dynamic-field-definition__icon-name[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.dynamic-field-definition__icon-name[_ngcontent-%COMP%] .drag-handle[_ngcontent-%COMP%]{color:var(space-100)!important;margin-right:8px}.dynamic-field-definition__icon-name[_ngcontent-%COMP%] .drag-handle[_ngcontent-%COMP%]:hover{color:var(--contrast-100)}.dynamic-field-definition__actions[_ngcontent-%COMP%]{display:flex;align-items:center}.dynamic-field-definition__actions-button[_ngcontent-%COMP%] {padding:4px;min-width:28px;width:unset!important}.drag-handle[_ngcontent-%COMP%]{cursor:move}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:6px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%], .cdk-drop-list-dragging[_ngcontent-%COMP%] .cdk-drag-placeholder[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}[_nghost-%COMP%] .filter-input{height:40px!important}[_nghost-%COMP%] .crm-panel__table{margin-top:16px;border:none;border-radius:0;border-collapse:collapse;height:min-content}[_nghost-%COMP%] .crm-panel__table tr{border:none}[_nghost-%COMP%] .crm-panel__table tbody tr{border-bottom:1px solid var(--space-200)}[_nghost-%COMP%] .crm-panel__table tbody tr:hover{background-color:var(--space-400)}[_nghost-%COMP%] .crm-panel__table th, [_nghost-%COMP%] .crm-panel__table td{border:none;font-weight:400;font-size:16px;padding:8px;max-height:40px}[_nghost-%COMP%] .crm-panel__table th{background-color:transparent;font-weight:700}[_nghost-%COMP%] .crm-panel__table .tableHead{background-color:var(--space-400)}[_nghost-%COMP%] .crm-panel__table .skeleton{width:30%;height:auto}[_nghost-%COMP%] .crm-panel__table .row-pointer{cursor:pointer}@media screen and (max-width:800px){[_nghost-%COMP%] .crm-panel__table{width:100%;display:block}}[_nghost-%COMP%] .crm-panel__table .created_at, [_nghost-%COMP%] .crm-panel__table .description{dis
1play:none}@media screen and (min-width:960px){[_nghost-%COMP%] .crm-panel__table .created_at, [_nghost-%COMP%] .crm-panel__table .description{display:table-cell}}[_nghost-%COMP%] .crm-panel__table .clickable{cursor:pointer}[_nghost-%COMP%] .crm-panel__table .clickable:hover{color:var(--primary-500)}.options__item[_ngcontent-%COMP%]{padding:8px 12px;text-align:start}.options__item[_ngcontent-%COMP%]:hover{background-color:var(--space-300)}.crm-panel__table-container[_ngcontent-%COMP%]{padding-bottom:16px;position:relative;padding-top:8px}.crm-panel__action-bar[_ngcontent-%COMP%]{background-color:var(--space-400);border:1px solid var(--space-300);border-radius:8px;padding:8px 12px}.crm-panel__action-bar-count[_ngcontent-%COMP%]{font-weight:var(--font-weight-medium, 500)}.crm-panel-chips[_ngcontent-%COMP%]{align-items:center}.crm-panel-chip[_ngcontent-%COMP%]{border:1px solid var(--space-300);background-color:var(--space-500);color:var(--contrast-100);border-radius:999px;padding:4px 12px;font-size:var(--font-size-body);font-family:var(--input-font-family);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.crm-panel-chip[_ngcontent-%COMP%]:hover{background-color:var(--space-400)}.crm-panel-chip--active[_ngcontent-%COMP%]{background-color:var(--primary-500);border-color:var(--primary-500);color:var(--space-600);font-weight:600}.crm-panel-chip--active[_ngcontent-%COMP%]:hover{background-color:var(--primary-500)}.crm-panel-chip__count[_ngcontent-%COMP%]{opacity:.7}.crm-panel-chip__icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center}.crm-panel__contact-cell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}
1.crm-panel__contact-name[_ngcontent-%COMP%]{font-weight:var(--font-weight-medium, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crm-panel__contact-phone[_ngcontent-%COMP%]{color:var(--space-100);font-size:.85em}[_nghost-%COMP%] .p-datatable .p-datatable-tbody>tr>td{padding-top:.35rem;padding-bottom:.35rem}.crm-panel__custom[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0;max-width:100%}.crm-panel__custom-item[_ngcontent-%COMP%]{display:inline-flex;gap:4px;font-size:.78rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crm-panel__custom-key[_ngcontent-%COMP%]{color:var(--space-100);text-transform:capitalize;flex-shrink:0}.crm-panel__custom-value[_ngcontent-%COMP%]{color:var(--space-50);overflow:hidden;text-overflow:ellipsis}.crm-panel__custom-empty[_ngcontent-%COMP%]{color:var(--space-200)}.crm-panel__campaign-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;background-color:#22c55e2e;color:#86efac;font-size:.85em;font-weight:var(--font-weight-medium, 500);white-space:nowrap}html:not(.app-dark)[_nghost-%COMP%] .crm-panel__campaign-badge[_ngcontent-%COMP%], html:not(.app-dark) [_nghost-%COMP%] .crm-panel__campaign-badge[_ngcontent-%COMP%]{color:color-mix(in srgb,#86efac 62%,black)}.crm-panel__campaign-badge-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;background-color:#22c55e}.crm-panel__campaign-badge--text[_ngcontent-%COMP%]{background-color:#3b82f62e;color:#93c5fd}.crm-panel__campaign-badge--text[_ngcontent-%COMP%] .crm-panel__campaign-badge-dot[_ngcontent-%COMP%]{background-color:#3b82f6}.crm-panel__no-campaign[_ngcontent-%COMP%]{color:var(--space-100);font-size:.9em}.crm-panel__no-campaign-label[_ngcontent-%COMP%]{white-space:nowrap}[_nghost-%COMP%] .crm-panel__add-campaign-btn{padding:0 6px!important;font-size:.8em!important;height:auto!important}.crm-panel__last-activity[_ngcontent-%COMP%]{white-space:nowrap}.crm-panel__last-activity-bolt[_ngcontent-%COMP%]{color:#eab308}.crm-panel__last-call[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.crm-panel__last-call-label[_ngcontent-%COMP%]{white-space:nowrap}.crm-panel__last-call-duration[_ngcontent-%COMP%]{color:var(--space-100);font-size:.85em}.crm-panel__last-call-campaign[_ngcontent-%COMP%]{color:var(--space-100);font-size:.8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crm-panel__last-call-icon--success[_ngcontent-%COMP%]{color:#22c55e}.crm-panel__last-call-icon--info[_ngcontent-%COMP%]{color:#3b82f6}.crm-panel__last-call-icon--warn[_ngcontent-%COMP%]{color:#eab308}.crm-panel__last-call-icon--danger[_ngcontent-%COMP%]{color:#ef4444}.crm-panel__last-call-icon--secondary[_ngcontent-%COMP%], .crm-panel__last-call-empty[_ngcontent-%COMP%]{color:var(--space-100)}.crm-panel__row-actions[_ngcontent-%COMP%]{flex-wrap:nowrap}[_nghost-%COMP%] .crm-panel__quick-action{width:28px!important;height:28px!important;padding:0!important}@media(max-width:576px){.crm-panel[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%]{max-width:unset}}"]});let i=r;return i})();var Wn=[{path:"",component:Gt}],ri=(()=>{let r=class r{};r.\u0275fac=function(e){return new(e||r)},r.\u0275mod=Mt({type:r}),r.\u0275inj=yt({imports:[te.forChild(Wn),te]});let i=r;return i})();var Mr=(()=>{let r=class r{};r.\u0275fac=function(e){return new(e||r)},r.\u0275mod=Mt({type:r}),r.\u0275inj=yt({imports:[N,ri,Ke,ee,$,G,J,ie,ee,pt,$e,ke,Te,ei,ie,Be,Y,De,Nt,ze,A,Gt,ht,xt,Ht]});let i=r;return i})();export{Mr as CrmModule};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.