1import{j as e}from"./app-D8NIJotA.js";import{u as t,r,b as s,H as a}from"./vendor-D2vYb2c1.js";import{A as i}from"./AdminLayoutNew-D5dQoG2t.js";import{D as o,V as n}from"./ViewPeriodSelector-CL6V5w_n.js";import{R as c,L as l,C as d,X as u,Y as m,T as p,a as h,b as v}from"./LineChart-Cn-xtPB8.js";import"./utils-Sv_UXJ4f.js";import"./ApplicationLogo-DIsDyKdA.js";import"./transition-BqWZqDQG.js";import"./DarkLightModeSwitcher-DT57fuz-.js";import"./DataContext-BNY6yXN8.js";import"./debounce-XN2srKCW.js";import"./toInteger-Bc0fEK3y.js";import"./tiny-invariant-BM5KeS_Z.js";function j({auth:j}){const{chartData:x}=t().props,[g,f]=r.useState("daily"),[y,D]=r.useState("3months"),[S,V]=r.useState(x),[w,R]=r.useState(!1),b=r.useRef(!0);r.useEffect(()=>{b.current?b.current=!1:(R(!0),s.get(route("admin.reports.revenue-per-visitor"),{dateRange:y},{preserveState:!0,preserveScroll:!0,only:["chartData"],onSuccess:e=>{V(e.props.chartData),R(!1)},onError:()=>{R(!1)}}))},[y]);const k=r.useMemo(()=>{if(!S||0===S.length)return[];switch(g){case"weekly":return(e=>{const t={};return e.forEach(e=>{const r=new Date(e.date),s=new Date(r.setDate(r.getDate()-r.getDay())).toISOString().split("T")[0];t[s]||(t[s]={date:s,sales:0,activeUsers:0,count:0}),t[s].sales+=e.sales,t[s].activeUsers+=e.activeUsers,t[s].count++}),Object.values(t).map(e=>({...e,revenuePerVisitor:e.activeUsers>0?e.sales/e.activeUsers:0})).sort((e,t)=>e.date.localeCompare(t.date))})(S);case"monthly":return(e=>{const t={};return e.forEach(e=>{const r=new Date(e.date),s=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-01`;t[s]||(t[s]={date:s,sales:0,activeUsers:0,count:0}),t[s].sales+=e.sales,t[s].activeUsers+=e.activeUsers,t[s].count++}),Object.values(t).map(e=>({...e,revenuePerVisitor:e.activeUsers>0?e.sales/e.activeUsers:0})).sort((e,t)=>e.date.localeCompare(t.date))})(S);default:return S}},[S,g]);return e.jsxs(i,{user:!(!j||!j.user)&&j.user,header:e.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"Revenue per Visitor"}),children:[e.jsx(a,{title:"Revenue per Visitor"}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 p-6 rounded-lg shadow",children:[e.jsx(o,{selectedDateRange:y,setSelectedDateRange:D,name:"revenuePerVisitorDateRange",maxRange:"24months"}),e.jsx(n,{selectedPeriod:g,setSelectedPeriod:f,name:"revenuePerVisitorPeriod"}),e.jsxs("div",{className:"h-80 w-full",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-800 dark:text-gray-200 mb-2",children:(()=>{switch(g){case"weekly":return"Weekly Revenue per Visitor ($)";case"monthly":return"Monthly Revenue per Visitor ($)";default:return"Daily Revenue per Visitor ($)"}})()}),w?e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx("div",{className:"text-gray-500 dark:text-gray-400",children:"Loading data..."})}):e.jsx(c,{width:"100%",height:"100%",children:e.jsxs(l,{data:k,margin:{top:5,right:30,left:20,bottom:35},children:[e.jsx(d,{strokeDasharray:"3 3"}),e.jsx(u,{dataKey:"date",tick:{fontSize:12},interval:"preserveStartEnd"}),e.jsx(m,{tickFormatter:e=>`$${e.toFixed(2)}`}),e.jsx(p,{formatter:e=>[`$${Number(e).toFixed(4)}`,"Revenue/Visitor"],labelFormatter:e=>`Date: ${e}`}),e.jsx(h,{}),e.jsx(v,{type:"monotone",dataKey:"revenuePerVisitor",name:"Revenue per Visitor",stroke:"#8B5CF6",activeDot:{r:8},dot:{strokeWidth:2}})]})})]})]})]})}export{j as default};
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.