1import{a as pt}from"./chunk-VAYPNM4D.js";import{a as st,b as dt,c as ct}from"./chunk-QANLRWV2.js";import{a as ut,c as gt,e as _t}from"./chunk-E2LYMTZD.js";import{b as mt}from"./chunk-4D64Y5IW.js";import{a as ot}from"./chunk-5JUW2FTZ.js";import{g as it,h as k,i as at,l as ve}from"./chunk-GNJSJG5M.js";import{a as rt}from"./chunk-4E4VTYIW.js";import{a as Fe}from"./chunk-7GI3UHVV.js";import"./chunk-4OS3XI34.js";import{a as Y,b as z,c as J,d as X,e as Z,f as ee,g as te,h as ne,i as ie,j as ae,k as oe}from"./chunk-56JB766G.js";import{a as re}from"./chunk-H44T43YT.js";import{a as nt}from"./chunk-ZB5OS4G3.js";import{a as Ze,b as et,c as tt}from"./chunk-53IM6ZZD.js";import{a as We}from"./chunk-LS3OIO2Z.js";import{a as Oe}from"./chunk-YQ7DYZI6.js";import{a as Ge,b as Qe}from"./chunk-DMT2HPWQ.js";import{b as xe,c as je}from"./chunk-6MN5GHNC.js";import{a as lt}from"./chunk-OPVJ47S3.js";import{a as Xe}from"./chunk-AGBZD5KP.js";import"./chunk-4VUAV73E.js";import{d as ze,e as Je}from"./chunk-CW7ZHDNR.js";import{a as Ye}from"./chunk-DW3PGHGL.js";import{D as qe,G as Ke,z as Ue}from"./chunk-TQEITOM7.js";import"./chunk-6CWEDTKX.js";import{a as I}from"./chunk-JMFWN52Y.js";import{i as He,p as $e}from"./chunk-LDKR5M2M.js";import"./chunk-BYEUO3JE.js";import{a as U,b as q}from"./chunk-5RAZKGOK.js";import{a as K}from"./chunk-5MZGB6BC.js";import"./chunk-VZLSSRUN.js";import{m as W,o as G}from"./chunk-WLX3VRN2.js";import{na as Q,oa as O}from"./chunk-EWQE2ILW.js";import{a as Be}from"./chunk-YPIC2JXO.js";import{A as Ve,I as Ae,t as ke,u as H,z as $}from"./chunk-OY4V5JEA.js";import"./chunk-OJLFRCCQ.js";import{$c as Ne,Dc as De,E as pe,Ec as D,G as ye,Ib as N,Ic as x,J as Se,Kb as c,Kc as M,L as ue,Lb as m,Lc as R,Nc as Me,Ob as F,Pb as j,Qb as p,Rb as o,Rc as Re,Sb as a,Sc as u,Tb as _,Tc as Ie,U as we,X as ge,Xb as v,Yb as h,Yc as L,Z as _e,_b as P,ab as r,ac as T,cc as d,ha as b,i as ce,ma as S,na as w,pc as Ce,q as me,qc as l,rc as E,sb as B,sc as C,tc as fe,wb as Pe,wc as Te,xa as y,xc as Le,yb as f,yc as Ee}from"./chunk-YVUFFV5V.js";import{a as he,b as be}from"./chunk-4CLCTAJ7.js";var de=()=>({compact:!0}),wt=(n,e)=>e.path;function Pt(n,e){n&1&&_(0,"mat-progress-spinner",4)}function Tt(n,e){n&1&&(o(0,"mat-icon",5),l(1,"search"),a())}function Lt(n,e){if(n&1){let t=P();o(0,"button",10),T("click",function(){S(t);let s=d();return w(s.clearSearch())}),o(1,"mat-icon",11),l(2,"close"),a(),l(3," Clear search "),a()}}function Et(n,e){if(n&1&&(o(0,"a",9),l(1," Set up conversion tracking \u2192 "),a()),n&2){let t=d();p("routerLink",t.trackingSetupLink())}}function Dt(n,e){n&1&&_(0,"tl-empty-state",12)}function Mt(n,e){n&1&&_(0,"tl-empty-state",13)}function Rt(n,e){if(n&1&&c(0,Dt,1,0,"tl-empty-state",12)(1,Mt,1,0,"tl-empty-state",13),n&2){let t=d();m(t.hasSearchFilter()?0:1)}}function It(n,e){n&1&&(o(0,"th",32),l(1," Landing page "),a())}function Nt(n,e){n&1&&(o(0,"mat-icon",35),l(1," speed "),a())}function kt(n,e){if(n&1){let t=P();o(0,"button",37),T("click",function(){S(t);let s=d().$implicit,g=d(2);return w(g.openIssuesForPath(s.path,s.activeIssueCount))}),o(1,"mat-icon",38),l(2,"flag"),a(),l(3),o(4,"mat-icon",38),l(5,"arrow_forward"),a()()}if(n&2){let t=d().$implicit,i=d(2);Ce(i.issueBadgeClass(t.activeIssueSeverity)),p("matTooltip","Open the "+t.activeIssueCount+" active issue"+(t.activeIssueCount===1?"":"s")+" detected on this landing"),N("aria-label",t.activeIssueCount+" active issue(s) \u2014 open in Issues"),r(3),fe(" ",t.activeIssueCount," ",t.activeIssueCount===1?"issue":"issues"," ")}}function Vt(n,e){if(n&1&&(o(0,"td",33)(1,"span",34)(2,"code"),l(3),a(),c(4,Nt,2,0,"mat-icon",35),c(5,kt,6,6,"button",36),a()()),n&2){let t=e.$implicit;N("aria-label","Landing page "+t.path),r(3),E(t.path),r(),m(t.hasSlowCwv?4:-1),r(),m(t.activeIssueCount>0?5:-1)}}function At(n,e){n&1&&(o(0,"th",39),l(1," Sessions "),a())}function Bt(n,e){if(n&1&&_(0,"tl-metric-delta",42),n&2){let t,i=d().$implicit,s=d(2);p("delta",((t=s.changes()[i.path])==null?null:t.sessions)??null)("compact",!0)}}function Ft(n,e){if(n&1&&(o(0,"td",40)(1,"div",41)(2,"span"),l(3),x(4,"tlNumber"),a(),c(5,Bt,1,2,"tl-metric-delta",42),a()()),n&2){let t,i=e.$implicit,s=d(2);r(3),E(R(4,2,i.sessions,void 0,D(6,de))),r(2),m(s.compareEnabled()&&((t=s.changes()[i.path])==null?null:t.sessions)!=null?5:-1)}}function jt(n,e){n&1&&(o(0,"th",39),l(1," Bounce rate "),a())}function Ht(n,e){if(n&1&&(o(0,"td",40),l(1),x(2,"tlNumber"),a()),n&2){let t=e.$implicit;r(),C(" ",t.bounceRate!=null?M(2,1,t.bounceRate,"%"):"\u2014"," ")}}function $t(n,e){n&1&&(o(0,"th",39),l(1," Conversions "),a())}function Wt(n,e){if(n&1&&(o(0,"td",40),l(1),x(2,"tlNumber"),a()),n&2){let t=e.$implicit;r(),C(" ",t.conversions!=null?R(2,1,t.conversions,void 0,D(5,de)):"\u2014"," ")}}function Gt(n,e){n&1&&(o(0,"th",39),l(1," CR "),a())}function Qt(n,e){if(n&1&&_(0,"tl-metric-delta",42),n&2){let t,i=d().$implicit,s=d(2);p("delta",((t=s.changes()[i.path])==null?null:t.conversionRate)??null)("compact",!0)}}function Ot(n,e){if(n&1&&(o(0,"td",40)(1,"div",41)(2,"span"),l(3),x(4,"tlNumber"),a(),c(5,Qt,1,2,"tl-metric-delta",42),a()()),n&2){let t,i=e.$implicit,s=d(2);r(3),E(i.conversionRate!=null?M(4,2,i.conversionRate,"%"):"\u2014"),r(2),m(s.compareEnabled()&&((t=s.changes()[i.path])==null?null:t.conversionRate)!=null?5:-1)}}function Ut(n,e){n&1&&(o(0,"th",39),l(1," Revenue "),a())}function qt(n,e){if(n&1&&(o(0,"td",40),l(1),x(2,"tlCurrency"),a()),n&2){let t=e.$implicit,i=d(2);r(),C(" ",M(2,1,i.revenueCents(t),i.resolvedCurrency())," ")}}function Kt(n,e){n&1&&_(0,"tr",43)}function Yt(n,e){n&1&&_(0,"tr",44)}function zt(n,e){n&1&&(o(0,"mat-icon",47),l(1," speed "),a()),n&2&&p("matTooltip","Among your slowest pages.")}function Jt(n,e){if(n&1){let t=P();o(0,"button",52),T("click",function(){S(t);let s=d().$implicit,g=d(2);return w(g.openIssuesForPath(s.path,s.activeIssueCount))}),o(1,"mat-icon",38),l(2,"flag"),a(),l(3),o(4,"mat-icon",38),l(5,"arrow_forward"),a()()}if(n&2){let t=d().$implicit,i=d(2);
1Ce("mt-2 "+i.issueBadgeClass(t.activeIssueSeverity)),N("aria-label",t.activeIssueCount+" active issue(s) \u2014 open in Issues"),r(3),fe(" ",t.activeIssueCount," ",t.activeIssueCount===1?"issue":"issues"," ")}}function Xt(n,e){if(n&1&&_(0,"tl-metric-delta",42),n&2){let t,i=d().$implicit,s=d(2);p("delta",((t=s.changes()[i.path])==null?null:t.sessions)??null)("compact",!0)}}function Zt(n,e){if(n&1&&_(0,"tl-metric-delta",42),n&2){let t,i=d(2).$implicit,s=d(2);p("delta",((t=s.changes()[i.path])==null?null:t.conversionRate)??null)("compact",!0)}}function en(n,e){if(n&1&&(o(0,"div",50)(1,"span",8),l(2,"Conversions"),a(),o(3,"span",51),l(4),x(5,"tlNumber"),a()(),o(6,"div",50)(7,"span",8),l(8,"CR"),a(),o(9,"span",51),l(10),x(11,"tlNumber"),a(),c(12,Zt,1,2,"tl-metric-delta",42),a(),o(13,"div",53)(14,"span",8),l(15,"Revenue"),a(),o(16,"span",51),l(17),x(18,"tlCurrency"),a()()),n&2){let t,i=d().$implicit,s=d(2);r(4),C(" ",i.conversions!=null?R(5,4,i.conversions,void 0,D(14,de)):"\u2014"," "),r(6),C(" ",i.conversionRate!=null?M(11,8,i.conversionRate,"%"):"\u2014"," "),r(2),m(s.compareEnabled()&&((t=s.changes()[i.path])==null?null:t.conversionRate)!=null?12:-1),r(5),C(" ",M(18,11,s.revenueCents(i),s.resolvedCurrency())," ")}}function tn(n,e){if(n&1&&(o(0,"div",30)(1,"span",45)(2,"code",46),l(3),a(),c(4,zt,2,1,"mat-icon",47),a(),c(5,Jt,6,5,"button",48),o(6,"div",49)(7,"div",50)(8,"span",8),l(9,"Sessions"),a(),o(10,"span",51),l(11),x(12,"tlNumber"),a(),c(13,Xt,1,2,"tl-metric-delta",42),a(),o(14,"div",50)(15,"span",8),l(16,"Bounce rate"),a(),o(17,"span",51),l(18),x(19,"tlNumber"),a()(),c(20,en,19,15),a()()),n&2){let t,i=e.$implicit,s=d(2);r(),N("aria-label","Landing page "+i.path),r(),p("matTooltip",i.path),r(),E(i.path),r(),m(i.hasSlowCwv?4:-1),r(),m(i.activeIssueCount>0?5:-1),r(6),C(" ",R(12,9,i.sessions,void 0,D(16,de))," "),r(2),m(s.compareEnabled()&&((t=s.changes()[i.path])==null?null:t.sessions)!=null?13:-1),r(5),C(" ",i.bounceRate!=null?M(19,13,i.bounceRate,"%"):"\u2014"," "),r(2),m(s.hasConversionTracking()?20:-1)}}function nn(n,e){if(n&1&&(o(0,"p",8),l(1),a()),n&2){let t=d(3);r(),C("Top 10 covers ",t.topCoveragePercent(),"% of sessions.")}}function an(n,e){if(n&1){let t=P();o(0,"div",31)(1,"button",54),T("click",function(){S(t);let s=d(2);return w(s.toggleExpanded())}),o(2,"mat-icon",55),l(3),a(),l(4),a(),c(5,nn,2,1,"p",8),a()}if(n&2){let t=d(2);r(3),C(" ",t.expanded()?"expand_less":"expand_more"," "),r(),C(" ",t.expanded()?"Show less":"Show more ("+t.hiddenCount()+")"," "),r(),m(t.showCoverageHint()?5:-1)}}function on(n,e){if(n&1){let t=P();o(0,"div",14)(1,"div",15)(2,"table",16),T("matSortChange",function(s){S(t);let g=d();return w(g.onSortChange(s))}),v(3,17),f(4,It,2,0,"th",18)(5,Vt,6,4,"td",19),h(),v(6,20),f(7,At,2,0,"th",21)(8,Ft,6,7,"td",22),h(),v(9,23),f(10,jt,2,0,"th",21)(11,Ht,3,4,"td",22),h(),v(12,24),f(13,$t,2,0,"th",21)(14,Wt,3,6,"td",22),h(),v(15,25),f(16,Gt,2,0,"th",21)(17,Ot,6,5,"td",22),h(),v(18,26),f(19,Ut,2,0,"th",21)(20,qt,3,4,"td",22),h(),f(21,Kt,1,0,"tr",27)(22,Yt,1,0,"tr",28),a()()(),o(23,"div",29),F(24,tn,21,17,"div",30,wt),a(),c(26,an,6,3,"div",31)}if(n&2){let t=d();r(2),p("matSortActive",t.sortKey())("matSortDirection",t.sortDir())("dataSource",t.visibleRows()),r(19),p("matHeaderRowDef",t.displayedColumns()),r(),p("matRowDefColumns",t.displayedColumns()),r(2),j(t.visibleRows()),r(2),m(t.canCollapse()?26:-1)}}var le="inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium hover:brightness-95 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500",rn={critical:`${le} bg-status-critical-bg text-status-critical`,warning:`${le} bg-status-warning-bg text-status-warning`,info:`${le} bg-status-info-bg text-status-info`},ln=`${le} border border-border-default bg-bg-secondary text-text-secondary`,se=class n{rows=L.required();hasConversionTracking=L.required();projectId=L.required();totalSessions=L(0);currency=L(void 0);loading=L(!1);compareEnabled=L(!1);changes=L({});searchQuery=Ne("");router=b(ke);routeSrv=b(Ae);localeSrv=b($e);sortKey=y("sessions");sortDir=y("desc");expanded=y(!1);hasSearchFilter=u(()=>this.searchQuery().trim()!=="");displayedColumns=u(()=>this.hasConversionTracking()?["path","sessions","bounceRate","conversions","conversionRate","revenue"]:["path","sessions","bounceRate"]);sortedRows=u(()=>{let e=this.sortKey(),i=this.sortDir()==="asc"?1:-1;return[...this.rows()].sort((s,g)=>{let V=s[e],A=g[e];return V==null&&A==null?0:V==null?1:A==null?-1:V===A?0:V>A?i:-i})});canCollapse=u(()=>this.sortedRows().length>k);visibleRows=u(()=>{let e=this.sortedRows();return this.expanded()||!this.canCollapse()?e:e.slice(0,k)});hiddenCount=u(()=>Math.max(0,this.sortedRows().length-k));topCoveragePercent=u(()=>{let e=this.totalSessions();if(e===0)return null;let t=this.sortedRows().slice(0,k).reduce((i,s)=>i+s.sessions,0);return Math.round(t/e*100)});showCoverageHint=u(()=>{if(this.expanded()||!this.canCollapse())return!1;let e=this.topCoveragePercent();return e!==null&&e<at});helperText=u(()=>this.hasConversionTracking()?"CR = sessions that started on this page and converted.":"Conversion tracking isn't configured, so this view shows traffic quality only.");trackingSetupLink=u(()=>["/p",this.projectId(),"tracking"]);resolvedCurrency=u(()=>this.currency()??this.localeSrv.currency());onSortChange(e){e.direction&&(this.sortKey.set(e.active),this.sortDir.set(e.direction))}clearSearch(){this.searchQuery.set("")}toggleExpanded(){this.expanded.update(e=>!e)}revenueCents(e){return He(e.revenue,e.sessions,this.hasConversionTracking(),this.resolvedCurrency())}issueBadgeClass(e){return e==="critical"||e==="warning"||e==="info"?rn[e]:ln}openIssuesForPath(e,t){t<=0||this.router.navigate(this.routeSrv.link("issues"),{queryParams:{url:e,status:"active"}}
1)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=B({type:n,selectors:[["tl-landing-pages-table"]],inputs:{rows:[1,"rows"],hasConversionTracking:[1,"hasConversionTracking"],projectId:[1,"projectId"],totalSessions:[1,"totalSessions"],currency:[1,"currency"],loading:[1,"loading"],compareEnabled:[1,"compareEnabled"],changes:[1,"changes"],searchQuery:[1,"searchQuery"]},outputs:{searchQuery:"searchQueryChange"},decls:15,vars:6,consts:[["aria-label","Landing pages toolbar",1,"mb-4","flex","items-center","justify-between","gap-4"],[1,"flex","flex-1","flex-wrap","items-center","gap-3"],["appearance","outline",1,"flat","min-w-60","md:max-w-sm"],["matInput","","placeholder","/pricing or https://store.com/pricing",3,"input","value"],["matSuffix","","mode","indeterminate","diameter","16"],["matSuffix","",1,"material-symbols-outlined","icon-lg","text-text-tertiary"],["mat-button","","type","button",1,"shrink-0"],[1,"mb-2","flex","flex-wrap","items-center","gap-x-2","gap-y-1"],[1,"text-xs","text-text-secondary"],["fragment","events",1,"text-xs","text-primary-500","hover:underline",3,"routerLink"],["mat-button","","type","button",1,"shrink-0",3,"click"],[1,"material-symbols-outlined"],["icon","search_off","variant","default","title","No landing pages match this search","description","Try a shorter path or clear the search."],["icon","travel_explore","variant","default","title","No landing page data"],[1,"hidden","md:block"],[1,"overflow-x-auto"],["mat-table","","matSort","","matSortDisableClear","",1,"w-full",3,"matSortChange","matSortActive","matSortDirection","dataSource"],["matColumnDef","path"],["mat-header-cell","","class","text-left text-sm font-semibold text-text-secondary",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","sessions"],["mat-header-cell","","mat-sort-header","","class","text-right text-sm font-semibold text-text-secondary",4,"matHeaderCellDef"],["mat-cell","","class","text-right text-sm tabular-nums text-text-primary",4,"matCellDef"],["matColumnDef","bounceRate"],["matColumnDef","conversions"],["matColumnDef","conversionRate"],["matColumnDef","revenue"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"flex","flex-col","gap-2","md:hidden"],[1,"rounded-lg","border","border-border-default","bg-bg-secondary","p-3"],[1,"mt-3","flex","flex-wrap","items-center","justify-between","gap-2"],["mat-header-cell","",1,"text-left","text-sm","font-semibold","text-text-secondary"],["mat-cell",""],[1,"inline-flex","items-center","gap-1.5","text-sm","font-medium","text-text-primary"],["matTooltip","Among the slowest pages on your site \u2014 speed here may be costing conversions.",1,"material-symbols-outlined","icon-xs","text-status-warning"],["type","button",3,"class","matTooltip"],["type","button",3,"click","matTooltip"],[1,"material-symbols-outlined","icon-xs"],["mat-header-cell","","mat-sort-header","",1,"text-right","text-sm","font-semibold","text-text-secondary"],["mat-cell","",1,"text-right","text-sm","tabular-nums","text-text-primary"],[1,"flex","flex-col","items-end","gap-0.5"],["unit","%",3,"delta","compact"],["mat-header-row",""],["mat-row",""],[1,"inline-flex","items-center","gap-1.5","min-w-0"],[1,"text-sm","font-medium","text-text-primary","truncate",3,"matTooltip"],[1,"material-symbols-outlined","icon-xs","text-status-warning","shrink-0",3,"matTooltip"],["type","button",3,"class"],[1,"mt-3","grid","grid-cols-2","gap-3"],[1,"flex","flex-col","gap-0.5"],[1,"text-sm","font-medium","tabular-nums","text-text-primary"],["type","button",3,"click"],[1,"col-span-2","flex","flex-col","gap-0.5"],["mat-stroked-button","","type","button",1,"shrink-0",3,"click"],[1,"material-symbols-outlined","icon-sm"]],template:function(t,i){t&1&&(o(0,"section",0)(1,"div",1)(2,"mat-form-field",2)(3,"mat-label"),l(4,"Find landing page"),a(),o(5,"input",3),T("input",function(g){return i.searchQuery.set(g.target.value)}),a(),c(6,Pt,1,0,"mat-progress-spinner",4)(7,Tt,2,0,"mat-icon",5),a(),c(8,Lt,4,0,"button",6),a()(),o(9,"div",7)(10,"p",8),l(11),a(),c(12,Et,2,1,"a",9),a(),c(13,Rt,2,1)(14,on,27,6)),t&2&&(r(5),p("value",i.searchQuery()),r(),m(i.loading()?6:7),r(2),m(i.hasSearchFilter()?8:-1),r(3),E(i.helperText()),r(),m(i.hasConversionTracking()?-1:12),r(),m(i.rows().length===0?13:14))},dependencies:[G,W,Ye,Ke,Ue,qe,O,Q,Je,ze,Qe,Ge,ct,st,dt,oe,Y,J,te,X,z,ne,Z,ee,ie,ae,q,U,H,K,re,Xe,I],encapsulation:2,changeDetection:0})};var dn=()=>({compact:!0}),cn=(n,e)=>e.metric;function mn(n,e){n&1&&_(0,"tl-loading-state",1)}function pn(n,e){if(n&1&&(o(0,"a",10)(1,"mat-icon",11),l(2,"table_view"),a(),l(3," Where traffic underperforms "),a()),n&2){let t=d(2);p("routerLink",t.projectLink("analytics","landing","source-landing"))}}function un(n,e){if(n&1){let t=P();o(0,"tl-landing-pages-table",12),Ee("searchQueryChange",function(s){S(t);let g=d(2);return Le(g.landingPagesSearch,s)||(g.landingPagesSearch=s),w(s)}),a()}if(n&2){let t,i=e,s=d(2);p("rows",i.items)("hasConversionTracking",i.hasConversionTracking)("projectId",((t=s.stateSrv.currentProject())==null?null:t.id)??"")("totalSessions",i.totalSessions)("currency",i.currency)("loading",s.loading())("compareEnabled",s.compareActive())("changes",s.landingPagesChanges()),Te("searchQuery",s.landingPagesSearch)}}function gn(n,e){n&1&&_(0,"tl-empty-state",4)}function _n(n,e){if(n&1){let t=P();o(0,"tl-error-state",17),T("retry",function(){S(t);let s=d(3);return w(s.retryWebVitals())}),a()}n&2&&p("dense",!0)}function Cn(n,e){n&1&&_(0,"tl-loading-state",16)}function fn(n,e){if(n&1&&(o(0,"p",14),l(1),a()),n&2){let t=d(4);r(),C("Web Vitals are limited to the last ",t.webVitalsRange," days.")}}function xn(n,e){if(n&1&&(o(0,"div",27),_(1,"tl-metric-delta",28),a()),n&2){let t=e;r(),p("delta",t.deltaPct)("inverted",!0)("noDataReason",t.noDataReason)}}function vn(n,e){if(n&1&&(o(0,"mat-card",19)(1,"mat-card-content")(2,"div",23)(3,"span",24),l(4),a(),_(5,"tl-status-badge",25),a(),o(6,"p",26),l(7),a(),c(8,xn,2,3,"div",27),a()()),n&2){let t,i=e.$implicit,s=d(4);r(3),p("matTooltip",s.cwvHint(i.metric)),r(),C(" ",i.label," "),r(),p("variant",s.statusBadgeVariant(i.status))("label",i.statusLabel),r(2),E(i.value),r(),m((t=i.change)?8:-1,t)}}function hn(n,e){n&1&&_(0,"tl-empty-state",21)}function bn(n,e){n&1&&(o(0,"th",40),l(1," URL "),a())}function yn(n,e){if(n&1&&(o(0,"td",41),l(1),a()),n&2){let t=e.$implicit;r(),C(" ",t.path," ")}}function Sn(n,e){n&1&&(o(0,"th",42),l(1," LCP "),a())}function wn(n,e){if(n&1&&(o(0,"td",43),l(1),a()),n&2){let t=e.$implicit,i=d(5);r(),C(" ",i.formatCwvValue("LCP",t.avgLCP)," ")}}function Pn(n,e){n&1&&(o(0,"th",42),l(1," INP "),a())}function Tn(n,e){if(n&1&&(o(0,"td",43),l(1),a()),n&2){let t=e.$implicit,i=d(5);r(),C(" ",i.formatCwvValue("INP",t.avgINP)," ")}}function Ln(n,e){n&1&&(o(0,"th",42),l(1," Sessions "),a())}function En(n,e){if(n&1&&(o(0,"td",43),l(1),x(2,"tlNumber"),a()),n&2){let t=e.$implicit;r(),C(" ",R(2,1,t.sessionsOnPage,void 0,D(5,dn))," ")}}function Dn(n,e){n&1&&_(0,"tr",44)}function Mn(n,e){n&1&&_(0,"tr",45)}function Rn(n,e){if(n&1&&(o(0,"div",22)(1,"table",29),v(2,30),f(3,bn,2,0,"th",31)(4,yn,2,1,"td",32),h(),v(5,33),f(6,Sn,2,0,"th",34)(7,wn,2,1,"td",35),h(),v(8,36),f(9,Pn,2,0,"th",34)(10,Tn,2,1,"td",35),h(),v(11,37),f(12,
1Ln,2,0,"th",34)(13,En,3,6,"td",35),h(),f(14,Dn,1,0,"tr",38)(15,Mn,1,0,"tr",39),a()()),n&2){let t=d(4);r(),p("dataSource",t.slowPages()),r(13),p("matHeaderRowDef",t.slowPagesColumns),r(),p("matRowDefColumns",t.slowPagesColumns)}}function In(n,e){if(n&1&&(c(0,fn,2,1,"p",14),o(1,"p",14),l(2,"Typical for most of your visitors this period."),a(),o(3,"section",18),F(4,vn,9,6,"mat-card",19,cn),a(),o(6,"tl-section-card",20),c(7,hn,1,0,"tl-empty-state",21)(8,Rn,16,3,"div",22),a()),n&2){let t=d(3);m(t.cwvRangeClamped()?0:-1),r(4),j(t.cwvCards()),r(3),m(t.slowPages().length===0?7:8)}}function Nn(n,e){if(n&1&&(o(0,"div",5)(1,"div")(2,"h3",13),l(3,"Page speed"),a(),o(4,"p",14),l(5," How quickly your pages load for real visitors. Slow pages can quietly cost conversions. "),a()(),c(6,_n,1,1,"tl-error-state",15)(7,Cn,1,0,"tl-loading-state",16)(8,In,9,2),a()),n&2){let t=d(2);r(6),m(t.webVitalsError()?6:t.webVitalsLoading()?7:8)}}function kn(n,e){if(n&1&&(o(0,"tl-section-card",2),f(1,pn,4,1,"ng-template",null,0,Me),c(3,un,1,9,"tl-landing-pages-table",3)(4,gn,1,0,"tl-empty-state",4),a(),c(5,Nn,9,1,"div",5),o(6,"p",6)(7,"mat-icon",7),l(8,"lightbulb"),a(),o(9,"span"),l(10,"See where a traffic source underperforms on a landing page."),a(),o(11,"a",8),l(12," Source \xD7 landing "),o(13,"mat-icon",9),l(14,"arrow_forward"),a()()()),n&2){let t,i=d();r(3),m((t=i.landingPagesResolved())?3:4,t),r(2),m(i.webVitalsLoading()||i.webVitalsError()||i.hasWebVitals()?5:-1),r(6),p("routerLink",i.projectLink("analytics","landing","source-landing"))}}var Vn=300,Ct={LCP:"Loading",INP:"Responsiveness",CLS:"Layout stability"},ft=class n extends je{api=b(ot);tlNumber=b(I);analyticsState=b(mt);capabilitiesSrv=b(Be);featuresSrv=b(Fe);exportSrv=b(pt);loadGuard=this.createLoadGuard();webVitalsGuard=this.createLoadGuard();range=this.analyticsState.range;compareActive=this.analyticsState.compareActive;loading=y(!0);landingPages=y(rt());landingPagesSearch=y("");webVitals=y(null);webVitalsLoading=y(!0);webVitalsError=y(!1);webVitalsRange=ve;hasWebVitals=u(()=>{let e=this.webVitals();return!!e&&e.distribution.total>0});slowPages=u(()=>this.webVitals()?.slowestPages??[]);slowPagesColumns=["path","lcp","inp","sessions"];cwvRangeClamped=u(()=>{let e=this.effectiveRange();return Math.floor((e.to.getTime()-e.from.getTime())/864e5)>ve});cwvCards=u(()=>{let e=this.webVitals();if(!e)return[];let t=this.compareActive()?e.comparison?.previous??null:null;return[this.buildCwvCard("LCP",e.assessment.lcp,e.p75.lcp,t?.lcp),this.buildCwvCard("INP",e.assessment.inp,e.p75.inp,t?.inp),this.buildCwvCard("CLS",e.assessment.cls,e.p75.cls,t?.cls)]});landingPagesResolved=u(()=>{let e=this.landingPages().data;return e?"current"in e?e.current:e:null});landingPagesChanges=u(()=>{let e=this.landingPages().data;return!e||!("changes"in e)?{}:e.changes.byPath});retentionDays=u(()=>this.featuresSrv.planLimits()?.DATA_RETENTION_DAYS??null);effectiveRange=u(()=>ut(this.range(),this.retentionDays()));compareDisabled=u(()=>gt(this.range(),this.compareActive(),this.retentionDays()));constructor(){super(),Ie(()=>{this.stateSrv.currentProject()&&(this.range(),this.compareActive(),Re(()=>{this.loadLandingPages(),this.loadWebVitals()}))}),Ve(this.landingPagesSearch).pipe(ye(Vn),Se(),we(1),$(this.destroyRef)).subscribe(()=>this.loadLandingPages()),this.exportSrv.register(this.csvHandler,this.canExportCsv),this.destroyRef.onDestroy(()=>this.exportSrv.clear(this.csvHandler))}buildLoadParams(){return _t(this.effectiveRange(),this.compareActive(),this.compareDisabled())}loadLandingPages(){let e=this.stateSrv.currentProject()?.id;if(!e)return;this.loadGuard.restart(),this.loading.set(!0);let t=this.buildLoadParams();this.api.getLandingPages(e,be(he({},t),{source:"all",limit:it,search:this.landingPagesSearch().trim()||void 0})).pipe(me(xe),_e(i=>this.landingPages.set({data:i,loading:!1,error:null})),pe(i=>(this.landingPages.set({data:null,loading:!1,error:i}),this.handleError(i,"Couldn't load landing pages."),ce)),ue(()=>this.loading.set(!1)),ge(this.loadGuard.cancel$),$(this.destroyRef)).subscribe({error:()=>{}})}loadWebVitals(){let e=this.stateSrv.currentProject()?.id;e&&(this.webVitalsGuard.restart(),this.webVitalsLoading.set(!0),this.webVitalsError.set(!1),this.api.getWebVitals(e,this.buildLoadParams()).pipe(me(xe),_e(t=>this.webVitals.set(t)),pe(()=>(this.webVitals.set(null),this.webVitalsError.set(!0),ce)),ue(()=>this.webVitalsLoading.set(!1)),ge(this.webVitalsGuard.cancel$),$(this.destroyRef)).subscribe({error:()=>{}}))}retryWebVitals(){this.loadWebVitals()}statusBadgeVariant(e){return e==="good"?"success":e==="needs_work"?"warning":e==="poor"?"critical":"info"}cwvHint(e){let t="75th percentile across measurements in this period";return e==="LCP"?`LCP (Largest Contentful Paint): ${t} \u2014 how fast the main content of a page loads.`:e==="INP"?`INP (Interaction to Next Paint): ${t} \u2014 how quickly the page responds when visitors interact.`:`CLS (Cumulative Layout Shift): ${t} \u2014 how much the page visually jumps around while loading.`}formatCwvValue(e,t){return t==null?"\u2014":e==="CLS"?this.tlNumber.transform(t,void 0,{decimals:2}):t>=1e3?this.tlNumber.transform(t/1e3," s",{decimals:1}):this.tlNumber.transform(t," ms",{decimals:0})}buildCwvCard(e,t,i,s){if(!t)return{metric:e,label:Ct[e],value:"\u2014",status:"no_data",statusLabel:"No data",change:null};let g=this.ratingToStatus(t.rating);return{metric:e,label:Ct[e],value:this.formatCwvValue(e,t.value),status:g,statusLabel:this.statusToLabel(g),change:this.buildCwvChange(i,s)}}buildCwvChange(e,t){if(!this.compareActive())return null;if(t==null||t===0||e===null)return{deltaPct:null,improved:!1,noDataReason:"Not enough measurements in the previous period to compare."};let i=(e-t)/t*100;return{deltaPct:i,improved:i<0}}ratingToStatus(e){return e==="good"?"good":e==="needs_improvement"?"needs_work":"poor"}statusToLabel(e){return e==="good"?"Good":e==="needs_work"?"Needs work":e==="poor"?"Poor":"No data"}csvHandler=()=>this.exportCsv();canExportCsv=u(()=>this.capabilitiesSrv.canExport()&&(this.landingPagesResolved()?.items.length??0)>0);exportCsv(){let e=this.landingPagesResolved()?.items??[];if(e.length===0)return;let i=[["Landing page","Sessions","Bounce Rate (%)","Conversions","Conv Rate (%)","Revenue"].join(","),...e.map(g=>[this.csvCell(g.path),g.sessions,g.bounceRate?.toFixed(2)??"",g.conversions??"",g.conversionRate?.toFixed(2)??"",g.revenue?.toFixed(2)??""].join(","))].join(` 2`),s=new Blob([i],{type:"text/csv;charset=utf-8;"});this.domSrv.downloadBlob(s,`tracelog-landing-${new Date().toISOString().slice(0,10)}.csv`)}csvCell(e){return`"${e.replace(/"/g,'""')}"`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=B({type:n,selectors:[["app-landing-page"]],features:[De([I]),Pe],decls:2,vars:1,consts:[["actions",""],["variant","skeleton","minHeight","320px"],["title","Landing pages","ariaLabel","Landing pages"],[3,"rows","hasConversionTracking","projectId","totalSessions","currency","loading","compareEnabled","changes","searchQuery"],["icon","web","variant","default","title","No landing page data for this range."],[1,"mt-8","flex","flex-col","gap-6"],[1,"mt-6","flex","flex-wrap","items-center","gap-x-1.5","gap-y-1","text-sm","text-text-secondary"],["aria-hidden","true",1,"material-symbols-outlined","icon-sm","text-text-tertiary"],[1,"inline-flex","items-center","gap-0.5","font-medium","text-primary-500","hover:underline",3,"routerLink"],["aria-hidden","true",1,"material-symbols-outlined","icon-sm"],["mat-stroked-button","",3,"routerLink"],[1,"material-symbols-outlined","icon-sm"],[3,"searchQueryChange","rows","hasConversionTracking","projectId","totalSessions","currency","loading","compareEnabled","changes","searchQuery"],[1,"text-sm","font-semibold","text-text-primary"],[1,"text-xs","text-text-tertiary"],["title","Couldn't load Web Vitals","description","The rest of the page is unaffected.",3,"dense"],["variant","skeleton","minHeight","120px"],["title","Couldn't load Web Vitals","description","The rest of the page is unaffected.",3,"retry","dense"],["aria-label","Core Web Vitals",1,"grid","grid-cols-1","gap-4","md:grid-cols-3"],["appearance","outlined"],["title","Slow pages","ariaLabel","Slow pages"],["icon","check_circle","variant","success","title","No slow pages detected"],[1,"overflow-x-auto"],[1,"flex","items-center","justify-between"],[1,"curs
2or-help","text-sm","font-semibold","text-text-secondary",3,"matTooltip"],["size","sm",3,"variant","label"],[1,"mt-3","text-3xl","font-bold","tabular-nums","text-text-primary"],[1,"mt-1"],[3,"delta","inverted","noDataReason"],["mat-table","",1,"w-full",3,"dataSource"],["matColumnDef","path"],["mat-header-cell","","class","text-left text-sm font-semibold text-text-secondary",4,"matHeaderCellDef"],["mat-cell","","class","truncate py-2 text-sm text-text-primary",4,"matCellDef"],["matColumnDef","lcp"],["mat-header-cell","","class","text-right text-sm font-semibold text-text-secondary",4,"matHeaderCellDef"],["mat-cell","","class","py-2 text-right tabular-nums text-text-primary",4,"matCellDef"],["matColumnDef","inp"],["matColumnDef","sessions"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"text-left","text-sm","font-semibold","text-text-secondary"],["mat-cell","",1,"truncate","py-2","text-sm","text-text-primary"],["mat-header-cell","",1,"text-right","text-sm","font-semibold","text-text-secondary"],["mat-cell","",1,"py-2","text-right","tabular-nums","text-text-primary"],["mat-header-row",""],["mat-row",""]],template:function(t,i){t&1&&c(0,mn,1,0,"tl-loading-state",1)(1,kn,15,3),t&2&&m(i.loading()&&!i.landingPagesResolved()?0:1)},dependencies:[G,W,tt,Ze,et,O,Q,oe,Y,J,te,X,z,ne,Z,ee,ie,ae,q,U,H,K,We,Oe,re,nt,lt,se,I],encapsulation:2,changeDetection:0})};export{ft as LandingPage};
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.