PageSourceSearch

https://www.linkclicks.com/static/js/8098.70af6fe2.chunk.js

js linkclicks.com collected 2026-10-02 00:33:16 UTC 80,505 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunklink_clicks_react_hook_reactstrap_js=globalThis.webpackChunklink_clicks_react_hook_reactstrap_js||[]).push([[8098],{58098(e,t,a){a.r(t),a.d(t,{abortAllStatusUpdateRequests:()=>S,cleanupRateLimitCooldowns:()=>Pe,clearChartCache:()=>_e,clearPendingStatusRollback:()=>we,clearSelection:()=>ue,consumeStatusIntentByIds:()=>A,consumeStatusIntentByKey:()=>E,default:()=>Me,fetchAdsManagerData:()=>O,fetchAggregatedPerformanceData:()=>x,fetchChartData:()=>j,fetchDashboardKpis:()=>$,fetchPerformanceData:()=>L,fetchTopMovers:()=>U,getRateLimitSecondsRemaining:()=>de,initializeStore:()=>B,isRateLimitActive:()=>oe,markAdsManagerStructureStale:()=>M,markRowUnmanageable:()=>Te,peekStatusIntentByIds:()=>P,registerPendingStatusRollback:()=>Re,releaseStatusIntentIds:()=>R,resetAdsManagerData:()=>he,revertPendingStatusRollbacks:()=>le,selectRateLimitCooldowns:()=>re,setCampaigns:()=>be,setComparisonMode:()=>ve,setDateRange:()=>ye,setError:()=>Ae,setFilterText:()=>Se,setLoading:()=>De,setProgressiveLoading:()=>Ne,setRateLimitCooldown:()=>Ee,setSelectedCampaigns:()=>ke,setSelectedRows:()=>ge,setShowEmptyRows:()=>me,setTopMoversLoading:()=>Ce,toggleComparisonMode:()=>fe,toggleGrouping:()=>ce,updateAdSetFields:()=>Fe,updateAdSetStatus:()=>W,updateAdSetStatusAsync:()=>z,updateAdStatus:()=>Q,updateAdStatusAsync:()=>H,updateCampaignFields:()=>Ie,updateCampaignStatus:()=>J,updateCampaignStatusAsync:()=>q,updateSelection:()=>pe});var s=a(11359),i=a(77907);const n=(e,t)=>{let a,s,i;const n=e=>!!e&&("PAUSED"===e.status||"PAUSED"===e.effectiveStatus);if("UPDATING"===e.status||"PAUSING"===e.status||"PROCESSING"===e.status)return s="PROCESSING"===e.status||"UPDATING"===e.status?"Updating...":"Pausing...",a=e.status,i="primary",{effectiveStatus:a,displayStatus:s,variant:i};if(e.platform){var r;const l=t.ads.find(t=>t.id===e.ad_id),c=null===l||void 0===l||null===(r=l.children)||void 0===r?void 0:r.some(e=>"ACTIVE"===e.status);if("UPDATING"===(null===l||void 0===l?void 0:l.status)||"PAUSING"===(null===l||void 0===l?void 0:l.status))return{effectiveStatus:e.status,displayStatus:e.displayStatus,variant:e.variant};const p=n(l)&&!c;if(!1===e.deployed)s="Failed to Deploy",a="FAILED",i="danger";else if(p&&"ACTIVE"===e.status)s="Active",a="ACTIVE",i="success";else{var o;const r=t.campaigns.find(t=>t.id===e.campaign_id),l=null===r||void 0===r||null===(o=r.children)||void 0===o?void 0:o.find(t=>t.platform===e.platform);if((n(r)||n(l))&&!c&&"ACTIVE"===e.status)s="Campaign Paused",a="PAUSED",i="warning";else{var d;const r=t.adSets.find(t=>t.id===e.adset_id),o=null===r||void 0===r||null===(d=r.children)||void 0===d?void 0:d.find(t=>t.platform===e.platform);(n(r)||n(o))&&!c&&"ACTIVE"===e.status?(s="Ad Set Paused",a="PAUSED",i="warning"):(s="ACTIVE"===e.status?"Active":"Paused",a=e.status,i="ACTIVE"===e.status?"success":"warning")}}}else{var l,c;const r=()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>n(e))},o=()=>{var t;return null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.status)},d=t.campaigns.find(t=>t.id===e.campaign_id),p=n(d)||(null===d||void 0===d||null===(l=d.children)||void 0===l?void 0:l.some(e=>n(e))),u=t.adSets.find(t=>t.id===e.adset_id),g=n(u)||(null===u||void 0===u||null===(c=u.children)||void 0===c?void 0:c.some(e=>n(e)));(()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>!1===e.deployed)})()?(s="Failed to Deploy",a="FAILED",i="danger"):p&&"ACTIVE"===e.status?(s="Campaign Paused",a="PAUSED",i="warning"):g&&"ACTIVE"===e.status?(s="Ad Set Paused",a="PAUSED",i="warning"):"PAUSED"===e.status&&o()?(s="Active",a="ACTIVE",i="success"):"PAUSED"===e.status?(s="Paused",a="PAUSED",i="warning"):r()?(s="All Paused",a="PAUSED",i="warning"):o()?(s="Active",a="ACTIVE",i="success"):(s=e.displayStatus,a=e.effectiveStatus,i=e.variant)}return"ACTIVE"===a&&(e=>{if(!e)return!1;if(e.review_status)return"REJECTED"===String(e.review_status).toUpperCase();const t=(e.children||[]).map(e=>String((null===e||void 0===e?void 0:e.review_status)||"").toUpperCase()).filter(
1Boolean);return t.length>0&&t.every(e=>"REJECTED"===e)})(e)&&(s="Not Delivering",a="NOT_DELIVERING",i="danger"),{effectiveStatus:a,displayStatus:s,variant:i}},r=(e,t)=>{var a;let s,i,n;if("UPDATING"===e.status||"PAUSING"===e.status||"PROCESSING"===e.status)return i="PROCESSING"===e.status||"UPDATING"===e.status?"Updating...":"Pausing...",s=e.status,n="primary",{effectiveStatus:s,displayStatus:i,variant:n};const r=e.platform?null===t||void 0===t||null===(a=t.campaigns)||void 0===a?void 0:a.find(t=>t.id===e.campaign_id):null,o=new Date,d=(t=>{if(null!==e&&void 0!==e&&e.start_date)return e.start_date;if(e.platform)return null===r||void 0===r?void 0:r.start_date;const a=null===(t=e.children)||void 0===t?void 0:t.find(e=>e.start_date);return null!==a&&void 0!==a&&a.start_date?a.start_date:null})(),l=d?new Date(d):null,c=!(!l||Number.isNaN(l.getTime()))&&l.getTime()>o.getTime(),p=(a=>{if(null!==e&&void 0!==e&&e.is_smart_performance_campaign)return!0;if((null===e||void 0===e||!e.platform)&&null!==e&&void 0!==e&&null!==(a=e.children)&&void 0!==a&&a.some(e=>null===e||void 0===e?void 0:e.is_smart_performance_campaign))return!0;if(null!==e&&void 0!==e&&e.platform&&null!==e&&void 0!==e&&e.campaign_id){var s,i;const a=null===t||void 0===t||null===(s=t.campaigns)||void 0===s?void 0:s.find(t=>t.id===e.campaign_id);if(null!==a&&void 0!==a&&null!==(i=a.children)&&void 0!==i&&i.some(t=>t.id===e.id&&t.is_smart_performance_campaign))return!0}return!1})(),u=function(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const s=e.platform?e.id.split("_")[0]:e.id,i=t.ads.filter(e=>e.campaign_id===s);if(0===i.length)return!1;if(a){return i.some(e=>{var t;const s=null===(t=e.children)||void 0===t?void 0:t.find(e=>e.platform===a);return"ACTIVE"===(null===s||void 0===s?void 0:s.effectiveStatus)})}return i.some(e=>{var t;const a="ACTIVE"===e.effectiveStatus,s=null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.effectiveStatus);return a||s})},g=function(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const s=e.platform?e.id.split("_")[0]:e.id,i=t.adSets.filter(e=>e.campaign_id===s);if(0===i.length)return!1;if(a){return i.some(e=>{var t;const s=null===(t=e.children)||void 0===t?void 0:t.find(e=>e.platform===a);return"ACTIVE"===(null===s||void 0===s?void 0:s.effectiveStatus)})}return i.some(e=>{var t;const a="ACTIVE"===e.effectiveStatus,s=null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.effectiveStatus);return a||s})};if(e.platform){if("UPDATING"===(null===r||void 0===r?void 0:r.status)||"PAUSING"===(null===r||void 0===r?void 0:r.status))return{effectiveStatus:e.status,displayStatus:e.displayStatus,variant:e.variant};!1===e.deployed?(i="Failed to Deploy",s="FAILED",n="danger"):"PAUSED"===(null===r||void 0===r?void 0:r.status)&&"ACTIVE"===e.status?(i="Group Paused",s="PAUSED",n="warning"):c&&"ACTIVE"===e.status?(i="Scheduled",s="SCHEDULED",n="secondary"):"ACTIVE"!==e.status||g(e.platform)||p?"ACTIVE"!==e.status||u(e.platform)||p?(i="ACTIVE"===e.status?"Active":"Paused",s=e.status,n="ACTIVE"===e.status?"success":"warning"):(i="No Ads Delivering",s="ACTIVE",n="warning"):(i="No Ad Sets Delivering",s="ACTIVE",n="warning")}else{const t=()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>"PAUSED"===e.status)},a=()=>{var t;return null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.status)};(()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>!1===e.deployed)})()?(i="Failed to Deploy",s="FAILED",n="danger"):"PAUSED"===e.status?(i="Paused",s="PAUSED",n="warning"):t()?(i="All Paused",s="PAUSED",n="warning"):c&&"ACTIVE"===e.status?(i="Scheduled",s="SCHEDULED",n="secondary"):"ACTIVE"!==e.status||g()||p?"ACTIVE"!==e.status||u()||p?a()?(i="Active",s="ACTIVE",n="success"):(i=e.displayStatus,s=e.effectiveStatus,n=e.variant):(i="No Ads Delivering",s="ACTIVE",n="warning"):(i="No Ad Sets Delivering",s="ACTIVE",n="warning")}return{effectiveStatus:s,displayStatus:i,variant:n}},o=(e,t)=>{let a,s,i;if("UPDATING"===e.status||"PAUSING"===e.status||"PROCESSING"===e.status)return"PROCESSING"===e.status?(s="Processing...",i="primary"):(s="UPDATING"===e.status?"Updating...":"Pausing...",i="primary"),a=e.status,{effectiveStatus:a,displayStatus:s,variant:i};const n=function(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const s=e.platform?e.id.split("_")[0]:e.id,i=t.ads.filter(e=>e.adset_id===s);if(0===i.length)return!1;if(a){return i.some(e=>{var t;const s=null===(t=e.children)||void 0===t?void 0:t.find(e=>e.platform===a);return"ACTIVE"===(null===s||void 0===s?void 0:s.effectiveStatus)})}return i.some(e=>{var t;const a="ACTIVE"===e.effectiveStatus,s=null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.effectiveStatus);return a||s})};if(e.platform){const o=t.adSets.find(t=>
1t.id===e.adset_id);if("UPDATING"===(null===o||void 0===o?void 0:o.status)||"PAUSING"===(null===o||void 0===o?void 0:o.status))return{effectiveStatus:e.status,displayStatus:e.displayStatus,variant:e.variant};if(!1===e.deployed)s="Failed to Deploy",a="FAILED",i="danger";else if("PAUSED"===(null===o||void 0===o?void 0:o.status)&&"ACTIVE"===e.status)s=t.isGrouped?"Group Paused":"Paused",a="PAUSED",i="warning";else{var r;const o=t.campaigns.find(t=>t.id===e.campaign_id),d=null===o||void 0===o||null===(r=o.children)||void 0===r?void 0:r.find(t=>t.platform===e.platform);"PAUSED"!==(null===o||void 0===o?void 0:o.status)&&"PAUSED"!==(null===d||void 0===d?void 0:d.status)||"ACTIVE"!==e.status?"ACTIVE"!==e.status||n(e.platform)?(s="ACTIVE"===e.status?"Active":"Paused",a=e.status,i="ACTIVE"===e.status?"success":"warning"):(s="No Ads Delivering",a="ACTIVE",i="warning"):(s="Campaign Paused",a="PAUSED",i="warning")}}else{const r=()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>"PAUSED"===e.status)},o=()=>{var t;return null===(t=e.children)||void 0===t?void 0:t.some(e=>"ACTIVE"===e.status)},d=()=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&e.children.every(e=>!1===e.deployed)},l=t.campaigns.find(t=>t.id===e.campaign_id);d()?(s="Failed to Deploy",a="FAILED",i="danger"):"PAUSED"===(null===l||void 0===l?void 0:l.status)&&"ACTIVE"===e.status?(s="Campaign Paused",a="PAUSED",i="warning"):"PAUSED"===e.status?(s="Paused",a="PAUSED",i="warning"):r()?(s="All Paused",a="PAUSED",i="warning"):"ACTIVE"!==e.status||n()?o()?(s="Active",a="ACTIVE",i="success"):(s=e.displayStatus,a=e.effectiveStatus,i=e.variant):(s="No Ads Delivering",a="ACTIVE",i="warning")}return{effectiveStatus:a,displayStatus:s,variant:i}},d=[["campaignSelections","campaigns"],["adSetSelections","adSets"],["adSelections","ads"]],l=(e,t)=>
1{if(!e)return e;let a=!1;const s={...e};return d.forEach(i=>{let[n,r]=i;const o=e[n];if(!Array.isArray(o)||0===o.length)return;const d=(e=>{const t=new Set;return(e||[]).forEach(e=>{null!=(null===e||void 0===e?void 0:e.id)&&t.add(String(e.id)),((null===e||void 0===e?void 0:e.children)||[]).forEach(e=>{null!=(null===e||void 0===e?void 0:e.id)&&t.add(String(e.id))})}),t})(null===t||void 0===t?void 0:t[r]),l=o.filter(e=>d.has(String(e)));l.length!==o.length&&(s[n]=l,a=!0)}),a?s:e};var c=a(45502);const p={campaigns:new Map,adSets:new Map,ads:new Map},u={campaigns:new Map,adSets:new Map,ads:new Map},g=(e,t)=>{const a=u[e];a&&t&&a.set(String(t),Date.now()+500)},m=(e,t)=>{const a=u[e];if(!a||!t)return!1;const s=a.get(String(t));return!!s&&(Date.now()<=s||(a.delete(String(t)),!1))},v=(e,t,a)=>{if(!t||!a)return;const s=p[e];s&&s.set(t,a)},f=(e,t)=>{const a=p[e];a&&t&&a.delete(t)},S=()=>{Object.values(p).forEach(e=>{e.forEach(e=>{try{e.abort()}catch(t){}}),e.clear()})};let h=0;const _=new Map,y=new Map,b=e=>{if(null===e||void 0===e)return e;try{return JSON.parse(JSON.stringify(e))}catch(t){return Array.isArray(e)?[...e]:"object"===typeof e?{...e}:e}},k=e=>{const t=String(e||"7d").trim().toLowerCase();if("90"===t||"90d"===t||"6m"===t||"180"===t||"180d"===t)return"90d";if("30"===t||"30d"===t)return"30d";if("14"===t||"14d"===t)return"14d";if("1"===t||"1d"===t)return"1d";if("2"===t||"2d"===t)return"2d";if("7"===t||"7d"===t)return"7d";const a=Number.parseInt(t.replace(/d$/i,""),10);return Number.isFinite(a)?a>=90?"90d":a>=30?"30d":a>=14?"14d":a>=7?"7d":a>=2?"2d":"1d":"7d"},D=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return null;for(const t of e){if(void 0===t||null===t)continue;const e=String(t),a=y.get(e);if(a&&_.has(a))return _.get(a)}return null},C=e=>{if(!e||!_.has(e))return null;const t=_.get(e);return _.delete(e),t.ids.forEach(t=>{y.get(t)===e&&y.delete(t)}),t},A=function(){const e=D(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]);return e?C(e.key):null},E=e=>e?C(e):null,P=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];console.log("\ud83d\udd0d peekStatusIntentByIds called with:",e),console.log("\ud83d\udccb Current statusIntentLookup entries:",Array.from(y.entries())),console.log("\ud83d\udccb Current statusIntentEntries:",Array.from(_.entries()).map(e=>{let[t,a]=e;return{key:t,kind:a.kind,ids:a.ids}}));const t=D(e);return t?(console.log("\u2705 peekStatusIntentByIds: Found entry:",{key:t.key,kind:t.kind,ids:t.ids}),{key:t.key,kind:t.kind,ids:[...t.ids],payload:b(t.payload),autoRetries:t.autoRetries,lastAttemptAt:t.lastAttemptAt}):(console.log("\u274c peekStatusIntentByIds: No entry found"),null)},R=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];Array.isArray(e)&&e.forEach(e=>{if(void 0===e||null===e)return;const t=String(e),a=y.get(t);if(!a)return;const s=_.get(a);y.delete(t),s&&(s.ids=s.ids.filter(e=>e!==t),s.ids.length||_.delete(a))})},w=e=>{const t=e instanceof Date?e:new Date(e);if(Number.isNaN(t.getTime()))return null;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},N=e=>{var t,a,s,i,n,r,o,d;return{clicks:Number(null!==(t=null===e||void 0===e?void 0:e.clicks)&&void 0!==t?t:0),impressions:Number(null!==(a=null===e||void 0===e?void 0:e.impressions)&&void 0!==a?a:0),spend:Number(null!==(s=null===e||void 0===e?void 0:e.spend)&&void 0!==s?s:0),revenue:Number(null!==(i=null===e||void 0===e?void 0:e.revenue)&&void 0!==i?i:0),cpm:Number(null!==(n=null===e||void 0===e?void 0:e.cpm)&&void 0!==n?n:0),ctr:Number(null!==(r=null===e||void 0===e?void 0:e.ctr)&&void 0!==r?r:0),cpc:Number(null!==(o=null===e||void 0===e?void 0:e.cpc)&&void 0!==o?o:0),roas:Number(null!==(d=null===e||void 0===e?void 0:e.roas)&&void 0!==d?d:0)}},I="adsManager_rateLimitCooldowns",F=e=>{try{if("undefined"===typeof window||!window.localStorage)return;window.localStorage.setItem(I,JSON.stringify(e.rateLimitCooldowns||{}))}catch(t){console.warn("Failed to persist rate limit cooldowns",t)}};let T=!1;const M=()=>{T=!0},O=(0,s.zD)("adsManager/fetchData",async function(){var e,t;let{startDate:a,endDate:s,ad_platform:n,forceInitial:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{dispatch:o,getState:d}=arguments.length>1?arguments[1]:void 0;const l=d().performance,c=a||(null===(e=l.dataDateRange)||void 0===e?void 0:e.startDate),p=s||(null===(t=l.dataDateRange)||void 0===t?void 0:t.endDate);if(!c||!p)return{skipInitialData:!0}
1;const u=l.campaigns.length>0,g=r||!u||Boolean(n)||T;if(!g)return console.log("\ud83d\udcca Skipping initial-data fetch - already have",l.campaigns.length,"campaigns in Redux"),o(x({startDate:c,endDate:p})),{skipInitialData:!0};if(g){T=!1,console.log("\ud83d\udfe2 Fetching initial data (campaigns:",l.campaigns.length,", ad_platform:",n,", forceInitial:",r,")");const e=new URLSearchParams;n&&"all"!==n&&e.append("platform",n);const t=e.toString(),a=t?`/ads_manager/initial-data/?${t}`:"/ads_manager/initial-data/";return{...(await(0,i.qQ)(a)).data,dateRange:{startDate:c,endDate:p}}}return o(x({startDate:c,endDate:p})),{skipInitialData:!0}}),L=(0,s.zD)("adsManager/fetchPerformanceData",async function(){let{startDate:e,endDate:t,noCache:a,isScheduled:s,onProgress:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{dispatch:r}=arguments.length>1?arguments[1]:void 0;const o=t||w(new Date),d=e||w(new Date(Date.now()-2592e6));console.log("\ud83d\udcca fetchPerformanceData called with:",{start:d,end:o,noCache:a,isScheduled:s}),console.log("\ud83d\udcca Fetching complete date range (no differential fetching):",{start:d,end:o}),r(Ne({isLoading:!0,progress:{loaded:0,total:0,percentage:0}}));let l=1,c=!0,p={},u=0;const g=Date.now();try{for(;c;){console.log(`\ud83d\udcca Fetching chunk ${l}:`,url);const e=(await(0,i.qQ)(url)).data;1===l&&(u=e.pagination.total_records,console.log(`\ud83d\udcca Total records to fetch: ${u.toLocaleString()}`)),Object.keys(e.byDate||{}).forEach(t=>{p[t]||(p[t]={}),Object.keys(e.byDate[t]).forEach(a=>{p[t][a]||(p[t][a]={}),Object.assign(p[t][a],e.byDate[t][a])})});const t=(Date.now()-g)/1e3,a=Math.round(e.pagination.loaded_records/t),s={loaded:e.pagination.loaded_records,total:e.pagination.total_records,percentage:e.pagination.progress_percentage,currentChunk:l,totalChunks:e.pagination.total_pages,recordsPerSecond:a,elapsedSeconds:t};r(Ne({isLoading:!0,progress:s})),n&&n(s),console.log(`\ud83d\udcca Chunk ${l}/${e.pagination.total_pages} completed: ${e.pagination.loaded_records.toLocaleString()}/${u.toLocaleString()} records (${e.pagination.progress_percentage}%) - ${a.toLocaleString()} records/sec`),c=e.pagination.has_next,l++}const e=(Date.now()-g)/1e3,t=Math.round(u/e);return console.log(`\ud83d\udcca Progressive loading completed: ${u.toLocaleString()} records in ${e.toFixed(1)}s (${t.toLocaleString()} records/sec)`),r(Ne({isLoading:!1,progress:null})),{byDate:p,isProgressive:!0,dateRange:{startDate:d,endDate:o},totalRecords:u,performanceMetrics:{totalElapsed:e,recordsPerSecond:t,chunksProcessed:l-1}}}catch(m){throw console.error("\ud83d\udcca Progressive loading failed:",m),r(Ne({isLoading:!1,progress:null,error:m.message})),m}}),x=(0,s.zD)("adsManager/fetchAggregatedPerformanceData",async function(){let{startDate:e,endDate:t,noCache:a=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{getState:s}=arguments.length>1?arguments[1]:void 0;const n=s().performance.comparisonMode,r=t||w(new Date),o=e||w(new Date(Date.now()-2592e6));console.log("\ud83d\udcca fetchAggregatedPerformanceData called with:",{start:o,end:r,noCache:a,comparisonMode:n}),console.log("\ud83d\udcca Fetching complete date range (no differential fetching):",{start:o,end:r});try{const e=new URLSearchParams({start_date:o,end_date:r,format:"json"});a&&e.append("no_cache","true"),n&&(e.append("split_comparison","true"),console.log("\ud83d\udcca Comparison mode ON - backend will return both current and previous periods"));const t=await(0,i.qQ)(`/ads_manager/performance-data-aggregated/?${e}`),s=t.data.previous_aggregated||{};return{aggregated:t.data.aggregated||{},previousAggregated:s,meta:t.data.meta||{},dateRange:{startDate:o,endDate:r},comparisonRequested:n}}catch(d){throw console.error("\ud83d\udcca Error fetching aggregated performance data:",d),d}}),j=(0,s.zD)("adsManager/fetchChartData",async function(){let{entityId:e,entityType:t,startDate:a,endDate:s,platform:n,entityFilters:r,metrics:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{getState:d}=arguments.length>1?arguments[1]:void 0;console.log("\ud83d\udcc8 fetchChartData called with:",{entityId:e,entityType:t,startDate:a,endDate:s,platform:n,entityFilters:r,metrics:o});const l=String(e).includes("_")?String(e).split("_")[0]:String(e);console.log("\ud83d\udd27 Cache parent ID extraction:",{original:e,parent:l});const c=Array.isArray(r)?Array.from(new Set(r.map(e=>String(e)).filter(e=>""!==e))):[],p=Array.isArray(o)?Array.from(new Set(o.map(e=>String(e).trim()).filter(e=>""!==e))):"string"===typeof o&&""!==o.trim()?Array.from(new Set(o.split(",").map(e=>e.trim()).filter(e=>""!==e))):[];c.length&&console.log("\ud83c\udfaf Applying filtered entity filters to chart request:",c),p.length&&console.log("\ud83d\udccf Requesting chart metrics:",p);const u=c.length?`_subset_${c.join("-")}`:"",g=p.length?`_metrics_${p.join("-")}`:"",m=`${t}_${l}_${a}_${s}_${n||"all"}${u}${g}`;console.log("\ud83d\udd11 Chart data cache key:",m);const v=d().performance.chartData.cache[m];if(v)return console.log("\u2705 Found cached chart data for parent entity, returning c
1ached result"),console.log("\ud83d\udcca Cached data keys:",Object.keys(v)),{...v,fromCache:!0};console.log("\ud83d\udd04 No cached data found for parent entity, fetching from API...");try{let r;const o={entity_id:e,entity_type:t,start_date:a,end_date:s,format:"json"};if(n&&(o.platform=n),p.length&&(o.metrics=p.join(",")),c.length)o.entity_ids=c,r=await(0,i.Ku)("/ads_manager/chart-data/",o);else{const e=new URLSearchParams(o);r=await(0,i.qQ)(`/ads_manager/chart-data/?${e}`)}console.log("\ud83d\udcc8 Chart data response:",r.data),console.log("\ud83d\udcc8 Chart data response keys:",Object.keys(r.data)),console.log("\ud83d\udcc8 Chart data daily_data:",r.data.daily_data),console.log("\ud83d\udcc8 Chart data metrics:",r.data.metrics),console.log("\ud83d\udcc8 Chart data type:",typeof r.data);let d=r.data;return n&&r.data.metrics&&(console.log("\ud83d\udd0d Filtering chart data for platform:",n),d={...r.data,metrics:{}},Object.entries(r.data.metrics).forEach(e=>{let[t,a]=e;if(null!==a&&void 0!==a&&a.daily_data){const e={};Object.entries(a.daily_data).forEach(t=>{let[a,s]=t;null!==s&&void 0!==s&&s.platforms&&s.platforms[n]&&(e[a]={total:s.platforms[n],platforms:{[n]:s.platforms[n]}})}),d.metrics[t]={...a,daily_data:e}}}),console.log("\u2705 Filtered chart data:",d)),{...d,fromCache:!1,cacheKey:m}}catch(f){throw console.error("\ud83d\udcc8 Error fetching chart data:",f),f}}),$=(0,s.zD)("adsManager/fetchDashboardKpis",async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{dateRange:t="7d"}=e,a=k(t);console.log("\ud83d\udcca fetchDashboardKpis called",{dateRange:a});const s=await(0,i.qQ)(`/ads_manager/dashboard-kpis/?window_days=${a}`);return{...null===s||void 0===s?void 0:s.data,lastFetched:Date.now(),dateRange:a,sortingType:"value"}}),U=(0,s.zD)("adsManager/fetchTopMovers",async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{dateRange:t="7d",sortingType:a="value"}=e,s=k(t);console.log("\ud83d\udcc8 fetchTopMovers (rollup) called with:",{dateRange:s,sortingType:a});const n=await(0,i.qQ)(`/ads_manager/top-movers/?window_days=${s}&sorting=${a}`);return{...(null===n||void 0===n?void 0:n.data)||{},lastFetched:Date.now(),sortingType:a,dateRange:s}}),V=(e,t,a)=>{if(e.children){const s=e.children.reduce((e,s)=>{const i=V(s,t,a);return{clicks:e.clicks+i.clicks,impressions:e.impressions+i.impressions,spend:e.spend+i.spend}},{clicks:0,impressions:0,spend:0});return{...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0}}if(!e.dailyMetrics||"object"!==typeof e.dailyMetrics)return{clicks:0,impressions:0,spend:0,cpm:0,ctr:0,cpc:0};const s=e=>{if("string"===typeof e&&/^\d{4}-\d{2}-\d{2}$/.test(e))return e;const t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},i=s(t),n=s(a),r=Object.entries(e.dailyMetrics).reduce((e,t)=>{let[a,s]=t;return a>=i&&a<=n?{clicks:e.clicks+Number(s.clicks||0),impressions:e.impressions+Number(s.impressions||0),spend:e.spend+Number(s.spend||0)}:e},{clicks:0,impressions:0,spend:0});return{...r,cpm:r.impressions>0?Number((1e3*r.spend/r.impressions).toFixed(2)):0,ctr:r.impressions>0?Number((100*r.clicks/r.impressions).toFixed(2)):0,cpc:r.clicks>0?Number((r.spend/r.clicks).toFixed(2)):0}},G=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,K=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!Array.isArray(e)||!Array.isArray(t)||0===t.length)return{};const a=new Map(t.map(e=>[String(e.id),e]));return e.reduce((e,t)=>{const s=String(t);if(!s)return e;if(s.includes("_")){const[t]=s.split("_"),i=a.get(t);if(!i||!Array.isArray(i.children))return e;const n=i.children.find(e=>String(e.id)===s);n&&"string"===typeof n.status&&(e[s]=n.status)}else{const t=a.get(s);t&&"string"===typeof t.status&&(e[s]=t.status)}return e},{})},B=(0,s.zD)("adsManager/initialize",async(e,t)=>{var a,s;let{getState:i}=t;const n=i().performance;return null!==(a=n.dataDateRange)&&void 0!==a&&a.startDate&&null!==(s=n.dataDateRange)&&void 0!==s&&s.endDate?null:(()=>{const e=new Date,t=new Date;return t.setDate(t.getDate()-30),{startDate:G(t),endDate:G(e)}})()}),q=(0,s.zD)("adsManager/updateCampaignStatusAsync",async(e,t)=>{let{ids:a,status:s,intermediateStatus:n}=e,{dispatch:r,getState:o,requestId:d}=t;if(!(0,c.hh)())return{ids:[],status:s,skippedRateLimited:[]};const l=o(),p=l.performance.campaigns,u=[],g=(a||[]).filter(e=>{const t=String(e);if(t.includes("_")){var a,s,i,n,r;const[o]=t.split("_"),d=p.find(e=>String(e.id)===o),c=null===d||void 0===d||null===(a=d.children)||void 0===a?void 0:a.find(e=>e.id===t),g=((null===c||void 0===c?void 0:c.ad_platform)||(null===c||void 0===c?void 0:c.platform)||"").toLowerCase(),m=null!==(s=null!==(i=null!==(n=null!==(r=null===c||void 0===c?void 0:c.account_id)&&void 0!==r?r:null===c||void 0===c?void 0:c.ad_account_id)&&void 0!==n?n:null===d||void 0===d?void 0:d.account_id)&&void 0!==i?i:null===d||void 0===d?void 0:d.ad_account_id)&&void 0!==s?s:null;if("meta_ads"===g&&oe(l,"meta_ads",m))return u.push(e),!1}return!0});if(!g.length)return{ids:[],status:s,skippedRateLimited:u};const m=K(g,p);r(Re({entityType:"campaigns",statusMap:m})),r(J({ids:g,status:n||("ACTIVE"===s?"UPDATING":"PAUSING")}));const S=new AbortController;v("campaigns",d,S);let h=[],_=[];
1g.forEach(e=>{const t=String(e);if(t.includes("_")){var a;const e=t.split("_"),s=e.length>=2?`${e[0]}_${e[1]}`:t,[i]=e,n=p.find(e=>String(e.id)===i),r=null===n||void 0===n||null===(a=n.children)||void 0===a?void 0:a.find(e=>e.id===t);r&&_.push({id:s,ad_platform:r.ad_platform})}else{p.some(e=>String(e.id)===t)&&h.push(e)}}),h=[...new Set(h)],_=_.filter((e,t,a)=>t===a.findIndex(t=>t.id===e.id&&t.ad_platform===e.ad_platform));try{const e=await(0,i.Ku)("/ads_manager/enable/",{campaigns:h,campaigns_platforms:_,status:s},{signal:S.signal});return r(we({entityType:"campaigns",ids:g})),{ids:g,status:s,response:e.data,skippedRateLimited:u}}catch(y){if(console.log("\ud83d\udd34 Campaign status update CATCH BLOCK entered:",{errorCode:y.code,errorName:y.name,errorMessage:y.message,ids:g,rollbackStatuses:m,rollbackStatusesJSON:JSON.stringify(m)}),r(J({ids:g,statusMap:m})),r(we({entityType:"campaigns",ids:g})),"ERR_CANCELED"===y.code||"AbortError"===y.name||"CanceledError"===y.name)return console.log("\u2705 Campaign status revert completed for aborted request"),{ids:g,status:s,cancelled:!0,skippedRateLimited:u};throw y}finally{f("campaigns",d)}}),J=e=>({type:"performance/updateCampaignStatus",payload:e}),z=(0,s.zD)("adsManager/updateAdSetStatusAsync",async(e,t)=>{let{ids:a,status:s,intermediateStatus:r,isGrouped:o}=e,{dispatch:d,getState:l,requestId:p}=t;if(!(0,c.hh)())return{ids:[],status:s,skippedRateLimited:[]};const u=l(),g=u.performance.adSets,m=[],S=(a||[]).filter(e=>{const t=String(e);if(t.includes("_")){var a,s,i,n,r;const[o]=t.split("_"),d=g.find(e=>e.id.toString()===o),l=null===d||void 0===d||null===(a=d.children)||void 0===a?void 0:a.find(e=>e.id===t),c=((null===l||void 0===l?void 0:l.ad_platform)||(null===l||void 0===l?void 0:l.platform)||"").toLowerCase(),p=null!==(s=null!==(i=null!==(n=null!==(r=null===l||void 0===l?void 0:l.account_id)&&void 0!==r?r:null===l||void 0===l?void 0:l.ad_account_id)&&void 0!==n?n:null===d||void 0===d?void 0:d.account_id)&&void 0!==i?i:null===d||void 0===d?void 0:d.ad_account_id)&&void 0!==s?s:null;if("meta_ads"===c&&oe(u,"meta_ads",p))return m.push(e),!1}return!0});if(!S.length)return{ids:[],status:s,skippedRateLimited:m};const k=K(S,g);d(Re({entityType:"adSets",statusMap:k})),d(W({ids:S,status:r||("ACTIVE"===s?"UPDATING":"PAUSING")}));const D=new AbortController;v("adSets",p,D);const C=void 0!==o?o:u.performance.isGrouped,A=(e=>{let{kind:t="adset",ids:a=[],payload:s}=e;if(!Array.isArray(a)||0===a.length||!s)return null;const i=[...new Set(a.map(e=>String(e)).filter(Boolean))];if(!i.length)return null;const n=`intent_${Date.now()}_${++h}`,r={key:n,kind:t,ids:i,payload:b(s),createdAt:Date.now(),autoRetries:0,lastAttemptAt:Date.now()};_.set(n,r);const o=new Set;return i.forEach(e=>{if(o.add(e),e.includes("_")){const t=e.split("_");t.forEach((e,a)=>{if(e&&e.length>8&&o.add(e),a>0){const e=t.slice(0,a+1).join("_");o.add(e)}})}}),o.forEach(e=>{const t=y.get(e);if(t&&_.has(t)){const a=_.get(t);a.ids=a.ids.filter(t=>t!==e),0===a.ids.length&&_.delete(t)}y.set(e,n)}),r})({kind:"adset",ids:S,payload:{ids:[...S],intermediateStatus:r||("ACTIVE"===s?"UPDATING":"PAUSING"),status:s,isGrouped:C}});console.log("\ud83c\udfaf Registered status intent for ad sets:",{intentKey:null===A||void 0===A?void 0:A.key,ids:S,status:s,isGrouped:C});let E=[],P=[];S.forEach(e=>{if(e.includes("_")){var t;const a=e.split("_"),s=a.length>=2?`${a[0]}_${a[1]}`:e,[i]=a,n=g.find(e=>e.id.toString()===i),r=null===n||void 0===n||null===(t=n.children)||void 0===t?void 0:t.find(t=>t.id===e);r&&P.push({id:s,ad_platform:r.ad_platform})}else C&&E.push(e)}),E=[...new Set(E)],P=P.filter((e,t,a)=>t===a.findIndex(t=>t.id===e.id&&t.ad_platform===e.ad_platform));try{const e=await(0,i.Ku)("/ads_manager/enable/",{adsets:E,adsets_platforms:P,status:s},{signal:D.signal}),t=(null===e||void 0===e?void 0:e.data)||{},a=t.success;if(!1===a||"false"===a||!!t.errors||!!t.error||!!t.meta_ads||!!t.action_plan||"number"===typeof t.status&&t.status>=400||"string"===typeof t.status&&"error"===t.status.toLowerCase()){const e=new Error("Ad set status update failed");throw e.response={data:t},e}d(we({entityType:"adSets",ids:S}));const r=u.performance.ads;return d({type:"performance/updateAdStatuses",payload:r.map(e=>({...e,...n(e,u.performance)}))}),{ids:S,status:s,response:t,skippedRateLimited:m}}catch(N){var R,w;if(console.log("\ud83d\udd34 Ad set status update CATCH BLOCK entered:",{errorCode:N.code,errorName:N.name,errorMessage:N.message,ids:S,rollbackStatuses:k,rollbackStatusesJSON:JSON.stringify(k)}),d(W({ids:S,statusMap:k})),d(we({entityType:"adSets",ids:S})),"ERR_CANCELED"===N.code||"AbortError"===N.name||"CanceledError"===N.name)return console.log("\u2705 Ad set status revert completed for aborted request"),{ids:S,status:s,cancelled:!0,skippedRateLimited:m};if(null!==N&&void 0!==N&&null!==(R=N.response)&&void 0!==R&&null!==(w=R.data)&&void 0!==w&&w.action_plan)return console.log("\u2705 Ad set status error has action_plan - suppressing HTTP error toast"),{ids:S,status:s,hasActionPlan:!0,skippedRateLimited:m};throw N}finally{f("adSets",p)}}),W=e=>({type:"performance/updateAdSetStatus",payload:e}),H=(0,s.zD)("adsManager/updateAdStatusAsync",async(e,t)=>{let{ids:a,status:s,intermediateStatus:n}=e,{dispatch:r,getState:o,requestId:d}=t;if(!(0,c.hh)())return{ids:[],status:s,skippedDisabled:[],skippedRateLimited:[]};const l=o(),p=l.performance.ads,u=l.performance.campaigns,g=[],m=[],S=e=>"string"===typeof e&&e.toLowerCase().includes("linkedin"),h=e=>{if(!e)return!1;const t=u.find(t=>void 0!==t.id&&String(t.id)===String(e));return t&&"Accelerate Campaign Group"===(t.name||"").trim()},_=(a||[]).filter(e=>{var t;const a=String(e);if(a.includes("_")){var s,i,n,r,o,d;const[t]=a.split("_"),c=p.find(e=>e.id.toString()===t);if(!c)return!1;const u=null===(s=c.children)||void 0===s?void 0:s.find(e=>e.id===a),v=((null===u||void 0===u?void 0:u.ad_platform)||(null===u||void 0===u?void 0:u.platform)||"").toLowerCase(),f=null!==(i=null!==(n=null!==(r=null!==(o=null===u||void 0===u?void 0:u.account_id)&&void 0!==o?o:null===u||void 0===u?void 0:u.ad_account_id)&&void 0!==r?r:null===c||void 0===c?void 0:c.account_id)&&void 0!==n?n:null===c||void 0===c?void 0:c.ad_account_id)&&void 0!==i?i:null,_=null!==(d=null===c||void 0===c?void 0:c.campaign_id)&&void 0!==d?d:null===c||void 0===c?void 0:c.campaignId;return S(v)&&h(_)?(g.push(e),!1):"meta_ads"!==v||!oe(l,"meta_ads",f)||(m.push(e),!1)}const c=p.find(e=>e.id.toString()===a);if(!c)return!1;const u=(c.ad_platform||c.platform||"").toLowerCase(),v=null!==(t=null===c||void 0===c?void 0:c.campaign_id)&&void 0!==t?t:null===c||void 0===c?void 0:c.campaignId;return!S(u)||!h(v)||(g.push(e),!1)});if(!_.length)return{ids:[],status:s,skippedDisabled:g,skippedRateLimited:m};const y=K(_,p);r(Re({entityType:"ads",statusMap:y})),r(Q({ids:_,status:n||("ACTIVE"===s?"UPDATING":"PAUSING")}));let b=[],k=[];
1_.forEach(e=>{const t=String(e);if(t.includes("_")){var a;const e=t.split("_"),s=e.length>=2?`${e[0]}_${e[1]}`:t,[i]=e,n=p.find(e=>e.id.toString()===i),r=null===n||void 0===n||null===(a=n.children)||void 0===a?void 0:a.find(e=>e.id===t);r&&k.push({id:s,ad_platform:r.ad_platform})}else{p.some(e=>e.id.toString()===t)&&b.push(e)}}),b=[...new Set(b)],k=k.filter((e,t,a)=>t===a.findIndex(t=>t.id===e.id&&t.ad_platform===e.ad_platform));const D=new AbortController;v("ads",d,D);try{const e=await(0,i.Ku)("/ads_manager/enable/",{ads:b,ads_platforms:k,status:s},{signal:D.signal});return r(we({entityType:"ads",ids:_})),{ids:_,status:s,response:e.data,skippedDisabled:g,skippedRateLimited:m}}catch(C){if(console.log("\ud83d\udd34 Ad status update CATCH BLOCK entered:",{errorCode:C.code,errorName:C.name,errorMessage:C.message,ids:_,rollbackStatuses:y,rollbackStatusesJSON:JSON.stringify(y)}),r(Q({ids:_,statusMap:y})),r(we({entityType:"ads",ids:_})),"ERR_CANCELED"===C.code||"AbortError"===C.name||"CanceledError"===C.name)return console.log("\u2705 Ad status revert completed for aborted request"),{ids:_,status:s,cancelled:!0,skippedRateLimited:m};throw C}finally{f("ads",d)}}),Q=e=>({type:"performance/updateAdStatus",payload:e}),X={campaigns:[],selectedCampaigns:[],loading:!1,error:null,adSets:[],ads:[],selectedRows:{campaignSelections:[],adSetSelections:[],adSelections:[]},showEmptyRows:!0,filterText:"",isGrouped:!0,comparisonMode:!1,comparisonDataLoaded:!1,dataDateRange:{earliest:null,latest:null},requestedDateRange:{startDate:null,endDate:null},performanceLoading:!1,archiveLoading:!1,progressiveLoading:{isLoading:!1,progress:null,error:null},chartData:{loading:!1,data:{},error:null,cache:{}},statusCache:{grouped:null,ungrouped:null,dirty:!0},pendingStatusRollbacks:{campaigns:{},adSets:{},ads:{}},rateLimitCooldowns:(()=>{try{if("undefined"===typeof window||!window.localStorage)return{};const e=window.localStorage.getItem(I);if(!e)return{};const t=JSON.parse(e);if(!t||"object"!==typeof t)return{};const a=Date.now();return Object.keys(t).forEach(e=>{const s=t[e];s&&"object"===typeof s?(Object.keys(s).forEach(e=>{const t=s[e];("number"!==typeof t||t<=a)&&delete s[e]}),Object.keys(s).length||delete t[e]):delete t[e]}),t}catch(e){return console.warn("Failed to load rate limit cooldowns from storage",e),{}}})(),dashboardKpis:{current:null,previous:null,dailyData:[],previousDailyData:[],loading:!1,error:null,lastFetched:null,rawPerformance:null,dateRange:"7d",byRange:{},pendingRanges:{},lastAttemptedAtByRange:{},lastFailedAtByRange:{},errorByRange:{}},topMovers:{campaigns:[],adSets:[],ads:[],campaignPlatforms:[],adSetPlatforms:[],adPlatforms:[],campaignPlatformsImpressions:[],adSetPlatformsImpressions:[],adPlatformsImpressions:[],campaignPlatformsSpend:[],adSetPlatformsSpend:[],adPlatformsSpend:[],campaignPlatformsCtr:[],adSetPlatformsCtr:[],adPlatformsCtr:[],campaignPlatformsCpm:[],adSetPlatformsCpm:[],adPlatformsCpm:[],campaignPlatformsCpc:[],adSetPlatformsCpc:[],adPlatformsCpc:[],loading:!1,error:null,lastFetched:null,sortingType:"value",dateRange:"7d"}},Y=e=>{e.campaigns.forEach(t=>{var a;const s=r(t,e);t.effectiveStatus=s.effectiveStatus,t.displayStatus=s.displayStatus,t.variant=s.variant,null===(a=t.children)||void 0===a||a.forEach(t=>{const a=r(t,e);t.effectiveStatus=a.effectiveStatus,t.displayStatus=a.displayStatus,t.variant=a.variant})}),e.adSets.forEach(t=>{var a;const s=o(t,e);t.effectiveStatus=s.effectiveStatus,t.displayStatus=s.displayStatus,t.variant=s.variant,null===(a=t.children)||void 0===a||a.forEach(t=>{const a=o(t,e);t.effectiveStatus=a.effectiveStatus,t.displayStatus=a.displayStatus,t.variant=a.variant})}),e.ads.forEach(t=>{var a;const s=n(t,e);t.effectiveStatus=s.effectiveStatus,t.displayStatus=s.displayStatus,t.variant=s.variant,null===(a=t.children)||void 0===a||a.forEach(t=>{const a=n(t,e);t.effectiveStatus=a.effectiveStatus,t.displayStatus=a.displayStatus,t.variant=a.variant})})},Z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{effectiveStatus:e.effectiveStatus,displayStatus:e.displayStatus,variant:e.variant}},ee=function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).reduce((e,t)=>
1{var a;const s=String(t.id),i={...Z(t)};return null!==(a=t.children)&&void 0!==a&&a.length&&(i.children=t.children.reduce((e,t)=>(e[String(t.id)]=Z(t),e),{})),e[s]=i,e},{})},te=function(){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(t=>{var a;const s=e[String(t.id)];s&&(t.effectiveStatus=s.effectiveStatus,t.displayStatus=s.displayStatus,t.variant=s.variant,null!==(a=t.children)&&void 0!==a&&a.length&&s.children&&t.children.forEach(e=>{const t=s.children[String(e.id)];t&&(e.effectiveStatus=t.effectiveStatus,e.displayStatus=t.displayStatus,e.variant=t.variant)}))})},ae=e=>{e.statusCache||(e.statusCache={grouped:null,ungrouped:null,dirty:!0})},se=e=>{ae(e),e.statusCache.grouped=null,e.statusCache.ungrouped=null,e.statusCache.dirty=!0},ie=e=>{ae(e);const t=e.isGrouped,a=t=>(e.isGrouped=t,Y(e),(e=>({campaigns:ee(e.campaigns),adSets:ee(e.adSets),ads:ee(e.ads)}))(e)),s=a(!0),i=a(!1);e.statusCache={grouped:s,ungrouped:i,dirty:!1},e.isGrouped=t;const n=t?"grouped":"ungrouped",r=e.statusCache[n];te(e.campaigns,r.campaigns),te(e.adSets,r.adSets),te(e.ads,r.ads)},ne=(0,s.Z0)({name:"performance",initialState:X,reducers:{setCampaigns:(e,t)=>{e.campaigns=t.payload},setSelectedCampaigns:(e,t)=>{e.selectedCampaigns=t.payload},setLoading:(e,t)=>
1{e.loading=t.payload},setTopMoversLoading:(e,t)=>{e.topMovers.loading=t.payload},setError:(e,t)=>{e.error=t.payload},setRateLimitCooldown:(e,t)=>{const{adPlatform:a,accountId:s,ttlSeconds:i}=t.payload||{};((e,t,a,s)=>{if(!t||!s||Number.isNaN(Number(s)))return;const i=String(t),n=void 0!==a&&null!==a?String(a):"default",r=Date.now()+1e3*Number(s);e.rateLimitCooldowns||(e.rateLimitCooldowns={}),e.rateLimitCooldowns[i]||(e.rateLimitCooldowns[i]={}),e.rateLimitCooldowns[i][n]=r,F(e)})(e,a,s,i)},cleanupRateLimitCooldowns:e=>{(e=>{if(!e.rateLimitCooldowns)return;const t=Date.now();Object.keys(e.rateLimitCooldowns).forEach(a=>{const s=e.rateLimitCooldowns[a];s&&(Object.keys(s).forEach(e=>{const a=s[e];("number"!==typeof a||a<=t)&&delete s[e]}),0===Object.keys(s).length&&delete e.rateLimitCooldowns[a])}),F(e)})(e)},registerPendingStatusRollback:(e,t)=>{const{entityType:a,statusMap:s}=t.payload||{};a&&s&&(e.pendingStatusRollbacks||(e.pendingStatusRollbacks={campaigns:{},adSets:{},ads:{}}),e.pendingStatusRollbacks[a]||(e.pendingStatusRollbacks[a]={}),Object.assign(e.pendingStatusRollbacks[a],s))},clearPendingStatusRollback:(e,t)=>{const{entityType:a,ids:s}=t.payload||{};if(!e.pendingStatusRollbacks)return;if(!a||"all"===a)return void(e.pendingStatusRollbacks={campaigns:{},adSets:{},ads:{}});const i=e.pendingStatusRollbacks[a];i&&(s&&s.length?s.forEach(e=>{delete i[String(e)]}
1):Object.keys(i).forEach(e=>delete i[e]))},toggleGrouping(e,t){var a;const s=void 0!==t.payload?t.payload:!e.isGrouped;if(s===e.isGrouped)return;(e=>{ae(e),!e.statusCache.dirty&&e.statusCache.grouped&&e.statusCache.ungrouped||ie(e)})(e),e.isGrouped=s;const i=s?"grouped":"ungrouped",n=null===(a=e.statusCache)||void 0===a?void 0:a[i];n?(te(e.campaigns,n.campaigns),te(e.adSets,n.adSets),te(e.ads,n.ads)):Y(e),e.campaigns=[...e.campaigns],e.adSets=[...e.adSets],e.ads=[...e.ads]},updateSelection(e,t){const{type:a,ids:s}=t.payload;e.selectedItems[a]=s},clearSelection(e,t){const{type:a}=t.payload;e.selectedItems[a]=[]},setSelectedRows(e,t){if("campaignSelections"===t.payload.type){var a;const s=t.payload.rows.filter(e=>String(e).includes("_")),i=((null===(a=e.selectedRows)||void 0===a?void 0:a.campaignSelections)||[]).filter(e=>!t.payload.rows.includes(e)).reduce((t,a)=>{if(String(a).includes("_")){var s;const[i]=a.split("_"),n=e.campaigns.find(e=>e.id===i),r=null===n||void 0===n||null===(s=n.children)||void 0===s?void 0:s.find(e=>e.id===a);if(r){const e=n.children.filter(e=>e.ad_platform===r.ad_platform).map(e=>e.id);return[...t,...e]}}return t},[]),n=s.reduce((t,a)=>{var s;const[i]=a.split("_"),n=e.campaigns.find(e=>e.id===i),r=null===n||void 0===n||null===(s=n.children)||void 0===s?void 0:s.find(e=>e.id===a);if(r){const e=n.children.filter(e=>e.ad_platform===r.ad_platform).map(e=>e.id);return[...t,...e]}return t},[]),r=[...new Set([...t.payload.rows,...n])].filter(e=>!i.includes(e));e.selectedRows={...e.selectedRows,campaignSelections:r}}else if("adSetSelections"===t.payload.type){const a=t.payload.rows.filter(e=>String(e).includes("_")),s=e.adSets.filter(e=>{var t;return(null===(t=e.children)||void 0===t?void 0:t.length)>0}).filter(e=>e.children.every(e=>a.includes(e.id))).map(e=>e.id),i=[...a,...s,...t.payload.rows.filter(t=>{var a;if(String(t).includes("_"))return!1;const s=e.adSets.find(e=>e.id===t);return!(null!==s&&void 0!==s&&null!==(a=s.children)&&void 0!==a&&a.length)})];e.selectedRows={...e.selectedRows,adSetSelections:i}}else if("adSelections"===t.payload.type){var s;const a=t.payload.rows.filter(e=>String(e).includes("_")),i=((null===(s=e.selectedRows)||void 0===s?void 0:s.adSelections)||[]).filter(e=>!t.payload.rows.includes(e)).reduce((t,a)=>{if(String(a).includes("_")){var s;const[i]=a.split("_"),n=e.ads.find(e=>e.id===i),r=null===n||void 0===n||null===(s=n.children)||void 0===s?void 0:s.find(e=>e.id===a);if(r){const e=n.children.filter(e=>e.ad_platform===r.ad_platform).map(e=>e.id);return[...t,...e]}}return t},[]),n=a.reduce((t,a)=>{var s;const[i]=a.split("_"),n=e.ads.find(e=>e.id===i),r=null===n||void 0===n||null===(s=n.children)||void 0===s?void 0:s.find(e=>e.id===a);if(r){const e=n.children.filter(e=>e.ad_platform===r.ad_platform).map(e=>e.id);return[...t,...e]}return t},[]),r=[...new Set([...t.payload.rows,...n])].filter(e=>!i.includes(e));e.selectedRows={...e.selectedRows,adSelections:r}}},setShowEmptyRows(e,t){e.showEmptyRows=t.payload},setComparisonMode(e,t){e.comparisonMode=Boolean(t.payload)},toggleComparisonMode(e){e.comparisonMode=!e.comparisonMode},setFilterText(e,t){e.filterText=t.payload},resetAdsManagerData(e){e.campaigns=[],e.adSets=[],e.ads=[],e.selectedRows={campaignSelections:[],adSetSelections:[],adSelections:[]},e.dashboardKpis={current:null,previous:null,dailyData:[],previousDailyData:[],loading:!1,error:null,lastFetched:null,rawPerformance:null,dateRange:"7d",byRange:{},pendingRanges:{},lastAttemptedAtByRange:{},lastFailedAtByRange:{},errorByRange:{}},e.topMovers={campaigns:[],adSets:[],ads:[],campaignPlatforms:[],adSetPlatforms:[],adPlatforms:[],campaignPlatformsImpressions:[],adSetPlatformsImpressions:[],adPlatformsImpressions:[],campaignPlatformsSpend:[],adSetPlatformsSpend:[],adPlatformsSpend:[],campaignPlatformsCtr:[],adSetPlatformsCtr:[],adPlatformsCtr:[],campaignPlatformsCpm:[],adSetPlatformsCpm:[],adPlatformsCpm:[],campaignPlatformsCpc:[],adSetPlatformsCpc:[],adPlatformsCpc:[],loading:!1,error:null,lastFetched:null,sortingType:"value",dateRange:"7d"},e.chartData&&(e.chartData.cache={}),se(e)},clearChartCache(e){e.chartData.cache={}
1,console.log("\ud83d\uddd1\ufe0f Chart cache cleared")},setDateRange(e,t){const a=e=>{if(!e)return null;if("string"===typeof e){if(/^\d{4}-\d{2}-\d{2}$/.test(e))return e;if(e.includes("T"))return e.split("T")[0];const t=new Date(e);if(!isNaN(t.getTime())){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}return e}if(e instanceof Date){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}const t=new Date(e);if(!isNaN(t.getTime())){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}return null},s=t.payload.startDate,i=t.payload.endDate,n=a(s),r=a(i);e.selectedDateRange={startDate:n,endDate:r},e.requestedDateRange={startDate:n,endDate:r},e.chartData.cache={},console.log("\ud83d\uddd1\ufe0f Chart cache cleared due to date range change"),e.loading=!1,e.performanceLoading=!1,e.progressiveLoading={...e.progressiveLoading,isLoading:!1,progress:null,error:null},e.ads=e.ads.map(e=>{const t=V(e,n,r);return{...e,...t,children:e.children.map(e=>({...e,...V(e,n,r)}))}}),e.adSets=e.adSets.map(t=>{const a=e.ads.filter(e=>String(e.adset_id)===String(t.id)||String(e.ad_set_id)===String(t.id)),s=a.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0}),i={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0},n=t.children.map(e=>{const t=a.flatMap(t=>t.children.filter(t=>t.platform===e.platform)).reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0});return{...e,...t,cpm:t.impressions>0?Number((1e3*t.spend/t.impressions).toFixed(2)):0,ctr:t.impressions>0?Number((100*t.clicks/t.impressions).toFixed(2)):0,cpc:t.clicks>0?Number((t.spend/t.clicks).toFixed(2)):0}});return{...t,...i,children:n}}),e.campaigns=e.campaigns.map(e=>{const t=e.children||[];return{...e,id:e.id,name:e.name,status:e.status,platforms:e.platforms||["default"],children:t.map(t=>({...t,id:`${t.id}`,campaign_id:e.id,name:t.name,platform:t.platform,status:t.status}))}})},updateCampaignStatus:(e,t)=>{const{ids:a,status:s,statusMap:i,fromWebsocket:d}=t.payload;a.forEach(t=>{const a=t.includes("_"),l=i&&Object.prototype.hasOwnProperty.call(i,t)?i[t]:s;if(!d||"PROCESSING"===l||!m("campaigns",t))if(a)e.campaigns.forEach(a=>{let s;if(d){var i;s=null===(i=a.children)||void 0===i?void 0:i.filter(e=>e.id.startsWith(t+"_")||e.id===t)}else{var c;const e=null===(c=a.children)||void 0===c?void 0:c.find(e=>e.id===t);s=e?[e]:[]}if(s&&s.length>0){s.forEach(a=>{"string"===typeof l&&("PROCESSING"!==l||"UPDATING"!==a.status&&"ACTIVE"!==a.status?("PROCESSING"===l&&g("campaigns",a.id||t),a.status=l,a.effectiveStatus=l):(g("campaigns",a.id||t),a.effectiveStatus=a.status));const s=r(a,e);Object.assign(a,s)});const i=r(a,e);Object.assign(a,i),e.adSets.forEach(t=>{t.campaign_id===a.id&&s.forEach(a=>{var s;const i=null===(s=t.children)||void 0===s?void 0:s.find(e=>e.platform===a.platform);if(i){const t=o(i,e);Object.assign(i,t)}})}),e.ads.forEach(t=>{if(t.campaign_id===a.id){var s;const a=n(t,e);Object.assign(t,a),null===(s=t.children)||void 0===s||s.forEach(t=>{const a=n(t,e);Object.assign(t,a)})}})}});else{const a=e.campaigns.find(e=>e.id===t);if(a){var c;"string"===typeof l&&("PROCESSING"!==l||"UPDATING"!==a.status&&"ACTIVE"!==a.status?("PROCESSING"===l&&g("campaigns",t),a.status=l,a.effectiveStatus=l):(g("campaigns",t),a.effectiveStatus=a.status));const s=r(a,e);Object.assign(a,s),null===(c=a.children)||void 0===c||c.forEach(t=>{const a=r(t,e);Object.assign(t,a)}),e.adSets.forEach(t=>{if(t.campaign_id===a.id){var s;const a=o(t,e);Object.assign(t,a),null===(s=t.children)||void 0===s||s.forEach(t=>{const a=o(t,e);Object.assign(t,a)})}}),e.ads.forEach(t=>{if(t.campaign_id===a.id){var s;const a=n(t,e);
1Object.assign(t,a),null===(s=t.children)||void 0===s||s.forEach(t=>{const a=n(t,e);Object.assign(t,a)})}})}}}),se(e)},updateAdStatus:(e,t)=>{const{ids:a,status:s,statusMap:i,fromWebsocket:d}=t.payload;a.forEach(t=>{const a=t.includes("_"),l=i&&Object.prototype.hasOwnProperty.call(i,t)?i[t]:s;if(!d||"PROCESSING"===l||!m("ads",t))if(a)e.ads.forEach(a=>{let s;if(d){var i;s=null===(i=a.children)||void 0===i?void 0:i.filter(e=>e.id.startsWith(t+"_")||e.id===t)}else{var c;const e=null===(c=a.children)||void 0===c?void 0:c.find(e=>e.id===t);s=e?[e]:[]}if(s&&s.length>0){s.forEach(a=>{"string"===typeof l&&("PROCESSING"!==l||"UPDATING"!==a.status&&"ACTIVE"!==a.status?("PROCESSING"===l&&g("ads",a.id||t),a.status=l,a.effectiveStatus=l):(g("ads",a.id||t),a.effectiveStatus=a.status));const s=n(a,e);Object.assign(a,s)});const i=n(a,e);Object.assign(a,i);const d=e.adSets.find(e=>e.id===a.adset_id);if(d){const t=o(d,e);Object.assign(d,t),s.forEach(t=>{var a;const s=null===(a=d.children)||void 0===a?void 0:a.find(e=>e.platform===t.platform);if(s){const t=o(s,e);Object.assign(s,t)}});const a=e.campaigns.find(e=>e.id===d.campaign_id);if(a){const t=r(a,e);Object.assign(a,t),s.forEach(t=>{var s;const i=null===(s=a.children)||void 0===s?void 0:s.find(e=>e.platform===t.platform);if(i){const t=r(i,e);Object.assign(i,t)}})}}}});else{const a=e.ads.find(e=>e.id===t);if(a){var c;"string"===typeof l&&("PROCESSING"!==l||"UPDATING"!==a.status&&"ACTIVE"!==a.status?("PROCESSING"===l&&g("ads",t),a.status=l,a.effectiveStatus=l):(g("ads",t),a.effectiveStatus=a.status));const s=n(a,e);Object.assign(a,s),null===(c=a.children)||void 0===c||c.forEach(t=>{const a=n(t,e);Object.assign(t,a)});const i=e.adSets.find(e=>e.id===a.adset_id);if(i){var p;const t=o(i,e);Object.assign(i,t),null===(p=i.children)||void 0===p||p.forEach(t=>{const a=o(t,e);Object.assign(t,a)});const a=e.campaigns.find(e=>e.id===i.campaign_id);if(a){var u;const t=r(a,e);Object.assign(a,t),null===(u=a.children)||void 0===u||u.forEach(t=>{const a=r(t,e);Object.assign(t,a)})}}}}}),se(e)},updateAdSetStatus:(e,t)=>{const{ids:a,status:s,statusMap:i,fromWebsocket:d,configuredStatus:l}=t.payload;a.forEach(t=>{const a=t.includes("_"),c=i&&Object.prototype.hasOwnProperty.call(i,t)?i[t]:s;if(!d||"PROCESSING"===c||!m("adSets",t))if(a)e.adSets.forEach(a=>{let s;if(d){var i;s=null===(i=a.children)||void 0===i?void 0:i.filter(e=>e.id.startsWith(t+"_")||e.id===t)}else{var p;const e=null===(p=a.children)||void 0===p?void 0:p.find(e=>e.id===t);s=e?[e]:[]}if(s&&s.length>0){s.forEach(a=>{"string"===typeof c&&("PROCESSING"===c?(g("adSets",a.id||t),a.preProcessingStatus||(a.preProcessingStatus=l||a.status)):delete a.preProcessingStatus,a.status=c,a.effectiveStatus=c,l&&(a.configuredStatus=l));const s=o(a,e);Object.assign(a,s)});const i=o(a,e);Object.assign(a,i);const d=e.campaigns.find(e=>e.id===a.campaign_id);if(d){const t=r(d,e);Object.assign(d,t),s.forEach(t=>{var a;const s=null===(a=d.children)||void 0===a?void 0:a.find(e=>e.platform===t.platform);if(s){const t=r(s,e);Object.assign(s,t)}})}e.ads.forEach(t=>{if(t.adset_id===a.id){const a=n(t,e);
1Object.assign(t,a),s.forEach(a=>{var s;const i=null===(s=t.children)||void 0===s?void 0:s.find(e=>e.platform===a.platform);if(i){const t=n(i,e);Object.assign(i,t)}})}})}});else{const a=e.adSets.find(e=>e.id===t);if(a){var p;"string"===typeof c&&("PROCESSING"===c&&g("adSets",t),a.status=c,a.effectiveStatus=c);const s=o(a,e);Object.assign(a,s),null===(p=a.children)||void 0===p||p.forEach(t=>{const a=o(t,e);Object.assign(t,a)});const i=e.campaigns.find(e=>e.id===a.campaign_id);if(i){var u;const t=r(i,e);Object.assign(i,t),null===(u=i.children)||void 0===u||u.forEach(t=>{const a=r(t,e);Object.assign(t,a)})}e.ads.forEach(t=>{if(t.adset_id===a.id){var s;const a=n(t,e);Object.assign(t,a),null===(s=t.children)||void 0===s||s.forEach(t=>{const a=n(t,e);Object.assign(t,a)})}})}}}),se(e)},markRowUnmanageable:(e,t)=>{const{id:a,reason:s}=t.payload||{};if(!a)return;const i=String(a);e.campaigns.forEach(e=>{const t=(e.children||[]).filter(e=>String(e.id)===i||String(e.id).startsWith(`${i}_`));if(!t.length)return;t.forEach(e=>{e.disabled=!0,e.disabled_reason=s||e.disabled_reason});const a=e.children||[];a.length&&a.every(e=>e.disabled)&&(e.disabled=!0,e.disabled_reason=s||e.disabled_reason)}),Y(e),se(e)},updateCampaignFields:(e,t)=>{console.log("\ud83d\udd04 updateCampaignFields action payload:",t.payload);const a=[t.payload]||0;console.log("\ud83d\udc33",a),a.forEach(t=>{var a;const s=String(t.id),i=e.campaigns.find(e=>String(e.id)===s),{name:n,ad_platform:r,daily_budget:o,lifetime_budget:d,spend_limit:l,start_date:c,end_date:p}=t;var u,g;(console.log("\ud83d\udd0d Processing campaign ID:",s,i,{name:n,ad_platform:r,daily_budget:o,lifetime_budget:d,spend_limit:l,start_date:c,end_date:p}),i&&null!=n)&&(i.name=n,null===(u=e.ungroupedCampaigns)||void 0===u||u.forEach(e=>{String(e.id)===s&&(e.name=`${n} (${e.platform_readable||e.ad_platform||"tiktok"})`)}),null===(g=i.children)||void 0===g||g.forEach(e=>{e.name&&!e.name.includes("(")||(e.name=`${n} (${e.platform_readable||e.ad_platform||"tiktok"})`)}));null!=c&&(i.start_date=c),null!=p&&(i.end_date=p);((null===(a=i.children)||void 0===a?void 0:a.filter(e=>{var t;return(null!==(t=e.ad_platform)&&void 0!==t?t:e.platform)===r}))||[]).forEach(e=>{null!=o&&(e.daily_budget=o),null!=d&&(e.lifetime_budget=d),null!=l&&(e.spend_limit=l)})}),Y(e),se(e)},updateAdSetFields:(e,t)=>{console.log("\ud83d\udd04 updateAdSetFields action payload:",t.payload);const a=[t.payload]||0;console.log("\ud83d\udc33",a),a.forEach(t=>{const a=String(null===t||void 0===t?void 0:t.id),s=e.adSets.find(e=>String(e.id)===a),{name:i,ad_platform:n,daily_budget:r,lifetime_budget:o,start_date:d,end_date:l}=t||{};if(console.log("\ud83d\udd0d Processing adset ID:",a,s,{name:i,ad_platform:n,daily_budget:r,lifetime_budget:o,start_date:d,end_date:l}),s){var c;null!=i&&(s.name=i),null!=d&&(s.start_date=d),null!=l&&(s.end_date=l);((null===(c=s.children)||void 0===c?void 0:c.filter(e=>{var t;return(null!==(t=e.ad_platform)&&void 0!==t?t:e.platform)===n}))||[]).forEach(e=>{null!=r&&(e.daily_budget=r),null!=o&&(e.lifetime_budget=o)})}})},updateAdStatuses:(e,t)=>{e.ads=t.payload},setProgressiveLoading:(e,t)=>
1{e.progressiveLoading={...e.progressiveLoading,...t.payload}}},extraReducers:e=>{e.addCase(O.pending,(e,t)=>{var a,s,i,n,r,o;const d=(null===(a=t.meta)||void 0===a||null===(s=a.arg)||void 0===s?void 0:s.startDate)||(null===(i=e.requestedDateRange)||void 0===i?void 0:i.startDate),l=(null===(n=t.meta)||void 0===n||null===(r=n.arg)||void 0===r?void 0:r.endDate)||(null===(o=e.requestedDateRange)||void 0===o?void 0:o.endDate);e.requestedDateRange={startDate:d,endDate:l},e.loading=!0,e.archiveLoading=!0}).addCase(O.fulfilled,(e,t)=>{if(e.loading=!1,e.archiveLoading=!1,t.payload.skipInitialData)return;t.payload.clearDateRanges&&(e.dataDateRange.earliest=null,e.dataDateRange.latest=null),e.error=null;const a=Array.isArray(e.ads)?e.ads:[],s=Array.isArray(e.adSets)?e.adSets:[],i=Array.isArray(e.campaigns)?e.campaigns:[];e.ads=t.payload.ads.map(e=>{var t,s,i,n,r,o;const d=a.find(t=>String(t.id)===String(e.id)),l=null!==(t=null!==(s=null!==(i=null!==(n=e.adset_id)&&void 0!==n?n:e.ad_set_id)&&void 0!==i?i:e.ad_set)&&void 0!==s?s:e.adSetId)&&void 0!==t?t:e.ad_setId,c=null!=l?String(l):void 0,p=e.status;let u,g;switch(p){case"ACTIVE":u="Active",g="success";break;case"PAUSED":u="Paused",g="warning";break;default:u=p,g="secondary"}const m=e.children.map(t=>{var a,s,i,n;const r=null===d||void 0===d||null===(a=d.children)||void 0===a?void 0:a.find(a=>String(a.id)===String(t.id||`${e.id}_${t.platform}`)),o=null!==(s=t.status)&&void 0!==s?s:p;return{...t,id:String(t.id||`${e.id}_${t.platform}`),ad_id:String(e.id),ad_platform:t.ad_platform,platform:t.platform,name:t.name,disabled:t.disabled,thumbnail:t.thumbnail,disabled_reason:null!==(i=null!==(n=t.disabled_reason)&&void 0!==n?n:t.disabledReason)&&void 0!==i?i:null,status:o,dailyMetrics:(null===r||void 0===r?void 0:r.dailyMetrics)||{},effectiveStatus:o,displayStatus:"ACTIVE"===o?"Active":"Paused",variant:"ACTIVE"===o?"success":"warning",...N(r)}});return{...e,id:String(e.id),campaign_id:String(e.campaign_id),adset_id:c,status:e.status,thumbnail:e.thumbnail,disabled_reason:null!==(r=null!==(o=e.disabled_reason)&&void 0!==o?o:e.disabledReason)&&void 0!==r?r:null,dailyMetrics:(null===d||void 0===d?void 0:d.dailyMetrics)||{},children:m,effectiveStatus:p,displayStatus:u,variant:g,...N(d)}}),e.adSets=t.payload.adSets.map(e=>{const t=s.find(t=>String(t.id)===String(e.id)),a=e.status;let i,n;switch(a){case"ACTIVE":i="Active",n="success";break;case"PAUSED":i="Paused",n="warning";break;default:i=a,n="secondary"}return{...e,id:String(e.id),campaign_id:String(e.campaign_id),effectiveStatus:a,displayStatus:i,variant:n,children:(e.children||[]).map(a=>{var s;const i=null===t||void 0===t||null===(s=t.children)||void 0===s?void 0:s.find(e=>String(e.id)===String(a.id));return{...a,id:String(a.id),name:a.name||`${e.name} (${a.platform})`,platform:a.platform,status:a.status,effectiveStatus:a.status,displayStatus:"ACTIVE"===a.status?"Active":"Paused",variant:"ACTIVE"===a.status?"success":"warning",...N(i)}}),...N(t)}}),e.campaigns=t.payload.campaigns.map(e=>{const t=i.find(t=>String(t.id)===String(e.id)),a=e.status;let s,n;switch(a){case"ACTIVE":s="Active",n="success";break;case"PAUSED":s="Paused",n="warning";break;default:s=a,n="secondary"}return{...e,id:String(e.id),effectiveStatus:a,displayStatus:s,variant:n,children:(e.children||[]).map(a=>{var s;const i=null===t||void 0===t||null===(s=t.children)||void 0===s?void 0:s.find(e=>String(e.id)===String(a.id));return{...a,id:String(`${a.id}`),campaign_id:String(e.id),name:a.name,platform:a.platform,status:a.status,effectiveStatus:a.status,displayStatus:"ACTIVE"===a.status?"Active":"Paused",variant:"ACTIVE"===a.status?"success":"warning",...N(i)}}),...N(t)}}),e.selectedRows=l(e.selectedRows,e),Y(e),ie(e)}).addCase(O.rejected,(e,t)=>{e.loading=!1,e.archiveLoading=!1,e.error=t.error.message}).addCase(L.pending,e=>{e.performanceLoading=!0}).addCase(L.fulfilled,(e,t)=>{if(console.log("\ud83d\udcca fetchPerformanceData.fulfilled",{payload:t.payload,skipFetch:t.payload.skipFetch,meta:t.meta.arg}),t.payload.skipFetch)return void console.log("\ud83d\udcca Skipping data processing - skipFetch is true");const{startDate:a,endDate:s}=t.meta.arg;console.log("\ud83d\udcca Beginning performance data update for date range:",{startDate:a,endDate:s}),(!e.dataDateRange.earliest||a<e.dataDateRange.earliest)&&(e.dataDateRange.earliest=a),(!e.dataDateRange.latest||s>e.dataDateRange.latest)&&(e.dataDateRange.latest=s);const i=t.payload.byDate;console.log("\ud83d\udd0d REDUX: Processing aggregated performance data...");const n=new Set;let r=!1,o=0;
1Object.entries(i).forEach(e=>{let[t,a]=e;Object.entries(a).forEach(e=>{let[a,s]=e;Object.keys(s).forEach(e=>{n.add(e),e&&e.toLowerCase().includes("pinterest")&&(r=!0,o++,console.log(`\ud83d\udd0d REDUX: Found Pinterest data for ad ${a} on ${t}:`,s[e]))})})}),console.log("\ud83d\udd0d REDUX: All platforms in aggregated data:",Array.from(n).sort()),console.log("\ud83d\udd0d REDUX: Pinterest data found:",r),console.log("\ud83d\udd0d REDUX: Pinterest records count:",o),e.ads=e.ads.map(e=>{const t=e.children.map(t=>{t.platform&&t.platform.toLowerCase().includes("pinterest")&&console.log(`\ud83d\udd0d REDUX: Processing Pinterest platform child for ad ${e.id}:`,{childPlatform:t.platform,childId:t.id,childName:t.name});const a={...t.dailyMetrics};Object.entries(i).forEach(s=>{let[i,n]=s;const r=(n[String(e.id)]||{})[t.platform];r&&(a[i],a[i]={date:i,clicks:Number(r.clicks||0),impressions:Number(r.impressions||0),spend:Number(r.spend||0)})});const s=Object.values(a).reduce((e,t)=>({clicks:e.clicks+t.clicks,impressions:e.impressions+t.impressions,spend:e.spend+t.spend}),{clicks:0,impressions:0,spend:0}),n={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0};return{...t,dailyMetrics:a,...n}}),a=t.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0}),s={...a,cpm:a.impressions>0?Number((1e3*a.spend/a.impressions).toFixed(2)):0,ctr:a.impressions>0?Number((100*a.clicks/a.impressions).toFixed(2)):0,cpc:a.clicks>0?Number((a.spend/a.clicks).toFixed(2)):0};return{...e,...s,children:t}}),console.log("\ud83d\udcf1 Sample processed ads data:",e.ads.slice(0,3).map(e=>{var t;return{id:e.id,name:e.name,adset_id:e.adset_id,clicks:e.clicks,impressions:e.impressions,spend:e.spend,childrenCount:(null===(t=e.children)||void 0===t?void 0:t.length)||0}})),e.adSets=e.adSets.map(t=>{const a=e.ads.filter(e=>String(e.adset_id)===String(t.id)||String(e.ad_set_id)===String(t.id));console.log(`\ud83c\udfaf AdSet ${t.id} (${t.name}) - Found ${a.length} matching ads`),0===a.length&&console.log("\ud83d\udcdd Sample ads for debugging field names:",e.ads.slice(0,3).map(e=>({id:e.id,name:e.name,adset_id:e.adset_id,ad_set_id:e.ad_set_id,all_fields:Object.keys(e).filter(e=>e.includes("set"))})));const s=a.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0});console.log(`\ud83c\udfaf AdSet ${t.id} calculated totals:`,s);const i={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0},n=t.children.map(e=>{const t=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0}),s={...t,cpm:t.impressions>0?Number((1e3*t.spend/t.impressions).toFixed(2)):0,ctr:t.impressions>0?Number((100*t.clicks/t.impressions).toFixed(2)):0,cpc:t.clicks>0?Number((t.spend/t.clicks).toFixed(2)):0};return{...e,...s}});return{...t,...i,children:n}}),e.campaigns=e.campaigns.map(t=>{const a=e.adSets.filter(e=>String(e.campaign_id)===String(t.id)),s=a.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0}),i={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0},n=t.children.map(e=>{const t=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0)}),{clicks:0,impressions:0,spend:0}),s={...t,cpm:t.impressions>0?Number((1e3*t.spend/t.impressions).toFixed(2)):0,ctr:t.impressions>0?Number((100*t.clicks/t.impressions).toFixed(2)):0,cpc:t.clicks>0?Number((t.spend/t.clicks).toFixed(2)):0};return{...e,...s}});return{...t,...i,children:n}}),e.performanceLoading=!1,console.log("\ud83d\udcca Performance data update complete")}
1).addCase(L.rejected,e=>{e.performanceLoading=!1}).addCase(x.pending,(e,t)=>{var a,s,i,n,r,o;const d=(null===(a=t.meta)||void 0===a||null===(s=a.arg)||void 0===s?void 0:s.startDate)||(null===(i=e.requestedDateRange)||void 0===i?void 0:i.startDate),l=(null===(n=t.meta)||void 0===n||null===(r=n.arg)||void 0===r?void 0:r.endDate)||(null===(o=e.requestedDateRange)||void 0===o?void 0:o.endDate);e.requestedDateRange={startDate:d,endDate:l},e.performanceLoading=!0,e.progressiveLoading={...e.progressiveLoading,isLoading:!1,progress:null,error:null}}).addCase(x.fulfilled,(e,t)=>{if(console.log("\ud83d\udcca fetchAggregatedPerformanceData.fulfilled",{payload:t.payload,skipFetch:t.payload.skipFetch,meta:t.meta.arg}),t.payload.skipFetch)return console.log("\ud83d\udcca Skipping data processing - skipFetch is true"),void(e.performanceLoading=!1);e.comparisonDataLoaded=Boolean(t.payload.comparisonRequested);const{startDate:a,endDate:s}=t.payload.dateRange;console.log("\ud83d\udcca Beginning aggregated performance data update for date range:",{startDate:a,endDate:s}),e.dataDateRange.earliest=a,e.dataDateRange.latest=s;const i=t.payload.aggregated,n=t.payload.previousAggregated||{},r=function(e,t,a){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const i=e[String(t)];if(!i)return null;const n={meta_ads:["meta_ads","facebook","instagram"],facebook:["meta_ads","facebook"],instagram:["meta_ads","instagram"],audience_network:["audience_network"],messenger:["messenger"],google:["google","google_ads"],google_ads:["google_ads","google"],tiktok:["tiktok","tiktok_ads"],tiktok_ads:["tiktok_ads","tiktok"],linkedin:["linkedin","linkedin_ads"],linkedin_ads:["linkedin_ads","linkedin"],pinterest:["pinterest","pinterest_ads"],pinterest_ads:["pinterest_ads","pinterest"],snapchat:["snapchat","snapchat_ads"],snapchat_ads:["snapchat_ads","snapchat"],reddit:["reddit","reddit_ads"],reddit_ads:["reddit_ads","reddit"]}[a]||[a];let r=null;for(const u of n)if(i[u]){r=i[u];break}if(!r)return null;const o={[`${s}clicks`]:Number(r.clicks||0),[`${s}impressions`]:Number(r.impressions||0),[`${s}spend`]:Number(r.spend||0),[`${s}revenue`]:Number(r.revenue||0)},d=o[`${s}clicks`],l=o[`${s}impressions`],c=o[`${s}spend`],p=o[`${s}revenue`];return{...o,[`${s}cpm`]:l>0?Number((1e3*c/l).toFixed(2)):0,[`${s}ctr`]:l>0?Number((100*d/l).toFixed(2)):0,[`${s}cpc`]:d>0?Number((c/d).toFixed(2)):0,[`${s}roas`]:c>0?Number((p/c).toFixed(4)):0}};e.ads=e.ads.map(e=>{const t=e.children.map(t=>{const a=String(e.id),s=t.platform,o=r(i,a,s,""),d=r(n,a,s,"previous_");return o||d?{...t,...o||{},...d||{}}:t}),a=t.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0),revenue:e.revenue+(t.revenue||0)}),{clicks:0,impressions:0,spend:0,revenue:0}),s=t.reduce((e,t)=>({previous_clicks:e.previous_clicks+(t.previous_clicks||0),previous_impressions:e.previous_impressions+(t.previous_impressions||0),previous_spend:e.previous_spend+(t.previous_spend||0),previous_revenue:e.previous_revenue+(t.previous_revenue||0)}),{previous_clicks:0,previous_impressions:0,previous_spend:0,previous_revenue:0}),o={...a,cpm:a.impressions>0?Number((1e3*a.spend/a.impressions).toFixed(2)):0,ctr:a.impressions>0?Number((100*a.clicks/a.impressions).toFixed(2)):0,cpc:a.clicks>0?Number((a.spend/a.clicks).toFixed(2)):0,roas:a.spend>0?Number((a.revenue/a.spend).toFixed(4)):0},d={...s,previous_cpm:s.previous_impressions>0?Number((1e3*s.previous_spend/s.previous_impressions).toFixed(2)):0,previous_ctr:s.previous_impressions>0?Number((100*s.previous_clicks/s.previous_impressions).toFixed(2)):0,previous_cpc:s.previous_clicks>0?Number((s.previous_spend/s.previous_clicks).toFixed(2)):0,previous_roas:s.previous_spend>0?Number((s.previous_revenue/s.previous_spend).toFixed(4)):0};return{...e,...o,...d,children:t}}),e.adSets=e.adSets.map(t=>{const a=e.ads.filter(e=>String(e.adset_id)===String(t.id)||String(e.ad_set_id)===String(t.id)),s=a.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0),revenue:e.revenue+(t.revenue||0)}),{clicks:0,impressions:0,spend:0,revenue:0}),i=a.reduce((e,t)=>
1({previous_clicks:e.previous_clicks+(t.previous_clicks||0),previous_impressions:e.previous_impressions+(t.previous_impressions||0),previous_spend:e.previous_spend+(t.previous_spend||0),previous_revenue:e.previous_revenue+(t.previous_revenue||0)}),{previous_clicks:0,previous_impressions:0,previous_spend:0,previous_revenue:0}),n={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0,roas:s.spend>0?Number((s.revenue/s.spend).toFixed(4)):0},r={...i,previous_cpm:i.previous_impressions>0?Number((1e3*i.previous_spend/i.previous_impressions).toFixed(2)):0,previous_ctr:i.previous_impressions>0?Number((100*i.previous_clicks/i.previous_impressions).toFixed(2)):0,previous_cpc:i.previous_clicks>0?Number((i.previous_spend/i.previous_clicks).toFixed(2)):0,previous_roas:i.previous_spend>0?Number((i.previous_revenue/i.previous_spend).toFixed(4)):0},o=t.children.map(e=>{const t=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0),revenue:e.revenue+(t.revenue||0)}),{clicks:0,impressions:0,spend:0,revenue:0}),s=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>({previous_clicks:e.previous_clicks+(t.previous_clicks||0),previous_impressions:e.previous_impressions+(t.previous_impressions||0),previous_spend:e.previous_spend+(t.previous_spend||0),previous_revenue:e.previous_revenue+(t.previous_revenue||0)}),{previous_clicks:0,previous_impressions:0,previous_spend:0,previous_revenue:0}),i={...t,cpm:t.impressions>0?Number((1e3*t.spend/t.impressions).toFixed(2)):0,ctr:t.impressions>0?Number((100*t.clicks/t.impressions).toFixed(2)):0,cpc:t.clicks>0?Number((t.spend/t.clicks).toFixed(2)):0,roas:t.spend>0?Number((t.revenue/t.spend).toFixed(4)):0},n={...s,previous_cpm:s.previous_impressions>0?Number((1e3*s.previous_spend/s.previous_impressions).toFixed(2)):0,previous_ctr:s.previous_impressions>0?Number((100*s.previous_clicks/s.previous_impressions).toFixed(2)):0,previous_cpc:s.previous_clicks>0?Number((s.previous_spend/s.previous_clicks).toFixed(2)):0,previous_roas:s.previous_spend>0?Number((s.previous_revenue/s.previous_spend).toFixed(4)):0};return{...e,...i,...n}});return{...t,...n,...r,children:o}}),e.campaigns=e.campaigns.map(t=>{const a=e.adSets.filter(e=>String(e.campaign_id)===String(t.id)),s=a.reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0),revenue:e.revenue+(t.revenue||0)}),{clicks:0,impressions:0,spend:0,revenue:0}),i=a.reduce((e,t)=>({previous_clicks:e.previous_clicks+(t.previous_clicks||0),previous_impressions:e.previous_impressions+(t.previous_impressions||0),previous_spend:e.previous_spend+(t.previous_spend||0),previous_revenue:e.previous_revenue+(t.previous_revenue||0)}),{previous_clicks:0,previous_impressions:0,previous_spend:0,previous_revenue:0}),n={...s,cpm:s.impressions>0?Number((1e3*s.spend/s.impressions).toFixed(2)):0,ctr:s.impressions>0?Number((100*s.clicks/s.impressions).toFixed(2)):0,cpc:s.clicks>0?Number((s.spend/s.clicks).toFixed(2)):0,roas:s.spend>0?Number((s.revenue/s.spend).toFixed(4)):0},r={...i,previous_cpm:i.previous_impressions>0?Number((1e3*i.previous_spend/i.previous_impressions).toFixed(2)):0,previous_ctr:i.previous_impressions>0?Number((100*i.previous_clicks/i.previous_impressions).toFixed(2)):0,previous_cpc:i.previous_clicks>0?Number((i.previous_spend/i.previous_clicks).toFixed(2)):0,previous_roas:i.previous_spend>0?Number((i.previous_revenue/i.previous_spend).toFixed(4)):0},o=t.children.map(e=>{const t=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>({clicks:e.clicks+(t.clicks||0),impressions:e.impressions+(t.impressions||0),spend:e.spend+(t.spend||0),revenue:e.revenue+(t.revenue||0)}),{clicks:0,impressions:0,spend:0,revenue:0}),s=a.flatMap(e=>e.children||[]).filter(t=>String(t.platform)===String(e.platform)).reduce((e,t)=>
1({previous_clicks:e.previous_clicks+(t.previous_clicks||0),previous_impressions:e.previous_impressions+(t.previous_impressions||0),previous_spend:e.previous_spend+(t.previous_spend||0),previous_revenue:e.previous_revenue+(t.previous_revenue||0)}),{previous_clicks:0,previous_impressions:0,previous_spend:0,previous_revenue:0}),i={...t,cpm:t.impressions>0?Number((1e3*t.spend/t.impressions).toFixed(2)):0,ctr:t.impressions>0?Number((100*t.clicks/t.impressions).toFixed(2)):0,cpc:t.clicks>0?Number((t.spend/t.clicks).toFixed(2)):0,roas:t.spend>0?Number((t.revenue/t.spend).toFixed(4)):0},n={...s,previous_cpm:s.previous_impressions>0?Number((1e3*s.previous_spend/s.previous_impressions).toFixed(2)):0,previous_ctr:s.previous_impressions>0?Number((100*s.previous_clicks/s.previous_impressions).toFixed(2)):0,previous_cpc:s.previous_clicks>0?Number((s.previous_spend/s.previous_clicks).toFixed(2)):0,previous_roas:s.previous_spend>0?Number((s.previous_revenue/s.previous_spend).toFixed(4)):0};return{...e,...i,...n}});return{...t,...n,...r,children:o}}),e.performanceLoading=!1,e.progressiveLoading={...e.progressiveLoading,isLoading:!1,progress:null,error:null},console.log("\ud83d\udcca Aggregated performance data update complete")}).addCase(x.rejected,e=>{var t,a;null!==(t=e.requestedDateRange)&&void 0!==t&&t.startDate&&null!==(a=e.requestedDateRange)&&void 0!==a&&a.endDate&&(e.dataDateRange.earliest=e.requestedDateRange.startDate,e.dataDateRange.latest=e.requestedDateRange.endDate),e.performanceLoading=!1,e.progressiveLoading={...e.progressiveLoading,isLoading:!1}}).addCase(B.fulfilled,(e,t)=>{t.payload&&(e.dataDateRange=t.payload)}).addCase(j.pending,e=>{e.chartData.loading=!0,e.chartData.error=null}).addCase(j.fulfilled,(e,t)=>{if(console.log("\ud83d\udcc8 fetchChartData.fulfilled",t.payload),e.chartData.loading=!1,e.chartData.data=t.payload,e.chartData.error=null,!t.payload.fromCache&&t.payload.cacheKey){const a={...t.payload};delete a.fromCache,delete a.cacheKey,e.chartData.cache[t.payload.cacheKey]=a,console.log("\ud83d\udcbe Cached chart data with key:",t.payload.cacheKey),console.log("\ud83d\udce6 Total cached items:",Object.keys(e.chartData.cache).length)}else t.payload.fromCache&&console.log("\u267b\ufe0f Using cached chart data")}).addCase(j.rejected,(e,t)=>{e.chartData.loading=!1,e.chartData.error=t.error.message}).addCase($.pending,(e,t)=>{var a,s;const i=(null===(a=t.meta)||void 0===a||null===(s=a.arg)||void 0===s?void 0:s.dateRange)||"7d";e.dashboardKpis.pendingRanges||(e.dashboardKpis.pendingRanges={}),e.dashboardKpis.lastAttemptedAtByRange||(e.dashboardKpis.lastAttemptedAtByRange={}),e.dashboardKpis.errorByRange||(e.dashboardKpis.errorByRange={}),e.dashboardKpis.pendingRanges[i]=!0,e.dashboardKpis.lastAttemptedAtByRange[i]=Date.now(),e.dashboardKpis.loading=!0,e.dashboardKpis.errorByRange[i]=null,e.dashboardKpis.error=null}).addCase($.fulfilled,(e,t)=>{var a,s,i,n,r;const o=(null===(a=t.payload)||void 0===a?void 0:a.dateRange)||(null===(s=t.meta)||void 0===s||null===(i=s.arg)||void 0===i?void 0:i.dateRange)||"7d",d=Boolean(null===(n=t.meta)||void 0===n||null===(r=n.arg)||void 0===r?void 0:r.suppressActivate);e.dashboardKpis.pendingRanges||(e.dashboardKpis.pendingRanges={}),e.dashboardKpis.pendingRanges[o]=!1,e.dashboardKpis.loading=Object.values(e.dashboardKpis.pendingRanges).some(Boolean),e.dashboardKpis.byRange||(e.dashboardKpis.byRange={}),e.dashboardKpis.lastFailedAtByRange||(e.dashboardKpis.lastFailedAtByRange={}),e.dashboardKpis.errorByRange||(e.dashboardKpis.errorByRange={}),e.dashboardKpis.byRange[o]=t.payload,e.dashboardKpis.lastFailedAtByRange[o]=null,e.dashboardKpis.errorByRange[o]=null,d||(e.dashboardKpis.current=t.payload.current,e.dashboardKpis.previous=t.payload.previous,e.dashboardKpis.dailyData=t.payload.dailyData,e.dashboardKpis.previousDailyData=t.payload.previousDailyData,e.dashboardKpis.lastFetched=t.payload.lastFetched,e.dashboardKpis.rawPerformance=t.payload.rawPerformance,e.dashboardKpis.dateRange=o),e.dashboardKpis.error=null}).addCase($.rejected,(e,t)=>{var a,s,i,n;const r=(null===(a=t.meta)||void 0===a||null===(s=a.arg)||void 0===s?void 0:s.dateRange)||"7d";e.dashboardKpis.pendingRanges||(e.dashboardKpis.pendingRanges={}),e.dashboardKpis.lastFailedAtByRange||(e.dashboardKpis.lastFailedAtByRange={}),e.dashboardKpis.errorByRange||(e.dashboardKpis.errorByRange={}),e.dashboardKpis.pendingRanges[r]=!1,e.dashboardKpis.lastFailedAtByRange[r]=Date.now(),e.dashboardKpis.errorByRange[r]=t.error.message,e.dashboardKpis.loading=Object.values(e.dashboardKpis.pendingRanges).some(Boolean),null!==(i=t.meta)&&void 0!==i&&null!==(n=i.arg)&&void 0!==n&&n.suppressActivate||(e.dashboardKpis.error=t.error.message)}).addCase(U.pending,e=>
1{e.topMovers.loading=!0,e.topMovers.error=null}).addCase(U.fulfilled,(e,t)=>{var a,s,i,n;e.topMovers.loading=!1,e.topMovers.campaigns=t.payload.campaigns,e.topMovers.adSets=t.payload.adSets,e.topMovers.ads=t.payload.ads,e.topMovers.campaignPlatforms=t.payload.campaignPlatforms,e.topMovers.adSetPlatforms=t.payload.adSetPlatforms,e.topMovers.adPlatforms=t.payload.adPlatforms,e.topMovers.campaignPlatformsImpressions=t.payload.campaignPlatformsImpressions,e.topMovers.adSetPlatformsImpressions=t.payload.adSetPlatformsImpressions,e.topMovers.adPlatformsImpressions=t.payload.adPlatformsImpressions,e.topMovers.campaignPlatformsSpend=t.payload.campaignPlatformsSpend,e.topMovers.adSetPlatformsSpend=t.payload.adSetPlatformsSpend,e.topMovers.adPlatformsSpend=t.payload.adPlatformsSpend,e.topMovers.campaignPlatformsCtr=t.payload.campaignPlatformsCtr,e.topMovers.adSetPlatformsCtr=t.payload.adSetPlatformsCtr,e.topMovers.adPlatformsCtr=t.payload.adPlatformsCtr,e.topMovers.campaignPlatformsCpm=t.payload.campaignPlatformsCpm,e.topMovers.adSetPlatformsCpm=t.payload.adSetPlatformsCpm,e.topMovers.adPlatformsCpm=t.payload.adPlatformsCpm,e.topMovers.campaignPlatformsCpc=t.payload.campaignPlatformsCpc,e.topMovers.adSetPlatformsCpc=t.payload.adSetPlatformsCpc,e.topMovers.adPlatformsCpc=t.payload.adPlatformsCpc,e.topMovers.lastFetched=t.payload.lastFetched,e.topMovers.sortingType=(null===(a=t.meta)||void 0===a||null===(s=a.arg)||void 0===s?void 0:s.sortingType)||"value",e.topMovers.dateRange=(null===(i=t.meta)||void 0===i||null===(n=i.arg)||void 0===n?void 0:n.dateRange)||"7d",e.topMovers.error=null}).addCase(U.rejected,(e,t)=>{e.topMovers.loading=!1,e.topMovers.error=t.error.message})}}),re=e=>{var t;return(null===e||void 0===e||null===(t=e.performance)||void 0===t?void 0:t.rateLimitCooldowns)||{}},oe=(e,t,a)=>{const s=re(e)[t];if(!s)return!1;const i=Date.now(),n=void 0!==a&&null!==a?String(a):null;return(n&&s[n]?[s[n]]:Object.values(s||{})).some(e=>"number"===typeof e&&e>i)},de=(e,t,a)=>{const s=re(e)[t];if(!s)return 0;const i=Date.now(),n=void 0!==a&&null!==a?String(a):null,r=n&&s[n]?[s[n]]:Object.values(s||{}),o=Math.max(...r.filter(e=>"number"===typeof e));return!Number.isFinite(o)||o<=i?0:Math.max(0,Math.ceil((o-i)/1e3))},le=()=>(e,t)=>{var a;const s=(null===(a=t().performance)||void 0===a?void 0:a.pendingStatusRollbacks)||{};console.log("\ud83d\udd04 Reverting pending status rollbacks:"),console.log("  campaigns:",JSON.stringify(s.campaigns||{})),console.log("  adSets:",JSON.stringify(s.adSets||{})),console.log("  ads:",JSON.stringify(s.ads||{}));const i=Object.keys(s.campaigns||{});i.length?(console.log("\ud83d\udd04 Reverting campaigns:",{ids:i,statusMap:s.campaigns,statusMapJSON:JSON.stringify(s.campaigns)}),e(J({ids:i,statusMap:s.campaigns}))):console.log("\u26a0\ufe0f No campaign rollbacks to revert");const n=Object.keys(s.adSets||{});n.length?(console.log("\ud83d\udd04 Reverting adSets:",{ids:n,statusMap:s.adSets,statusMapJSON:JSON.stringify(s.adSets)}),e(W({ids:n,statusMap:s.adSets}))):console.log("\u26a0\ufe0f No adSet rollbacks to revert");const r=Object.keys(s.ads||{});r.length?(console.log("\ud83d\udd04 Reverting ads:",{ids:r,statusMap:s.ads,statusMapJSON:JSON.stringify(s.ads)}),e(Q({ids:r,statusMap:s.ads}))):console.log("\u26a0\ufe0f No ad rollbacks to revert"),e(ne.actions.clearPendingStatusRollback({entityType:"all"})),console.log("\u2705 Pending status rollbacks completed")},{toggleGrouping:ce,updateSelection:pe,clearSelection:ue,setSelectedRows:ge,setShowEmptyRows:me,setComparisonMode:ve,toggleComparisonMode:fe,setFilterText:Se,resetAdsManagerData:he,clearChartCache:_e,setDateRange:ye,setCampaigns:be,setSelectedCampaigns:ke,setLoading:De,setTopMoversLoading:Ce,setError:Ae,setRateLimitCooldown:Ee,cleanupRateLimitCooldowns:Pe,registerPendingStatusRollback:Re,clearPendingStatusRollback:we,setProgressiveLoading:Ne,updateCampaignFields:Ie,updateAdSetFields:Fe,markRowUnmanageable:Te}=ne.actions,Me=ne.reducer}}]);

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.