PageSourceSearch

https://brasilmineral.com.br/_next/static/chunks/app/admin/magazin…/page-6ee9c8aa6c74e59c.js

js brasilmineral.com.br collected 2026-09-24 19:18:15 UTC 15,681 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[30141],{5801:(e,s,i)=>{"use strict";i.r(s),i.d(s,{default:()=>E});var t=i(95155),r=i(12115),a=i(98500),l=i.n(a),n=i(5772),o=i(73321),c=i(48375),d=i(6296),u=i(80723),m=i(6962),p=i(41585),f=i(7915),x=i(76648),h=i(44071),b=i(81477),g=i(89239),j=i(9192);function v(e){return e.toLocaleString("pt-BR")}function N(e){return`${e.toFixed(2)}%`}function k(e,s){return e>0?s/e*100:0}function w(){return{impressions:0,clicks:0}}function y({icon:e,label:s,value:i,sub:r}){return(0,t.jsx)(b.Zp,{children:(0,t.jsxs)(b.Wu,{className:"p-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-muted-foreground uppercase tracking-wide",children:[(0,t.jsx)(e,{className:"h-3.5 w-3.5"})," ",s]}),(0,t.jsx)("p",{className:"mt-2 text-2xl font-bold",children:i}),r&&(0,t.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:r})]})})}function C(e){return"sem-edicao"===e?"Sem edi\xe7\xe3o":`Edi\xe7\xe3o ${e}`}function E(){let{user:e,isAdmin:s,isLoading:i}=(0,c.A)(),a=(0,o.useParams)().advertiserId,E=(0,o.useSearchParams)().get("edition"),[I,A]=(0,r.useState)(null),[S,R]=(0,r.useState)(null),[T,F]=(0,r.useState)(!0),[z,P]=(0,r.useState)(null),[B,q]=(0,r.useState)(!1);(0,r.useEffect)(()=>{!i&&s&&e&&(async()=>{try{let s=await e.getIdToken(),i=await fetch(`/api/admin/magazine-stats/advertiser/${a}`,{headers:{Authorization:`Bearer ${s}`}}),t=await i.json();if(!t.success)throw Error(t.error||"Falha ao carregar relat\xf3rio");A(t),E&&t.allEditions.includes(E)?R(new Set([E])):R(new Set(t.allEditions))}catch(e){P(e.message)}finally{F(!1)}})()},[i,s,e,a]);let D=(0,r.useMemo)(()=>I&&S?I.editions.filter(e=>S.has(e.editionNumber)).sort((e,s)=>s.editionNumber.localeCompare(e.editionNumber,void 0,{numeric:!0})):[],[I,S]),$=(0,r.useMemo)(()=>{let e={flipbook:w(),site:w(),unclassified:w(),unclassifiedEstimate:{flipbookImpressions:0,siteImpressions:0}},s=!1;for(let i of D)e.flipbook.impressions+=i.flipbook.impressions,e.flipbook.clicks+=i.flipbook.clicks,e.site.impressions+=i.site.impressions,e.site.clicks+=i.site.clicks,e.unclassified.impressions+=i.unclassified.impressions,e.unclassified.clicks+=i.unclassified.clicks,i.unclassifiedEstimate&&(s=!0,e.unclassifiedEstimate.flipbookImpressions+=i.unclassifiedEstimate.flipbookImpressions,e.unclassifiedEstimate.siteImpressions+=i.unclassifiedEstimate.siteImpressions);return{...e,unclassifiedEstimate:s?e.unclassifiedEstimate:void 0}},[D]),L=$.flipbook.impressions+$.site.impressions+$.unclassified.impressions,M=$.flipbook.clicks+$.site.clicks+$.unclassified.clicks,_=(0,r.useCallback)(async()=>{if(I&&e&&S&&0!==S.size){q(!0);try{let s=await e.getIdToken(),i=await fetch(`/api/admin/magazine-stats/advertiser/${a}/pdf`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({editions:[...S]})});if(!i.ok)throw Error(`Falha ao gerar PDF (HTTP ${i.status})`);let t=await i.blob(),r=URL.createObjectURL(t),l=document.createElement("a");l.href=r,l.download=`relatorio-${I.companyName.replace(/[^a-z0-9]+/gi,"-").toLowerCase()}.pdf`,document.body.appendChild(l),l.click(),l.remove(),URL.revokeObjectURL(r)}catch(e){console.error("PDF export error:",e),alert("Erro ao gerar PDF. Tente novamente.")}finally{q(!1)}}},[I,e,a,S]);return i||!s?(0,t.jsxs)("div",{className:"container mx-auto p-8 flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(d.A,{className:"h-5 w-5 animate-spin"})," Carregando…"]}):(0,t.jsxs)("div",{className:"container mx-auto max-w-6xl p-6 space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)(l(),{href:"/admin/magazine-stats",className:"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground mb-2",children:[(0,t.jsx)(u.A,{className:"h-4 w-4"})," Estat\xedsticas de Revista"]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[I?.logoUrl&&(0,t.jsx)("div",{className:"relative h-12 w-12 shrink-0 overflow-hidden rounded border bg-white",children:(0,t.jsx)(n.default,{src:I.logoUrl,alt:I.companyName,fill:!0,className:"object-contain p-1",unoptimized:!0})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-3xl font-bold",style:{color:"#4f0000"},children:I?.companyName||"Anunciante"}),(0,t.jsx)("p",{className:"text-muted-foreground mt-1",children:"An\xfancios em revista — flipbook \xd7 artigo do site, por edi\xe7\xe3o."})]})]}),(0,t.jsxs)(g.$,{onClick:_,disabled:!I||B||!S?.size,className:"gap-2",children:[B?(0,t.jsx)(d.A,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(m.A,{className:"h-4 w-4"}),"Exportar PDF"]})]})]}),z&&(0,t.jsx)(b.Zp,{className:"border-destructive/50",children:(0,t.jsxs)(b.Wu,{className:"p-4 flex items-center gap-2 text-destructive text-sm",children:[(0,t.jsx)(p.A,{className:"h-4 w-4"})," ",z]})}),T&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground py-8",children:[(0,t.jsx)(d.A,{className:"h-5 w-5 animate-spin"})," Carregando relat\xf3rio…"]}),I&&!T&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Edi\xe7\xf5es inclu\xeddas"}),(0,t.jsx)(b.BT,{children:"Marque quais edi\xe7\xf5es entram nos totais e no PDF exportado."})]}),(0,t.jsx)(b.Wu,{children:0===I.allEditions.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Nenhum an\xfancio rastreado pra este anunciante ainda."}):(0,t.jsx)("div",{className:"flex flex-wrap gap-3",children:I.allEditions.map(e=>(0,t.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer text-sm select-none rounded-md border px-2.5 py-1.5 hover:bg-muted",children:[(0,t.jsx)(j.S,{checked:S?.has(e)??!1,onCheckedChange:s=>{var i;return i=!!s,void R(s=>{let t=new Set(s);return i?t.add(e):t.delete(e),t})},className:"h-4 w-4"}),C(e)]},e))})})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5",children:[(0,t.jsx)(y,{icon:f.A,label:"Impress\xf5es (flipbook)",value:v($.flipbook.impressions)}),(0,t.jsx)(y,{icon:x.A,label:"Cliques (flipbook)",value:v($.flipbook.clicks),sub:N(k($.flipbook.impressions,$.flipbook.clicks))}),(0,t.jsx)(y,{icon:f.A,label:"Impress\xf5es (site)",value:v($.site.impressions)}),(0,t.jsx)(y,{icon:x.A,label:"Cliques (site)",value:v($.site.clicks),sub:N(k($.site.impressions,$.site.clicks))}),(0,t.jsx)(y,{icon:h.A,label:"CTR combinado",value:N(k(L,M))})]}),(0,t.jsxs)(b.Zp,{children:[(0,t.jsxs)(b.aR,{children:[(0,t.jsx)(b.ZB,{className:"text-base",children:"Por edi\xe7\xe3o"}),(0,t.jsx)(b.BT,{children:"Impress\xf5es/cliques separados por canal — flipbook (overlay no PDF
1) vs. artigo do site (inline/sidebar/window/interstitial)."}),$.unclassifiedEstimate&&(0,t.jsx)(b.BT,{className:"text-[11px]",children:'"Sem canal registrado" = impress\xf5es gravadas sem canal (rastreamento antigo). A linha "≈" \xe9 uma estimativa desse split: cruza as sess\xf5es que realmente visitaram a p\xe1gina do an\xfancio no flipbook (log de leitura) com o total de impress\xf5es daquele dia; o que sobra vira "site" estimado. N\xe3o estima cliques. As colunas flipbook/site mostram s\xf3 o confirmado.'})]}),(0,t.jsx)(b.Wu,{children:0===D.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Selecione ao menos uma edi\xe7\xe3o."}):(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"w-full text-sm",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"border-b text-left text-xs uppercase text-muted-foreground",children:[(0,t.jsx)("th",{className:"py-2 pr-4",children:"Edi\xe7\xe3o"}),(0,t.jsx)("th",{className:"py-2 pr-4 text-right",children:"Impr. flipbook"}),(0,t.jsx)("th",{className:"py-2 pr-4 text-right",children:"Cliques flipbook"}),(0,t.jsx)("th",{className:"py-2 pr-4 text-right",children:"Impr. site"}),(0,t.jsx)("th",{className:"py-2 pr-4 text-right",children:"Cliques site"}),(0,t.jsx)("th",{className:"py-2 pr-4 text-right",children:"Sem canal registrado"}),(0,t.jsx)("th",{className:"py-2 text-right",children:"CTR"})]})}),(0,t.jsx)("tbody",{children:D.map(e=>{let s=e.flipbook.impressions+e.site.impressions+e.unclassified.impressions,i=e.flipbook.clicks+e.site.clicks+e.unclassified.clicks;return(0,t.jsxs)("tr",{className:"border-b last:border-0",children:[(0,t.jsx)("td",{className:"py-2 pr-4 font-medium",children:C(e.editionNumber)}),(0,t.jsx)("td",{className:"py-2 pr-4 text-right tabular-nums",children:v(e.flipbook.impressions)}),(0,t.jsx)("td",{className:"py-2 pr-4 text-right tabular-nums",children:v(e.flipbook.clicks)}),(0,t.jsx)("td",{className:"py-2 pr-4 text-right tabular-nums",children:v(e.site.impressions)}),(0,t.jsx)("td",{className:"py-2 pr-4 text-right tabular-nums",children:v(e.site.clicks)}),(0,t.jsx)("td",{className:"py-2 pr-4 text-right tabular-nums text-muted-foreground",children:e.unclassified.impressions>0||e.unclassified.clicks>0?(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{children:[v(e.unclassified.impressions)," / ",v(e.unclassified.clicks)]}),e.unclassifiedEstimate&&(0,t.jsxs)("div",{className:"text-[11px] font-normal normal-case",children:["≈ ",v(e.unclassifiedEstimate.flipbookImpressions)," flipbook / ",v(e.unclassifiedEstimate.siteImpressions)," site"]})]}):"—"}),(0,t.jsx)("td",{className:"py-2 text-right tabular-nums",children:N(k(s,i))})]},e.editionNumber)})})]})})})]})]})]})}},9192:(e,s,i)=>{"use strict";i.d(s,{S:()=>o});var t=i(95155),r=i(12115),a=i(47279),l=i(94514),n=i(40980);let o=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)(a.bL,{ref:i,className:(0,n.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...s,children:(0,t.jsx)(a.C1,{className:(0,n.cn)("flex items-center justify-center text-current"),children:(0,t.jsx)(l.A,{className:"h-4 w-4"})})}));o.displayName=a.bL.displayName},19865:(e,s,i)=>{"use strict";i.d(s,{IG:()=>d,db:()=>u,j2:()=>c,yA:()=>o});var t=i(97873),r=i(65140),a=i(30928),l=i(4927);let n={apiKey:"AIzaSyAO_sbTBemKD068NVqv3RYb15ckEthjtrQ",authDomain:"login.brasilmineral.com.br",projectId:"brasil-mineral-newsletter",storageBucket:"brasil-mineral-newsletter.firebasestorage.app",messagingSenderId:"145521886346",appId:"1:145521886346:web:bb9afd106c161d05031973",measurementId:"G-QCKC22MY1G"},o=0===(0,t.Dk)().length?(0,t.Wp)(n):(0,t.Sx)(),c=(0,r.xI)(o),d=(0,a.c7)(o),u=(0,l.aU)(o,"premium-us".trim()||"(default)");n.projectId||console.error("Firebase Initialization Error: Firebase config is not fully set. Check your NEXT_PUBLIC_FIREBASE_ environment variables. Firebase features may not work correctly.")},28437:(e,s,i)=>{Promise.resolve().then(i.bind(i,5801))},40980:(e,s,i)=>{"use strict";i.d(s,{Y:()=>l,cn:()=>a,o:()=>n});var t=i(29722),r=i(622);function a(...e){return(0,r.QP)((0,t.$)(e))}function l(e){return e?e.toString().toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[\s_]+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""):`artigo-sem-titulo-${Date.now()}`}function n(e){return e&&"string"==typeof e?e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]/g,""):""}},48375:(e,s,i)=>{"use strict";i.d(s,{A:()=>c,O:()=>o});var t=i(95155),r=i(12115),a=i(65140),l=i(19865);let n=(0,r.createContext)(void 0);function o({children:e}){let[s,i]=(0,r.useState)(null),[c,d]=(0,r.useState)(null),[u,m]=(0,r.useState)(null),[p,f]=(0,r.useState)(null),[x,h]=(0,r.useState)(!0),[b,g]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e,s=!1,t=()=>{s||(e=(0,a.hg)(l.j2,async e=>{if(i(e),g(!!e?.emailVerified),e)try{let s=await e.getIdToken(),i=await fetch("/api/auth/me",{headers:{Authorization:`Bearer ${s}`}}),t=i.ok?await i.json():null;d(t?.user??null),m(t?.profile??null),f(t?.access??null)}catch(e){console.error("[AuthContext] Failed to fetch user data:",e),d(null),m(null),f(null)}else d(null),m(null),f(null);h(!1)}))},r="function"==typeof window.requestIdleCallback?window.requestIdleCallback(t,{timeout:2e3}):window.setTimeout(t,0);return()=>{s=!0,"function"==typeof window.cancelIdleCallback?window.cancelIdleCallback(r):window.clearTimeout(r),e?.()}},[]);let j=(0,r.useMemo)(()=>p?.isAdmin??c?.role==="admin",[p,c]),v=(0,r.useMemo)(()=>p?.isEditor??(c?.role==="admin"||c?.role==="editor"),[p,c]),N=(0,r.useMemo)(()=>p?.dashboardPermissions??c?.dashboardPermissions??[],[p,c]),k=(0,r.useMemo)(()=>e=>j||N.includes(e),[j,N]),w=(0,r.useMemo)(()=>!!s,[s]),y=(0,r.useMemo)(()=>u?.accountType==="premium",[u]),C=(0,r.useMemo)(()=>!!u?.isAdvertiser,[u]),E=async()=>{await l.j2.currentUser?.reload(),g(!!l.j2.currentUser?.emailVerified)},I=(0,r.useMemo)(()=>({user:s,appUser:c,userProfile:u,isLoading:x,isAdmin:j,isEditor:v,dashboardPermissions:N,hasFeature:k,isAuthenticated:w,isPremium:y,isAdvertiser:C,emailVerified:b,refreshEmailVerified:E}),[s,c,u,x,j,v,N,k,w,y,C,b]);return(0,t.jsx)(n.Provider,{value:I,children:e})}function c(){let e=(0,r.useContext)(n);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}}
1,81477:(e,s,i)=>{"use strict";i.d(s,{BT:()=>c,Wu:()=>d,ZB:()=>o,Zp:()=>l,aR:()=>n});var t=i(95155),r=i(12115),a=i(40980);let l=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",e),...s}));l.displayName="Card";let n=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",e),...s}));n.displayName="CardHeader";let o=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",e),...s}));o.displayName="CardTitle";let c=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("text-sm text-muted-foreground",e),...s}));c.displayName="CardDescription";let d=r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("p-6 pt-0",e),...s}));d.displayName="CardContent",r.forwardRef(({className:e,...s},i)=>(0,t.jsx)("div",{ref:i,className:(0,a.cn)("flex items-center p-6 pt-0",e),...s})).displayName="CardFooter"},89239:(e,s,i)=>{"use strict";i.d(s,{$:()=>c,r:()=>o});var t=i(95155),r=i(12115),a=i(42442),l=i(18460),n=i(40980);let o=(0,l.F)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),c=r.forwardRef(({className:e,variant:s,size:i,asChild:r=!1,...l},c)=>{let d=r?a.DX:"button";return(0,t.jsx)(d,{className:(0,n.cn)(o({variant:s,size:i,className:e})),ref:c,...l})});c.displayName="Button"}},e=>{e.O(0,[62992,47416,18409,49304,16511,98500,38437,62439,28441,93794,77358],()=>e(e.s=28437)),_N_E=e.O()}]);

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.