1 line
173 KiB
JavaScript
1 line
173 KiB
JavaScript
"use strict";(self.webpackChunkmantis_material_react=self.webpackChunkmantis_material_react||[]).push([[3624],{84702:(e,s,a)=>{a.d(s,{Cx:()=>i,IE:()=>d,L0:()=>o,Ys:()=>r,Z3:()=>l,d1:()=>u,gM:()=>c,yP:()=>n});const t={created:{label:"Created",bg:"#3b82f6",fg:"#fff"},pending:{label:"Pending",bg:"#f59e0b",fg:"#fff"},accepted:{label:"Accepted",bg:"#8b5cf6",fg:"#fff"},arrived:{label:"Arrived",bg:"#ea580c",fg:"#fff"},picked:{label:"Picked",bg:"#0ea5e9",fg:"#fff"},active:{label:"Active",bg:"#0ea5e9",fg:"#fff"},delivered:{label:"Delivered",bg:"#22c55e",fg:"#fff"},skipped:{label:"Skipped",bg:"#94a3b8",fg:"#fff"},cancelled:{label:"Cancelled",bg:"#ef4444",fg:"#fff"}},i=e=>t[String(e||"").toLowerCase()]||{label:e||"Unknown",bg:"#64748b",fg:"#fff"},r=new Set(["delivered"]),n=new Set(["cancelled","skipped"]),l=["#2563eb","#dc2626","#16a34a","#ea580c","#9333ea","#0891b2","#ca8a04","#db2777","#0f766e","#7c3aed","#65a30d","#0284c7","#b91c1c","#15803d","#a16207","#86198f"],c=e=>l[(e%l.length+l.length)%l.length],d=e=>{if(null==e)return"";const s=["th","st","nd","rd"],a=e%100;return e+(s[(a-20)%10]||s[a]||s[0])},o=e=>{const s=String((null===e||void 0===e?void 0:e.orderstatus)||"").toLowerCase();return!r.has(s)&&!n.has(s)},u=e=>{if(!Array.isArray(e)||!e.length)return null;return[...e].sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)})).find(o)||null}},88267:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Ae});var t=a(80045),i=a(89379),r=a(9950),n=a(98007),l=a(47113),c=a(82215),d=a(99810),o=a(49029),u=a(33516),m=a(48513),p=a(37119),h=a(2527),v=a.n(h);a(55392);v().PolylineOffset={translatePoint:(e,s,a)=>v().point(e.x+s*Math.cos(a),e.y+s*Math.sin(a)),offsetPointLine(e,s){const a=e.length;if(a<2)throw new Error("Line should be defined by at least 2 points");let t,i=e[0];const r=Math.PI/2,n=[];for(let l=1;l<a;l++){t=e[l];const a=Math.atan2(t.y-i.y,t.x-i.x);n.push({offsetAngle:a-r,original:[i,t],offset:[this.translatePoint(i,s,a-r),this.translatePoint(t,s,a-r)]}),i=t}return n},intersection(e,s,a,t){const i=this.segmentAsVector(e,s),r=this.segmentAsVector(a,t),n=-r.x*i.y+i.x*r.y;if(0===n)return null;const l=(-i.y*(e.x-a.x)+i.x*(e.y-a.y))/n,c=(r.x*(e.y-a.y)-r.y*(e.x-a.x))/n;return l>=0&&l<=1&&c>=0&&c<=1?v().point(e.x+c*i.x,e.y+c*i.y):null},segmentAsVector:(e,s)=>v().point(s.x-e.x,s.y-e.y),joinLineSegments(e){const s=[];let a=e[0].offset;s.push(a[0]);for(let t=1;t<e.length;t++){const i=e[t].offset,r=this.intersection(a[0],a[1],i[0],i[1]);r?s.push(r):s.push(a[1]),a=i}return s.push(a[1]),s},offsetPoints(e,s){if(!e||e.length<2)return e;const a=this.offsetPointLine(e,s);return this.joinLineSegments(a)},offsetLatLngs(e,s,a){const t=s.map((s=>e.latLngToLayerPoint(s)));return this.offsetPoints(t,a).map((s=>e.layerPointToLatLng(s)))}};const x=v().Polyline.prototype._projectLatlngs;v().Polyline.prototype._projectLatlngs=function(e,s,a){const t=this.options.offset;if(!t||"number"!==typeof t)return x.call(this,e,s,a);if(!(e[0]instanceof v().LatLng)){for(let t=0;t<e.length;t++)this._projectLatlngs(e[t],s,a);return}const i=e.map((e=>this._map.latLngToLayerPoint(e))),r=v().PolylineOffset.offsetPoints(i,t);for(let n=0;n<r.length;n++)a.extend(r[n]);s.push(r)};var j=a(4159),f=a.n(j),g=a(51778),N=a(36150),b=a(60010),y=a(36687),k=a(26910),S=a(31222),_=a(44414);const w=500/3,F={delivered:{label:"Delivered",color:"#10b981",bg:"#ecfdf5",border:"#a7f3d0"},active:{label:"Active",color:"#0ea5e9",bg:"#f0f9ff",border:"#bae6fd"},picked:{label:"Picked up",color:"#8b5cf6",bg:"#f5f3ff",border:"#ddd6fe"},assigned:{label:"Assigned",color:"#f59e0b",bg:"#fffbeb",border:"#fde68a"},cancelled:{label:"Cancelled",color:"#ef4444",bg:"#fef2f2",border:"#fca5a5"},skipped:{label:"Skipped",color:"#f97316",bg:"#fff7ed",border:"#ffedd5"}},M=F.assigned;function C(e){const s=parseFloat(e.kms||e.actualkms||0);return s<=8?30:30+6*(s-8)}const A=[{id:"morning",name:"Morning Batch",startHour:0,endHour:8},{id:"afternoon",name:"Afternoon Batch",startHour:9,endHour:12.5},{id:"evening",name:"Evening Batch",startHour:16,endHour:19}],z=function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A;const a=(null===e||void 0===e?void 0:e.assigntime)||(null===e||void 0===e?void 0:e.deliverydate);if(!a)return null;const t=String(a).trim();if(/^\d{4}-\d{2}-\d{2}$/.test(t))return null;const i=f()(a);return i.isValid()?function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A;for(const a of s)if(e>=a.startHour&&e<a.endHour)return a.id;return null}(i.hour()+i.minute()/60,s):null};function P(e,s,a){var t;const i=(null!==(t=e.orders)&&void 0!==t?t:[]).filter((e=>{if(!s)return!0;return(e.assigntime?f()(e.assigntime).format("YYYY-MM-DD"):e.deliverydate?f()(e.deliverydate).format("YYYY-MM-DD"):"unknown")===s}));let r=0,n=0;const l={};for(const p of i){r+=C(p),n+=parseFloat(p.kms||p.actualkms||0);const e=z(p,a);if(!e)continue;const s=p.assigntime?f()(p.assigntime).format("YYYY-MM-DD"):p.deliverydate?f()(p.deliverydate).format("YYYY-MM-DD"):null;s&&(l[s]||(l[s]=new Set),l[s].add(e))}let c=0;Object.values(l).forEach((e=>{c+=Math.min(e.size,3)}));const d=2.5*n,o=c*w,u=d+o,m=r-u;return{revenue:r,kms:n,varCost:d,fixedCost:o,totalCost:u,net:m,margin:r>0?m/r*100:0,orders:i}}function D(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return null==e?"\u2014":"\u20b9".concat(parseFloat(e).toFixed(s))}function E(e){return e&&e.trim().split(/\s+/).slice(0,2).map((e=>{var s;return null!==(s=e[0])&&void 0!==s?s:""})).join("").toUpperCase()||"?"}function L(e){let{status:s}=e;const a=function(e){var s;return null!==(s=F[String(null!==e&&void 0!==e?e:"").toLowerCase()])&&void 0!==s?s:M}(s);return(0,_.jsxs)("span",{className:"order-status-pill",style:{background:a.bg,color:a.color,borderColor:a.border},children:[(0,_.jsx)("span",{className:"order-status-dot","aria-hidden":"true"}),a.label]})}function q(e){var s,a,t,i,r,n,l,c,d,o;let{order:u}=e;const m=null!==(s=null!==(a=null!==(t=null!==(i=u.customername)&&void 0!==i?i:u.customer_name)&&void 0!==t?t:u.deliverycustomer)&&void 0!==a?a:u.pickupcustomer)&&void 0!==s?s:"Unknown customer",p=null!==(r=null!==(n=null!==(l=u.customerphone)&&void 0!==l?l:u.phone)&&void 0!==n?n:u.mobile)&&void 0!==r?r:"",h=null!==(c=null!==(d=null!==(o=u.locationname)&&void 0!==o?o:u.kitchenname)&&void 0!==d?d:u.kitchenName)&&void 0!==c?c:"";return(0,_.jsxs)("div",{children:[(0,_.jsx)("div",{className:"customer-name",title:m,children:m}),p&&(0,_.jsx)("div",{className:"customer-phone",children:p}),h&&(0,_.jsxs)("div",{className:"customer-location",children:[(0,_.jsx)(S.gwi,{size:12,"aria-hidden":"true"}),h]})]})}function R(e){let{orders:s,getRevenue:a}=e;return null!==s&&void 0!==s&&s.length?(0,_.jsx)("div",{className:"orders-table-container",children:(0,_.jsxs)("table",{className:"orders-table",role:"table",children:[(0,_.jsx)("thead",{children:(0,_.jsxs)("tr",{children:[(0,_.jsx)("th",{scope:"col",children:"Customer"}),(0,_.jsx)("th",{scope:"col",children:"Status"}),(0,_.jsx)("th",{scope:"col",children:"Distance"}),(0,_.jsx)("th",{scope:"col",style:{textAlign:"right"},children:"Revenue"})]})}),(0,_.jsx)("tbody",{children:s.map(((e,s)=>{var t,i,r,n;const l=parseFloat(null!==(t=null!==(i=e.kms)&&void 0!==i?i:e.actualkms)&&void 0!==t?t:0),c=a(e);return(0,_.jsxs)("tr",{children:[(0,_.jsx)("td",{children:(0,_.jsx)(q,{order:e})}),(0,_.jsx)("td",{children:(0,_.jsx)(L,{status:null!==(n=e.orderstatus)&&void 0!==n?n:e.status})}),(0,_.jsxs)("td",{children:[(0,_.jsx)("span",{className:"distance-value",children:l.toFixed(1)}),(0,_.jsx)("span",{className:"distance-unit",children:"km"})]}),(0,_.jsx)("td",{style:{textAlign:"right"},children:(0,_.jsx)("span",{className:"revenue-amount",children:D(c)})})]},"".concat(null!==(r=e.orderid)&&void 0!==r?r:"order","-").concat(s))}))})]})}):(0,_.jsxs)("div",{className:"orders-empty-state",role:"status",children:[(0,_.jsx)(S.q8i,{size:24,"aria-hidden":"true"}),(0,_.jsx)("p",{className:"orders-empty-message",children:"No orders assigned to this rider yet."})]})}function I(e){var s,a,t,i;let{metrics:r}=e;const{varCost:n,fixedCost:l,kms:c,net:d,margin:o}=r,u=d>=0,m=[{icon:(0,_.jsx)(S.DwJ,{size:16}),iconClass:"cost-tile-icon--fixed",label:"Fixed cost",amount:D(l,2),amountClass:"",footnote:"Salary (per slot)"},{icon:(0,_.jsx)(S.pk7,{size:16}),iconClass:"cost-tile-icon--variable",label:"Variable cost",amount:D(n,2),amountClass:"",footnote:"".concat(c.toFixed(1)," km \xd7 \u20b9").concat(2.5,"/km")},{icon:u?(0,_.jsx)(S.imn,{size:16}):(0,_.jsx)(S.Rod,{size:16}),iconClass:u?"cost-tile-icon--profit":"cost-tile-icon--loss",label:u?"Net profit":"Net loss",amount:"".concat(u?"+":"").concat(D(d,2)),amountClass:u?"cost-tile-amount--profit":"cost-tile-amount--loss",footnote:"".concat(Math.abs(o).toFixed(0),"% margin")}];return(0,_.jsx)("div",{className:"rider-detail-panel","aria-label":"Rider cost breakdown",children:(0,_.jsxs)("div",{className:"rider-detail-inner",children:[(0,_.jsx)("div",{className:"cost-breakdown-grid",children:m.map((e=>(0,_.jsxs)("div",{className:"cost-tile",children:[(0,_.jsx)("div",{className:"cost-tile-icon ".concat(e.iconClass),"aria-hidden":"true",children:e.icon}),(0,_.jsxs)("div",{className:"cost-tile-content",children:[(0,_.jsx)("span",{className:"cost-tile-label",children:e.label}),(0,_.jsx)("span",{className:"cost-tile-amount ".concat(e.amountClass),children:e.amount}),(0,_.jsx)("span",{className:"cost-tile-footnote",children:e.footnote})]})]},e.label)))}),(0,_.jsxs)("div",{className:"revenue-breakdown",children:[(0,_.jsxs)("div",{className:"revenue-breakdown-header",children:[(0,_.jsxs)("div",{className:"revenue-breakdown-title",children:[(0,_.jsx)(S.q8i,{size:14,"aria-hidden":"true"}),"Revenue Breakdown"]}),(0,_.jsxs)("span",{className:"revenue-breakdown-count",children:[null!==(s=null===(a=r.orders)||void 0===a?void 0:a.length)&&void 0!==s?s:0," order",1!==(null!==(t=null===(i=r.orders)||void 0===i?void 0:i.length)&&void 0!==t?t:0)?"s":""]})]}),(0,_.jsx)(R,{orders:r.orders,getRevenue:C})]})]})})}function O(e){var s,a,t;let{rider:i,metrics:r,isExpanded:n,isFocused:l,onToggle:c,onFocus:d}=e;const{revenue:o,kms:u,totalCost:m,net:p,margin:h,orders:v}=r,x=p>=0,j="".concat((f=Math.abs(h),g=0,N=100,Math.min(Math.max(f,g),N)),"%");var f,g,N;const b=null!==(s=null===v||void 0===v?void 0:v.length)&&void 0!==s?s:0,y=null!==(a=null!==(t=i.riderName)&&void 0!==t?t:i.username)&&void 0!==a?a:"Rider #".concat(i.id),k=["rider-profitability-card",x?"rider-profitability-card--profitable":"rider-profitability-card--unprofitable",l?"rider-profitability-card--selected":""].filter(Boolean).join(" ");function w(){c(i.id),!l&&d&&d(i)}return(0,_.jsxs)("div",{className:k,"aria-label":"Rider: ".concat(y),children:[(0,_.jsxs)("div",{className:"rider-card-header",role:"button",tabIndex:0,"aria-expanded":n,onClick:w,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),w())},children:[(0,_.jsx)("div",{className:"rider-avatar","aria-hidden":"true",children:E(y)}),(0,_.jsxs)("div",{className:"rider-identity",children:[(0,_.jsx)("div",{className:"rider-name",title:y,children:y}),(0,_.jsxs)("div",{className:"rider-order-summary",children:[b," order",1!==b?"s":"",(0,_.jsx)("span",{className:"rider-order-summary-separator",children:"\xb7"}),u.toFixed(1)," km total"]})]}),(0,_.jsxs)("div",{className:"rider-metrics-row","aria-hidden":"true",children:[(0,_.jsxs)("div",{className:"rider-metric",children:[(0,_.jsx)("span",{className:"rider-metric-label",children:"Revenue"}),(0,_.jsx)("span",{className:"rider-metric-amount rider-metric-amount--revenue",children:D(o)})]}),(0,_.jsxs)("div",{className:"rider-metric",children:[(0,_.jsx)("span",{className:"rider-metric-label",children:"Cost"}),(0,_.jsx)("span",{className:"rider-metric-amount rider-metric-amount--cost",children:D(m)})]}),(0,_.jsxs)("div",{className:"rider-net-profit-column",children:[(0,_.jsxs)("div",{className:"rider-metric",children:[(0,_.jsx)("span",{className:"rider-metric-label",children:"Net"}),(0,_.jsxs)("span",{className:"rider-metric-amount ".concat(x?"rider-metric-amount--net-profit":"rider-metric-amount--net-loss"),children:[x?"+":"",D(p)]})]}),(0,_.jsx)("div",{className:"rider-margin-bar",children:(0,_.jsx)("div",{className:"rider-margin-bar-fill ".concat(x?"rider-margin-bar-fill--profit":"rider-margin-bar-fill--loss"),style:{width:j},role:"presentation"})})]})]}),(0,_.jsx)("div",{className:"rider-expand-toggle ".concat(n?"rider-expand-toggle--open":""),"aria-hidden":"true",children:(0,_.jsx)(S.j1Q,{size:22})})]}),n&&(0,_.jsx)(I,{rider:i,metrics:r})]})}function T(e){let{riders:s=[],totalDailyProfit:a=0,focusedRider:t=null,handleRiderFocus:n,selectedDate:l,batches:c}=e;const[d,o]=(0,r.useState)({}),u="profit-asc",m=(0,r.useCallback)((e=>{o((s=>(0,i.A)((0,i.A)({},s),{},{[e]:!s[e]})))}),[]),p=(0,r.useMemo)((()=>s.map((e=>(0,i.A)((0,i.A)({},e),{},{_m:P(e,l,c)})))),[s,l,c]),h=(0,r.useMemo)((()=>p.filter((e=>e._m.orders.length>0))),[p]),v=h.reduce(((e,s)=>e+s._m.revenue),0),x=h.reduce(((e,s)=>e+s._m.totalCost),0),j=h.reduce(((e,s)=>e+s._m.net),0),f=h.filter((e=>e._m.net>=0)).length,g=h.length-f,N=a>=0,b=j>=0,y=h,k=(0,r.useMemo)((()=>{const e=[...y];return e.sort(((e,s)=>e._m.net-s._m.net)),e}),[y,u]);return(0,_.jsxs)("div",{className:"profitability-dashboard",role:"region","aria-label":"Profitability overview",children:[(0,_.jsxs)("header",{className:"profitability-header",children:[(0,_.jsxs)("div",{className:"profitability-header-left",children:[(0,_.jsx)("div",{className:"profitability-header-icon","aria-hidden":"true",children:(0,_.jsx)(S.rgL,{size:18})}),(0,_.jsxs)("div",{children:[(0,_.jsx)("h2",{className:"profitability-header-title",children:"Profitability Overview"}),(0,_.jsxs)("p",{className:"profitability-header-subtitle",children:[(0,_.jsxs)("span",{children:[h.length," rider",1!==h.length?"s":""]}),(0,_.jsx)("span",{className:"profitability-header-dot"}),(0,_.jsxs)("span",{style:{color:"var(--profit-green)"},children:[f," profitable"]}),(0,_.jsx)("span",{className:"profitability-header-dot"}),(0,_.jsxs)("span",{style:{color:"var(--loss-red)"},children:[g," at loss"]})]})]})]}),(0,_.jsxs)("div",{className:"profitability-kpi-group",children:[(0,_.jsxs)("div",{className:"profitability-kpi-chip ".concat(N?"profitability-kpi-chip--profit":"profitability-kpi-chip--loss"),children:[(0,_.jsx)("div",{className:"profitability-kpi-chip-icon","aria-hidden":"true",children:N?(0,_.jsx)(S.imn,{}):(0,_.jsx)(S.Rod,{})}),(0,_.jsxs)("div",{className:"profitability-kpi-chip-content",children:[(0,_.jsxs)("span",{className:"profitability-kpi-chip-label",children:["Daily ",N?"profit":"loss"]}),(0,_.jsx)("span",{className:"profitability-kpi-chip-amount",children:D(Math.abs(a))})]})]}),(0,_.jsxs)("div",{className:"profitability-kpi-chip ".concat(b?"profitability-kpi-chip--profit":"profitability-kpi-chip--loss"),children:[(0,_.jsx)("div",{className:"profitability-kpi-chip-icon","aria-hidden":"true",children:b?(0,_.jsx)(S.imn,{}):(0,_.jsx)(S.Rod,{})}),(0,_.jsxs)("div",{className:"profitability-kpi-chip-content",children:[(0,_.jsxs)("span",{className:"profitability-kpi-chip-label",children:["Slot ",b?"profit":"loss"]}),(0,_.jsx)("span",{className:"profitability-kpi-chip-amount",children:D(Math.abs(j))})]})]})]})]}),(0,_.jsxs)("div",{className:"profitability-summary-row",role:"group","aria-label":"Slot summary",children:[(0,_.jsxs)("div",{className:"profitability-summary-card profitability-summary-card--primary",children:[(0,_.jsx)("span",{className:"profitability-summary-label",children:"Riders Active"}),(0,_.jsx)("span",{className:"profitability-summary-value",children:h.length}),(0,_.jsxs)("span",{className:"profitability-summary-detail",children:[f," in profit \xb7 ",g," at loss"]})]}),(0,_.jsxs)("div",{className:"profitability-summary-card profitability-summary-card--primary",children:[(0,_.jsx)("span",{className:"profitability-summary-label",children:"Slot Revenue"}),(0,_.jsx)("span",{className:"profitability-summary-value",children:D(v)}),(0,_.jsxs)("span",{className:"profitability-summary-detail",children:["From ",p.reduce(((e,s)=>{var a,t;return e+(null!==(a=null===(t=s._m.orders)||void 0===t?void 0:t.length)&&void 0!==a?a:0)}),0)," orders"]})]}),(0,_.jsxs)("div",{className:"profitability-summary-card profitability-summary-card--loss",children:[(0,_.jsx)("span",{className:"profitability-summary-label",children:"Slot Cost"}),(0,_.jsx)("span",{className:"profitability-summary-value profitability-summary-value--loss",children:D(x)}),(0,_.jsx)("span",{className:"profitability-summary-detail",children:"Fixed + variable"})]}),(0,_.jsxs)("div",{className:"profitability-summary-card ".concat(b?"card-profit":"card-loss"),children:[(0,_.jsx)("span",{className:"profitability-summary-label",children:"Slot Net"}),(0,_.jsxs)("span",{className:"profitability-summary-value ".concat(b?"net-positive":"net-negative"),children:[b?"+":"",D(j)]}),(0,_.jsx)("span",{className:"profitability-summary-detail ".concat(v>0?j/v>=0?"margin-positive":"margin-negative":""),children:v>0?"".concat(j/v>=0?"+":"").concat((j/v*100).toFixed(0),"% margin"):"0% margin"})]})]}),(0,_.jsxs)("div",{className:"rider-profitability-feed",role:"list","aria-label":"Rider cards",children:[(0,_.jsx)("div",{className:"rider-feed-heading","aria-hidden":"true",children:"Riders List"}),0===k.length?(0,_.jsxs)("div",{className:"profitability-empty-state",role:"status",children:[(0,_.jsx)(S._pN,{size:32,"aria-hidden":"true"}),(0,_.jsx)("p",{className:"profitability-empty-message",children:"No riders matching the filters."})]}):k.map((e=>(0,_.jsx)("div",{role:"listitem",children:(0,_.jsx)(O,{rider:e,metrics:e._m,isExpanded:!!d[e.id],isFocused:(null===t||void 0===t?void 0:t.id)===e.id,onToggle:m,onFocus:n})},e.id)))]})]})}var Y=a(84702);const H=e=>{let{visibleRiders:s,riders:a,focusedStop:t,handleRiderFocus:i,setFocusedStop:r,calculateEstMeters:n,getRiderColor:l,formatMeters:c}=e;const d=s.map((e=>(0,Y.d1)(e.orders))).filter(Boolean).sort(((e,s)=>String(e.rider_name||e.ridername||"").localeCompare(String(s.rider_name||s.ridername||""))));if(0===d.length)return(0,_.jsxs)("div",{className:"empty-slot",children:[(0,_.jsx)("div",{className:"empty-slot-icon",children:(0,_.jsx)(S.gsJ,{})}),(0,_.jsx)("div",{className:"empty-slot-title",children:"No active deliveries"}),(0,_.jsx)("div",{className:"empty-slot-sub",children:"No deliveries are currently in progress for this slot"})]});return(0,_.jsx)("div",{className:"adcard-list",children:d.map(((e,s)=>{const d=e.rider_id,o=a.find((e=>String(e.id)===String(d))),u=l(d),m=(0,Y.Cx)(e.orderstatus),p=parseFloat(e.droplat||e.deliverylat),h=parseFloat(e.droplon||e.deliverylong),v=Number.isFinite(p)&&Number.isFinite(h),x=n(d,e),j=e.deliverycustomer||e.customername||"Order #".concat(e.orderid),f=e.deliverysuburb||e.deliveryaddress||e.zone_name||"",g=e.rider_name||e.ridername||"Unassigned",N=v&&t&&String(t.orderid)===String(e.orderid),b=g.split(/\s+/).filter(Boolean).slice(0,2).map((e=>e[0])).join("").toUpperCase()||"\u2022";return(0,_.jsxs)("div",{className:"adcard".concat(N?" is-active":""),style:{"--ad-accent":u,animationDelay:"".concat(.05*s,"s")},onClick:()=>{o&&i(o),v&&r({orderid:e.orderid,lat:p,lon:h})},children:[(0,_.jsxs)("div",{className:"adcard-top",children:[(0,_.jsx)("div",{className:"adcard-avatar",style:{background:u},children:b}),(0,_.jsxs)("div",{className:"adcard-titles",children:[(0,_.jsx)("div",{className:"adcard-customer",title:j,children:j}),(0,_.jsxs)("div",{className:"adcard-rider",title:g,children:[(0,_.jsx)(S.aVM,{style:{fontSize:13,flexShrink:0}}),(0,_.jsx)("span",{className:"adcard-tx",children:g})]})]}),(0,_.jsx)("span",{className:"adcard-status",style:{background:"".concat(m.bg,"1a"),color:m.bg},title:m.label,children:m.label})]}),f&&(0,_.jsxs)("div",{className:"adcard-addr",children:[(0,_.jsx)("span",{className:"adcard-ic",children:(0,_.jsx)(S.gwi,{})}),(0,_.jsx)("span",{className:"adcard-tx adcard-addr-tx",title:f,children:f})]}),(0,_.jsxs)("div",{className:"adcard-foot",children:[e.pickupcustomer?(0,_.jsxs)("span",{className:"adcard-pickup",title:e.pickupcustomer,children:[(0,_.jsx)("span",{className:"adcard-ic",children:(0,_.jsx)(S.NtI,{})}),(0,_.jsx)("span",{className:"adcard-tx",children:e.pickupcustomer})]}):(0,_.jsx)("span",{}),(0,_.jsxs)("span",{className:"adcard-metrics",children:[(0,_.jsxs)("span",{className:"adcard-m adcard-m-km",title:"Trip distance",children:[(0,_.jsx)("span",{className:"adcard-ic",children:(0,_.jsx)(S.xI$,{})}),parseFloat(e.actualkms||e.kms||0).toFixed(1)," km"]}),null!==x&&(0,_.jsxs)("span",{className:"adcard-m adcard-m-eta",title:"Estimated distance to drop location",children:[(0,_.jsx)("span",{className:"adcard-ic",children:(0,_.jsx)(S.HPi,{})}),c(x)]})]})]})]},e.orderid)}))})};var V=a(81425),B=a(14857),K=a(47223);const U=function(e){let{focusedRider:s,compareDeltas:a,compareSummary:t,actualOrdered:i,focusedCompareStep:n,setFocusedCompareStep:l,sequenceOpen:c,setSequenceOpen:d,expandedSeqGroups:o,setExpandedSeqGroups:u,onClose:m}=e;const p=(0,B.A)(),h=(0,K.A)(p.breakpoints.down("md")),v=(0,r.useMemo)((()=>{const e=t,r=e.onTime+e.late,n=s.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),l=n<0,c=a.filter((e=>e.anomaly)),d=a.filter((e=>Y.Ys.has(String(e.orderstatus||"").toLowerCase()))).length,o=a.filter((e=>Y.yP.has(String(e.orderstatus||"").toLowerCase()))).length,u=null==e.kmDeltaPct?"":e.kmDeltaPct>25?"is-over":e.kmDeltaPct<-5?"is-under":"",m=a.length||1,p=e.onTime+e.late||1,h=Math.round(d/m*60+e.onTime/p*25+(m-e.anomalies)/m*15),v=h>=85?"#16a34a":h>=65?"#f59e0b":"#dc2626",x=h>=85?"Excellent":h>=65?"Acceptable":"Needs review",j=a.filter((e=>e.actualTs)),f=j.reduce(((e,s)=>!e||s.actualTs.isBefore(e)?s.actualTs:e),null),g=j.reduce(((e,s)=>!e||s.actualTs.isAfter(e)?s.actualTs:e),null),N=f&&g?Math.max(0,g.diff(f,"minute")):0,b=a.length>1?Math.round(N/(a.length-1)):0,y=N>0?(e.actualKm/(N/60)).toFixed(1):null,k=a.filter((e=>!e.isLoading&&e.coordsCount>0)),S=k.filter((e=>null!=e.timeDeltaMin&&!e.anomaly)).sort(((e,s)=>e.timeDeltaMin-s.timeDeltaMin))[0]||null,_=k.filter((e=>e.anomaly)).sort(((e,s)=>{const a=Math.abs(e.kmDeltaPct||0)+(e.timeDeltaMin>0?e.timeDeltaMin:0);return Math.abs(s.kmDeltaPct||0)+(s.timeDeltaMin>0?s.timeDeltaMin:0)-a}))[0]||null,w=i.filter(((e,s)=>{var a;const t=null===(a=e.order)||void 0===a?void 0:a.step;return null!=t&&t!==s+1})),F=[];w.forEach((e=>{var s;const a=null===(s=e.order)||void 0===s?void 0:s.step,t=i.findIndex((s=>s.sequenceStep===e.sequenceStep))+1,r=t-a,n=F[F.length-1];n&&n.delta===r&&n.lastActualPos+1===t?(n.items.push({d:e,planned:a,actualPos:t,delta:r}),n.lastActualPos=t):F.push({delta:r,items:[{d:e,planned:a,actualPos:t,delta:r}],lastActualPos:t})}));const M={};s.orders.forEach((e=>{const s=e.trip_number||1;M[s]||(M[s]=[]),M[s].push(e)}));const C=Object.entries(M).sort(((e,s)=>{let[a]=e,[t]=s;return Number(a)-Number(t)})).map((e=>{let[s,a]=e;return{tNum:s,count:a.length,plannedKm:a.reduce(((e,s)=>e+parseFloat(s.kms||0)),0),actualKm:a.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),profit:a.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),delivered:a.filter((e=>Y.Ys.has(String(e.orderstatus||"").toLowerCase()))).length}}));return{sum:e,totalSteps:r,totalProfit:n,isLoss:l,deviations:c,delivered:d,skipped:o,stepDeltaPct:u,score:h,scoreColor:v,scoreLabel:x,firstDelivery:f,lastDelivery:g,activeMin:N,avgPerStop:b,avgSpeed:y,bestStep:S,worstStep:_,outOfOrderSteps:w,seqRuns:F,tripList:C}}),[s,a,t,i]),x=null!=n?a.find((e=>e.sequenceStep===n)):null,j=e=>{l((s=>s===e?null:e))},f=function(e){let s=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const{d:a,planned:t,actualPos:i,delta:r}=e;return(0,_.jsxs)("li",{className:"cdp-seq-diff".concat(n===a.sequenceStep?" is-focused":"").concat(s?"":" is-nested"),onClick:()=>j(a.sequenceStep),children:[(0,_.jsx)("span",{className:"cdp-seq-diff-num",style:{background:(0,Y.gM)((t||a.sequenceStep)-1)},children:t||a.sequenceStep}),(0,_.jsxs)("div",{className:"cdp-seq-diff-body",children:[(0,_.jsx)("div",{className:"cdp-seq-diff-title",children:a.deliverycustomer||"Step ".concat(t||a.sequenceStep)}),(0,_.jsxs)("div",{className:"cdp-seq-diff-sub",children:["Visited ",(0,_.jsx)("strong",{children:(0,Y.IE)(i)})," ","\xb7 planned ",(0,_.jsx)("strong",{children:(0,Y.IE)(t)})]})]}),(0,_.jsx)("span",{className:"cdp-seq-diff-tag",children:r>0?"+".concat(r):"".concat(r)})]},"diff-".concat(a.sequenceStep))},{sum:g,totalSteps:N,totalProfit:b,isLoss:y,deviations:k,delivered:w,skipped:F,stepDeltaPct:M,score:C,scoreColor:A,scoreLabel:z,firstDelivery:P,lastDelivery:D,activeMin:E,avgPerStop:L,avgSpeed:q,bestStep:R,worstStep:I,outOfOrderSteps:O,seqRuns:T,tripList:H}=v;return(0,_.jsxs)("aside",{id:"compare-data-panel",className:"compare-data-panel".concat(h?" cdp-is-mobile":""),children:[(0,_.jsxs)("div",{className:"cdp-head",children:[(0,_.jsxs)("div",{className:"cdp-head-title",children:[(0,_.jsx)("span",{className:"cdp-rider-dot",style:{background:s.color}}),(0,_.jsxs)("div",{className:"cdp-head-text",children:[(0,_.jsx)("div",{className:"cdp-rider-name",children:s.riderName}),(0,_.jsx)("div",{className:"cdp-head-badge",children:"PLANNED vs ACTUAL"})]})]}),(0,_.jsx)("button",{type:"button",className:"cdp-close",onClick:m,title:"Exit compare","aria-label":"Exit compare",children:(0,_.jsx)(S.m6K,{})})]}),(0,_.jsxs)("div",{className:"cdp-scroll",children:[(0,_.jsx)("section",{className:"cdp-section cdp-score-section",children:(0,_.jsxs)("div",{className:"cdp-score-wrap",children:[(0,_.jsx)("div",{className:"cdp-score-ring",style:{background:"conic-gradient(".concat(A," ").concat(3.6*C,"deg, rgba(15,23,42,0.08) 0deg)")},children:(0,_.jsxs)("div",{className:"cdp-score-inner",children:[(0,_.jsx)("div",{className:"cdp-score-value",style:{color:A},children:C}),(0,_.jsx)("div",{className:"cdp-score-unit",children:"/100"})]})}),(0,_.jsxs)("div",{className:"cdp-score-body",children:[(0,_.jsx)("div",{className:"cdp-score-label",style:{color:A},children:z}),(0,_.jsx)("div",{className:"cdp-score-title",children:"Compliance score"}),(0,_.jsxs)("div",{className:"cdp-score-sub",children:[w,"/",a.length," delivered",g.anomalies>0?" \xb7 ".concat(g.anomalies," deviation").concat(g.anomalies>1?"s":""):"",g.late>0?" \xb7 ".concat(g.late," late"):"",F>0?" \xb7 ".concat(F," skipped"):""]})]})]})}),(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.Zs6,{})}),(0,_.jsx)("span",{className:"cdp-section-title",children:"Day overview"})]}),(0,_.jsxs)("div",{className:"cdp-tiles",children:[(0,_.jsxs)("div",{className:"cdp-tile",children:[(0,_.jsxs)("div",{className:"cdp-tile-label",children:[(0,_.jsx)(S.xI$,{})," Distance"]}),(0,_.jsxs)("div",{className:"cdp-tile-value",children:[g.actualKm.toFixed(1),(0,_.jsx)("span",{className:"cdp-tile-unit",children:"km"})]}),(0,_.jsxs)("div",{className:"cdp-tile-sub",children:["planned ",g.plannedKm.toFixed(1)," km"]})]}),(0,_.jsxs)("div",{className:"cdp-tile".concat(g.anomalies>0?" is-warn":""),children:[(0,_.jsxs)("div",{className:"cdp-tile-label",children:[(0,_.jsx)(S.Wux,{})," Deviation"]}),(0,_.jsx)("div",{className:"cdp-tile-value ".concat(M),children:null!=g.kmDeltaPct?"".concat(g.kmDeltaPct>0?"+":"").concat(g.kmDeltaPct.toFixed(0),"%"):"\u2014"}),(0,_.jsx)("div",{className:"cdp-tile-sub",children:g.anomalies>0?"".concat(g.anomalies," flagged"):"within plan"})]}),(0,_.jsxs)("div",{className:"cdp-tile".concat(g.late>0?" is-warn":""),children:[(0,_.jsxs)("div",{className:"cdp-tile-label",children:[(0,_.jsx)(S.VP9,{})," On-time"]}),(0,_.jsxs)("div",{className:"cdp-tile-value",children:[g.onTime,N>0&&(0,_.jsxs)("span",{className:"cdp-tile-unit",children:["/",N]})]}),(0,_.jsx)("div",{className:"cdp-tile-sub",children:g.late>0?"".concat(g.late," late"):"all on schedule"})]}),(0,_.jsxs)("div",{className:"cdp-tile ".concat(y?"is-loss":"is-gain"),children:[(0,_.jsxs)("div",{className:"cdp-tile-label",children:[y?(0,_.jsx)(S.Rod,{}):(0,_.jsx)(S.imn,{})," ",y?"Loss":"Profit"]}),(0,_.jsxs)("div",{className:"cdp-tile-value",children:[y?"-":"","\u20b9",Math.abs(b).toFixed(0)]}),(0,_.jsxs)("div",{className:"cdp-tile-sub",children:[s.orders.length," ",1===s.orders.length?"order":"orders"," \xb7 ",w," delivered"]})]})]})]}),a.length>0&&(0,_.jsxs)("section",{className:"cdp-section cdp-seq-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head cdp-section-head-clickable",onClick:()=>d((e=>!e)),role:"button","aria-expanded":c,title:c?"Collapse route sequence":"Expand route sequence",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.$G1,{})}),(0,_.jsx)("span",{className:"cdp-section-title",children:"Route sequence"}),(0,_.jsx)("span",{className:"cdp-seq-status".concat(O.length>0?" is-warn":" is-good"),children:O.length>0?"".concat(O.length," out of order"):"In order"}),(0,_.jsx)("span",{className:"cdp-seq-toggle".concat(c?" is-open":""),children:(0,_.jsx)(S.j1Q,{})})]}),c&&(0,_.jsx)("div",{className:"cdp-seq",children:O.length>0?(0,_.jsx)("ul",{className:"cdp-seq-diffs",children:T.map(((e,s)=>{if(1===e.items.length)return f(e.items[0]);const a=e.items[0],t=e.items[e.items.length-1],i=o.has(s),l=e.delta>0?"+".concat(e.delta):"".concat(e.delta),c=e.items.some((e=>e.d.sequenceStep===n));return(0,_.jsxs)(r.Fragment,{children:[(0,_.jsxs)("li",{className:"cdp-seq-diff is-group".concat(i?" is-expanded":"").concat(c?" is-focused":""),onClick:()=>{return e=s,void u((s=>{const a=new Set(s);return a.has(e)?a.delete(e):a.add(e),a}));var e},"aria-expanded":i,children:[(0,_.jsxs)("span",{className:"cdp-seq-group-num",children:[(0,_.jsx)("span",{className:"cdp-seq-group-num-bg",style:{background:"linear-gradient(135deg, ".concat((0,Y.gM)((a.planned||1)-1),", ").concat((0,Y.gM)((t.planned||1)-1),")")}}),(0,_.jsxs)("span",{className:"cdp-seq-group-num-label",children:[e.items.length,"\xd7"]})]}),(0,_.jsxs)("div",{className:"cdp-seq-diff-body",children:[(0,_.jsxs)("div",{className:"cdp-seq-diff-title",children:[e.items.length," consecutive steps shifted"," ",(0,_.jsx)("span",{className:"cdp-seq-group-delta",children:l})]}),(0,_.jsxs)("div",{className:"cdp-seq-diff-sub",children:["Planned ",(0,Y.IE)(a.planned),"\u2013",(0,Y.IE)(t.planned)," ","visited"," ",(0,_.jsxs)("strong",{children:[(0,Y.IE)(a.actualPos),"\u2013",(0,Y.IE)(t.actualPos)]})]})]}),(0,_.jsx)("span",{className:"cdp-seq-diff-tag",children:l}),(0,_.jsx)("span",{className:"cdp-seq-group-toggle".concat(i?" is-open":""),"aria-hidden":"true",children:(0,_.jsx)(S.j1Q,{})})]}),i&&(0,_.jsx)("li",{className:"cdp-seq-group-children-wrap",children:(0,_.jsx)("ul",{className:"cdp-seq-group-children",children:e.items.map((e=>f(e,!1)))})})]},"run-".concat(s,"-").concat(a.d.sequenceStep))}))}):(0,_.jsxs)("div",{className:"cdp-seq-good",children:[(0,_.jsx)(S.mU9,{})," Rider followed the planned route in order."]})})]}),(P||D)&&(0,_.jsxs)("section",{className:"cdp-section cdp-timing-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.pWE,{})}),(0,_.jsx)("span",{className:"cdp-section-title",children:"Timing"}),E>0&&(0,_.jsxs)("span",{className:"cdp-timing-active-tag",children:[(0,_.jsx)("span",{className:"cdp-timing-active-pulse"}),"Day window"]})]}),(0,_.jsxs)("div",{className:"cdp-timing-clock",children:[(0,_.jsxs)("div",{className:"cdp-clock-card is-start",children:[(0,_.jsxs)("div",{className:"cdp-clock-label",children:[(0,_.jsx)(S.WVj,{})," First delivery"]}),(0,_.jsxs)("div",{className:"cdp-clock-face",children:[(0,_.jsx)("span",{className:"cdp-clock-time",children:P?P.format("hh:mm"):"\u2014"}),(0,_.jsx)("span",{className:"cdp-clock-period",children:P?P.format("A"):""})]}),(0,_.jsx)("div",{className:"cdp-clock-caption",children:"Started"})]}),(0,_.jsxs)("div",{className:"cdp-clock-track","aria-hidden":"true",children:[(0,_.jsx)("span",{className:"cdp-clock-track-line"}),(0,_.jsx)("span",{className:"cdp-clock-track-dot is-start"}),(0,_.jsx)("span",{className:"cdp-clock-track-dot is-end"}),(0,_.jsxs)("div",{className:"cdp-clock-duration",children:[(0,_.jsx)("span",{className:"cdp-clock-duration-icon",children:(0,_.jsx)(S.DZH,{})}),(0,_.jsx)("span",{className:"cdp-clock-duration-val",children:E>0?E>=60?"".concat(Math.floor(E/60),"h ").concat(E%60,"m"):"".concat(E,"m"):"\u2014"}),(0,_.jsx)("span",{className:"cdp-clock-duration-sub",children:"active"})]})]}),(0,_.jsxs)("div",{className:"cdp-clock-card is-end",children:[(0,_.jsxs)("div",{className:"cdp-clock-label",children:[(0,_.jsx)(S.mU9,{})," Last delivery"]}),(0,_.jsxs)("div",{className:"cdp-clock-face",children:[(0,_.jsx)("span",{className:"cdp-clock-time",children:D?D.format("hh:mm"):"\u2014"}),(0,_.jsx)("span",{className:"cdp-clock-period",children:D?D.format("A"):""})]}),(0,_.jsx)("div",{className:"cdp-clock-caption",children:"Finished"})]})]}),(0,_.jsxs)("div",{className:"cdp-timing-stats",children:[(0,_.jsxs)("div",{className:"cdp-timing-stat",children:[(0,_.jsxs)("div",{className:"cdp-timing-stat-head",children:[(0,_.jsx)("div",{className:"cdp-timing-stat-icon",children:(0,_.jsx)(S.VP9,{})}),(0,_.jsxs)("div",{className:"cdp-timing-stat-body",children:[(0,_.jsxs)("div",{className:"cdp-timing-stat-value",children:[L>0?"".concat(L):"\u2014",L>0&&(0,_.jsx)("span",{className:"cdp-timing-stat-unit",children:"min"})]}),(0,_.jsx)("div",{className:"cdp-timing-stat-label",children:"Avg / stop"})]})]}),a.length>0&&(0,_.jsxs)("div",{className:"cdp-timing-stat-viz cdp-stops-dots","aria-hidden":"true",children:[Array.from({length:Math.min(a.length,12)}).map(((e,s)=>(0,_.jsx)("span",{className:"cdp-stop-dot"},"dot-".concat(s)))),(0,_.jsxs)("span",{className:"cdp-timing-stat-viz-label",children:[a.length," stop",1===a.length?"":"s"]})]})]}),null!=q&&(0,_.jsxs)("div",{className:"cdp-timing-stat",children:[(0,_.jsxs)("div",{className:"cdp-timing-stat-head",children:[(0,_.jsx)("div",{className:"cdp-timing-stat-icon",children:(0,_.jsx)(S.BJM,{})}),(0,_.jsxs)("div",{className:"cdp-timing-stat-body",children:[(0,_.jsxs)("div",{className:"cdp-timing-stat-value",children:[q,(0,_.jsx)("span",{className:"cdp-timing-stat-unit",children:"km/h"})]}),(0,_.jsx)("div",{className:"cdp-timing-stat-label",children:"Avg speed"})]})]}),(0,_.jsxs)("div",{className:"cdp-timing-stat-viz cdp-speed-gauge","aria-hidden":"true",children:[(0,_.jsx)("div",{className:"cdp-speed-gauge-track",children:(0,_.jsx)("div",{className:"cdp-speed-gauge-fill",style:{width:"".concat(Math.min(100,parseFloat(q)/60*100),"%")}})}),(0,_.jsxs)("div",{className:"cdp-speed-gauge-scale",children:[(0,_.jsx)("span",{children:"0"}),(0,_.jsx)("span",{children:"30"}),(0,_.jsx)("span",{children:"60 km/h"})]})]})]})]})]}),(R||I)&&(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.SeC,{})}),(0,_.jsx)("span",{className:"cdp-section-title",children:"Highlights"})]}),(0,_.jsxs)("div",{className:"cdp-highlights",children:[R&&(0,_.jsxs)("div",{className:"cdp-highlight is-best",onClick:()=>j(R.sequenceStep),role:"button",title:"Focus this step",children:[(0,_.jsx)("span",{className:"cdp-highlight-rail","aria-hidden":"true"}),(0,_.jsxs)("div",{className:"cdp-highlight-content",children:[(0,_.jsxs)("div",{className:"cdp-highlight-top",children:[(0,_.jsxs)("span",{className:"cdp-highlight-label",children:[(0,_.jsx)("span",{className:"cdp-highlight-chip",children:(0,_.jsx)(S.mU9,{})}),"Fastest stop"]}),(0,_.jsxs)("span",{className:"cdp-highlight-step-chip",style:{background:(0,Y.gM)(R.sequenceStep-1)},children:["Step ",R.sequenceStep]})]}),(0,_.jsx)("div",{className:"cdp-highlight-title",children:R.deliverycustomer||"Step ".concat(R.sequenceStep)}),(0,_.jsx)("div",{className:"cdp-highlight-meta",children:(0,_.jsx)("span",{className:"cdp-highlight-pill is-good",children:null!=R.timeDeltaMin?0===R.timeDeltaMin?"On schedule":"".concat(R.timeDeltaMin>0?"+":"").concat(R.timeDeltaMin," min vs plan"):"On schedule"})})]})]}),I&&(0,_.jsxs)("div",{className:"cdp-highlight is-worst",onClick:()=>j(I.sequenceStep),role:"button",title:"Focus this step",children:[(0,_.jsx)("span",{className:"cdp-highlight-rail","aria-hidden":"true"}),(0,_.jsxs)("div",{className:"cdp-highlight-content",children:[(0,_.jsxs)("div",{className:"cdp-highlight-top",children:[(0,_.jsxs)("span",{className:"cdp-highlight-label",children:[(0,_.jsx)("span",{className:"cdp-highlight-chip",children:(0,_.jsx)(S.Wux,{})}),"Biggest deviation"]}),(0,_.jsxs)("span",{className:"cdp-highlight-step-chip",style:{background:(0,Y.gM)(I.sequenceStep-1)},children:["Step ",I.sequenceStep]})]}),(0,_.jsx)("div",{className:"cdp-highlight-title",children:I.deliverycustomer||"Step ".concat(I.sequenceStep)}),(0,_.jsxs)("div",{className:"cdp-highlight-meta",children:[null!=I.kmDeltaPct&&(0,_.jsxs)("span",{className:"cdp-highlight-pill is-bad",children:[I.kmDeltaPct>0?"+":"",I.kmDeltaPct.toFixed(0),"% route"]}),null!=I.timeDeltaMin&&I.timeDeltaMin>0&&(0,_.jsxs)("span",{className:"cdp-highlight-pill is-bad",children:["+",I.timeDeltaMin,"m late"]})]})]})]})]})]}),H.length>1&&(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.$G1,{})}),(0,_.jsxs)("span",{className:"cdp-section-title",children:["Trips (",H.length,")"]})]}),(0,_.jsx)("div",{className:"cdp-trips",children:H.map((e=>{const s=e.profit<0;return(0,_.jsxs)("div",{className:"cdp-trip",children:[(0,_.jsxs)("div",{className:"cdp-trip-head",children:[(0,_.jsxs)("span",{className:"cdp-trip-badge",children:["Trip ",e.tNum]}),(0,_.jsxs)("span",{className:"cdp-trip-meta",children:[e.delivered,"/",e.count," delivered"]})]}),(0,_.jsxs)("div",{className:"cdp-trip-stats",children:[(0,_.jsxs)("span",{title:"Distance",children:[(0,_.jsx)(S.xI$,{}),e.actualKm.toFixed(1),"km",(0,_.jsxs)("small",{children:[" / ",e.plannedKm.toFixed(1)]})]}),(0,_.jsxs)("span",{className:s?"is-over":"",title:s?"Loss":"Profit",children:[(0,_.jsx)(S.ohY,{}),s?"-":"","\u20b9",Math.abs(e.profit).toFixed(0)]})]})]},"trip-".concat(e.tNum))}))})]}),x&&(e=>{const s=(0,Y.gM)(x.sequenceStep-1),a=x.kmDelta>=0?"+":"",t=x.anomaly?"is-over":x.kmDelta<-.1?"is-under":"",i=null!=x.timeDeltaMin?x.timeDeltaMin>10?"is-over":x.timeDeltaMin<-2?"is-under":"":"",r=(0,Y.Cx)(x.orderstatus),n=parseFloat((null===(e=x.order)||void 0===e?void 0:e.profit)||0);return(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.$G1,{})}),(0,_.jsxs)("span",{className:"cdp-section-title",children:["Step ",x.sequenceStep," details"]}),(0,_.jsx)("button",{type:"button",className:"cdp-section-clear",onClick:()=>l(null),title:"Clear step focus",children:"Show all"})]}),(0,_.jsxs)("div",{className:"compare-delta".concat(x.anomaly?" is-anomaly":""),children:[(0,_.jsxs)("div",{className:"compare-delta-title",children:[(0,_.jsx)("span",{className:"compare-delta-step-badge",style:{background:s},children:x.sequenceStep}),(0,_.jsxs)("div",{className:"compare-delta-title-text",children:[(0,_.jsx)("div",{className:"compare-delta-title-main",children:x.deliverycustomer||"Step ".concat(x.sequenceStep)}),(0,_.jsxs)("div",{className:"compare-delta-title-sub",children:[x.pickupcustomer?"from ".concat(x.pickupcustomer," \xb7 "):"","Order #",x.orderid]})]}),x.orderstatus&&(0,_.jsx)("span",{className:"compare-delta-status",style:{background:r.bg,color:r.fg},children:r.label})]}),(0,_.jsxs)("div",{className:"compare-delta-grid",children:[(0,_.jsxs)("div",{className:"compare-delta-cell".concat(x.anomaly?" is-anomaly":""),children:[(0,_.jsx)("span",{className:"compare-delta-cell-label",children:"Distance"}),(0,_.jsxs)("span",{className:"compare-delta-cell-val",children:[x.actualKm.toFixed(2)," ",(0,_.jsx)("span",{className:"compare-delta-cell-unit",children:"km"})]}),(0,_.jsxs)("span",{className:"compare-delta-cell-sub",children:["planned ",x.plannedKm.toFixed(2)," km"]})]}),(0,_.jsxs)("div",{className:"compare-delta-cell",children:[(0,_.jsx)("span",{className:"compare-delta-cell-label",children:"\u0394 Route"}),(0,_.jsxs)("span",{className:"compare-delta-cell-val ".concat(t),children:[a,x.kmDelta.toFixed(2)," km"]}),(0,_.jsx)("span",{className:"compare-delta-cell-sub",children:null!=x.kmDeltaPct?"".concat(a).concat(x.kmDeltaPct.toFixed(0),"% vs plan"):"no planned km"})]}),(0,_.jsxs)("div",{className:"compare-delta-cell",children:[(0,_.jsx)("span",{className:"compare-delta-cell-label",children:"Time"}),(0,_.jsx)("span",{className:"compare-delta-cell-val ".concat(i),children:null!=x.timeDeltaMin?"".concat(x.timeDeltaMin>0?"+":"").concat(x.timeDeltaMin," min"):"\u2014"}),(0,_.jsx)("span",{className:"compare-delta-cell-sub",children:x.actualTs&&x.expectedTs?"".concat(x.actualTs.format("HH:mm")," vs ").concat(x.expectedTs.format("HH:mm")):x.actualTs?"delivered ".concat(x.actualTs.format("HH:mm")):"in flight"})]}),!Number.isNaN(n)&&0!==n&&(0,_.jsxs)("div",{className:"compare-delta-cell".concat(n<0?" is-anomaly":""),children:[(0,_.jsx)("span",{className:"compare-delta-cell-label",children:n<0?"Loss":"Profit"}),(0,_.jsxs)("span",{className:"compare-delta-cell-val ".concat(n<0?"is-over":"is-under"),children:[n<0?"-":"","\u20b9",Math.abs(n).toFixed(0)]}),(0,_.jsx)("span",{className:"compare-delta-cell-sub",children:"order revenue"})]})]})]})]})})(),k.length>0&&(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon cdp-icon-warn",children:(0,_.jsx)(S.ItP,{})}),(0,_.jsxs)("span",{className:"cdp-section-title",children:["Deviations (",k.length,")"]})]}),(0,_.jsx)("ul",{className:"cdp-dev-list",children:k.map((e=>{const s=(0,Y.gM)(e.sequenceStep-1),a=e.kmDelta>=0?"+":"";return(0,_.jsxs)("li",{className:"cdp-dev-item".concat(n===e.sequenceStep?" is-focused":""),onClick:()=>j(e.sequenceStep),children:[(0,_.jsx)("span",{className:"cdp-dev-num",style:{background:s},children:e.sequenceStep}),(0,_.jsxs)("div",{className:"cdp-dev-body",children:[(0,_.jsx)("div",{className:"cdp-dev-title",children:e.deliverycustomer||"Step ".concat(e.sequenceStep)}),(0,_.jsxs)("div",{className:"cdp-dev-meta",children:[null!=e.kmDeltaPct&&(0,_.jsxs)("span",{className:"cdp-dev-chip is-over",children:[a,e.kmDeltaPct.toFixed(0),"% route"]}),null!=e.timeDeltaMin&&e.timeDeltaMin>10&&(0,_.jsxs)("span",{className:"cdp-dev-chip is-over",children:["+",e.timeDeltaMin,"m late"]})]})]})]},"dev-".concat(e.sequenceStep))}))})]}),(0,_.jsxs)("section",{className:"cdp-section",children:[(0,_.jsxs)("div",{className:"cdp-section-head",children:[(0,_.jsx)("span",{className:"cdp-section-icon",children:(0,_.jsx)(S.EgJ,{})}),(0,_.jsxs)("span",{className:"cdp-section-title",children:["Steps (",a.length,")"]}),(0,_.jsxs)("span",{className:"cdp-section-sub",children:[w,"/",a.length," delivered"]})]}),(0,_.jsx)("ul",{className:"cdp-step-list",children:a.map((e=>{var s;const a=(0,Y.gM)(e.sequenceStep-1),t=String(e.orderstatus||"").toLowerCase(),i=Y.Ys.has(t),r=Y.yP.has(t),l=i&&!e.anomaly,c=n===e.sequenceStep,d=(0,Y.Cx)(e.orderstatus),o=parseFloat((null===(s=e.order)||void 0===s?void 0:s.profit)||0),u=e.kmDelta>=0?"+":"",m=null!=e.timeDeltaMin?e.timeDeltaMin>10?"is-over":e.timeDeltaMin<-2?"is-under":"":"",p=["cdp-step",c?"is-focused":"",e.anomaly?"is-anomaly":"",l?"is-correct":"",r?"is-skipped":"",e.isLoading?"is-loading":""].filter(Boolean).join(" ");return(0,_.jsxs)("li",{className:p,onClick:()=>j(e.sequenceStep),children:[(0,_.jsxs)("span",{className:"cdp-step-num",style:{background:a},children:[e.sequenceStep,l&&(0,_.jsx)("span",{className:"cdp-step-check",children:(0,_.jsx)(S.mU9,{})}),e.anomaly&&(0,_.jsx)("span",{className:"cdp-step-flag",children:(0,_.jsx)(S.ItP,{})})]}),(0,_.jsxs)("div",{className:"cdp-step-body",children:[(0,_.jsxs)("div",{className:"cdp-step-title-row",children:[(0,_.jsx)("span",{className:"cdp-step-title",children:e.deliverycustomer||"Step ".concat(e.sequenceStep)}),e.orderstatus&&(0,_.jsx)("span",{className:"cdp-step-status",style:{background:d.bg,color:d.fg},children:d.label})]}),(0,_.jsxs)("div",{className:"cdp-step-sub",children:[e.pickupcustomer?"from ".concat(e.pickupcustomer," \xb7 "):"","Order #",e.orderid]}),(0,_.jsxs)("div",{className:"cdp-step-deltas",children:[(0,_.jsxs)("span",{className:"cdp-step-delta",title:"Distance",children:[(0,_.jsx)(S.xI$,{}),e.actualKm.toFixed(1),"km",e.plannedKm>0&&(0,_.jsxs)("small",{className:e.anomaly?"is-over":"",children:[" ",u,e.kmDelta.toFixed(1)]})]}),(0,_.jsxs)("span",{className:"cdp-step-delta ".concat(m),title:"Delivery time",children:[(0,_.jsx)(S.VP9,{}),e.actualTs?e.actualTs.format("HH:mm"):"\u2014",null!=e.timeDeltaMin&&(0,_.jsxs)("small",{children:[" ",e.timeDeltaMin>0?"+":"",e.timeDeltaMin,"m"]})]}),!Number.isNaN(o)&&0!==o&&(0,_.jsxs)("span",{className:"cdp-step-delta".concat(o<0?" is-over":""),title:o<0?"Loss":"Profit",children:[(0,_.jsx)(S.ohY,{}),o<0?"-":"","\u20b9",Math.abs(o).toFixed(0)]})]})]})]},"step-".concat(e.sequenceStep))}))})]})]})]})};var G=a(85571);const J=["_ts"],W="#662582",$="#10b981",Z=e=>{const s=parseFloat(e);return Number.isFinite(s)?s:NaN},X=e=>{if(!e)return"";const s=String(e).trim();if(!s)return"";if(s.includes(",")){const e=s.split(",").map((e=>e.trim())).filter(Boolean);return 0===e.length?s:e.length<=2?e.join(", "):e.slice(-2).join(", ")}const a=s.split(/\s+/).filter(Boolean),t=a.length>6?a.slice(-6).join(" "):s;return t.length>40?"".concat(t.slice(0,40).trim(),"\u2026"):t},Q=e=>Number.isFinite(Z(e.droplat||e.deliverylat))&&Number.isFinite(Z(e.droplon||e.deliverylong)),ee=e=>e.pickuplat||e.pickuplatitude||e.pickup_lat,se=e=>e.pickuplong||e.pickuplongitude||e.picklongitude||e.pickup_lon,ae=e=>Number.isFinite(Z(ee(e)))&&Number.isFinite(Z(se(e))),te=[{id:"morning",name:"Morning Batch",startHour:0,endHour:8},{id:"afternoon",name:"Afternoon Batch",startHour:9,endHour:12.5},{id:"evening",name:"Evening Batch",startHour:16,endHour:19}],ie="dispatch.slots.v9",re=["dispatch.slots.v1","dispatch.slots.v2","dispatch.slots.v3","dispatch.slots.v4","dispatch.slots.v5","dispatch.slots.v6","dispatch.slots.v7","dispatch.slots.v8"],ne=(e,s)=>"Slot ".concat(e+1," \xb7 ").concat(le(s)),le=e=>{const s=Math.floor(e),a=Math.round(60*(e-s)),t=(s+11)%12+1,i=s>=12&&s<24?"PM":"AM";if(0===a)return"".concat(t," ").concat(i);const r=String(a).padStart(2,"0");return"".concat(t,":").concat(r," ").concat(i)},ce=(e,s)=>s>=24?"After ".concat(le(e)):"".concat(le(e),"\u2013").concat(le(s)),de=te.map(((e,s)=>(0,i.A)((0,i.A)({},e),{},{label:e.name||ne(s,e.startHour),range:ce(e.startHour,e.endHour)}))),oe=(e,s)=>{for(const a of s)if(e>=a.startHour&&e<a.endHour)return a.id;return null},ue=[{id:"delivered",label:"Delivered",keys:["deliverytime"]},{id:"pending",label:"Pending",keys:["expecteddeliverytime"]},{id:"assigned",label:"Assigned",keys:["assigntime"]},{id:"accepted",label:"Accepted",keys:["acceptedtime"]},{id:"started",label:"Started",keys:["starttime"]},{id:"arrived",label:"Arrived",keys:["arrivaltime"]},{id:"pickup",label:"Pickup",keys:["pickuptime"]},{id:"all",label:"All",keys:["deliverytime","expecteddeliverytime","assigntime","acceptedtime","arrivaltime","pickuptime","starttime"]}],me=function(e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:de;const a=((e,s)=>{const a=ue.find((e=>e.id===s))||ue[0];for(const t of a.keys)if(null!==e&&void 0!==e&&e[t])return e[t];return null})(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all");if(!a)return null;const t=String(a).trim();if(/^\d{4}-\d{2}-\d{2}$/.test(t))return null;const i=f()(a);return i.isValid()?oe(i.hour()+i.minute()/60,s):null};function pe(e){let{targetRef:s}=e;const a=(0,n.ko)();return(0,r.useEffect)((()=>(s.current=a,()=>{s.current=null})),[a]),null}function he(e){let{trigger:s}=e;const a=(0,n.ko)();return(0,r.useEffect)((()=>{const e=[0,60,120,200,300,380].map((e=>setTimeout((()=>a.invalidateSize({animate:!1})),e)));return()=>e.forEach(clearTimeout)}),[s,a]),null}function ve(e,s){const a=e=>e*Math.PI/180,t=a(e[0]),i=a(s[0]),r=a(s[0]-e[0]),n=a(s[1]-e[1]),l=Math.sin(r/2)**2+Math.cos(t)*Math.cos(i)*Math.sin(n/2)**2;return 12742*Math.asin(Math.min(1,Math.sqrt(l)))}function xe(e){if(!Array.isArray(e)||e.length<2)return 0;let s=0;for(let a=1;a<e.length;a++)s+=ve(e[a-1],e[a]);return s}function je(e,s){if(!Array.isArray(e)||e.length<2||!s||!s.length)return[];const a=s.map((s=>{let a=0,t=1/0;for(let i=0;i<e.length;i++){const r=e[i][0]-s[0],n=e[i][1]-s[1],l=r*r+n*n;l<t&&(t=l,a=i)}return a}));for(let r=1;r<a.length;r++)a[r]<a[r-1]&&(a[r]=a[r-1]);const t=[];let i=0;return a.forEach((s=>{const a=Math.max(s,i);t.push(e.slice(i,a+1)),i=a})),t}const fe=e=>{if(!e)return null;const s=f()(e);return s.isValid()?s.format("HH:mm:ss"):String(e)},ge=[{key:"assigntime",label:"Assigned"},{key:"acceptedtime",label:"Accepted"},{key:"arrivaltime",label:"Arrived"},{key:"pickuptime",label:"Pickup"},{key:"starttime",label:"Started"},{key:"deliverytime",label:"Delivered",final:!0}],Ne=e=>{const s=e.filter(Q);if(!s.length)return[];const a=e.find(ae),t=[];return a&&t.push([Z(ee(a)),Z(se(a))]),s.forEach((e=>t.push([Z(e.droplat||e.deliverylat),Z(e.droplon||e.deliverylong)]))),t},be=(e,s,a)=>{if(!a||0===a.length)return"".concat(e,"-").concat(s);const t=a.map((e=>"".concat(e[0].toFixed(5),",").concat(e[1].toFixed(5)))).join("|");return"".concat(e,"-").concat(s,"-").concat(t)};delete v().Icon.Default.prototype._getIconUrl,v().Icon.Default.mergeOptions({iconRetinaUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-icon-2x.png",iconUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-icon.png",shadowUrl:"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/images/marker-shadow.png"});const ye=["#0055FF","#00D82C","#FF6B00","#9D00FF","#FF00A8","#00C2B2","#FF9900","#FF0000"],ke=e=>{const s=String(null!==e&&void 0!==e?e:"");if(!s)return ye[0];let a=0;for(let t=0;t<s.length;t++)a=31*a+s.charCodeAt(t)>>>0;return ye[a%ye.length]},Se=e=>{let{focusedItem:s,viewMode:a,orders:t,kitchens:i,locationKey:l}=e;const c=(0,n.ko)(),d=(0,r.useRef)(""),o=(0,r.useMemo)((()=>{const e=null!=l?"loc:".concat(l,"|"):"",r=e=>{let s=0,a=0,t=0;for(const i of e)Number.isFinite(i[0])&&Number.isFinite(i[1])&&(s+=i[0],a+=i[1],t+=1);return 0===t?"0":"".concat((s/t).toFixed(1),",").concat((a/t).toFixed(1))};if(s){var n,c,d;const a=null!==(n=null!==(c=null!==(d=s.id)&&void 0!==d?d:s.kitchenName)&&void 0!==c?c:s.name)&&void 0!==n?n:null!=s.lat?"".concat(s.lat,",").concat(s.lon):"item",t=s.orders?s.orders.length:0;return"".concat(e,"f|").concat(a,"|").concat(t)}const o=(i||[]).map((e=>[e.lat,e.lon])),u=r(o);if("kitchens"===a){const s=o.filter((e=>Number.isFinite(e[0])&&Number.isFinite(e[1]))).length;return"".concat(e,"k|").concat(s,"|").concat(u)}if("all"===a){const s=(t||[]).map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)]));return"".concat(e,"a|").concat(s.length,"|").concat(r(s))}return"".concat(e,"m|").concat(a||"","|").concat(o.length,"|").concat(u)}),[s,a,t,i,l]);return(0,r.useEffect)((()=>{if(d.current===o)return;let e=[];s?s.orders?(e=s.orders.map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)])),s.orders.forEach((s=>e.push([Z(ee(s)),Z(se(s))])))):e=[[s.lat,s.lon]]:"kitchens"===a?(e=(i||[]).filter((e=>Number.isFinite(e.lat)&&Number.isFinite(e.lon))).map((e=>[e.lat,e.lon])),0===e.length&&(e=(t||[]).map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)])))):"all"===a?e=(t||[]).map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)])):(e=(i||[]).filter((e=>Number.isFinite(e.lat)&&Number.isFinite(e.lon))).map((e=>[e.lat,e.lon])),0===e.length&&(e=(t||[]).map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)]))));const r=e.filter((e=>Number.isFinite(e[0])&&Number.isFinite(e[1])));if(r.length>0){const e=v().latLngBounds(r);if(e.isValid()){1===r.length||e.getNorthEast().equals(e.getSouthWest())?c.setView(r[0],15,{animate:!0,duration:.6}):c.flyToBounds(e,{padding:[60,60],duration:.6,maxZoom:16}),d.current=o}}else;}),[o,s,a,t,i,c]),null},_e=e=>{let{target:s,icon:a,duration:t=950,zIndexOffset:i,eventHandlers:n,children:c,markerRef:d}=e;const o=(0,r.useRef)(null),u=(0,r.useRef)(null),m=(0,r.useRef)(s),p=(0,r.useRef)(null),h=Array.isArray(s)?Number(s[0]):NaN,x=Array.isArray(s)?Number(s[1]):NaN;return(0,r.useEffect)((()=>{const e=o.current;if(!e||!Number.isFinite(h)||!Number.isFinite(x))return;const s=v().latLng(h,x),a=e.getLatLng();if(!a)return void e.setLatLng(s);const i=s.lat-a.lat,r=s.lng-a.lng;if(Math.abs(i)<1e-6&&Math.abs(r)<1e-6)return void e.setLatLng(s);let n=!1;try{n=a.distanceTo(s)>2e3}catch(g){n=!1}if(n)return e.setLatLng(s),void(p.current=performance.now());u.current&&cancelAnimationFrame(u.current);const l=performance.now(),c=null==p.current?t:l-p.current,d=Math.max(800,Math.min(32e3,c));p.current=l;const m=a.lat,j=a.lng,f=s=>{const a=Math.min(1,(s-l)/d);e.setLatLng([m+i*a,j+r*a]),a<1&&(u.current=requestAnimationFrame(f))};return u.current=requestAnimationFrame(f),()=>{u.current&&cancelAnimationFrame(u.current)}}),[h,x,t]),(0,r.useEffect)((()=>()=>{u.current&&cancelAnimationFrame(u.current)}),[]),(0,_.jsx)(l.p,{ref:e=>{o.current=e,"function"===typeof d?d(e):d&&(d.current=e)},position:m.current,icon:a,zIndexOffset:i,eventHandlers:n,children:c})},we=e=>{let{children:s}=e;return(0,_.jsx)("span",{className:"ico-inline",style:{display:"inline-flex",alignItems:"center",verticalAlign:"-2px",marginRight:4},children:s})},Fe=[{key:"morning",label:"Morning",timeRange:"12:00 AM \u2013 8:00 AM",sub:"Early shift orders",color:"#f59e0b",bg:"#fffbeb",border:"#fde68a"},{key:"afternoon",label:"Noon",timeRange:"9:00 AM \u2013 12:30 PM",sub:"Lunch rush window",color:"#10b981",bg:"#ecfdf5",border:"#a7f3d0"},{key:"evening",label:"Evening",timeRange:"4:00 PM \u2013 7:00 PM",sub:"Dinner & end-of-day",color:"#6366f1",bg:"#eef2ff",border:"#c7d2fe"}],Me=e=>{if(null==e)return"\u2014";if("number"===typeof e)return e.toLocaleString("en-IN");const s=parseFloat(e);return Number.isFinite(s)?s.toLocaleString("en-IN"):String(e)},Ce=e=>{if(!e||"string"!==typeof e)return null;const s=e.split(":").map(Number);if(s.length<2||s.some((e=>!Number.isFinite(e))))return null;const[a,t,i=0]=s;return 3600*a+60*t+i},Ae=e=>{let{data:s,embedded:a=!1,selectedRiderId:n,onRiderSelect:h,pulseOrderId:x,onChangeRider:j}=e;const w=null!==s&&void 0!==s&&s.zones&&s.zones.length>0?"zones":"riders",[F,M]=(0,r.useState)(w),[C,A]=(0,r.useState)("live"),[z,P]=(0,r.useState)({}),[D,E]=(0,r.useState)(null),[L,q]=(0,r.useState)(null),[R,I]=(0,r.useState)(null);(0,r.useEffect)((()=>{if(!R)return;const e=e=>{"Escape"===e.key&&I(null)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)}),[R]);const O=(0,g.n)({mutationFn:V.W0,onMutate:e=>E(e.batch),onSuccess:(e,s)=>{P((a=>(0,i.A)((0,i.A)({},a),{},{[s.batch]:{data:e,fetchedAt:f()().format("HH:mm:ss")}})))},onSettled:()=>E(null)}),B=e=>{q(e);const s=z[e];s&&s.data&&!1!==s.data.success||O.mutate({batch:e,tenantId:916})},K=15e3,le=(0,r.useRef)(null);(0,r.useEffect)((()=>{le.current=D}),[D]),(0,r.useEffect)((()=>{if("analysis"!==C)return;if(!L)return;const e=setInterval((()=>{le.current||"undefined"!==typeof document&&document.hidden||O.mutate({batch:L,tenantId:916})}),K);return()=>clearInterval(e)}),[C,L]);const[ue,Ae]=(0,r.useState)(new Set),[ze,Pe]=(0,r.useState)(null),[De,Ee]=(0,r.useState)(null),[Le,qe]=(0,r.useState)(null),[Re,Ie]=(0,r.useState)(null),[Oe,Te]=(0,r.useState)("planned"),Ye=(0,r.useRef)({}),He=(0,r.useRef)(new Set),Ve=(0,r.useRef)(new Set),Be=(0,r.useRef)(new Map),Ke=((0,r.useRef)(null),(0,r.useRef)(null)),[Ue,Ge]=(0,r.useState)(null),Je=void 0!==n,[We,$e]=(0,r.useState)(""),{data:Ze}=(0,N.I)({queryKey:["appLocations"],queryFn:V.aL,staleTime:3e5}),Xe="undefined"!==typeof window?localStorage.getItem("applocationid"):null,[Qe,es]=(0,r.useState)(null!=Xe?Number(Xe):0),[ss,as]=(0,r.useState)(!1),ts=(0,r.useRef)(null),[is,rs]=(0,r.useState)("assigned"),[ns,ls]=(0,r.useState)(!1),cs=(0,r.useRef)(null),[ds,os]=(0,r.useState)((()=>{if("undefined"===typeof window)return de;try{const e=window.localStorage.getItem(ie);if(!e)return de;const s=JSON.parse(e);return Array.isArray(s)&&s.length===te.length?s.map(((e,s)=>{const a=e.id||"slot-".concat(s+1),t=Number(e.startHour)||0,i=Number(e.endHour)||24,r=de.find((e=>e.id===a));return{id:a,startHour:t,endHour:i,label:(null===r||void 0===r?void 0:r.name)||ne(s,t),range:ce(t,i)}})):de}catch(e){return de}})),us=ds,[ms,ps]=(0,r.useState)(!1),hs=(0,r.useRef)(null);(0,r.useEffect)((()=>{if("undefined"!==typeof window)try{re.forEach((e=>window.localStorage.removeItem(e)))}catch(e){}}),[]);const vs=(0,r.useRef)(!1);(0,r.useEffect)((()=>{if(vs.current){if("undefined"!==typeof window)try{window.localStorage.setItem(ie,JSON.stringify(ds.map((e=>{let{id:s,startHour:a,endHour:t}=e;return{id:s,startHour:a,endHour:t}}))))}catch(e){}}else vs.current=!0}),[ds]),(0,r.useEffect)((()=>{if(!ss)return;const e=e=>{ts.current&&!ts.current.contains(e.target)&&as(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[ss]),(0,r.useEffect)((()=>{if(!ns)return;const e=e=>{cs.current&&!cs.current.contains(e.target)&&ls(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[ns]),(0,r.useEffect)((()=>{if(!ms)return;const e=e=>{hs.current&&!hs.current.contains(e.target)&&ps(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[ms]);const[xs,js]=(0,r.useState)(null),[fs,gs]=(0,r.useState)(""),{data:Ns,isFetching:bs,isError:ys,error:ks}=(0,N.I)({queryKey:["riderPeriodicLog",xs],queryFn:()=>(0,V.ne)(xs),enabled:"rider-info"===F&&null!=xs,refetchInterval:"rider-info"===F&&null!=xs&&15e3,refetchIntervalInBackground:!1,staleTime:5e3,refetchOnWindowFocus:!1}),Ss=(0,r.useMemo)((()=>{const e=parseFloat(null===Ns||void 0===Ns?void 0:Ns.latitude),s=parseFloat(null===Ns||void 0===Ns?void 0:Ns.longitude);return Number.isFinite(e)&&Number.isFinite(s)?{lat:e.toFixed(4),lon:s.toFixed(4)}:null}),[null===Ns||void 0===Ns?void 0:Ns.latitude,null===Ns||void 0===Ns?void 0:Ns.longitude]),{data:_s}=(0,N.I)({queryKey:["reverseGeocode",null===Ss||void 0===Ss?void 0:Ss.lat,null===Ss||void 0===Ss?void 0:Ss.lon],queryFn:async()=>{const e=await fetch("https://nominatim.openstreetmap.org/reverse?lat=".concat(Ss.lat,"&lon=").concat(Ss.lon,"&format=json&zoom=16&addressdetails=1"),{headers:{Accept:"application/json"}});if(!e.ok)return null;const s=await e.json(),a=(null===s||void 0===s?void 0:s.address)||{};return{area:a.suburb||a.neighbourhood||a.village||a.hamlet||a.city_district||a.town||a.city||a.county||a.state||"",display:(null===s||void 0===s?void 0:s.display_name)||""}},enabled:"rider-info"===F&&!!Ss,staleTime:3e5,refetchOnWindowFocus:!1,retry:1}),ws=(0,r.useMemo)((()=>{if(!Ze)return null;const e=Ze.find((e=>String(e.applocationid)===String(Qe)));return(null===e||void 0===e?void 0:e.locationname)||null}),[Ze,Qe]),[Fs,Ms]=(0,r.useState)({}),Cs=(0,r.useRef)({}),[As,zs]=(0,r.useState)({}),Ps=(0,r.useRef)({}),[Ds,Es]=(0,r.useState)(!1),[Ls,qs]=(0,r.useState)([]),[Rs,Is]=(0,r.useState)({}),Os=(0,r.useRef)(!1),[Ts,Ys]=(0,r.useState)(f()().format("YYYY-MM-DD")),[Hs,Vs]=(0,r.useState)(!1),[Bs,Ks]=(0,r.useState)((()=>f()(Ts).isValid()?f()(Ts).startOf("month"):f()().startOf("month"))),Us=(0,r.useRef)(null);(0,r.useEffect)((()=>{if(!Hs)return;const e=e=>{Us.current&&(Us.current.contains(e.target)||Vs(!1))},s=e=>{"Escape"===e.key&&Vs(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",s),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",s)}}),[Hs]),(0,r.useEffect)((()=>{if(Hs){const e=f()(Ts);e.isValid()&&Ks(e.startOf("month"))}}),[Hs,Ts]);const[Gs,Js]=(0,r.useState)(!1),[Ws,$s]=(0,r.useState)("combined"),[Zs,Xs]=(0,r.useState)(!0),[Qs,ea]=(0,r.useState)(!0),[sa,aa]=(0,r.useState)((()=>new Set)),ta=(0,r.useRef)(!1),[ia,ra]=(0,r.useState)(!1),na=(0,r.useRef)(!1),la=(0,r.useRef)(!1),[ca,da]=(0,r.useState)(!1),[oa,ua]=(0,r.useState)(null),ma=(0,r.useRef)(null),pa=(0,r.useRef)(null);pa.current||(pa.current=v().canvas({padding:1.5,tolerance:5}));const{data:ha}=(0,N.I)({queryKey:[Qe,Ts,""],queryFn:V.zb,refetchInterval:15e3,refetchIntervalInBackground:!1,staleTime:5e3,refetchOnWindowFocus:!1}),va=(0,r.useMemo)((()=>(ha||[]).map((e=>{var s;const a=parseFloat(null===e||void 0===e?void 0:e.latitude),t=parseFloat(null===e||void 0===e?void 0:e.longitude);return Number.isFinite(a)&&Number.isFinite(t)?{id:String(null!==(s=e.userid)&&void 0!==s?s:""),userid:e.userid,username:e.username||"Rider #".concat(e.userid),status:String(e.status||"").toLowerCase(),contactno:e.contactno,orderid:e.orderid,logdate:e.logdate,lat:a,lon:t}:null})).filter(Boolean)),[ha]),xa=(0,r.useMemo)((()=>new Set(va.filter((e=>"active"===e.status)).map((e=>String(e.id))))),[va]),[ja,fa]=(0,r.useState)((()=>{const e=f()();return oe(e.hour()+e.minute()/60,de)||de[0].id}));(0,r.useEffect)((()=>{var e;"all"!==ja&&(us.some((e=>e.id===ja))||fa((null===(e=us[0])||void 0===e?void 0:e.id)||"all"))}),[us,ja]);const ga=(0,r.useRef)(null),Na=!s,ba="undefined"!==typeof window&&localStorage.getItem("userid")||0,{data:ya,isFetching:ka,isError:Sa,fetchNextPage:_a,hasNextPage:wa,isFetchingNextPage:Fa}=(0,b.q)({queryKey:["dispatchDeliveries",Qe,ba,"all",Ts,Ts,50,"",0,0,0],queryFn:V.tL,getNextPageParam:e=>{var s;return null!==(s=e.nextPage)&&void 0!==s?s:void 0},enabled:Na,refetchInterval:"all"===F&&15e3,refetchIntervalInBackground:!1});(0,r.useEffect)((()=>{Na&&wa&&!Fa&&_a()}),[Na,wa,Fa,_a]);const Ma=(0,r.useMemo)((()=>{const e=((null===ya||void 0===ya?void 0:ya.pages)||[]).flatMap((e=>e.rows||[])),s=new Set,a=[];for(const t of e){const e=null!=t.orderid?String(t.orderid):null;e&&s.has(e)||(e&&s.add(e),a.push(t))}return a}),[ya]),Ca=(0,r.useMemo)((()=>{const e=new Map;return Ma.forEach((s=>{const a=String(s.userid||s.rider_id||"");a&&"unassigned"!==a&&"0"!==a&&(e.has(a)||e.set(a,{id:a,riderName:s.ridername||s.rider_name||s.username||"Rider ".concat(a)}))})),Array.from(e.values()).sort(((e,s)=>String(e.riderName).localeCompare(String(s.riderName))))}),[Ma]),Aa=(0,r.useMemo)((()=>{const e={all:Ma.length};return us.forEach((s=>{e[s.id]=0})),Ma.forEach((s=>{const a=me(s,is,us);a&&(e[a]=(e[a]||0)+1)})),e}),[Ma,is,us]),za=(0,r.useMemo)((()=>"all"===ja?Ma:Ma.filter((e=>me(e,is,us)===ja))),[Ma,ja,is,us]),Pa=(0,r.useMemo)((()=>{let e=0;const s={};return Ma.forEach((e=>{const a=e.assigntime?f()(e.assigntime).format("YYYY-MM-DD"):e.deliverydate?f()(e.deliverydate).format("YYYY-MM-DD"):"unknown";if(Ts&&a!==Ts)return;const t=me(e,is,us);if(!t||"all"===t)return;const i=String(e.userid||e.rider_id||"unassigned");if("unassigned"===i||"0"===i)return;s[i]||(s[i]={revenue:0,kms:0,batches:new Set});const r=parseFloat(e.kms||e.actualkms||0);s[i].kms+=r,s[i].revenue+=r<=8?30:30+6*(r-8),s[i].batches.add(t)})),Object.values(s).forEach((s=>{const a=2.5*s.kms+Math.min(s.batches.size,3)*(500/3);e+=s.revenue-a})),e}),[Ma,is,us,Ts]),Da=(0,r.useMemo)((()=>{if(!Na)return null;if(!za.length)return{code:200,zone_summary:[],zones:[]};const e=e=>String(e||"").trim(),s={};za.forEach((a=>{const t=e(a.deliverysuburb)||e(a.locationsuburb)||e(a.zone_name)||"Unzoned",i=t.toLowerCase(),r=String(a.userid||a.rider_id||"unassigned"),n=a.ridername||a.rider_name||a.username||("unassigned"===r?"Unassigned":"Rider ".concat(r));s[i]||(s[i]={zone_name:t,riders:{}}),s[i].riders[r]||(s[i].riders[r]={rider_id:r,rider_name:n,orders:[]}),s[i].riders[r].orders.push(a)}));const a=Object.values(s).map((e=>{const s=Object.values(e.riders).map((e=>{const s=[...e.orders].sort(((e,s)=>f()(e.deliverydate||e.assigntime||0).valueOf()-f()(s.deliverydate||s.assigntime||0).valueOf()));return(0,i.A)((0,i.A)({},e),{},{orders:s.map(((e,s)=>(0,i.A)((0,i.A)({},e),{},{trip_number:e.trip_number||1,step:e.step||s+1})))})}));return{zone_name:e.zone_name,riders:s}}));return{code:200,zone_summary:a.map((e=>{const s=e.riders.flatMap((e=>e.orders)),a=s.filter((e=>e.userid||e.rider_id)).length;return{zone_name:e.zone_name,total_orders:s.length,assigned_orders:a,unassigned_orders_count:s.length-a,active_riders_count:e.riders.filter((e=>"unassigned"!==e.rider_id)).length,total_delivery_kms:s.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),total_profit:s.reduce(((e,s)=>e+parseFloat(s.profit||0)),0)}})),zones:a}}),[Na,za]),Ea=(0,r.useMemo)((()=>{const e=s||Da||{zones:[],zone_summary:[]},a=e.zones||[],t={};(e.zone_summary||[]).forEach((e=>{t[e.zone_name]=e}));const i=(e,s)=>{const a={};return e.forEach((e=>{const t=s(e);t&&(a[t]=(a[t]||0)+1)})),Object.entries(a).map((e=>{let[s,a]=e;return{name:s,count:a}})).sort(((e,s)=>s.count-e.count))};return a.map((e=>{var s,a,r,n;const l=t[e.zone_name]||{},c=(e.riders||[]).flatMap((e=>e.orders||[])),d=(e.riders||[]).filter((e=>e.rider_id&&"unassigned"!==e.rider_id)).length,o=i(c,(e=>e.deliverysuburb||e.locationsuburb)),u=i(c,(e=>e.pickupcustomer||e.kitchen_key)),m={};return c.forEach((e=>{const s=String(e.orderstatus||"unknown").toLowerCase();m[s]=(m[s]||0)+1})),{id:e.zone_name,name:e.zone_name,riders:e.riders||[],orders:c,totalOrders:null!==(s=l.total_orders)&&void 0!==s?s:c.length,activeRidersCount:null!==(a=l.active_riders_count)&&void 0!==a?a:d,totalKms:null!==(r=l.total_delivery_kms)&&void 0!==r?r:c.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),totalProfit:null!==(n=l.total_profit)&&void 0!==n?n:c.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),suburbs:o,kitchens:u,statusCounts:m}}))}),[s,Da]),{riders:La,kitchens:qa,allOrders:Ra,stats:Ia}=(0,r.useMemo)((()=>{const e=s||Da||{zones:[],zone_summary:[]},a=[];(e.zones||[]).forEach((e=>{(e.riders||[]).forEach((s=>{s.orders.forEach((t=>{a.push((0,i.A)((0,i.A)({},t),{},{zone_name:e.zone_name,rider_name:s.rider_name,rider_id:s.rider_id}))}))}))}));const t={};(e.zones||[]).forEach((e=>{(e.riders||[]).forEach((e=>{const s=e.rider_id;s&&"unassigned"!==s&&(t[s]||(t[s]={id:s,riderName:e.rider_name||e.username||s,orders:[],color:ye[Object.keys(t).length%ye.length]}))}))})),a.forEach((e=>{const s=e.rider_id||e.userid||"unknown";"unassigned"!==s&&(t[s]||(t[s]={id:s,riderName:e.rider_name||e.username||e.rider||s,orders:[],color:ye[Object.keys(t).length%ye.length]}),t[s].orders.some((s=>s.orderid===e.orderid))||t[s].orders.push(e))}));const r={};a.forEach((e=>{const s=e.pickupcustomer||e.kitchen_key||"Unknown",a=s.toLowerCase().trim();r[a]?!Number.isFinite(r[a].lat)&&ae(e)&&(r[a].lat=Z(ee(e)),r[a].lon=Z(se(e))):r[a]={id:a,kitchenName:s,lat:Z(ee(e)),lon:Z(se(e)),orders:[],riders:new Set},r[a].orders.push(e),e.rider_id&&r[a].riders.add(e.rider_id)}));const n=a.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),l=a.reduce(((e,s)=>e+parseFloat(s.profit||0)),0);return{riders:Object.values(t).map((e=>(0,i.A)((0,i.A)({},e),{},{orders:[...e.orders].sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)}))}))).sort(((e,s)=>s.orders.length-e.orders.length)),kitchens:Object.values(r).sort(((e,s)=>s.orders.length-e.orders.length)),allOrders:a,stats:{totalOrders:a.length,totalKms:n,totalProfit:l,totalRiders:Object.keys(t).length}}}),[s,Da]),Oa=Je?n&&La.find((e=>e.id===n))||null:ze,Ta="all"===F,Ya=(0,r.useMemo)((()=>Ta?Ra.filter((e=>xa.has(String(e.rider_id)))):Ra),[Ta,Ra,xa]),Ha=(0,r.useMemo)((()=>new Set((Ta?Ya:[]).filter(Y.L0).map((e=>String(e.rider_id))))),[Ta,Ya]),Va=(0,r.useMemo)((()=>Ta?La.filter((e=>Ha.has(String(e.id)))):La),[Ta,La,Ha]),Ba=(0,r.useMemo)((()=>Ta?va.filter((e=>"active"===e.status&&Ha.has(String(e.id)))).map((e=>[e.lat,e.lon])):[]),[Ta,va,Ha]),Ka=(0,r.useMemo)((()=>Ta?Ya.filter(Y.L0).length:0),[Ta,Ya]),Ua=(0,r.useCallback)((e=>{h&&h(e?e.id:null),Je||Pe(e),Ie(null)}),[Je,h]),Ga=(0,r.useRef)(null);(0,r.useEffect)((()=>{const e=Oa?Oa.id:null;e!==Ga.current&&(Oa?G.A.info("Focused rider changed to: ".concat(Oa.riderName," (").concat(Oa.orders.length," orders)")):G.A.info("Focused rider reset to: None"),Ga.current=e)}),[Oa]),(0,r.useEffect)((()=>{Re?G.A.info("Focused order updated: ID ".concat(Re.orderid)):G.A.debug("Focused order selection cleared")}),[Re]);const Ja=(0,r.useRef)(0);(0,r.useEffect)((()=>{Ra&&Ra.length!==Ja.current&&(G.A.info("Orders database updated: ".concat(Ra.length," orders actively tracked")),Ja.current=Ra.length)}),[Ra]);const Wa=(0,r.useRef)(0);(0,r.useEffect)((()=>{va&&va.length!==Wa.current&&(G.A.info("Live riders list updated: ".concat(va.length," active riders mapped")),Wa.current=va.length)}),[va]);const $a=(0,r.useMemo)((()=>{if(Oa)return{orders:Oa.orders.length,riders:1,km:Oa.orders.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),profit:Oa.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),label:"Focused Rider"};if(De)return{orders:De.orders.length,riders:De.riders.size,km:De.orders.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),profit:De.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),label:"Focused Kitchen"};if(Ta){const e=Ra.filter(Y.L0);return{orders:e.length,riders:Va.length,km:e.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),profit:e.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),label:"Active Fleet"}}return{orders:Ia.totalOrders,riders:Ia.totalRiders,km:Ia.totalKms,profit:Ia.totalProfit,label:"Total Fleet"}}),[Oa,De,Ta,Ya,Va,Ia]),Za=(0,r.useMemo)((()=>{if(!Oa)return[];const e=new Set;return Oa.orders.forEach((s=>{null!=s.deliveryid&&""!==s.deliveryid&&0!==s.deliveryid&&e.add(String(s.deliveryid))})),Array.from(e)}),[Oa]),Xa=(0,y.E)({queries:Za.map((e=>({queryKey:["deliveryLogs",e],queryFn:async()=>{var s,a;const i=await k.A.get("".concat("https://jupiter.nearle.app/live/api/v3","/deliveries/getdeliverylogs/?deliveryid=").concat(e));return function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Array.isArray(e)||0===e.length)return[];const a=e.filter((e=>Number.isFinite(e.lat)&&Number.isFinite(e.lng)&&(Math.abs(e.lat)>.1||Math.abs(e.lng)>.1)));if(0===a.length)return[];if(1===a.length)return[{lat:a[0].lat,lng:a[0].lng,logdate:a[0].logdate,_ts:a[0]._ts}];const t=null!=s.processNoise?s.processNoise:1e-10,i=null!=s.measurementNoise?s.measurementNoise:2e-9,r=null!=s.outlierGate?s.outlierGate:9,n=null!=s.maxSpeedKmh?s.maxSpeedKmh:120,l=e=>e._ts||(e.logdate?new Date(e.logdate).getTime():0);let c=0;for(;c<a.length-1;){const e=a[c],s=a[c+1],t=l(e),i=l(s)||t+1e3,r=Math.max(.001,(i-t)/1e3);if(ve([e.lat,e.lng],[s.lat,s.lng])/r*3600<=n)break;if(c+2<a.length){const e=a[c+2],t=l(e)||i+1e3,r=Math.max(.001,(t-i)/1e3);if(ve([s.lat,s.lng],[e.lat,e.lng])/r*3600<=n){c+=1;continue}}c++}const d=[a[c]];let o=l(a[c]);for(let h=c+1;h<a.length;h++){const e=a[h],s=l(e)||o+1e3,t=Math.max(.001,(s-o)/1e3),i=d[d.length-1];ve([i.lat,i.lng],[e.lat,e.lng])/t*3600>n||(d.push(e),o=s)}if(d.length<2)return d.map((e=>({lat:e.lat,lng:e.lng,logdate:e.logdate,_ts:e._ts})));const u=e=>{const s=d.length,a=new Array(s),n=new Array(s),c=new Array(s),o=new Array(s),u=new Array(s),m=l(d[0]),p=l(d[1]),h=Math.max(.1,(p-m)/1e3),v=(d[1][e]-d[0][e])/h;a[0]=[d[0][e],v],n[0]=[i,0,0,1],c[0]=a[0].slice(),o[0]=n[0].slice(),u[0]=0;let x=m;for(let f=1;f<s;f++){const s=l(d[f])||x+1e3,m=Math.max(.1,(s-x)/1e3);x=s,u[f]=m;const[p,h]=a[f-1],v=p+h*m,j=h,[g,N,b,y]=n[f-1],k=m*m,S=k*m,_=g+m*(N+b)+k*y+S*m/4*t,w=N+m*y+S/2*t,F=b+m*y+S/2*t,M=y+k*t;c[f]=[v,j],o[f]=[_,w,F,M];const C=d[f][e]-v,A=_+i;if(C*C/A>r){a[f]=[v,j],n[f]=[_,w,F,M];continue}const z=_/A,P=F/A,D=v+z*C,E=j+P*C;a[f]=[D,E],n[f]=[(1-z)*_,(1-z)*w,F-P*_,M-P*w]}const j=new Array(s);j[s-1]=a[s-1].slice();for(let t=s-2;t>=0;t--){const e=u[t+1],[s,i,r,l]=n[t],d=s+e*i,m=i,p=r+e*l,h=l,[v,x,f,g]=o[t+1],N=v*g-x*f;if(!Number.isFinite(N)||Math.abs(N)<1e-30){j[t]=a[t].slice();continue}const b=g/N,y=-x/N,k=-f/N,S=v/N,_=d*b+m*k,w=d*y+m*S,F=p*b+h*k,M=p*y+h*S,C=j[t+1][0]-c[t+1][0],A=j[t+1][1]-c[t+1][1];j[t]=[a[t][0]+_*C+w*A,a[t][1]+F*C+M*A]}return j.map((e=>e[0]))},m=u("lat"),p=u("lng");return d.map(((e,s)=>({lat:m[s],lng:p[s],logdate:e.logdate,_ts:e._ts})))}(([null===i||void 0===i||null===(s=i.data)||void 0===s?void 0:s.details,null===i||void 0===i||null===(a=i.data)||void 0===a?void 0:a.data,null===i||void 0===i?void 0:i.data,i].find((e=>Array.isArray(e)))||[]).map((e=>{var s,a,t;const i=null!==e&&void 0!==e&&e.logdate?f()(e.logdate):null;return{lat:parseFloat(null!==(s=null===e||void 0===e?void 0:e.latitude)&&void 0!==s?s:null===e||void 0===e?void 0:e.lat),lng:parseFloat(null!==(a=null!==(t=null===e||void 0===e?void 0:e.longitude)&&void 0!==t?t:null===e||void 0===e?void 0:e.lng)&&void 0!==a?a:null===e||void 0===e?void 0:e.lon),logdate:null===e||void 0===e?void 0:e.logdate,_ts:i&&i.isValid()?i.valueOf():Number.MAX_SAFE_INTEGER}})).filter((e=>Number.isFinite(e.lat)&&Number.isFinite(e.lng))).sort(((e,s)=>e._ts-s._ts))).map((e=>{let{_ts:s}=e;return(0,t.A)(e,J)}))},enabled:Gs&&null!=Oa,staleTime:3e5,refetchOnWindowFocus:!1,retry:1})))}),Qa=(0,r.useMemo)((()=>{if(!Oa)return[];const e=e=>{const s=e.deliverytime||e.expecteddeliverytime;if(!s)return Number.MAX_SAFE_INTEGER;const a=f()(s);return a.isValid()?a.valueOf():Number.MAX_SAFE_INTEGER};return Oa.orders.filter((e=>null!=e.deliveryid&&""!==e.deliveryid&&0!==e.deliveryid)).sort(((s,a)=>{const t=e(s)-e(a);return 0!==t?t:(s.step||0)-(a.step||0)})).map(((e,s)=>{const a=Za.indexOf(String(e.deliveryid)),t=a>=0?Xa[a]:null;return{sequenceStep:s+1,orderid:e.orderid,deliveryid:e.deliveryid,deliverycustomer:e.deliverycustomer,pickupcustomer:e.pickupcustomer,step:e.step,tripNumber:e.trip_number||1,deliverytime:e.deliverytime||e.expecteddeliverytime,kms:parseFloat(e.actualkms||e.kms||0)||0,profit:parseFloat(e.profit||0)||0,orderstatus:e.orderstatus,isLoading:(null===t||void 0===t?void 0:t.isLoading)||(null===t||void 0===t?void 0:t.isFetching),isError:null===t||void 0===t?void 0:t.isError,coords:(null===t||void 0===t?void 0:t.data)||[]}}))}),[Oa,Za,Xa]),et=(0,r.useMemo)((()=>Oa?Qa.map((e=>{const s=Oa.orders.find((s=>String(s.deliveryid)===String(e.deliveryid))),a=parseFloat((null===s||void 0===s?void 0:s.kms)||0)||0,t=As[e.deliveryid];let i=0;Array.isArray(t)&&t.length>=2?i=xe(t):null!=(null===s||void 0===s?void 0:s.actualkms)&&""!==s.actualkms?i=parseFloat(s.actualkms)||0:e.coords.length>=2&&(i=xe(e.coords.map((e=>[e.lat,e.lng]))));const r=i-a,n=a>0?r/a*100:null,l=null!==s&&void 0!==s&&s.expecteddeliverytime?f()(s.expecteddeliverytime):null,c=null!==s&&void 0!==s&&s.deliverytime?f()(s.deliverytime):null,d=null!==l&&void 0!==l&&l.isValid()&&null!==c&&void 0!==c&&c.isValid()?c.diff(l,"minute"):null,o=a>0&&i>1.25*a||null!=d&&d>15;return{sequenceStep:e.sequenceStep,deliveryid:e.deliveryid,orderid:e.orderid,order:s,plannedKm:a,actualKm:i,kmDelta:r,kmDeltaPct:n,expectedTs:null!==l&&void 0!==l&&l.isValid()?l:null,actualTs:null!==c&&void 0!==c&&c.isValid()?c:null,timeDeltaMin:d,anomaly:o,orderstatus:e.orderstatus,deliverycustomer:e.deliverycustomer,pickupcustomer:null===s||void 0===s?void 0:s.pickupcustomer,isLoading:e.isLoading,coordsCount:e.coords.length}})):[]),[Qa,Oa,As]),st=(0,r.useMemo)((()=>{if(0===et.length)return{plannedKm:0,actualKm:0,kmDeltaPct:null,anomalies:0,late:0,onTime:0};const e=et.filter((e=>!e.isLoading&&e.coordsCount>0)),s=e.reduce(((e,s)=>e+s.plannedKm),0),a=e.reduce(((e,s)=>e+s.actualKm),0);return{plannedKm:s,actualKm:a,kmDeltaPct:s>0?(a-s)/s*100:null,anomalies:e.filter((e=>e.anomaly)).length,late:e.filter((e=>null!=e.timeDeltaMin&&e.timeDeltaMin>5)).length,onTime:e.filter((e=>null!=e.timeDeltaMin&&e.timeDeltaMin<=5)).length}}),[et]),at=(0,r.useMemo)((()=>[...et].sort(((e,s)=>{var a,t;return((null===(a=e.order)||void 0===a?void 0:a.step)||e.sequenceStep)-((null===(t=s.order)||void 0===t?void 0:t.step)||s.sequenceStep)}))),[et]),tt=(0,r.useMemo)((()=>[...et].sort(((e,s)=>e.sequenceStep-s.sequenceStep))),[et]),it=(0,r.useMemo)((()=>{if(!Gs||!oa||!Oa)return null;const e=Qa.find((e=>e.sequenceStep===oa));if(!e)return null;const s=Oa.orders.find((s=>String(s.deliveryid)===String(e.deliveryid)));return s?{orders:[s],id:"cmp-step-".concat(oa,"-").concat(s.orderid)}:null}),[Gs,oa,Oa,Qa]);(0,r.useEffect)((()=>{ua(null),aa(new Set),$s("combined")}),[Gs,null===Oa||void 0===Oa?void 0:Oa.id]),(0,r.useEffect)((()=>{!Oa&&Gs&&Js(!1)}),[Oa,Gs]),(0,r.useEffect)((()=>{ta.current&&Oa&&(ta.current=!1,Js(!0))}),[Oa]),(0,r.useEffect)((()=>{Gs&&!la.current?(na.current=ia,ra(!0),da(!1)):!Gs&&la.current&&ra(na.current),la.current=Gs}),[Gs]);const rt=(0,r.useCallback)((async(e,s,a)=>{if(a.length<2)return;const t=be(e,s,a);if(void 0!==Cs.current[t])return;Cs.current[t]=null,Ms((e=>(0,i.A)((0,i.A)({},e),{},{[t]:null})));const r=a.map((e=>"".concat(e[1],",").concat(e[0]))).join(";"),n="https://router.project-osrm.org/route/v1/driving/".concat(r,"?overview=full&geometries=geojson");try{const e=await fetch(n),s=await e.json();if(s.routes&&s.routes[0]){const e=s.routes[0].geometry.coordinates.map((e=>[e[1],e[0]]));Cs.current[t]=e,Ms((s=>(0,i.A)((0,i.A)({},s),{},{[t]:e})))}else Cs.current[t]=!1,Ms((e=>(0,i.A)((0,i.A)({},e),{},{[t]:!1})))}catch(l){console.error("OSRM Fetch error:",l),Cs.current[t]=!1,Ms((e=>(0,i.A)((0,i.A)({},e),{},{[t]:!1})))}}),[]);(0,r.useEffect)((()=>{Cs.current={},Ms({}),Ps.current={},zs({})}),[Ts,ja]);const nt=(0,r.useCallback)((async(e,s)=>{if(void 0!==Ps.current[e])return;if(!Array.isArray(s)||s.length<2)return;Ps.current[e]=null,zs((s=>(0,i.A)((0,i.A)({},s),{},{[e]:null})));const a=s=>{Ps.current[e]=s,zs((a=>(0,i.A)((0,i.A)({},a),{},{[e]:s})))},t=()=>{Ps.current[e]=!1,zs((s=>(0,i.A)((0,i.A)({},s),{},{[e]:!1})))},r=(e,s)=>{if(e.length<=s)return e;const a=Math.ceil(e.length/s),t=e.filter(((e,s)=>s%a===0)),i=e[e.length-1];return t[t.length-1]!==i&&t.push(i),t};try{const e=r(s,90).map((e=>"".concat(e[1],",").concat(e[0]))).join(";"),t="https://router.project-osrm.org/match/v1/driving/".concat(e,"?overview=full&geometries=geojson&gaps=ignore&tidy=true"),i=await fetch(t),n=await i.json();if(n.matchings&&n.matchings.length>0){const e=n.matchings.flatMap((e=>{var s;return((null===(s=e.geometry)||void 0===s?void 0:s.coordinates)||[]).map((e=>[e[1],e[0]]))}));if(e.length>=2)return void a(e)}}catch(n){console.warn("OSRM Match error, trying route fallback:",n)}try{const e=r(s,25).map((e=>"".concat(e[1],",").concat(e[0]))).join(";"),i="https://router.project-osrm.org/route/v1/driving/".concat(e,"?overview=full&geometries=geojson"),n=await fetch(i),l=await n.json();if(l.routes&&l.routes[0]){const e=l.routes[0].geometry.coordinates.map((e=>[e[1],e[0]]));if(e.length>=2)return void a(e)}t()}catch(n){console.error("OSRM Route fallback error:",n),t()}}),[]);(0,r.useEffect)((()=>{Gs&&Oa&&Qa.forEach((e=>{if(!e.deliveryid||e.coords.length<2)return;const s=e.coords.map((e=>[e.lat,e.lng]));nt(e.deliveryid,s)}))}),[Qa,Gs,Oa,nt]),(0,r.useEffect)((()=>{Os.current=Ds}),[Ds]),(0,r.useEffect)((()=>{if(a)return;const e=()=>{const e=new Date;$e([e.getHours(),e.getMinutes(),e.getSeconds()].map((e=>String(e).padStart(2,"0"))).join(":"))},s=setInterval(e,1e3);return e(),()=>clearInterval(s)}),[a]),(0,r.useEffect)((()=>{Ae(new Set(La.map((e=>e.id))))}),[La]),(0,r.useEffect)((()=>{La.forEach((e=>{if(!ue.has(e.id))return;if(Oa&&Oa.id!==e.id)return;const s={};if(e.orders.forEach((e=>{const a=e.trip_number||1;s[a]||(s[a]=[]),s[a].push(e)})),Object.entries(s).forEach((s=>{let[a,t]=s;const i=[...t].sort(((e,s)=>(e.step||0)-(s.step||0))),r=Ne(i);r.length>=2&&rt(e.id,a,r)})),Ta){const s=(0,Y.d1)(e.orders);if(s){const a=va.find((s=>String(s.id)===String(e.id))),t=a&&Number.isFinite(a.lat)&&Number.isFinite(a.lon)?[a.lat,a.lon]:ae(s)?[Z(ee(s)),Z(se(s))]:null,i=Z(s.droplat||s.deliverylat),r=Z(s.droplon||s.deliverylong);t&&Number.isFinite(i)&&Number.isFinite(r)&&rt(e.id,"active-".concat(s.orderid),[t,[i,r]])}}}))}),[La,ue,Oa,Ta,va,rt]);const lt=(0,r.useRef)(null);(0,r.useEffect)((()=>{if(!Na)return;const e=()=>{const e=f()();return e.hour()+e.minute()/60};null===lt.current&&(lt.current=e());const s=setInterval((()=>{const s=e(),a=oe(lt.current,us),t=oe(s,us);lt.current=s,t&&t!==a&&fa((e=>e===a?t:e))}),3e4);return()=>clearInterval(s)}),[Na,us]),(0,r.useEffect)((()=>{Ie(null)}),[null===De||void 0===De?void 0:De.id]),(0,r.useEffect)((()=>{const e=ga.current;e&&"function"===typeof e.scrollIntoView&&e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})}),[ja]);const ct=function(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return v().divIcon({className:"",iconSize:s?[56,56]:[46,46],iconAnchor:s?[28,28]:[23,23],popupAnchor:[0,s?-30:-24],html:'<div class="kitchen-mark'.concat(s?" is-focused":"",'">').concat((e||"K").charAt(0).toUpperCase(),"</div>")})},dt=e=>{var s;return(null===(s=La.find((s=>s.id===e)))||void 0===s?void 0:s.color)||"#475569"},ot=(e,s)=>{if(!e||!s||!Q(s))return null;const a=va.find((s=>String(s.id)===String(e)));if(!a)return null;const t=Z(s.droplat||s.deliverylat),i=Z(s.droplon||s.deliverylong);if(!Number.isFinite(t)||!Number.isFinite(i))return null;const r=ve([a.lat,a.lon],[t,i]);return Math.round(1e3*r)},ut=e=>null===e||void 0===e?"":e>=1e3?"".concat((e/1e3).toFixed(1)," km"):"".concat(e," m");return(0,_.jsxs)("div",{className:"dispatch-container".concat(a?" embedded":"").concat(Gs?" compare-open":""),children:[!a&&(0,_.jsxs)("div",{id:"hdr",children:[(0,_.jsxs)("div",{className:"logo",children:[(0,_.jsx)("div",{className:"logo-badge",children:"D"}),(0,_.jsx)("div",{className:"logo-name",children:"Dispatch"}),Ze&&Ze.length>0&&(0,_.jsxs)("div",{className:"logo-city-wrap",ref:ts,children:[(0,_.jsxs)("button",{type:"button",className:"logo-city ".concat(ss?"open":""),onClick:()=>as((e=>!e)),"aria-haspopup":"listbox","aria-expanded":ss,title:"Switch hub",children:[(0,_.jsx)(S.JFD,{}),(0,_.jsx)("span",{className:"logo-city-text",children:ws||"All locations"}),(0,_.jsx)(S.j1Q,{className:"logo-city-caret"})]}),ss&&(0,_.jsx)("div",{className:"logo-city-menu",role:"listbox",children:Ze.map((e=>{const s=String(e.applocationid)===String(Qe);return(0,_.jsxs)("button",{type:"button",role:"option","aria-selected":s,className:"logo-city-option ".concat(s?"active":""),onClick:()=>(e=>{if(G.A.info("Switching hub/location ID:",e),es(Number(e)),as(!1),"undefined"!==typeof window)try{localStorage.setItem("applocationid",String(e))}catch(s){}Ua(null),Ee(null),qe(null)})(e.applocationid),children:[(0,_.jsx)(S.JFD,{className:"logo-city-option-icon"}),(0,_.jsx)("span",{children:e.locationname}),s&&(0,_.jsx)("span",{className:"logo-city-option-check",children:"\u2713"})]},e.applocationid)}))})]}),(0,_.jsxs)("div",{id:"dispatch-top-tabs",className:"dtt-inline",children:[(0,_.jsxs)("button",{type:"button",className:"dtt-tab ".concat("live"===C?"active":""),onClick:()=>A("live"),children:[(0,_.jsx)("span",{className:"dtt-icon",children:(0,_.jsx)(S.Cd7,{})}),"Live"]}),(0,_.jsxs)("button",{type:"button",className:"dtt-tab ".concat("analysis"===C?"active":""),onClick:()=>A("analysis"),children:[(0,_.jsx)("span",{className:"dtt-icon",children:(0,_.jsx)(S.DX0,{})}),"Analysis"]})]})]}),(0,_.jsxs)("div",{className:"hdr-stats",children:[(()=>{const e=$a.profit<0,s=Math.abs($a.profit);return(0,_.jsxs)("span",{className:"strat-stat ".concat(e?"strat-stat-loss":"strat-stat-profit"),title:"".concat(e?"Loss":"Profit"," (").concat($a.label,")"),children:[(0,_.jsx)("span",{className:"strat-stat-icon",children:e?(0,_.jsx)(S.Rod,{}):(0,_.jsx)(S.imn,{})}),(0,_.jsx)("span",{className:"strat-stat-label",children:e?"Loss":"Profit"}),(0,_.jsxs)("span",{className:"strat-stat-value",children:[e?"-":"","\u20b9",s.toFixed(0)]})]})})(),Na&&(0,_.jsxs)(_.Fragment,{children:[ka&&(0,_.jsxs)("span",{className:"live-status",children:[(0,_.jsx)("span",{className:"live-dot"})," Loading ",Ma.length?"\xb7 ".concat(Ma.length," loaded"):""]}),!ka&&!Sa&&(0,_.jsxs)("span",{className:"live-status live-status-ready",children:[(0,_.jsx)("span",{className:"live-dot ready"})," ",za.length," orders",(0,_.jsxs)("span",{className:"live-status-sub",children:[" / ",Ma.length," total"]})]}),Sa&&(0,_.jsxs)("span",{className:"live-status live-status-error",children:[(0,_.jsx)("span",{className:"live-dot error"})," Failed to load"]}),(()=>{const e=f()().startOf("day"),s=e.format("YYYY-MM-DD"),a=f()(Ts),t=Ts===s,i=a.isAfter(e,"day"),r=s=>{if(!s)return;const a=s.format("YYYY-MM-DD");a!==Ts?s.isAfter(e,"day")||(Ys(a),Ua(null),Ee(null),qe(null),Vs(!1)):Vs(!1)},n=Bs.startOf("month"),l=n.subtract(n.day(),"day"),c=Array.from({length:42},((e,s)=>l.add(s,"day"))),d=!Bs.add(1,"month").startOf("month").isAfter(e,"month");return(0,_.jsxs)("div",{className:"date-chip".concat(t?" is-today":"").concat(Hs?" is-open":""),ref:Us,children:[(0,_.jsx)("button",{type:"button",className:"date-chip-nav",onClick:()=>r(a.subtract(1,"day")),"aria-label":"Previous day",title:"Previous day",children:(0,_.jsx)(S.E_E,{})}),(0,_.jsxs)("button",{type:"button",className:"date-chip-main",onClick:()=>Vs((e=>!e)),"aria-haspopup":"dialog","aria-expanded":Hs,children:[(0,_.jsx)("span",{className:"date-chip-icon","aria-hidden":"true",children:(0,_.jsx)(S.dDC,{})}),(0,_.jsxs)("span",{className:"date-chip-text",children:[(0,_.jsxs)("span",{className:"date-chip-label",children:["Date",t&&(0,_.jsx)("span",{className:"date-chip-today-pill",children:"Today"})]}),(0,_.jsx)("span",{className:"date-chip-value",children:a.isValid()?a.format("ddd, MMM D, YYYY"):"\u2014"})]}),(0,_.jsx)("span",{className:"date-chip-chevron".concat(Hs?" is-open":""),"aria-hidden":"true",children:(0,_.jsx)(S.j1Q,{})})]}),(0,_.jsx)("button",{type:"button",className:"date-chip-nav",onClick:()=>{t||i||r(a.add(1,"day"))},disabled:t||i,"aria-label":"Next day",title:t?"You're viewing today":"Next day",children:(0,_.jsx)(S.xVu,{})}),Hs&&(0,_.jsxs)("div",{className:"date-cal-popover",role:"dialog","aria-label":"Pick a date",children:[(0,_.jsxs)("div",{className:"date-cal-header",children:[(0,_.jsx)("button",{type:"button",className:"date-cal-nav",onClick:()=>Ks((e=>e.subtract(1,"month"))),"aria-label":"Previous month",children:(0,_.jsx)(S.E_E,{})}),(0,_.jsx)("div",{className:"date-cal-title",children:Bs.format("MMMM YYYY")}),(0,_.jsx)("button",{type:"button",className:"date-cal-nav",onClick:()=>{const s=Bs.add(1,"month");s.startOf("month").isAfter(e,"month")||Ks(s)},disabled:!d,"aria-label":"Next month",children:(0,_.jsx)(S.xVu,{})})]}),(0,_.jsx)("div",{className:"date-cal-weekdays",children:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map((e=>(0,_.jsx)("div",{className:"date-cal-weekday",children:e},e)))}),(0,_.jsx)("div",{className:"date-cal-grid",children:c.map((a=>{const t=a.month()===Bs.month(),i=a.format("YYYY-MM-DD")===Ts,n=a.format("YYYY-MM-DD")===s,l=a.isAfter(e,"day"),c=["date-cal-day",!t&&"is-other-month",i&&"is-selected",n&&"is-today",l&&"is-disabled"].filter(Boolean).join(" ");return(0,_.jsx)("button",{type:"button",className:c,disabled:l,onClick:()=>r(a),"aria-current":n?"date":void 0,"aria-pressed":i,children:a.date()},a.format("YYYY-MM-DD"))}))}),(0,_.jsxs)("div",{className:"date-cal-presets",children:[(0,_.jsx)("button",{type:"button",className:"date-cal-preset",onClick:()=>r(e),children:"Today"}),(0,_.jsx)("button",{type:"button",className:"date-cal-preset",onClick:()=>r(e.subtract(1,"day")),children:"Yesterday"}),(0,_.jsx)("button",{type:"button",className:"date-cal-preset",onClick:()=>r(e.subtract(7,"day")),children:"\u22127 days"})]})]})]})})()]})]}),(0,_.jsx)("div",{id:"clock",children:We})]}),(a||"live"===C)&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)("div",{id:"strat-row",children:[(0,_.jsxs)("button",{className:"sbt ".concat("kitchens"===F?"active":""),onClick:()=>{G.A.info("View mode changed: By Location"),M("kitchens"),Ua(null),Ee(null),qe(null)},children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.JFD,{})})," By Location"]}),(0,_.jsxs)("button",{className:"sbt ".concat("zones"===F?"active":""),onClick:()=>{G.A.info("View mode changed: By Zone"),M("zones"),Ua(null),Ee(null),qe(null)},children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.Cd7,{})})," By Zone"]}),(0,_.jsxs)("button",{className:"sbt ".concat("riders"===F?"active":""),onClick:()=>{G.A.info("View mode changed: By Rider"),M("riders"),Ua(null),Ee(null),qe(null)},children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.bsz,{})})," By Rider"]}),(0,_.jsxs)("button",{className:"sbt ".concat("all"===F?"active":""),onClick:()=>{G.A.info("View mode changed: All Active Routes"),M("all"),Ua(null),Ee(null),qe(null)},children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.Zs6,{})}),"Active"]}),(0,_.jsxs)("button",{type:"button",className:"sbt sbt-profitability ".concat("profitability"===F?"active":""),onClick:()=>{G.A.info("View mode changed: Profitability"),M("profitability"),Ua(null),Ee(null),qe(null)},title:"View overall and rider profitability",children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.H4F,{})})," Profitability"]}),(0,_.jsxs)("button",{type:"button",className:"sbt sbt-rider-info ".concat("rider-info"===F?"active":""),onClick:()=>{M("rider-info"),Ua(null),Ee(null),qe(null)},title:"Live GPS / battery / status snapshot for a rider",children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.k4P,{})})," Rider Info"]})]}),Na&&"rider-info"!==F&&(0,_.jsxs)("div",{id:"batch-row",children:[(0,_.jsx)("span",{className:"batch-label",children:"Batch"}),(0,_.jsx)("div",{className:"batch-scroll",children:us.map((e=>{var s;const a=ja===e.id;return(0,_.jsxs)("button",{ref:a?ga:null,className:"batch-btn batch-slot ".concat(a?"active":""),onClick:()=>{fa(e.id),Ua(null),Ee(null),qe(null)},title:"".concat(e.label," (").concat(e.range,")"),children:[(0,_.jsx)("span",{className:"batch-btn-label",children:e.label}),(0,_.jsx)("span",{className:"batch-btn-count",children:null!==(s=Aa[e.id])&&void 0!==s?s:0})]},e.id)}))})]}),"profitability"===F?(0,_.jsx)(T,{riders:La,handleRiderFocus:Ua,focusedRider:Oa,totalDailyProfit:Pa,selectedDate:Ts,batches:us}):"rider-info"===F?(0,_.jsxs)("div",{className:"rider-info-mode",children:[(0,_.jsxs)("div",{className:"ri-sidebar",children:[(0,_.jsxs)("div",{className:"ri-sb-head",children:[(0,_.jsx)("div",{className:"ri-sb-title",children:"Riders"}),(0,_.jsxs)("div",{className:"ri-sb-sub",children:[Ca.length," ",1===Ca.length?"rider":"riders"," today"]})]}),(0,_.jsxs)("div",{className:"ri-search",children:[(0,_.jsx)(S.gZ7,{className:"ri-search-icon"}),(0,_.jsx)("input",{type:"text",className:"ri-search-input",placeholder:"Search by name or ID",value:fs,onChange:e=>gs(e.target.value)})]}),(()=>{const e=fs.trim().toLowerCase(),s=Ca.filter((s=>!e||(String(s.riderName||"").toLowerCase().includes(e)||String(s.id).includes(e))));return 0===s.length?(0,_.jsx)("div",{className:"ri-empty",children:fs?'No riders match "'.concat(fs,'"'):"No riders have orders today"}):(0,_.jsx)("div",{className:"ri-rider-list",children:s.map((e=>{const s=String(xs)===String(e.id);return(0,_.jsxs)("button",{type:"button",className:"ri-rider-item ".concat(s?"active":""),onClick:()=>js(e.id),children:[(0,_.jsx)("span",{className:"ri-rider-dot",style:{background:ke(e.id)}}),(0,_.jsxs)("span",{className:"ri-rider-info-block",children:[(0,_.jsx)("span",{className:"ri-rider-name",children:e.riderName}),(0,_.jsxs)("span",{className:"ri-rider-meta",children:["#",e.id]})]}),(0,_.jsx)("span",{className:"ri-rider-arrow",children:"\u2192"})]},e.id)}))})})()]}),(0,_.jsx)("div",{className:"ri-main",children:null==xs?(0,_.jsxs)("div",{className:"ri-placeholder",children:[(0,_.jsx)("div",{className:"ri-placeholder-icon",children:(0,_.jsx)(S.k4P,{})}),(0,_.jsx)("div",{className:"ri-placeholder-title",children:"Pick a rider"}),(0,_.jsx)("div",{className:"ri-placeholder-sub",children:"Select a rider from the list on the left to see their live GPS, battery, connection, and current order snapshot."})]}):(0,_.jsxs)(_.Fragment,{children:[bs&&!Ns&&(0,_.jsx)("div",{className:"ri-loading",children:"Loading rider snapshot\u2026"}),ys&&(0,_.jsxs)("div",{className:"ri-error",children:["Couldn't load this rider's log. ",(null===ks||void 0===ks?void 0:ks.message)||""]}),Ns&&(()=>{const e=Ns,s=parseFloat(e.latitude),a=parseFloat(e.longitude),t=Number.isFinite(s)&&Number.isFinite(a),i=parseInt(String(e.battery||"").replace("%",""),10),r=Number.isFinite(i)&&i<=20,n=parseFloat(e.speed),c=String(e.status||"").toLowerCase();return(0,_.jsxs)("div",{className:"ri-snapshot",children:[(0,_.jsxs)("div",{className:"ri-snap-head",children:[(0,_.jsx)("div",{className:"ri-snap-name",children:e.username||"Rider #".concat(e.userid)}),(0,_.jsxs)("div",{className:"ri-snap-meta",children:[(0,_.jsxs)("span",{children:["#",e.userid]}),e.status&&(0,_.jsx)("span",{className:"ri-status ri-status-".concat(c),children:e.status}),(0,_.jsxs)("span",{className:"ri-live ".concat(bs?"is-refetching":""),children:[(0,_.jsx)("span",{className:"ri-live-dot"}),bs?"Updating\u2026":"Live"]})]}),e.logdate&&(0,_.jsxs)("div",{className:"ri-snap-time",children:[(0,_.jsx)(S.VP9,{})," Last seen ",e.logdate]})]}),(0,_.jsxs)("div",{className:"ri-snap-grid",children:[(0,_.jsxs)("div",{className:"ri-stat ".concat(r?"ri-stat-warn":""),children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.wZm,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Battery"}),(0,_.jsxs)("div",{className:"ri-stat-value",children:[e.battery||"\u2014",e.is_charging&&(0,_.jsx)("span",{className:"ri-stat-tag",children:"Charging"})]})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.Xh5,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Connection"}),(0,_.jsx)("div",{className:"ri-stat-value",children:e.connection||"\u2014"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.HPi,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"GPS Accuracy"}),(0,_.jsx)("div",{className:"ri-stat-value",children:e.accuracy?"".concat(e.accuracy," m"):"\u2014"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.o8z,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Location Service"}),(0,_.jsx)("div",{className:"ri-stat-value",children:e.location_service||"\u2014"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.BJM,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Speed"}),(0,_.jsx)("div",{className:"ri-stat-value",children:Number.isFinite(n)?"".concat(n.toFixed(2)," km/h"):"\u2014"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.bqQ,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Heading"}),(0,_.jsx)("div",{className:"ri-stat-value",children:null!=e.heading?"".concat(e.heading,"\xb0"):"\u2014"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.pSF,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"App State"}),(0,_.jsx)("div",{className:"ri-stat-value",children:e.is_background?"Background":"Foreground"})]})]}),(0,_.jsxs)("div",{className:"ri-stat",children:[(0,_.jsx)("div",{className:"ri-stat-icon",children:(0,_.jsx)(S.gsJ,{})}),(0,_.jsxs)("div",{className:"ri-stat-body",children:[(0,_.jsx)("div",{className:"ri-stat-label",children:"Current Order"}),(0,_.jsx)("div",{className:"ri-stat-value",children:e.orderid||"\u2014"})]})]})]}),t&&(0,_.jsxs)("div",{className:"ri-map-section",children:[(0,_.jsxs)("div",{className:"ri-coords-label",children:[(0,_.jsx)(S.gwi,{})," ",s.toFixed(6),", ",a.toFixed(6)]}),(0,_.jsx)("div",{className:"ri-map",children:(0,_.jsxs)(d.W,{center:[s,a],zoom:13,scrollWheelZoom:!1,style:{height:"100%",width:"100%"},children:[(0,_.jsx)(o.e,{url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",attribution:"\xa9 OpenStreetMap contributors"}),(0,_.jsxs)(l.p,{position:[s,a],children:[(0,_.jsx)(u.m,{direction:"top",offset:[0,-10],permanent:!0,className:"ri-area-banner",children:(null===_s||void 0===_s?void 0:_s.area)||"Locating area\u2026"}),(0,_.jsxs)(m.z,{children:[(0,_.jsx)("div",{style:{fontWeight:700,marginBottom:2},children:e.username||"Rider #".concat(e.userid)}),(null===_s||void 0===_s?void 0:_s.area)&&(0,_.jsx)("div",{style:{fontSize:12,color:"#0f172a",marginBottom:4},children:_s.area}),(0,_.jsx)("div",{style:{fontSize:11,color:"#64748b"},children:e.logdate?"Last seen ".concat(e.logdate):"".concat(s.toFixed(6),", ").concat(a.toFixed(6))})]})]})]},"".concat(e.userid,"-").concat(s,"-").concat(a))})]})]})})()]})})]}):(0,_.jsxs)("div",{id:"body",className:"".concat(ia?"sidebar-collapsed":""," ").concat(Gs?"compare-mode":""," ").concat(Gs&&ca?"compare-data-collapsed":"").trim(),children:[(0,_.jsx)("button",{type:"button",className:"sidebar-toggle-tab".concat(ia?" is-collapsed":""),onClick:()=>ra((e=>!e)),title:ia?"Show sidebar":"Hide sidebar","aria-label":ia?"Show sidebar":"Hide sidebar",children:ia?(0,_.jsx)(S.xVu,{}):(0,_.jsx)(S.E_E,{})}),Gs&&Oa&&(0,_.jsx)("button",{type:"button",className:"compare-data-toggle-tab".concat(ca?" is-collapsed":""),onClick:()=>da((e=>!e)),title:ca?"Show details panel":"Hide details panel","aria-label":ca?"Show details panel":"Hide details panel",children:ca?(0,_.jsx)(S.E_E,{}):(0,_.jsx)(S.xVu,{})}),(0,_.jsxs)("div",{id:"sidebar",children:[!Oa&&(0,_.jsxs)("div",{className:"sb-header",children:[(0,_.jsxs)("div",{className:"sb-header-top",children:[(0,_.jsxs)("div",{className:"sb-header-title",children:[(0,_.jsx)("span",{className:"sb-title-bar","aria-hidden":"true"}),(0,_.jsx)("span",{className:"sb-title-text",children:"RIDER DISPATCH"})]}),(0,_.jsxs)("span",{className:"sb-header-scope",title:$a.label,children:[(0,_.jsx)("span",{className:"sb-scope-dot"}),$a.label]})]}),(0,_.jsxs)("div",{className:"sb-header-tiles",children:[(0,_.jsxs)("div",{className:"sb-tile sb-tile-orders",children:[(0,_.jsx)("span",{className:"sb-tile-icon",children:(0,_.jsx)(S.gsJ,{})}),(0,_.jsxs)("div",{className:"sb-tile-body",children:[(0,_.jsx)("div",{className:"sb-tile-value",children:$a.orders}),(0,_.jsx)("div",{className:"sb-tile-label",children:1===$a.orders?"Order":"Orders"})]})]}),(0,_.jsxs)("div",{className:"sb-tile sb-tile-riders",children:[(0,_.jsx)("span",{className:"sb-tile-icon",children:(0,_.jsx)(S.aVM,{})}),(0,_.jsxs)("div",{className:"sb-tile-body",children:[(0,_.jsx)("div",{className:"sb-tile-value",children:$a.riders}),(0,_.jsx)("div",{className:"sb-tile-label",children:1===$a.riders?"Rider":"Riders"})]})]})]})]}),Oa||De?(0,_.jsxs)("div",{id:"route-detail",children:[(0,_.jsxs)("button",{className:"rd-back",onClick:()=>{Ua(null),Ee(null)},children:["\u2190 Back to ",Le?Le.name:"list"]}),Oa?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)("div",{className:"rd-rider-name",style:{color:Oa.color},children:Oa.riderName}),(()=>{const e=Oa.orders.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0),s=Oa.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0),a=s<0;return(0,_.jsxs)("div",{className:"rd-stats-grid",children:[(0,_.jsxs)("div",{className:"rd-stat rd-stat-orders",children:[(0,_.jsx)("div",{className:"rd-stat-icon",children:(0,_.jsx)(S.gsJ,{})}),(0,_.jsx)("div",{className:"rd-stat-value",children:Oa.orders.length}),(0,_.jsx)("div",{className:"rd-stat-label",children:"Orders"})]}),(0,_.jsxs)("div",{className:"rd-stat rd-stat-distance",children:[(0,_.jsx)("div",{className:"rd-stat-icon",children:(0,_.jsx)(S.xI$,{})}),(0,_.jsxs)("div",{className:"rd-stat-value",children:[e.toFixed(1),(0,_.jsx)("span",{className:"rd-stat-unit",children:"km"})]}),(0,_.jsx)("div",{className:"rd-stat-label",children:"Distance"})]}),(0,_.jsxs)("div",{className:"rd-stat rd-stat-profit ".concat(a?"is-loss":"is-gain"),children:[(0,_.jsx)("div",{className:"rd-stat-icon",children:a?(0,_.jsx)(S.Rod,{}):(0,_.jsx)(S.imn,{})}),(0,_.jsxs)("div",{className:"rd-stat-value",children:[a?"-":"","\u20b9",Math.abs(s).toFixed(0)]}),(0,_.jsx)("div",{className:"rd-stat-label",children:a?"Loss":"Profit"})]})]})})(),(()=>{const e={};Oa.orders.forEach((s=>{const a=s.trip_number||1;e[a]||(e[a]=[]),e[a].push(s)}));const s=[...Oa.orders].sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)})).find((e=>{const s=String(e.orderstatus||"").toLowerCase();return!Y.Ys.has(s)&&!Y.yP.has(s)})),a=s?s.orderid:null,t=e=>{const s=e.deliverytime||e.expecteddeliverytime;if(!s)return Number.MAX_SAFE_INTEGER;const a=f()(s);return a.isValid()?a.valueOf():Number.MAX_SAFE_INTEGER},i="time"===Oe;let n=null;return Object.entries(e).sort(((e,s)=>{let[a]=e,[t]=s;return Number(a)-Number(t)})).map((e=>{let[s,l]=e;const c=i?[...l].sort(((e,s)=>{const a=t(e)-t(s);return 0!==a?a:(e.step||0)-(s.step||0)})):l;return(0,_.jsxs)("div",{className:"trip-block",children:[(0,_.jsxs)("div",{className:"trip-header",style:{background:"".concat(Oa.color,"12"),borderColor:"".concat(Oa.color,"30")},children:[(0,_.jsxs)("span",{className:"th-badge",style:{background:Oa.color},children:["Trip ",s]}),(0,_.jsxs)("span",{className:"trip-stats",children:[(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gwi,{})}),l.length," stops"]}),(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),l.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0).toFixed(1)," km"]})]}),(0,_.jsxs)("div",{className:"trip-sort-toggle",role:"group","aria-label":"Sort stops by","data-mode":i?"time":"planned",children:[(0,_.jsxs)("button",{type:"button",className:"trip-sort-pill ".concat(i?"":"is-active"),"aria-pressed":!i,onClick:()=>Te("planned"),title:"Sort stops by planned step (dispatched order)",children:[(0,_.jsx)(S.EgJ,{"aria-hidden":"true"}),(0,_.jsx)("span",{children:"Planned"})]}),(0,_.jsxs)("button",{type:"button",className:"trip-sort-pill ".concat(i?"is-active":""),"aria-pressed":i,onClick:()=>Te("time"),title:"Sort stops by completion time (which delivery was done first)",children:[(0,_.jsx)(S.VP9,{"aria-hidden":"true"}),(0,_.jsx)("span",{children:"By time"})]})]})]}),(0,_.jsx)("div",{className:"zone-order-grid",children:c.map(((e,t)=>{const l=(e.kitchen_key||e.pickupcustomer||"Unknown").toLowerCase().trim(),c=null!==n&&l!==n;n=l;const d=Re&&Re.orderid===e.orderid,o=a&&e.orderid===a,u=parseFloat(e.droplat||e.deliverylat),m=parseFloat(e.droplon||e.deliverylong),p=Number.isFinite(u)&&Number.isFinite(m),h=(0,Y.Cx)(e.orderstatus),v=parseFloat(e.profit||0),x=v<0,f=ot(Oa.id,e),g=e.step||t+1,N=i&&!e.deliverytime;return(0,_.jsxs)(r.Fragment,{children:[c&&(0,_.jsxs)("div",{className:"kitchen-transition",children:[(0,_.jsx)("span",{className:"kt-ico",children:(0,_.jsx)(S.$G1,{})})," Switch to ",(0,_.jsx)("strong",{children:e.pickupcustomer})]}),(0,_.jsxs)("div",{className:"zone-order-card ".concat(p?"clickable":""," ").concat(d?"active":""," ").concat(o?"going-on":""," ").concat(N?"is-pending-time":""),role:p?"button":void 0,tabIndex:p?0:void 0,onClick:p?()=>Ie(d?null:{orderid:e.orderid,lat:u,lon:m}):void 0,onKeyDown:p?s=>{"Enter"!==s.key&&" "!==s.key||(s.preventDefault(),Ie(d?null:{orderid:e.orderid,lat:u,lon:m}))}:void 0,title:p?d?"Click to show full trip":"Show ".concat(e.deliverycustomer||"order #".concat(e.orderid)," on map"):void 0,children:[(0,_.jsxs)("div",{className:"zone-order-card-head",children:[(0,_.jsx)("div",{className:"zone-order-num",title:"Planned step ".concat(e.step||t+1),children:g}),(0,_.jsx)("div",{className:"zone-order-id-block",children:(0,_.jsxs)("div",{className:"zone-order-id",children:["Order #",e.orderid]})}),(()=>{const s=fe(e.deliverytime),a=fe(e.expecteddeliverytime),t=!Y.Ys.has(String(e.orderstatus||"").toLowerCase())&&null!==f;return e.orderstatus||s||a||t?(0,_.jsxs)("div",{className:"zone-order-status-stack",children:[e.orderstatus&&(0,_.jsx)("span",{className:"zone-order-status",style:{background:h.bg,color:h.fg},children:h.label}),(s||a)&&(0,_.jsxs)("span",{className:"zone-order-time ".concat(s?"":"is-expected"),title:s?"Delivered at ".concat(s):"Expected at ".concat(a),children:[(0,_.jsx)(S.VP9,{}),s||a]}),t&&(0,_.jsxs)("span",{className:"zone-order-est-drop",title:"Estimated distance to drop location",children:[(0,_.jsx)(S.HPi,{}),ut(f)]})]}):null})(),j&&(0,_.jsx)("button",{type:"button",className:"zone-order-change-rider",title:"Change rider",onClick:s=>{s.stopPropagation(),j(e,Oa)},children:(0,_.jsx)(S.$G1,{})})]}),(0,_.jsxs)("div",{className:"zone-order-customer",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.u9F,{})}),e.deliverycustomer||"\u2014"]}),e.pickupcustomer&&(0,_.jsxs)("div",{className:"zone-order-line",title:"Kitchen: ".concat(e.pickupcustomer),children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.NtI,{})}),e.pickupcustomer]}),(e.deliverysuburb||e.deliveryaddress)&&(0,_.jsxs)("div",{className:"zone-order-line",title:e.deliveryaddress||e.deliverysuburb,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gwi,{})}),e.deliverysuburb||X(e.deliveryaddress)]}),e.ordernotes&&(0,_.jsxs)("div",{className:"zone-order-line zone-order-notes",title:e.ordernotes,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.dKO,{})}),e.ordernotes]}),(0,_.jsxs)("div",{className:"zone-order-stats",children:[(0,_.jsxs)("span",{className:"zone-order-chip",title:"Distance",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),e.actualkms||e.kms||0," km"]}),(0,_.jsxs)("span",{className:"zone-order-chip ".concat(x?"is-loss":"is-profit"),title:"Profit",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.ohY,{})}),x?"-":"","\u20b9",Math.abs(v).toFixed(0)]}),null!=e.deliverycharge&&(0,_.jsxs)("span",{className:"zone-order-chip",title:"Delivery charge",children:["\u20b9",parseFloat(e.deliverycharge).toFixed(0)," chg"]}),e.ordertype&&(0,_.jsx)("span",{className:"zone-order-chip zone-order-type type-".concat(String(e.ordertype).toLowerCase()),children:e.ordertype}),(0,_.jsxs)("span",{className:"zone-order-chip zone-order-trip",children:["T",e.trip_number||s," \xb7 S",e.step||t+1]})]})]})]},e.orderid)}))})]},s)}))})()]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)("div",{className:"rd-rider-name",style:{color:"#f59e0b"},children:De.kitchenName}),(0,_.jsxs)("div",{className:"rd-rider-sub",children:[(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gsJ,{})}),De.orders.length," orders"]}),(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.aVM,{})}),De.riders.size," riders"]})]}),(0,_.jsxs)("div",{className:"zone-detail-section",children:[(0,_.jsxs)("div",{className:"zone-section-label",children:["Orders ",(0,_.jsxs)("span",{className:"section-count",children:["(",De.orders.length,")"]})]}),0===De.orders.length?(0,_.jsx)("div",{className:"zone-suburb-panel-empty",children:"No orders for this kitchen."}):(0,_.jsx)("div",{className:"zone-order-grid",children:De.orders.map(((e,s)=>{const a=parseFloat(e.droplat||e.deliverylat),t=parseFloat(e.droplon||e.deliverylong),i=Number.isFinite(a)&&Number.isFinite(t),r=Re&&Re.orderid===e.orderid,n=(0,Y.Cx)(e.orderstatus),l=parseFloat(e.profit||0),c=l<0,d=e.rider_id||e.userid,o=d?La.find((e=>String(e.id)===String(d))):null,u=(()=>{if(!o)return null;const e=[...o.orders].sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)})).find((e=>{const s=String(e.orderstatus||"").toLowerCase();return!Y.Ys.has(s)&&!Y.yP.has(s)}));return e?e.orderid:null})(),m=u&&e.orderid===u,p=d?ot(d,e):null;return(0,_.jsxs)("div",{className:"zone-order-card ".concat(i?"clickable":""," ").concat(r?"active":""," ").concat(m?"going-on":""),role:i?"button":void 0,tabIndex:i?0:void 0,onClick:i?()=>Ie(r?null:{orderid:e.orderid,lat:a,lon:t}):void 0,children:[(0,_.jsxs)("div",{className:"zone-order-card-head",children:[(0,_.jsx)("div",{className:"zone-order-num",children:e.step||s+1}),(0,_.jsxs)("div",{className:"zone-order-id-block",children:[(0,_.jsxs)("div",{className:"zone-order-id",children:["Order #",e.orderid]}),(0,_.jsxs)("div",{className:"zone-order-rider",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.aVM,{})}),e.rider_name||e.ridername||"Unassigned"]})]}),(()=>{const s=fe(e.deliverytime),a=fe(e.expecteddeliverytime),t=!Y.Ys.has(String(e.orderstatus||"").toLowerCase())&&null!==p;return e.orderstatus||s||a||t?(0,_.jsxs)("div",{className:"zone-order-status-stack",children:[e.orderstatus&&(0,_.jsx)("span",{className:"zone-order-status",style:{background:n.bg,color:n.fg},children:n.label}),(s||a)&&(0,_.jsxs)("span",{className:"zone-order-time ".concat(s?"":"is-expected"),title:s?"Delivered at ".concat(s):"Expected at ".concat(a),children:[(0,_.jsx)(S.VP9,{}),s||a]}),t&&(0,_.jsxs)("span",{className:"zone-order-est-drop",title:"Estimated distance to drop location",children:[(0,_.jsx)(S.HPi,{}),ut(p)]})]}):null})()]}),(0,_.jsxs)("div",{className:"zone-order-customer",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.u9F,{})}),e.deliverycustomer||"\u2014"]}),e.pickupcustomer&&(0,_.jsxs)("div",{className:"zone-order-line",title:"Kitchen: ".concat(e.pickupcustomer),children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.NtI,{})}),e.pickupcustomer]}),(e.deliverysuburb||e.deliveryaddress)&&(0,_.jsxs)("div",{className:"zone-order-line",title:e.deliveryaddress||e.deliverysuburb,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gwi,{})}),e.deliverysuburb||X(e.deliveryaddress)]}),e.ordernotes&&(0,_.jsxs)("div",{className:"zone-order-line zone-order-notes",title:e.ordernotes,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.dKO,{})}),e.ordernotes]}),(0,_.jsxs)("div",{className:"zone-order-stats",children:[(0,_.jsxs)("span",{className:"zone-order-chip",title:"Distance",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),e.actualkms||e.kms||0," km"]}),(0,_.jsxs)("span",{className:"zone-order-chip ".concat(c?"is-loss":"is-profit"),title:"Profit",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.ohY,{})}),c?"-":"","\u20b9",Math.abs(l).toFixed(0)]}),null!=e.deliverycharge&&(0,_.jsxs)("span",{className:"zone-order-chip",title:"Delivery charge",children:["\u20b9",parseFloat(e.deliverycharge).toFixed(0)," chg"]}),e.ordertype&&(0,_.jsx)("span",{className:"zone-order-chip zone-order-type type-".concat(String(e.ordertype).toLowerCase()),children:e.ordertype}),(0,_.jsxs)("span",{className:"zone-order-chip zone-order-trip",children:["T",e.trip_number||"-"," \xb7 S",e.step||s+1]})]})]},e.orderid)}))})]})]})]}):Le?(0,_.jsxs)("div",{id:"route-detail",children:[(0,_.jsx)("button",{className:"rd-back",onClick:()=>qe(null),children:"\u2190 Back to zones"}),(0,_.jsx)("div",{className:"rd-rider-name",style:{color:"#3b82f6"},children:Le.name}),(0,_.jsx)("div",{className:"rd-rider-sub",children:(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gsJ,{})}),Le.totalOrders," ",1===Le.totalOrders?"order":"orders"]})}),(0,_.jsxs)("div",{className:"zone-detail-section",children:[(0,_.jsxs)("div",{className:"zone-section-label",children:["Orders ",(0,_.jsxs)("span",{className:"section-count",children:["(",Le.orders.length,")"]})]}),0===Le.orders.length?(0,_.jsx)("div",{className:"zone-suburb-panel-empty",children:"No orders in this zone."}):(0,_.jsx)("div",{className:"zone-order-grid",children:Le.orders.map(((e,s)=>{const a=parseFloat(e.droplat||e.deliverylat),t=parseFloat(e.droplon||e.deliverylong),i=Number.isFinite(a)&&Number.isFinite(t),r=Re&&Re.orderid===e.orderid,n=(0,Y.Cx)(e.orderstatus),l=parseFloat(e.profit||0),c=l<0,d=e.rider_id||e.userid,o=d?La.find((e=>String(e.id)===String(d))):null,u=(()=>{if(!o)return null;const e=[...o.orders].sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)})).find((e=>{const s=String(e.orderstatus||"").toLowerCase();return!Y.Ys.has(s)&&!Y.yP.has(s)}));return e?e.orderid:null})(),m=u&&e.orderid===u,p=d?ot(d,e):null;return(0,_.jsxs)("div",{className:"zone-order-card ".concat(i?"clickable":""," ").concat(r?"active":""," ").concat(m?"going-on":""),role:i?"button":void 0,tabIndex:i?0:void 0,onClick:i?()=>Ie(r?null:{orderid:e.orderid,lat:a,lon:t}):void 0,children:[(0,_.jsxs)("div",{className:"zone-order-card-head",children:[(0,_.jsx)("div",{className:"zone-order-num",children:e.step||s+1}),(0,_.jsxs)("div",{className:"zone-order-id-block",children:[(0,_.jsxs)("div",{className:"zone-order-id",children:["Order #",e.orderid]}),(0,_.jsxs)("div",{className:"zone-order-rider",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.aVM,{})}),e.rider_name||e.ridername||"Unassigned"]})]}),(()=>{const s=fe(e.deliverytime),a=fe(e.expecteddeliverytime),t=!Y.Ys.has(String(e.orderstatus||"").toLowerCase())&&null!==p;return e.orderstatus||s||a||t?(0,_.jsxs)("div",{className:"zone-order-status-stack",children:[e.orderstatus&&(0,_.jsx)("span",{className:"zone-order-status",style:{background:n.bg,color:n.fg},children:n.label}),(s||a)&&(0,_.jsxs)("span",{className:"zone-order-time ".concat(s?"":"is-expected"),title:s?"Delivered at ".concat(s):"Expected at ".concat(a),children:[(0,_.jsx)(S.VP9,{}),s||a]}),t&&(0,_.jsxs)("span",{className:"zone-order-est-drop",title:"Estimated distance to drop location",children:[(0,_.jsx)(S.HPi,{}),ut(p)]})]}):null})()]}),(0,_.jsxs)("div",{className:"zone-order-customer",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.u9F,{})}),e.deliverycustomer||"\u2014"]}),e.pickupcustomer&&(0,_.jsxs)("div",{className:"zone-order-line",title:"Kitchen: ".concat(e.pickupcustomer),children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.NtI,{})}),e.pickupcustomer]}),(e.deliverysuburb||e.deliveryaddress)&&(0,_.jsxs)("div",{className:"zone-order-line",title:e.deliveryaddress||e.deliverysuburb,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.gwi,{})}),e.deliverysuburb||X(e.deliveryaddress)]}),e.ordernotes&&(0,_.jsxs)("div",{className:"zone-order-line zone-order-notes",title:e.ordernotes,children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.dKO,{})}),e.ordernotes]}),(0,_.jsxs)("div",{className:"zone-order-stats",children:[(0,_.jsxs)("span",{className:"zone-order-chip",title:"Distance",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),e.actualkms||e.kms||0," km"]}),(0,_.jsxs)("span",{className:"zone-order-chip ".concat(c?"is-loss":"is-profit"),title:"Profit",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.ohY,{})}),c?"-":"","\u20b9",Math.abs(l).toFixed(0)]}),null!=e.deliverycharge&&(0,_.jsxs)("span",{className:"zone-order-chip",title:"Delivery charge",children:["\u20b9",parseFloat(e.deliverycharge).toFixed(0)," chg"]}),e.ordertype&&(0,_.jsx)("span",{className:"zone-order-chip zone-order-type type-".concat(String(e.ordertype).toLowerCase()),children:e.ordertype}),(0,_.jsxs)("span",{className:"zone-order-chip zone-order-trip",children:["T",e.trip_number||"-"," \xb7 S",e.step||s+1]})]})]},e.orderid)}))})]})]}):(0,_.jsxs)("div",{id:"riders-panel",children:[!(Ta&&0===Ka)&&(0,_.jsx)("div",{className:"ph",children:"zones"===F?"Zone dispatch":"kitchens"===F?"Kitchen dispatch":Ta?"Active rider dispatch":"Rider dispatch"}),(0,_.jsx)("div",{id:"rider-cards",children:0!==Ra.length||ka?"zones"===F?Ea.map(((e,s)=>{const a=e.statusCounts.delivered||0,t=e.totalProfit<0;return(0,_.jsxs)("div",{className:"rcard zone-card",onClick:()=>qe(e),style:{animationDelay:"".concat(.05*s,"s")},children:[(0,_.jsxs)("div",{className:"zone-card-header",children:[(0,_.jsx)("div",{className:"zone-card-emoji",children:(0,_.jsx)(S.Cd7,{})}),(0,_.jsxs)("div",{className:"zone-card-titles",children:[(0,_.jsx)("div",{className:"zone-card-name",children:e.name}),(0,_.jsxs)("div",{className:"zone-card-sub",children:[e.activeRidersCount," ",1===e.activeRidersCount?"rider":"riders"," \xb7 ",e.totalOrders," ",1===e.totalOrders?"order":"orders"]})]}),(0,_.jsx)("span",{className:"zone-card-arrow","aria-hidden":"true",children:"\u2192"})]}),e.totalOrders>0&&(0,_.jsxs)("div",{className:"zone-progress-row",children:[(0,_.jsx)("div",{className:"zone-status-bar",title:Object.entries(e.statusCounts).map((e=>{let[s,a]=e;return"".concat((0,Y.Cx)(s).label,": ").concat(a)})).join(" \xb7 "),children:Object.entries(e.statusCounts).map((s=>{let[a,t]=s;const i=(0,Y.Cx)(a),r=t/e.totalOrders*100;return(0,_.jsx)("div",{className:"zone-status-seg",style:{width:"".concat(r,"%"),background:i.bg}},a)}))}),(0,_.jsxs)("div",{className:"zone-progress-label",children:[a,"/",e.totalOrders]})]}),(0,_.jsxs)("div",{className:"zone-stat-pills",children:[(0,_.jsxs)("span",{className:"zone-stat-pill",title:"Areas covered",children:[(0,_.jsx)("span",{className:"zone-stat-icon",children:(0,_.jsx)(S.gwi,{})}),(0,_.jsx)("span",{className:"zone-stat-value",children:e.suburbs.length}),(0,_.jsx)("span",{className:"zone-stat-label",children:1===e.suburbs.length?"area":"areas"})]}),(0,_.jsxs)("span",{className:"zone-stat-pill",title:"Total distance",children:[(0,_.jsx)("span",{className:"zone-stat-icon",children:(0,_.jsx)(S.xI$,{})}),(0,_.jsx)("span",{className:"zone-stat-value",children:e.totalKms.toFixed(1)}),(0,_.jsx)("span",{className:"zone-stat-label",children:"km"})]}),(0,_.jsxs)("span",{className:"zone-stat-pill",title:"Kitchens",children:[(0,_.jsx)("span",{className:"zone-stat-icon",children:(0,_.jsx)(S.NtI,{})}),(0,_.jsx)("span",{className:"zone-stat-value",children:e.kitchens.length}),(0,_.jsx)("span",{className:"zone-stat-label",children:1===e.kitchens.length?"kitchen":"kitchens"})]}),(0,_.jsxs)("span",{className:"zone-stat-pill ".concat(t?"profit-negative":"profit-positive"),title:"Total profit",children:[(0,_.jsx)("span",{className:"zone-stat-icon",children:(0,_.jsx)(S.ohY,{})}),(0,_.jsx)("span",{className:"zone-stat-value",children:t?"-\u20b9".concat(Math.abs(e.totalProfit).toFixed(0)):"\u20b9".concat(e.totalProfit.toFixed(0))})]})]}),e.suburbs.length>0&&(0,_.jsxs)("div",{className:"zone-card-suburbs",children:[(0,_.jsx)("span",{className:"zone-card-suburbs-text",children:e.suburbs.slice(0,3).map((e=>e.name)).join(" \xb7 ")}),e.suburbs.length>3&&(0,_.jsxs)("span",{className:"zone-card-suburbs-more",children:["+",e.suburbs.length-3]})]})]},e.id)})):"kitchens"===F?qa.map(((e,s)=>(0,_.jsxs)("div",{className:"rcard",onClick:()=>Ee(e),style:{animationDelay:"".concat(.05*s,"s")},children:[(0,_.jsxs)("div",{className:"rcard-top",children:[(0,_.jsx)("div",{className:"rcard-emo",style:{background:"#f59e0b18",borderColor:"#f59e0b50",color:"#f59e0b"},children:(0,_.jsx)(S.NtI,{})}),(0,_.jsxs)("div",{className:"rcard-info",children:[(0,_.jsx)("div",{className:"rcard-name",children:e.kitchenName}),(0,_.jsxs)("div",{className:"rcard-zone",children:[e.riders.size," riders \xb7 ",(0,_.jsx)(we,{children:(0,_.jsx)(S.ohY,{})}),"\u20b9",e.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0).toFixed(0)]})]}),(0,_.jsx)("div",{className:"rcard-badge",style:{background:"#f59e0b18",color:"#f59e0b"},children:e.orders.length})]}),(0,_.jsx)("div",{className:"bar-bg",children:(0,_.jsx)("div",{className:"bar-fg",style:{width:"".concat(Math.min(100,e.orders.length/20*100),"%"),background:"#f59e0b"}})}),(0,_.jsxs)("div",{className:"rcard-meta",children:[(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),e.orders.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0).toFixed(1)," km"]}),(0,_.jsxs)("span",{children:[e.riders.size," riders"]})]}),(0,_.jsx)("div",{className:"step-ids",children:Array.from(e.riders).slice(0,10).map((e=>{var s;return(0,_.jsx)("span",{className:"step-id",style:{color:dt(e)},children:null===(s=La.find((s=>s.id===e)))||void 0===s?void 0:s.riderName.split(" ")[0]},e)}))})]},e.id))):Ta?(0,_.jsx)(H,{visibleRiders:Va,riders:La,focusedStop:Re,handleRiderFocus:Ua,setFocusedStop:Ie,calculateEstMeters:ot,getRiderColor:dt,formatMeters:ut}):Va.map(((e,s)=>{var a;const t=e.orders.length,i=e.orders.filter((e=>Y.Ys.has(String(e.orderstatus||"").toLowerCase()))).length,r=t>0&&i>=t,n=e.orders.find((e=>{const s=String(e.orderstatus||"").toLowerCase();return!Y.Ys.has(s)&&!Y.yP.has(s)})),l=n?ot(e.id,n):null;return(0,_.jsxs)("div",{className:"rcard",onClick:()=>Ua(e),style:{animationDelay:"".concat(.05*s,"s"),borderLeft:"3px solid ".concat(e.color)},children:[(0,_.jsxs)("div",{className:"rcard-top",children:[(0,_.jsx)("div",{className:"rcard-emo",style:{background:"#f1f5f9",borderColor:"#e2e8f0",color:"#64748b"},children:(0,_.jsx)(S.aVM,{})}),(0,_.jsxs)("div",{className:"rcard-info",children:[(0,_.jsx)("div",{className:"rcard-name",children:e.riderName}),(0,_.jsxs)("div",{className:"rcard-zone",children:[(null===(a=e.orders[0])||void 0===a?void 0:a.zone_name)||ws||"Local"," \xb7 ",new Set(e.orders.map((e=>e.trip_number||1))).size," trips"]})]}),(0,_.jsxs)("div",{className:"rcard-badge ".concat(r?"is-done":""),style:r?void 0:{background:"#f1f5f9",color:"#475569"},title:"".concat(i," delivered of ").concat(t," total"),children:[i,"/",t]})]}),(0,_.jsx)("div",{className:"bar-bg",children:(0,_.jsx)("div",{className:"bar-fg",style:{width:"".concat(Math.min(100,t/15*100),"%"),background:e.color}})}),(0,_.jsxs)("div",{className:"rcard-meta",children:[(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.xI$,{})}),e.orders.reduce(((e,s)=>e+parseFloat(s.actualkms||s.kms||0)),0).toFixed(1)," km"]}),null!==l&&(0,_.jsxs)("span",{className:"rcard-est-meters",title:"Estimated distance to next drop location",children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.HPi,{})}),ut(l)," to drop"]}),(0,_.jsxs)("span",{children:[(0,_.jsx)(we,{children:(0,_.jsx)(S.ohY,{})}),"\u20b9",e.orders.reduce(((e,s)=>e+parseFloat(s.profit||0)),0).toFixed(0)]})]}),(0,_.jsx)("div",{className:"step-ids",children:e.orders.slice(0,15).map((e=>(0,_.jsxs)("span",{className:"step-id",children:["S",e.step]},e.orderid)))})]},e.id)})):(e=>{const s=null===(e=us.find((e=>e.id===ja)))||void 0===e?void 0:e.label,a=Na&&Ma.length>0;return(0,_.jsxs)("div",{className:"empty-slot",children:[(0,_.jsx)("div",{className:"empty-slot-icon",children:(0,_.jsx)(S.gsJ,{})}),(0,_.jsx)("div",{className:"empty-slot-title",children:s?"No orders in ".concat(s):"No orders"}),(0,_.jsx)("div",{className:"empty-slot-sub",children:a?"".concat(Ma.length," order").concat(1===Ma.length?"":"s"," exist in other slots today"):"No deliveries found for this date"})]})})()})]})]}),(0,_.jsxs)("div",{id:"map-wrap",className:"".concat("kitchens"===F?"view-mode-kitchens":""," ").concat(Gs?"compare-split":"").trim(),children:[(0,_.jsxs)(d.W,{center:[11.022,76.982],zoom:12,scrollWheelZoom:!0,style:{height:"100%",width:"100%"},zoomControl:!1,renderer:pa.current,inertia:!0,inertiaDeceleration:2400,inertiaMaxSpeed:2e3,wheelDebounceTime:20,wheelPxPerZoomLevel:80,zoomSnap:.25,children:[(0,_.jsx)(o.e,{url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",attribution:"\xa9 OpenStreetMap contributors"}),(0,_.jsx)(p.p,{position:"bottomright"}),Gs&&(0,_.jsx)(pe,{targetRef:ma}),(0,_.jsx)(he,{trigger:"".concat(ia,"|").concat(Gs,"|").concat(ca)}),(0,_.jsx)(Se,{focusedItem:it||(Oa||De)&&Re||Oa||De||Le,viewMode:F,orders:Ya,kitchens:qa,locationKey:Qe,extraPoints:Ba}),qa.filter((e=>Number.isFinite(e.lat)&&Number.isFinite(e.lon))).filter((e=>!Oa||e.riders.has(Oa.id))).map(((e,s)=>(0,_.jsx)(l.p,{position:[e.lat,e.lon],icon:ct(e.kitchenName,(null===De||void 0===De?void 0:De.id)===e.id),zIndexOffset:(null===De||void 0===De?void 0:De.id)===e.id?4e3:2e3,eventHandlers:{click:()=>Ee(e),mouseover:e=>e.target.openPopup(),mouseout:e=>e.target.closePopup()},children:(0,_.jsxs)(m.z,{className:"kitchen-popup",maxWidth:220,minWidth:200,autoPan:!0,autoPanPadding:[20,20],children:[(0,_.jsx)("div",{className:"kp-header",children:"KITCHEN"}),(0,_.jsx)("div",{className:"kp-name",children:e.kitchenName}),(0,_.jsxs)("div",{className:"kp-stat",children:[(0,_.jsx)("span",{className:"kp-stat-lbl",children:"Orders"}),(0,_.jsx)("span",{className:"kp-stat-val",children:e.orders.length})]})]})},"k-".concat(s)))),(()=>{if(Gs&&Oa&&"actual"===Ws)return null;let e=Ra;Le&&(e=Le.orders),De&&(e=De.orders),Oa&&(e=Oa.orders),e=e.filter(Q);const s=Gs&&Oa?new Map(Qa.map((e=>[String(e.deliveryid),e.sequenceStep]))):null;return e.map(((a,t)=>{const i=a.rider_id,r=!i||ue.has(i);let n,c=dt(i);if(s&&i===Oa.id&&null!=a.deliveryid){const e=s.get(String(a.deliveryid));e&&(c=(0,Y.gM)(e-1),n=e)}const d=!!Oa||!!De,o=(0,Y.Cx)(a.orderstatus),u="delivered"===String(a.orderstatus||"").toLowerCase(),m=x&&String(x)===String(a.orderid),p=a.orderstatus?'<svg class="cmark-flag" viewBox="0 0 18 22" xmlns="http://www.w3.org/2000/svg">\n <line x1="1.5" y1="0" x2="1.5" y2="22" stroke="#0f172a" stroke-width="1.6" stroke-linecap="round"/>\n <polygon points="2,1 17,1 13.5,5.5 17,10 2,10" fill="'.concat(o.bg,'" stroke="#0f172a" stroke-width="0.6" stroke-linejoin="round"/>\n ').concat(u?'<polyline points="5,5.5 7,7.5 11,3.5" fill="none" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>':"","\n </svg>"):"",h=d?(()=>{const s=n||a.step||e.indexOf(a)+1,t=32;return v().divIcon({className:"",iconSize:[t,t],iconAnchor:[16,16],popupAnchor:[0,-28],html:'<div class="cmark is-rider-focused'.concat(m?" pulse":"",'" style="background:').concat(c,";width:").concat(t,"px;height:").concat(t,"px;font-size:").concat(s>9?12:14,"px;opacity:").concat(r?1:.75,'">').concat(s>0?s:"").concat(p,"</div>")})})():v().divIcon({className:"",iconSize:[24,30],iconAnchor:[2,30],popupAnchor:[10,-25],html:'<div class="cmark'.concat(m?" pulse":"",'" style="width:24px;height:30px;opacity:').concat(r?1:.75,'">').concat(p,"</div>")});return(0,_.jsx)(l.p,{position:[parseFloat(a.droplat||a.deliverylat),parseFloat(a.droplon||a.deliverylong)],icon:h,zIndexOffset:i?100:0,ref:e=>{e?Ye.current[String(a.orderid)]=e:delete Ye.current[String(a.orderid)]},eventHandlers:{click:()=>{const e=String(a.orderid);He.current.has(e)?(He.current.delete(e),Ge(null)):(He.current.add(e),Ge(a))}}},"".concat(a.orderid,"-").concat(d?"num":"flag"))}))})(),(()=>{const e=Gs&&Oa&&"actual"===Ws;if(Ds)return e?[]:Ls.map(((e,s)=>(0,_.jsx)(c.R,{positions:[e.from,e.to],pathOptions:{color:e.color,weight:6,opacity:.9,lineJoin:"round",lineCap:"round"}},s)));const s=[],a=Le?new Set(Le.riders.map((e=>String(e.rider_id)))):null;return e||Va.forEach((e=>{const t=ue.has(e.id);if(Oa&&Oa.id!==e.id)return;if(De&&!De.riders.has(e.id))return;if(a&&!a.has(String(e.id)))return;const i=Ta?(0,Y.d1)(e.orders):null,n=Ta?i?[i]:[]:e.orders;if(Ta&&0===n.length)return;const l={};n.forEach((e=>{const s=e.trip_number||1;l[s]||(l[s]=[]),l[s].push(e)})),Object.entries(l).forEach((a=>{let[i,n]=a;const l=De?n.filter((e=>(e.pickupcustomer||e.kitchen_key||"Unknown").toLowerCase().trim()===De.id)):n;if(0===l.length)return;const d=[...n].sort(((e,s)=>(e.step||0)-(s.step||0))),o=Ne(d),u=be(e.id,i,o),m=Fs[u],p=[...l].sort(((e,s)=>(e.step||0)-(s.step||0))),h=Ta?p[0]:null;let v=null;if(Ta&&h){const s=va.find((s=>String(s.id)===String(e.id))),a=s&&Number.isFinite(s.lat)&&Number.isFinite(s.lon)?[s.lat,s.lon]:ae(h)?[Z(ee(h)),Z(se(h))]:null,t=Z(h.droplat||h.deliverylat),i=Z(h.droplon||h.deliverylong);a&&Number.isFinite(t)&&Number.isFinite(i)&&(v=[a,[t,i]])}const x=Ta?h&&v?Fs[be(e.id,"active-".concat(h.orderid),v)]:void 0:m,j=Array.isArray(x)&&x.length>=2,f=!1===x;if(!Ta&&!j&&!f)return;const g=j?x:Ta?v:Ne(p);if(!g||g.length<2)return;const N=t?1:.1,b="kitchens"===F||De?7:6,y=Gs&&Oa&&e.id===Oa.id,k=f?"8 6":y&&"combined"===Ws?"6 5":void 0;if(Gs&&Oa&&e.id===Oa.id){const a=new Map(Qa.map((e=>[String(e.deliveryid),e.sequenceStep]))),t=p.filter(Q),r=t.map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)]));let n;if(j)n=je(g,r);else{const e=g.length>r.length;n=[];for(let s=0;s<r.length;s++){const a=e?s:s-1,t=e?s+1:s;a<0||a>=g.length||t>=g.length?n.push([]):n.push([g[a],g[t]])}}const l="combined"===Ws?5:0;return s.push((0,_.jsx)(c.R,{positions:g,pathOptions:{color:"#ffffff",weight:b+4,opacity:.5*N,lineJoin:"round",lineCap:"round",offset:l}},"".concat(e.id,"-").concat(i,"-halo"))),void n.forEach(((r,n)=>{if(!r||r.length<2)return;const d=t[n],o=d?a.get(String(d.deliveryid)):null,u="combined"===Ws?W:o?(0,Y.gM)(o-1):e.color,m=null!=oa&&oa===o,p=m?b+1.5:b,h=m?1:oa?.5*N:N;s.push((0,_.jsx)(c.R,{positions:r,pathOptions:{color:u,weight:p,opacity:h,lineJoin:"round",lineCap:"round",dashArray:k,offset:l}},"".concat(e.id,"-").concat(i,"-step-").concat(n,"-").concat((null===d||void 0===d?void 0:d.deliveryid)||n)))}))}s.push((0,_.jsxs)(r.Fragment,{children:[(0,_.jsx)(c.R,{positions:g,pathOptions:{color:"#ffffff",weight:b+4,opacity:.5*N,lineJoin:"round",lineCap:"round"}}),(0,_.jsx)(c.R,{positions:g,pathOptions:{color:e.color,weight:b,opacity:N,lineJoin:"round",lineCap:"round",dashArray:k}})]},"".concat(e.id,"-").concat(i)))}))})),s})(),va.filter((e=>Ta?"active"===e.status&&Ha.has(String(e.id)):La.some((s=>String(s.id)===String(e.id))))).filter((e=>!Oa||String(Oa.id)===String(e.id))).map((e=>{var s;const a="active"===e.status,t=a?"#16a34a":"#dc2626",r=La.find((s=>String(s.id)===String(e.id))),n=null===r||void 0===r||null===(s=r.orders)||void 0===s?void 0:s.slice().sort(((e,s)=>{const a=e.trip_number||1,t=s.trip_number||1;return a!==t?a-t:(e.step||0)-(s.step||0)})).find((e=>{const s=String(e.orderstatus||"").toLowerCase();return!Y.Ys.has(s)&&!Y.yP.has(s)})),c=n?n.deliverysuburb||X(n.deliveryaddress):null,d=(e.username||"").replace(/[<>&"']/g,""),o=e.orderid?String(e.orderid).replace(/[<>&"']/g,""):"",u="".concat(Ta?"bike":"pin","|").concat(t,"|").concat(d,"|").concat(o,"|").concat(a?1:0);let p=Be.current.get(e.id);if(!p||p.sig!==u){p={sig:u,icon:Ta?v().divIcon({className:"",iconSize:[160,44],iconAnchor:[22,22],popupAnchor:[0,-22],html:'<div class="live-rider-bike '.concat(a?"is-active":"is-idle",'" style="--pin-color:').concat(t,'">\n <span class="live-rider-bike-pulse"></span>\n <span class="live-rider-bike-badge">\n <svg viewBox="0 0 24 24" width="20" height="20" fill="#fff" aria-hidden="true"><path d="M19.44 9.03 15.41 5H11v2h3.59l2 2H5c-2.8 0-5 2.2-5 5s2.2 5 5 5c2.46 0 4.45-1.69 4.9-4h1.65l2.77-2.77c-.21.54-.32 1.14-.32 1.77 0 2.76 2.24 5 5 5s5-2.24 5-5c0-2.65-2.06-4.77-4.66-4.97ZM7.82 15C7.4 16.15 6.28 17 5 17c-1.63 0-3-1.37-3-3s1.37-3 3-3c1.28 0 2.4.85 2.82 2H5v2h2.82ZM19 17c-1.63 0-3-1.37-3-3s1.37-3 3-3 3 1.37 3 3-1.37 3-3 3Z"/></svg>\n </span>\n <span class="live-rider-bike-label">').concat(d).concat(o?" <span>#".concat(o,"</span>"):"","</span>\n </div>")}):v().divIcon({className:"",iconSize:[140,56],iconAnchor:[12,41],popupAnchor:[58,-40],html:'<div class="live-rider-pin" style="--pin-color:'.concat(t,'">\n <div class="live-rider-pin-marker"></div>\n <div class="live-rider-pin-label">').concat(d).concat(o?" <span>#".concat(o,"</span>"):"","</div>\n </div>")})},Be.current.set(e.id,p)}const h=p.icon,x={click:s=>{const a=String(e.id);Ve.current.has(a)?(Ve.current.delete(a),s.target.closePopup()):(Ve.current.add(a),s.target.openPopup());const t=La.find((e=>String(e.id)===a));t&&Ua(t)},popupclose:()=>{Ve.current.delete(String(e.id))}},j=Ta?_e:l.p,g=Ta?{target:[e.lat,e.lon],duration:15e3}:{position:[e.lat,e.lon]};return(0,_.jsx)(j,(0,i.A)((0,i.A)({},g),{},{icon:h,zIndexOffset:2500,eventHandlers:x,children:(0,_.jsxs)(m.z,{maxWidth:260,autoPan:!0,autoPanPadding:[20,20],className:"dispatch-popup live-rider-popup",children:[(0,_.jsx)("div",{className:"pu-hdr-live",children:(0,_.jsxs)("div",{className:"pu-hdr-left",children:[(0,_.jsx)("span",{className:"pu-live-indicator",style:{"--pulse-color":t},children:(0,_.jsx)("span",{className:"pu-live-dot"})}),(0,_.jsx)("span",{className:"pu-hdr-title",children:"LIVE GPS"})]})}),(0,_.jsxs)("div",{className:"pu-rider-profile",children:[(0,_.jsx)("div",{className:"pu-avatar",style:{backgroundColor:"".concat(t,"12"),color:t},children:(0,_.jsx)(S.bsz,{})}),(0,_.jsxs)("div",{className:"pu-rider-info-text",children:[(0,_.jsxs)("div",{className:"pu-rider-name-row",children:[(0,_.jsx)("span",{className:"pu-rider-name",children:e.username||"Rider #".concat(e.id)}),e.status&&(0,_.jsx)("span",{className:"pu-status-badge ".concat("active"===e.status.toLowerCase()?"active":"idle"),children:e.status})]}),(0,_.jsxs)("div",{className:"pu-rider-meta",children:["Rider ID: #",e.id]})]})]}),(0,_.jsxs)("div",{className:"pu-body-content",children:[e.orderid&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Active Order"}),(0,_.jsxs)("span",{className:"pu-info-value pu-order-badge",children:["#",e.orderid]})]}),n&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Next Stop"}),(0,_.jsxs)("span",{className:"pu-info-value",style:{color:"#4f46e5"},children:["#",n.step||"?"," \xb7 ",n.deliverycustomer||"\u2014"]})]}),c&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Next Location"}),(0,_.jsx)("span",{className:"pu-info-value",title:n.deliveryaddress||c,children:c})]}),(null===n||void 0===n?void 0:n.pickupcustomer)&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Pickup"}),(0,_.jsx)("span",{className:"pu-info-value",title:n.pickupcustomer,children:n.pickupcustomer})]}),e.contactno&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Phone"}),(0,_.jsx)("a",{href:"tel:".concat(e.contactno),className:"pu-info-value pu-phone-link",children:e.contactno})]}),e.logdate&&(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Last Seen"}),(0,_.jsxs)("span",{className:"pu-info-value pu-time-stamp",children:[(0,_.jsx)(S.VP9,{className:"inline-icon"})," ",f()(e.logdate).isValid()?f()(e.logdate).format("hh:mm:ss A"):e.logdate]})]}),(0,_.jsxs)("div",{className:"pu-info-row",children:[(0,_.jsx)("span",{className:"pu-info-label",children:"Position"}),(0,_.jsxs)("span",{className:"pu-info-value pu-coordinates",children:[e.lat.toFixed(5),", ",e.lon.toFixed(5)]})]})]})]})}),"live-".concat(e.id))})),Gs&&Oa&&"planned"!==Ws&&Qa.map(((e,s)=>{var a,t;if(0===e.coords.length)return null;const i=(0,Y.gM)(s),n="combined"===Ws?$:i,d=[e.coords[0].lat,e.coords[0].lng],o=[e.coords[e.coords.length-1].lat,e.coords[e.coords.length-1].lng],m=As[e.deliveryid],p=Array.isArray(m)&&m.length>=2?m:e.coords.map((e=>[e.lat,e.lng]));let h=p,x=!0;if(Ds){const s=Rs[e.sequenceStep]||0;s<2?x=!1:h=p.slice(0,Math.min(s,p.length))}const j=oa===e.sequenceStep,g=String(e.orderstatus||"").toLowerCase(),N=Y.Ys.has(g),b=Y.yP.has(g),y=et.find((s=>s.sequenceStep===e.sequenceStep)),k=!(null===y||void 0===y||!y.anomaly),w=null===Oa||void 0===Oa||null===(a=Oa.orders)||void 0===a?void 0:a.find((s=>null!=s.deliveryid&&String(s.deliveryid)===String(e.deliveryid))),F=(0,Y.Cx)(e.orderstatus),M=(e.orderstatus&&'<svg class="cmark-flag" viewBox="0 0 18 22" xmlns="http://www.w3.org/2000/svg">\n <line x1="1.5" y1="0" x2="1.5" y2="22" stroke="#0f172a" stroke-width="1.6" stroke-linecap="round"/>\n <polygon points="2,1 17,1 13.5,5.5 17,10 2,10" fill="'.concat(F.bg,'" stroke="#0f172a" stroke-width="0.6" stroke-linejoin="round"/>\n ').concat(N?'<polyline points="5,5.5 7,7.5 11,3.5" fill="none" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/>':"","\n </svg>"),["compare-step-pin"]);j&&M.push("is-focused"),N&&M.push("is-delivered"),b&&M.push("is-skipped"),k&&M.push("is-anomaly");const C='<div class="'.concat(M.join(" "),'" style="--pin-color:').concat(i,'">')+'<span class="compare-step-pin-num">'.concat(e.sequenceStep,"</span>")+(N?'<svg class="compare-step-pin-check" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M2.5 6.5 L5 9 L9.5 3.5" stroke="white" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>':"")+"</div>",A=v().divIcon({className:"",iconSize:[36,36],iconAnchor:[18,18],popupAnchor:[0,-22],html:C}),z=1===e.sequenceStep,P=z?v().divIcon({className:"",iconSize:[40,40],iconAnchor:[20,20],html:'<div class="compare-start-pin" style="--pin-color:'.concat(i,'">')+'<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M19 6h-2c0-2.76-2.24-5-5-5S7 3.24 7 6H5c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-7-3c1.66 0 3 1.34 3 3H9c0-1.66 1.34-3 3-3zm0 10c-2.76 0-5-2.24-5-5h2c0 1.66 1.34 3 3 3s3-1.34 3-3h2c0 2.76-2.24 5-5 5z" fill="currentColor"/></svg></div>'}):null,D="combined"===Ws?-5:0;return(0,_.jsxs)(r.Fragment,{children:[x&&(0,_.jsx)(c.R,{positions:h,pathOptions:{color:"#ffffff",weight:j?11:9,opacity:j?.75:.55,lineJoin:"round",lineCap:"round",offset:D}}),x&&(0,_.jsx)(c.R,{positions:h,pathOptions:{color:n,weight:j?6.5:5,opacity:j?1:oa?.55:.95,lineJoin:"round",lineCap:"round",offset:D}}),z&&(0,_.jsx)(l.p,{position:d,icon:P,zIndexOffset:j?900:100,eventHandlers:{click:s=>{s.originalEvent&&s.originalEvent.stopPropagation(),ua((s=>s===e.sequenceStep?null:e.sequenceStep))}},children:(0,_.jsx)(u.m,{direction:"top",offset:[0,-12],opacity:1,className:"compare-tooltip",children:(0,_.jsxs)("div",{className:"cmp-tip",children:[(0,_.jsxs)("div",{className:"cmp-tip-header",children:[(0,_.jsx)("span",{className:"cmp-tip-step",style:{background:i},children:(0,_.jsx)(S.zPd,{})}),(0,_.jsxs)("div",{className:"cmp-tip-title-stack",children:[(0,_.jsx)("div",{className:"cmp-tip-title",children:e.pickupcustomer||"Pickup"}),(0,_.jsx)("div",{className:"cmp-tip-sub",children:null!==(t=e.coords[0])&&void 0!==t&&t.logdate?"Picked up \xb7 ".concat(f()(e.coords[0].logdate).format("hh:mm A")):"Rider trip origin"})]})]}),(0,_.jsx)("div",{className:"cmp-tip-action",children:"Click for step 1 details"})]})})}),(0,_.jsx)(l.p,{position:o,icon:A,zIndexOffset:j?1e3:200,eventHandlers:w?{click:s=>{s.originalEvent&&s.originalEvent.stopPropagation(),ua((s=>s===e.sequenceStep?null:e.sequenceStep)),Ke.current&&(clearTimeout(Ke.current),Ke.current=null);const a=String(w.orderid);He.current.has(a)?(He.current.delete(a),Ge(null)):(He.current.add(a),Ge(w))}}:{click:s=>{s.originalEvent&&s.originalEvent.stopPropagation(),ua((s=>s===e.sequenceStep?null:e.sequenceStep)),w&&s.target&&"function"===typeof s.target.openPopup&&s.target.openPopup()}},children:!w&&(0,_.jsx)(u.m,{direction:"top",offset:[0,-20],opacity:1,className:"compare-tooltip",children:(()=>{const s=(0,Y.Cx)(e.orderstatus);return(0,_.jsxs)("div",{className:"cmp-tip",children:[(0,_.jsxs)("div",{className:"cmp-tip-header",children:[(0,_.jsx)("span",{className:"cmp-tip-step",style:{background:i},children:e.sequenceStep}),(0,_.jsxs)("div",{className:"cmp-tip-title-stack",children:[(0,_.jsx)("div",{className:"cmp-tip-title",children:e.deliverycustomer||"Step ".concat(e.sequenceStep)}),(0,_.jsx)("div",{className:"cmp-tip-sub",children:e.deliverytime?"Delivered ".concat(f()(e.deliverytime).format("hh:mm A")):"".concat(e.coords.length," GPS pings")})]}),e.orderstatus&&(0,_.jsx)("span",{className:"cmp-tip-tag",style:{background:s.bg,color:s.fg},children:s.label})]}),k&&(0,_.jsx)("div",{className:"cmp-tip-anomaly",children:"Deviation flagged \u2014 see details below"}),(0,_.jsx)("div",{className:"cmp-tip-action",children:j?"Click to deselect":"Click for details"})]})})()})})]},"actual-".concat(e.deliveryid))}))]}),Gs&&Oa&&(0,_.jsxs)("div",{className:"compare-view-switcher",role:"group","aria-label":"Compare view layer",children:[(0,_.jsx)("button",{type:"button",className:"actual"===Ws?"is-active":"",onClick:()=>$s("actual"),title:"Show only the rider's actual GPS trail",children:"Actual"}),(0,_.jsx)("button",{type:"button",className:"planned"===Ws?"is-active":"",onClick:()=>$s("planned"),title:"Show only the dispatched planned route",children:"Planned"}),(0,_.jsx)("button",{type:"button",className:"combined"===Ws?"is-active":"",onClick:()=>$s("combined"),title:"Overlay planned (dashed) and actual (solid) on one map",children:"Combined"})]}),(0,_.jsx)("div",{id:"ov-tl"}),(0,_.jsxs)("div",{id:"ov-br",children:[(0,_.jsxs)("button",{className:"sbt ".concat(Ds?"active":""),onClick:()=>{if(Ds)return Es(!1),qs([]),void Is({});Es(!0),qs([]),Is({});const e=Gs&&Oa,s=e?new Map(Qa.map((e=>[String(e.deliveryid),e.sequenceStep]))):null,a=[];if(La.forEach((t=>{if(!ue.has(t.id))return;if(Oa&&Oa.id!==t.id)return;if(De&&!De.riders.has(t.id))return;const i={};t.orders.forEach((e=>{const s=e.trip_number||1;i[s]||(i[s]=[]),i[s].push(e)})),Object.entries(i).forEach((i=>{let[r,n]=i;const l=De?n.filter((e=>(e.pickupcustomer||e.kitchen_key||"Unknown").toLowerCase().trim()===De.id)):n;if(0===l.length)return;const c=[...n].sort(((e,s)=>(e.step||0)-(s.step||0))),d=Ne(c),o=be(t.id,r,d),u=Fs[o],m=[...l].sort(((e,s)=>(e.step||0)-(s.step||0))),p=Ne(m),h="kitchens"===F||De,v=u||p;if(v.length<2)return;let x=()=>t.color;if(e&&t.id===Oa.id){const e=m.filter(Q).map((e=>[parseFloat(e.droplat||e.deliverylat),parseFloat(e.droplon||e.deliverylong)])),a=u?je(u,e):(()=>{const s=p.length>e.length,a=[];for(let t=0;t<e.length;t++){const e=s?t:t-1,i=s?t+1:t;e<0||e>=p.length||i>=p.length?a.push([]):a.push([p[e],p[i]])}return a})(),i=[];let r=0;a.forEach(((e,s)=>{const a=Math.max(0,((null===e||void 0===e?void 0:e.length)||0)-1);for(let t=0;t<a;t++)i[r+t]=s;r+=a})),x=e=>{const a=i[e];if(null==a)return t.color;const r=m.filter(Q)[a],n=r?s.get(String(r.deliveryid)):null;return n?(0,Y.gM)(n-1):t.color}}for(let e=0;e<v.length-1;e++)a.push({from:v[e],to:v[e+1],color:x(e),delay:.05*(parseInt(t.id.slice(-3))||0)+40*parseInt(r)+e*(h?40:8)})}))})),a.sort(((e,s)=>e.delay-s.delay)),a.forEach(((e,s)=>{setTimeout((()=>{qs((s=>[...s,e])),s===a.length-1&&setTimeout((()=>{Es(!1),Is({})}),1e3)}),e.delay)})),e&&Qa.length>0){const e=[...Qa],s=e.map((e=>{const s=As[e.deliveryid];return Array.isArray(s)&&s.length>=2?s:e.coords.map((e=>[e.lat,e.lng]))})),t=a.length>0?a[a.length-1].delay:800*e.length,i=Math.max(t,600*e.length),r=i/Math.max(1,e.length),n=Date.now(),l=()=>{if(!Os.current)return;const a=Date.now()-n,t={};e.forEach(((e,i)=>{const n=s[i];if(!n||n.length<2)return;const l=i*r;if(a>=l+r)t[e.sequenceStep]=n.length;else if(a>=l){const s=(a-l)/r;t[e.sequenceStep]=Math.max(2,Math.ceil(s*n.length))}})),Is(t),a<i+200&&requestAnimationFrame(l)};requestAnimationFrame(l)}},style:{boxShadow:"var(--shadow-lg)",background:Ds?"var(--accent)":"#fff"},children:[(0,_.jsx)("span",{children:Ds?"\u23f9":"\u25b6"})," ",Ds?"Stop":"Animate Routes"]}),(0,_.jsxs)("button",{type:"button",className:"sbt ".concat(Gs?"active":""),onClick:()=>{if(Gs)Js(!1);else{if(!Oa){const e=La.find((e=>(e.orders||[]).some((e=>null!=e.deliveryid&&""!==e.deliveryid&&0!==e.deliveryid)))),s=La.find((e=>e.orders&&e.orders.length>0)),a=e||s;if(a&&(Ua(a),Je))return void(ta.current=!0)}Js(!0)}},title:Oa?"Compare planned vs. actual route for ".concat(Oa.riderName):"Compare planned vs. actual route (will focus the first rider)",style:{boxShadow:"var(--shadow-lg)",background:Gs?"linear-gradient(135deg, #662582, #9255AB)":"#fff",marginLeft:8,color:Gs?"#fff":void 0},children:[(0,_.jsx)("span",{className:"sbt-icon",children:(0,_.jsx)(S.$G1,{})}),Gs?"Exit Compare":"Compare"]})]})]}),Gs&&Oa&&(0,_.jsx)("div",{id:"compare-map-wrap",children:(()=>{const e=Qa.length,s=Qa.filter((e=>e.coords.length>0)).length,a=Qa.filter((e=>e.isLoading)).length,t=e>0?Math.round(s/e*100):0,i=e>0&&s===e&&0===a,n=null!=oa?et.find((e=>e.sequenceStep===oa)):null;return(0,_.jsxs)("div",{className:"compare-header-v2",children:[(0,_.jsxs)("div",{className:"compare-header-row",children:[(0,_.jsxs)("div",{className:"compare-title",children:[(0,_.jsx)("span",{className:"compare-title-dot",style:{background:Oa.color}}),(0,_.jsx)("span",{className:"compare-title-name",children:Oa.riderName}),(0,_.jsx)("span",{className:"compare-title-badge",children:"ACTUAL vs PLANNED"})]}),(0,_.jsxs)("div",{className:"compare-header-tools",children:[null!=oa&&(0,_.jsxs)("button",{type:"button",className:"compare-overall-btn",onClick:()=>ua(null),title:"Zoom out to the whole day",children:[(0,_.jsx)(S.Zs6,{})," Overall"]}),(0,_.jsx)("button",{type:"button",className:"compare-timeline-toggle".concat(Qs?" is-open":""),onClick:()=>ea((e=>!e)),title:Qs?"Hide planned/actual timeline":"Show planned/actual timeline","aria-expanded":Qs,children:(0,_.jsx)(S.j1Q,{})})]})]}),Qs&&(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)("div",{className:"compare-timeline-wrap",children:[(0,_.jsxs)("div",{className:"compare-timeline-container",children:[(0,_.jsxs)("div",{className:"compare-timeline-labels",children:[(0,_.jsx)("div",{className:"compare-timeline-label",children:"Planned"}),(0,_.jsx)("div",{className:"compare-timeline-label",children:"Actual"})]}),(0,_.jsxs)("div",{className:"compare-timeline-scrollable",children:[(0,_.jsx)("div",{className:"compare-timeline-track is-planned",children:at.map(((e,s)=>{var a;const t=String(e.orderstatus||"").toLowerCase(),i=Y.Ys.has(t),n=Y.yP.has(t),l=oa===e.sequenceStep,c=e.isLoading&&0===e.coordsCount,d=!e.isLoading&&0===e.coordsCount,o=(null===(a=e.order)||void 0===a?void 0:a.step)||e.sequenceStep,u=(0,Y.gM)(o-1),m=["compare-step",l&&"is-focused",i&&"is-delivered",n&&"is-skipped",!i&&!n&&"is-pending",c&&"is-loading",d&&"is-no-data",e.anomaly&&"is-anomaly"].filter(Boolean).join(" ");return(0,_.jsxs)(r.Fragment,{children:[s>0&&(0,_.jsx)("span",{className:"compare-step-spacer"}),(0,_.jsxs)("button",{type:"button",className:m,style:{"--step-color":u},onClick:()=>ua((s=>s===e.sequenceStep?null:e.sequenceStep)),title:"Planned Step ".concat(o)+(e.deliverycustomer?" \xb7 ".concat(e.deliverycustomer):"")+(e.expectedTs?" \xb7 ".concat(e.expectedTs.format("hh:mm A")):"")+(e.anomaly?" \xb7 deviation flagged":""),children:[(0,_.jsx)("span",{className:"compare-step-circle",children:c?(0,_.jsx)("span",{className:"compare-step-spin"}):o}),e.expectedTs&&(0,_.jsx)("span",{className:"compare-step-tick",children:e.expectedTs.format("HH:mm")})]})]},"step-p-".concat(e.deliveryid))}))}),(0,_.jsx)("div",{className:"compare-timeline-track is-actual",children:tt.map(((e,s)=>{var a;const t=String(e.orderstatus||"").toLowerCase(),i=Y.Ys.has(t),n=Y.yP.has(t),l=oa===e.sequenceStep,c=e.isLoading&&0===e.coordsCount,d=!e.isLoading&&0===e.coordsCount,o=(null===(a=e.order)||void 0===a?void 0:a.step)||e.sequenceStep,u=(0,Y.gM)(o-1),m=["compare-step",l&&"is-focused",i&&"is-delivered",n&&"is-skipped",!i&&!n&&"is-pending",c&&"is-loading",d&&"is-no-data",e.anomaly&&"is-anomaly"].filter(Boolean).join(" ");return(0,_.jsxs)(r.Fragment,{children:[s>0&&(0,_.jsx)("span",{className:"compare-step-spacer"}),(0,_.jsxs)("button",{type:"button",className:m,style:{"--step-color":u},onClick:()=>ua((s=>s===e.sequenceStep?null:e.sequenceStep)),title:"Actual Visit ".concat(s+1," (Planned Step ").concat(o,")")+(e.deliverycustomer?" \xb7 ".concat(e.deliverycustomer):"")+(e.actualTs?" \xb7 ".concat(e.actualTs.format("hh:mm A")):"")+(e.anomaly?" \xb7 deviation flagged":""),children:[(0,_.jsx)("span",{className:"compare-step-circle",children:c?(0,_.jsx)("span",{className:"compare-step-spin"}):o}),e.actualTs&&(0,_.jsx)("span",{className:"compare-step-tick",children:e.actualTs.format("HH:mm")}),e.anomaly&&(0,_.jsx)("span",{className:"compare-step-flag",title:"Deviation flagged"})]})]},"step-a-".concat(e.deliveryid))}))})]})]}),(0,_.jsxs)("div",{className:"compare-progress-strip",children:[(0,_.jsx)("div",{className:"compare-progress-bar-wrap",children:(0,_.jsx)("div",{className:"compare-progress-bar-fill".concat(i?" is-done":""),style:{width:"".concat(t,"%")}})}),(0,_.jsx)("span",{className:"compare-progress-text",children:a>0?"Loading GPS\u2026 ".concat(s,"/").concat(e):"".concat(s,"/").concat(e," tracks")})]})]}),(()=>{const e="combined"===Ws,s=n?(0,Y.gM)(n.sequenceStep-1):"linear-gradient(90deg, ".concat(Y.Z3.slice(0,6).join(", "),")"),a=e?W:s,t=e?$:s;return(0,_.jsxs)("div",{className:"compare-legend",children:[(0,_.jsxs)("span",{className:"compare-legend-item",children:[(0,_.jsx)("span",{className:"compare-legend-swatch is-step-color is-dashed",style:{background:a}}),"Planned (dashed)"]}),(0,_.jsxs)("span",{className:"compare-legend-item",children:[(0,_.jsx)("span",{className:"compare-legend-swatch is-step-color",style:{background:t}}),"Actual GPS (solid)"]}),(0,_.jsx)("span",{className:"compare-legend-note",children:"Kalman-smoothed GPS \xb7 OSRM road-snapped"})]})})()]})]})})()}),Gs&&Oa&&(0,_.jsx)(U,{focusedRider:Oa,compareDeltas:et,compareSummary:st,actualOrdered:tt,focusedCompareStep:oa,setFocusedCompareStep:ua,sequenceOpen:Zs,setSequenceOpen:Xs,expandedSeqGroups:sa,setExpandedSeqGroups:aa,onClose:()=>Js(!1)})]}),Ue&&(0,_.jsx)("div",{className:"dispatch-popup-center",role:"dialog","aria-label":"Order ".concat(Ue.orderid," details"),onMouseEnter:()=>{Ke.current&&(clearTimeout(Ke.current),Ke.current=null)},onMouseLeave:()=>{(e=>{if(!e)return!1;if(He.current.has(String(e.orderid)))return!0;if(Gs&&Oa&&null!=e.deliveryid){const s=Qa.find((s=>String(s.deliveryid)===String(e.deliveryid)));if(s&&oa===s.sequenceStep)return!0}return!1})(Ue)||(Ke.current&&clearTimeout(Ke.current),Ke.current=setTimeout((()=>{Ge(null),Ke.current=null}),200))},children:(0,_.jsxs)("div",{className:"dispatch-popup-card dispatch-popup",children:[(0,_.jsx)("button",{type:"button",className:"dispatch-popup-center-close","aria-label":"Close order details",onClick:()=>{He.current.delete(String(Ue.orderid)),Ge(null)},children:"\xd7"}),(e=>{const s=(0,Y.Cx)(e.orderstatus),a=e.rider_id||e.userid,t=Y.Ys.has(String(e.orderstatus||"").toLowerCase()),i=t?null:ot(a,e);return(0,_.jsxs)("div",{style:{height:"100%",width:"100%"},children:[(0,_.jsxs)("div",{className:"pu-header",children:[(0,_.jsxs)("div",{className:"pu-header-top",children:[(0,_.jsxs)("div",{className:"pu-id",children:["ORDER #",e.orderid]}),e.orderstatus&&(0,_.jsx)("span",{className:"pu-status-chip",style:{background:s.bg,color:s.fg},children:s.label})]}),(0,_.jsxs)("div",{className:"pu-rider",children:[(0,_.jsx)(S.aVM,{})," ",(0,_.jsx)("span",{children:e.rider_name||e.ridername||"Unassigned"})]}),(e.deliverycustomer||e.customername)&&(0,_.jsxs)("div",{className:"pu-customer",title:e.deliverycustomer||e.customername,children:[(0,_.jsx)(S.u9F,{}),(0,_.jsx)("span",{children:e.deliverycustomer||e.customername})]}),null!=e.deliveryid&&(0,_.jsxs)("div",{className:"pu-delivery-id",children:["Delivery #",e.deliveryid]})]}),(0,_.jsxs)("div",{className:"pu-body",children:[ge.some((s=>e[s.key]))&&(0,_.jsxs)("div",{className:"pu-section",children:[(0,_.jsx)("div",{className:"pu-section-label",children:"Timeline"}),(0,_.jsx)("div",{className:"pu-timeline",children:ge.map((s=>{const a=fe(e[s.key]);return a?(0,_.jsxs)("div",{className:"pu-tl-row ".concat(s.final?"delivered":""),children:[(0,_.jsx)("span",{className:"pu-tl-dot"}),(0,_.jsx)("span",{className:"pu-tl-label",children:s.label}),(0,_.jsx)("span",{className:"pu-tl-time",children:a})]},s.key):null}))})]}),(0,_.jsxs)("div",{className:"pu-section",children:[(0,_.jsx)("div",{className:"pu-section-label",children:"Details"}),(0,_.jsxs)("div",{className:"pu-details-grid",children:[(e.pickupcustomer||e.locationname||e.pickuplocation)&&(0,_.jsxs)("div",{className:"pu-detail",children:[(0,_.jsx)("div",{className:"pu-detail-icon",children:(0,_.jsx)(S.NtI,{})}),(0,_.jsxs)("div",{className:"pu-detail-body",children:[(0,_.jsx)("div",{className:"pu-detail-label",children:"Pickup"}),(0,_.jsx)("div",{className:"pu-detail-value",title:e.pickupcustomer||e.locationname||e.pickuplocation,children:e.pickupcustomer||e.locationname||e.pickuplocation})]})]}),(e.deliverysuburb||e.deliveryaddress)&&(0,_.jsxs)("div",{className:"pu-detail",children:[(0,_.jsx)("div",{className:"pu-detail-icon",children:(0,_.jsx)(S.JFD,{})}),(0,_.jsxs)("div",{className:"pu-detail-body",children:[(0,_.jsx)("div",{className:"pu-detail-label",children:"Drop"}),(0,_.jsx)("div",{className:"pu-detail-value",title:e.deliveryaddress||e.deliverysuburb,children:e.deliverysuburb||X(e.deliveryaddress)})]})]}),e.zone_name&&(0,_.jsxs)("div",{className:"pu-detail",children:[(0,_.jsx)("div",{className:"pu-detail-icon",children:(0,_.jsx)(S.Cd7,{})}),(0,_.jsxs)("div",{className:"pu-detail-body",children:[(0,_.jsx)("div",{className:"pu-detail-label",children:"Zone"}),(0,_.jsx)("div",{className:"pu-detail-value",title:e.zone_name,children:e.zone_name})]})]}),(e.rider_id||e.userid)&&(0,_.jsxs)("div",{className:"pu-detail",children:[(0,_.jsx)("div",{className:"pu-detail-icon",children:(0,_.jsx)(S.aVM,{})}),(0,_.jsxs)("div",{className:"pu-detail-body",children:[(0,_.jsx)("div",{className:"pu-detail-label",children:"Rider ID"}),(0,_.jsxs)("div",{className:"pu-detail-value",children:["#",e.rider_id||e.userid]})]})]})]}),(null!=e.kms||null!=e.actualkms||!t&&null!=e.riderkms||null!==i)&&(0,_.jsxs)("div",{className:"pu-distance-row",children:[null!=e.kms&&""!==e.kms&&(0,_.jsxs)("div",{className:"pu-distance-chip",children:[(0,_.jsx)("span",{className:"pu-distance-icon",children:(0,_.jsx)(S.xI$,{})}),(0,_.jsx)("span",{className:"pu-distance-label",children:"Planned"}),(0,_.jsxs)("span",{className:"pu-distance-value",children:[e.kms," km"]})]}),null!=e.actualkms&&""!==e.actualkms&&(0,_.jsxs)("div",{className:"pu-distance-chip",children:[(0,_.jsx)("span",{className:"pu-distance-icon",children:(0,_.jsx)(S.xI$,{})}),(0,_.jsx)("span",{className:"pu-distance-label",children:"Actual"}),(0,_.jsxs)("span",{className:"pu-distance-value",children:[e.actualkms," km"]})]}),!t&&null!=e.riderkms&&""!==e.riderkms&&(0,_.jsxs)("div",{className:"pu-distance-chip",children:[(0,_.jsx)("span",{className:"pu-distance-icon",children:(0,_.jsx)(S.bsz,{})}),(0,_.jsx)("span",{className:"pu-distance-label",children:"Rider"}),(0,_.jsxs)("span",{className:"pu-distance-value",children:[parseFloat(e.riderkms).toFixed(2)," km"]})]}),null!==i&&(0,_.jsxs)("div",{className:"pu-distance-chip pu-est-meters",title:"Estimated distance to drop location",children:[(0,_.jsx)("span",{className:"pu-distance-icon",children:(0,_.jsx)(S.HPi,{})}),(0,_.jsx)("span",{className:"pu-distance-label",children:"Est. to Drop"}),(0,_.jsx)("span",{className:"pu-distance-value",children:ut(i)})]})]})]})]})]})})(Ue)]})})]}),!a&&"analysis"===C&&(0,_.jsxs)("div",{id:"dispatch-analysis",children:[(0,_.jsx)("div",{className:"da-picker-row",children:Fe.map((e=>{var s;const a=z[e.key],t=D===e.key,i=!1===(null===a||void 0===a||null===(s=a.data)||void 0===s?void 0:s.success),r=i?"#fee2e2":a?"".concat(e.color,"22"):"#f1f5f9",n=i?"#dc2626":a?e.color:"#64748b",l=t?"Loading\u2026":i?"! Failed":a?"\u2713 ".concat(a.fetchedAt):"Fetch",c=L===e.key;return(0,_.jsxs)("button",{type:"button",className:"da-picker ".concat(a?"has-data":""," ").concat(t?"is-loading":""," ").concat(c?"is-active":""),onClick:()=>!t&&B(e.key),style:{borderColor:c?e.color:i?"#fecaca":a?e.border:"#e2e8f0",background:i?"#fef2f2":a?e.bg:"#ffffff",boxShadow:c?"0 0 0 2px ".concat(e.color,"33"):void 0},disabled:t,children:[(0,_.jsxs)("div",{className:"da-picker-head",children:[(0,_.jsx)("div",{className:"da-picker-badge",style:{background:"".concat(e.color,"22"),color:e.color},children:e.label[0]}),(0,_.jsxs)("div",{className:"da-picker-meta",children:[(0,_.jsx)("div",{className:"da-picker-name",children:e.label}),(0,_.jsx)("div",{className:"da-picker-range",children:e.timeRange})]}),(0,_.jsx)("span",{className:"da-picker-status",style:{background:r,color:n},children:l})]}),(0,_.jsx)("div",{className:"da-picker-sub",children:e.sub})]},e.key)}))}),((e,s,a)=>{if(!L)return(0,_.jsx)("div",{className:"da-empty",children:"Pick a batch above to view its efficiency analysis."});const t=Fe.find((e=>e.key===L)),r=z[L],n=D===L;if(n&&!r)return(0,_.jsxs)("div",{className:"da-empty",children:["Loading ",t.label," batch\u2026"]});if(!r)return null;const l=r.data||{};var c,d;if(!1===l.success)return(0,_.jsxs)("div",{className:"da-result-card da-result-card-error",style:{borderColor:"#fecaca",borderTopColor:"#ef4444"},children:[(0,_.jsxs)("div",{className:"da-result-head",children:[(0,_.jsxs)("div",{children:[(0,_.jsxs)("div",{className:"da-result-title",children:[t.label," Batch"]}),(0,_.jsxs)("div",{className:"da-result-sub",children:[t.timeRange," \xb7 Fetched at ",r.fetchedAt]})]}),(0,_.jsx)("button",{type:"button",className:"da-result-refresh",title:"Retry",onClick:()=>B(L),disabled:n,style:{background:"#fee2e2",color:"#dc2626"},children:(0,_.jsx)(S.joZ,{})})]}),(0,_.jsxs)("div",{className:"da-error",children:[(0,_.jsxs)("div",{className:"da-error-title",children:[(0,_.jsx)(S.ItP,{}),(0,_.jsx)("span",{children:(null===l||void 0===l||null===(c=l.error)||void 0===c?void 0:c.code)||"Request failed"})]}),(0,_.jsx)("div",{className:"da-error-msg",children:(null===l||void 0===l||null===(d=l.error)||void 0===d?void 0:d.message)||"The server returned an error."}),(null===l||void 0===l?void 0:l.request_id)&&(0,_.jsxs)("div",{className:"da-error-meta",children:["request_id: ",l.request_id]})]})]});const o=l.fleet_summary||{},u=Array.isArray(l.rider_timelines)?l.rider_timelines:[],m=Array.isArray(l.substitution_opportunities)?l.substitution_opportunities:[],p=l.top_recommendation,h=!(!p||!p.idle_rider_name&&!p.idle_rider_id),v=!!(p&&p.action&&"none"!==p.action&&h),x=l.window||{},j=(e,s)=>{const a=String(null!==e&&void 0!==e?e:"").trim();if(!a)return s||"\u2014";const t="string"===typeof s&&/^Rider\s+\d+$/i.test(s.trim()),i=Array.isArray(La)?La.find((e=>String(e.id)===a)):null;if(i&&i.riderName)return i.riderName;const r=Array.isArray(Ca)?Ca.find((e=>String(e.id)===a)):null;return r&&r.riderName?r.riderName:!t&&s?s:"Rider ".concat(a)},f=Ce(o.fleet_start),g=Ce(o.fleet_done),N=null!=f&&null!=g&&g>f?g-f:null,b=parseFloat(o.avg_utilisation_pct),y=Number.isFinite(b)?b:null,k=null==y?"unknown":y>=85?"good":y>=70?"ok":"low",w="good"===k?"#10b981":"ok"===k?"#f59e0b":"low"===k?"#ef4444":"#94a3b8",F=(e=>{let{assessment:s,spreadMin:a,stdev:t}=e;const i=String(s||"").toLowerCase();return/high imbalance|severe|critical/.test(i)||/imbalance|recommend/.test(i)||null!=a&&a>30||null!=t&&t>1?"warn":/balanced|excellent|good/.test(i)?"success":"info"})({assessment:null===p||void 0===p?void 0:p.fleet_balance_assessment,spreadMin:parseFloat(o.finish_time_spread_minutes),stdev:parseFloat(o.load_balance_stdev)}),M=u.map((e=>{const s=Ce(e.started_at),a=Ce(e.finished_at);let t=0,r=100;null!=f&&N&&(null!=s&&(t=Math.max(0,Math.min(100,(s-f)/N*100))),null!=a&&(r=Math.max(0,Math.min(100,(a-f)/N*100))));const n=Math.max(0,r-t),l=parseFloat(e.active_minutes),c=parseFloat(e.idle_minutes),d=(Number.isFinite(l)?l:0)+(Number.isFinite(c)?c:0),o=d>0?l/d*100:y,u=null==o?"unknown":o>=85?"good":o>=70?"ok":"low",m="good"===u?"#10b981":"ok"===u?"#f59e0b":"low"===u?"#ef4444":"#94a3b8",p=j(e.userid,e.name);return(0,i.A)((0,i.A)({},e),{},{displayName:p,_startPct:t,_endPct:r,_activePct:n,_riderUtilPct:o,_riderColor:m})}));return M.sort(((e,s)=>(Ce(s.finished_at)||0)-(Ce(e.finished_at)||0))),(0,_.jsxs)("div",{className:"da-detail",children:[(0,_.jsxs)("div",{className:"da-detail-head",style:{borderTopColor:t.color,background:t.bg},children:[(0,_.jsxs)("div",{children:[(0,_.jsxs)("div",{className:"da-detail-title",children:[t.label," Batch",(0,_.jsxs)("span",{className:"da-detail-sub-inline",children:[l.date?" \xb7 ".concat(l.date):"",x.from&&x.to?" \xb7 ".concat(x.from," \u2013 ").concat(x.to):""]})]}),(0,_.jsxs)("div",{className:"da-detail-sub",children:["Fetched at ",r.fetchedAt," \xb7 Input deliveries: ",null!==(e=l.input_delivery_count)&&void 0!==e?e:"\u2014"]})]}),(0,_.jsxs)("div",{className:"da-detail-actions",children:[(0,_.jsxs)("span",{className:"da-live-tag ".concat(n?"is-active":""),title:"Auto-refreshing every ".concat(Math.round(15),"s"),children:[(0,_.jsx)("span",{className:"da-live-dot"}),"Live \xb7 ",Math.round(15),"s"]}),(0,_.jsx)("button",{type:"button",className:"da-result-refresh",title:"Refresh now",onClick:()=>{P((e=>{const s=(0,i.A)({},e);return delete s[L],s})),O.mutate({batch:L,tenantId:916})},disabled:n,style:{background:"".concat(t.color,"22"),color:t.color},children:(0,_.jsx)(S.joZ,{})})]})]}),(0,_.jsx)("div",{className:"da-section",children:(0,_.jsxs)("div",{className:"da-hero-row",children:[(0,_.jsxs)("div",{className:"da-hero-card",children:[(0,_.jsx)("div",{className:"da-hero-icon",style:{background:"#6625821f",color:"#662582"},children:(0,_.jsx)(S.aEx,{})}),(0,_.jsx)("div",{className:"da-hero-value",children:Me(o.total_orders)}),(0,_.jsx)("div",{className:"da-hero-label",children:"Total Orders"}),null!=l.input_delivery_count&&l.input_delivery_count!==o.total_orders&&(0,_.jsxs)("div",{className:"da-hero-sub",children:[l.input_delivery_count," input"]})]}),(0,_.jsxs)("div",{className:"da-hero-card",children:[(0,_.jsx)("div",{className:"da-hero-icon",style:{background:"#0ea5e91f",color:"#0ea5e9"},children:(0,_.jsx)(S.GQB,{})}),(0,_.jsx)("div",{className:"da-hero-value",children:Me(o.total_riders)}),(0,_.jsx)("div",{className:"da-hero-label",children:"Active Riders"}),null!=o.orders_per_rider_avg&&(0,_.jsxs)("div",{className:"da-hero-sub",children:[o.orders_per_rider_avg," avg orders / rider"]})]}),(0,_.jsxs)("div",{className:"da-hero-card",children:[(0,_.jsx)("div",{className:"da-hero-icon",style:{background:"#8b5cf61f",color:"#8b5cf6"},children:(0,_.jsx)(S.XT0,{})}),(0,_.jsxs)("div",{className:"da-hero-value",children:[null!=o.total_duration_minutes?"".concat(o.total_duration_minutes):"\u2014",null!=o.total_duration_minutes&&(0,_.jsx)("span",{className:"da-hero-unit",children:" min"})]}),(0,_.jsx)("div",{className:"da-hero-label",children:"Fleet Window"}),o.fleet_start&&o.fleet_done&&(0,_.jsxs)("div",{className:"da-hero-sub",children:[o.fleet_start," \u2192 ",o.fleet_done]})]})]})}),(0,_.jsxs)("div",{className:"da-section",children:[(0,_.jsx)("div",{className:"da-section-label",children:"Fleet Health"}),(0,_.jsxs)("div",{className:"da-health-row",children:[(0,_.jsxs)("div",{className:"da-health-card",children:[(0,_.jsx)("div",{className:"da-ring",style:{"--ring-color":w,"--ring-pct":null!=y?Math.max(0,Math.min(100,y)):0},children:(0,_.jsxs)("span",{className:"da-ring-num",children:[null!=y?"".concat(y.toFixed(0)):"\u2014",null!=y&&(0,_.jsx)("span",{className:"da-ring-unit",children:"%"})]})}),(0,_.jsxs)("div",{className:"da-health-meta",children:[(0,_.jsx)("div",{className:"da-health-label",children:"Avg Utilisation"}),(0,_.jsx)("div",{className:"da-health-sub",style:{color:w},children:"good"===k?"Strong":"ok"===k?"Moderate":"low"===k?"Low":"\u2014"})]})]}),(0,_.jsxs)("div",{className:"da-health-card da-health-card-stat",children:[(0,_.jsx)("div",{className:"da-health-value",children:null!=o.load_balance_stdev?parseFloat(o.load_balance_stdev).toFixed(2):"\u2014"}),(0,_.jsx)("div",{className:"da-health-label",children:"Load Balance \u03c3"}),(0,_.jsx)("div",{className:"da-health-sub",children:null!=o.load_balance_stdev?parseFloat(o.load_balance_stdev)>1?"Uneven workload":"Workload balanced":"Stdev of orders / rider"})]}),(0,_.jsxs)("div",{className:"da-health-card da-health-card-stat",children:[(0,_.jsxs)("div",{className:"da-health-value",children:[null!=o.finish_time_spread_minutes?"".concat(o.finish_time_spread_minutes):"\u2014",null!=o.finish_time_spread_minutes&&(0,_.jsx)("span",{className:"da-health-unit",children:" min"})]}),(0,_.jsx)("div",{className:"da-health-label",children:"Finish Spread"}),(0,_.jsx)("div",{className:"da-health-sub",children:null!=o.finish_time_stdev_minutes?"\u03c3 ".concat(parseFloat(o.finish_time_stdev_minutes).toFixed(1)," min"):"First \u2192 last finish"})]}),(0,_.jsxs)("div",{className:"da-health-card da-health-card-stat",children:[(0,_.jsxs)("div",{className:"da-health-value",children:[null!=o.avg_active_minutes?"".concat(parseFloat(o.avg_active_minutes).toFixed(0)):"\u2014",null!=o.avg_active_minutes&&(0,_.jsx)("span",{className:"da-health-unit",children:" min"})]}),(0,_.jsx)("div",{className:"da-health-label",children:"Avg Active"}),(0,_.jsx)("div",{className:"da-health-sub",children:"Per rider, this batch"})]})]})]}),(0,_.jsxs)("div",{className:"da-section",children:[(0,_.jsx)("div",{className:"da-section-label",children:"Top Recommendation"}),v?(0,_.jsxs)("div",{className:"da-rec-banner is-action",children:[(0,_.jsx)("div",{className:"da-rec-banner-icon",children:(0,_.jsx)(S.DX0,{})}),(0,_.jsxs)("div",{className:"da-rec-banner-body",children:[(0,_.jsxs)("div",{className:"da-rec-head",children:[(0,_.jsx)("div",{className:"da-rec-action",children:(0,_.jsx)("span",{children:(p.action||"recommendation").replaceAll("_"," ")})}),null!=p.fleet_improvement_minutes&&(0,_.jsxs)("span",{className:"da-rec-improve",style:p.fleet_improvement_minutes>0?{background:"#dcfce7",color:"#166534"}:{background:"#f1f5f9",color:"#475569"},children:[p.fleet_improvement_minutes>0?"\u2191":"\u2022"," Fleet improves by ",p.fleet_improvement_minutes," min"]})]}),(0,_.jsxs)("div",{className:"da-rec-line",children:[(0,_.jsx)("strong",{children:j(p.idle_rider_id,p.idle_rider_name)}),p.primary_kitchen&&(0,_.jsxs)(_.Fragment,{children:[" \xb7 primary kitchen ",(0,_.jsx)("strong",{children:p.primary_kitchen})]}),p.second_kitchen&&(0,_.jsxs)(_.Fragment,{children:[" \u2192 also serve ",(0,_.jsx)("strong",{children:p.second_kitchen})," after ",p.second_kitchen_dispatch_after||"\u2014"]})]}),p.description&&(0,_.jsx)("div",{className:"da-rec-desc",children:p.description}),(null===p||void 0===p?void 0:p.fleet_balance_assessment)&&(0,_.jsx)("div",{className:"da-rec-assess",children:p.fleet_balance_assessment}),(null===(s=p.activate_when)||void 0===s||null===(a=s.rules)||void 0===a?void 0:a.length)>0&&(0,_.jsxs)("div",{className:"da-rec-rules",children:[(0,_.jsxs)("div",{className:"da-rec-rules-head",children:["Activate when (",p.activate_when.condition||"AND","):"]}),p.activate_when.rules.map(((e,s)=>(0,_.jsxs)("div",{className:"da-rec-rule",children:[(0,_.jsxs)("code",{children:[e.field," ",e.operator," ",e.value]}),e.reason&&(0,_.jsxs)("span",{className:"da-rec-rule-why",children:[" \u2014 ",e.reason]})]},s)))]})]})]}):(0,_.jsxs)("div",{className:"da-rec-banner is-".concat(F),children:[(0,_.jsx)("div",{className:"da-rec-banner-icon",children:"warn"===F?(0,_.jsx)(S.Wux,{}):"success"===F?(0,_.jsx)(S.mU9,{}):(0,_.jsx)(S.DX0,{})}),(0,_.jsxs)("div",{className:"da-rec-banner-body",children:[(0,_.jsx)("div",{className:"da-rec-action",children:(0,_.jsx)("span",{children:"warn"===F?"Fleet imbalance detected \u2014 no feasible substitution":"success"===F?"Fleet ran balanced \u2014 no reassignment needed":"No action recommended"})}),(null===p||void 0===p?void 0:p.reason)&&(0,_.jsx)("div",{className:"da-rec-desc",children:p.reason}),(null===p||void 0===p?void 0:p.fleet_balance_assessment)&&(0,_.jsx)("div",{className:"da-rec-assess",children:p.fleet_balance_assessment})]})]})]}),M.length>0&&(0,_.jsxs)("div",{className:"da-section",children:[(0,_.jsxs)("div",{className:"da-section-label",children:["Rider Timelines ",(0,_.jsxs)("span",{className:"da-section-count",children:["(",M.length,")"]}),(0,_.jsx)("span",{className:"da-section-hint",children:"Sorted by latest finish \u2014 bottleneck riders first"})]}),(0,_.jsxs)("div",{className:"da-gantt-axis",children:[(0,_.jsx)("span",{children:o.fleet_start||"\u2014"}),(0,_.jsx)("span",{className:"da-gantt-axis-mid",children:null!=o.total_duration_minutes?"".concat(o.total_duration_minutes," min batch"):"Batch window"}),(0,_.jsx)("span",{children:o.fleet_done||"\u2014"})]}),(0,_.jsx)("div",{className:"da-timeline-list",children:M.map((e=>{var s,a,t;const i="active"===String(e.status||"").toLowerCase(),r=null!==(s=e.completed_orders)&&void 0!==s?s:e.order_count,n=null!==(a=e.pending_orders)&&void 0!==a?a:0,l=null!=r&&e.order_count>0?Math.max(0,Math.min(100,r/e.order_count*100)):0,c=null!=e.idle_minutes&&e.idle_minutes>30,d=null!=e.kitchen_confidence&&e.kitchen_confidence<.7;return(0,_.jsxs)("div",{className:"da-timeline-card",children:[(0,_.jsxs)("div",{className:"da-timeline-top",children:[(0,_.jsxs)("div",{className:"da-timeline-name",children:[(0,_.jsx)(S.aVM,{style:{color:e._riderColor}}),(0,_.jsx)("span",{title:e.name&&e.name!==e.displayName?"API name: ".concat(e.name):void 0,children:e.displayName}),(0,_.jsxs)("span",{className:"da-timeline-id",children:["#",e.userid]})]}),(0,_.jsx)("span",{className:"da-pill ".concat(i?"is-active":"is-idle"),children:e.status})]}),(0,_.jsxs)("div",{className:"da-gantt-row",children:[(0,_.jsxs)("div",{className:"da-gantt-track",title:"".concat(e.started_at," \u2192 ").concat(e.finished_at),children:[(0,_.jsxs)("div",{className:"da-gantt-fill",style:{left:"".concat(e._startPct,"%"),width:"".concat(Math.max(2,e._activePct),"%"),background:e._riderColor},children:[(0,_.jsx)("span",{className:"da-gantt-fill-start",children:e.started_at}),(0,_.jsx)("span",{className:"da-gantt-fill-end",children:e.finished_at})]}),e._endPct<99&&(0,_.jsx)("div",{className:"da-gantt-idle",style:{left:"".concat(e._endPct,"%"),width:"".concat(100-e._endPct,"%")},title:"Idle ".concat(e.idle_minutes," min after finishing")})]}),(0,_.jsx)("span",{className:"da-gantt-util",style:{background:"".concat(e._riderColor,"22"),color:e._riderColor},title:"Per-rider utilisation: ".concat(null!=e._riderUtilPct?e._riderUtilPct.toFixed(0):"\u2014","%"),children:null!=e._riderUtilPct?"".concat(e._riderUtilPct.toFixed(0),"%"):"\u2014"})]}),(0,_.jsxs)("div",{className:"da-timeline-mid",children:[e.kitchen?(0,_.jsxs)("span",{className:"da-chip",title:null!=e.kitchen_confidence?"Kitchen confidence: ".concat((100*e.kitchen_confidence).toFixed(0),"%"):void 0,children:[(0,_.jsx)(S.NtI,{})," ",e.kitchen,null!=e.kitchen_confidence&&(0,_.jsx)("span",{className:"da-conf-dot ".concat(d?"is-low":"is-ok"),"aria-label":"Confidence ".concat((100*e.kitchen_confidence).toFixed(0),"%")})]}):(0,_.jsxs)("span",{className:"da-chip",style:{background:"#f8fafc",color:"#64748b",borderColor:"#e2e8f0",borderStyle:"dashed"},title:"Solver did not identify a primary kitchen for this rider",children:[(0,_.jsx)(S.NtI,{})," Unassigned"]}),(0,_.jsxs)("span",{className:"da-chip da-chip-orders",title:"Completed ".concat(r," of ").concat(e.order_count),children:[(0,_.jsx)(S.gsJ,{}),(0,_.jsxs)("span",{className:"da-orders-label",children:[r,"/",e.order_count]}),(0,_.jsx)("span",{className:"da-orders-bar",children:(0,_.jsx)("span",{className:"da-orders-bar-fill",style:{width:"".concat(l,"%")}})}),n>0&&(0,_.jsxs)("span",{className:"da-orders-pending",children:[n," pending"]})]}),null!=e.pace_orders_per_hour&&(0,_.jsxs)("span",{className:"da-chip",title:"Delivery pace this batch",children:[(0,_.jsx)(S.BJM,{})," ",parseFloat(e.pace_orders_per_hour).toFixed(1)," / hr"]}),null!=e.active_minutes&&(0,_.jsxs)("span",{className:"da-chip",title:"Time actively delivering",children:[(0,_.jsx)(S.pWE,{})," ",parseFloat(e.active_minutes).toFixed(0)," min active"]}),(0,_.jsxs)("span",{className:"da-chip",style:c?{background:"#fef3c7",color:"#92400e",borderColor:"#fde68a"}:void 0,title:"Idle time after this rider finished \u2014 fleet kept running",children:[(0,_.jsx)(S.VP9,{})," ",null!==(t=e.idle_minutes)&&void 0!==t?t:0," min idle"]}),null!=e.free_window_minutes&&(0,_.jsxs)("span",{className:"da-chip",style:e.free_window_minutes>=30?{background:"#ecfdf5",color:"#065f46",borderColor:"#a7f3d0"}:e.free_window_minutes>0?{background:"#fefce8",color:"#854d0e",borderColor:"#fde68a"}:{background:"#fef2f2",color:"#991b1b",borderColor:"#fecaca"},title:"Free window before the next batch \u2014 capacity available for a follow-up run",children:[(0,_.jsx)(S.pWE,{})," ",parseFloat(e.free_window_minutes).toFixed(0)," min free"]})]})]},e.userid)}))})]}),m.length>0&&(0,_.jsxs)("div",{className:"da-section",children:[(0,_.jsxs)("div",{className:"da-section-label",children:["Substitution Opportunities ",(0,_.jsxs)("span",{className:"da-section-count",children:["(",m.length,")"]})]}),(0,_.jsx)("div",{className:"da-sub-list",children:m.map(((e,s)=>{var a;const t=e.idle_rider||{},i=e.most_relieved_rider||{},r=null!==(a=e.fleet_improvement_minutes)&&void 0!==a?a:0;return(0,_.jsxs)("div",{className:"da-sub-card",children:[(0,_.jsxs)("div",{className:"da-sub-head",children:[(0,_.jsxs)("div",{className:"da-sub-title",children:[(0,_.jsx)("strong",{children:j(t.userid,t.name)})," ","covers ",(0,_.jsx)("strong",{children:e.target_kitchen})]}),(0,_.jsxs)("span",{className:"da-sub-improve",style:r>0?{background:"#dcfce7",color:"#166534"}:{background:"#f1f5f9",color:"#475569"},children:["Fleet ",r>0?"\u2191":"\u2022"," ",r," min"]})]}),(0,_.jsxs)("div",{className:"da-sub-meta",children:[(0,_.jsxs)("span",{className:"da-chip",children:[(0,_.jsx)(S.xI$,{})," ",e.travel_to_kitchen_km," km"]}),(0,_.jsxs)("span",{className:"da-chip",children:[(0,_.jsx)(S.pWE,{})," ",e.travel_to_kitchen_minutes," min travel"]}),(0,_.jsxs)("span",{className:"da-chip",children:[(0,_.jsx)(S.VP9,{})," arrives ",e.arrive_at_kitchen]}),(0,_.jsxs)("span",{className:"da-chip",children:[(0,_.jsx)(S.gsJ,{})," ",e.total_orders_transferred," orders"]}),(0,_.jsxs)("span",{className:"da-chip",children:[(0,_.jsx)(S.xI$,{})," +",e.extra_km_for_idle_rider," km for idle rider"]})]}),(i.name||null!=i.userid)&&(0,_.jsxs)("div",{className:"da-sub-relieved",children:[(0,_.jsx)(S.imn,{}),"Most relieved: ",(0,_.jsx)("strong",{children:j(i.userid,i.name)})," ","(",i.original_finish," \u2192 ",i.new_finish,", saves"," ",i.time_saved_minutes," min)"]}),Array.isArray(e.orders_to_transfer)&&e.orders_to_transfer.length>0&&(0,_.jsxs)("div",{className:"da-sub-transfers",children:[(0,_.jsx)("div",{className:"da-sub-transfers-head",children:"Orders transferred"}),e.orders_to_transfer.map((e=>{var s;const a=null!==(s=e.improvement_minutes)&&void 0!==s?s:0;return(0,_.jsxs)("div",{className:"da-transfer-row",children:[(0,_.jsxs)("span",{className:"da-transfer-id",children:["#",e.deliveryid]}),(0,_.jsxs)("span",{className:"da-transfer-from",children:["from ",j(e.from_rider_id||e.from_userid,e.from_rider_name)]}),(0,_.jsxs)("span",{className:"da-transfer-time",children:[e.original_delivery_time," \u2192 ",e.estimated_delivery_time]}),(0,_.jsxs)("span",{className:"da-transfer-imp",style:a>0?{background:"#dcfce7",color:"#166534"}:a<0?{background:"#fee2e2",color:"#991b1b"}:{background:"#f1f5f9",color:"#475569"},children:[a>0?"+":"",a," min"]})]},e.deliveryid)}))]})]},s)}))})]})]})})()]}),R&&(0,_.jsx)("div",{className:"da-pos-modal-backdrop",role:"dialog","aria-modal":"true","aria-label":"Last known position of ".concat(R.name),onClick:e=>{e.target===e.currentTarget&&I(null)},children:(0,_.jsxs)("div",{className:"da-pos-modal-card",children:[(0,_.jsxs)("div",{className:"da-pos-modal-head",children:[(0,_.jsxs)("div",{className:"da-pos-modal-title-wrap",children:[(0,_.jsx)("div",{className:"da-pos-modal-avatar",style:{background:"".concat(R.color||"#662582","22"),color:R.color||"#662582"},children:(0,_.jsx)(S.aVM,{})}),(0,_.jsxs)("div",{children:[(0,_.jsx)("div",{className:"da-pos-modal-title",children:R.name}),(0,_.jsxs)("div",{className:"da-pos-modal-sub",children:["#",R.userid,R.kitchen&&(0,_.jsxs)(_.Fragment,{children:[" \xb7 ",R.kitchen]}),R.finished_at&&(0,_.jsxs)(_.Fragment,{children:[" \xb7 finished ",R.finished_at]})]})]})]}),(0,_.jsxs)("div",{className:"da-pos-modal-actions",children:[(0,_.jsx)("span",{className:"da-pill ".concat("active"===String(R.status||"").toLowerCase()?"is-active":"is-idle"),children:R.status||"\u2014"}),(0,_.jsx)("button",{type:"button",className:"da-pos-modal-close","aria-label":"Close",onClick:()=>I(null),children:(0,_.jsx)(S.m6K,{})})]})]}),(0,_.jsx)("div",{className:"da-pos-modal-map",children:(0,_.jsxs)(d.W,{center:[R.lat,R.lon],zoom:13,scrollWheelZoom:!0,style:{width:"100%",height:"100%"},whenReady:e=>{const s=e.target;requestAnimationFrame((()=>s.invalidateSize())),setTimeout((()=>s.invalidateSize()),260)},children:[(0,_.jsx)(o.e,{attribution:'\xa9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),(0,_.jsx)(l.p,{position:[R.lat,R.lon],children:(0,_.jsxs)(m.z,{children:[(0,_.jsx)("strong",{children:R.name}),(0,_.jsx)("br",{}),R.lat.toFixed(6),", ",R.lon.toFixed(6)]})})]},"".concat(R.userid,"-").concat(R.lat,"-").concat(R.lon))}),(0,_.jsxs)("div",{className:"da-pos-modal-foot",children:[(0,_.jsxs)("div",{className:"da-pos-modal-coord",children:[(0,_.jsx)(S.gwi,{}),(0,_.jsxs)("span",{children:[(0,_.jsx)("strong",{children:"Lat:"})," ",R.lat.toFixed(6),(0,_.jsx)("span",{className:"da-pos-modal-sep",children:"\xb7"}),(0,_.jsx)("strong",{children:"Lon:"})," ",R.lon.toFixed(6)]})]}),(0,_.jsx)("button",{type:"button",className:"da-pos-modal-copy",onClick:()=>{var e,s;const a="".concat(R.lat.toFixed(6),", ").concat(R.lon.toFixed(6));null!==(e=navigator)&&void 0!==e&&null!==(s=e.clipboard)&&void 0!==s&&s.writeText&&navigator.clipboard.writeText(a)},title:"Copy coordinates",children:"Copy"})]})]})})]})}}}]); |