1import{j as t}from"./state-DKBP_IF5.js";import{r as j}from"./react-vendor-Unhn4PzF.js";import{A as C,n as S,o as z}from"./VistaArtifact-gyiM6fL1.js";import{c as E,d as F,a6 as A,y as N}from"./index-Br3_ARw7.js";import{M as $}from"./map-pin-WJOwG4Ma.js";import{S as P}from"./sun-DOUPKHL9.js";import{A as R}from"./activity-BM_sYnFs.js";import{B as I}from"./building-2-CaI-KLWC.js";import{C as M}from"./ChatPage-CfpyKI6o.js";import{P as T}from"./play-DTj7KN0y.js";import{C as L}from"./chevron-right-BTFtdlbc.js";import{C as B}from"./circle-question-mark-DFjMnrXa.js";import"./ui-Dw3dkPmY.js";/* empty css */import"./charts-D5dg506X.js";import"./forms-GD8l5aEM.js";import"./useAccessibleAgents-e8A-ferf.js";import"./agentService-CPyDPIkE.js";import"./AgentDetailsModal-CbEfF627.js";import"./user-plus-DCW8OCSS.js";import"./sparkles-D7NTekMs.js";import"./markdown-DHncH_pN.js";window.CESIUM_BASE_URL="/cesium/";const D=[["path",{d:"M 22 14 L 22 10",key:"nqc4tb"}],["rect",{x:"2",y:"6",width:"16",height:"12",rx:"2",key:"13zb55"}]],V=E("battery",D),H={user:"user",country_default:"country",segment_default:"segment",global_default:"default"};function O({source:e}){const n=S();if(!e)return null;const p=H[e]??e,_=z(n.prov,e)||n.text3;return t.jsx("span",{style:{fontSize:9.5,fontWeight:600,color:_,background:`${_}14`,padding:"2px 6px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"},children:p})}function U(e,n){if(e==null||e==="")return"â";if(typeof e=="boolean")return e?"yes":"no";if(typeof e=="number"){if(!isFinite(e))return"â";if(Number.isInteger(e)||Math.abs(e)>=100){const a=e.toLocaleString("en-US",{maximumFractionDigits:2});return n?`${a} ${n}`:a}const _=e.toLocaleString("en-US",{maximumFractionDigits:4});return n?`${_} ${n}`:_}const p=String(e);return n?`${p} ${n}`:p}function q({spec:e,scenario:n,provenance:p,editValue:_,onEdit:a,onAskHelp:g}){const r=S(),b=n[e.key],c=p[e.key],l=_!==void 0,s=!!e.options,y=e.editable&&typeof b=="number";return t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 80px",alignItems:"center",gap:12,padding:"8px 4px",borderBottom:`1px solid ${r.divider}`,fontSize:13,color:r.text1,background:l?r.editedRowBg:"transparent"},children:[t.jsxs("span",{style:{color:r.text2,display:"inline-flex",alignItems:"center",gap:6},children:[e.label,g&&t.jsx("button",{onClick:()=>g(e,b),"aria-label":`Ask Vega for guidance on ${e.label}`,title:`Ask Vega â what's a sensible ${e.label.toLowerCase()}?`,onMouseEnter:o=>{o.currentTarget.style.color=r.primary},onMouseLeave:o=>{o.currentTarget.style.color=r.text3},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,width:16,height:16,background:"transparent",border:"none",color:r.text3,cursor:"pointer",transition:"color 120ms linear",borderRadius:"50%"},children:t.jsx(B,{size:13,strokeWidth:1.8})})]}),s?t.jsx("select",{defaultValue:String(b??""),onChange:o=>a(e.key,o.target.value,!1),style:{width:132,padding:"4px 8px",border:`1px solid ${l?r.gold:r.outline}`,borderRadius:6,fontSize:13,fontFamily:"inherit",color:l?r.editedText:r.text1,background:r.card,outline:"none"},children:e.options.map(o=>t.jsx("option",{value:o,children:o},o))}):y?t.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[t.jsx("input",{type:"number",step:"any",defaultValue:b,onChange:o=>a(e.key,o.target.value,!0),style:{width:92,padding:"4px 8px",border:`1px solid ${l?r.gold:r.outline}`,borderRadius:6,fontSize:13,fontFamily:"inherit",color:l?r.editedText:r.text1,fontVariantNumeric:"tabular-nums",background:r.card,outline:"none"}}),e.unit&&t.jsx("span",{style:{fontSize:11,color:r.text3},children:e.unit})]}):t.jsx("span",{style:{fontVariantNumeric:"tabular-nums",color:c==="user"?r.primary:r.text1,fontWeight:c==="user"?500:400},children:U(b,e.unit)}),l?t.jsx("span",{style:{fontSize:9.5,fontWeight:600,color:r.editedText,background:r.editedPillBg,padding:"2px 6px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:"edited"}):t.jsx(O,{source:c})]})}function f({title:e,icon:n,headline:p,fields:_,scenario:a,provenance:g,edits:r,onEdit:b,onAskHelp:c,defaultOpen:l=!0}){const s=S(),[y,o]=j.useState(l),x=_.filter(d=>a[d.key]!==void 0);
1return x.length===0?null:t.jsxs("section",{style:{background:s.card,border:`1px solid ${s.outline}`,borderRadius:12,padding:"14px 20px"},children:[t.jsxs("button",{onClick:()=>o(d=>!d),style:{display:"flex",alignItems:"center",gap:10,width:"100%",background:"transparent",border:"none",padding:0,margin:0,cursor:"pointer",fontFamily:"inherit",marginBottom:y?10:0},children:[t.jsx("span",{style:{display:"inline-flex",color:s.text2},children:y?t.jsx(N,{size:14,strokeWidth:2.2}):t.jsx(L,{size:14,strokeWidth:2.2})}),t.jsx("span",{style:{display:"inline-flex",color:s.primary},children:n}),t.jsx("span",{style:{fontSize:13,fontWeight:500,color:s.text1,flex:1,textAlign:"left"},children:e}),p&&t.jsx("span",{style:{fontSize:12,color:s.text3,fontVariantNumeric:"tabular-nums"},children:p})]}),y&&t.jsx("div",{children:x.map(d=>t.jsx(q,{spec:d,scenario:a,provenance:g,editValue:r[d.key],onEdit:b,onAskHelp:c},d.key))})]})}const G=new Set(["system_density_mw_per_ha","gcr","tech","use_bifacial","bifaciality_factor","albedo","capex_connection_per_w","opex_per_year","opex_per_year_2","opex_per_year_2_start_year","opex_per_year_2_duration_years","opex_per_ha","rev_produced_1_value_eur_per_kwh","rev_produced_1_duration_years","rev_per_ha_1_value_eur_per_ha_per_year","interest_rate","debt_ratio","debt_term_years","equity_cost_pct","nominal_coe_pct","corporate_tax","depreciation_years","construction_months"]),W={project_location:[{key:"scenario_id",label:"Project name"},{key:"segment",label:"Segment"},{key:"tech",label:"Mounting tech",options:["fixed","tracker"]},{key:"latitude",label:"Latitude",unit:"°",editable:!0},{key:"longitude",label:"Longitude",unit:"°",editable:!0},{key:"country",label:"Country"},{key:"currency",label:"Currency"},{key:"production_start_date",label:"Commercial operation date"},{key:"system_lifetime_years",label:"Lifetime",unit:"yr",editable:!0}],geometry:[{key:"system_size_mw",label:"System size",unit:"MWp",editable:!0},{key:"site_area_m2",label:"Site area",unit:"m²",editable:!0},{key:"system_density_mw_per_ha",label:"Density",unit:"MW/ha",editable:!0},{key:"gcr",label:"Ground coverage ratio",editable:!0},{key:"tilt_deg",label:"Tilt",unit:"°",editable:!0},{key:"azimuth_deg",label:"Azimuth",unit:"°",editable:!0},{key:"dc_ac_ratio",label:"DC/AC ratio",editable:!0},{key:"use_optimal_tilt",label:"Use optimal tilt"}],production:[{key:"performance_method",label:"Performance method",options:["pvlib","pvgis","yield"]},{key:"losses_pct",label:"System losses",unit:"%",editable:!0},{key:"use_bifacial",label:"Bifacial"},{key:"bifaciality_factor",label:"Bifaciality factor",editable:!0},{key:"albedo",label:"Albedo",editable:!0},{key:"degradation_annual_pct",label:"Annual degradation",unit:"%",editable:!0},{key:"degradation_year1_pct",label:"Y1 degradation",unit:"%",editable:!0},{key:"yield_kwh_per_kwp",label:"Yield (override)",unit:"kWh/kWp",editable:!0}],capex:[{key:"capex_module_per_w",label:"Modules",unit:"â¬/W",editable:!0},{key:"capex_inverter_per_w",label:"Inverter",unit:"â¬/W",editable:!0},{key:"capex_mounting_per_w",label:"Mounting",unit:"â¬/W",editable:!0},{key:"capex_other_per_w",label:"BOS",unit:"â¬/W",editable:!0},{key:"capex_connection_per_w",label:"Grid connection",unit:"â¬/W",editable:!0},{key:"capex_total_per_w",label:"Total override",unit:"â¬/W",editable:!0}],opex:[{key:"opex_per_year",label:"Fixed",unit:"â¬/yr",editable:!0},{key:"opex_per_kwp",label:"Per kWp",unit:"â¬/kWp/yr",editable:!0},{key:"opex_per_ha",label:"Per hectare",unit:"â¬/ha/yr",editable:!0},{key:"opex_per_kwh",label:"Per kWh produced",unit:"â¬/kWh",editable:!0},{key:"activate_inflation_opex",label:"Escalate with inflation"},{key:"opex_per_year_2",label:"Stream 2 â fixed",unit:"â¬/yr",editable:!0},{key:"opex_per_year_2_start_year",label:"Stream 2 â start year",editable:!0},{key:"opex_per_year_2_duration_years",label:"Stream 2 â duration",unit:"yr",editable:!0}],revenue:[{key:"rev_self_share_pct",label:"Self-consumption share",unit:"%",editable:!0},{key:"rev_self_1_value_eur_per_kwh",label:"Self tariff",unit:"â¬/kWh",editable:!0},{key:"rev_self_1_duration_years",label:"Self duration",unit:"yr",editable:!0},{key:"rev_self_1_nominal_var_pct_per_year",label:"Self escalation",unit:"%/yr",editable:!0},{key:"rev_surplus_1_value_eur_per_kwh",label:"Surplus tariff",unit:"â¬/kWh",editable:!0},{key:"rev_surplus_1_duration_years",label:"Surplus duration",unit:"yr",editable:!0},{key:"rev_produced_1_value_eur_per_kwh",label:"Produced tariff",unit:"â¬/kWh",editable:!0},{key:"rev_produced_1_duration_years",label:"Produced duration",unit:"yr",editable:!0},{key:"rev_per_ha_1_value_eur_per_ha_per_year",label:"Per hectare",unit:"â¬/ha/yr",editable:!0}],financing:[{key:"interest_rate",label:"Debt interest rate",unit:"%",editable:!0},{key:"debt_ratio",label:"Debt ratio",unit:"%",editable:!0},{key:"debt_term_years",label:"Debt term",unit:"yr",editable:!0},{key:"equity_cost_pct",label:"Equity cost",unit:"%",editable:!0},{key:"nominal_coe_pct",label:"Nominal CoE",unit:"%",editable:!0},{key:"corporate_tax",label:"Corporate tax",unit:"%",editable:!0},{key:"inflation",label:"Inflation",unit:"%",editable:!0},{key:"depreciation_years",label:"Depreciation schedule",unit:"yr",editable:!0},{key:"construction_months",label:"Construction",unit:"mo",editable:!0}]};function xe(e){return t.jsx(C,{children:t.jsx(Y,{...e})})}
1function Y({scenario:e,provenance:n,onRunScenario:p,onAskHelp:_}){const a=S(),g=F(i=>i.closeArtifact),[r,b]=j.useState({}),c=(i,u,h)=>{b(k=>{const m={...k},v=e[i];if(h){const w=parseFloat(u);u===""||Number.isNaN(w)||typeof v=="number"&&w===v?delete m[i]:m[i]=w}else u===""||u===String(v??"")?delete m[i]:m[i]=u;return m})},l=_?(i,u)=>_(i.key,i.label,i.unit,u):void 0,s=Object.keys(r).length,y=j.useMemo(()=>{const i=Number(e.system_size_mw??0)*1e3,u=Number(e.capex_module_per_w??0)+Number(e.capex_inverter_per_w??0)+Number(e.capex_mounting_per_w??0)+Number(e.capex_other_per_w??0)+Number(e.capex_connection_per_w??0),h=Number(e.capex_total_per_w??0),k=h>0?h:u,m=Number(e.opex_per_year??0)+Number(e.opex_per_kwp??0)*i;return{project:e.country?String(e.country):"",geometry:e.system_size_mw?`${Number(e.system_size_mw).toFixed(2)} MWp`:"",capex:k>0?`â¬${k.toFixed(3)}/W total`:"",opex:m>0?`â¬${m.toLocaleString("en-US",{maximumFractionDigits:0})}/yr`:"â¬0/yr",revenue:e.rev_self_share_pct?`${Number(e.rev_self_share_pct).toFixed(0)}% self-consumption`:"",financing:e.debt_ratio?`${Number(e.debt_ratio).toFixed(0)}% debt`:""}},[e]),o=j.useMemo(()=>{const i={user:0,country_default:0,segment_default:0,global_default:0};for(const u of Object.values(n))i[u]!==void 0&&i[u]++;return i},[n]),x=String(e.segment??"").toLowerCase()==="bipv",d=j.useMemo(()=>{if(!x)return W;const i={};for(const[u,h]of Object.entries(W))i[u]=h.filter(k=>!G.has(k.key));return i},[x]);return t.jsxs("div",{className:"app-scrollbar",style:{padding:24,display:"flex",flexDirection:"column",gap:14,height:"100%",overflowY:"auto",background:a.body,fontFamily:"'Inter', system-ui, -apple-system, sans-serif"},children:[t.jsx("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",padding:"4px 4px 12px",borderBottom:`1px solid ${a.divider}`},children:t.jsxs("div",{children:[t.jsxs("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:a.text1,letterSpacing:"-0.01em"},children:["Review â ",String(e.scenario_id||"scenario")]}),t.jsxs("div",{style:{fontSize:11,color:a.text2,marginTop:4},children:[o.user," user · ",o.country_default," country ·"," ",o.segment_default," segment · ",o.global_default," global",t.jsx("span",{style:{color:a.text3},children:" · all sourced from the SEAMLESS reference workbook"})]})]})}),t.jsx(f,{title:"Project & location",icon:t.jsx($,{size:14,strokeWidth:2}),headline:y.project,fields:d.project_location,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:"Geometry & array",icon:t.jsx(P,{size:14,strokeWidth:2}),headline:y.geometry,fields:d.geometry,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:"Production model",icon:t.jsx(R,{size:14,strokeWidth:2}),fields:d.production,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:"CAPEX",icon:t.jsx(I,{size:14,strokeWidth:2}),headline:y.capex,fields:d.capex,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:"OPEX",icon:t.jsx(V,{size:14,strokeWidth:2}),headline:y.opex,fields:d.opex,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:"Revenue & tariffs",icon:t.jsx(M,{size:14,strokeWidth:2}),headline:y.revenue,fields:d.revenue,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsx(f,{title:x?"Global assumptions":"Financing",icon:t.jsx(A,{size:14,strokeWidth:2}),headline:x?void 0:y.financing,fields:d.financing,scenario:e,provenance:n,edits:r,onEdit:c,onAskHelp:l}),t.jsxs("div",{style:{position:"sticky",bottom:-24,marginTop:8,marginBottom:-24,marginLeft:-24,marginRight:-24,padding:"16px 24px",background:a.card,borderTop:`1px solid ${a.outline}`,display:"flex",alignItems:"center",justifyContent:"space-between",gap:16},children:[t.jsx("span",{style:{fontSize:12,color:a.text2,lineHeight:1.4},children:s>0?t.jsxs("span",{style:{color:a.editedText,fontWeight:500},children:[s," field",s===1?"":"s"," edited â Run to apply."]}):t.jsxs(t.Fragment,{children:["Edit any numeric field above, or type in chat: ",t.jsx("span",{style:{color:a.text1,fontFamily:"monospace",background:a.surface2,padding:"1px 6px",borderRadius:3},children:"change capex_module_per_w to 0.10"})]})}),p&&t.jsxs("button",{onClick:()=>{g(),p(r)},style:{display:"inline-flex",alignItems:"center",gap:6,padding:"8px 16px",background:a.ctaBg,color:a.ctaFg,border:"none",borderRadius:8,fontSize:13,fontWeight:500,cursor:"pointer",fontFamily:"inherit",transition:"background 120ms linear",whiteSpace:"nowrap"},onMouseEnter:i=>{i.currentTarget.style.background=a.ctaHover},onMouseLeave:i=>{i.currentTarget.style.background=a.ctaBg},children:[t.jsx(T,{size:13,strokeWidth:2.5}),s>0?`Run with ${s} edit${s===1?"":"s"}`:"Run scenario"]})]})]})}export{xe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.