1import{d as ge,k as I,A as Rs,B as Ns,j as M,c as n,o,w as Le,a,g as c,u as t,t as i,F as U,f as Z,s as T,n as B,i as At,G as Qt,H as Bs,D as Ue,p as Os,e as F,q as S,l as de,b as y,y as Ia,r as ft,aJ as Zr,K as ht,v as nt,z as _e,aK as Jr,m as ea,T as Xr,N as Ps,aI as Ts}from"./vue-runtime-BQRJclI-.js";import{_ as Yr}from"./EditableName.vue_vue_type_script_setup_true_lang-DozWQGpb.js";import{_ as Qr}from"./BrandMark.vue_vue_type_script_setup_true_lang-D4DEn3kG.js";import{t as e}from"./index-DW7t84mx.js";import{t as ut,C as Me,a as Vs,v as ta,a0 as el,O as $e,R as Ks,U as tl,g as Ma,a7 as Hs,c as al,S as sl,e as rl,X as Zt,Y as Ae}from"./site-icons-BpOMQBK2.js";import{f as Qe,a as As}from"./format-B5sEYlvT.js";import{b as Be}from"./pitch-JtXuXVFl.js";import{C as ll}from"./chevron-up-DJgoHbJD.js";import{C as Ws}from"./chevron-left-DA0m0rEH.js";import{C as il}from"./chevron-right-Bi-N5nf3.js";import{c as ce}from"./lucide-core-CAjyj2By.js";import{T as _t}from"./trash-2-KZyNtq4H.js";import{N as La}from"./navigation-Di2RhqYJ.js";import{f as Fa,e as qa,d as Ea,I as ol,_ as Da,c as za,a as Ua,b as Ra}from"./DialogTitle.vue_vue_type_script_setup_true_lang-CGM6RULP.js";import{u as Gs,_ as nl}from"./AppToast.vue_vue_type_script_setup_true_lang-DT3BCsva.js";import{_ as Tt}from"./index-Cb2RBfEp.js";import{_ as Na}from"./DialogFooter.vue_vue_type_script_setup_true_lang-XeiNs2sS.js";import{_ as Ba}from"./DialogHeader.vue_vue_type_script_setup_true_lang-D5b9EgAf.js";import{a as Fe,A as Ne,P as Is}from"./api-EKzEAybP.js";import{P as ul}from"./plus-BmU2lAth.js";import{_ as dl}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-3om2DaNz.js";import{_ as cl}from"./Skeleton.vue_vue_type_script_setup_true_lang-C_i3UOyk.js";import{r as ml,a as vl,u as pl,f as fl,s as bl,i as Ms,c as hl}from"./useMapMeasure-Czy3C57o.js";import{t as Zs}from"./analytics-n60hlbQi.js";import{n as _l,m as gl,P as pt,W as Jt}from"./app-CEZoZvWt.js";import{P as yl}from"./pencil-BadbKR0h.js";import{E as Aa}from"./eraser-CIcWGaNI.js";import{R as xl,L as kl}from"./rotate-cw-BTd6X7it.js";import{I as wl}from"./image-off-UdwBIqfs.js";import{E as $l}from"./ellipsis-ClGa5zuR.js";import"./locale-CEc2pebt.js";import"./index-BtjU-9jb.js";import"./http-BoUr6vaJ.js";import"./proj-CGCk8-ys.js";import"./extent-FQQ1QoY9.js";import"./math-CyWxaw3r.js";import"./style-nNjI73pk.js";import"./size-BjaZOeMI.js";import"./asserts-D9gbC1vH.js";import"./color-DYY6VPRH.js";import"./LineString-DXyGJsRa.js";import"./deflate-XyVizGmx.js";import"./transform-DkhpBCjz.js";import"./transform-CiY_2Xgg.js";import"./inflate-C5hdtzkn.js";import"./interpolate-C1cKemnf.js";import"./intersectsextent-WFS-g1rJ.js";import"./contains-HVZYTvPx.js";import"./length-BvxKE3Zw.js";import"./simplify-CHaq-a4m.js";import"./Map-B3xQv-qq.js";import"./Collection-BUTrf1pD.js";import"./TileState-DENk7BAX.js";import"./View-BSo7EHvo.js";import"./common-DrPrLMBY.js";import"./Point-MMt3H3Bi.js";import"./orient-CFBgnq9Y.js";import"./Layer-B-v-pdlp.js";import"./BaseVector-5uDaHK8g.js";import"./index-jYV8uuws.js";import"./Feature-GT9KMF6a.js";import"./Vector-S7qQHxbr.js";import"./Layer-5Cbe4xmd.js";import"./Vector-B7w3j7ca.js";import"./Source-j3vdsU0D.js";import"./GeoJSON-DnZsb_Np.js";import"./XYZ-T0IOYpM6.js";import"./Tile-5MuYaq7-.js";import"./Tile-DnAliNbJ.js";const Js=ce("CircleHelpIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const Ls=ce("CircleXIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);const Cl=ce("CornerUpLeftIcon",[["polyline",{points:"9 14 4 9 9 4",key:"881910"}],["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}]]);const Fs=ce("Grid2x2Icon",[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 12h18",key:"1i2n21"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]);const Sl=ce("HandIcon",[["path",{d:"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2",key:"1fvzgz"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2",key:"1kc0my"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8",key:"10h0bg"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]]);const jl=ce("InfoIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);const qs=ce("MagnetIcon",[["path",{d:"m6 15-4-4 6.75-6.77a7.79 7.79 0 0 1 11 11L13 22l-4-4 6.39-6.36a2.14 2.14 0 0 0-3-3L6 15",key:"1i3lhw"}],["path",{d:"m5 8 4 4",key:"j6kj7e"}],["path",{d:"m12 15 4 4",key:"lnac28"}]]);const Pl=ce("MousePointer2Icon",[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.5
179 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]]);const Es=ce("PenToolIcon",[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z",key:"nt11vn"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18",key:"15qc1e"}],["path",{d:"m2.3 2.3 7.286 7.286",key:"1wuzzi"}],["circle",{cx:"11",cy:"11",r:"2",key:"xmgehs"}]]);const Ds=ce("Redo2Icon",[["path",{d:"m15 14 5-5-5-5",key:"12vg1m"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",key:"6uklza"}]]);const Tl=ce("RotateCcwIcon",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);const Yt=ce("Rows3Icon",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M21 9H3",key:"1338ky"}],["path",{d:"M21 15H3",key:"9uk58r"}]]);const Xs=ce("ScissorsIcon",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]]);const bt=ce("SplineIcon",[["circle",{cx:"19",cy:"5",r:"2",key:"mhkx31"}],["circle",{cx:"5",cy:"19",r:"2",key:"v8kfzx"}],["path",{d:"M5 17A12 12 0 0 1 17 5",key:"1okkup"}]]);const Al=ce("SplitIcon",[["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"M8 3H3v5",key:"15dfkv"}],["path",{d:"M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3",key:"1qrqzj"}],["path",{d:"m15 9 6-6",key:"ko1vev"}]]);const zs=ce("Undo2Icon",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),Il={class:"vr-rise shadow-hud w-full max-w-md rounded-2xl border border-vr-line bg-vr-panel p-6"},Ml={class:"flex items-center gap-2.5"},Ll={class:"flex h-9 w-9 items-center justify-center rounded-lg bg-vr-amber/15 text-vr-amber"},Fl={id:"measure-coach-title",class:"text-lg font-extrabold text-vr-text"},ql={class:"mt-4 space-y-3"},El={class:"mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-vr-raise text-xs font-bold text-vr-text"},Dl={class:"text-sm font-semibold text-vr-text"},zl={class:"text-[13px] leading-relaxed text-vr-dim"},Ul=ge({__name:"CoachOverlay",props:{tier:{},touch:{type:Boolean},aiAvailable:{type:Boolean}},emits:["dismiss"],setup(L,{emit:f}){const v=L,h=f,u=I(null);let C=null;const k=z=>{var O;z.key==="Escape"?h("dismiss"):z.key==="Tab"&&(z.preventDefault(),(O=u.value)==null||O.focus())};Rs(()=>{var z;C=document.activeElement instanceof HTMLElement?document.activeElement:null,window.addEventListener("keydown",k),(z=u.value)==null||z.focus()}),Ns(()=>{window.removeEventListener("keydown",k),C!=null&&C.isConnected&&C.focus()});const A=M(()=>v.tier==="free"?v.aiAvailable===!1?e("measure.coach_title_manual"):e("measure.coach_title_free"):v.touch?e("measure.coach_title_touch"):e("measure.coach_title_desktop")),H=M(()=>v.tier==="free"?v.aiAvailable===!1?v.touch?[{title:e("measure.coach_pick_tool"),body:e("measure.coach_pick_tool_body")},{title:e("measure.coach_delete_point"),body:e("measure.coach_delete_point_body")},{title:e("measure.coach_help_title"),body:e("measure.coach_help_body")}]:[{title:e("measure.coach_measure_tool"),body:e("measure.coach_measure_tool_body")},{title:e("measure.coach_delete_point"),body:e("measure.coach_delete_point_desktop_body")},{title:e("measure.coach_help_title"),body:e("measure.coach_help_keyboard_body")}]:[{title:e("measure.coach_free_1_title"),body:e("measure.coach_free_1_body")},{title:e("measure.coach_free_2_title"),body:e("measure.coach_free_2_body")},{title:e("measure.coach_help_title"),body:e("measure.coach_help_body")}]:v.touch?[{title:e("measure.coach_pick_tool"),body:e("measure.coach_pick_tool_body")},{title:e("measure.coach_delete_point"),body:e("measure.coach_delete_point_body")},{title:e("measure.coach_ai_title"),body:e("measure.coach_ai_touch_body")}]:[{title:e("measure.coach_measure_tool"),body:e("measure.coach_measure_tool_body")},{title:e("measure.coach_ai_title"),body:e("measure.coach_ai_desktop_body")},{title:e("measure.coach_help_title"),body:e("measure.coach_help_keyboard_body")}]);return(z,O)=>(o(),n("div",{class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-6 backdrop-blur-sm",role:"dialog","aria-modal":"true","aria-labelledby":"measure-coach-title",onClick:O[1]||(O[1]=Le(w=>h("dismiss"),["self"]))},[a("div",Il,[a("div",Ml,[a("div",Ll,[c(t(ut),{class:"h-5 w-5"})]),a("h2",Fl,i(A.value),1)]),a("ul",ql,[(o(!0),n(U,null,Z(H.value,(w,R)=>(o(),n("li",{key:R,class:"flex gap-3"}
1,[a("span",El,i(R+1),1),a("div",null,[a("p",Dl,i(w.title),1),a("p",zl,i(w.body),1)])]))),128))]),a("button",{ref_key:"dismissButton",ref:u,type:"button",class:"mt-5 flex h-11 w-full items-center justify-center gap-2 rounded-lg bg-vr-amber text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:O[0]||(O[0]=w=>h("dismiss"))},[c(t(Me),{class:"h-4 w-4"}),T(" "+i(t(e)("common.got_it")),1)],512)])]))}}),we=ge({__name:"HudPanel",props:{tone:{default:"default"},rounded:{default:"xl"}},setup(L){const f=L,v=M(()=>({default:"border-vr-line",ai:"border-vr-ai/50",warn:"border-vr-amber/50"})[f.tone]),h=M(()=>({lg:"rounded-lg",xl:"rounded-xl","2xl":"rounded-2xl"})[f.rounded]);return(u,C)=>(o(),n("div",{class:B(["shadow-hud pointer-events-auto border bg-vr-panel/95 backdrop-blur-md",[v.value,h.value]])},[At(u.$slots,"default")],2))}}),Rl=["data-hud-zone"],Pt=ge({__name:"HudZone",props:{zone:{}},setup(L){const f=L,v=M(()=>{switch(f.zone){case"tools":return"left-[var(--hud-safe-left)] top-[var(--hud-safe-top)] flex-col items-start";case"palette":return"left-1/2 top-[var(--hud-safe-top)] -translate-x-1/2 flex-col items-center";case"view":return"left-[var(--hud-safe-left)] bottom-[var(--hud-bottom-stack)] flex-col items-start";case"side":return"inset-x-0 bottom-[calc(var(--hud-bottombar-h)+env(safe-area-inset-bottom))] flex-col items-stretch lg:inset-x-auto lg:bottom-auto lg:right-[var(--hud-safe-right)] lg:top-[var(--hud-safe-top)] lg:max-h-[calc(100%_-_var(--hud-safe-top)_-_var(--hud-bottom-stack)_-_var(--hud-side-bottom-clear))] lg:items-end";case"status":default:return"left-1/2 bottom-[calc(var(--hud-bottom-stack)+3.75rem)] w-[calc(100%_-_1.5rem)] -translate-x-1/2 flex-col items-center lg:w-auto"}});return(h,u)=>(o(),n("div",{class:B(["vr-z-hud pointer-events-none absolute flex gap-[var(--hud-gap)]",v.value]),"data-hud-zone":h.zone},[At(h.$slots,"default")],10,Rl))}}),Nl={class:"flex h-[var(--hud-facet-drawer-h)] shrink-0 items-center justify-between gap-2 px-3 lg:h-auto lg:py-2.5"},Bl={class:"min-w-0"},Ol={class:"vr-hud-label text-vr-dim"},Vl={key:0,class:"truncate text-xs text-vr-text lg:hidden"},Kl={class:"font-semibold"},Hl={class:"text-vr-dim"},Wl=["title","aria-label","aria-expanded"],Gl={class:"shrink-0 border-t border-vr-line p-2"},Zl=["disabled","title"],Jl={class:"px-3 py-2 text-xs text-vr-amber","data-measure-pitch-brush":"",role:"status"},Xl={class:"px-3 py-2","data-measure-facet-selection":""},Yl={class:"vr-hud-meta truncate text-vr-dim"},Ql={class:"flex flex-col border-t border-vr-line py-1"},ei=["disabled"],ti=["disabled","title"],ai=["disabled"],si={class:"border-t border-vr-line py-1"},ri={class:"vr-hud-label px-3 pb-1 pt-1.5 text-vr-dim"},li=["data-measure-facet-label"],ii=["aria-pressed","onClick"],oi=["title","aria-label","onClick"],ni={class:"border-t border-vr-line py-1"},ui={class:"vr-hud-label px-3 pb-1 pt-1.5 text-vr-dim"},di=["data-measure-facet-row","data-current","data-active"],ci=["aria-pressed","onClick"],mi={key:0,class:"font-sans text-[10px] text-vr-dim"},vi={key:1,class:"font-sans text-[10px] text-vr-dim"},pi=["title","aria-label","onClick"],fi={class:"flex flex-wrap gap-1 border-t border-vr-line p-2"},bi={class:"text-[10px] opacity-70"},hi=ge({__name:"FacetToolsPanel",props:Qt({pitches:{},activePitch:{},facetLabels:{},selection:{},mode:{},lineEditor:{type:Boolean},canDeleteAll:{type:Boolean}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:Qt(["set-pitch","apply-pitch-all","delete-pitch","delete-all-pitches","delete-facet","toggle-label","apply-label-all","request-mode"],["update:collapsed"]),setup(L,{emit:f}){const v=L,h=Bs(L,"collapsed"),u=f,C=M(()=>v.selection!==null),k=M(()=>{var $;return(($=v.selection)==null?void 0:$.pitch)??null}),A=M(()=>{var $,D;return(($=v.selection)==null?void 0:$.pitch)??((D=v.selection)==null?void 0:D.resolvedPitch)??null}),H=M(()=>v.selection?`${v.selection.sectionName}${v.selection.facetLetter?` ${v.selection.facetLetter}`:""}`:e("measure.no_selection")),z=M(()=>v.selection?`${Be(A.value)} · ${Qe(v.selection.areaSqft)} ft²`:e("measure.select_facet_first")),O=$=>{var D;return((D=v.selection)==null?void 0:D.labels.includes($))??!1},w=I(null),R=new Map,_=($,D)=>{D instanceof HTMLElement?R.set($,D):R.delete($)},V=$=>{const D=w.value,x=R.get($);if(!D||!x)return;const K=x.offsetTop-D.offsetTop,me=K+x.offsetHeight;K<D.scrollTop?D.scrollTop=K:me>D.scrollTop+D.clientHeight&&(D.scrollTop=me-D.clientHeight)};Ue(()=>[v.activePitch,h.value],([$,D])=>{!$||D||Os(()=>V($))},{immediate:!0});const se=$=>v.mode==="pitch"&&v.activePitch===$?"bg-vr-amber/15 font-semibold text-vr-amber":"text-vr-text hover:bg-vr-raise",le="vr-tap flex min-h-10 w-full items-center gap-2 px-3 text-left text-xs font-medium text-vr-text transition hover:bg-vr-raise disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent",X="vr-tap-sq flex h-10 w-10 shrink-0 items-center justify-center text-vr-dim transition hover:bg-vr-raise hover:text-vr-amber focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60";return($,D)=>(o(),F(Pt,{zone:"side","data-measure-facet-panel":"","data-collapsed":h.value?"true":void 0},{default:S(()=>[c(we,{class:"pointer-events-auto flex min-h-0 w-full flex-col overflow-hidden rounded-b-none lg:w-[15.5rem] lg:rounded-b-xl"},{default:S(()=>[a("div",Nl,[a("div",Bl,[a("div",Ol,i(t(e)("measure.facet_tools")),1),h.value?(o(),n("div",Vl,[a("span",Kl,i(H.value),1),a("span",Hl," · "+i(z.value),1)])):y("",!0)]),a("button",{type:"button",class:"vr-tap-sq flex h-9 w-9 shrink-0 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",title:h.value?t(e)("measure.expand_panel"):t(e)("measure.collapse_panel"),"aria-label":h.value?t(e)("measure.expand_panel"):t(e)("measure.collapse_panel"),"aria-expanded":!h.value,"data-measure-facet-toggle":"",onClick:D[0]||(D[0]=x=>h.value=!h.value)},[h.value?(o(),F(t(ll),{key:0,class:"h-4 w-4 lg:hidden"})):(o(),F(t(Vs),{key:1,class:"h-4 w-4 lg:hidden"})),h.value?(o(),F(t(Ws),{key:2,class:"hidden h-4 w-4 lg:block"})):(o(),F(t(il),{key:3,class:"hidden h-4 w-4 lg:block"}))],8,Wl)]),de(a("div",Gl,[a("button",{type:"button",class:"flex min-h-11 w-full items-center justify-center gap-2 rounded-lg bg-vr-amber px-3 py-2 text-xs font-semibold text-vr-amberink transition hover:bg-vr-amberhi disabled:cursor-not-allowed disabled:opacity-40",disabled:!$.activePitch||!$.canDeleteAll,title:t(e)("measure.apply_pitch_all_roofs_hint"),"data-measure-pitch-all":"",onClick:D[1]||(D[1]=x=>$.activePitch&&u("apply-pitch-all",$.activePitch))},[c(t(Yt),{class:"h-4 w-4 shrink-0"}),T(" "+i($.activePitch?t(e)("measure.apply_pitch_all_roofs",{pitch:t(Be)($.activePitch)}):t(e)("measure.apply_pitch_all_roofs_choose")),1)],8,Zl)],512),[[Ia,!h.value]]),de(a("div",{ref_key:"listEl",ref:w,class:"vr-scroll relative flex max-h-[45dvh] min-h-0 flex-col overflow-y-auto border-t border-vr-line lg:max-h-none"},[a("div",Jl,i($.mode==="pitch"&&$.activePitch?t(e)("measure.pitch_brush_active",{pitch:t(Be)($.activePitch)}):t(e)("measure.pitch_brush_choose")),1),a("div",Xl,[a("div",{class:B(["truncate text-xs font-semibold",C.value?"text-vr-text":"text-vr-dim"])},i(H.value),3),a("div",Yl,i(z.value),1)]),a("div",Ql,[a("button",{type:"button",class:B(le),disabled:!C.value,"data-measure-facet-delete":"",onClick:D[2]||(D[2]=x=>u("delete-facet"))},[c(t(Ls),{class:"h-4 w-4 shrink-0 text-vr-dim"}),T(" "+i(t(e)("measure.delete_facet")),1)],8,ei),a("button",{type:"button",class:B(le),disabled:!C.value||k.value===null,title:t(e)("measure.delete_pitch_title"),"data-measure-facet-delete-pitch":"",onClick:D[3]||(D[3]=x=>u("delete-pitch"))},[c(t(Ls),{class:"h-4 w-4 shrink-0 text-vr-dim"}),T(" "+i(t(e)("measure.delete_pitch")),1)],8,ti),a("button",{type:"button",class:B(le),disabled:!$.canDeleteAll,"data-measure-facet-delete-all-pitches":"",onClick:D[4]||(D[4]=x=>u("delete-all-pitches"))},[c(t(_t),{class:"h-4 w-4 shrink-0 text-vr-dim"}),T(" "+i(t(e)("measure.delete_all_pitches")),1)],8,ai)]),a("div",si,[a("div",ri,i(t(e)("measure.labels")),1),(o(!0),n(U,null,Z($.facetLabels,x=>(o(),n("div",{key:x.key,class:"flex items-stretch","data-measure-facet-label":x.key},[a("button",{type:"button",class:B(["vr-tap flex min-h-10 min-w-0 flex-1 items-center px-3 text-left text-xs transition hover:bg-vr-raise",O(x.key)?"font-semibold text-vr-amber":"text-vr-text"]),"aria-pressed":O(x.key),onClick:K=>u("toggle-label",x.key)},i(x.label),11,ii),a("button",{type:"button",class:B(X),title:t(e)("measure.apply_label_all"),"aria-label":`${t(e)("measure.apply_label_all")}: ${x.label}`,onClick:K=>u("apply-label-all",x.key)},[c(t(Yt),{class:"h-3.5 w-3.5"})],8,oi)],8,li))),128))]),a("div",ni,[a("div",ui,i(t(e)("measure.pitch")),1),(o(!0),n(U,null,Z($.pitches,x=>(o(),n("div",{key:x,ref_for:!0,ref:K=>_(x,K),class:"flex items-stretch","data-measure-facet-row":x,"data-current":A.value===x?"true":void 0,"data-active":$.mode==="pitch"&&$.activePitch===x?"true":void 0},[a("button",{type:"button",class:B(["vr-tap flex min-h-10 min-w-0 flex-1 items-center gap-1.5 px-3 text-left font-mono text-xs transition",se(x)]),"aria-pressed":$.mode==="pitch"&&$.activePitch===x,onClick:K=>u("set-pitch",x)},[a("span",null,i(t(Be)(x)),1),x==="flat"?(o(),n("span",mi,i(t(e)("measure.pitch_flat_suffix")),1)):y("",!0),A.value===x&&k.value===null?(o(),n("span",vi,"("+i(t(e)("measure.pitch_inherited"))+")",1)):y("",!0)],10,ci),a("button",{type:"button",class:B(X),title:t(e)("measure.apply_pitch_all_facets"),"aria-label":`${t(e)("measure.apply_pitch_all_facets")}: ${t(Be)(x)}`,onClick:K=>u("apply-pitch-all",x)},[c(t(Yt),{class:"h-3.5 w-3.5"})],8,pi)],8,di))),128))]),a("div",fi,[$.lineEditor?(o(),n("button",{key:0,t
1ype:"button",class:B(["vr-tap flex min-h-9 items-center gap-1.5 rounded-lg px-2.5 text-xs font-semibold transition",$.mode==="cutout"?"bg-vr-ai text-vr-amberink":"text-vr-dim hover:bg-vr-raise"]),onClick:D[5]||(D[5]=x=>u("request-mode","cutout"))},[c(t(Xs),{class:"h-3.5 w-3.5"}),T(" "+i(t(e)("measure.tool_exclusion_outline")),1)],2)):y("",!0),a("button",{type:"button",class:B(["vr-tap flex min-h-9 items-center gap-1.5 rounded-lg px-2.5 text-xs font-semibold transition",$.mode==="direction"?"bg-vr-ai text-vr-amberink":"text-vr-dim hover:bg-vr-raise"]),onClick:D[6]||(D[6]=x=>u("request-mode","direction"))},[c(t(La),{class:"h-3.5 w-3.5"}),T(" "+i(t(e)("measure.slope_direction"))+" ",1),a("span",bi,i(t(e)("measure.optional")),1)],2)])],512),[[Ia,!h.value]])]),_:1})]),_:1},8,["data-collapsed"]))}}),_i={class:"vr-z-hud pointer-events-none absolute hidden lg:bottom-[var(--hud-bottom-stack)] lg:right-3 lg:flex"},gi=["title","aria-label"],yi={class:"vr-hud-label"},xi={class:"flex flex-col gap-1 p-2"},ki={class:"flex items-center justify-between gap-3"},wi={class:"vr-hud-label text-vr-dim"},$i=["title","aria-label"],Ci=ge({__name:"GestureLegend",props:{lines:{},collapsed:{type:Boolean}},emits:["update:collapsed","help"],setup(L,{emit:f}){const v=f;return(h,u)=>(o(),n("div",_i,[h.collapsed?(o(),n("button",{key:0,type:"button",class:"shadow-hud pointer-events-auto flex h-9 items-center gap-1.5 rounded-full border border-vr-line bg-vr-panel/90 px-3 text-vr-dim backdrop-blur-md transition hover:text-vr-text",title:t(e)("measure.show_gesture_hints"),"aria-label":t(e)("measure.show_gesture_hints"),onClick:u[0]||(u[0]=C=>v("update:collapsed",!1))},[c(t(Js),{class:"h-4 w-4"}),u[3]||(u[3]=T()),a("span",yi,i(t(e)("measure.hints")),1)],8,gi)):(o(),F(we,{key:1,class:"pointer-events-auto"},{default:S(()=>[a("div",xi,[a("div",ki,[a("span",wi,i(t(e)("measure.gestures")),1),a("button",{type:"button",class:"rounded p-0.5 text-vr-dim transition hover:text-vr-text",title:t(e)("common.hide"),"aria-label":t(e)("common.hide"),onClick:u[1]||(u[1]=C=>v("update:collapsed",!0))},[c(t(Vs),{class:"h-3.5 w-3.5"})],8,$i)]),(o(!0),n(U,null,Z(h.lines,C=>(o(),n("p",{key:C,class:"vr-hud-meta text-vr-dim"},i(C),1))),128)),a("button",{type:"button",class:"mt-1 text-left text-[11px] font-semibold text-vr-amber transition hover:underline",onClick:u[2]||(u[2]=C=>v("help"))},i(t(e)("measure.all_shortcuts"))+" â ",1)])]),_:1}))]))}}),Si={class:"space-y-6 p-6"},ji={class:"vr-hud-label text-vr-dim"},Pi={class:"mt-2 space-y-2.5"},Ti={class:"text-sm font-semibold text-vr-text"},Ai={class:"text-[12px] leading-relaxed text-vr-dim"},Ii={class:"vr-hud-label text-vr-dim"},Mi={class:"mt-2 space-y-1.5"},Li={class:"font-semibold text-vr-text"},Fi={class:"text-right text-vr-dim"},qi={key:0},Ei={class:"vr-hud-label text-vr-dim"},Di={class:"mt-2 space-y-1.5"},zi={class:"rounded border border-vr-line bg-vr-raise px-1.5 py-0.5 font-mono text-[11px] text-vr-text"},Ui={class:"text-right text-vr-dim"},Ri={class:"vr-hud-label text-vr-dim"},Ni={class:"mt-2 space-y-1.5"},Bi={class:"font-semibold text-vr-text"},Oi={class:"text-right text-vr-dim"},Vi={class:"space-y-2 border-t border-vr-line pt-4"},Ki={class:"text-[11px] leading-relaxed text-vr-dim"},Hi=ge({__name:"HelpSheet",props:{tools:{},touch:{type:Boolean},open:{type:Boolean},canDraw:{type:Boolean}},emits:["replay","update:open"],setup(L,{emit:f}){const v=L,h=f,u=M(()=>v.canDraw?v.touch?[[e("measure.gesture_hold_point"),e("measure.gesture_delete_it")],[e("measure.gesture_double_tap"),e("measure.gesture_close_shape")],[e("measure.gesture_draw_line"),e("measure.gesture_divide_section")],[e("measure.gesture_draw_loop"),e("measure.gesture_cut_hole")],[e("measure.finish_drawing"),e("measure.shortcut_finish_line")],[e("measure.gesture_drag_empty"),e("measure.gesture_pan")],[e("measure.gesture_pinch"),e("measure.gesture_zoom")]]:[[e("measure.gesture_right_click_point"),e("measure.gesture_delete_cutout")],[e("measure.gesture_drag_wall"),e("measure.gesture_insert_point")],[e("measure.gesture_draw_loop"),e("measure.gesture_cut_hole")],[e("measure.gesture_draw_line"),e("measure.gesture_divide_section")],[e("measure.gesture_drag_empty"),e("measure.gesture_pan")]]:v.touch?[[e("measure.gesture_tap_roof"),e("measure.gesture_detect_roof")],[e("measure.gesture_drag_corner_label"),e("measure.gesture_adju
1st_outline")],[e("measure.gesture_pinch"),e("measure.gesture_zoom")]]:[[e("measure.gesture_click_roof"),e("measure.gesture_detect_roof")],[e("measure.gesture_drag_corner_label"),e("measure.gesture_adjust_outline")],[e("measure.gesture_right_click_point"),e("measure.gesture_delete_it")],[e("measure.gesture_drag_empty"),e("measure.gesture_pan")]]),C=M(()=>[["Ctrl / â + Z",e("measure.undo")],["Ctrl / â + Y",e("measure.redo")],...v.canDraw?[["Esc",e("measure.cancel_shape")],["Backspace",e("measure.remove_last_point")],["Enter",e("measure.shortcut_finish_line")],["Delete",e("measure.shortcut_delete_facet")],["â / â",e("measure.shortcut_step_pitch")],["Esc",e("measure.shortcut_clear_selection")]]:[],["Alt (hold)",e("measure.pause_snapping")]]),k=[[e("measure.magnet"),e("measure.magnet_help")],[e("measure.crosshair"),e("measure.crosshair_help")]];return(A,H)=>(o(),F(t(Ea),{open:A.open,"onUpdate:open":H[1]||(H[1]=z=>h("update:open",z))},{default:S(()=>[c(t(Fa),{side:"right",class:"vr-scroll w-full max-w-md overflow-y-auto border-vr-line bg-vr-panel p-0 text-vr-text"},{default:S(()=>[a("div",Si,[c(t(qa),{class:"text-lg font-extrabold text-vr-text"},{default:S(()=>[T(i(t(e)("measure.how_to_measure")),1)]),_:1}),a("section",null,[a("h3",ji,i(t(e)("measure.tools")),1),a("ul",Pi,[(o(!0),n(U,null,Z(A.tools,z=>(o(),n("li",{key:z.label,class:"flex gap-3"},[z.icon?(o(),F(ft(z.icon),{key:0,class:"mt-0.5 h-4 w-4 shrink-0 text-vr-amber"})):y("",!0),a("div",null,[a("p",Ti,i(z.label),1),a("p",Ai,i(z.hint),1)])]))),128))])]),a("section",null,[a("h3",Ii,i(t(e)("measure.gestures")),1),a("ul",Mi,[(o(!0),n(U,null,Z(u.value,z=>(o(),n("li",{key:z[0],class:"flex items-baseline justify-between gap-3 text-[13px]"},[a("span",Li,i(z[0]),1),a("span",Fi,i(z[1]),1)]))),128))])]),A.touch?y("",!0):(o(),n("section",qi,[a("h3",Ei,i(t(e)("measure.keyboard")),1),a("ul",Di,[(o(!0),n(U,null,Z(C.value,z=>(o(),n("li",{key:z[0],class:"flex items-center justify-between gap-3 text-[13px]"},[a("kbd",zi,i(z[0]),1),a("span",Ui,i(z[1]),1)]))),128))])])),a("section",null,[a("h3",Ri,i(t(e)("measure.snapping")),1),a("ul",Ni,[(o(),n(U,null,Z(k,z=>a("li",{key:z[0],class:"flex items-baseline justify-between gap-3 text-[13px]"},[a("span",Bi,i(z[0]),1),a("span",Oi,i(z[1]),1)])),64))])]),a("div",Vi,[a("button",{type:"button",class:"text-[13px] font-semibold text-vr-amber transition hover:underline",onClick:H[0]||(H[0]=z=>h("replay"))},i(t(e)("measure.replay_intro")),1),a("p",Ki,i(t(e)("measure.verify_note")),1)])])]),_:1})]),_:1},8,["open"]))}}),Wi=["disabled","aria-label","aria-pressed"],Gi={key:0,class:"truncate text-xs font-semibold"},jt=ge({__name:"HudIconButton",props:{active:{type:Boolean,default:!1},activeTone:{default:"amber"},idleTone:{default:"dim"},disabled:{type:Boolean,default:!1},label:{}},setup(L){const f=Zr(),v=L,h=M(()=>v.active?v.activeTone==="ai"?"bg-vr-ai text-vr-amberink":"bg-vr-amber text-vr-amberink":v.idleTone==="ai"?"text-vr-ai hover:bg-vr-raise":"text-vr-dim hover:bg-vr-raise hover:text-vr-text"),u=M(()=>{const C=f["aria-label"]??f.title;return typeof C=="string"&&C!==""?C:void 0});return(C,k)=>(o(),n("button",{type:"button",class:B(["pointer-events-auto flex h-11 shrink-0 items-center justify-center rounded-lg transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 disabled:cursor-not-allowed disabled:opacity-30",[h.value,C.label?"min-w-[7.5rem] justify-start gap-2 px-3":"w-11"]]),disabled:C.disabled,"aria-label":u.value,"aria-pressed":C.active?!0:void 0},[At(C.$slots,"default"),C.label?(o(),n("span",Gi,i(C.label),1)):y("",!0)],10,Wi))}}),Xt=ge({__name:"HudPill",props:{tone:{default:"default"},interactive:{type:Boolean,default:!1}},setup(L){const f=L,v=M(()=>({default:"border-vr-line",ai:"border-vr-ai/50",warn:"border-vr-amber/50"})[f.tone]);return(h,u)=>(o(),n("div",{class:B(["shadow-hud inline-flex max-w-full items-center gap-2 rounded-2xl border bg-vr-panel/90 px-3 py-1.5 backdrop-blur-md sm:rounded-full",[v.value,h.interactive?"pointer-events-auto":"pointer-events-none"]])},[At(h.$slots,"default")],2))}}),Zi=["title","aria-label"],Ji={class:"absolute -bottom-0.5 -right-0.5 flex h-4 w-4 items-center justify-center rounded-full border border-vr-line bg-vr-panel"},Xi=ge({__name:"LockedHint",props:{reason:{},label:{default:e("measure.this_tool")},actionLabel:{default:e("common.upgrade")}},emits:["activate"],setup(L,{emit:f}){const v=L,h=f,{showToast:u}=Gs(),C=()=>{u(v.reason,{tone:"info",persist:!0,action:{label:v.actionLabel,onClick:()=>h("activate")}})};return(k,A)=>(o(),n("button",{type:"button",title:t(e)("measure.paid_feature_title",{label:k.label}),"aria-label":t(e)("measure.paid_feature_title",{label:k.label}),class:"pointer-events-auto relative flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-vr-dim/60 transition hover:bg-vr-raise hover:text-vr-dim",onClick:Le(C,["stop","prevent"])},[At(k.$slots,"default"),a("span",Ji,[c(t(ta),{class:"h-2.5 w-2.5"})])],8,Zi))}}),Yi={class:"space-y-3 border-t border-vr-line pt-4"},Qi={class:"flex items-start justify-between gap-3"},eo={class:"vr-hud-label text-vr-dim"},to={class:"mt-1 truncate text-xs font-semibold text-vr-text"},ao=["aria-label"],so=["aria-label","aria-pressed","aria-busy","disabled","onClick"],ro={class:"min-w-0 flex-1"},lo={class:"block text-sm font-semibold"},io={class:"block text-[11px] text-vr-dim"},oo={key:1,class:"space-y-2"},no={class:"flex gap-3"},uo=["src","alt"],co={class:"min-w-0 flex-1"},mo={class:"truncate text-sm font-semibold"},vo={class:"mt-0.5 text-[11px] text-vr-dim"},po={key:0,class:"font-mono text-[10px] text-vr-dim"},fo={class:"mt-2 grid grid-cols-2 gap-2"},bo=["aria-label","disabled","onClick"],ho=["aria-label","disabled","onClick"],_o=["disabled","aria-label","onClick"],go={key:2,class:"grid grid-cols-[1fr_auto] gap-2"},yo=["aria-label"],xo={value:"drone"}
1,ko={value:"blueprint"},wo={value:"other"},$o=["disabled","aria-busy"],Co=["aria-label"],So={key:3,class:"rounded-lg bg-vr-panel px-3 py-2 text-[11px] text-vr-dim"},jo={key:4,class:"flex items-center justify-between gap-2 text-[11px] text-vr-dim"},Po={class:"text-[11px] leading-relaxed text-vr-dim"},To={key:5,role:"alert",class:"rounded-lg border border-red-500/40 bg-red-500/10 p-2 text-xs text-red-300"},Ao={key:0,class:"space-y-4"},Io=["aria-label"],Mo=["src"],Lo={id:"calibration-point-status",class:"text-xs text-vr-dim"},Fo={class:"block"},qo={class:"grid gap-3 sm:grid-cols-2"},Eo={class:"mb-1 block text-xs font-medium text-vr-dim"},Do={class:"flex"},zo={class:"mb-1 block text-xs font-medium text-vr-dim"},Uo={class:"relative"},Ro={class:"mb-1 block text-xs font-medium text-vr-dim"},No={class:"grid grid-cols-2 gap-2 sm:col-span-2"},Bo={key:1,role:"alert",class:"rounded-lg border border-red-500/40 bg-red-500/10 p-2 text-xs text-red-300"},Oo=ge({__name:"MeasurementImageryPanel",props:{projectUuid:{},projectCenter:{},imagery:{},activeImageryId:{},providers:{},disabled:{type:Boolean}},emits:["updated","activated","removed","satellite-activated"],setup(L,{emit:f}){const v=L,h=f,u=I(null),C=I("drone"),k=I(1),A=I(null),H=I(""),z=I(null),O=I(null),w=I([]),R=I([0,0]),_=I(!1),V=I(null),se=I("ft"),le=I(0),X=I(""),$=I(v.projectCenter.lat),D=I(v.projectCenter.lng),x=I(""),K=M(()=>v.providers.find(j=>j.id===x.value)??v.providers.find(()=>!0)??null),me=M(()=>{const j=v.imagery.find(g=>g.id===v.activeImageryId);return j?j.name:K.value?`${e("measure.satellite_imagery")} · ${K.value.label}`:e("measure.satellite_imagery")}),J=M(()=>w.value.length===2&&Number(V.value)>0),qe=j=>j instanceof Ne?j.message:e("measure.imagery_action_failed"),et=j=>{O.value=j,w.value=[],R.value=[(j.width??0)/2,(j.height??0)/2],V.value=null,le.value=j.northRotationDeg??0,X.value=j.capturedAt??"",$.value=j.center.lat??v.projectCenter.lat,D.value=j.center.lng??v.projectCenter.lng,H.value=""},tt=j=>{const g=O.value;if(!(g!=null&&g.width)||!g.height)return;const b=[Math.max(0,Math.min(g.width,j[0])),Math.max(0,Math.min(g.height,j[1]))];w.value.length<2?(w.value=[...w.value,b],w.value.length===1&&(R.value=[Math.min(g.width,b[0]+g.width*.25),b[1]])):w.value=[b]},aa=j=>{const g=O.value,b=j.currentTarget;if(!(g!=null&&g.width)||!g.height||j.detail===0)return;const q=b.getBoundingClientRect(),Se=[Math.max(0,Math.min(g.width,(j.clientX-q.left)/q.width*g.width)),Math.max(0,Math.min(g.height,(j.clientY-q.top)/q.height*g.height))];R.value=Se,tt(Se)},It=j=>{const g=O.value;if(!(g!=null&&g.width)||!g.height)return;if(j.key===" "||j.key==="Enter"){j.preventDefault(),tt(R.value);return}const b=j.key==="ArrowLeft"?[-1,0]:j.key==="ArrowRight"?[1,0]:j.key==="ArrowUp"?[0,-1]:j.key==="ArrowDown"?[0,1]:null;if(!b)return;j.preventDefault();const q=j.shiftKey?5:1;R.value=[Math.max(0,Math.min(g.width,R.value[0]+g.width/100*b[0]*q)),Math.max(0,Math.min(g.height,R.value[1]+g.height/100*b[1]*q))]},P=async j=>{var Se;const g=j.target,b=(Se=g.files)==null?void 0:Se[0];if(g.value="",!b)return;H.value="",A.value="upload";const q=new FormData;q.append("file",b),q.append("kind",C.value),b.type==="application/pdf"&&q.append("pdf_page",String(k.value));try{const ue=await Fe(`/api/projects/${v.projectUuid}/measurement-imagery`,"POST",q,{timeoutMs:9e4});h("updated",ue.imagery),et(ue.imagery)}catch(ue){H.value=qe(ue)}finally{A.value=null}},sa=async()=>{const j=O.value;if(!(!j||!J.value)){H.value="",A.value=`calibrate:${j.id}`;try{const g=Number(V.value)*(se.value==="ft"?.3048:1),b=await Fe(`/api/projects/${v.projectUuid}/measurement-imagery/${j.id}/calibration`,"PATCH",{point_a:w.value[0],point_b:w.value[1],known_distance_m:g,north_rotation_deg:Number(le.value)||0,center_lat:Number($.value),center_lng:Number(D.value),
1captured_at:X.value||null},{timeoutMs:9e4});h("updated",b.imagery),await ne(b.imagery),O.value=null}catch(g){H.value=qe(g)}finally{A.value=null}}},ne=async j=>{H.value="",A.value=`activate:${j.id}`;try{const g=await Fe(`/api/projects/${v.projectUuid}/measurement-imagery/${j.id}/active`,"PUT");h("updated",g.imagery),h("activated",g.imagery)}catch(g){throw H.value=qe(g),g}finally{A.value=null}},Mt=async j=>{H.value="",A.value=`satellite:${j.id}`;try{await Fe(`/api/projects/${v.projectUuid}/measurement-imagery/satellite`,"PUT",{provider:j.id}),x.value=j.id,h("satellite-activated",j)}catch(g){H.value=qe(g)}finally{A.value=null}},Ce=async j=>{if(z.value!==j.id){z.value=j.id;return}H.value="",A.value=`remove:${j.id}`;try{await Fe(`/api/projects/${v.projectUuid}/measurement-imagery/${j.id}`,"DELETE"),h("removed",j.id),z.value=null}catch(g){H.value=qe(g)}finally{A.value=null}};return(j,g)=>(o(),n(U,null,[a("section",Yi,[a("div",Qi,[a("div",null,[a("h3",eo,i(t(e)("measure.imagery_source")),1),a("p",to,i(me.value),1)]),c(t(ol),{class:"h-4 w-4 shrink-0 text-vr-ai"})]),j.providers.length?(o(),n("div",{key:0,role:"group","aria-label":t(e)("measure.satellite_imagery"),class:"space-y-2"},[(o(!0),n(U,null,Z(j.providers,b=>{var q,Se,ue;return o(),n("button",{key:b.id,type:"button",class:B(["flex min-h-12 w-full items-center gap-3 rounded-xl border px-3 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-ai",j.activeImageryId===null&&((q=K.value)==null?void 0:q.id)===b.id?"border-vr-ai/70 bg-vr-ai/10":"border-vr-line bg-vr-raise hover:border-vr-ai/50"]),"aria-label":`${t(e)("measure.use_imagery")}: ${b.label}`,"aria-pressed":j.activeImageryId===null&&((Se=K.value)==null?void 0:Se.id)===b.id,"aria-busy":A.value===`satellite:${b.id}`,disabled:A.value!==null,onClick:gt=>Mt(b)},[c(t(el),{"aria-hidden":"true",class:"h-5 w-5 text-vr-ai"}),a("span",ro,[a("span",lo,i(t(e)("measure.satellite_imagery")),1),a("span",io,i(b.label),1)]),j.activeImageryId===null&&((ue=K.value)==null?void 0:ue.id)===b.id?(o(),F(t(Me),{key:0,"aria-hidden":"true",class:"h-4 w-4 text-vr-ai"})):A.value===`satellite:${b.id}`?(o(),F(t($e),{key:1,"aria-hidden":"true",class:"h-4 w-4 animate-spin"})):y("",!0)],10,so)}),128))],8,ao)):y("",!0),j.imagery.length?(o(),n("ul",oo,[(o(!0),n(U,null,Z(j.imagery,b=>(o(),n("li",{key:b.id,class:"rounded-xl border border-vr-line bg-vr-raise p-2.5"},[a("div",no,[a("img",{src:b.url,alt:b.name,class:"h-14 w-20 shrink-0 rounded-lg bg-vr-panel object-cover"},null,8,uo),a("div",co,[a("p",mo,i(b.name),1),a("p",vo,i(b.calibrated?t(e)("measure.imagery_calibrated"):b.status==="failed"?t(e)("measure.imagery_failed"):t(e)("measure.imagery_needs_scale")),1),b.metersPerPixel?(o(),n("p",po,i((b.metersPerPixel*3.28084).toFixed(3))+" ft/px ",1)):y("",!0)]),j.activeImageryId===b.id?(o(),F(t(Me),{key:0,class:"mt-1 h-4 w-4 shrink-0 text-vr-ok"})):y("",!0)]),a("div",fo,[a("button",{type:"button",class:"min-h-11 rounded-lg border border-vr-line px-2 text-xs font-semibold hover:border-vr-amber/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60","aria-label":`${b.calibrated?t(e)("measure.recalibrate"):t(e)("measure.calibrate")}: ${b.name}`,disabled:A.value!==null||b.status==="failed",onClick:q=>et(b)},[c(t(Ks),{class:"mr-1 inline h-3.5 w-3.5"}),T(" "+i(b.calibrated?t(e)("measure.recalibrate"):t(e)("measure.calibrate")),1)],8,bo),b.calibrated&&j.activeImageryId!==b.id?(o(),n("button",{key:0,type:"button",class:"min-h-11 rounded-lg bg-vr-amber px-2 text-xs font-bold text-vr-amberink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60","aria-label":`${t(e)("measure.use_imagery")}: ${b.name}`,disabled:A.value!==null,onClick:q=>ne(b)},i(t(e)("measure.use_imagery")),9,ho)):(o(),n("button",{key:1,type:"button",class:B(["min-h-11 rounded-lg px-2 text-xs font-semibold focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",z.value===b.
1id?"bg-red-500 text-white":"text-vr-dim hover:bg-vr-panel hover:text-red-400"]),disabled:A.value!==null,"aria-label":`${z.value===b.id?t(e)("common.confirm"):t(e)("common.delete")}: ${b.name}`,onClick:q=>Ce(b)},[c(t(_t),{class:"mr-1 inline h-3.5 w-3.5"}),T(" "+i(z.value===b.id?t(e)("common.confirm"):t(e)("common.delete")),1)],10,_o))])]))),128))])):y("",!0),j.disabled?(o(),n("p",So,i(t(e)("measure.custom_imagery_full_only")),1)):(o(),n("div",go,[de(a("select",{"onUpdate:modelValue":g[0]||(g[0]=b=>C.value=b),"aria-label":t(e)("measure.imagery_source"),class:"h-11 rounded-lg border border-vr-line bg-vr-raise px-2 text-sm focus:border-vr-amber focus:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60"},[a("option",xo,i(t(e)("measure.drone_photo")),1),a("option",ko,i(t(e)("measure.blueprint")),1),a("option",wo,i(t(e)("measure.other_imagery")),1)],8,yo),[[ht,C.value]]),a("button",{type:"button",class:"flex h-11 items-center gap-2 rounded-lg border border-vr-amber/60 px-3 text-xs font-bold text-vr-amber hover:bg-vr-amber/10",disabled:A.value!==null,"aria-busy":A.value==="upload",onClick:g[1]||(g[1]=b=>{var q;return(q=u.value)==null?void 0:q.click()})},[A.value==="upload"?(o(),F(t($e),{key:0,class:"h-4 w-4 animate-spin"})):(o(),F(t(tl),{key:1,class:"h-4 w-4"})),T(" "+i(t(e)("measure.upload_imagery")),1)],8,$o),a("input",{ref_key:"fileInput",ref:u,type:"file",accept:"image/jpeg,image/png,image/webp,application/pdf",class:"sr-only","aria-label":t(e)("measure.upload_imagery"),onChange:P},null,40,Co)])),j.disabled?y("",!0):(o(),n("label",jo,[a("span",null,i(t(e)("measure.pdf_page")),1),de(a("input",{"onUpdate:modelValue":g[2]||(g[2]=b=>k.value=b),type:"number",min:"1",max:"100",class:"h-11 w-20 rounded-lg border border-vr-line bg-vr-raise px-2 text-right"},null,512),[[nt,k.value,void 0,{number:!0}]])])),a("p",Po,i(t(e)("measure.imagery_privacy_note")),1),H.value?(o(),n("p",To,i(H.value),1)):y("",!0)]),c(t(Da),{open:O.value!==null,"onUpdate:open":g[12]||(g[12]=b=>!b&&(O.value=null))},{default:S(()=>[c(t(za),{class:"max-h-[92dvh] overflow-y-auto border-vr-line bg-vr-panel text-vr-text sm:max-w-2xl"},{default:S(()=>[c(t(Ba),null,{default:S(()=>[c(t(Ua),null,{default:S(()=>[T(i(t(e)("measure.calibrate_imagery")),1)]),_:1}),c(t(Ra),{class:"text-vr-dim"},{default:S(()=>[T(i(t(e)("measure.calibrate_imagery_help")),1)]),_:1})]),_:1}),O.value?(o(),n("div",Ao,[a("button",{type:"button",class:"relative block w-full overflow-hidden rounded-xl border border-vr-line bg-black focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-ai","aria-label":`${t(e)("measure.calibration_image_alt")}. ${t(e)("measure.calibration_keyboard_help")}`,"aria-describedby":"calibration-point-status",onClick:aa,onKeydown:It,onFocus:g[3]||(g[3]=b=>_.value=!0),onBlur:g[4]||(g[4]=b=>_.value=!1)},[a("img",{src:O.value.url,alt:"",class:"pointer-events-none block h-auto max-h-[45dvh] w-full cursor-crosshair object-contain"},null,8,Mo),(o(!0),n(U,null,Z(w.value,(b,q)=>(o(),n("span",{key:q,class:"pointer-events-none absolute flex h-7 w-7 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-white bg-vr-amber font-mono text-xs font-black text-vr-amberink shadow-lg",style:_e({left:`${b[0]/(O.value.width||1)*100}%`,top:`${b[1]/(O.value.height||1)*100}%`})},i(q===0?"A":"B"),5))),128)),_.value?(o(),n("span",{key:0,"aria-hidden":"true",class:"pointer-events-none absolute flex h-6 w-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-vr-ai bg-vr-ink/75 text-base font-black leading-none text-vr-ai",style:_e({left:`${R.value[0]/(O.value.width||1)*100}%`,top:`${R.value[1]/(O.value.height||1)*100}%`})}," + ",4)):y("",!0)],40,Io),a("p",Lo,[T(i(w.value.length<2?t(e)("measure.pick_calibration_points",{count:2-w.value.length}):t(e)("measure.calibration_points_ready"))+" ",1),a("span",Fo,i(t(e)("measure.calibration_keyboard_help")),1)]),a("div",qo,[a("label",null,[a("span",Eo,i(t(e)("measure.known_distance")),1),a("div",Do,[de(a("input",{"onUpdate:modelValue":g[5]||(g[5]=b=>V.value=b),type:"number",min:"0.01",step:"0.01",class:"h-11 min-w-0 flex-1 rounded-l-lg border border-vr-line bg-vr-raise px-3 text-base focus:border-vr-amber focus:outline-none"},null,512),[[nt,V.value,void 0,{number:!0}]]),de(a("select",{"onUpdate:modelValue":g[6]||(g[6]=b=>se.value=b),class:"h-11 rounded-r-lg border border-l-0 border-vr-line bg-vr-raise px-2 text-sm"},g[13]||(g[13]=[a("option",{value:"ft"},"ft",-1),a("option",{value:"m"},"m",-1)]),512),[[ht,se.value]])])]),a("label",null,[a("span",zo,i(t(e)("measure.north_rotation")),1),a("div",Uo,[de(a("input",{"onUpdate:modelValue":g[7]||(g[7]=b=>le.value=b),type:"number",min:"-180",max:"180",step:"0.1",class:"h-11 w-full rounded-lg border border-vr-line bg-vr-raise px-3 pr-8 text-base focus:border-vr-amber focus:outline-none"},null,512),[[nt,le.value,void 0,{number:!0}]]),g[14]||(g[14]=a("span",{class:"absolute right-3 top-3 text-sm text-vr-dim"},"°",-1))])]),a("label",null,[a("span",Ro,i(t(e)("measure.capture_date")),1),de(a("input",{"onUpdate:modelValue":g[8]||(g[8]=b=>X.value=b),type:"date",class:"h-11 w-full rounded-lg border border-vr-line bg-vr-raise px-3 text-base focus:border-vr-amber focus:outline-none"}
1,null,512),[[nt,X.value]])]),a("fieldset",No,[g[17]||(g[17]=a("legend",{class:"mb-1 text-xs font-medium text-vr-dim"},"Image centre",-1)),a("label",null,[g[15]||(g[15]=a("span",{class:"sr-only"},"Centre latitude",-1)),de(a("input",{"onUpdate:modelValue":g[9]||(g[9]=b=>$.value=b),type:"number",min:"-90",max:"90",step:"0.000001",class:"h-11 w-full rounded-lg border border-vr-line bg-vr-raise px-3 text-sm focus:border-vr-amber focus:outline-none","aria-label":"Image centre latitude"},null,512),[[nt,$.value,void 0,{number:!0}]])]),a("label",null,[g[16]||(g[16]=a("span",{class:"sr-only"},"Centre longitude",-1)),de(a("input",{"onUpdate:modelValue":g[10]||(g[10]=b=>D.value=b),type:"number",min:"-180",max:"180",step:"0.000001",class:"h-11 w-full rounded-lg border border-vr-line bg-vr-raise px-3 text-sm focus:border-vr-amber focus:outline-none","aria-label":"Image centre longitude"},null,512),[[nt,D.value,void 0,{number:!0}]])])])])])):y("",!0),H.value?(o(),n("p",Bo,i(H.value),1)):y("",!0),c(t(Na),{class:"gap-2 sm:gap-0"},{default:S(()=>[c(t(Tt),{variant:"ghost",type:"button",class:"min-h-11",onClick:g[11]||(g[11]=b=>O.value=null)},{default:S(()=>[T(i(t(e)("common.cancel")),1)]),_:1}),c(t(Tt),{type:"button",disabled:!J.value||A.value!==null,class:"min-h-11 bg-vr-amber font-bold text-vr-amberink hover:bg-vr-amberhi",onClick:sa},{default:S(()=>{var b;return[(b=A.value)!=null&&b.startsWith("calibrate:")?(o(),F(t($e),{key:0,class:"mr-2 h-4 w-4 animate-spin"})):y("",!0),T(" "+i(t(e)("measure.save_use_imagery")),1)]}),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],64))}}),Vo={key:0,class:"flex flex-col items-center gap-2 rounded-xl border border-dashed border-vr-line px-4 py-7 text-center"},Ko={class:"flex h-9 w-9 items-center justify-center rounded-full bg-vr-raise text-vr-dim"},Ho={class:"text-sm font-semibold text-vr-text"},Wo={class:"vr-hud-meta text-vr-dim"},Go={key:1,class:"shadow-hud mb-4 rounded-xl border border-vr-line bg-vr-ink/70 p-4 font-mono"},Zo={class:"flex items-baseline justify-between gap-2"},Jo={class:"vr-hud-label text-vr-dim"},Xo={class:"text-3xl font-bold tabular-nums text-vr-amber"},Yo={class:"mt-0.5 text-right text-[10px] text-vr-dim"},Qo={class:"mt-3 space-y-1.5 text-[12px]"},en={class:"flex justify-between text-vr-dim"},tn={class:"tabular-nums text-vr-text"},an={class:"flex justify-between text-vr-dim"},sn={class:"tabular-nums text-vr-text"},rn={class:"flex justify-between border-t border-vr-line/60 pt-1.5 text-vr-dim"},ln={class:"flex items-center gap-1"},on={class:"font-semibold tabular-nums text-vr-ok"},nn={class:"flex items-center gap-1.5"},un=["value","aria-label","onChange","onKeydown"],dn=["title","aria-label","onClick"],cn=["title","aria-label","onClick"],mn={class:"mt-2"},vn={key:0,class:"mb-2 flex items-center gap-2 text-[11px] text-vr-dim"},pn={class:"shrink-0"},fn=["value","onChange"],bn=["value"],hn={class:"font-mono text-sm font-semibold tabular-nums text-vr-amber"},_n={class:"text-[10px] font-normal text-vr-dim"},gn={class:"block text-[10px] font-normal text-vr-dim sm:ml-1 sm:inline"},yn={key:1,class:"mt-1 flex flex-wrap gap-1"},xn={class:"mt-2 flex min-w-0 items-center gap-2 font-mono text-[11px] text-vr-dim"},kn={class:"shrink-0"},wn=["value","onChange"],$n={value:""},Cn=["value"],Sn=["title","aria-label","onClick"],jn={class:"mt-2 flex items-center gap-2 text-[11px] text-vr-dim"},Pn={class:"shrink-0"},Tn=["value","placeholder","onChange"],An={class:"w-16 shrink-0 text-right font-mono text-[10px]"},In={key:0,class:"mt-2 space-y-1.5 border-l border-vr-line/60 pl-3"},Mn={class:"pb-0.5 text-[10px] leading-relaxed text-vr-dim"},Ln=["data-measure-facet-index","onClick"],Fn={class:"text-vr-text"},qn={key:0,class:"flex flex-wrap gap-1"},En=["onClick"],Dn=["value","aria-label","onChange"],zn={value:""},Un=["value"],Rn={key:3,class:"flex items-center gap-2"},Nn={class:"shrink-0"},Bn=["value","placeholder","onChange"],On=ge({__name:"SectionPanel",props:{sections:{},structures:{},totals:{},sectionSurfaces:{},projectPitch:{},pitches:{},wasteFactorPct:{},emptyHint:{},selectedFacet:{},facetLabels:{}},emits:["remove","zoom","rename","set-pitch","set-pitch-all","set-facet-pitch","set-structure","set-direction","set-facet-direction","select-facet"],setup(L,{emit:f}){const v=L,h=w=>{var R,_;return((_=(R=v.facetLabels)==null?void 0:R[w])==null?void 0:_.label)??w},u=(w,R)=>{var _;return((_=v.selectedFacet)==null?void 0:_.key)===w&&v.selectedFacet.index===R},C=w=>{var R;return w.adjustedAreaSqft??((R=v.sectionSurfaces.get(w.key))==null?void 0:R.surfaceSqft)??0},k=(w,R)=>{var _,V;return((V=(_=v.sectionSurfaces.get(w.key))==null?void 0:_.facets[R])==null?void 0:V.netSurfaceSqft)??null},A=f,H=w=>{const R=w.target.value;if(R==="")return null;const _=Number(R);return Number.isFinite(_)?Math.min(359.99,Math.max(0,_)):null},z=w=>w===null?e("measure.direction_unknown"):`${["N","NE","E","SE","S","SW","W","NW"][Math.round(w/45)%8]} · ${Math.round(w)}°`,O=(w,R)=>{const _=R.target,V=_.value.trim().slice(0,64);if(!V){_.value=w.name;return}
1_.value=V,A("rename",w.key,V)};return(w,R)=>(o(),n("div",null,[w.sections.length===0?(o(),n("div",Vo,[a("span",Ko,[c(t(bt),{class:"h-5 w-5"})]),a("p",Ho,i(t(e)("measure.roof_sections_empty")),1),a("p",Wo,i(w.emptyHint),1)])):y("",!0),w.sections.length?(o(),n("div",Go,[a("div",Zo,[a("span",Jo,i(t(e)("measure.total_roof_area")),1),a("span",Xo,[T(i(t(Qe)(w.totals.adjusted))+" ",1),R[3]||(R[3]=a("span",{class:"text-sm font-semibold"},"ft²",-1))])]),a("p",Yo,i(t(e)("measure.total_roof_surface")),1),a("dl",Qo,[a("div",en,[a("dt",null,i(t(e)("measure.footprint_plan")),1),a("dd",tn,i(t(Qe)(w.totals.plan))+" ft²",1)]),a("div",an,[a("dt",null,i(t(e)("share.squares")),1),a("dd",sn,i(t(As)(w.totals.squares)),1)]),a("div",rn,[a("dt",ln,[T(i(t(e)("measure.incl_waste",{percent:w.wasteFactorPct}))+" ",1),c(t(jl),{class:"h-3 w-3 cursor-help text-vr-dim/70",title:t(e)("measure.waste_help")},null,8,["title"])]),a("dd",on,i(t(As)(w.totals.squaresWaste))+" "+i(t(e)("share.squares").toLowerCase()),1)])])])):y("",!0),w.sections.length?(o(),F(Xr,{key:2,tag:"ul",name:"vr-rise-sm",class:"space-y-2"},{default:S(()=>[(o(!0),n(U,null,Z(w.sections,(_,V,se,le)=>{var D;const X=[_.name,_.pitch,_.directionDeg,_.structureKey,_.areaSqft,_.perimeterFt,_.adjustedAreaSqft,_.facets,_.labels,_.isAiGenerated,_.aiConfidence,w.selectedFacet&&w.selectedFacet.key===_.key?w.selectedFacet.index:null,C(_),w.projectPitch,w.structures,w.pitches,w.facetLabels,t(e)("measure.section_name")];if(le&&le.key===_.key&&Jr(le,X))return le;const $=(o(),n("li",{key:_.key,class:"group rounded-xl border border-vr-line bg-vr-raise/60 p-3 transition-colors hover:border-vr-line"},[a("div",nn,[a("input",{value:_.name,maxlength:"64",required:"","aria-label":t(e)("measure.section_name"),class:"h-11 w-full min-w-0 flex-1 truncate rounded border border-transparent bg-transparent px-2 text-sm font-semibold text-vr-text focus:border-vr-line focus:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",onChange:x=>O(_,x),onKeydown:[R[0]||(R[0]=ea(x=>x.currentTarget.blur(),["enter"])),ea(x=>{x.currentTarget.value=_.name,x.currentTarget.blur()},["esc"])]},null,40,un),_.isAiGenerated?(o(),F(t(ut),{key:0,class:"h-3.5 w-3.5 shrink-0 text-vr-ai",title:t(e)("measure.ai_draft")},null,8,["title"])):y("",!0),a("button",{type:"button",class:"vr-tap-sq flex h-11 w-11 shrink-0 items-center justify-center rounded-md text-vr-dim opacity-100 transition hover:bg-vr-panel hover:text-vr-amber focus:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60 lg:opacity-0 lg:group-focus-within:opacity-100 lg:group-hover:opacity-100",title:t(e)("measure.zoom_section"),"aria-label":t(e)("measure.zoom_section"),onClick:x=>A("zoom",_.key)},[c(t(Ma),{class:"h-4 w-4"})],8,dn),a("button",{type:"button",class:"vr-tap-sq flex h-11 w-11 shrink-0 items-center justify-center rounded-md text-vr-dim opacity-100 transition hover:bg-vr-panel hover:text-red-400 focus:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60 lg:opacity-0 lg:group-focus-within:opacity-100 lg:group-hover:opacity-100",title:t(e)("measure.delete_section"),"aria-label":t(e)("measure.delete_section"),onClick:x=>A("remove",_.key)},[c(t(_t),{class:"h-4 w-4"})],8,cn)]),a("div",mn,[w.structures.length>1?(o(),n("label",vn,[a("span",pn,i(t(e)("measure.structure")),1),a("select",{value:_.structureKey,class:"h-11 min-w-0 flex-1 rounded-md border border-vr-line bg-vr-panel px-2 text-sm text-vr-text focus:border-vr-amber focus:outline-none",onChange:x=>A("set-structure",_.key,x.target.value)},[(o(!0),n(U,null,Z(w.structures,x=>(o(),n("option",{key:x.key,value:x.key},i(x.name),9,bn))),128))],40,fn)])):y("",!0),a("div",hn,[T(i(t(Qe)(C(_)))+" ft² ",1),a("span",_n,i(t(e)("measure.surface")),1),a("span",gn,"("+i(t(Qe)(_.areaSqft))+" "+i(t(e)("measure.plan"))+")",1)]),(D=_.labels)!=null&&D.length&&!(_.facets&&_.facets.length>1)?(o(),n("div",yn,[(o(!0),n(U,null,Z(_.labels,x=>(o(),n("span",{key:x,class:"rounded-full border border-vr-amber/40 bg-vr-amber/10 px-2 py-0.5 text-[10px] font-semibold text-vr-amber"},i(h(x)),1))),128))])):y("",!0),a("label",xn,[a("span",kn,i(_.facets&&_.facets.length>1?t(e)("measure.section_pitch"):t(e)("share.pitch")),1),a("select",{value:_.pitch??"",class:"h-11 min-w-0 flex-1 rounded-md border border-vr-line bg-vr-panel px-2 text-sm text-vr-text focus:border-vr-amber focus:outline-none",onChange:x=>A("set-pitch",_.key,x.target.value||null)},[a("option",$n,i(t(e)("measure.project_default")),1),(o(!0),n(U,null,Z(w.pitches,x=>(o(),n("option",{key:x,value:x},i(t(Be)(x))+i(x==="flat"?` · ${t(e)("measure.flat_low_slope")}`:""),9,Cn))),128))],40,wn),a("button",{type:"button",class:"vr-tap-sq flex h-11 w-11 shrink-0 items-center justify-center rounded text-vr-dim transition hover:text-vr-amber focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",title:t(e)("measure.apply_pitch_all"),"aria-label":t(e)("measure.apply_pitch_all"),onClick:x=>A("set-pitch-all",_.pitch??null)},[c(t(Yt),{class:"h-3.5 w-3.5"})],8,Sn)]),a("label",jn,[a("span",Pn,i(t(e)("measure.slope_direction")),1),a("input",{type:"number",min:"0",max:"359.99",step:"1",inputmode:"decimal",value:_.directionDeg??"",placeholder:t(e)("measure.degrees"),class:"h-11 min-w-0 flex-1 rounded-md border border-vr-line bg-vr-panel px-2 text-sm text-vr-text focus:border-vr-amber focus:outline-none",onChange:x=>A("set-direction",_.key,H(x))},null,40,Tn),a("span",An,i(z(_.directionDeg)),1)])]),_.facets&&_.facets.length>1?(o(),n("ul",In,[a("li",Mn,i(t(e)("measure.facet_pitch_fallback",{pitch:_.pitch??w.projectPitch??t(e)("measure.unknown")})),1),(o(!0),n(U,null,Z(_.facets,(x,K)=>{var me;return de((o(),n("li",{key:K,class:B(["grid cursor-pointer grid-cols-1 gap-1 rounded-md border border-transparent p-1 font-mono text-[11px] text-vr-dim transition",u(_.key,K)?"border-vr-amber/60 bg-vr-amber/10":"hover:border-vr-line"]),"data-measure-facet-index":K,onClick:J=>A("select-facet",_.key,K)},[a("span",null,[a("span",{class:B(["vr-hud-label",{"text-vr-amber":u(_.key,K)}])},i(t(e)("measure.facet",{number:K+1})),3),T(" · "+i(t(Qe)(x.planSqft))+" ft² "+i(t(e)("measure.plan")),1
1),k(_,K)!==null?(o(),n(U,{key:0},[R[4]||(R[4]=T(" · ")),a("span",Fn,i(t(Qe)(k(_,K)??0))+" ft²",1),T(" "+i(t(e)("measure.surface")),1)],64)):y("",!0)]),(me=x.labels)!=null&&me.length?(o(),n("span",qn,[(o(!0),n(U,null,Z(x.labels,J=>(o(),n("span",{key:J,class:"rounded-full border border-vr-amber/40 bg-vr-amber/10 px-2 py-0.5 font-sans text-[10px] font-semibold text-vr-amber"},i(h(J)),1))),128))])):y("",!0),_.facets.length>12&&!u(_.key,K)?(o(),n("button",{key:1,type:"button",class:"min-h-9 text-left text-xs text-vr-text",onClick:Le(J=>A("select-facet",_.key,K),["stop"])},i(t(Be)(x.pitch??_.pitch??w.projectPitch))+" · "+i(t(e)("common.edit")),9,En)):y("",!0),_.facets.length<=12||u(_.key,K)?(o(),n("select",{key:2,value:x.pitch??"","aria-label":`${t(e)("measure.facet",{number:K+1})} ${t(e)("share.pitch")}`,class:"h-11 min-w-0 rounded-md border border-vr-line bg-vr-panel px-2 text-sm text-vr-text focus:border-vr-amber focus:outline-none",onChange:J=>A("set-facet-pitch",_.key,K,J.target.value||null)},[a("option",zn,i(t(e)("measure.section_default")),1),(o(!0),n(U,null,Z(w.pitches,J=>(o(),n("option",{key:J,value:J},i(t(Be)(J))+i(J==="flat"?` · ${t(e)("measure.flat_low_slope")}`:""),9,Un))),128))],40,Dn)):y("",!0),_.facets.length<=12||u(_.key,K)?(o(),n("label",Rn,[a("span",Nn,i(t(e)("measure.direction_short")),1),a("input",{type:"number",min:"0",max:"359.99",step:"1",inputmode:"decimal",value:x.directionDeg??"",placeholder:t(e)("measure.degrees"),class:"h-11 min-w-0 flex-1 rounded-md border border-vr-line bg-vr-panel px-2 text-sm text-vr-text focus:border-vr-amber focus:outline-none",onChange:J=>A("set-facet-direction",_.key,K,H(J))},null,40,Bn)])):y("",!0)],10,Ln)),[[Ia,!x.excluded]])}),128))])):y("",!0)]));return $.memo=X,$},R,1),128))]),_:1})):y("",!0)]))}}),Vn={class:"space-y-5"},Kn={key:0,class:"rounded-lg border border-vr-ai/40 bg-vr-ai/5 p-3 text-xs leading-relaxed text-vr-dim"},Hn={class:"flex items-center gap-1.5 font-semibold text-vr-ai"},Wn={key:0,class:"mt-1 font-mono"},Gn={key:1,class:"mt-1"},Zn={class:"mt-1"},Jn={class:"space-y-2 border-t border-vr-line pt-4"},Xn={class:"flex items-center justify-between gap-2"},Yn={class:"vr-hud-label text-vr-dim"},Qn={class:"space-y-1.5"},eu=["aria-label","aria-pressed","onClick"],tu=["value","aria-label","onChange"],au=["aria-label","onClick"],su={class:"text-[11px] text-vr-dim"},ru={class:"space-y-3 border-t border-vr-line pt-4"},lu={class:"vr-hud-label text-vr-dim"},iu={class:"grid grid-cols-1 gap-2.5 sm:grid-cols-2"},ou={class:"block"},nu={class:"mb-1 block text-[11px] font-medium text-vr-dim"},uu=["value"],du={class:"block"},cu={class:"mb-1 block text-[11px] font-medium text-vr-dim"},mu=["value"],vu={class:"block"},pu={class:"mb-1 block text-[11px] font-medium text-vr-dim"},fu={value:""},bu=["value"],hu={class:"block"},_u={class:"mb-1 block text-[11px] font-medium text-vr-dim"},gu=["value"],yu=["value"],xu={class:"text-vr-amber"},ku={key:0,class:"block"},wu={class:"mb-1 block text-[11px] font-medium text-vr-dim"},$u=["placeholder"],Cu=["href"],Su={class:"border-t border-vr-line pt-3 text-[11px] leading-relaxed text-vr-dim"},Us=ge({__name:"MeasureDetailsPanel",props:Qt({sections:{},structures:{},activeStructureKey:{},projectUuid:{},projectCenter:{},imagery:{},activeImageryId:{},imageryProviders:{},recommendedWaste:{},totals:{},sectionSurfaces:{},projectPitch:{},pitches:{},roofTypes:{},buildingTypes:{},wasteFactors:{},isFree:{type:Boolean},isGuest:{type:Boolean},aiAvailable:{type:Boolean},upgradeHref:{},quota:{},onRemove:{type:Function},onZoom:{type:Function},onRename:{type:Function},onSetPitch:{type:Function},onSetPitchAll:{type:Function},onSetFacetPitch:{type:Function},onSetStructure:{type:Function},onSetDirection:{type:Function},onSetFacetDirection:{type:Function},onSelectFacet:{type:Function},selectedFacet:{},facetLabels:{},onActivateStructure:{type:Function},onAddStructure:{type:Function},onRenameStructure:{type:Function},onRemoveStructure:{type:Function},onApplyRecommendedWaste:{type:Function},onImageryUpdated:{type:Function},onImageryActivated:{type:Function},onImageryRemoved:{type:Function},onSatelliteActivated:{type:Function}},{form:{required:!0},formModifiers:{}}),emits:Qt(["upgrade"],["update:form"]),setup(L,{emit:f}){const v=f,h=Bs(L,"form");return(u,C)=>
1(o(),n("div",Vn,[u.isFree?(o(),n("div",Kn,[a("p",Hn,[c(t(Hs),{class:"h-3.5 w-3.5"}),T(" "+i(u.aiAvailable===!1?t(e)("measure.free_ai_unavailable"):t(e)("measure.free_ai")),1)]),u.quota&&u.aiAvailable!==!1?(o(),n("p",Wn,i(t(e)("measure.free_remaining",{remaining:u.quota.remaining,limit:u.quota.limit})),1)):y("",!0),u.isGuest&&u.aiAvailable===!1?(o(),n("p",Gn,i(t(e)("measure.manual_available")),1)):y("",!0),a("p",Zn,i(u.isGuest?t(e)("measure.create_account_reports"):t(e)("measure.full_reports")),1)])):y("",!0),c(On,{sections:u.sections,structures:u.structures,totals:u.totals,"section-surfaces":u.sectionSurfaces,"project-pitch":u.projectPitch,pitches:u.pitches,"selected-facet":u.selectedFacet??null,"facet-labels":u.facetLabels,"waste-factor-pct":Number(h.value.waste)||0,"empty-hint":u.isFree?t(e)("measure.ai_mode_hint"):t(e)("measure.draw_hint"),onRemove:u.onRemove,onZoom:u.onZoom,onRename:u.onRename,onSetPitch:u.onSetPitch,onSetPitchAll:u.onSetPitchAll,onSetFacetPitch:u.onSetFacetPitch,onSetStructure:u.onSetStructure,onSetDirection:u.onSetDirection,onSetFacetDirection:u.onSetFacetDirection,onSelectFacet:C[0]||(C[0]=(k,A)=>{var H;return(H=u.onSelectFacet)==null?void 0:H.call(u,k,A)})},null,8,["sections","structures","totals","section-surfaces","project-pitch","pitches","selected-facet","facet-labels","waste-factor-pct","empty-hint","onRemove","onZoom","onRename","onSetPitch","onSetPitchAll","onSetFacetPitch","onSetStructure","onSetDirection","onSetFacetDirection"]),a("section",Jn,[a("div",Xn,[a("h3",Yn,i(t(e)("measure.structures")),1),u.isFree?y("",!0):(o(),n("button",{key:0,type:"button",class:"flex min-h-11 items-center gap-1.5 rounded-lg px-3 text-xs font-semibold text-vr-amber transition hover:bg-vr-raise focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",onClick:C[1]||(C[1]=(...k)=>u.onAddStructure&&u.onAddStructure(...k))},[c(t(ul),{class:"h-4 w-4"}),T(" "+i(t(e)("common.add")),1)]))]),a("ul",Qn,[(o(!0),n(U,null,Z(u.structures,k=>(o(),n("li",{key:k.key,class:B(["flex items-center gap-2 rounded-xl border p-2 transition",k.key===u.activeStructureKey?"border-vr-amber/70 bg-vr-amber/10":"border-vr-line bg-vr-raise/50"])},[a("button",{type:"button",class:B(["flex h-11 w-11 shrink-0 items-center justify-center rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",k.key===u.activeStructureKey?"bg-vr-amber text-vr-amberink":"bg-vr-panel text-vr-dim"]),"aria-label":t(e)("measure.draw_on_structure",{name:k.name}),"aria-pressed":k.key===u.activeStructureKey,onClick:A=>u.onActivateStructure(k.key)},[c(t(al),{class:"h-4 w-4"})],10,eu),a("input",{value:k.name,maxlength:"64",class:"h-11 min-w-0 flex-1 rounded-lg border border-transparent bg-transparent px-2 text-sm font-semibold focus:border-vr-amber focus:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60","aria-label":t(e)("measure.structure_name"),onChange:A=>u.onRenameStructure(k.key,A.target.value)},null,40,tu),!u.isFree&&u.structures.length>1?(o(),n("button",{key:0,type:"button",class:"flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-vr-dim hover:bg-vr-panel hover:text-red-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60","aria-label":t(e)("measure.remove_structure"),onClick:A=>u.onRemoveStructure(k.key)},[c(t(_t),{class:"h-4 w-4"})],8,au)):y("",!0)],2))),128))]),a("p",su,i(t(e)("measure.active_structure_hint")),1)]),c(Oo,{"project-uuid":u.projectUuid,"project-center":u.projectCenter,imagery:u.imagery,"active-imagery-id":u.activeImageryId,providers:u.imageryProviders,disabled:u.isFree,onUpdated:u.onImageryUpdated,onActivated:u.onImageryActivated,onRemoved:u.onImageryRemoved,onSatelliteActivated:u.onSatelliteActivated},null,8,["project-uuid","project-center","imagery","active-imagery-id","providers","disabled","onUpdated","onActivated","onRemoved","onSatelliteActivated"]),a("div",ru,[a("h3",lu,i(t(e)("measure.roof_details"))+" "+i(u.isFree?`(${t(e)("measure.preview")})`:`(${t(e)("measure.optional")})`),1),a("div",iu,[a("label",ou,[a("span",nu,i(t(e)("measure.roof_type")),1),de(a("select",{"onUpdate:modelValue":C[2]||(C[2]=k=>h.value.roofType=k),class:"w-full rounded-lg border border-vr-line bg-vr-raise px-2.5 py-2.5 text-base capitalize focus:border-vr-amber focus:outline-none sm:text-sm"},[C[9]||(C[9]=a("option",{value:""},"â",-1)),(o(!0),n(U,null,Z(u.roofTypes,k=>(o(),n("option",{key:k,value:k,class:"capitalize"},i(t(e)(`measure.roof_${k}`)),9,uu))),128))],512),[[ht,h.value.roofType]])]),a("label",du,[a("span",cu,i(t(e)("measure.building")),1),de(a("select",{"onUpdate:modelValue":C[3]||(C[3]=k=>h.value.buildingType=k),class:"w-full rounded-lg border border-vr-line bg-vr-raise px-2.5 py-2.5 text-base capitalize focus:border-vr-amber focus:outline-none sm:text-sm"},[C[10]||(C[10]=a("option",{value:""},"â",-1)),(o(!0),n(U,null,Z(u.buildingTypes,k=>(o(),n("option",{key:k,value:k,class:"capitalize"},i(t(e)(`measure.building_${k}`)),9,mu))),128))],512),[[ht,h.value.buildingType]])]),a("label",vu,[a("span",pu,i(t(e)("measure.default_pitch")),1),de(a("select",{"onUpdate:modelValue":C[4]||(C[4]=k=>h.value.pitch=k),"data-measure-default-pitch":"",class:"w-full rounded-lg border border-vr-line bg-vr-raise px-2.5 py-2.5 text-base focus:border-vr-amber focus:outline-none sm:text-sm"},[a("option",fu,i(t(e)("measure.unknown")),1),(o(!0),n(U,null,Z(u.pitches,k=>(o(),n("option",{key:k,value:k},i(k==="flat"?`0/12 · ${t(e)("measure.flat_low_slope")}`:k),9,bu))),128))],512),[[ht,h.value.pitch]])]),a("label",hu,[a("span",_u,i(t(e)("measure.waste_factor")),1),de(a("select",{"onUpdate:modelValue":C[5]||(C[5]=k=>h.value.waste=k),class:"w-full rounded-lg border border-vr-line bg-vr-raise px-2.5 py-2.5 text-base focus:border-vr-amber focus:outline-none sm:text-sm"},[(o(!0),n(U,null,Z(u.wasteFactors,k=>(o(),n("option",{key:k,value:k},i(k)+"%",9,gu))),128)),u.wasteFactors.includes(Number(h.value.waste))?y("",!0):(o(),n("option",{key:0,value:h.value.waste},i(h.value.waste)+"%",9,yu))],512),[[ht,h.value.waste,void 0,{number:!0}]]),u.recommendedWaste.percent!==Number(h.value.waste)?(o(),n("button",{key:0,t
1ype:"button",class:"mt-1.5 w-full rounded-lg border border-vr-amber/40 bg-vr-amber/10 px-2 py-2 text-left text-[11px] leading-snug text-vr-dim",onClick:C[6]||(C[6]=(...k)=>u.onApplyRecommendedWaste&&u.onApplyRecommendedWaste(...k))},[a("strong",xu,i(t(e)("measure.recommended_waste",{percent:u.recommendedWaste.percent})),1),T(" · "+i(u.recommendedWaste.reasons.join(" · ")),1)])):y("",!0)])]),u.isFree?y("",!0):(o(),n("label",ku,[a("span",wu,i(t(e)("measure.notes")),1),de(a("textarea",{"onUpdate:modelValue":C[7]||(C[7]=k=>h.value.notes=k),rows:"2",maxlength:"2000",placeholder:t(e)("measure.notes_placeholder"),class:"w-full resize-none rounded-lg border border-vr-line bg-vr-raise px-2.5 py-2 text-base placeholder:text-vr-dim focus:border-vr-amber focus:outline-none sm:text-sm"},null,8,$u),[[nt,h.value.notes]])])),u.isFree?(o(),n("a",{key:1,href:u.upgradeHref??"/pricing",class:"flex h-12 items-center justify-center gap-2 rounded-lg bg-vr-amber text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:C[8]||(C[8]=Le(k=>v("upgrade"),["prevent"]))},[c(t(ta),{class:"h-4 w-4"}),T(" "+i(u.isGuest?t(e)("measure.sign_up_reports"):t(e)("measure.upgrade_reports")),1)],8,Cu)):y("",!0)]),a("p",Su,i(t(e)("measure.verify_note")),1)]))}});function ju(L){const f=I("idle"),v=I("");let h,u,C=null,k=null;const A=M(()=>{var V;return(V=L.revision)==null||V.value,L.enabled&&(f.value==="saving"||L.fingerprint()!==v.value)}),H=(V=L.fingerprint())=>{v.value=V,f.value="idle"},z=()=>L.enabled?(clearTimeout(h),C||(C=(async()=>{for(k&&await k;;){if(L.canPersist&&!L.canPersist())return f.value="dirty",!1;if(!L.validate())return f.value="error",!1;const V=L.fingerprint();if(V===v.value)return f.value="saved",!0;if(f.value="saving",!await L.persist(V))return f.value="error",!1;if(v.value=V,L.fingerprint()===V)return f.value="saved",!0}})().finally(()=>{C=null}),C)):Promise.resolve(!0),O=()=>{if(L.enabled){if(clearTimeout(h),L.canPersist&&!L.canPersist()){f.value="dirty";return}if(!L.validate()){f.value="error";return}if(L.fingerprint()===v.value){f.value="saved";return}f.value="dirty",h=setTimeout(()=>void z(),L.debounceMs??800)}},w=async()=>{if(!L.enabled)return!0;clearTimeout(u),C&&await C;const V=!L.canPersist||L.canPersist();return A.value&&V&&L.validate()?z():L.persistViewport?k||(k=L.persistViewport().finally(()=>{k=null}),k):!0};return{state:f,hasUnsavedChanges:A,queue:O,save:z,queueViewport:()=>{L.enabled&&(clearTimeout(u),u=setTimeout(()=>void w(),L.viewportDebounceMs??1200))},saveViewport:w,setBaseline:H,dispose:()=>{clearTimeout(h),clearTimeout(u)}}}const Ie={coach:"vr.measure.coach.v1",legendCollapsed:"vr.measure.legend.collapsed",touchHint:"vr.measure.touchhint.v1",facetPanelCollapsed:"vr.measure.facetpanel.collapsed"};function Pu(){function L(h){try{return localStorage.getItem(h)==="1"}catch{return!1}}function f(h){try{localStorage.setItem(h,"1")}catch{}}function v(h){try{localStorage.removeItem(h)}catch{}}return{seen:L,markSeen:f,reset:v}}function ae(L,f={}){Zs(L,f),typeof window<"u"&&window.dispatchEvent(new CustomEvent("roofv:measure-event",{detail:{event:L,properties:f}}))}const Tu=["data-measure-editor","data-measure-section-count","data-measure-total-sqft"],Au={class:"z-20 flex h-14 shrink-0 items-center gap-2 border-b border-vr-line bg-vr-panel px-3 sm:gap-3 sm:px-4"},Iu={class:"flex min-w-0 flex-1 items-center gap-1"},Mu=["title","aria-label"],Lu={class:"min-w-0 flex-1"},Fu={key:1,class:"truncate text-sm font-semibold leading-tight"},qu={class:"hidden font-mono text-[10px] uppercase tracking-[0.16em] text-vr-dim sm:block"},Eu={key:0,class:"hidden font-mono text-[11px] text-vr-dim md:block"},Du={key:1,class:"text-vr-ok"},zu={key:3,class:"text-red-400"},Uu={key:1,class:"hidden rounded-full border border-vr-line bg-vr-raise px-2.5 py-1 font-mono text-[10px] lg:inline-flex"},Ru={key:0,class:"text-vr-text"},Nu={key:1,class:"text-vr-dim"},Bu={key:2,class:"ml-1.5 text-vr-amber"},Ou=["title"],Vu=["title"],Ku={class:"hidden sm:inline"},Hu={class:"sm:hidden"},Wu=["title","aria-label"],Gu=["disabled","title"],Zu={class:"hidden sm:inline"},Ju={class:"text-vr-dim"},Xu={class:"font-bold text-vr-amber"},Yu={class:"hidden text-vr-dim sm:inline"},Qu=["aria-current","aria-label","data-measure-stage","onClick"],ed={class:"min-w-0
1whitespace-normal text-center leading-[1.05] sm:truncate sm:text-left"},td={key:0,"aria-hidden":"true",class:"absolute -right-px h-5 w-px bg-vr-line"},ad={class:"relative min-w-0 flex-1","data-measure-map-surface":""},sd={key:0,class:"pointer-events-none absolute inset-0 z-[5] flex flex-col items-center justify-center gap-3"},rd={class:"relative font-mono text-[11px] uppercase tracking-wider text-vr-dim"},ld={key:1,class:"absolute inset-0 z-[8] flex cursor-wait items-center justify-center",role:"status","aria-live":"polite"},id={class:"flex items-center justify-center gap-2"},od={class:"vr-hud-meta text-vr-text"},nd={key:0,class:"mt-2 max-w-xs text-xs text-vr-dim"},ud={"data-measure-desktop-tools":"",class:"vr-scroll flex max-h-[calc(100dvh-13rem)] flex-col gap-1 overflow-y-auto p-1"},dd={key:1,class:"mx-1 my-0.5 h-px shrink-0 bg-vr-line"},cd={class:"vr-scroll flex items-center gap-1 overflow-x-auto p-1.5 lg:flex-wrap lg:justify-center"},md={class:"vr-hud-label shrink-0 px-1 text-vr-dim"},vd=["data-measure-wall-type","title","onClick"],pd=["disabled","title"],fd=["title"],bd=["title"],hd={class:"flex items-center gap-0.5 p-1"},_d=["title","aria-label","aria-pressed"],gd={class:"hidden xl:inline"},yd=["title","aria-label","aria-pressed"],xd={class:"hidden xl:inline"},kd=["title","aria-label","aria-pressed"],wd={class:"hidden xl:inline"},$d=["title","aria-label"],Cd=["title","aria-label"],Sd=["title","aria-label"],jd=["title","aria-label"],Pd=["title","aria-label"],Td={class:"p-2.5"},Ad={class:"flex items-start gap-2"},Id={class:"min-w-0 flex-1 text-xs leading-snug text-vr-dim"},Md={key:0,class:"font-mono text-vr-text"},Ld={class:"mt-2 flex gap-2"},Fd=["disabled"],qd=["disabled"],Ed={class:"flex gap-1.5 p-1.5"},Dd=["aria-label","title"],zd={class:"flex items-start gap-2"},Ud={class:"text-left text-xs leading-snug text-vr-text"},Rd={class:"flex items-start gap-2"},Nd={class:"min-w-0 text-left"},Bd={class:"text-xs font-semibold text-vr-text"},Od={class:"mt-1 space-y-0.5 text-[11px] leading-snug text-vr-dim"},Vd=["onClick"],Kd={class:"text-vr-text"},Hd={key:0,class:"mt-1 font-mono text-[10px] text-vr-amber"},Wd={class:"shrink-0 whitespace-nowrap font-semibold text-vr-amber"},Gd={class:"text-[12px] text-vr-text"},Zd=["aria-label"],Jd={class:"vr-hud-meta text-center text-vr-dim"},Xd={class:"text-vr-text"},Yd={key:7,class:"vr-z-transient absolute inset-x-3 top-[4.5rem] mx-auto max-w-md"},Qd={class:"mt-2 text-sm text-vr-dim"},ec={class:"font-mono text-[11px] uppercase tracking-wider text-vr-ai"},tc=["aria-label","aria-valuenow"],ac={class:"mt-2 text-xs text-vr-dim"},sc={class:"mt-2 text-sm font-bold"},rc={class:"mt-1 text-xs leading-relaxed text-vr-dim"},lc=["aria-label"],ic={class:"mt-2 text-sm font-bold"},oc={class:"mt-1 text-xs leading-relaxed text-vr-dim"},nc={class:"mt-2 text-sm font-bold"},uc={class:"mt-1 text-xs leading-relaxed text-vr-dim"},dc={key:8,class:"vr-z-transient absolute inset-x-3 top-[4.5rem] mx-auto max-w-xs"},cc={class:"text-sm font-semibold text-vr-text"},mc={class:"hidden bg-vr-panel lg:flex lg:w-[340px] lg:shrink-0 lg:flex-col lg:border-l lg:border-vr-line"},vc={class:"vr-scroll overflow-y-auto p-4"},pc={class:"mb-4 rounded-xl border border-vr-line bg-vr-raise/60 p-3","aria-labelledby":"desktop-readiness-title"},fc={class:"flex items-center justify-between gap-3"},bc={id:"desktop-readiness-title",class:"text-sm font-bold text-vr-text"},hc={class:"mt-0.5 text-[11px] text-vr-dim"},_c={key:0,class:"mt-2 space-y-1"},gc={class:"text-vr-text"},yc={"data-measure-mobile-undo":"",class:"vr-z-appbar shadow-hud absolute bottom-[var(--hud-bottom-stack)] left-3 flex overflow-hidden rounded-xl border border-vr-line bg-vr-panel/95 backdrop-blur lg:hidden"},xc=["disabled","aria-label"],kc=["disabled","aria-label"],wc={"data-measure-mobile-bar":"",class:"vr-z-appbar absolute inset-x-0 bottom-0 flex items-stretch gap-1 border-t border-vr-line bg-vr-panel/95 px-2 pt-1.5 backdrop-blur lg:hidden",style:{paddingBottom:"calc(0.375rem + env(safe-area-inset-bottom))"}},$c=["aria-pressed","aria-label","disabled"],Cc=["aria-pressed","aria-label","onClick"],Sc={class:"w-full truncate px-0.5 text-center text-[10px] font-semibold leading-none"},jc=["aria-label"],Pc={class:"text-[10px] font-semibold leading-none"},Tc=["aria-label","aria-pressed"],Ac={class:"w-full truncate text-center text-[10px] font-semibold leading-none"},Ic=["disabled","title"],Mc={class:"text-[10px] font-bold leading-none"},Lc={class:"text-[10px] font-bold leading-none"},Fc={class:"mt-4 grid grid-cols-2 gap-2"},qc=["data-measure-tool","onClick"],Ec=["disabled"],Dc=["aria-pressed"],zc=["aria-pressed"],Uc=["aria-pressed"],Rc={class:"sticky top-0 z-10 flex flex-col items-center border-b border-vr-line bg-vr-panel pb-2 pt-2"},Nc={class:"p-4",style:{paddingBottom:"calc(1rem + env(safe-area-inset-bottom))"}},Bc={class:"mb-4 rounded-xl border border-vr-line bg-vr-raise/60 p-3","aria-labelledby":"mobile-readiness-title"},Oc={class:"flex items-center justify-between gap-3"},Vc={id:"mobile-readiness-title",class:"text-sm font-bold"},Kc={class:"mt-0.5 text-xs text-vr-dim"},Hc={class:"rounded-full bg-vr-amber/15 px-2 py-1 font-mono text-[10px] text-vr-amber"},Wc={key:0,class:"mt-2 space-y-1.5"},Gc={class:"text-vr-text"},Zc={class:"grid gap-3 sm:grid-cols-2"},Jc=["disabled"],Xc={class:"flex items-center justify-between gap-3"},Yc={class:"mt-2 block text-xs leading-relaxed text-vr-dim"},Qc=["disabled"],em={class:"flex items-center justify-between gap-3"},tm={class:"mt-2 block text-xs leading-relaxed text-vr-dim"},am={key:0,class:"rounded-xl border border-vr-amber/30 bg-vr-amber/5 p-3"},sm={class:"text-xs font-bold text-vr-amber"},rm={class:"mt-2 space-y-1.5 text-xs text-vr-dim"},lm={class:"min-w-0 flex-1"},im={key:0,class:"font-semibold text-vr-text"},om={key:1,class:"font-semibold text-vr-text"},nm={key:2},um={key:3,class:"font-mono"},dm=["onClick"],cm={key:1,class:"rounded-xl border border-vr-amber/30 bg-vr-amber/5 p-3"},mm={class:"text-xs font-bold text-vr-amber"},vm={class:"mt-2 grid gap-1 text-xs text-vr-dim sm:grid-cols-2"},pm=24*60*60*1e3,Av=ge({__name:"Measure",props:{project:{},sections:{},structures:{},map:{},options:{},mode:{},guest:{type:Boolean},aiEnabled:{type:Boolean},freeQuota:{},freeModels:{},imagery:{},activeImageryId:{},versions:{},recommendedWaste:{},readiness:{}},setup(L){var gs,ys;const f=L,v=f.mode==="free",h=f.options.editorVersion==="line",u=f.guest===!0,C=Number(((gs=_l().props.tri
1al)==null?void 0:gs.days)??7),k=`/register?intended=${encodeURIComponent(`/measure/${f.project.uuid}`)}`,A=M(()=>u?k:"/pricing"),H=I(f.project.address),z=I(null),O=I("idle"),w=M(()=>O.value!=="idle"),R=I(!1),_=I(!1),V=I(!1),se=I(!1),le=I(!1),X=I(f.freeQuota),$=I(null),D=I(null),x=I(!1),K=I(!1),me=I(!0),J=I([]),qe=I(Math.max(0,...f.versions.map(s=>s.version))),et=I(f.project.measurementDirty),tt=I(!1),aa=typeof performance<"u"?performance.now():Date.now();let It=f.sections.length>0;const{showToast:P,dismissToast:sa}=Gs(),ne=I(null),Mt=M({get:()=>ne.value!==null,set:s=>{s||!ne.value||(ne.value.resolve(!1),ne.value=null)}}),Ce=s=>new Promise(r=>{var l;(l=ne.value)==null||l.resolve(!1),ne.value={...s,resolve:r}}),j=()=>{var s;(s=ne.value)==null||s.resolve(!0),ne.value=null},g=()=>Ce({title:e("measure.reset_detail_title"),description:e("measure.reset_detail_description"),confirmLabel:e("measure.continue_editing"),destructive:!0}),b=Ps({roofType:f.project.roofType??"",buildingType:f.project.buildingType??"",pitch:f.project.pitch??"",waste:f.project.wasteFactorPct??10,notes:f.project.notes??""}),q=I(f.structures.length?f.structures.map(s=>({...s})):[]),Se=new Map,ue=I(((ys=q.value[0])==null?void 0:ys.key)??"00000000-0000-4000-8000-000000000001"),gt=I(f.recommendedWaste),Ee=I(f.imagery.map(s=>({...s}))),ye=I(f.activeImageryId),ra=ml(f.options.geometry),W=vl(f.freeModels),m=pl({tileUrl:f.map.tileUrl,attribution:f.map.attribution,maxZoom:f.map.maxZoom,editorMaxZoom:f.map.editorMaxZoom,limits:f.options.limits,geometry:ra,activeStructureKey:ue,center:[f.project.mapCenter.lng,f.project.mapCenter.lat],addressAnchor:{center:[f.project.lng,f.project.lat],label:f.project.locationLabel},zoom:f.project.zoom,allowedModes:v?u?["pan","draw","edit","erase","ai","cutout","measure"]:["pan","edit","erase","ai"]:void 0,onChange:()=>rt(),onViewportChange:()=>{!v&&!w.value&&wr()},onAiClick:(s,r,l,d,p)=>_a(s,r,l,d,p),onCutoutMiss:()=>P(e("measure.error_cutout_miss")),onFacetSplitMiss:()=>P(e("measure.error_facet_split_miss")),onOutlineTooShort:()=>P(e("measure.error_outline_min_points")),onClassifyMiss:()=>P(e("measure.error_classify_miss")),onDirectionMiss:()=>P(e("measure.direction_needs_eave")),onDeleteBlocked:()=>P(e("measure.error_delete_blocked")),onUndoableChange:()=>Re(),onSegmentsCleared:()=>Re(e("measure.segments_cleared")),confirmDataLoss:g,onLimitReached:(s,r)=>P(e(`measure.validation.too_many_${s}`,{count:r}),{tone:"error"}),canRemoveSection:s=>s!==$.value,onSectionRemoveBlocked:()=>P(e("measure.use_discard_for_ai")),wallTypes:Object.fromEntries(Object.entries(f.options.wallTypes).map(([s,r])=>[s,r.color])),facetLabels:Object.fromEntries(Object.entries(f.options.facetLabels??{}).map(([s,r])=>[s,r.label])),resolveSectionPitch:(s,r)=>kt({structureKey:s,pitch:r}),onFacetDeleteBlocked:()=>P(e("measure.facet_delete_would_split")),editor:f.options.editorVersion,onAiTraceCollides:()=>P(e("measure.ai_trace_collides"),{tone:"error"})}),Oa=s=>!s.calibrated||!s.width||!s.height||!s.metersPerPixel||s.center.lat===null||s.center.lng===null?null:{id:s.id,url:s.url,width:s.width,height:s.height,metersPerPixel:s.metersPerPixel,center:{lat:s.center.lat,lng:s.center.lng}},la=s=>{const r=Ee.value.findIndex(l=>l.id===s.id);r===-1?Ee.value=[s,...Ee.value]:Ee.value.splice(r,1,s)},Va=s=>{la(s);const r=Oa(s);if(!r||!m.setCustomImagery(r)){P(e("measure.imagery_action_failed"),{tone:"error"});return}ye.value=s.id,ae("measure_imagery_activated",{kind:s.kind})},Ka=s=>{Ee.value=Ee.value.filter(r=>r.id!==s),ye.value===s&&(ye.value=null,m.setSatelliteImagery())},Ha=s=>{ye.value=null,m.setSatelliteImagery(),ae("measure_imagery_activated",{kind:"satellite",provider:s.id})},dt=`roofv:guest-draft:${f.project.uuid}`,Wa=JSON.stringify({sections:f.sections,structures:f.structures,pitch:f.project.pitch});let ia,at=!1;const st=()=>{try{const s=JSON.stringify({version:3,baseline:Wa,structures:q.value,viewport:m.editorViewState(),savedAt:Date.now(),sections:m.serializeSections(),sketch:m.serializeSketch(),form:{...b}});if(s.length>1e6)throw new Error("draft_too_large");return window.sessionStorage.setItem(dt,s),!0}catch{return!1}},{mode:Y,sections:ee,sketching:fe,setMode:ie,imageryUnavailable:ct,firstRen
1der:yt,rotation:Ys,axisSnapEnabled:Oe,axisGuide:mt,dimensionsVisible:Ve}=m,Qs=()=>Ce({title:e("measure.unfinished_outline_title"),description:e("measure.unfinished_outline_description"),confirmLabel:e("measure.discard_outline"),destructive:!0}),oa=async()=>fe.value?m.lineEditor?(m.endChain(),!0):await Qs()?(m.cancelShape(),!0):!1:!0,er=s=>{u&&(s.preventDefault(),pe("/"))},pe=async(s=A.value)=>{if(await oa()){if(!u&&$.value){P(e("measure.keep_discard_first"));return}u&&!st()&&!await Ce({title:e("measure.draft_preserve_title"),description:e("measure.draft_preserve_error"),confirmLabel:e("measure.continue_without_saving"),destructive:!0})||(Zs(u?"auth_wall_clicked":"upgrade_clicked",{surface:"measure"}),Ct=!0,Jt.visit(s),queueMicrotask(()=>Ct=!1))}},De=I(!1),te=Ps({x:0,y:0,w:0,h:0,inside:!1,locked:!1});let Ke=null;const Ga=I(0),tr=s=>{var p,E;const r=(p=m.map.value)==null?void 0:p.getSize();r&&(te.w=r[0],te.h=r[1]);const l=De.value&&!((E=s.originalEvent)!=null&&E.altKey)?m.snapPreview(s.pixel):null,d=l!==null;d&&!te.locked&&Ga.value++,te.locked=d,te.x=l?l[0]:s.pixel[0],te.y=l?l[1]:s.pixel[1],te.inside=!0},Za=()=>{te.inside=!1,te.locked=!1},ar=M(()=>{let s=Math.round(-(Ys.value??0)*180/Math.PI);return s===0&&(s=0),s}),na=M(()=>m.canUndo.value&&!$.value),ua=M(()=>m.canRedo.value&&!$.value);let Lt=null;const da=()=>{Lt!==null&&sa(Lt),Lt=null},Ft=()=>{da(),m.undo()},ca=()=>{da(),m.redo()},Re=(s=e("measure.removed"))=>{da(),Lt=P(s,{tone:"success",durationMs:6500,action:{label:e("measure.undo"),onClick:Ft}})},ma=s=>{if(s===$.value){ga();return}m.removeSection(s)&&Re(e("measure.section_removed"))},sr=async()=>{if(!m.hasAnySegments()){P(e("measure.no_wall_types"));return}await Ce({title:e("measure.delete_wall_types_title"),description:e("measure.delete_wall_types_description"),confirmLabel:e("measure.delete_all_edges"),destructive:!0})&&m.clearAllSegments()&&Re(e("measure.wall_types_removed"))},Ja=async()=>{!m.hasSketchLines.value&&!ee.value.length||await Ce({title:e("measure.delete_all_lines_title"),description:e("measure.delete_all_lines_description"),confirmLabel:e("measure.delete_all_lines"),destructive:!0})&&m.clearAllLines()&&Re(e("measure.lines_removed"))},rr=M(()=>Object.entries(f.options.facetLabels??{}).map(([s,r])=>({key:s,label:r.label}))),Xa=M(()=>{var E,N;const s=m.selectedFacet.value;if(!s)return null;const r=ee.value.find(G=>G.key===s.key);if(!r)return null;const d=!!r.facets&&r.facets.length>1&&s.index>=0?((E=r.facets)==null?void 0:E[s.index])??null:null;if(s.index>=0&&(!d||d.excluded))return null;const p=Dt.value.get(r.key);return{key:r.key,index:d?s.index:-1,sectionName:r.name,facetLetter:d?fl(s.index):null,pitch:d?d.pitch:r.pitch,resolvedPitch:kt(r),labels:(d?d.labels:r.labels)??[],areaSqft:d?((N=p==null?void 0:p.facets[s.index])==null?void 0:N.netSurfaceSqft)??d.planSqft:r.adjustedAreaSqft??(p==null?void 0:p.surfaceSqft)??r.areaSqft}}),xt=M(()=>!v&&(["pitch","exclude","direction"].includes(Y.value)||h&&Pe.value==="pitch")),qt=I(!1),lr=s=>{qt.value=s??!1,s?Ht(Ie.facetPanelCollapsed):wa(Ie.facetPanelCollapsed)},va=()=>{const s=Xa.value;return s||P(e("measure.select_facet_first")),s},ir=s=>{const r=va();r&&(r.index>=0?m.setFacetPitch(r.key,r.index,s):m.setSectionPitch(r.key,s))},Ya=async s=>{await Te("pitch"),Y.value==="pitch"&&(m.activePitch.value=s)},or=s=>{const r=f.options.pitches,l=m.activePitch.value,d=l?r.indexOf(l):-1,p=d<0?s>0?-1:r.length:d,E=r[Math.min(r.length-1,Math.max(0,p+s))];E&&Ya(E)},nr=s=>{m.activePitch.value=s,m.setPitchForAllFacets(s)&&Re(e("measure.pitches_applied_all",{pitch:Be(s)}))},ur=()=>{const s=m.activeWallType.value;s&&m.setAllSegments(s)&&Re(e("measure.edges_applied_all"))},dr=s=>{const r=va();if(!r)return;const l=r.labels.includes(s)?r.labels.filter(d=>d!==s):[...r.labels,s];m.setFacetLabels(r.key,r.index,l)},cr=async()=>{if(!m.hasAnyPitches()){P(e("measure.no_pitches"));return}await Ce({title:e("measure.delete_all_pitches_title"),description:e("measure.delete_all_pitches_description"),confirmLabel:e("measure.delete_all_pitches"),destructive:!0})&&m.clearAllPitches()&&Re(e("measure.pitches_removed"))},Qa=async(s=!1)=>{const r=va();if(!r)return;if(r.index<0){if(s||!await Ce({title:e("measure.delete_facet_section_title"),description:e("measure.delete_facet_section_description"),confirmLabel:e("measure.delete_section"),destructive:!0}))return;ma(r.key);return}const l=m.deleteFacet(r.key,r.index);l==="cutout"||l==="boundary"?Re(e("measure.facet_removed")):l==="split_blocked"&&P(e("measure.facet_delete_would_split"))},es=()=>
1{if(q.value.length>=20)return;const s=crypto.randomUUID();q.value.push({key:s,name:e("measure.structure_number",{number:q.value.length+1}),roofType:b.roofType||null,buildingType:b.buildingType||null,defaultPitch:b.pitch||null}),ue.value=s,rt()},ts=s=>{ue.value=s},as=(s,r)=>{const l=q.value.find(p=>p.key===s),d=r.trim().slice(0,64);!l||!d||l.name===d||(l.name=d,rt())},ss=async s=>{if(q.value.length<=1)return;const r=q.value.find(d=>d.key!==s);if(!r||!await Ce({title:e("measure.remove_structure"),description:e("measure.remove_structure_description",{name:r.name}),confirmLabel:e("common.remove"),destructive:!0}))return;const l=q.value.find(d=>d.key===s);l&&Se.set(s,{...l}),m.reassignStructureSections(s,r.key),q.value=q.value.filter(d=>d.key!==s),ue.value===s&&(ue.value=r.key),rt()};Ue(()=>[...new Set(ee.value.map(s=>s.structureKey))].sort().join("|"),()=>{for(const[s,r]of Se){const l=ee.value.some(p=>p.structureKey===s),d=q.value.some(p=>p.key===s);l&&!d&&q.value.push({...r}),!l&&d&&ue.value!==s&&(q.value=q.value.filter(p=>p.key!==s))}});const rs=()=>{b.waste=gt.value.percent},ls=s=>{const r=s.target;if(r&&(/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)||r.isContentEditable))return;if(!(s.ctrlKey||s.metaKey)){if(Y.value!=="pitch"||s.altKey||s.shiftKey||!xt.value)return;s.key==="Delete"||s.key==="Backspace"?(s.preventDefault(),Qa(!0)):(s.key==="ArrowUp"||s.key==="ArrowDown")&&(s.preventDefault(),or(s.key==="ArrowDown"?1:-1));return}const l=s.key.toLowerCase();l==="z"&&!s.shiftKey?(s.preventDefault(),na.value&&Ft()):(l==="y"||l==="z"&&s.shiftKey)&&(s.preventDefault(),ua.value&&ca())},kt=s=>{var r;return s.pitch??((r=q.value.find(l=>l.key===s.structureKey))==null?void 0:r.defaultPitch)??(b.pitch||null)},Et=new Map,Dt=M(()=>{const s=new Set(ee.value.map(r=>r.key));for(const r of Et.keys())s.has(r)||Et.delete(r);return new Map(ee.value.map(r=>{var N;const l=kt(r),d=[r.outer,...r.holes,l,...(r.facets??[]).flatMap(G=>[G.polygon,G.pitch])],p=Et.get(r.key);if(p&&p.inputs.length===d.length&&d.every((G,re)=>G===p.inputs[re]))return[r.key,p.surface];const E=bl({outer:r.outer,holes:r.holes,facets:((N=r.facets)==null?void 0:N.map(G=>({polygon:G.polygon,pitch:G.pitch})))??null,pitch:l},ra);return Et.set(r.key,{inputs:d,surface:E}),[r.key,E]}))}),mr=M(()=>{var d;let s=0,r=0;for(const p of ee.value)s+=p.areaSqft,r+=p.adjustedAreaSqft??((d=Dt.value.get(p.key))==null?void 0:d.surfaceSqft)??0;const l=r/100;return{plan:s,adjusted:r,squares:l,squaresWaste:l*(1+(Number(b.waste)||0)/100)}}),zt=I(null),wt=I(f.readiness??null),Ut=M(()=>zt.value??mr.value),pa=M(()=>ee.value.filter(s=>{const r=kt(s);return s.facets&&s.facets.length>1?s.facets.some(l=>!(l.pitch??r)):!r}).length),vr=(s,r)=>{const l=d=>`${Number(d[0]).toFixed(7)},${Number(d[1]).toFixed(7)}`;return[l(s),l(r)].sort().join("|")},is=(s,r,l)=>{const d=l[0]-r[0],p=l[1]-r[1],E=d*d+p*p||Number.EPSILON,N=Math.max(0,Math.min(1,((s[0]-r[0])*d+(s[1]-r[1])*p)/E));return Math.hypot(s[0]-(r[0]+N*d),s[1]-(r[1]+N*p))},pr=(s,r,l)=>{for(let d=0;d+1<l.length;d++)if(is(s,l[d],l[d+1])<=1e-7&&is(r,l[d],l[d+1])<=1e-7)return!0;return!1},fr=M(()=>{const s=ee.value.length;m.geometryRevision.value;const r=m.serializeSections();let l=0,d=0,p=0,E=0,N=0,G=0,re=!0;r.forEach(oe=>{var ws;re&&(re=q.value.some(he=>he.key===oe.structure_key));const Gt=oe.polygon.geometry,xs=(Gt==null?void 0:Gt.type)==="Polygon"?Gt.coordinates[0]:[],ks=kt({pitch:oe.pitch,structureKey:oe.structure_key});for(let he=0;he+1<xs.length;he++)l+=1,Ms((ws=oe.segments)==null?void 0:ws[he])&&(d+=1);if(oe.facets&&oe.facets.length>1){const he=new Map;oe.facets.forEach(ot=>{const Pa=ot.pitch??ks;p+=1,Pa&&(E+=1),Pa&&Pa!=="flat"&&(N+=1,ot.direction_deg!==null&&(G+=1)),ot.polygon.forEach(($s,Cs)=>{var js;const Ta=ot.polygon[Cs+1];if(!Ta)return;const Ss=vr($s,Ta);pr($s,Ta,xs)||he.set(Ss,he.get(Ss)===!0||Ms((js=ot.segments)==null?void 0:js[Cs]))})}),he.forEach(ot=>{l+=1,ot&&(d+=1)})}else{const he=ks;p+=1,he&&(E+=1),he&&he!=="flat"&&(N+=1,oe.direction_deg!==null&&(G+=1))}});const ve=ye.value?Ee.value.find(oe=>oe.id===ye.value):null,it=ye.value===null?!ct.value:(ve==null?void 0:ve.calibrated)===!0,Sa=s>0&&r.length===s&&J.value.length===0&&!fe.value&&!$.value,ja=[{id:"imagery",label:e("measure.readiness_imagery"),complete:it,detail
1:ye.value===null?"Esri satellite":ve!=null&&ve.calibrated?"Custom imagery calibrated":"Calibrate custom imagery"},{id:"outline",label:e("measure.readiness_outline"),complete:Sa,detail:r.length?`${r.length} roof section${r.length===1?"":"s"}`:"Draw at least one roof section"},{id:"structures",label:e("measure.readiness_structures"),complete:r.length>0&&re,detail:re?`${q.value.length} structure${q.value.length===1?"":"s"}`:"Assign every section"},{id:"edges",label:e("measure.readiness_edges"),complete:l>0&&d===l,detail:`${d} of ${l} report edges`},{id:"pitch",label:e("measure.readiness_pitch"),complete:p>0&&E===p,detail:`${E} of ${p} roof planes`},{id:"direction",label:e("measure.readiness_downslope"),complete:N===G,detail:N===0?"Not required for flat roofs":`${G} of ${N} pitched planes`}];return{items:ja,quickEligible:Sa,detailedEligible:Sa&&ja.filter(oe=>oe.id!=="direction").every(oe=>oe.complete),warnings:ja.filter(oe=>oe.id!=="direction"&&!oe.complete),edgeComplete:d,edgeTotal:l,pitchComplete:E,pitchTotal:p}}),br=new Set(["missing_outline","missing_structure","unclassified_edges","unclassified_facet_edges","missing_pitch","uncalibrated_imagery"]),hr=s=>{const r=`measure.readiness_issue.${s.code}`,l=e(r);return l===r?s.message:l},Q=M(()=>{const s=fr.value,r=wt.value,l=r!==null&&!xe.hasUnsavedChanges.value&&!fe.value&&!$.value,d=((r==null?void 0:r.warnings)??[]).filter(p=>br.has(p.code)).map(p=>({code:p.code,label:hr(p),sectionKey:p.sectionKey??null,sectionName:p.sectionName??null,facetIndex:p.facetIndex??null,edgeIndexes:p.edgeIndexes??(p.facetEdges??[]).map(E=>E.edgeIndex)}));return{...s,quickEligible:s.quickEligible&&(!l||r.quickEligible),detailedEligible:l?r.detailedEligible&&s.quickEligible:s.detailedEligible,serverFresh:l,blockers:l?d:[]}}),fa=()=>JSON.stringify({sections:m.serializeSections(),...h?{sketch:m.serializeSketch()}:{},structures:q.value,roof_type:b.roofType||null,building_type:b.buildingType||null,pitch:b.pitch||null,waste_factor_pct:Number(b.waste)||0,notes:b.notes||null}),_r=hl(f.options.limits,ra),He=()=>(J.value=_r(m.serializeSections()),m.setInvalidSectionKeys([...new Set(J.value.map(s=>{var r;return(r=ee.value[s.sectionIndex])==null?void 0:r.key}).filter(s=>!!s))]),J.value),ba=s=>{var l;const r=(l=ee.value[s.sectionIndex])==null?void 0:l.key;r&&m.zoomToSection(r)},gr=(s,r,l)=>{const d=`measure.validation.${s}`,p=e(d,{count:l??12});return p===d?r:p},yr=s=>{if(!s||typeof s!="object")return[];const r=s.issues;if(!Array.isArray(r))return[];const l=r.flatMap(d=>{if(!d||typeof d!="object")return[];const p=d;return typeof p.section_index!="number"||typeof p.section_name!="string"||typeof p.code!="string"||typeof p.message!="string"?[]:[{sectionIndex:p.section_index,sectionName:p.section_name,code:p.code,message:gr(p.code,p.message,typeof p.count=="number"?p.count:void 0),...p.ring==="outer"||p.ring==="cutout"?{ring:p.ring}:{},...typeof p.ring_index=="number"?{ringIndex:p.ring_index}:{},...typeof p.facet_index=="number"?{facetIndex:p.facet_index}:{},...typeof p.related_section_index=="number"?{relatedSectionIndex:p.related_section_index}:{},...typeof p.related_section_name=="string"?{relatedSectionName:p.related_section_name}:{}}]});return l.length&&(J.value=l,m.setInvalidSectionKeys([...new Set(l.map(d=>{var p;return(p=ee.value[d.sectionIndex])==null?void 0:p.key}).filter(d=>!!d))])),l},xr=async()=>{var l;const s=fa(),r={sections:m.serializeSections(),...h?{sketch:m.serializeSketch()}:{},structures:q.value.map(d=>({key:d.key,name:d.name,roof_type:d.roofType,building_type:d.buildingType,default_pitch:d.defaultPitch})),roof_type:b.roofType||null,building_type:b.buildingType||null,pitch:b.pitch||null,waste_factor_pct:Number(b.waste)||0,notes:b.notes||null,map:m.mapState()};try{const d=await Fe(`/api/projects/${f.project.uuid}`,"PUT",r);return fa()!==s||(zt.value={plan:d.totals.areaSqft,adjusted:d.totals.adjustedSqft,squares:d.totals.squares,squaresWaste:d.totals.squaresWithWaste},m.reconcileSections(d.sections),q.value=d.structures.map(p=>({...p})),gt.value=d.recommendedWaste,et.value=d.measurementDirty??!0,typeof d.latestVersion=="number"&&(qe.value=d.latestVersion),d.readiness&&(wt.value=d.readiness),J.value=[],m.setInvalidSectionKeys([])),!0}catch(d){if(d instanceof Is)return!1;if(d instanceof Ne&&d.status===422){const p=yr(d.details);P(((l=p[0])==null?void 0:l.message)??d.message,{tone:"error",persist:!0})}else P(d instanceof Ne?d.message:e("measure.save_error_retry"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:()=>void We()}});return!1}},kr=async()=>{const s=m.mapState();if(!s)return!0;try{return await Fe(`/api/projects/${f.project.uuid}/viewport`,"PATCH",{map:s}),!0}catch{return!1}},xe=ju({enabled:!v,debounceMs:800,fingerprint:fa,canPersist:()=>!x.value&&!$.value,validate:()=>He().length===0,persist:xr,revision:m.geometryRevision,persistViewport:kr,viewportDebounceMs:1200}),Rt=xe.state,We=xe.save,Ge=M(()=>fe.value&&Rt.value!=="saving"&&Rt.value!=="error"?"dirty":Rt.value);Ue(Rt,(s,r)=>{s==="error"&&r!=="error"&&ae("measure_autosave_failed")});const rt=()=>{if(!me.value){if(zt.value=null,et.value=!0,$.value){He();return}if(v){He(),u&&!at&&(clearTimeout(ia),ia=setTimeout(()=>st(),300));return}xe.queue()}},wr=()=>{me.value||v||w.value||xe.queueViewport()};Ue(b,rt),Ue(()=>[b.pitch,...q.value.map(s=>s.defaultPitch)],()=>{me.value||m.refreshPitchDefaults()});let Nt=null,$t=!1,Ct=!1;const os=s=>{u&&!at&&st(),!(!fe.value&&!$.value&&!xe.hasUnsavedChanges.value)&&(s.preventDefault(),s.returnValue="")},ns=()=>{u&&!at&&document.visibilityState==="hidden"&&st(),document.visibilityState==="hidden"&&xe.hasUnsavedChanges.value&&We()},us=()=>{u&&!at&&st(),xe.hasUnsavedChanges.value&&We()},$r=()=>{Nt=Jt.on("before",s=>{const r=s.detail.visit;if(r.prefetch||Ct)return;const l=fe.value,d=!!$.value,p=!v&&xe.hasUnsavedChanges.value;if(!l&&!d&&!p)return;if($t)return!1;if(d)return P(e("measure.keep_discard_first")),!1;$t=!0;const E=r.url,N={...r};delete N.url,delete N.completed,delete N.cancelled,delete N.interrupted;const G=()=>{Ct=!0,Jt.visit(E,N),queueMicrotask(()=>Ct=!1)};return(async()=>
1{if(l&&!await oa()){$t=!1;return}if(!p||await We()){$t=!1,G();return}$t=!1,P(e("measure.save_before_leave_failed"),{tone:"error",persist:!0,action:{label:e("measure.leave_anyway"),onClick:G}})})(),!1})},Cr=M(()=>({idle:"bg-vr-dim/40",dirty:"bg-vr-amber",saving:"bg-vr-ai animate-pulse",saved:"bg-vr-ok",error:"bg-red-400"})[Ge.value]);let be=null,Ze=0,ze=null;const ha=()=>{Ze+=1,ze==null||ze.abort("cancelled"),ze=null,v&&W.cancel(),V.value=!1},Je=async()=>{await W.init()&&be?_a(be.lon,be.lat,be.bbox,be.zoom,be.pixel):W.status.value==="error"&&P(e("measure.on_device_error"),{tone:"error",action:{label:e("common.retry"),onClick:()=>void Je()}})},ds=()=>{if(v&&W.status.value==="error"){Je();return}be&&_a(be.lon,be.lat,be.bbox,be.zoom,be.pixel)},_a=async(s,r,l,d,p)=>{if(V.value){P(e("measure.ai_already_running"));return}be={lon:s,lat:r,bbox:l,zoom:d,pixel:p};const E=++Ze,N=typeof performance<"u"?performance.now():Date.now();if(ae("measure_ai_started",{engine:v?"device":"server"}),v){await Sr(p,E,N);return}ze==null||ze.abort("superseded"),ze=new AbortController,V.value=!0;try{const G=await Fe(`/api/projects/${f.project.uuid}/ai/segment`,"POST",{click:{lon:s,lat:r},bbox:l,zoom:d},{signal:ze.signal});if(E!==Ze)return;if(G.ok&&G.polygon){x.value=!0;try{const re=m.addAiFeature(G.polygon,G.confidence??null);re&&($.value=re,D.value=crypto.randomUUID(),P(e("measure.ai_draft_added"),{tone:"success"}),ie("edit"),ae("measure_ai_succeeded",{engine:"server",duration_ms:Math.round((typeof performance<"u"?performance.now():Date.now())-N)}))}finally{x.value=!1}}else G.error==="no_mask_found"?(ae("measure_ai_failed",{engine:"server",reason:"no_roof"}),P(e("measure.no_roof_found"))):G.error==="tile_fetch_failed"?(ae("measure_ai_failed",{engine:"server",reason:"imagery"}),P(e("measure.imagery_slow"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:ds}})):(ae("measure_ai_failed",{engine:"server",reason:G.error??"unknown"}),P(e("measure.area_too_large")))}catch(G){if(E!==Ze||G instanceof Is)return;ae("measure_ai_failed",{engine:"server",reason:G instanceof Ne?`http_${G.status}`:"network"}),G instanceof Ne&&G.status===503?P(e("measure.ai_offline"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:ds}}):P(e("measure.ai_unavailable")),ie(je.value?"measure":"draw")}finally{E===Ze&&(V.value=!1,ze=null)}},Sr=async(s,r,l)=>{var d,p;if(!u&&!((d=X.value)!=null&&d.canUseFreeAi)){P(e("measure.used_free_trial",{limit:((p=X.value)==null?void 0:p.limit)??0}));return}if(W.status.value==="error"){P(e("measure.on_device_error"),{tone:"error",action:{label:e("common.retry"),onClick:()=>void Je()}});return}if(W.status.value==="unsupported"){P(u?e("measure.device_guest_upgrade"):e("measure.device_trial_upgrade"));return}if(W.status.value==="checking"||W.status.value==="loading"||W.status.value==="idle"){P(e("measure.ai_still_loading"));return}if(W.status.value!=="ready"||!m.map.value){P(e("measure.on_device_error"),{tone:"error"});return}if(!yt.value||ct.value){P(ct.value?e("measure.imagery_unavailable"):e("measure.imagery_still_loading"));return}if($.value){P(e("measure.keep_discard_first"));return}V.value=!0;try{const E=await W.segmentAt(m.map.value,s);if(r!==Ze)return;if(E.kind!=="success"){ae("measure_ai_failed",{engine:"device",reason:E.kind}),E.kind==="not-ready"?P(e("measure.ai_still_loading")):E.kind==="imagery-pending"?P(e("measure.imagery_still_loading")):E.kind==="busy"?P(e("measure.ai_already_running")):E.kind==="capture-error"?P(e("measure.imagery_capture_error"),{tone:"error"}):E.kind==="timeout"?P(e("measure.ai_timed_out"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:()=>void Je()}}):E.kind==="failed"?P(e("measure.on_device_error"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:()=>void Je()}}):E.kind==="no-roof"&&P(e("measure.no_roof_found_short"));return}x.value=!0;try{const N=m.addAiFeature(E.feature,E.confidence);N&&($.value=N,D.value=crypto.randomUUID(),ie("edit"),ae("measure_ai_succeeded",{engine:"device",duration_ms:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}))}finally{x.value=!1}}catch{if(r!==Ze)return;ae("measure_ai_failed",{engine:"device",reason:"exception"}),P(e("measure.on_device_error"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:()=>void Je()}})}finally{r===Ze&&(V.value=!1)}};Ue(Y,s=>{s!=="ai"&&V.value&&ha()});const cs=async()=>{var r;if(!$.value||K.value)return;const s=He();if(s.length){ba(s[0]),P(e("measure.fix_ai_before_keep"),{tone:"error"});return}if(u){await pe(k);return}if(!v){ae("measure_ai_kept",{engine:"server"}),$.value=null,D.value=null,rt(),ie(je.value?"measure":"edit");return}K.value=!0;try{const l=ee.value.findIndex(E=>E.key===$.value),d=(r=m.serializeSections()[l])==null?void 0:r.polygon;if(!d){P(e("measure.fix_ai_before_keep"),{tone:"error"});return}const p=await Fe(`/api/projects/${f.project.uuid}/free-ai/confirm`,"POST",{idempotency_key:D.value??(D.value=crypto.randomUUID()),polygon:d});p.quota&&(X.value=p.quota),$.value=null,D.value=null,ae("measure_ai_kept",{engine:"device"})}catch(l){l instanceof Ne&&l.status===402?(ga(),X.value&&(X.value={...X.value,remaining:0,used:X.value.limit,canUseFreeAi:!1})):l instanceof Ne&&l.status===422?P(l.message||e("measure.fix_ai_before_keep"),{tone:"error"}):P(e("measure.confirm_error"),{tone:"error",persist:!0,action:{label:e("common.retry"),onClick:()=>void cs()}})}finally{K.value=!1}},ga=()=>{$.value&&ae("measure_ai_discarded",{engine:v?"device":"server"}),$.value&&m.discardSection($.value),$.value=null,D.value=null,rt()},jr=M(()=>({idle:"",saving:e("measure.saving_measurement"),framing:e("measure.framing_report"),rendering:e("measure.generating_preview")})[O.value]),Bt=async()=>{R.value=!1,typeof window<"u"&&!window.matchMedia("(min-width: 1024px)").matches&&(se.value=!0),await Os(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{var r;(r=Array.from(document.querySelectorAll("[data-measure-default-pitch]")).find(l=>l.getClientRects().length>0))==null||r.focus()})})},ya=async s=>{var N,G;if(v){await pe();return}if(fe.value){P(e("measure.finish_outline_first"));return}if($.value){P(e("measure.keep_discard_first"));return}if(He(),!Q.value.quickEligible){P(((N=J.value[0])==null?void 0:N.message)??e("measure.outline_first"),{tone:"error"});return}if(s==="detailed"&&!Q.value.detailedEligible){_.value=!0,ae("measure_readiness_blocked",{mode:s,warnings:Q.value.warnings.length}),P(e("measure.detailed_blocked"),{tone:"error"});return}_.value=!1;const r=m.editorViewState(),l=Y.value,d=typeof performance<"u"?performance.now():Date.now();if(O.value="saving",ae("measure_finish_started",{sections:ee.value.length,structures:q.value.length,report_mode:s}),!await We()){O.value="idle";return}if(s==="detailed"&&((G=wt.value)==null?void 0:G.detailedEligible)===!1){O.value="idle",_.value=!0,ae("measure_readiness_blocked",{mode:s,warnings:wt.value.warnings.length}),P(e("measure.detailed_blocked"),{tone:"error"});return}O.value="framing",ie("pan"),m.resetRotation(),m.fitToAllSections(),O.value="rendering";const E=await m.exportSnapshot({aspect:3/2,maxWidth:1600,presentation:!0});if(!E){O.value="idle",m.restoreEditorView(r),ie(l),P(e("measure.render_failed"),{tone:"error",persist:!0});return}try{await Fe(`/api/projects/${f.project.uuid}/snapshot`,"POST",{image:E})}catch{O.value="idle",m.restoreEditorView(r),ie(l),P(e("measure.preview_save_failed"),{tone:"error",persist:!0});return}try{const re=await Fe(`/api/projects/${f.project.uuid}/measurement-versions`,"POST",{mode:s});
1qe.value=re.version,et.value=!1,ae("measure_report_published",{sections:ee.value.length,structures:q.value.length,report_mode:s,duration_ms:Math.round((typeof performance<"u"?performance.now():Date.now())-d)}),Jt.visit(re.reportUrl)}catch(re){O.value="idle",m.restoreEditorView(r),ie(l);const ve=re instanceof Ne?re.details:void 0;if((ve==null?void 0:ve.code)==="measurement_not_ready"&&ve.readiness){wt.value=ve.readiness,_.value=!0,P(e("measure.detailed_blocked"),{tone:"error"});return}P(re instanceof Ne?re.message:e("measure.save_error_retry"),{tone:"error",persist:!0})}},Pr=s=>{s.sectionKey&&(_.value=!1,m.zoomToSection(s.sectionKey))},ms=()=>{if(v){pe();return}He(),_.value=!0},Tr=()=>void ya("quick"),Ar=()=>void ya("detailed"),Ir=()=>{R.value=!1,ya("quick")},je=I(!0),Xe=I(!1),xa=I(!1),Pe=I(f.sections.length?h?"pitch":"review":h?"outline":"imagery"),Ye=[{id:"measure",icon:Pl,label:e("measure.tool_measure"),hint:h?e("measure.tool_lines_hint"):e("measure.tool_measure_hint")},{id:"pan",icon:Sl,label:e("measure.tool_pan"),hint:e("measure.tool_pan_hint")},{id:"draw",icon:Es,label:h?e("measure.tool_outline"):e("measure.tool_draw"),hint:h?e("measure.tool_outline_hint"):e("measure.tool_draw_hint")},{id:"edit",icon:yl,label:e("measure.tool_edit"),hint:e("measure.tool_edit_hint")},{id:"cutout",icon:Xs,label:h?e("measure.tool_exclusion_outline"):e("measure.tool_cutout"),hint:e("measure.tool_cutout_hint")},{id:"classify",icon:bt,label:e("measure.tool_walls"),hint:e("measure.tool_walls_hint")},{id:"facet",icon:Al,label:h?e("measure.tool_add_lines"):e("measure.tool_split"),hint:h?e("measure.tool_add_lines_hint"):e("measure.tool_split_hint")},{id:"pitch",icon:Fs,label:e("measure.tool_facet_select"),hint:e("measure.tool_facet_select_hint")},{id:"exclude",icon:Aa,label:e("measure.delete_facet"),hint:e("measure.delete_facet_hint")},{id:"direction",icon:La,label:e("measure.slope_direction"),hint:e("measure.direction_map_hint")},{id:"erase",icon:Aa,label:e("measure.tool_erase"),hint:e("measure.tool_erase_hint")}],lt=M(()=>h&&!v?Pe.value==="edges"?Ye.filter(s=>["classify","pan"].includes(s.id)):Pe.value==="pitch"?Ye.filter(s=>["pitch","exclude","measure","direction","pan"].includes(s.id)):Ye.filter(s=>["measure","erase","pan"].includes(s.id)):v?Ye.filter(s=>(u?je.value?["measure","pan","erase"]:["draw","edit","cutout","erase","pan"]:["pan","edit","erase"]).includes(s.id)):je.value?Ye.filter(s=>["measure","pan","classify","pitch","direction"].includes(s.id)):Ye.filter(s=>!["measure","exclude"].includes(s.id))),Mr=M(()=>h?["measure","pan","classify","pitch","exclude","direction"]:je.value?["measure","pan","classify","pitch","direction"]:Ye.filter(s=>!["measure","exclude"].includes(s.id)).map(s=>s.id)),vs=M(()=>{if(!v)return[];const s=new Set(lt.value.map(r=>r.id));return Ye.filter(r=>Mr.value.includes(r.id)&&!s.has(r.id)&&r.id!=="pan"&&r.id!=="erase")}),Lr=M(()=>{const s=je.value?["measure"]:["draw","edit"];return lt.value.filter(r=>r.id==="pan"||s.includes(r.id))}),Fr=M(()=>lt.value.filter(s=>!["pan","measure","draw","edit"].includes(s.id))),qr=M(()=>Object.entries(f.options.wallTypes).map(([s,r])=>({key:s,label:r.label,color:r.color}))),Ot=M(()=>v?!0:f.aiEnabled),Vt=M(()=>V.value||v&&(tt.value&&(W.status.value==="checking"||W.status.value==="loading")||!yt.value||ct.value)),ps=s=>{P(e("measure.paid_tool_reason",{tool:s}),{action:{label:u?e("measure.sign_up"):e("common.upgrade"),onClick:()=>void pe()}})},Te=async s=>{if(s===Y.value)return;const r=vs.value.find(l=>l.id===s);if(r){ps(r.label);return}if(await oa()){if(xa.value=!0,s==="ai"&&v){if(W.status.value==="idle"||W.status.value==="checking"||W.status.value==="loading"){if(tt.value=!0,ae("measure_ai_model_requested",{size_mb:43}),!await W.init()){const d=W.status.value;d==="unsupported"?P(u?e("measure.device_guest_upgrade"):e("measure.device_trial_upgrade")):d==="error"&&P(e("measure.on_device_error"),{tone:"error"});return}ie("ai"),Pe.value="outline";return}if(W.status.value==="unsupported"){P(u?e("measure.device_guest_upgrade"):e("measure.device_trial_upgrade"));return}if(W.status.value==="error"){P(e("measure.on_device_error"),{tone:"error",action:{label:e("common.retry"),onClick:()=>void Je()}});return}if(Vt.value){P(yt.value?e("measure.ai_still_loading"):e("measure.imagery_still_loading"));return}}ie(s)}},fs=M(()=>
1{if(h){const r=l=>{var d;return((d=Q.value.items.find(p=>p.id===l))==null?void 0:d.complete)??!1};return[{id:"outline",label:e("measure.workflow_draw"),icon:Es,complete:r("outline")},{id:"edges",label:e("measure.workflow_edges"),icon:bt,complete:r("edges")},{id:"pitch",label:e("measure.workflow_facets"),icon:Fs,complete:r("pitch")}]}const s=r=>{var l;return((l=Q.value.items.find(d=>d.id===r))==null?void 0:l.complete)??!1};return[{id:"imagery",label:e("measure.workflow_imagery"),icon:sl,complete:s("imagery")},{id:"outline",label:e("measure.workflow_outline"),icon:Ks,complete:s("outline")},{id:"edges",label:e("measure.workflow_edges"),icon:bt,complete:s("edges")},{id:"pitch",label:e("measure.workflow_pitch"),icon:La,complete:s("pitch")&&s("direction")},{id:"review",label:e("measure.workflow_review"),icon:Me,complete:Q.value.detailedEligible}]}),Er=async s=>{if(s==="edges"&&v){ps(e("measure.workflow_edges"));return}Pe.value=s,ae("measure_workflow_stage_opened",{stage:s}),s==="imagery"?(ie("pan"),Xe.value&&(se.value=!0)):s==="outline"?(se.value=!1,await Te("measure")):s==="edges"?(se.value=!1,await Te("classify")):s==="pitch"?v?(ie("pan"),Xe.value&&(se.value=!0)):(se.value=!1,await Te("pitch")):(ie("pan"),Xe.value&&(se.value=!0))};Ue(Y,s=>{s==="classify"?Pe.value="edges":s==="direction"||s==="pitch"||s==="exclude"?Pe.value="pitch":["measure","draw","edit","cutout","facet","ai"].includes(s)&&(Pe.value="outline")});const bs=M(()=>{var s;return Y.value==="ai"?V.value?"":ke.value==="unsupported"?e("measure.free_ai_unavailable"):e("measure.ai_mode_hint"):Xe.value&&h&&Y.value==="measure"?e("measure.tool_lines_hint_touch"):((s=lt.value.find(r=>r.id===Y.value))==null?void 0:s.hint)??""});Ue([W.status,yt],([s,r])=>{v&&s==="ready"&&r&&!xa.value&&Y.value==="pan"&&ie("ai"),u&&s==="unsupported"&&!xa.value&&ie(je.value?"measure":"draw")});const Dr=M(()=>{var s;return Y.value==="ai"?e("measure.ai_detect"):((s=lt.value.find(r=>r.id===Y.value))==null?void 0:s.label)??""}),zr=M(()=>V.value?"cursor-wait":Y.value==="pan"?"cursor-grab active:cursor-grabbing":Y.value==="edit"?"cursor-move":Y.value==="erase"?"cursor-not-allowed":Y.value==="classify"?"cursor-pointer":"cursor-crosshair"),Ur=M(()=>{const s=lt.value.map(r=>({label:r.label,hint:r.hint,icon:r.icon}));return Ot.value&&s.push({label:e("measure.ai_detect"),hint:v?ke.value==="unsupported"?e("measure.free_ai_unavailable"):e("measure.ai_device_hint"):e("measure.ai_server_hint"),icon:ut}),s}),Rr=M(()=>v&&ke.value!=="unsupported"?[e("measure.gesture_click_roof_detect"),e("measure.gesture_drag_corner"),e("measure.gesture_right_click_delete")]:v&&!u?[e("measure.gesture_drag_corner"),e("measure.gesture_right_click_delete")]:je.value?[e("measure.gesture_click_add"),e("measure.gesture_drag_corner"),e("measure.gesture_drag_wall"),e("measure.gesture_right_click_delete")]:[e("measure.gesture_click_add"),e("measure.gesture_double_click_close"),e("measure.gesture_drag_corner"),e("measure.gesture_right_click_delete")]),ke=M(()=>v?X.value&&!X.value.canUseFreeAi&&!$.value?"limit":W.status.value==="idle"?null:W.status.value==="checking"?tt.value?"checking":null:W.status.value==="loading"?tt.value?"loading":null:W.status.value==="unsupported"?"unsupported":W.status.value==="error"?"error":"ready":null),vt=M(()=>ke.value!=="unsupported"),Nr=M(()=>v?vt.value?e("measure.ai_free_title"):e("measure.free_ai_unavailable"):e("measure.ai_title")),Br=M(()=>W.errorReason.value==="cancelled"?e("measure.ai_cancelled_note"):W.errorReason.value==="download-stalled"||W.errorReason.value==="load-timeout"?e("measure.ai_download_timed_out"):W.errorReason.value==="inference-timeout"?e("measure.ai_timed_out"):e("measure.device_model_failed_note")),ka=I(!1),{seen:Kt,markSeen:Ht,reset:wa}=Pu(),Wt=I(!1),St=I(!1),$a=I(!1),Ca=I(!1),hs=I(!1);let _s;const Or=M(()=>!yt.value&&!ct.value&&!hs.value),Vr=M(()=>Xe.value&&!Ca.value&&ee.value.length>0&&(Y.value==="edit"||Y.value==="measure"||Y.value==="cutout")),Kr=()=>{Wt.value=!1,Ht(Ie.coach)},Hr=()=>{wa(Ie.coach),St.value=!1,Wt.value=!0},Wr=s=>{$a.value=s,s?Ht(Ie.legendCollapsed):wa(Ie.legendCollapsed)},Gr=()=>{Ca.value=!0,Ht(Ie.touchHint)};return Rs(()=>{var s,r;if(Xe.value=typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)").matches:!1,$a.value=Kt(Ie.legendCollapsed),qt.value=Kt(Ie.facetPanelCollapsed),Ca.value=Kt(Ie.touchHint),window.addEventListener("keydown",ls),typeof window<"u"&&window.location.search.includes("smoke=1")&&(window.__vrMeasure={pixelFromLonLat:(l,d)=>m.pixelFromLonLat(l,d),sections:()=>JSON.parse(JSON.stringify(ee.value)),selectedFacet:()=>m.selectedFacet.value,payload:()=>JSON.parse(JSON.stringify(m.serializeSections())),activePitch:()=>m.activePitch.value,saved:()=>!xe.hasUnsavedChanges.value,mode:()=>Y.value,snapAt:(l,d)=>m.snapPreview([l,d]),sketching:()=>fe.value,sketchPoints:()=>
1m.sketchPoints().map(l=>l.slice()),sketch:()=>m.serializeSketch(),chainActive:()=>m.chainActive.value,addLine:l=>m.addSketchLine(l),floatingIslands:()=>m.floatingIslands.value}),_s=setTimeout(()=>hs.value=!0,6e3),z.value){m.init(z.value);const l=Ee.value.find(E=>E.id===ye.value),d=l?Oa(l):null;d&&m.setCustomImagery(d),(s=m.map.value)==null||s.on("pointermove",tr),Ke=((r=m.map.value)==null?void 0:r.getViewport())??null,Ke==null||Ke.addEventListener("pointerleave",Za),m.loadSections(f.sections,f.project.sketch??null),m.reconcileSections(f.sections),xe.setBaseline();let p=!1;if(u||f.mode==="full")try{const E=window.sessionStorage.getItem(dt);if(E){const N=JSON.parse(E);if([1,2,3].includes(N.version)&&Number.isFinite(N.savedAt)&&Date.now()-N.savedAt>=0&&Date.now()-N.savedAt<=pm&&Array.isArray(N.sections)){const G=()=>{var ve;const re=me.value;me.value=!0,m.clearAll(),(ve=N.structures)!=null&&ve.length&&(q.value=N.structures),Object.assign(b,N.form),m.loadSections(N.sections.map(it=>({...it,clientKey:it.client_key,structureKey:it.structure_key,directionDeg:it.direction_deg,isAiGenerated:it.is_ai_generated??!1})),N.sketch??null),m.restoreEditorView(N.viewport??null),me.value=re,zt.value=null};N.baseline===Wa||N.version===1&&f.sections.length===0?(G(),p=!0):(at=!0,Ce({title:"Recover your roof edits?",description:"This tab contains roof edits from before you signed in or refreshed. Restore them instead of the saved outline?",confirmLabel:"Restore my edits",destructive:!1}).then(async re=>{at=!1,re&&(G(),He(),u?st():await We()&&window.sessionStorage.removeItem(dt))}))}else window.sessionStorage.removeItem(dt)}}catch{window.sessionStorage.removeItem(dt)}me.value=!1,He(),p&&!u&&We().then(E=>
1{E&&(window.sessionStorage.removeItem(dt),P(e("measure.draft_restored"),{tone:"success"}))}),v?ie(u?je.value?"measure":"draw":"pan"):ee.value.length===0&&f.aiEnabled?ie("ai"):ie(je.value?"measure":"draw")}ae("measure_editor_open",{tier:u?"guest":v?"free":"full",editor_version:f.options.editorVersion,existing_sections:f.sections.length,custom_imagery:ye.value!==null}),window.addEventListener("beforeunload",os),window.addEventListener("pagehide",us),document.addEventListener("visibilitychange",ns),$r(),Kt(Ie.coach)||(Wt.value=!0)}),Ue(()=>ee.value.length,s=>{It||s===0||(It=!0,ae("measure_first_roof",{source:x.value||$.value?"ai":"manual",time_ms:Math.round((typeof performance<"u"?performance.now():Date.now())-aa)}))}),Ue(W.status,(s,r)=>{s==="unsupported"&&r!=="unsupported"&&u&&ae("measure_manual_fallback",{reason:"webgpu_unsupported"})}),Ns(()=>{clearTimeout(ia),u&&!at&&st(),ha(),W.dispose(),window.removeEventListener("keydown",ls),window.removeEventListener("beforeunload",os),window.removeEventListener("pagehide",us),document.removeEventListener("visibilitychange",ns),Nt==null||Nt(),xe.dispose(),clearTimeout(_s),Ke==null||Ke.removeEventListener("pointerleave",Za),Ke=null,m.destroy()}),(s,r)=>(o(),n(U,null,[c(t(gl),{title:`${t(e)("measure.measuring")} ${s.project.address}`},{default:S(()=>r[46]||(r[46]=[a("meta",{name:"robots",content:"noindex, nofollow"},null,-1)])),_:1},8,["title"]),a("div",{class:B(["vr-measure-shell flex h-dvh flex-col overflow-hidden bg-vr-ink font-sans text-vr-text",{"is-guest":u}]),"data-measure-editor":f.options.editorVersion,"data-measure-section-count":t(ee).length,"data-measure-total-sqft":Ut.value.adjusted},[a("header",Au,[c(t(pt),{href:u?"/":`/projects/${s.project.uuid}`,onClick:er,class:"flex h-11 items-center gap-1.5 rounded-lg px-1 text-vr-dim transition hover:bg-vr-raise hover:text-vr-text",title:u?t(e)("common.back_to_dashboard"):t(e)("common.back_to_job"),"aria-label":u?t(e)("common.back_to_dashboard"):t(e)("common.back_to_job")},{default:S(()=>[c(t(Ws),{class:"h-4 w-4"}),c(Qr,{size:24})]),_:1},8,["href","title","aria-label"]),a("div",Iu,[a("button",{type:"button",class:"flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-vr-amber transition hover:bg-vr-raise focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",title:t(e)("measure.recenter_address",{address:s.project.locationLabel}),"aria-label":t(e)("measure.recenter_address",{address:s.project.locationLabel}),"data-measure-recenter":"",onClick:r[0]||(r[0]=l=>t(m).recenterToAddress())},[c(t(rl),{class:"h-5 w-5"})],8,Mu),a("div",Lu,[u?(o(),n("p",Fu,i(H.value),1)):(o(),F(Yr,{key:0,"project-uuid":s.project.uuid,name:H.value,"text-class":"text-sm font-semibold leading-tight","input-class":"text-sm font-semibold",onRenamed:r[1]||(r[1]=l=>H.value=l)},null,8,["project-uuid","name"])),a("p",qu,i(u?t(e)("measure.preview_status"):v?vt.value?t(e)("measure.free_device_status"):t(e)("measure.manual_status"):t(e)("measure.satellite_status")),1)])]),v?y("",!0):(o(),n("span",Eu,[Ge.value==="saving"?(o(),n(U,{key:0},[T(i(t(e)("measure.saving_status")),1)],64)):Ge.value==="saved"?(o(),n("span",Du,i(t(e)("measure.saved_status")),1)):Ge.value==="dirty"?(o(),n(U,{key:2},[T(i(t(e)("measure.unsaved_changes")),1)],64)):Ge.value==="error"?(o(),n("span",zu,i(t(e)("measure.save_failed")),1)):y("",!0)])),v?y("",!0):(o(),n("span",Uu,[qe.value?(o(),n("span",Ru,"v"+i(qe.value),1)):(o(),n("span",Nu,i(t(e)("measure.not_published")),1)),et.value?(o(),n("span",Bu,"· "+i(t(e)("measure.unpublished_changes")),1)):y("",!0)])),v?y("",!0):(o(),n("button",{key:2,type:"button",class:"vr-tap-sq flex h-9 w-9 items-center justify-center rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 md:hidden",title:Ge.value==="error"?t(e)("measure.save_failed_retry"):t(e)("measure.changes_state",{state:Ge.value}),onClick:r[2]||(r[2]=l=>Ge.value==="error"&&t(We)())},[a("span",{class:B(["h-2.5 w-2.5 rounded-full",Cr.value])},null,2)],8,Ou)),v&&X.value&&!u?(o(),n("button",{key:3,type:"button",class:B(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 font-mono text-[11px] transition",X.value.remaining<=2?"border-vr-amber/60 bg-vr-amber/10 text-vr-amber":"border-vr-line bg-vr-raise text-vr-dim"]),title:vt.value?t(e)("measure.free_ai_supp
1orted"):t(e)("measure.free_ai_unavailable"),onClick:r[3]||(r[3]=l=>pe("/pricing"))},[c(t(Hs),{class:B(["h-3.5 w-3.5",X.value.remaining<=2?"text-vr-amber":"text-vr-ai"])},null,8,["class"]),a("span",Ku,i(t(e)("measure.free_left",{remaining:X.value.remaining,limit:X.value.limit})),1),a("span",Hu,i(t(e)("measure.free_short",{remaining:X.value.remaining})),1)],10,Vu)):y("",!0),a("button",{type:"button",class:"vr-tap-sq flex h-9 w-9 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",title:t(e)("measure.help_shortcuts"),"aria-label":t(e)("measure.help_shortcuts"),onClick:r[4]||(r[4]=l=>St.value=!0)},[c(t(Js),{class:"h-5 w-5"})],8,Wu),v?(o(),F(t(pt),{key:5,href:A.value,class:"hidden h-10 items-center gap-2 rounded-lg bg-vr-amber px-4 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi lg:inline-flex",onClick:r[5]||(r[5]=Le(l=>pe(),["prevent"]))},{default:S(()=>[c(t(ta),{class:"h-4 w-4"}),T(" "+i(u?t(e)("measure.create_free_account"):t(e)("measure.create_reports")),1)]),_:1},8,["href"])):(o(),n("button",{key:4,type:"button",class:"hidden h-10 items-center gap-2 rounded-lg bg-vr-amber px-4 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi disabled:opacity-60 lg:inline-flex",disabled:w.value||t(fe),title:t(fe)?t(e)("measure.finish_outline_first"):void 0,onClick:ms},[w.value?(o(),F(t($e),{key:0,class:"h-4 w-4 animate-spin"})):(o(),F(t(Me),{key:1,class:"h-4 w-4"})),T(" "+i(t(e)("measure.finish")),1),a("span",Zu,"Â & "+i(t(e)("report.get_report")),1)],8,Gu))]),u?(o(),F(t(pt),{key:0,href:k,class:"z-10 flex shrink-0 flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5 border-b border-vr-amber/30 bg-vr-amber/10 px-3 py-1.5 text-center text-[12px] leading-tight text-vr-text transition hover:bg-vr-amber/15",onClick:r[6]||(r[6]=Le(l=>pe(k),["prevent"]))},{default:S(()=>[c(t(ut),{class:"h-3.5 w-3.5 text-vr-amber"}),a("span",Ju,i(t(e)("measure.preview_banner")),1),a("span",Xu,i(t(e)("measure.create_free_account")),1),a("span",Yu,i(t(e)("measure.keep_download_report",{days:t(C)})),1)]),_:1})):y("",!0),a("nav",{"aria-label":"Measurement workflow",class:B(["z-10 grid h-12 shrink-0 border-b border-vr-line bg-vr-panel/95 px-1 sm:px-3",h?"grid-cols-3":"grid-cols-5"])},[(o(!0),n(U,null,Z(fs.value,(l,d)=>(o(),n("button",{key:l.id,type:"button",class:B(["group relative flex min-w-0 items-center justify-center gap-1 rounded-lg px-0.5 text-[10px] font-semibold transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-vr-amber/70 sm:gap-1.5 sm:px-1 sm:text-xs",Pe.value===l.id?"bg-vr-raise text-vr-text":"text-vr-dim hover:text-vr-text"]),"aria-current":Pe.value===l.id?"step":void 0,"aria-label":`${d+1}. ${l.label}${l.complete?", complete":", incomplete"}`,"data-measure-stage":l.id,onClick:p=>Er(l.id)},[a("span",{class:B(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full border",l.complete?"border-vr-ok/50 bg-vr-ok/10 text-vr-ok":Pe.value===l.id?"border-vr-amber/60 text-vr-amber":"border-vr-line"])},[l.complete?(o(),F(t(Me),{key:0,class:"h-3.5 w-3.5"})):(o(),F(ft(l.icon),{key:1,class:"h-3.5 w-3.5"}))],2),a("span",ed,i(l.label),1),d<fs.value.length-1?(o(),n("span",td)):y("",!0)],10,Qu))),128))],2),a("div",{class:B(["relative flex min-h-0 flex-1",{"vr-facet-drawer-open":xt.value,"vr-facet-drawer-expanded":xt.value&&!qt.value}])},[a("div",ad,[a("div",{ref_key:"mapEl",ref:z,"data-measure-map":"",class:B(["h-full w-full bg-vr-raise",zr.value])},null,2),Or.value?(o(),n("div",sd,[c(t(cl),{class:"absolute inset-0 rounded-none"}),c(t($e),{class:"relative h-6 w-6 animate-spin text-vr-dim"}),a("p",rd,i(t(e)("measure.loading_satellite")),1)])):y("",!0),V.value?(o(),n("div",ld,[c(we,{tone:"ai",class:"p-3 text-center"},{default:S(()=>[a("div",id,[c(t($e),{class:"h-4 w-4 animate-spin text-vr-ai"}),a("span",od,i(v?t(e)("measure.detecting_roof_device"):t(e)("measure.detecting_roof")),1)]),v&&t(W).slow.value?(o(),n("p",nd,i(t(e)("measure.ai_taking_longer")),1)):y("",!0),a("button",{type:"button",class:"mt-2 h-9 rounded-lg px-3 text-xs font-semibold text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-ai/70",onClick:ha},i(t(e)("common.cancel")),1)]),_:1})])):y("",!0),De.value&&te.inside?(o(),n("div",{key:2,class:"vr-z-overlay pointer-events-none absolute left-0 top-0 overflow-hidden",style:_e({width:`${te.w}px`,height:`${te.h}px`})},[a("div",{class:"absolute left-0 right-0",style:_e({top:`${te.y}px`,height:"2px",backgroundColor:"#ff2d2d",boxShadow:"0 0 0 1px rgba(0,0,0,0.45)"})},null,4),a("div",{class:"absolute bottom-0 top-0",style:_e({left:`${te.x}px`,width:"2px",backgroundColor:"#ff2d2d",boxShadow:"0 0 0 1px rgba(0,0,0,0.45)"})},null,4),a("div",{class:"absolute",style:_e({left:`${te.x-8}px`,top:`${te.y-8}px`,width:"16px",height:"16px",borderRadius:te.locked?"50%":"2px",border:`2px solid ${te.locked?"#22d3ee":"#ff2d2d"}`,backgroundColor:te.locked?"rgba(34,211,238,0.35)":"transparent",boxShadow:"0 0 0 1px rgba(0,0,0,0.45), inset 0 0 0 1px rgba(0,0,0,0.25)"})},null,4),te.locked?(o(),n("div",{key:Ga.value,class:"vr-snap-pulse absolute rounded-full border-2",style:_e({left:`${te.x}px`,top:`${te.y}px`,width:"16px",height:"16px",borderColor:"#22d3ee"})},null,4)):y("",!0)],4)):y("",!0),t(mt).x!==null||t(mt).y!==null?(o(),n("div",{key:3,class:"vr-z-overlay pointer-events-none absolute left-0 top-0 overflow-hidden",style:_e({width:`${te.w}px`,height:`${te.h}px`})},[t(mt).y!==null?(o(),n("div",{key:0,class:"absolute left-0 right-0 h-px bg-vr-ai/80",style:_e({top:`${t(mt).y}px`})},null,4)):y("",!0),t(mt).x!==null?(o(),n("div",{key:1,class:"absolute bottom-0 top-0 w-px bg-vr-ai/80",style:_e({left:`${t(mt).x}px`})},null,4)):y("",!0)],4)):y("",!0),c(Pt,{zone:"tools"},{default:S(()=>[c(we,{class:"hidden lg:block"},{default:S(()=>[a("div",ud,[c(jt,{title:`${t(e)("measure.undo")} (Ctrl+Z)`,disabled:!na.value,onClick:Ft},{default:S(()=>[c(t(zs),{class:"h-5 w-5"})]),_:1},8,["title","disabled"]),c(jt,{title:`${t(e)("measure.redo")} (Ctrl+Y)`,disabled:!ua.value,onClick:ca},{default:S(()=>[c(t(Ds),{class:"h-5 w-5"})]),_:1},8,["title","disabled"]),r[48]||(r[48]=a("div",{class:"mx-1 my-0.5 h-px shrink-0 bg-vr-line"},null,-1)),(o(!0),n(U,null,Z(lt.value,l=>(o(),F(jt,{key:l.id,active:t(Y)===l.id,label:l.label,title:`${l.label} â ${l.hint}`,"data-measure-tool":l.id,onClick:d=>Te(l.id)},{default:S(()=>[(o(),F(ft(l.icon),{class:"h-5 w-5"}))]),_:2}
1,1032,["active","label","title","data-measure-tool","onClick"]))),128)),(o(!0),n(U,null,Z(vs.value,l=>(o(),F(Xi,{key:l.id,label:l.label,reason:t(e)("measure.paid_tool_reason",{tool:l.label}),"action-label":u?t(e)("measure.sign_up"):t(e)("common.upgrade"),onActivate:r[7]||(r[7]=d=>pe())},{default:S(()=>[(o(),F(ft(l.icon),{class:"h-5 w-5"}))]),_:2},1032,["label","reason","action-label"]))),128)),h&&!v?(o(),n(U,{key:0},[r[47]||(r[47]=a("div",{class:"mx-1 my-0.5 h-px shrink-0 bg-vr-line"},null,-1)),c(jt,{"data-measure-delete-all-lines":"",label:t(e)("measure.delete_all_lines"),title:t(e)("measure.delete_all_lines"),disabled:!t(m).hasSketchLines.value&&!t(ee).length,onClick:Ja},{default:S(()=>[c(t(_t),{class:"h-5 w-5"})]),_:1},8,["label","title","disabled"])],64)):y("",!0),Ot.value?(o(),n("div",dd)):y("",!0),Ot.value?(o(),F(jt,{key:2,active:t(Y)==="ai","active-tone":"ai","idle-tone":"ai",label:t(e)("measure.ai_detect"),title:Nr.value,disabled:Vt.value,onClick:r[8]||(r[8]=l=>Te("ai"))},{default:S(()=>[V.value?(o(),F(t($e),{key:0,class:"h-5 w-5 animate-spin"})):(o(),F(t(ut),{key:1,class:"h-5 w-5"}))]),_:1},8,["active","label","title","disabled"])):y("",!0)])]),_:1})]),_:1}),t(Y)==="classify"?(o(),F(Pt,{key:4,zone:"palette"},{default:S(()=>[c(Ts,{name:"vr-pop",appear:""},{default:S(()=>[c(we,{class:"max-w-[94vw]"},{default:S(()=>[a("div",cd,[a("span",md,i(t(e)("measure.wall")),1),(o(!0),n(U,null,Z(qr.value,l=>(o(),n("button",{key:l.key,type:"button","data-measure-wall-type":l.key,title:t(e)("measure.tag_edges",{label:l.label}),class:B(["flex min-h-11 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-lg px-2.5 py-2 text-xs font-semibold transition",t(m).activeWallType.value===l.key?"text-vr-ink":"text-vr-dim hover:bg-vr-raise"]),style:_e(t(m).activeWallType.value===l.key?{backgroundColor:l.color}:{}),onClick:d=>t(m).activeWallType.value=l.key},[a("span",{class:"h-2.5 w-2.5 rounded-full",style:_e({backgroundColor:l.color})},null,4),T(" "+i(l.label),1)],14,vd))),128)),a("button",{type:"button","data-measure-edges-all":"",disabled:!t(m).activeWallType.value||t(ee).length===0,title:t(e)("measure.apply_edges_all_hint"),class:"flex min-h-11 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-lg px-2.5 py-2 text-xs font-semibold text-vr-dim hover:bg-vr-raise disabled:opacity-40",onClick:ur},i(t(e)("measure.apply_edges_all")),9,pd),r[49]||(r[49]=a("span",{class:"mx-0.5 h-5 w-px shrink-0 bg-vr-line"},null,-1)),a("button",{type:"button",title:t(e)("measure.delete_edge_title"),class:B(["flex min-h-11 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-lg px-2.5 py-2 text-xs font-semibold transition",t(m).activeWallType.value===null?"bg-vr-ink text-white":"text-vr-dim hover:bg-vr-raise"]),onClick:r[9]||(r[9]=l=>t(m).activeWallType.value=null)},[c(t(Zt),{class:"h-3.5 w-3.5"}),T(" "+i(t(e)("measure.delete_edge")),1)],10,fd),a("button",{type:"button",title:t(e)("measure.delete_all_edges_title"),class:"flex min-h-11 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-lg px-2.5 py-2 text-xs font-semibold text-vr-dim transition hover:bg-vr-raise hover:text-red-400",onClick:sr},[c(t(Aa),{class:"h-3.5 w-3.5"}),T(" "+i(t(e)("measure.delete_all_edges")),1)],8,bd)])]),_:1})]),_:1})]),_:1})):y("",!0),xt.value?(o(),F(hi,{key:5,collapsed:qt.value,pitches:s.options.pitches,"active-pitch":t(m).activePitch.value,"facet-labels":rr.value,selection:Xa.value,mode:t(Y),"line-editor":h,"can-delete-all":t(ee).length>0,"onUpdate:collapsed":lr,onSetPitch:Ya,onApplyPitchAll:nr,onDeletePitch:r[10]||(r[10]=l=>ir(null)),onDeleteAllPitches:cr,onDeleteFacet:r[11]||(r[11]=l=>Qa()),onToggleLabel:dr,onApplyLabelAll:t(m).toggleLabelForAll,onRequestMode:Te},null,8,["collapsed","pitches","active-pitch","facet-labels","selection","mode","can-delete-all","onApplyLabelAll"])):y("",!0),c(Pt,{zone:"view"},{default:S(()=>[c(we,null,{default:S(()=>[a("div",hd,[a("button",{type:"button",class:B(["hidden h-9 items-center gap-1.5 rounded-lg px-2 text-xs font-semibold transition lg:flex",t(Oe)?"bg-vr-ai text-vr-amberink":"text-vr-dim hover:bg-vr-raise"]),title:t(e)("measure.snap_title"),"aria-label":t(e)("measure.snap"),"aria-pressed":t(Oe),onClick:r[12]||(r[12]=l=>Oe.value=!t(Oe))},[c(t(qs),{class:"h-4 w-4"}
1),r[50]||(r[50]=T()),a("span",gd,i(t(e)("measure.snap")),1)],10,_d),a("button",{type:"button",class:B(["hidden h-9 items-center gap-1.5 rounded-lg px-2 text-xs font-semibold transition lg:flex",De.value?"bg-vr-ai text-vr-amberink":"text-vr-dim hover:bg-vr-raise"]),title:t(e)("measure.crosshair_title"),"aria-label":t(e)("measure.crosshair"),"aria-pressed":De.value,onClick:r[13]||(r[13]=l=>De.value=!De.value)},[c(t(Ma),{class:"h-4 w-4"}),r[51]||(r[51]=T()),a("span",xd,i(t(e)("measure.crosshair")),1)],10,yd),a("button",{type:"button",class:B(["hidden h-9 items-center gap-1.5 rounded-lg px-2 text-xs font-semibold transition lg:flex",t(Ve)?"bg-vr-ai text-vr-amberink":"text-vr-dim hover:bg-vr-raise"]),title:t(e)("measure.dimensions"),"aria-label":t(e)("measure.dimensions"),"aria-pressed":t(Ve),onClick:r[14]||(r[14]=l=>Ve.value=!t(Ve))},[c(t(bt),{class:"h-4 w-4"}),r[52]||(r[52]=T()),a("span",wd,i(t(e)("measure.dimensions")),1)],10,kd),r[53]||(r[53]=a("span",{class:"mx-1 hidden h-6 w-px bg-vr-line lg:block"},null,-1)),a("button",{type:"button",title:t(e)("measure.rotate_ccw_10"),"aria-label":t(e)("measure.rotate_ccw_10"),class:"vr-tap-sq flex h-9 w-9 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",onClick:r[15]||(r[15]=l=>t(m).rotate(-t(m).ROTATION_STEP_BIG))},[c(t(Tl),{class:"h-4 w-4"})],8,$d),a("button",{type:"button",title:t(e)("measure.rotate_ccw_1"),"aria-label":t(e)("measure.rotate_ccw_1"),class:"hidden h-9 items-center justify-center rounded-lg px-1.5 font-mono text-[13px] text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 lg:flex",onClick:r[16]||(r[16]=l=>t(m).rotate(-t(m).ROTATION_STEP_SMALL))}," â1° ",8,Cd),a("button",{type:"button",title:t(e)("measure.reset_rotation"),"aria-label":t(e)("measure.reset_rotation"),class:"vr-tap flex h-9 min-w-[3.25rem] items-center justify-center rounded-lg px-1 font-mono text-[12px] tabular-nums text-vr-text transition hover:bg-vr-raise focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",onClick:r[17]||(r[17]=l=>t(m).resetRotation())},i(ar.value)+"° ",9,Sd),a("button",{type:"button",title:t(e)("measure.rotate_cw_1"),"aria-label":t(e)("measure.rotate_cw_1"),class:"hidden h-9 items-center justify-center rounded-lg px-1.5 font-mono text-[13px] text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 lg:flex",onClick:r[18]||(r[18]=l=>t(m).rotate(t(m).ROTATION_STEP_SMALL))}," +1° ",8,jd),a("button",{type:"button",title:t(e)("measure.rotate_cw_10"),"aria-label":t(e)("measure.rotate_cw_10"),class:"vr-tap-sq flex h-9 w-9 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",onClick:r[19]||(r[19]=l=>t(m).rotate(t(m).ROTATION_STEP_BIG))},[c(t(xl),{class:"h-4 w-4"})],8,Pd)])]),_:1})]),_:1}),c(Pt,{zone:"status"},{default:S(()=>[c(Ts,{name:"vr-rise-sm"},{default:S(()=>[$.value?(o(),F(we,{key:0,tone:"ai",class:"w-[calc(100vw-1.5rem)] max-w-md"},{default:S(()=>{var l;return[a("div",Td,[a("div",Ad,[c(t(ut),{class:"mt-0.5 h-4 w-4 shrink-0 text-vr-ai"}),a("p",Id,[T(i(u?t(e)("measure.guest_adjust_keep"):t(e)("measure.adjust_keep"))+" ",1),u?y("",!0):(o(),n("span",Md,i(t(e)("measure.uses_free",{remaining:((l=X.value)==null?void 0:l.remaining)??0})),1)),J.value.length?(o(),n("button",{key:1,type:"button",class:"mt-1 block rounded text-left text-red-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",onClick:r[20]||(r[20]=d=>ba(J.value[0]))},i(t(e)("measure.fix_ai_before_keep"))+" "+i(J.value[0].message),1)):y("",!0)])]),a("div",Ld,[a("button",{type:"button",class:"h-11 flex-1 rounded-lg border border-vr-line text-sm font-semibold text-vr-dim transition hover:text-red-400 disabled:opacity-60",disabled:K.value,onClick:ga},i(t(e)("measure.discard")),9,Fd),a("button",{type:"button",class:"inline-flex h-11 flex-1 items-center justify-center gap-1.5 rounded-lg bg-vr-amber text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi disabled:opacity-60",disabled:K.value||J.value.length>0,onClick:cs},[K.value?(o(),F(t($e),{key:0,class:"h-4 w-4 animate-spin"})):(o(),F(t(Me),{key:1,class:"h-4 w-4"})),T(" "+i(t(e)("measure.keep_roof")),1)],8,qd)])])]}),_:1})):t(fe)?(o(),F(we,{key:1},{default:S(()=>[a("div",Ed,[a("button",{type:"button",class:"flex h-11 items-center gap-1.5 rounded-lg px-3 text-sm font-semibold text-vr-dim transition hover:bg-vr-raise hover:text-vr-text",onClick:r[21]||(r[21]=l=>t(m).undoPoint())},[c(t(Cl),{class:"h-4 w-4"}),T(" "+i(t(e)("measure.undo_point")),1)]),a("button",{type:"button","data-measure-finish-drawing":"",class:"flex h-11 items-center gap-1.5 rounded-lg bg-vr-amber px-3 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:r[22]||(r[22]=l=>t(m).finishShape())},[c(t(Me),{class:"h-4 w-4"}),T(" "+i(t(e)("measure.finish_drawing")),1)]),a("button",{type:"button","aria-label":t(e)("measure.cancel_shape"),title:t(e)("measure.cancel_shape"),class:"flex h-11 w-11 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-red-400",onClick:r[23]||(r[23]=l=>t(m).cancelShape())},[c(t(Zt),{class:"h-4 w-4"})],8,Dd)])]),_:1})):t(m).floatingIslands.value>0?(o(),F(we,{key:2,tone:"warn",class:"w-[calc(100vw-1.5rem)] max-w-lg p-3"},{default:S(()=>[a("div",zd,[c(t(Ae),{class:"mt-0.5 h-4 w-4 shrink-0 text-vr-amber"}),a("p",Ud,i(t(e)("measure.line_editor_island_hint")),1)])]),_:1})):J.value.length?(o(),F(we,{key:3,tone:"warn",class:"w-[calc(100vw-1.5rem)] max-w-lg p-3"},{default:S(()=>[a("div",Rd,[c(t(Ae),{class:"mt-0.5 h-4 w-4 shrink-0 text-vr-amber"}),a("div",Nd,[a("p",Bd,i(t(e)("measure.fix_issues",{count:J.value.length})),1),a("ul",Od,[(o(!0),n(U,null,Z(J.value.slice(0,3),(l,d)=>(o(),n("li",{key:`${l.code}-${d}`},[a("button",{type:"button",class:"w-full rounded text-left transition hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",onClick:p=>ba(l)},[a("span",Kd,i(l.sectionName)+":",1),T(" "+i(l.message),1)],8,Vd)]))),128))]),J.value.length>3?(o(),n("p",Hd,i(t(e)("measure.more_issues",{count:J.value.length-3})),1)):y("",!0)])])]),_:1})):t(ct)?(o(),F(Xt,{key:4,tone:"warn",class:"text-[12px] text-vr-text"},{default:S(()=>[c(t(wl),{class:"h-4 w-4 shrink-0 text-vr-amber"}),T(" "+i(t(e)("measure.imagery_unavailable")),1)]),_:1})):pa.value>0&&t(ee).length?(o(),F(Xt,{key:5,interactive:"",tone:"warn",class:"cursor-pointer text-[12px] text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70",role:"button",tabindex:"0",onClick:Bt,onKeydown:[ea(Le(Bt,["prevent"]),["enter"]),ea(Le(Bt,["prevent"]),["space"])]},{default:S(()=>[c(t(Ae),{class:"h-4 w-4 shrink-0 text-vr-amber"}),a("span",null,i(t(e)("measure.pitch_unknown",{count:pa.value})),1),a("span",Wd,i(t(e)("measure.set_pitch"))+" â",1)]),_:1},8,["onKeydown"])):Vr.value?(o(),F(Xt,{key:6,interactive:"",tone:"ai"},{default:S(()=>[a("span",Gd,i(t(e)("measure.long_press_delete")),1),a("button",{type:"button",class:"vr-tap-sq flex h-8 w-8 items-center justify-center rounded-full text-vr-dim transition hover:text-vr-text focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-ai/70","aria-label":t(e)("measure.dismiss"),onClick:Gr},[c(t(Zt),{class:"h-3.5 w-3.5"})],8,Zd)]),_:1})):bs.value?(o(),F(Xt,{key:7,class:"max-w-[92vw]"},{default:S(()=>[a("span",Jd,[a("strong",Xd,i(Dr.value),1),r[54]||(r[54]=a("span",{"aria-hidden":"true"}," · ",-1)),T(i(bs.value),1)])]),_:1})):y("",!0)]),_:1})]),_:1}),xt.value?y("",!0):(o(),F(Ci,{key:6,lines:Rr.value,collapsed:$a.value,"onUpdate:collapsed":Wr,onHelp:r[24]||(r[24]=l=>St.value=!0)},null,8,["lines","collapsed"])),ke.value&&ke.value!=="ready"&&!(ke.value==="unsupported"&&ka.value)?(o(),n("div",Yd,[c(we,{class:"relative p-4 text-center",role:"status","aria-live":"polite"},{default:S(()=>{var l;return[ke.value==="checking"?(o(),n(U,{key:0},[c(t($e),{class:"mx-auto h-5 w-5 animate-spin text-vr-ai"}),a("p",Qd,i(t(e)("measure.checking_device")),1)],64)):ke.value==="loading"?(o(),n(U,{key:1},[a("p",ec,i(t(W).loadPhase.value==="initializing"?t(e)("measure.initializing_model"):t(e)("measure.loading_model",{percent:t(W).progress.value})),1),a("div",{class:"mt-2 h-1.5 overflow-hidden rounded-full bg-vr-raise",role:"progressbar","aria-label":t(e)("measure.loading_ai_model"),"aria-valuemin":"
10","aria-valuemax":"100","aria-valuenow":t(W).progress.value},[a("div",{class:"h-full rounded-full bg-vr-ai transition-all",style:_e({width:`${t(W).progress.value}%`})},null,4)],8,tc),a("p",ac,i(t(e)("measure.one_time_download")),1)],64)):ke.value==="error"?(o(),n(U,{key:2},[c(t(Ae),{class:"mx-auto h-6 w-6 text-red-400"}),a("p",sc,i(t(e)("measure.device_model_failed")),1),a("p",rc,i(Br.value),1),a("button",{type:"button",class:"mt-3 inline-flex h-11 w-full items-center justify-center rounded-lg bg-vr-amber px-4 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:Je},i(t(e)("common.retry")),1)],64)):ke.value==="unsupported"?(o(),n(U,{key:3},[a("button",{type:"button",class:"vr-tap-sq absolute right-2 top-2 flex h-8 w-8 items-center justify-center rounded-lg text-vr-dim transition hover:bg-vr-raise hover:text-vr-text","aria-label":t(e)("measure.dismiss"),onClick:r[25]||(r[25]=d=>ka.value=!0)},[c(t(Zt),{class:"h-4 w-4"})],8,lc),c(t(Ae),{class:"mx-auto h-6 w-6 text-vr-amber"}),a("p",ic,i(t(e)("measure.unsupported_ai")),1),a("p",oc,[u?(o(),n(U,{key:0},[T(i(t(e)("measure.guest_server_ai")),1)],64)):(o(),n(U,{key:1},[T(i(t(e)("measure.trial_server_ai")),1)],64))]),u?(o(),n("button",{key:0,type:"button","data-measure-manual-fallback":"",class:"mt-3 inline-flex h-11 w-full items-center justify-center rounded-lg border border-vr-line bg-vr-raise px-4 text-sm font-bold text-vr-text transition hover:border-vr-amber/60",onClick:r[26]||(r[26]=d=>{ka.value=!0,Te(je.value?"measure":"draw")})},i(t(e)("measure.continue_manually")),1)):y("",!0),c(t(pt),{href:A.value,class:"mt-2 inline-flex h-11 w-full items-center justify-center rounded-lg bg-vr-amber px-4 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:r[27]||(r[27]=Le(d=>pe(),["prevent"]))},{default:S(()=>[T(i(u?t(e)("measure.create_free_account"):t(e)("measure.start_trial")),1)]),_:1},8,["href"])],64)):ke.value==="limit"?(o(),n(U,{key:4},[c(t(Ae),{class:"mx-auto h-6 w-6 text-vr-amber"}),a("p",nc,i(t(e)("measure.used_free",{limit:((l=X.value)==null?void 0:l.limit)??10})),1),a("p",uc,i(t(e)("measure.limit_note")),1),c(t(pt),{href:A.value,class:"mt-3 inline-flex h-11 w-full items-center justify-center rounded-lg bg-vr-amber px-4 text-sm font-bold text-vr-amberink transition hover:bg-vr-amberhi",onClick:r[28]||(r[28]=Le(d=>pe(),["prevent"]))},{default:S(()=>[T(i(t(e)("measure.keep_measuring")),1)]),_:1},8,["href"])],64)):y("",!0)]}),_:1})])):y("",!0),w.value?(o(),n("div",dc,[c(we,{class:"flex items-center gap-3 p-4"},{default:S(()=>[c(t($e),{class:"h-5 w-5 shrink-0 animate-spin text-vr-amber"}),a("p",cc,i(jr.value),1)]),_:1})])):y("",!0)]),a("aside",mc,[a("div",vc,[a("section",pc,[a("div",fc,[a("div",null,[a("h2",bc,i(t(e)("measure.report_readiness")),1),a("p",hc,i(Q.value.detailedEligible?t(e)("measure.detailed_ready"):Q.value.quickEligible?t(e)("measure.quick_ready"):t(e)("measure.outline_required")),1)]),a("span",{class:B(["rounded-full px-2 py-1 font-mono text-[10px]",Q.value.detailedEligible?"bg-vr-ok/15 text-vr-ok":"bg-vr-amber/15 text-vr-amber"])},i(Q.value.items.filter(l=>l.complete).length)+"/"+i(Q.value.items.length),3)]),Q.value.warnings.length?(o(),n("ul",_c,[(o(!0),n(U,null,Z(Q.value.warnings.slice(0,3),l=>(o(),n("li",{key:l.id,class:"flex items-start gap-1.5 text-[11px] text-vr-dim"},[c(t(Ae),{class:"mt-0.5 h-3.5 w-3.5 shrink-0 text-vr-amber"}),a("span",null,[a("strong",gc,i(l.label)+":",1),T(" "+i(l.detail),1)])]))),128))])):y("",!0)]),c(Us,{sections:t(ee),"section-surfaces":Dt.value,structures:q.value,"active-structure-key":ue.value,"project-uuid":s.project.uuid,"project-center":s.project.mapCenter,imagery:Ee.value,"active-imagery-id":ye.value,"imagery-providers":s.options.imageryProviders,"recommended-waste":gt.value,totals:Ut.value,"project-pitch":b.pitch||null,pitches:s.options.pitches,"roof-types":s.options.roofTypes,"building-types":s.options.buildingTypes,"waste-factors":s.options.wasteFactors,form:b,"is-free":v,"is-guest":u,"ai-available":vt.value,"upgrade-href":A.value,quota:X.value,"on-remove":ma,"on-zoom":t(m).zoomToSection,"on-rename":t(m).renameSection,"on-set-pitch":t(m).setSectionPitch,"on-set-pitch-all":t(m).setSectionPitchForAll,"on-set-facet-pitch":t(m).setFacetPitch,"on-set-structure":t(m).setSectionStructure,"on-set-direction":t(m).setSectionDirection,"on-set-facet-direction":t(m).setFacetDirection,"on-select-facet":t(m).selectFacet,"selected-facet":t(m).selectedFacet.value,"facet-labels":s.options.facetLabels,"on-activate-structure":ts,"on-add-structure":es,"on-rename-structure":as,"on-remove-structure":ss,"on-apply-recommended-waste":rs,"on-imagery-updated":la,"on-imagery-activated":Va,"on-imagery-removed":Ka,"on-satellite-activated":Ha,onUpgrade:r[29]||(r[29]=l=>pe())},null,8,["sections","section-surfaces","structures","active-structure-key","project-uuid","project-center","imagery","active-imagery-id","imagery-providers","recommended-waste","totals","project-pitch","pitches","roof-types","building-types","waste-factors","form","ai-available","upgrade-href","quota","on-zoom","on-rename","on-set-pitch","on-set-pitch-all","on-set-facet-pitch","on-set-structure","on-set-direction","on-set-facet-direction","on-select-facet","selected-facet","facet-labels"])])]),a("div",yc,[a("button",{type:"button",class:"flex h-11 w-11 items-center justify-center text-vr-dim disabled:opacity-30",disabled:!na.value,"aria-label":t(e)("measure.undo"),onClick:Ft},[c(t(zs),{class:"h-5 w-5"})],8,xc),a("button",{type:"button",class:"flex h-11 w-11 items-center justify-center border-l border-vr-line text-vr-dim disabled:opacity-30",disabled:!ua.value,"aria-label":t(e)("measure.redo"),onClick:ca},[c(t(Ds),{class:"h-5 w-5"}
1)],8,kc)]),a("nav",wc,[Ot.value?(o(),n("button",{key:0,type:"button",class:B(["flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg py-1.5 transition",[t(Y)==="ai"?"bg-vr-ai text-vr-amberink":"text-vr-ai active:bg-vr-raise",Vt.value?"opacity-45":""]]),"aria-pressed":t(Y)==="ai","aria-label":t(e)("measure.ai_detect"),disabled:Vt.value,onClick:r[30]||(r[30]=l=>Te("ai"))},[V.value?(o(),F(t($e),{key:0,class:"h-5 w-5 animate-spin"})):(o(),F(t(ut),{key:1,class:"h-5 w-5"})),r[55]||(r[55]=a("span",{class:"text-[10px] font-semibold leading-none"},"AI",-1))],10,$c)):y("",!0),(o(!0),n(U,null,Z(Lr.value,l=>(o(),n("button",{key:l.id,type:"button",class:B(["flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg py-1.5 transition",t(Y)===l.id?"bg-vr-amber text-vr-amberink":"text-vr-dim active:bg-vr-raise"]),"aria-pressed":t(Y)===l.id,"aria-label":l.label,onClick:d=>Te(l.id)},[(o(),F(ft(l.icon),{class:"h-5 w-5"})),a("span",Sc,i(l.label),1)],10,Cc))),128)),a("button",{type:"button",class:"flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg py-1.5 text-vr-dim transition active:bg-vr-raise","aria-label":t(e)("common.more"),"data-measure-more":"",onClick:r[31]||(r[31]=l=>le.value=!0)},[c(t($l),{class:"h-5 w-5"}),a("span",Pc,i(t(e)("common.more")),1)],8,jc),a("button",{type:"button",class:B(["flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg py-1.5 transition",se.value?"bg-vr-raise text-vr-text":"text-vr-dim active:bg-vr-raise"]),"aria-label":t(e)("measure.measurement_details"),"data-measure-details":"","aria-pressed":se.value,onClick:r[32]||(r[32]=l=>se.value=!se.value)},[c(t(kl),{class:"h-5 w-5"}),a("span",Ac,i(t(Qe)(Ut.value.adjusted))+" ft²",1)],10,Tc),v?(o(),F(t(pt),{key:2,href:A.value,class:"flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg bg-vr-amber py-1.5 text-vr-amberink transition active:bg-vr-amberhi",onClick:r[33]||(r[33]=Le(l=>pe(),["prevent"]))},{default:S(()=>[c(t(ta),{class:"h-5 w-5"}),a("span",Lc,i(u?t(e)("measure.sign_up"):t(e)("measure.free_trial")),1)]),_:1},8,["href"])):(o(),n("button",{key:1,type:"button",class:"flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-lg bg-vr-amber py-1.5 text-vr-amberink transition active:bg-vr-amberhi disabled:opacity-60",disabled:w.value||t(fe),title:t(fe)?t(e)("measure.finish_outline_first"):void 0,onClick:ms},[w.value?(o(),F(t($e),{key:0,class:"h-5 w-5 animate-spin"})):(o(),F(t(Me),{key:1,class:"h-5 w-5"})),a("span",Mc,i(t(e)("measure.finish")),1)],8,Ic))])],2),c(t(Ea),{open:le.value,"onUpdate:open":r[38]||(r[38]=l=>le.value=l)},{default:S(()=>[c(t(Fa),{"data-measure-more-sheet":"",side:"bottom",class:"rounded-t-2xl border-vr-line bg-vr-panel p-4 pb-[calc(1rem+env(safe-area-inset-bottom))] text-vr-text"},{default:S(()=>[c(t(qa),{class:"pr-12 text-base font-bold"},{default:S(()=>[T(i(t(e)("measure.more_tools")),1)]),_:1}),a("div",Fc,[(o(!0),n(U,null,Z(Fr.value,l=>(o(),n("button",{key:l.id,type:"button","data-measure-tool":l.id,class:B(["flex h-12 items-center gap-3 rounded-xl border border-vr-line bg-vr-raise px-3 text-sm font-semibold",t(Y)===l.id?"border-vr-amber text-vr-amber":"text-vr-text"]),onClick:d=>{le.value=!1,Te(l.id)}},[(o(),F(ft(l.icon),{class:"h-5 w-5"})),T(" "+i(l.label),1)],10,qc))),128)),h&&!v?(o(),n("button",{key:0,type:"button","data-measure-delete-all-lines":"",class:"flex h-12 items-center gap-3 rounded-xl border border-vr-line bg-vr-raise px-3 text-sm font-semibold text-vr-text",disabled:!t(m).hasSketchLines.value&&!t(ee).length,onClick:r[34]||(r[34]=l=>{le.value=!1,Ja()})},[c(t(_t),{class:"h-5 w-5"}),T(" "+i(t(e)("measure.delete_all_lines")),1)],8,Ec)):y("",!0),a("button",{type:"button",class:B(["flex h-12 items-center gap-3 rounded-xl border border-vr-line bg-vr-raise px-3 text-sm font-semibold",t(Oe)?"border-vr-ai text-vr-ai":"text-vr-text"]),"aria-pressed":t(Oe),onClick:r[35]||(r[35]=l=>Oe.value=!t(Oe))},[c(t(qs),{class:"h-5 w-5"}),T(" "+i(t(e)("measure.snap")),1)],10,Dc),a("button",{type:"button",class:B(["flex h-12 items-center gap-3 rounded-xl border border-vr-line bg-vr-raise px-3 text-sm font-semibold",De.value?"border-vr-ai text-vr-ai":"text-vr-text"]),"aria-pressed":De.value,onClick:r[36]||(r[36]=l=>De.value=!De.value)},[c(t(Ma),{class:"h-5 w-5"}),T(" "+i(t(e)("measure.crosshair")),1)],10,zc),a("button",{type:"button",class:B(["flex h-12 items-center gap-3 rounded-xl border border-vr-line bg-vr-raise px-3 text-sm font-semibold",t(Ve)?"border-vr-ai text-vr-ai":"text-vr-text"]),"aria-pressed":t(Ve),onClick:r[37]||(r[37]=l=>Ve.value=!t(Ve))},[c(t(bt),{class:"h-5 w-5"}),T(" "+i(t(e)("measure.dimensions")),1)],10,Uc)])]),_:1})]),_:1},8,["open"]),c(t(Ea),{open:se.value,"onUpdate:open":r[40]||(r[40]=l=>se.value=l)},{default:S(()=>[c(t(Fa),{"data-measure-details-sheet":"",side:"bottom",class:"vr-scroll max-h-[85dvh] overflow-y-auto rounded-t-2xl border-vr-line bg-vr-panel p-0 text-vr-text"},{default:S(()=>[a("div",Rc,[r[56]||(r[56]=a("span",{class:"h-1 w-9 rounded-full bg-vr-line"},null,-1)),c(t(qa),{class:"vr-hud-label mt-2 pr-12 text-vr-dim"},{default:S(()=>[T(i(t(e)("measure.measurement_details")),1)]),_:1})]),a("div",Nc,[a("section",Bc,[a("div",Oc,[a("div",null,[a("h2",Vc,i(t(e)("measure.report_readiness")),1),a("p",Kc,i(Q.value.detailedEligible?t(e)("measure.detailed_ready"):Q.value.quickEligible?t(e)("measure.quick_ready"):t(e)("measure.outline_required")),1)]),a("span",Hc,i(Q.value.items.filter(l=>l.complete).length)+"/"+i(Q.value.items.length),1)]),Q.value.warnings.length?(o(),n("ul",Wc,[(o(!0),n(U,null,Z(Q.value.warnings,l=>(o(),n("li",{key:l.id,class:"flex items-start gap-2 text-xs text-vr-dim"},[c(t(Ae),{class:"mt-0.5 h-4 w-4 shrink-0 text-vr-amber"}),a("span",null,[a("strong",Gc,i(l.label)+":",1),T(" "+i(l.detail),1)])]))),128))])):y("",!0)]),c(Us,{sections:t(ee),"section-surfaces":Dt.value,structures:q.value,"active-structure-key":ue.value,"project-uuid":s.project.uuid,"project-center":s.project.mapCenter,imagery:Ee.value,"active-imagery-id":ye.value,"imagery-providers":s.options.imageryProviders,"recommended-waste":gt.value,totals:Ut.value,"project-pitch":b.pitch||null,pitches:s.options.pitches,"roof-types":s.options.roofTypes,"building-types":s.options.buildingTypes,"waste-factors":s.options.wasteFactors,form:b,"is-free":v,"is-guest":u,"ai-available":vt.value,"upgrade-href":A.value,quota:X.value,"on-remove":ma,"on-zoom":t(m).zoomToSection,"on-rename":t(m).renameSection,"on-set-pitch":t(m).setSectionPitch,"on-set-pitch-all":t(m).setSectionPitchForAll,"on-set-facet-pitch":t(m).setFacetPitch,"on-set-structure":t(m).setSectionStructure,"on-set-direction":t(m).setSectionDirection,"on-set-facet-direction":t(m).setFacetDirection,"on-select-facet":t(m).selectFacet,"selected-facet":t(m).selectedFacet.value,"facet-labels":s.options.facetLabels,"on-activate-structure":ts,"on-add-structure":es,"on-rename-structure":as,"on-remove-structure":ss,"on-apply-recommended-waste":rs,"on-imagery-updated":la,"on-imagery-activated":Va,"on-imagery-removed":Ka,"on-satellite-activated":Ha,onUpgrade:r[39]||(r[39]=l=>pe())},null,8,["sections","section-surfaces","structures","active-structure-key","project-uuid","project-center","imagery","active-imagery-id","imagery-providers","recommended-waste","totals","project-pitch","pitches","roof-types","building-types","waste-factors","form","ai-available","upgrade-href","quota","on-zoom","on-rename","on-set-pitch","on-set-pitch-all","on-set-facet-pitch","on-set-structure","on-set-direction","on-set-facet-direction","on-select-facet","selected-facet","facet-labels"])])]),_:1})]),_:1},8,["open"]),Wt.value?(o(),F(Ul,{key:1,tier:v?"free":"paid",touch:Xe.value,"ai-available":vt.value,onDismiss:Kr},null,8,["tier","touch","ai-available"])):y("",!0),c(Hi,{open:St.value,"onUpdate:open":r[41]||(r[41]=l=>St.value=l),tools:Ur.value,touch:Xe.value,"can-draw":!v||u,onReplay:Hr},null,8,["open","tools","touch","can-draw"]),ne.value?(o(),F(dl,{key:2,open:Mt.value,"onUpdate:open":r[42]||(r[42]=l=>
1Mt.value=l),title:ne.value.title,description:ne.value.description,"confirm-label":ne.value.confirmLabel,destructive:ne.value.destructive,onConfirm:j},null,8,["open","title","description","confirm-label","destructive"])):y("",!0),c(t(Da),{open:_.value,"onUpdate:open":r[44]||(r[44]=l=>_.value=l)},{default:S(()=>[c(t(za),{class:"border-vr-line bg-vr-panel text-vr-text sm:max-w-xl"},{default:S(()=>[c(t(Ba),null,{default:S(()=>[c(t(Ua),null,{default:S(()=>[T(i(t(e)("measure.publish_measurement_report")),1)]),_:1}),c(t(Ra),{class:"text-vr-dim"},{default:S(()=>[T(i(t(e)("measure.publish_report_description")),1)]),_:1})]),_:1}),a("div",Zc,[a("button",{type:"button",class:"min-h-32 rounded-xl border border-vr-line bg-vr-raise p-4 text-left transition hover:border-vr-amber/70 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 disabled:opacity-50",disabled:!Q.value.quickEligible||w.value,onClick:Tr},[a("span",Xc,[a("strong",null,i(t(e)("measure.quick_area_report")),1),Q.value.quickEligible?(o(),F(t(Me),{key:0,class:"h-4 w-4 text-vr-ok"})):y("",!0)]),a("span",Yc,i(t(e)("measure.quick_area_report_description")),1)],8,Jc),a("button",{type:"button",class:B(["min-h-32 rounded-xl border p-4 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/70 disabled:cursor-not-allowed disabled:opacity-55",Q.value.detailedEligible?"border-vr-ok/50 bg-vr-ok/5 hover:border-vr-ok":"border-vr-line bg-vr-raise"]),disabled:!Q.value.detailedEligible||w.value,onClick:Ar},[a("span",em,[a("strong",null,i(t(e)("measure.detailed_report")),1),Q.value.detailedEligible?(o(),F(t(Me),{key:0,class:"h-4 w-4 text-vr-ok"})):(o(),F(t(Ae),{key:1,class:"h-4 w-4 text-vr-amber"}))]),a("span",tm,i(t(e)("measure.detailed_report_description")),1)],10,Qc)]),Q.value.blockers.length?(o(),n("div",am,[a("p",sm,i(t(e)("measure.readiness_blockers_title")),1),a("ul",rm,[(o(!0),n(U,null,Z(Q.value.blockers,(l,d)=>(o(),n("li",{key:`${l.code}-${l.sectionKey??d}`,class:"flex items-start gap-2"},[c(t(Ae),{class:"mt-0.5 h-3.5 w-3.5 shrink-0 text-vr-amber"}),a("span",lm,[l.sectionName?(o(),n("span",im,i(l.sectionName),1)):y("",!0),l.facetIndex!==null?(o(),n("span",om," · "+i(t(e)("measure.facet",{number:l.facetIndex+1})),1)):y("",!0),l.sectionName||l.facetIndex!==null?(o(),n("span",nm," · ")):y("",!0),T(i(l.label),1),l.edgeIndexes.length?(o(),n("span",um," · "+i(t(e)("measure.readiness_edges_list",{list:l.edgeIndexes.map(p=>p+1).join(", ")})),1)):y("",!0)]),l.sectionKey?(o(),n("button",{key:0,type:"button",class:"vr-tap shrink-0 rounded-md px-2 text-[11px] font-bold text-vr-amber hover:bg-vr-raise focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-vr-amber/60",onClick:p=>Pr(l)},i(t(e)("measure.readiness_zoom")),9,dm)):y("",!0)]))),128))])])):Q.value.warnings.length?(o(),n("div",cm,[a("p",mm,i(t(e)("measure.complete_detailed_report")),1),a("ul",vm,[(o(!0),n(U,null,Z(Q.value.warnings,l=>(o(),n("li",{key:l.id,class:"flex gap-1.5"},[c(t(Ae),{class:"mt-0.5 h-3.5 w-3.5 shrink-0 text-vr-amber"}),T(" "+i(l.label),1)]))),128))])])):y("",!0),c(t(Na),null,{default:S(()=>[c(t(Tt),{variant:"secondary",size:"touch",onClick:r[43]||(r[43]=l=>_.value=!1)},{default:S(()=>[T(i(t(e)("measure.keep_editing")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),c(t(Da),{open:R.value,"onUpdate:open":r[45]||(r[45]=l=>R.value=l)},{default:S(()=>[c(t(za),{class:"border-vr-line bg-vr-panel text-vr-text sm:max-w-md"},{default:S(()=>[c(t(Ba),null,{default:S(()=>[c(t(Ua),null,{default:S(()=>[T(i(t(e)("measure.pitch_review_title")),1)]),_:1}),c(t(Ra),{class:"text-vr-dim"},{default:S(()=>[T(i(t(e)("measure.pitch_review_description",{count:pa.value})),1)]),_:1})]),_:1}),c(t(Na),{class:"gap-2 sm:justify-between"},{default:S(()=>[c(t(Tt),{variant:"secondary",size:"touch",onClick:Ir},{default:S(()=>[T(i(t(e)("measure.continue_plan_area")),1)]),_:1}),c(t(Tt),{size:"touch",onClick:Bt},{default:S(()=>[T(i(t(e)("measure.set_pitch")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),c(nl,{position:"top","top-offset":"var(--measure-toast-top)"})],10,Tu)],64))}});
1export{Av as default}; 2/** 3 * @license lucide-vue-next v0.468.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.