import{bD as t,r as e,c as s,o as a,d as i,w as r,F as o,a as c,L as n,O as l,P as d,Q as h,as as _,b as u}from"./vendor.js?ver=3.1.0";import{R as p,S as m}from"./fc-bits.js?ver=3.1.0";import{L as f,at as y,i as g,e as v,aG as b,az as q,k as C}from"./vendor-element-plus.js?ver=3.1.0";import{F}from"./Filterer.js?ver=3.1.0";import{_ as w,I as S}from"./fc-bits-ui.js?ver=3.1.0";const k="contacts_filters";function $(t){var e,s;try{return JSON.stringify({query:t.query_data||{},advanced:t.advanced_filters||[[]],type:t.filter_type||"simple",page:(null==(e=t.pagination)?void 0:e.current_page)||1,per_page:(null==(s=t.pagination)?void 0:s.per_page)||10})}catch(a){return""}}const I=t("contacts",{state:()=>({subscribers:[],pagination:{current_page:1,per_page:10,total:0},query_data:{tags:[],lists:[],search:"",statuses:[],sms_statuses:[],sort_by:"id",sort_type:"DESC",custom_fields:!1,has_commerce:!1},advanced_filters:[[]],filter_type:"simple",loading:!1,first_loading:!0,cache_metadata:{last_fetch_time:null,cache_key_hash:null,is_stale:!1},options:{tags:[],lists:[],statuses:[],sms_statuses:[],contact_types:[],custom_fields:[],sampleCsv:null}}),getters:{isCacheValid(t){if(!t.cache_metadata.last_fetch_time||t.cache_metadata.is_stale)return!1;return Date.now()-t.cache_metadata.last_fetch_time<3e5},filterHash:t=>$({query_data:t.query_data,advanced_filters:t.advanced_filters,filter_type:t.filter_type,pagination:t.pagination}),hasCachedDataForCurrentFilters(t){if(!t.cache_metadata.cache_key_hash)return!1;const e=$({query_data:t.query_data,advanced_filters:t.advanced_filters,filter_type:t.filter_type,pagination:t.pagination});return t.cache_metadata.cache_key_hash===e},shouldShowCache(){return this.isCacheValid&&this.hasCachedDataForCurrentFilters&&this.subscribers.length>0}},actions:{async fetchContacts(t=!1,e=!1){var s,a;if(t||!this.shouldShowCache){e||(this.loading=!0);try{let t={per_page:this.pagination.per_page,page:this.pagination.current_page,filter_type:this.filter_type,custom_fields:this.query_data.custom_fields,has_commerce:this.query_data.has_commerce,sort_by:this.query_data.sort_by,sort_type:this.query_data.sort_type};const i=!!(null==(a=null==(s=window.fcAdmin)?void 0:s.addons)?void 0:a.fluentcampaign);i||(t.filter_type="simple"),"advanced"===this.filter_type&&i?t.advanced_filters=JSON.stringify(this.advanced_filters):t={...this.query_data,...t};const r=await p.get("subscribers",t);this.subscribers=r.subscribers.data,this.pagination.total=r.subscribers.total,this.cache_metadata.last_fetch_time=Date.now(),this.cache_metadata.cache_key_hash=this.filterHash,this.cache_metadata.is_stale=!1,this.persistFilters(),console.log("[ContactsStore] Fetched contacts from API"+(e?" (background)":""),{count:this.subscribers.length,total:this.pagination.total})}catch(i){throw console.error("[ContactsStore] Failed to fetch contacts",i),i}finally{e||(this.loading=!1),this.first_loading=!1}}else console.log("[ContactsStore] Using cached data")},restoreFilters(){var t,e;try{const s=m.get(k,null);return!!s&&(this.query_data=s.query_data||this.query_data,this.advanced_filters=s.advanced_filters||[[]],this.filter_type=s.filter_type||"simple",s.pagination&&(this.pagination.current_page=s.pagination.current_page||1,this.pagination.per_page=s.pagination.per_page||10),console.log("[ContactsStore] Filters restored from localStorage",{filter_type:this.filter_type,has_filters:(null==(t=this.query_data.tags)?void 0:t.length)>0||(null==(e=this.query_data.lists)?void 0:e.length)>0||this.query_data.search}),!0)}catch(s){return console.error("[ContactsStore] Failed to restore filters",s),!1}},persistFilters(){try{const t={query_data:this.query_data,advanced_filters:this.advanced_filters,filter_type:this.filter_type,pagination:{current_page:this.pagination.current_page,per_page:this.pagination.per_page}};m.set(k,t),console.log("[ContactsStore] Filters persisted to localStorage")}catch(t){console.error("[ContactsStore] Failed to persist filters",t)}},invalidateCache(){this.cache_metadata.is_stale=!0,this.cache_metadata.last_fetch_time=null,this.cache_metadata.cache_key_hash=null,console.log("[ContactsStore] In-memory cache invalidated")},updatePagination(t,e,s=!1){void 0!==t&&(this.pagination.current_page=t),void 0!==e&&(this.pagination.per_page=e),s||this.persistFilters()},updateQueryData(t){this.query_data={...this.query_data,...t},this.persistFilters()},updateAdvancedFilters(t){this.advanced_filters=t,this.persistFilters()},setFilterType(t){this.filter_type=t,this.persistFilters()},setOptions(t){this.options={...this.options,...t}},initializeFromUrlParams(t){var e,s;const a=t=>t?Array.isArray(t)?t:[t]:[],i=a(t.tags).map(t=>parseInt(t)),r=a(t.lists).map(t=>parseInt(t)),o=a(t.statuses),c=a(t.sms_statuses);this.query_data={tags:i,lists:r,search:t.search||"",statuses:o,sms_statuses:c,sort_by:t.sort_by||"id",sort_type:t.sort_type||"DESC",custom_fields:"true"===t.custom_fields||!0===t.custom_fields,has_commerce:"true"===t.has_commerce||!0===t.has_commerce},t.page&&(this.pagination.current_page=parseInt(t.page));const n=!!(null==(s=null==(e=window.fcAdmin)?void 0:e.addons)?void 0:s.fluentcampaign);if("advanced"===t.filter_type&&n){if(this.filter_type="advanced",t.advanced_filters&&"[object Object]"!==t.advanced_filters)try{"string"==typeof t.advanced_filters?this.advanced_filters=JSON.parse(t.advanced_filters):this.advanced_filters=t.advanced_filters}catch(l){console.error("[ContactsStore] Failed to parse advanced_filters",l),this.advanced_filters=[[]]}}else this.filter_type="simple"},clearFilters(){this.advanced_filters=[[]],this.query_data={tags:[],lists:[],search:"",statuses:[],sms_statuses:[],sort_by:"id",sort_type:"DESC",custom_fields:!1,has_commerce:!1},this.persistFilters()},async fetchProfile(t){try{return await p.get(`subscribers/${t}`,{with:["stats","custom_fields","subscriber.custom_values"]})}catch(e){throw console.error("[ContactsStore] Failed to fetch profile",e),e}}}}),D={name:"Editor",components:{Filterer:F,ArrowDown:y,Plus:f,Icons:S},emits:["search","subscribe","addedNew"],props:{type:{required:!0},options:{required:!0,type:Array},noMatch:{required:!0,type:Boolean},matched:{required:!0},selectionCount:{required:!0,type:Number},placement:{default:"bottom-start"},creatable:{default:!1}},watch:{matched(){this.init()}},data:()=>({query:null,selection:[],checkList:[],creating:!1}),methods:{init(){this.selection=[];for(const t in this.matched)this.selection.includes(t)||this.selection.push(t)},search(){this.$emit("search",this.query&&this.query.toLowerCase())},isIndeterminate(t){return this.matched[t.slug]&&this.matched[t.slug]!==this.selectionCount},save(t){const e=Object.keys(this.matched),s=t.filter(t=>!e.includes(t)),a=e.filter(e=>!t.includes(e));this.$emit("subscribe",{attach:s,detach:a})},createNewItem(){this.creating=!0,this.$post(this.type,{title:this.query}).then(t=>{this.$notify.success(t.message);const e=t.item;e.status=!0,this.$emit("addedNew",e),this.$nextTick(()=>{this.search()})}).catch(t=>{this.handleError(t)}).finally(()=>{this.creating=!1})}},mounted(){this.init()}},N={class:"fcrm_filter_editor"},A={class:"fc_no_match_search_tagger"};const j=w(D,[["render",function(t,p,m,f,y,F){const w=e("icons"),S=C,k=v,$=g,I=q,D=b,j=e("filterer");return a(),s("div",N,[i(j,{placement:m.placement},{header:r(()=>[i(S,{plain:"",size:"small"},{default:r(()=>[i(w,{iconName:"Plus"})],void 0,!0),_:1})]),items:r(()=>[i($,{class:"fluentcrm-filter-option no-hover fc-dropdown-search-item"},{default:r(()=>[i(k,{class:"fc_input",size:"small",modelValue:y.query,"onUpdate:modelValue":p[0]||(p[0]=t=>y.query=t),placeholder:t.$t("Search..."),onKeyup:F.search},null,8,["modelValue","placeholder","onKeyup"])],void 0,!0),_:1}),i($,{class:"fc-dropdown-items-label fluentcrm-filter-option"},{default:r(()=>[l(d(t.$t("Choose an option:")),1)],void 0,!0),_:1}),i(D,{modelValue:y.selection,"onUpdate:modelValue":p[1]||(p[1]=t=>y.selection=t),onChange:F.save,class:"fluentcrm-filter-options fc_checkbox_group"},{default:r(()=>[(a(!0),s(h,null,_(m.options,e=>(a(),c(I,{key:e.id,value:e.slug,indeterminate:F.isIndeterminate(e),class:"el-dropdown-menu__item fc_checkbox"},{default:r(()=>[l(d(t.trans(e.title)),1)],void 0,!0),_:2},1032,["value","indeterminate"]))),128))],void 0,!0),_:1},8,["modelValue","onChange"]),m.noMatch?(a(),c($,{key:0,class:"fluentcrm-filter-option"},{default:r(()=>[u("div",A,[u("p",null,d(t.$t("No items found")),1),m.creatable?(a(),c(S,{key:0,type:"primary",size:"small",onClick:F.createNewItem},{default:r(()=>[l(d(t.$t("Add new:"))+" - "+d(y.query),1)],void 0,!0),_:1},8,["onClick"])):n("",!0)])],void 0,!0),_:1})):n("",!0)]),footer:r(()=>[o(t.$slots,"footer")]),_:3},8,["placement"])])}]]),V={data:()=>({noMatch:!1}),computed:{choices(){return this.options.filter(t=>!1!==t.status)}},methods:{search(t){let e=!0;const s=this.options.map(s=>(s.title.toLowerCase().includes(t)?(e=!1,s.status=!0):s.status=t&&!1,s));this.$emit("search",this.type,s),this.noMatch=!(!t||!e)},subscribe(t){this.$emit("subscribe",this.payload(t))},payload(t){return{type:this.type,payload:t}}}};export{j as E,V as T,I as u};