@texturehq/edges 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2199,8 +2199,20 @@ type SerializableFieldFormat = Exclude<FieldFormat, {
2199
2199
  * (e.g. transformer loading: SUM of downstream meter `kwh_usage`
2200
2200
  * ÷ PF ÷ `ratedKva`, a 0–1 ratio the cell scales ×100). Consumers
2201
2201
  * MUST treat this as async/loading and never block the card on it.
2202
+ * - `scada` — a live SCADA telemetry reading resolved from the element's
2203
+ * `TelemetrySource` (`externalId = '{'+elementGuid+'}'`). `points`
2204
+ * are the TelemetryPoint names to read, `reduce` collapses them
2205
+ * (`maxAbs` for three-phase current), `unit` is passed through,
2206
+ * and `sla` (ms) is the freshness window past which the reading
2207
+ * reads "as of {rel}", not live. Optional `ignore` lists numeric
2208
+ * sentinel values (e.g. `32767` on a tap-position phase) that are
2209
+ * treated as absent — skipped before the reduce and before the
2210
+ * freshness check, exactly as a `null` reading would be. Added in
2211
+ * MR-EN4; paired with the grid capability resolver. The gate is a
2212
+ * fresh point, not `ScadaGridNode` existence; a stale point never
2213
+ * blocks the card.
2202
2214
  *
2203
- * No grid row uses `metadata`/`derived` yet — the design's grid metric proposal
2215
+ * No grid row uses `metadata`/`derived`/`scada` yet — the design's grid metric proposal
2204
2216
  * is still "For review" (see MR-07). The type is extended now so those rows can
2205
2217
  * be authored honestly once design signs off; only `state` rows exist today.
2206
2218
  */
@@ -2214,6 +2226,13 @@ type MetricSource = {
2214
2226
  kind: "derived";
2215
2227
  rollup: "transformer-loading";
2216
2228
  window: "15m" | "1h" | "1d";
2229
+ } | {
2230
+ kind: "scada";
2231
+ points: string[];
2232
+ reduce: "maxAbs" | "sum" | "first";
2233
+ unit: string;
2234
+ sla: number;
2235
+ ignore?: number[];
2217
2236
  };
2218
2237
  /**
2219
2238
  * One headline metric shown by `entity.now`. A serializable declaration only —
@@ -2283,7 +2302,11 @@ interface GridStatFieldFormat {
2283
2302
  * the live block. See MR-07 "'has data' ≠ 'belongs in entity.now'".
2284
2303
  */
2285
2304
  interface GridStatField {
2286
- /** JSONB key in `GridElement.elementData`. */
2305
+ /**
2306
+ * Key in the element's resolved data. Usually a `GridElement.elementData`
2307
+ * JSONB key; may also be a decoded top-level field the host merges in (e.g.
2308
+ * `capacityKva`, the decoded transformer kVA rating).
2309
+ */
2287
2310
  key: string;
2288
2311
  /** Display label (translation key or plain text). */
2289
2312
  label: string;
@@ -2447,45 +2470,21 @@ declare const ABSENT_GRID_FIELDS: readonly ["energized", "customerName", "gs_max
2447
2470
  */
2448
2471
  declare const GRID_STAT_LIST: {
2449
2472
  readonly TRANSFORMER: [{
2450
- readonly key: "primaryRatedVoltage";
2451
- readonly label: "Primary Voltage";
2473
+ readonly key: "capacityKva";
2474
+ readonly label: "kVA Rating";
2452
2475
  readonly format: {
2453
- readonly type: "voltage";
2454
- readonly unit: "V";
2476
+ readonly type: "power";
2477
+ readonly unit: "kVA";
2455
2478
  readonly decimals: 0;
2456
2479
  };
2457
2480
  }, {
2458
- readonly key: "ratedOutputVoltage";
2459
- readonly label: "Output Voltage";
2481
+ readonly key: "primaryRatedVoltage";
2482
+ readonly label: "Primary Voltage";
2460
2483
  readonly format: {
2461
2484
  readonly type: "voltage";
2462
2485
  readonly unit: "V";
2463
2486
  readonly decimals: 0;
2464
2487
  };
2465
- }, {
2466
- readonly key: "tranKvaA";
2467
- readonly label: "Rating Phase A";
2468
- readonly format: {
2469
- readonly type: "power";
2470
- readonly unit: "kVA";
2471
- readonly decimals: 1;
2472
- };
2473
- }, {
2474
- readonly key: "tranKvaB";
2475
- readonly label: "Rating Phase B";
2476
- readonly format: {
2477
- readonly type: "power";
2478
- readonly unit: "kVA";
2479
- readonly decimals: 1;
2480
- };
2481
- }, {
2482
- readonly key: "tranKvaC";
2483
- readonly label: "Rating Phase C";
2484
- readonly format: {
2485
- readonly type: "power";
2486
- readonly unit: "kVA";
2487
- readonly decimals: 1;
2488
- };
2489
2488
  }];
2490
2489
  readonly CONSUMER: [{
2491
2490
  readonly key: "meterNumber";
@@ -3075,45 +3074,21 @@ declare const ENTITY_CONFIG: {
3075
3074
  readonly detailPage: true;
3076
3075
  readonly properties: {
3077
3076
  readonly statList: [{
3078
- readonly key: "primaryRatedVoltage";
3079
- readonly label: "Primary Voltage";
3077
+ readonly key: "capacityKva";
3078
+ readonly label: "kVA Rating";
3080
3079
  readonly format: {
3081
- readonly type: "voltage";
3082
- readonly unit: "V";
3080
+ readonly type: "power";
3081
+ readonly unit: "kVA";
3083
3082
  readonly decimals: 0;
3084
3083
  };
3085
3084
  }, {
3086
- readonly key: "ratedOutputVoltage";
3087
- readonly label: "Output Voltage";
3085
+ readonly key: "primaryRatedVoltage";
3086
+ readonly label: "Primary Voltage";
3088
3087
  readonly format: {
3089
3088
  readonly type: "voltage";
3090
3089
  readonly unit: "V";
3091
3090
  readonly decimals: 0;
3092
3091
  };
3093
- }, {
3094
- readonly key: "tranKvaA";
3095
- readonly label: "Rating Phase A";
3096
- readonly format: {
3097
- readonly type: "power";
3098
- readonly unit: "kVA";
3099
- readonly decimals: 1;
3100
- };
3101
- }, {
3102
- readonly key: "tranKvaB";
3103
- readonly label: "Rating Phase B";
3104
- readonly format: {
3105
- readonly type: "power";
3106
- readonly unit: "kVA";
3107
- readonly decimals: 1;
3108
- };
3109
- }, {
3110
- readonly key: "tranKvaC";
3111
- readonly label: "Rating Phase C";
3112
- readonly format: {
3113
- readonly type: "power";
3114
- readonly unit: "kVA";
3115
- readonly decimals: 1;
3116
- };
3117
3092
  }];
3118
3093
  };
3119
3094
  readonly label: {
@@ -2199,8 +2199,20 @@ type SerializableFieldFormat = Exclude<FieldFormat, {
2199
2199
  * (e.g. transformer loading: SUM of downstream meter `kwh_usage`
2200
2200
  * ÷ PF ÷ `ratedKva`, a 0–1 ratio the cell scales ×100). Consumers
2201
2201
  * MUST treat this as async/loading and never block the card on it.
2202
+ * - `scada` — a live SCADA telemetry reading resolved from the element's
2203
+ * `TelemetrySource` (`externalId = '{'+elementGuid+'}'`). `points`
2204
+ * are the TelemetryPoint names to read, `reduce` collapses them
2205
+ * (`maxAbs` for three-phase current), `unit` is passed through,
2206
+ * and `sla` (ms) is the freshness window past which the reading
2207
+ * reads "as of {rel}", not live. Optional `ignore` lists numeric
2208
+ * sentinel values (e.g. `32767` on a tap-position phase) that are
2209
+ * treated as absent — skipped before the reduce and before the
2210
+ * freshness check, exactly as a `null` reading would be. Added in
2211
+ * MR-EN4; paired with the grid capability resolver. The gate is a
2212
+ * fresh point, not `ScadaGridNode` existence; a stale point never
2213
+ * blocks the card.
2202
2214
  *
2203
- * No grid row uses `metadata`/`derived` yet — the design's grid metric proposal
2215
+ * No grid row uses `metadata`/`derived`/`scada` yet — the design's grid metric proposal
2204
2216
  * is still "For review" (see MR-07). The type is extended now so those rows can
2205
2217
  * be authored honestly once design signs off; only `state` rows exist today.
2206
2218
  */
@@ -2214,6 +2226,13 @@ type MetricSource = {
2214
2226
  kind: "derived";
2215
2227
  rollup: "transformer-loading";
2216
2228
  window: "15m" | "1h" | "1d";
2229
+ } | {
2230
+ kind: "scada";
2231
+ points: string[];
2232
+ reduce: "maxAbs" | "sum" | "first";
2233
+ unit: string;
2234
+ sla: number;
2235
+ ignore?: number[];
2217
2236
  };
2218
2237
  /**
2219
2238
  * One headline metric shown by `entity.now`. A serializable declaration only —
@@ -2283,7 +2302,11 @@ interface GridStatFieldFormat {
2283
2302
  * the live block. See MR-07 "'has data' ≠ 'belongs in entity.now'".
2284
2303
  */
2285
2304
  interface GridStatField {
2286
- /** JSONB key in `GridElement.elementData`. */
2305
+ /**
2306
+ * Key in the element's resolved data. Usually a `GridElement.elementData`
2307
+ * JSONB key; may also be a decoded top-level field the host merges in (e.g.
2308
+ * `capacityKva`, the decoded transformer kVA rating).
2309
+ */
2287
2310
  key: string;
2288
2311
  /** Display label (translation key or plain text). */
2289
2312
  label: string;
@@ -2447,45 +2470,21 @@ declare const ABSENT_GRID_FIELDS: readonly ["energized", "customerName", "gs_max
2447
2470
  */
2448
2471
  declare const GRID_STAT_LIST: {
2449
2472
  readonly TRANSFORMER: [{
2450
- readonly key: "primaryRatedVoltage";
2451
- readonly label: "Primary Voltage";
2473
+ readonly key: "capacityKva";
2474
+ readonly label: "kVA Rating";
2452
2475
  readonly format: {
2453
- readonly type: "voltage";
2454
- readonly unit: "V";
2476
+ readonly type: "power";
2477
+ readonly unit: "kVA";
2455
2478
  readonly decimals: 0;
2456
2479
  };
2457
2480
  }, {
2458
- readonly key: "ratedOutputVoltage";
2459
- readonly label: "Output Voltage";
2481
+ readonly key: "primaryRatedVoltage";
2482
+ readonly label: "Primary Voltage";
2460
2483
  readonly format: {
2461
2484
  readonly type: "voltage";
2462
2485
  readonly unit: "V";
2463
2486
  readonly decimals: 0;
2464
2487
  };
2465
- }, {
2466
- readonly key: "tranKvaA";
2467
- readonly label: "Rating Phase A";
2468
- readonly format: {
2469
- readonly type: "power";
2470
- readonly unit: "kVA";
2471
- readonly decimals: 1;
2472
- };
2473
- }, {
2474
- readonly key: "tranKvaB";
2475
- readonly label: "Rating Phase B";
2476
- readonly format: {
2477
- readonly type: "power";
2478
- readonly unit: "kVA";
2479
- readonly decimals: 1;
2480
- };
2481
- }, {
2482
- readonly key: "tranKvaC";
2483
- readonly label: "Rating Phase C";
2484
- readonly format: {
2485
- readonly type: "power";
2486
- readonly unit: "kVA";
2487
- readonly decimals: 1;
2488
- };
2489
2488
  }];
2490
2489
  readonly CONSUMER: [{
2491
2490
  readonly key: "meterNumber";
@@ -3075,45 +3074,21 @@ declare const ENTITY_CONFIG: {
3075
3074
  readonly detailPage: true;
3076
3075
  readonly properties: {
3077
3076
  readonly statList: [{
3078
- readonly key: "primaryRatedVoltage";
3079
- readonly label: "Primary Voltage";
3077
+ readonly key: "capacityKva";
3078
+ readonly label: "kVA Rating";
3080
3079
  readonly format: {
3081
- readonly type: "voltage";
3082
- readonly unit: "V";
3080
+ readonly type: "power";
3081
+ readonly unit: "kVA";
3083
3082
  readonly decimals: 0;
3084
3083
  };
3085
3084
  }, {
3086
- readonly key: "ratedOutputVoltage";
3087
- readonly label: "Output Voltage";
3085
+ readonly key: "primaryRatedVoltage";
3086
+ readonly label: "Primary Voltage";
3088
3087
  readonly format: {
3089
3088
  readonly type: "voltage";
3090
3089
  readonly unit: "V";
3091
3090
  readonly decimals: 0;
3092
3091
  };
3093
- }, {
3094
- readonly key: "tranKvaA";
3095
- readonly label: "Rating Phase A";
3096
- readonly format: {
3097
- readonly type: "power";
3098
- readonly unit: "kVA";
3099
- readonly decimals: 1;
3100
- };
3101
- }, {
3102
- readonly key: "tranKvaB";
3103
- readonly label: "Rating Phase B";
3104
- readonly format: {
3105
- readonly type: "power";
3106
- readonly unit: "kVA";
3107
- readonly decimals: 1;
3108
- };
3109
- }, {
3110
- readonly key: "tranKvaC";
3111
- readonly label: "Rating Phase C";
3112
- readonly format: {
3113
- readonly type: "power";
3114
- readonly unit: "kVA";
3115
- readonly decimals: 1;
3116
- };
3117
3092
  }];
3118
3093
  };
3119
3094
  readonly label: {
package/dist/index.cjs CHANGED
@@ -44,5 +44,5 @@
44
44
  `;return}else W.tagName;}for(let W=0;W<M.childNodes.length;W++)E(M.childNodes[W]);};return E(j),Q},[]),R=Oe.useCallback((j,Q)=>{let E=document.createTreeWalker(j,NodeFilter.SHOW_TEXT,{acceptNode:F=>{let O=F.parentElement;return O&&O.closest("[data-chip-id]")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),M=E.nextNode(),W=Math.max(0,Q);for(;M;){let F=M.nodeValue||"";if(F.length>=W){let O=document.createRange();O.setStart(M,W),O.collapse(true);let K=window.getSelection();K?.removeAllRanges(),K?.addRange(O);return}W-=F.length,M=E.nextNode();}let I=window.getSelection(),C=document.createRange();C.selectNodeContents(j),C.collapse(false),I?.removeAllRanges(),I?.addRange(C);},[]);Oe.useEffect(()=>{N.current&&!m&&N.current.textContent!==""&&(N.current.textContent="");},[m]),Oe.useLayoutEffect(()=>{if(N.current){if(m===""){if(T)try{N.current.focus({preventScroll:!0}),R(N.current,0);}catch{}return}if(D.current!=null)try{R(N.current,D.current);}finally{D.current=null;}}},[m,R,T]);let H=Oe.useCallback((j,Q)=>{if(p?.(j),j===""){x?.();return}if(h&&b&&Q!==void 0){let E=j.slice(0,Q),M=typeof h=="string"?new RegExp(`\\${h}([^\\s]*)$`):h,W=E.match(M);if(W){let I=W[1]||"",C=Q-W[0].length;b({query:I,position:Q,startIndex:C});}else x?.();}},[p,h,b,x]),G=Oe.useCallback(j=>{if(!f||!p)return;let Q=g.filter(M=>M.id!==j);f(Q);let E=m.replace(new RegExp(`\\{\\{${j}\\}\\}`,"g"),"");p(E);},[g,f,m,p]),Y=Oe.useCallback(j=>y?y(j,()=>G(j.id)):jsxRuntime.jsx(eo,{variant:v,size:A,onRemove:c?void 0:()=>G(j.id),isDisabled:c,className:"py-0.5 px-1.5 gap-1 text-xs leading-none rounded-md",children:j.label},j.id),[y,v,A,G,c]),U=()=>{let j=Vt({isInvalid:s,isDisabled:c,isFocused:T,transparent:i,size:o}),Q=`min-h-[100px] py-2 px-3 ${c?"resize-none":l?"resize-y":"resize-none"}`,E=tailwindMerge.twMerge("focus:outline-none overflow-auto","[&_[data-chip-id]::selection]:bg-action-primary/20","[&:empty]:before:content-[attr(data-placeholder)] [&:empty]:before:text-text-disabled [&:empty]:before:pointer-events-none");return tailwindMerge.twMerge(j,Q,E,u)},q=()=>m?m.split(/(\{\{[^}]+\}\})/g).map((Q,E)=>{let M=Q.match(/\{\{([^}]+)\}\}/);if(M){let W=M[1],I=g.find(C=>C.id===W);if(I)return jsxRuntime.jsx("span",{className:"inline-block align-baseline cursor-pointer",contentEditable:false,suppressContentEditableWarning:true,"data-chip-id":W,style:{userSelect:"none",verticalAlign:"baseline",lineHeight:"1"},onClick:C=>{C.preventDefault();let F=window.getSelection(),O=document.createRange();O.selectNode(C.currentTarget),F?.removeAllRanges(),F?.addRange(O);},children:Y(I)},`chip-${W}-${E}`)}return Q.includes(`
45
45
  `)?Q.split(`
46
46
  `).map((W,I)=>jsxRuntime.jsxs(Oe__namespace.default.Fragment,{children:[W,I<Q.split(`
47
- `).length-1&&jsxRuntime.jsx("br",{})]},`line-${E}-${I}`)):Q}):null;return jsxRuntime.jsx("div",{className:"group flex flex-col",children:jsxRuntime.jsxs("div",{className:"flex flex-col",children:[e&&jsxRuntime.jsx(ze,{size:o,tooltip:n,isRequired:a,children:e}),jsxRuntime.jsx(ht,{children:jsxRuntime.jsx("div",{ref:N,contentEditable:!c,suppressContentEditableWarning:true,onInput:j=>{if(c)return;let Q=j.target,E=Q.querySelector("[data-chip-id]")!==null,M;if(E?(M=L(Q),M=M.replace(/(\{\{[^}]+\}\})\s{2,}/g,"$1 ").replace(/\s{2,}(\{\{[^}]+\}\})/g," $1")):M=Q.textContent||"",M===""){try{let C=document.createRange();C.selectNodeContents(Q),C.collapse(!0);let F=window.getSelection();F?.removeAllRanges(),F?.addRange(C),D.current=0;}catch{}H("",0);return}if(M===m)return;let W=window.getSelection(),I=0;if(W&&W.rangeCount>0)try{let C=W.getRangeAt(0);if(E){let F=0,O=!1,K=te=>{if(O)return !0;if(te===C.startContainer)return F+=C.startOffset,O=!0,!0;if(te.nodeType===Node.TEXT_NODE){if(!te.parentElement?.closest("[data-chip-id]")){if(te.contains(C.startContainer))return F+=C.startOffset,O=!0,!0;F+=(te.textContent||"").length;}}else if(te.nodeType===Node.ELEMENT_NODE){let de=te;if(de.hasAttribute("data-chip-id")){if(de.contains(C.startContainer)||de===C.startContainer){let ae=de.getAttribute("data-chip-id");return F+=`{{${ae}}}`.length,O=!0,!0}let _=de.getAttribute("data-chip-id");return F+=`{{${_}}}`.length,!1}else if(de.tagName==="BR")return de===C.startContainer?(O=!0,!0):(F+=1,!1)}for(let de=0;de<te.childNodes.length;de++)if(K(te.childNodes[de]))return !0;return !1};K(Q),I=F;}else {let F=document.createRange();F.setStart(Q,0),F.setEnd(C.startContainer,C.startOffset),I=F.toString().length;}}catch{I=M.length;}D.current=I,H(M,I);},onKeyDown:j=>{if(c)return;let Q=window.getSelection();if(!(!Q||Q.rangeCount===0))try{let E=Q.getRangeAt(0),M=E.commonAncestorContainer;if(j.key==="ArrowLeft"||j.key==="ArrowRight"){let W=M.nodeType===Node.TEXT_NODE?M.parentElement?.closest("[data-chip-id]"):M.closest("[data-chip-id]");if(W){j.preventDefault();try{let I=document.createRange(),C=window.getSelection();j.key==="ArrowLeft"?I.setStartBefore(W):I.setStartAfter(W),I.collapse(!0),C?.removeAllRanges(),C?.addRange(I);}catch{}}}if(j.key==="Backspace"){let W=null;if(W=(M.nodeType===Node.TEXT_NODE?M.parentElement?.closest("[data-chip-id]"):M.closest("[data-chip-id]"))||null,!W)if(M.nodeType===Node.TEXT_NODE){let I=M;if(E.startOffset===0&&I.parentElement){let C=I.previousSibling;if(C&&C.nodeType===Node.ELEMENT_NODE){let F=C.closest("[data-chip-id]");F&&(W=F);}}}else {let I=M;if(E.startOffset>0){let C=I.childNodes[E.startOffset-1];if(C&&C.nodeType===Node.ELEMENT_NODE){let F=C.closest("[data-chip-id]");F&&(W=F);}}}if(W){j.preventDefault(),j.stopPropagation();let I=W.getAttribute("data-chip-id");if(!I)return;let C=`{{${I}}}`,F=m.indexOf(C);if(F!==-1){let O=m.slice(0,F)+m.slice(F+C.length),K=g.filter(te=>te.id!==I);D.current=F;try{window.getSelection()?.removeAllRanges();}catch{}f?.(K),p?.(O);}}}}catch{}},onFocus:j=>{c||(w.onFocus&&w.onFocus(j),k(j));},onBlur:j=>{c||(w.onBlur&&w.onBlur(j),P(j));},className:U(),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...w.style},"data-placeholder":w.placeholder,children:q()},m===""?"empty":"content")}),t&&jsxRuntime.jsx(Te,{size:o,className:"mt-3",children:t}),typeof r=="string"&&jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r}),typeof r=="function"&&d&&jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r(d)})]})})}function qD({isPlaceholder:e,isDisabled:t,size:r="md"}){return tailwindMerge.twMerge("inline-block box-content px-0.5 rounded outline-none tabular-nums text-center transition-colors",{sm:"text-base md:text-xs",md:"text-base md:text-sm",lg:"text-base",xl:"text-lg"}[r],e?"text-text-disabled italic":"text-text-primary",t?"text-text-disabled cursor-not-allowed":"cursor-text",!t&&"hover:bg-background-hover","data-[focused]:bg-background-selected data-[focused]:text-text-primary")}function Hy({label:e,description:t,errorMessage:r,size:o="md",tooltip:n,isRequired:a,isDisabled:i,isInvalid:s,reserveErrorSpace:c=true,validationResult:l,className:u,descriptionPlacement:d="below",...m}){return jsxRuntime.jsxs(reactAriaComponents.TimeField,{...m,isDisabled:i,isRequired:a,isInvalid:s,className:ke(u,"flex flex-col gap-1"),children:[e&&jsxRuntime.jsx(ze,{size:o,tooltip:n,description:d==="tooltip"||d==="inline"?t:void 0,descriptionPlacement:d,isRequired:a,children:e}),jsxRuntime.jsx(ht,{children:jsxRuntime.jsx(reactAriaComponents.DateInput,{className:tailwindMerge.twMerge(Vo({isInvalid:s,isDisabled:i}),"px-3 py-2 flex items-center gap-0.5 w-full"),children:p=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:p,className:qD({isPlaceholder:p.isPlaceholder,isDisabled:!p.isEditable||i,size:o})})})}),c?jsxRuntime.jsx("div",{className:"mt-1 min-h-[20px]",children:typeof r=="string"?jsxRuntime.jsx(be,{size:o,children:r}):typeof r=="function"&&l?jsxRuntime.jsx(be,{size:o,children:r(l)}):t&&d==="below"?jsxRuntime.jsx(Te,{size:o,children:t}):null}):jsxRuntime.jsx(jsxRuntime.Fragment,{children:typeof r=="string"?jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r}):typeof r=="function"&&l?jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r(l)}):t&&d==="below"?jsxRuntime.jsx(Te,{size:o,className:"mt-1",children:t}):null})]})}function Wy({children:e,className:t=""}){return jsxRuntime.jsx("div",{className:`flex flex-col ${t}`.trim(),role:"list",children:e})}function Gy({children:e,variant:t="default",icon:r,label:o,isLast:n=false,className:a=""}){let s={default:{dot:"bg-border-default border-border-default",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},active:{dot:"bg-text-primary border-text-primary",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary font-medium"},muted:{dot:"bg-border-muted border-border-muted",line:"bg-border-muted",label:"text-text-secondary",content:"text-text-secondary"},success:{dot:"bg-feedback-success-border border-feedback-success-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},error:{dot:"bg-feedback-error-border border-feedback-error-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},warning:{dot:"bg-feedback-warning-border border-feedback-warning-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},info:{dot:"bg-feedback-info-border border-feedback-info-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"}}[t];return jsxRuntime.jsxs("div",{className:`flex gap-3 ${a}`.trim(),role:"listitem",children:[jsxRuntime.jsxs("div",{className:"flex flex-col items-center",style:{width:"20px"},children:[jsxRuntime.jsx("div",{className:`flex items-center justify-center rounded-full border-2 ${s.dot}`,style:{width:"20px",height:"20px",flexShrink:0},children:r&&jsxRuntime.jsx(B,{name:r,size:12,className:"text-background-body"})}),!n&&jsxRuntime.jsx("div",{className:`w-0.5 flex-1 ${s.line}`,style:{minHeight:"24px"}})]}),jsxRuntime.jsxs("div",{className:"flex-1 pb-6",children:[o&&jsxRuntime.jsx("div",{className:`text-xs mb-1 ${s.label}`,children:o}),jsxRuntime.jsx("div",{className:`text-sm ${s.content}`,children:e})]})]})}function eE(e){return "primary"}var tE="flex font-medium justify-center items-center gap-2 text-center transition whitespace-nowrap box-border",Uy={primary:{selected:"bg-action-primary text-[color:var(--color-action-primary-text)] hover:bg-action-primary-hover forced-colors:bg-[ButtonText] forced-colors:text-[ButtonFace] border-2 border-transparent",unselected:"bg-transparent text-action-primary border-2 border-border-muted hover:bg-text-primary/[0.05] forced-colors:border-[ButtonBorder] forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText]"}},rE="opacity-[--control-hover-opacity] cursor-not-allowed pointer-events-none grayscale",oE="opacity-100 cursor-pointer",nE={"top-right":"-right-2 -top-2","top-left":"-left-2 -top-2","bottom-right":"-right-2 -bottom-2","bottom-left":"-left-2 -bottom-2"},aE={primary:"bg-action-primary text-[color:var(--color-action-primary-text)]",destructive:"bg-feedback-error-border text-text-inverse"};function iE(e){let{variant:t="primary",size:r="md",isDisabled:o,isSelected:n,borderRadius:a,borderRight:i,borderLeft:s}=e,c=eE(),l=`${tE} ${n?Uy[c].selected:Uy[c].unselected}`;return l+=` ${Ge[r].text} ${Ge[r].height} ${Ge[r].padding} ${Ge[r].gap}`,l+=` ${o?rE:oE}`,a==="left"&&(l+=" rounded-l-sm"),a==="right"&&(l+=" rounded-r-sm"),i&&(l+=" border-r"),s&&(l+=" border-l"),l+=` ${Je()}`,(l+=" focus-visible:outline-action-primary"),tailwindMerge.twMerge(l)}function Yy(e){let{className:t,children:r,onPress:o,icon:n,iconPosition:a="left",iconWeight:i,isLoading:s=false,loadingText:c,loadingIndicator:l,size:u="md",badgeNumber:d,badgeVariant:m="primary",badgePosition:p="top-right",...g}=e,f=n?jsxRuntime.jsx(B,{name:n,size:u,weight:i}):null,h=()=>{let x=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[a==="left"&&f,r,a==="right"&&f]});return s?jsxRuntime.jsxs("div",{className:"relative inline-flex items-center justify-center",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:l||jsxRuntime.jsx(B,{name:"CircleNotch",size:u,className:"animate-spin","aria-hidden":"true"})}),jsxRuntime.jsx("div",{className:"invisible","aria-hidden":"true",children:x}),c&&jsxRuntime.jsx("span",{className:"sr-only",role:"status","aria-live":"polite",children:c})]}):x},b=jsxRuntime.jsx(reactAriaComponents.ToggleButton,{onPress:o,...g,className:tailwindMerge.twMerge(iE(e),t),"aria-busy":s,children:h()});return d&&d>0?jsxRuntime.jsxs("div",{className:"relative",children:[b,jsxRuntime.jsx("span",{className:`absolute ${nE[p]} flex h-5 w-5 items-center justify-center rounded-full ${aE[m]} text-xs`,"aria-label":`${d} items`,children:d})]}):b}var lE={open:{className:"text-feedback-success-border",token:"--color-feedback-success-border",label:"Open"},closed:{className:"text-feedback-error-border",token:"--color-feedback-error-border",label:"Closed"}},cE={platform:{label:"Platform",description:"Core product objects that structure the Texture workspace.",icon:"Stack",order:0},grid:{label:"Grid Elements",description:"Physical utility-grid infrastructure imported from a customer's GIS export.",icon:"TreeStructure",order:1},device:{label:"Devices",description:"Behind-the-meter connected energy devices.",icon:"Lightning",order:2}},dE=["energized","customerName","gs_max_continuous_current"],it={TRANSFORMER:[{key:"primaryRatedVoltage",label:"Primary Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"ratedOutputVoltage",label:"Output Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"tranKvaA",label:"Rating Phase A",format:{type:"power",unit:"kVA",decimals:1}},{key:"tranKvaB",label:"Rating Phase B",format:{type:"power",unit:"kVA",decimals:1}},{key:"tranKvaC",label:"Rating Phase C",format:{type:"power",unit:"kVA",decimals:1}}],CONSUMER:[{key:"meterNumber",label:"Meter Number",format:{type:"text"}}],SOURCE:[{key:"busVoltage",label:"Bus Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"substationNumber",label:"Substation Number",format:{type:"text"}}],SWITCH:[{key:"switchId",label:"Switch ID",format:{type:"text"}},{key:"ratedCurrent",label:"Rated Current",format:{type:"number",unit:"A",decimals:0}},{key:"normalState",label:"Normal State",format:{type:"text"}}],CAPACITOR:[{key:"unitSizeKvar",label:"Capacity",format:{type:"power",unit:"kVar",decimals:1}},{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}}],OVERCURRENT_DEVICE:[{key:"ratedCurrent",label:"Rated Current",format:{type:"number",unit:"A",decimals:0}},{key:"deviceType",label:"Device Type",format:{type:"text"}}],REGULATOR:[{key:"outputVoltagePhA",label:"Output Voltage Phase A",format:{type:"voltage",unit:"V",decimals:0}},{key:"outputVoltagePhB",label:"Output Voltage Phase B",format:{type:"voltage",unit:"V",decimals:0}},{key:"outputVoltagePhC",label:"Output Voltage Phase C",format:{type:"voltage",unit:"V",decimals:0}},{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kVA",decimals:1}}],OVERHEAD_LINE:[{key:"impedanceLength",label:"Length",format:{type:"distance",unit:"ft",decimals:0}},{key:"conductorDescPhA",label:"Conductor Phase A",format:{type:"text"}},{key:"conductorDescPhB",label:"Conductor Phase B",format:{type:"text"}},{key:"conductorDescPhC",label:"Conductor Phase C",format:{type:"text"}}],UNDERGROUND_LINE:[{key:"impedanceLength",label:"Length",format:{type:"distance",unit:"ft",decimals:0}},{key:"conductorDescPhA",label:"Conductor Phase A",format:{type:"text"}},{key:"conductorDescPhB",label:"Conductor Phase B",format:{type:"text"}},{key:"conductorDescPhC",label:"Conductor Phase C",format:{type:"text"}}],NODE:[{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}}],GENERATOR:[{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kW",decimals:1}},{key:"outputVoltage",label:"Output Voltage",format:{type:"voltage",unit:"V",decimals:0}}],MOTOR:[{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kW",decimals:1}},{key:"voltage",label:"Voltage",format:{type:"voltage",unit:"V",decimals:0}}]},oa={app:{icon:"AppWindow",category:"platform",archetype:"platform",detailPage:false,label:{singular:"App",plural:"Apps"},description:"Workspace tools and third-party integrations"},site:{icon:"MapPin",category:"platform",archetype:"platform",detailPage:true,label:{singular:"Site",plural:"Sites"},description:"Physical location housing energy systems"},device:{icon:"ShareNetwork",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Device",plural:"Devices"},description:"Connected, controllable energy device"},customer:{icon:"Users",category:"platform",archetype:"platform",detailPage:true,label:{singular:"Customer",plural:"Customers"},description:"End customer or owner of one or more sites"},contact:{icon:"Users",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Contact",plural:"Contacts"},description:"Person associated with a customer or site"},program:{icon:"ClipboardText",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Program",plural:"Programs"},description:"Demand-response or virtual power plant program"},workflow:{icon:"FlowArrow",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Workflow",plural:"Workflows"},description:"Automated rule that runs in response to events"},collection:{icon:"Stack",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Collection",plural:"Collections"},description:"Named group of related entities or records"},board:{icon:"SquaresFour",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Board",plural:"Boards"},description:"Dashboard for monitoring metrics and devices"},report:{icon:"ChartLine",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Report",plural:"Reports"},description:"Saved analytics view or generated report"},event:{icon:"ClockCounterClockwise",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Event",plural:"Events"},description:"Recorded system event or logged activity"},alert:{icon:"Warning",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Alert",plural:"Alerts"},description:"Notification raised when attention is needed"},monitor:{icon:"Pulse",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Monitor",plural:"Monitors"},description:"Rule that watches a metric against a threshold"},command:{icon:"Play",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Command",plural:"Commands"},description:"Control action issued to a connected device"},source:{icon:"TextureSource",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SOURCE},label:{singular:"Source",plural:"Sources"},description:"Upstream feed where the network originates"},substation:{icon:"TextureSource",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SOURCE},label:{singular:"Substation",plural:"Substations"},description:"Facility that steps down transmission voltage"},capacitor:{icon:"TextureCapacitor",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CAPACITOR},label:{singular:"Capacitor",plural:"Capacitors"},description:"Capacitor bank for power-factor and voltage support"},switch:{icon:"TextureSwitchClosed",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SWITCH},label:{singular:"Switch",plural:"Switches"},description:"Sectionalizing or disconnect switch on the line",states:{open:{icon:"TextureSwitch",color:"open"},closed:{icon:"TextureSwitchClosed",color:"closed"}}},sectionalizer:{icon:"TextureSectionalizerClosed",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SWITCH},label:{singular:"Sectionalizer",plural:"Sectionalizers"},description:"Counts upstream recloser trips and opens to isolate a faulted section",states:{open:{icon:"TextureSectionalizerOpen",color:"open"},closed:{icon:"TextureSectionalizerClosed",color:"closed"}}},relay:{icon:"Cpu",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.NODE},label:{singular:"Relay",plural:"Relays"},description:"Microprocessor relay that senses faults and trips devices"},transformer:{icon:"TextureTransformer",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.TRANSFORMER},label:{singular:"Transformer",plural:"Transformers"},description:"Transformer that steps voltage up or down"},meter:{icon:"Gauge",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CONSUMER},label:{singular:"Meter",plural:"Meters"},description:"Revenue meter at the point of consumption",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.meter.fields.power",source:{kind:"state",path:"state.phaseARealPower"},format:{type:"power",unit:"kW",decimals:2},icon:"Pulse"},{id:"consumption",label:"device.meter.fields.consumption",source:{kind:"state",path:"state.latestKwhUsage"},format:{type:"energy",sourceUnit:"kWh",decimals:2},icon:"Lightning"},{id:"voltage",label:"device.meter.fields.voltage",source:{kind:"state",path:"state.phaseAVoltage"},format:{type:"voltage",decimals:1},icon:"Lightning"},{id:"current",label:"device.meter.fields.current",source:{kind:"state",path:"state.phaseACurrent"},format:{type:"current",decimals:2},icon:"Lightning"}]}},consumer:{icon:"Gauge",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CONSUMER},label:{singular:"Consumer",plural:"Consumers"},description:"Service point or customer premise on the grid"},singlePhaseOverheadLine:{icon:"TextureSinglePhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Single-Phase Overhead Line",plural:"Single-Phase Overhead Lines"},description:"Overhead line carrying one phase conductor"},twoPhaseOverheadLine:{icon:"TextureTwoPhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Two-Phase Overhead Line",plural:"Two-Phase Overhead Lines"},description:"Overhead line carrying two phase conductors"},threePhaseOverheadLine:{icon:"TextureThreePhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Three-Phase Overhead Line",plural:"Three-Phase Overhead Lines"},description:"Overhead line carrying three phase conductors"},singlePhaseUndergroundLine:{icon:"TextureSinglePhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Single-Phase Underground Line",plural:"Single-Phase Underground Lines"},description:"Buried line carrying one phase conductor"},twoPhaseUndergroundLine:{icon:"TextureTwoPhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Two-Phase Underground Line",plural:"Two-Phase Underground Lines"},description:"Buried line carrying two phase conductors"},threePhaseUndergroundLine:{icon:"TextureThreePhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Three-Phase Underground Line",plural:"Three-Phase Underground Lines"},description:"Buried line carrying three phase conductors"},motorSwitch:{icon:"Diamond",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.MOTOR},label:{singular:"Motor Switch",plural:"Motor Switches"},description:"Motor-operated switch or motor load element"},recloser:{icon:"TextureRecloser",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Recloser",plural:"Reclosers"},description:"Auto-reclosing device that clears transient faults",states:{open:{color:"open"},closed:{color:"closed"}}},fuse:{icon:"TextureFuse",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Fuse",plural:"Fuses"},description:"Fusible element providing overcurrent protection"},breaker:{icon:"TextureBreaker",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Breaker",plural:"Breakers"},description:"Circuit breaker that interrupts fault current",states:{open:{color:"open"},closed:{color:"closed"}}},generator:{icon:"Wind",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.GENERATOR},label:{singular:"Generator",plural:"Generators"},description:"Distributed generation unit feeding the grid"},regulator:{icon:"TextureRegulator",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.REGULATOR},label:{singular:"Regulator",plural:"Regulators"},description:"Voltage regulator that holds line voltage in range"},supportStructure:{icon:"TextureSupportStructure",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.NODE},label:{singular:"Support Structure",plural:"Support Structures"},description:"Structure carrying overhead line equipment"},battery:{icon:"BatteryHigh",category:"device",archetype:"device",detailPage:true,label:{singular:"Battery",plural:"Batteries"},description:"Behind-the-meter battery or storage system",fusedMetricId:"soc",fields:{headlineMetrics:[{id:"power",label:"device.battery.fields.power",source:{kind:"state",path:"state.gridPower"},format:{type:"power",decimals:1},icon:"Lightning"},{id:"soc",label:"device.battery.fields.soc",source:{kind:"state",path:"state.chargePercentage"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"backupReserve",label:"device.battery.fields.backupReserve",source:{kind:"state",path:"state.backupReserve"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"loadPower",label:"device.battery.fields.loadPower",source:{kind:"state",path:"state.loadPower"},format:{type:"power",decimals:1},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.battery.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"},secondaryState:{label:"device.battery.fields.gridState",fieldPath:"state.gridStatus",mapping:{importing:"importing",exporting:"exporting",idle:"importing",unknown:"importing"},fallback:"importing"}}},evCharger:{icon:"ChargingStation",category:"device",archetype:"device",detailPage:true,label:{singular:"EV Charger",plural:"EV Chargers"},description:"Electric-vehicle charging station or port",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.evCharger.fields.power",source:{kind:"state",path:"state.chargerWattage"},format:{type:"power",decimals:1},icon:"Lightning"},{id:"isPluggedIn",label:"device.evCharger.fields.isPluggedIn",source:{kind:"state",path:"state.isPluggedIn"},format:{type:"boolean",trueText:"Yes",falseText:"No"},icon:"Plug"},{id:"voltage",label:"device.evCharger.fields.voltage",source:{kind:"state",path:"state.chargerVoltage"},format:{type:"voltage",decimals:1},icon:"Lightning"},{id:"current",label:"device.evCharger.fields.current",source:{kind:"state",path:"state.chargerCurrent"},format:{type:"current",decimals:1},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.evCharger.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"}}},inverter:{icon:"Sun",category:"device",archetype:"device",detailPage:true,label:{singular:"Solar / Inverter",plural:"Solar / Inverters"},description:"Solar PV inverter and its connected array",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.inverter.fields.power",source:{kind:"state",path:"state.power"},format:{type:"power",decimals:0},icon:"Lightning"},{id:"gridPower",label:"device.inverter.fields.gridPower",source:{kind:"state",path:"state.gridPower"},format:{type:"power",decimals:0},icon:"GridFour"},{id:"generatedEnergy",label:"device.inverter.fields.generatedEnergy",source:{kind:"state",path:"state.generatedEnergy"},format:{type:"energy",decimals:1},icon:"Lightning"},{id:"lifetimeEnergyGenerated",label:"device.inverter.fields.lifetimeEnergyGenerated",source:{kind:"state",path:"state.lifetimeEnergyGenerated"},format:{type:"energy",decimals:0},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.inverter.fields.gridStatus",fieldPath:"state.gridStatus",mapping:{exporting:"exporting",importing:"importing",idle:"idle"},fallback:"unknown"}}},thermostat:{icon:"Thermometer",category:"device",archetype:"device",detailPage:true,label:{singular:"Thermostat",plural:"Thermostats"},description:"Smart thermostat or connected HVAC control",fusedMetricId:"ambientTemperature",fields:{headlineMetrics:[{id:"ambientTemperature",label:"device.thermostat.fields.ambientTemperature",source:{kind:"state",path:"state.ambientTemperature"},format:{type:"temperature",decimals:0},icon:"Thermometer"},{id:"heatTarget",label:"device.thermostat.fields.heatTarget",source:{kind:"state",path:"state.heatTarget"},format:{type:"temperature",decimals:0},icon:"Flame"},{id:"coolTarget",label:"device.thermostat.fields.coolTarget",source:{kind:"state",path:"state.coolTarget"},format:{type:"temperature",decimals:0},icon:"Snowflake"},{id:"fanMode",label:"device.thermostat.fields.fanMode",source:{kind:"state",path:"state.fanMode"},format:{type:"text"}}]},stateRules:{primaryState:{label:"device.thermostat.fields.operatingMode",fieldPath:"state.operatingMode",mapping:{heat:"heat",cool:"cool",auto:"auto",off:"off",eco:"eco",unknown:"unknown"},fallback:"unknown"}}},vehicle:{icon:"Car",category:"device",archetype:"device",detailPage:true,label:{singular:"EV",plural:"EVs"},description:"Electric vehicle managed as a flexible load",fusedMetricId:"chargePercentage",fields:{headlineMetrics:[{id:"chargePercentage",label:"device.vehicle.fields.chargePercentage",source:{kind:"state",path:"state.chargePercentage"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"range",label:"device.vehicle.fields.range",source:{kind:"state",path:"state.range"},format:{type:"distance",unit:"mi",decimals:0},icon:"GasPump"},{id:"chargeLimit",label:"device.vehicle.fields.chargeLimit",source:{kind:"state",path:"state.chargeLimit"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"isPluggedIn",label:"device.vehicle.fields.isPluggedIn",source:{kind:"state",path:"state.isPluggedIn"},format:{type:"boolean",trueText:"Yes",falseText:"No"},icon:"Plug"}]},stateRules:{primaryState:{label:"device.vehicle.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"}}},waterHeater:{icon:"Drop",category:"device",archetype:"device",detailPage:true,label:{singular:"Water Heater",plural:"Water Heaters"},description:"Connected or smart electric water heater"}},uE={source:"SOURCE",substation:"SOURCE",capacitor:"CAPACITOR",switch:"SWITCH",sectionalizer:"SWITCH",relay:"NODE",transformer:"TRANSFORMER",meter:"CONSUMER",consumer:"CONSUMER",singlePhaseOverheadLine:"OVERHEAD_LINE",twoPhaseOverheadLine:"OVERHEAD_LINE",threePhaseOverheadLine:"OVERHEAD_LINE",singlePhaseUndergroundLine:"UNDERGROUND_LINE",twoPhaseUndergroundLine:"UNDERGROUND_LINE",threePhaseUndergroundLine:"UNDERGROUND_LINE",motorSwitch:"MOTOR",recloser:"OVERCURRENT_DEVICE",fuse:"OVERCURRENT_DEVICE",breaker:"OVERCURRENT_DEVICE",generator:"GENERATOR",regulator:"REGULATOR",supportStructure:"NODE"};function gc(e){return oa[e]}function pE(e){return oa[e].icon}function mE(e,t=false){return t?oa[e].label.plural:oa[e].label.singular}function fE(e){return oa[e].category}var gE={min:2,max:4};function bE(e){let t=oa[e];if(!t)throw new Error(`archetypeFor: unknown entity type "${String(e)}"`);return t.archetype}function xE(e){return gc(e).detailPage}function hE(e){return (gc(e).fields?.headlineMetrics.length??0)>0}function Jy(e){return gc(e).properties?.statList??[]}function yE(e){return Jy(e).length>0}function vE({formId:e="dialog-form",onSubmit:t,primaryLabel:r="Save",secondaryLabel:o="Cancel",onCancel:n,primaryVariant:a,secondaryVariant:i="secondary",children:s,title:c,...l}){return jsxRuntime.jsx(Nr,{title:c,primaryAction:{label:r,onPress:()=>{let d=document.getElementById(e);d&&d.requestSubmit();},variant:a},secondaryAction:n?{label:o,onPress:n,variant:i}:void 0,...l,children:jsxRuntime.jsx(Fa,{id:e,onSubmit:t,children:s})})}function CE({formId:e="drawer-form",onSubmit:t,primaryLabel:r="Save",secondaryLabel:o="Cancel",onCancel:n,primaryVariant:a,secondaryVariant:i="secondary",children:s,...c}){return jsxRuntime.jsx(Ei,{primaryAction:{label:r,onPress:()=>{let u=document.getElementById(e);u&&u.requestSubmit();},variant:a},secondaryAction:n?{label:o,onPress:n,variant:i}:void 0,...c,children:jsxRuntime.jsx(Fa,{id:e,onSubmit:t,className:"mt-2",children:s})})}function wE({align:e="end",className:t,...r}){return jsxRuntime.jsx("div",{...r,className:tailwindMerge.twMerge("flex gap-2",e==="start"?"justify-start":e==="between"?"justify-between":"justify-end",t)})}var TE={sm:"gap-2",md:"gap-4",lg:"gap-6"};function PE(e){if(!e)return "";let t=e.base?`grid-cols-${e.base}`:"",r=e.md?`md:grid-cols-${e.md}`:"",o=e.lg?`lg:grid-cols-${e.lg}`:"";return [t,r,o].filter(Boolean).join(" ")}function RE({cols:e={base:1},gap:t="lg",className:r,...o}){return jsxRuntime.jsx("div",{...o,className:tailwindMerge.twMerge("grid",PE(e),TE[t],r)})}function EE({title:e,description:t,showDivider:r,className:o,children:n,...a}){return jsxRuntime.jsxs("section",{...a,className:tailwindMerge.twMerge("flex flex-col",o),children:[(e||t)&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 mb-6",children:[typeof e=="string"?jsxRuntime.jsx(Qt,{tag:"h3",size:"sm",children:e}):e,t?jsxRuntime.jsx(Te,{size:"lg",children:t}):null]}),jsxRuntime.jsx("div",{className:"flex flex-col gap-6",children:n}),r&&jsxRuntime.jsx("hr",{className:"mt-2 border-border-muted"})]})}function LE(){return jsxRuntime.jsx("hr",{className:"border-border-muted"})}function AE({steps:e,currentStepId:t,onStepClick:r,className:o}){let n=e.findIndex(a=>a.id===t);return jsxRuntime.jsx("nav",{"aria-label":"Progress",className:tailwindMerge.twMerge("w-full",o),children:jsxRuntime.jsx("div",{className:"relative mb-12",children:jsxRuntime.jsx("ol",{className:"relative flex items-start justify-between",children:e.map((a,i)=>{let s=a.id===t,c=i<n,l=r&&(c||s);return jsxRuntime.jsxs("li",{className:"relative flex flex-col items-center",style:{flex:`1 1 ${100/e.length}%`},children:[jsxRuntime.jsx("button",{type:"button",disabled:!l,onClick:()=>l&&r?.(a.id),className:tailwindMerge.twMerge("relative z-10 flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full border-2 transition-colors bg-background-body",c&&"border-action-primary bg-action-primary text-text-inverse hover:bg-action-primary/90",s&&"border-action-primary bg-background-body text-action-primary",!c&&!s&&"border-border-default bg-background-body text-text-secondary",l&&"cursor-pointer",!l&&"cursor-default"),"aria-current":s?"step":void 0,children:c?jsxRuntime.jsx(B,{name:"Check",size:20,weight:"bold"}):jsxRuntime.jsx("span",{className:"text-sm font-semibold",children:i+1})}),i<e.length-1&&jsxRuntime.jsx("div",{className:"absolute top-5 h-0.5 transition-colors",style:{left:"50%",width:"100%",marginLeft:"20px",backgroundColor:i<n?"var(--color-action-primary)":"var(--color-border-default)"}}),jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center text-center w-32",children:[jsxRuntime.jsx("span",{className:tailwindMerge.twMerge("text-sm font-medium",s&&"text-text-default",c&&"text-text-primary",!s&&!c&&"text-text-secondary"),children:a.title}),a.description&&jsxRuntime.jsx("span",{className:"mt-1 text-xs text-text-secondary",children:a.description})]})]},a.id)})})})})}function FE({formId:e,show:t,isSubmitting:r,onCancel:o,primaryLabel:n="Save changes",secondaryLabel:a="Cancel",className:i}){return t?jsxRuntime.jsx("div",{className:tailwindMerge.twMerge("fixed inset-x-0 bottom-0 z-40 border-t border-border-muted bg-background-surface/95 backdrop-blur supports-[backdrop-filter]:bg-background-surface/70",i),children:jsxRuntime.jsxs("div",{className:"mx-auto flex max-w-screen-lg items-center justify-between gap-3 p-3",children:[jsxRuntime.jsx("div",{className:"text-sm text-text-secondary",children:"You have unsaved changes"}),jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx(Z,{variant:"secondary",onPress:o,children:a}),jsxRuntime.jsx(Z,{type:"submit",form:e,isDisabled:!!r,children:r?"Saving...":n})]})]})}):null}function BE({when:e,message:t="You have unsaved changes. Leave anyway?"}){return Oe__namespace.useEffect(()=>{if(!e)return;let r=o=>(o.preventDefault(),o.returnValue=t,t);return window.addEventListener("beforeunload",r),()=>window.removeEventListener("beforeunload",r)},[e,t]),null}function VE({steps:e,initialStepId:t,canNavigate:r}){if(e.length===0)throw new Error("useWizard: steps array cannot be empty");let[o,n]=Oe__namespace.useState(t||e[0].id),a=e.findIndex(d=>d.id===o),i=a>0,s=a<e.length-1,c=async d=>d===o?true:r&&!await r(o,d)?false:(n(d),true);return {steps:e,currentStepId:o,setCurrentStepId:c,next:async()=>!s||a===-1?false:c(e[a+1].id),prev:async()=>!i||a===-1?false:c(e[a-1].id),hasNext:s,hasPrev:i,stepIndex:a}}function $i(e,t){return t.split(".").reduce((r,o)=>r?.[o],e)}function OE(e,t){let r=$i(e,t.field),o=t.value;switch(t.operator){case "eq":return r===o;case "neq":return r!==o;case "in":return Array.isArray(o)?Array.isArray(r)?r.some(n=>o.includes(n)):o.includes(r):false;case "nin":return Array.isArray(o)?Array.isArray(r)?!r.some(n=>o.includes(n)):!o.includes(r):false;case "gt":return r instanceof Date&&typeof o=="string"?r>new Date(o):r>o;case "gte":return r instanceof Date&&typeof o=="string"?r>=new Date(o):r>=o;case "lt":return r instanceof Date&&typeof o=="string"?r<new Date(o):r<o;case "lte":return r instanceof Date&&typeof o=="string"?r<=new Date(o):r<=o;case "contains":return typeof r!="string"?false:r.toLowerCase().includes(String(o).toLowerCase());case "startsWith":return typeof r!="string"?false:r.toLowerCase().startsWith(String(o).toLowerCase());case "endsWith":return typeof r!="string"?false:r.toLowerCase().endsWith(String(o).toLowerCase());default:return false}}function ev(e,t){if(t.conditions.length===0)return true;let r=t.conditions.map(o=>"conditions"in o?ev(e,o):OE(e,o));return t.logic==="AND"?r.every(Boolean):r.some(Boolean)}function HE(e,t){return !t||t.conditions.length===0?e:e.filter(r=>ev(r,t))}function WE(e,t,r){if(e==null&&t==null)return 0;if(e==null)return r==="asc"?1:-1;if(t==null)return r==="asc"?-1:1;if(e instanceof Date&&t instanceof Date){let o=e.getTime()-t.getTime();return r==="asc"?o:-o}if(typeof e=="string"&&typeof t=="string"){let o=e.toLowerCase().localeCompare(t.toLowerCase());return r==="asc"?o:-o}return e<t?r==="asc"?-1:1:e>t?r==="asc"?1:-1:0}function GE(e,t){return t?[...e].sort((r,o)=>{let n=$i(r,t.field),a=$i(o,t.field);return WE(n,a,t.direction)}):e}function UE(e,t){if(!t||!t.query.trim())return e;let{query:r,fields:o,fuzzy:n=true,threshold:a=.3}=t;if(n)return new zE__default.default(e,{keys:o,threshold:a,ignoreLocation:true,includeScore:true}).search(r).map(l=>l.item);let i=r.toLowerCase();return e.filter(s=>o.some(c=>{let l=$i(s,c);return l==null?false:String(l).toLowerCase().includes(i)}))}function KE(e,t){let r={};for(let o of t){if(r[o.field]={},o.values)for(let n of o.values)r[o.field][String(n.value)]=0;for(let n of e){let a=$i(n,o.field);if(a!=null)if(Array.isArray(a))for(let i of a){let s=String(i);r[o.field][s]=(r[o.field][s]||0)+1;}else {let i=String(a);r[o.field][i]=(r[o.field][i]||0)+1;}}}return r}function Ep({data:e,filters:t,sort:r,search:o,facetConfigs:n=[]}){let a=UE(e,o||null);a=HE(a,t||null);let i=KE(a,n);return a=GE(a,r||null),{data:a,facetCounts:i,resultCount:a.length}}function xc({data:e,filters:t,sort:r,search:o,facetConfigs:n=[]}){return Oe.useMemo(()=>Ep({data:e,filters:t,sort:r,search:o,facetConfigs:n}),[e,t,r,o,n])}function hc({filters:e,sort:t,search:r,onStateChange:o,searchDebounce:n=300}){let a=Bo(r,n),i=Oe.useRef(true);Oe.useEffect(()=>{if(i.current){i.current=false;return}o({filters:e,sort:t,search:a});},[e,t,a,o]);}function tv(e){return e.mode==="client"?xc({data:e.data,filters:e.filters,sort:e.sort,search:e.search,facetConfigs:e.facetConfigs}):(hc({filters:e.filters,sort:e.sort,search:e.search,onStateChange:e.onStateChange,searchDebounce:e.searchDebounce}),{data:e.data,facetCounts:e.facetCounts||{},resultCount:e.resultCount??e.data.length})}var rv=Op(iu());function qE(e,t,r=true){let o=e;if(r){let n=new Date().toISOString().replace(/[:.]/g,"-").slice(0,-5);return `${o}-${n}.${t}`}return `${o}.${t}`}function QE(e,t){return t.accessor?typeof t.accessor=="function"?t.accessor(e):e[t.accessor]:null}function ov(e,t){let r=QE(t,e);return e.exportValue?e.exportValue(r,t)??"":r==null?"":r instanceof Date?r.toISOString():typeof r=="object"?JSON.stringify(r):r}function Lp(e){return e.filter(t=>t.exportable!==false)}function nv(e){let t=e.map(n=>n.exportLabel||n.label),r=new Set,o=[];for(let n of t)r.has(n)?o.includes(n)||o.push(n):r.add(n);if(o.length>0)throw new Error(`Duplicate export headers found: ${o.join(", ")}. Use exportLabel to provide unique headers.`)}async function Ap(e){let{columns:t,data:r,metadata:o={}}=e;try{let n=Lp(t);if(n.length===0)throw new Error("No exportable columns found");nv(n);let a=r.map(l=>{let u={};for(let d of n){let m=d.exportLabel||d.label;u[m]=ov(d,l);}return u}),i=nk__default.default.unparse(a,{header:!0,skipEmptyLines:!0}),s=new Blob([i],{type:"text/csv;charset=utf-8;"}),c=qE(o.filename||"table-data","csv",o.timestamp!==!1);(0,rv.saveAs)(s,c);}catch(n){throw new Error(`CSV export failed: ${n instanceof Error?n.message:"Unknown error"}`)}}function ZE(e){let{columns:t,data:r}=e,o=Lp(t);return nv(o),r.map(n=>{let a={};for(let i of o){let s=i.exportLabel||i.label;a[s]=ov(i,n);}return a})}function _E(e){return Lp(e).map(t=>t.exportLabel||t.label)}function av({columns:e,data:t,metadata:r}){let n=e.filter(i=>i.exportable!==false).length>0&&t.length>0;return {exportCSV:Oe.useCallback(async()=>{try{await Ap({columns:e,data:t,metadata:r});}catch(i){throw console.error("Table export failed:",i),i}},[e,t,r]),canExport:n}}function doe(e){switch(e){case "charging":case "on":return "success";case "discharging":return "warning";case "heat":case "cool":return "info";case "off":case "idle":case "eco":case "auto":return "neutral";default:return "neutral"}}Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return reactAriaComponents.DialogTrigger}});exports.ABSENT_GRID_FIELDS=dE;exports.ActionCell=Ub;exports.ActionMenu=fa;exports.ActivityFeed=vd;exports.ActivityFeedGroup=hs;exports.ActivityItem=ys;exports.Alert=cf;exports.AppShell=bf;exports.AreaSeries=Yo;exports.AutoMobileRenderer=wl;exports.Autocomplete=Rs;exports.Avatar=bo;exports.BREAKPOINTS=sn;exports.Badge=nt;exports.BadgeCell=Yb;exports.Banner=Ds;exports.BarSeries=Ws;exports.BooleanCell=Jb;exports.BrandProvider=Qp;exports.BreadcrumbItem=Ls;exports.Breadcrumbs=Es;exports.Button=Z;exports.CUSTOM_ICON_REGISTRY=ia;exports.Calendar=ha;exports.Card=Ue;exports.CardContent=pd;exports.CardFooter=md;exports.CardHeader=dd;exports.CardMedia=ud;exports.CardMobileRenderer=Nl;exports.CarouselAutoplayTrigger=Yf;exports.CarouselControl=Wf;exports.CarouselIndicator=Gd;exports.CarouselIndicatorGroup=Kf;exports.CarouselItem=Hf;exports.CarouselItemGroup=Of;exports.CarouselNextTrigger=Uf;exports.CarouselPrevTrigger=Gf;exports.CarouselProgressText=Jf;exports.CarouselRoot=zf;exports.CategoryBarChart=wg;exports.ChartAxis=Rr;exports.ChartBottomBar=Ta;exports.ChartContainer=Gg;exports.ChartContext=Pr;exports.ChartEventMarkers=Xs;exports.ChartEventSpans=js;exports.ChartTooltip=Jo;exports.Checkbox=Cn;exports.CheckboxGroup=Ud;exports.Chip=eo;exports.ChipInputField=$f;exports.ClearButton=ai;exports.CodeEditor=rg;exports.Collapse=ya;exports.CollapseContent=Uo;exports.CollapseHeader=Go;exports.CollapseItem=Wo;exports.ColorField=lN;exports.ColorModeProvider=sm;exports.CommandPalette=Fx;exports.Confirm=lg;exports.ConnectionStatusBadge=cg;exports.ContactCard=dg;exports.ContactMetaCell=jb;exports.ContactMetaDisplay=Vs;exports.ContainerQueryProvider=mg;exports.CopyToClipboard=zo;exports.CustomCell=qb;exports.DEFAULT_MAP_TYPE=_l;exports.DataControls=Ab;exports.DataTable=wx;exports.DateCell=Qb;exports.DateField=Bb;exports.DateRangePicker=sl;exports.Description=Te;exports.DeviceHealthBadge=kx;exports.DeviceMetaCell=_b;exports.DeviceMetaDisplay=ml;exports.DeviceStateBadge=zn;exports.DeviceStateCell=tx;exports.DeviceStateWithMetric=bl;exports.DeviceTypeIcon=Px;exports.Dialog=Nr;exports.DialogForm=vE;exports.DialogHeader=Ht;exports.Drawer=Ei;exports.DrawerForm=CE;exports.ENTITY_CATEGORY_CONFIG=cE;exports.ENTITY_CONFIG=oa;exports.EmptyState=$s;exports.EnrollmentStatusBadge=Mx;exports.ErrorBoundary=Vr;exports.FieldError=be;exports.FieldGroup=yf;exports.FileUpload=Ex;exports.FilterChips=Ib;exports.FilterDialog=Hb;exports.FirmwareVersionBadge=Ax;exports.Form=Fa;exports.FormActions=wE;exports.FormDivider=LE;exports.FormGrid=RE;exports.FormSection=EE;exports.FormStepper=AE;exports.FormatRegistry=oe;exports.FormattedCell=ox;exports.FunnelSeries=Jg;exports.GRID_ELEMENT_TYPE_BY_ENTITY=uE;exports.GRID_STATE_COLORS=lE;exports.GRID_STAT_LIST=it;exports.GlobalSearch=zx;exports.Grid=ju;exports.GridStateBadge=gl;exports.HEADLINE_METRIC_BOUNDS=gE;exports.Heading=Qt;exports.HierarchyExplorer=ph;exports.HorizontalBarCell=Bu;exports.HoverCard=pR;exports.Icon=B;exports.InfiniteScrollIndicator=wr;exports.Input=ks;exports.InputWrapper=ht;exports.InteractiveMap=Ui;exports.Kpi=gh;exports.KpiGroup=op;exports.Label=ze;exports.LineSeries=Tn;exports.List=Ch;exports.ListBox=wR;exports.ListBoxItem=_t;exports.ListItem=wh;exports.ListPane=Nh;exports.Loader=fo;exports.Logo=ba;exports.MAP_TYPES=_h;exports.Meter=oy;exports.MiniBarCell=Vu;exports.ModalBackdrop=cr;exports.Notice=oc;exports.NoticeContainer=nc;exports.NoticeProvider=ay;exports.NumberCell=lx;exports.NumberField=Ti;exports.PageBanner=Df;exports.PageLayout=Qn;exports.PercentBarCell=zu;exports.PlaceSearch=my;exports.Popover=st;exports.ProgressBar=gy;exports.Prose=by;exports.Radio=Cy;exports.RadioCard=xy;exports.RadioCardGroup=hy;exports.RadioGroup=vy;exports.RangeCalendar=Ma;exports.ResultsCount=Si;exports.RichTextEditor=Ny;exports.SKELETON_SIZES=Zo;exports.SOURCE_UNIT_TO_WH=Jc;exports.SaveBar=FE;exports.SearchControl=In;exports.SearchEmptyState=Ox;exports.SearchLoadingState=Wx;exports.SearchResultGroup=Ux;exports.SearchResultItem=Kx;exports.SearchResultsList=Yx;exports.SearchTrigger=Xx;exports.Section=Ka;exports.SectionNav=sc;exports.SegmentedControl=tl;exports.Select=go;exports.SelectCell=dx;exports.SideNav=Cs;exports.SiteCard=ky;exports.SiteContactCard=Py;exports.SiteMetaCell=px;exports.SiteMetaDisplay=yl;exports.Skeleton=J;exports.Slider=Ry;exports.SortControl=wi;exports.SparklineCell=Ou;exports.SplitPane=fc;exports.StackNav=Ss;exports.StatList=Ll;exports.StaticMap=Ua;exports.Switch=ll;exports.Tab=pc;exports.TabList=uc;exports.TabPanel=dy;exports.Tabs=dc;exports.TextArea=Iy;exports.TextAreaWithChips=zy;exports.TextCell=bx;exports.TextField=Er;exports.TextLink=Ze;exports.TiledTimeSeriesChart=Zs;exports.TiledTimeSeriesExplorer=Rb;exports.TimeControls=rl;exports.TimeField=Hy;exports.Timeline=Wy;exports.TimelineItem=Gy;exports.ToggleButton=Yy;exports.Tooltip=Zt;exports.TopNav=ni;exports.Tray=lt;exports.UnsavedChangesPrompt=BE;exports.activeDeviceStates=K1;exports.addFilterCondition=Qo;exports.applyDataOperations=Ep;exports.archetypeFor=bE;exports.assembleSeries=db;exports.autoScaleCurrent=RC;exports.autoScaleDistance=bm;exports.autoScaleEnergy=vm;exports.autoScalePower=BC;exports.autoScaleResistance=VC;exports.autoScaleVoltage=KC;exports.baselineFromPoint=zN;exports.camelCaseToWords=Bm;exports.capitalize=Im;exports.celsiusToFahrenheit=zC;exports.celsiusToKelvin=jA;exports.centimetersToInches=MA;exports.clearColorCache=os;exports.createCategoryColorMap=dC;exports.createEmptyFilter=Ni;exports.createFilter=s1;exports.createFilters=l1;exports.createFormat=C5;exports.createTextureIcon=rt;exports.createTiledCameraSyncGroup=Xg;exports.createXScale=tu;exports.createYScale=ui;exports.csvUnitFor=nd;exports.csvValueFor=Om;exports.defaultMargin=Ie;exports.deviceStateLabels=Y1;exports.deviceStateMetricFormats=_G;exports.emptyStore=ub;exports.entityHasDetailPage=xE;exports.entityHasStatList=yE;exports.entityShowsNow=hE;exports.enumToSentenceCase=GC;exports.exportChart=lu;exports.exportTableAsCSV=Ap;exports.fahrenheitToCelsius=OC;exports.fahrenheitToKelvin=qA;exports.feetToMeters=vA;exports.feetToMiles=wA;exports.filterToChips=c1;exports.formatBoolean=lm;exports.formatCapacity=_L;exports.formatComponentValue=jr;exports.formatCurrency=mm;exports.formatCurrent=Vc;exports.formatDate=fm;exports.formatDistance=xm;exports.formatEmptyValue=ul;exports.formatEnergy=Xc;exports.formatFieldValue=Br;exports.formatInternationalPhone=jc;exports.formatNumber=pm;exports.formatPercent=dm;exports.formatPhone=Cm;exports.formatPhoneNumber=ca;exports.formatPower=_c;exports.formatPowerRating=$L;exports.formatResistance=ed;exports.formatTemperature=Mm;exports.formatText=zm;exports.formatUSPhone=ss;exports.formatVoltage=od;exports.getBadgeClasses=Wb;exports.getBooleanBadgeVariant=Gb;exports.getCellAlignmentClasses=Eu;exports.getCellContainerClasses=Me;exports.getCellTextClasses=Lr;exports.getContrastingTextColor=uC;exports.getDateParts=fA;exports.getDefaultChartColor=Qa;exports.getDefaultColors=_p;exports.getDeviceStateDisplayLabel=Iu;exports.getDeviceStateLabel=Iu;exports.getEntityCategory=fE;exports.getEntityConfig=gc;exports.getEntityIcon=pE;exports.getEntityLabel=mE;exports.getEntityStatList=Jy;exports.getEventColor=ho;exports.getExportFormatName=ck;exports.getExportHeaders=_E;exports.getFieldGroupStyles=dS;exports.getFilterFields=Bn;exports.getGridStateLabel=ex;exports.getInputBackgroundStyles=hf;exports.getInputBaseStyles=Vt;exports.getInputStateStyles=Vo;exports.getLinkClasses=Lu;exports.getNumericColorClasses=pl;exports.getResolvedColor=Tt;exports.getSkeletonSize=nr;exports.getStateTone=doe;exports.getThemeCategoricalColors=ln;exports.getYFormatSettings=Or;exports.gridStateLabels=X1;exports.inchesToCentimeters=RA;exports.isActiveDeviceState=Au;exports.isActiveState=Au;exports.isCustomPinsLayer=pp;exports.isExportSupported=lk;exports.isFilterEmpty=il;exports.isGeoJsonLayer=up;exports.isLightColor=$p;exports.isNil=me;exports.isRasterLayer=mp;exports.isVectorLayer=dp;exports.kelvinToCelsius=HC;exports.kelvinToFahrenheit=QA;exports.kilometersToMiles=SA;exports.layer=cp;exports.mapValuesToCategoricalColors=Rc;exports.metersToFeet=yA;exports.metersToMiles=NA;exports.metersToYards=PA;exports.milesToFeet=gm;exports.milesToKilometers=CA;exports.milesToMeters=kA;exports.parseBoolean=Eo;exports.pickEnergyUnit=Yc;exports.prepareTableDataForExport=ZE;exports.registerPhosphorIcon=ty;exports.removeFilterCondition=Fn;exports.resolveValue=Se;exports.snakeCaseToWords=Vm;exports.temperatureStringToSymbol=Nm;exports.tierForViewport=_s;exports.tileIndexAt=pT;exports.tileKey=rr;exports.tileReducer=pb;exports.tilesForViewport=Xo;exports.toA=cA;exports.toActiveInactive=yC;exports.toAmps=as;exports.toBoolean=Do;exports.toCelsius=Tm;exports.toCentimeters=AC;exports.toCheckmark=CC;exports.toCompactNumber=kC;exports.toCurrency=um;exports.toCustomDateFormat=LC;exports.toDateString=MC;exports.toEnabledDisabled=xC;exports.toFahrenheit=km;exports.toFeet=Hc;exports.toFloat=wC;exports.toFormattedNumber=NC;exports.toFullDateTime=DC;exports.toGW=WA;exports.toGWh=ym;exports.toGigawatts=Zc;exports.toISOString=EC;exports.toInches=FC;exports.toInteger=SC;exports.toKA=dA;exports.toKV=n5;exports.toKW=OA;exports.toKelvin=Pm;exports.toKiloamps=Bc;exports.toKilohms=Sm;exports.toKilometers=Oc;exports.toKilovolts=rd;exports.toKilowatts=qc;exports.toLowerCase=Em;exports.toMA=lA;exports.toMV=r5;exports.toMW=HA;exports.toMWh=hm;exports.toMegawatts=Qc;exports.toMegohms=wm;exports.toMeters=zc;exports.toMiles=Wc;exports.toMilliamps=Fc;exports.toMillimeters=IC;exports.toMilliohms=$c;exports.toMillivolts=td;exports.toNauticalMiles=hA;exports.toOhms=cs;exports.toOnOff=hC;exports.toPercentage=cm;exports.toRelativeTime=is;exports.toScientificNotation=TC;exports.toSecret=UC;exports.toSentenceCase=Lm;exports.toTemperature=Rm;exports.toTitleCase=Am;exports.toTrueFalse=vC;exports.toUpperCase=Dm;exports.toV=o5;exports.toVolts=ps;exports.toW=zA;exports.toWatts=ls;exports.toWh=Uc;exports.toYards=Gc;exports.tokWh=Kc;exports.truncateEnd=us;exports.truncateMiddle=da;exports.truncateStart=ds;exports.typeRole=ft;exports.typographyRole=qr;exports.ucFirst=Fm;exports.useBreakpoint=Xt;exports.useChartContext=kn;exports.useClientDataControls=xc;exports.useColorMode=Bt;exports.useComponentFormatter=oA;exports.useContainerBreakpoint=ug;exports.useDataControls=tv;exports.useDebounce=Bo;exports.useElementSize=xa;exports.useInfiniteScroll=Io;exports.useInputFocus=Tr;exports.useLocalStorage=Gl;exports.useMediaQuery=Jt;exports.useNotice=sy;exports.useServerDataControls=hc;exports.useTableExport=av;exports.useTileWindow=yb;exports.useTiledTimeSeries=yu;exports.useWizard=VE;exports.wrapWithLink=ao;exports.yardsToMeters=TA;//# sourceMappingURL=index.cjs.map
47
+ `).length-1&&jsxRuntime.jsx("br",{})]},`line-${E}-${I}`)):Q}):null;return jsxRuntime.jsx("div",{className:"group flex flex-col",children:jsxRuntime.jsxs("div",{className:"flex flex-col",children:[e&&jsxRuntime.jsx(ze,{size:o,tooltip:n,isRequired:a,children:e}),jsxRuntime.jsx(ht,{children:jsxRuntime.jsx("div",{ref:N,contentEditable:!c,suppressContentEditableWarning:true,onInput:j=>{if(c)return;let Q=j.target,E=Q.querySelector("[data-chip-id]")!==null,M;if(E?(M=L(Q),M=M.replace(/(\{\{[^}]+\}\})\s{2,}/g,"$1 ").replace(/\s{2,}(\{\{[^}]+\}\})/g," $1")):M=Q.textContent||"",M===""){try{let C=document.createRange();C.selectNodeContents(Q),C.collapse(!0);let F=window.getSelection();F?.removeAllRanges(),F?.addRange(C),D.current=0;}catch{}H("",0);return}if(M===m)return;let W=window.getSelection(),I=0;if(W&&W.rangeCount>0)try{let C=W.getRangeAt(0);if(E){let F=0,O=!1,K=te=>{if(O)return !0;if(te===C.startContainer)return F+=C.startOffset,O=!0,!0;if(te.nodeType===Node.TEXT_NODE){if(!te.parentElement?.closest("[data-chip-id]")){if(te.contains(C.startContainer))return F+=C.startOffset,O=!0,!0;F+=(te.textContent||"").length;}}else if(te.nodeType===Node.ELEMENT_NODE){let de=te;if(de.hasAttribute("data-chip-id")){if(de.contains(C.startContainer)||de===C.startContainer){let ae=de.getAttribute("data-chip-id");return F+=`{{${ae}}}`.length,O=!0,!0}let _=de.getAttribute("data-chip-id");return F+=`{{${_}}}`.length,!1}else if(de.tagName==="BR")return de===C.startContainer?(O=!0,!0):(F+=1,!1)}for(let de=0;de<te.childNodes.length;de++)if(K(te.childNodes[de]))return !0;return !1};K(Q),I=F;}else {let F=document.createRange();F.setStart(Q,0),F.setEnd(C.startContainer,C.startOffset),I=F.toString().length;}}catch{I=M.length;}D.current=I,H(M,I);},onKeyDown:j=>{if(c)return;let Q=window.getSelection();if(!(!Q||Q.rangeCount===0))try{let E=Q.getRangeAt(0),M=E.commonAncestorContainer;if(j.key==="ArrowLeft"||j.key==="ArrowRight"){let W=M.nodeType===Node.TEXT_NODE?M.parentElement?.closest("[data-chip-id]"):M.closest("[data-chip-id]");if(W){j.preventDefault();try{let I=document.createRange(),C=window.getSelection();j.key==="ArrowLeft"?I.setStartBefore(W):I.setStartAfter(W),I.collapse(!0),C?.removeAllRanges(),C?.addRange(I);}catch{}}}if(j.key==="Backspace"){let W=null;if(W=(M.nodeType===Node.TEXT_NODE?M.parentElement?.closest("[data-chip-id]"):M.closest("[data-chip-id]"))||null,!W)if(M.nodeType===Node.TEXT_NODE){let I=M;if(E.startOffset===0&&I.parentElement){let C=I.previousSibling;if(C&&C.nodeType===Node.ELEMENT_NODE){let F=C.closest("[data-chip-id]");F&&(W=F);}}}else {let I=M;if(E.startOffset>0){let C=I.childNodes[E.startOffset-1];if(C&&C.nodeType===Node.ELEMENT_NODE){let F=C.closest("[data-chip-id]");F&&(W=F);}}}if(W){j.preventDefault(),j.stopPropagation();let I=W.getAttribute("data-chip-id");if(!I)return;let C=`{{${I}}}`,F=m.indexOf(C);if(F!==-1){let O=m.slice(0,F)+m.slice(F+C.length),K=g.filter(te=>te.id!==I);D.current=F;try{window.getSelection()?.removeAllRanges();}catch{}f?.(K),p?.(O);}}}}catch{}},onFocus:j=>{c||(w.onFocus&&w.onFocus(j),k(j));},onBlur:j=>{c||(w.onBlur&&w.onBlur(j),P(j));},className:U(),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...w.style},"data-placeholder":w.placeholder,children:q()},m===""?"empty":"content")}),t&&jsxRuntime.jsx(Te,{size:o,className:"mt-3",children:t}),typeof r=="string"&&jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r}),typeof r=="function"&&d&&jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r(d)})]})})}function qD({isPlaceholder:e,isDisabled:t,size:r="md"}){return tailwindMerge.twMerge("inline-block box-content px-0.5 rounded outline-none tabular-nums text-center transition-colors",{sm:"text-base md:text-xs",md:"text-base md:text-sm",lg:"text-base",xl:"text-lg"}[r],e?"text-text-disabled italic":"text-text-primary",t?"text-text-disabled cursor-not-allowed":"cursor-text",!t&&"hover:bg-background-hover","data-[focused]:bg-background-selected data-[focused]:text-text-primary")}function Hy({label:e,description:t,errorMessage:r,size:o="md",tooltip:n,isRequired:a,isDisabled:i,isInvalid:s,reserveErrorSpace:c=true,validationResult:l,className:u,descriptionPlacement:d="below",...m}){return jsxRuntime.jsxs(reactAriaComponents.TimeField,{...m,isDisabled:i,isRequired:a,isInvalid:s,className:ke(u,"flex flex-col gap-1"),children:[e&&jsxRuntime.jsx(ze,{size:o,tooltip:n,description:d==="tooltip"||d==="inline"?t:void 0,descriptionPlacement:d,isRequired:a,children:e}),jsxRuntime.jsx(ht,{children:jsxRuntime.jsx(reactAriaComponents.DateInput,{className:tailwindMerge.twMerge(Vo({isInvalid:s,isDisabled:i}),"px-3 py-2 flex items-center gap-0.5 w-full"),children:p=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:p,className:qD({isPlaceholder:p.isPlaceholder,isDisabled:!p.isEditable||i,size:o})})})}),c?jsxRuntime.jsx("div",{className:"mt-1 min-h-[20px]",children:typeof r=="string"?jsxRuntime.jsx(be,{size:o,children:r}):typeof r=="function"&&l?jsxRuntime.jsx(be,{size:o,children:r(l)}):t&&d==="below"?jsxRuntime.jsx(Te,{size:o,children:t}):null}):jsxRuntime.jsx(jsxRuntime.Fragment,{children:typeof r=="string"?jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r}):typeof r=="function"&&l?jsxRuntime.jsx(be,{size:o,className:"mt-1",children:r(l)}):t&&d==="below"?jsxRuntime.jsx(Te,{size:o,className:"mt-1",children:t}):null})]})}function Wy({children:e,className:t=""}){return jsxRuntime.jsx("div",{className:`flex flex-col ${t}`.trim(),role:"list",children:e})}function Gy({children:e,variant:t="default",icon:r,label:o,isLast:n=false,className:a=""}){let s={default:{dot:"bg-border-default border-border-default",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},active:{dot:"bg-text-primary border-text-primary",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary font-medium"},muted:{dot:"bg-border-muted border-border-muted",line:"bg-border-muted",label:"text-text-secondary",content:"text-text-secondary"},success:{dot:"bg-feedback-success-border border-feedback-success-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},error:{dot:"bg-feedback-error-border border-feedback-error-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},warning:{dot:"bg-feedback-warning-border border-feedback-warning-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"},info:{dot:"bg-feedback-info-border border-feedback-info-border",line:"bg-border-default",label:"text-text-secondary",content:"text-text-primary"}}[t];return jsxRuntime.jsxs("div",{className:`flex gap-3 ${a}`.trim(),role:"listitem",children:[jsxRuntime.jsxs("div",{className:"flex flex-col items-center",style:{width:"20px"},children:[jsxRuntime.jsx("div",{className:`flex items-center justify-center rounded-full border-2 ${s.dot}`,style:{width:"20px",height:"20px",flexShrink:0},children:r&&jsxRuntime.jsx(B,{name:r,size:12,className:"text-background-body"})}),!n&&jsxRuntime.jsx("div",{className:`w-0.5 flex-1 ${s.line}`,style:{minHeight:"24px"}})]}),jsxRuntime.jsxs("div",{className:"flex-1 pb-6",children:[o&&jsxRuntime.jsx("div",{className:`text-xs mb-1 ${s.label}`,children:o}),jsxRuntime.jsx("div",{className:`text-sm ${s.content}`,children:e})]})]})}function eE(e){return "primary"}var tE="flex font-medium justify-center items-center gap-2 text-center transition whitespace-nowrap box-border",Uy={primary:{selected:"bg-action-primary text-[color:var(--color-action-primary-text)] hover:bg-action-primary-hover forced-colors:bg-[ButtonText] forced-colors:text-[ButtonFace] border-2 border-transparent",unselected:"bg-transparent text-action-primary border-2 border-border-muted hover:bg-text-primary/[0.05] forced-colors:border-[ButtonBorder] forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText]"}},rE="opacity-[--control-hover-opacity] cursor-not-allowed pointer-events-none grayscale",oE="opacity-100 cursor-pointer",nE={"top-right":"-right-2 -top-2","top-left":"-left-2 -top-2","bottom-right":"-right-2 -bottom-2","bottom-left":"-left-2 -bottom-2"},aE={primary:"bg-action-primary text-[color:var(--color-action-primary-text)]",destructive:"bg-feedback-error-border text-text-inverse"};function iE(e){let{variant:t="primary",size:r="md",isDisabled:o,isSelected:n,borderRadius:a,borderRight:i,borderLeft:s}=e,c=eE(),l=`${tE} ${n?Uy[c].selected:Uy[c].unselected}`;return l+=` ${Ge[r].text} ${Ge[r].height} ${Ge[r].padding} ${Ge[r].gap}`,l+=` ${o?rE:oE}`,a==="left"&&(l+=" rounded-l-sm"),a==="right"&&(l+=" rounded-r-sm"),i&&(l+=" border-r"),s&&(l+=" border-l"),l+=` ${Je()}`,(l+=" focus-visible:outline-action-primary"),tailwindMerge.twMerge(l)}function Yy(e){let{className:t,children:r,onPress:o,icon:n,iconPosition:a="left",iconWeight:i,isLoading:s=false,loadingText:c,loadingIndicator:l,size:u="md",badgeNumber:d,badgeVariant:m="primary",badgePosition:p="top-right",...g}=e,f=n?jsxRuntime.jsx(B,{name:n,size:u,weight:i}):null,h=()=>{let x=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[a==="left"&&f,r,a==="right"&&f]});return s?jsxRuntime.jsxs("div",{className:"relative inline-flex items-center justify-center",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:l||jsxRuntime.jsx(B,{name:"CircleNotch",size:u,className:"animate-spin","aria-hidden":"true"})}),jsxRuntime.jsx("div",{className:"invisible","aria-hidden":"true",children:x}),c&&jsxRuntime.jsx("span",{className:"sr-only",role:"status","aria-live":"polite",children:c})]}):x},b=jsxRuntime.jsx(reactAriaComponents.ToggleButton,{onPress:o,...g,className:tailwindMerge.twMerge(iE(e),t),"aria-busy":s,children:h()});return d&&d>0?jsxRuntime.jsxs("div",{className:"relative",children:[b,jsxRuntime.jsx("span",{className:`absolute ${nE[p]} flex h-5 w-5 items-center justify-center rounded-full ${aE[m]} text-xs`,"aria-label":`${d} items`,children:d})]}):b}var lE={open:{className:"text-feedback-success-border",token:"--color-feedback-success-border",label:"Open"},closed:{className:"text-feedback-error-border",token:"--color-feedback-error-border",label:"Closed"}},cE={platform:{label:"Platform",description:"Core product objects that structure the Texture workspace.",icon:"Stack",order:0},grid:{label:"Grid Elements",description:"Physical utility-grid infrastructure imported from a customer's GIS export.",icon:"TreeStructure",order:1},device:{label:"Devices",description:"Behind-the-meter connected energy devices.",icon:"Lightning",order:2}},dE=["energized","customerName","gs_max_continuous_current"],it={TRANSFORMER:[{key:"capacityKva",label:"kVA Rating",format:{type:"power",unit:"kVA",decimals:0}},{key:"primaryRatedVoltage",label:"Primary Voltage",format:{type:"voltage",unit:"V",decimals:0}}],CONSUMER:[{key:"meterNumber",label:"Meter Number",format:{type:"text"}}],SOURCE:[{key:"busVoltage",label:"Bus Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}},{key:"substationNumber",label:"Substation Number",format:{type:"text"}}],SWITCH:[{key:"switchId",label:"Switch ID",format:{type:"text"}},{key:"ratedCurrent",label:"Rated Current",format:{type:"number",unit:"A",decimals:0}},{key:"normalState",label:"Normal State",format:{type:"text"}}],CAPACITOR:[{key:"unitSizeKvar",label:"Capacity",format:{type:"power",unit:"kVar",decimals:1}},{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}}],OVERCURRENT_DEVICE:[{key:"ratedCurrent",label:"Rated Current",format:{type:"number",unit:"A",decimals:0}},{key:"deviceType",label:"Device Type",format:{type:"text"}}],REGULATOR:[{key:"outputVoltagePhA",label:"Output Voltage Phase A",format:{type:"voltage",unit:"V",decimals:0}},{key:"outputVoltagePhB",label:"Output Voltage Phase B",format:{type:"voltage",unit:"V",decimals:0}},{key:"outputVoltagePhC",label:"Output Voltage Phase C",format:{type:"voltage",unit:"V",decimals:0}},{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kVA",decimals:1}}],OVERHEAD_LINE:[{key:"impedanceLength",label:"Length",format:{type:"distance",unit:"ft",decimals:0}},{key:"conductorDescPhA",label:"Conductor Phase A",format:{type:"text"}},{key:"conductorDescPhB",label:"Conductor Phase B",format:{type:"text"}},{key:"conductorDescPhC",label:"Conductor Phase C",format:{type:"text"}}],UNDERGROUND_LINE:[{key:"impedanceLength",label:"Length",format:{type:"distance",unit:"ft",decimals:0}},{key:"conductorDescPhA",label:"Conductor Phase A",format:{type:"text"}},{key:"conductorDescPhB",label:"Conductor Phase B",format:{type:"text"}},{key:"conductorDescPhC",label:"Conductor Phase C",format:{type:"text"}}],NODE:[{key:"nominalVoltage",label:"Nominal Voltage",format:{type:"voltage",unit:"V",decimals:0}}],GENERATOR:[{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kW",decimals:1}},{key:"outputVoltage",label:"Output Voltage",format:{type:"voltage",unit:"V",decimals:0}}],MOTOR:[{key:"ratedPower",label:"Rated Power",format:{type:"power",unit:"kW",decimals:1}},{key:"voltage",label:"Voltage",format:{type:"voltage",unit:"V",decimals:0}}]},oa={app:{icon:"AppWindow",category:"platform",archetype:"platform",detailPage:false,label:{singular:"App",plural:"Apps"},description:"Workspace tools and third-party integrations"},site:{icon:"MapPin",category:"platform",archetype:"platform",detailPage:true,label:{singular:"Site",plural:"Sites"},description:"Physical location housing energy systems"},device:{icon:"ShareNetwork",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Device",plural:"Devices"},description:"Connected, controllable energy device"},customer:{icon:"Users",category:"platform",archetype:"platform",detailPage:true,label:{singular:"Customer",plural:"Customers"},description:"End customer or owner of one or more sites"},contact:{icon:"Users",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Contact",plural:"Contacts"},description:"Person associated with a customer or site"},program:{icon:"ClipboardText",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Program",plural:"Programs"},description:"Demand-response or virtual power plant program"},workflow:{icon:"FlowArrow",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Workflow",plural:"Workflows"},description:"Automated rule that runs in response to events"},collection:{icon:"Stack",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Collection",plural:"Collections"},description:"Named group of related entities or records"},board:{icon:"SquaresFour",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Board",plural:"Boards"},description:"Dashboard for monitoring metrics and devices"},report:{icon:"ChartLine",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Report",plural:"Reports"},description:"Saved analytics view or generated report"},event:{icon:"ClockCounterClockwise",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Event",plural:"Events"},description:"Recorded system event or logged activity"},alert:{icon:"Warning",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Alert",plural:"Alerts"},description:"Notification raised when attention is needed"},monitor:{icon:"Pulse",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Monitor",plural:"Monitors"},description:"Rule that watches a metric against a threshold"},command:{icon:"Play",category:"platform",archetype:"platform",detailPage:false,label:{singular:"Command",plural:"Commands"},description:"Control action issued to a connected device"},source:{icon:"TextureSource",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SOURCE},label:{singular:"Source",plural:"Sources"},description:"Upstream feed where the network originates"},substation:{icon:"TextureSource",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SOURCE},label:{singular:"Substation",plural:"Substations"},description:"Facility that steps down transmission voltage"},capacitor:{icon:"TextureCapacitor",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CAPACITOR},label:{singular:"Capacitor",plural:"Capacitors"},description:"Capacitor bank for power-factor and voltage support"},switch:{icon:"TextureSwitchClosed",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SWITCH},label:{singular:"Switch",plural:"Switches"},description:"Sectionalizing or disconnect switch on the line",states:{open:{icon:"TextureSwitch",color:"open"},closed:{icon:"TextureSwitchClosed",color:"closed"}}},sectionalizer:{icon:"TextureSectionalizerClosed",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.SWITCH},label:{singular:"Sectionalizer",plural:"Sectionalizers"},description:"Counts upstream recloser trips and opens to isolate a faulted section",states:{open:{icon:"TextureSectionalizerOpen",color:"open"},closed:{icon:"TextureSectionalizerClosed",color:"closed"}}},relay:{icon:"Cpu",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.NODE},label:{singular:"Relay",plural:"Relays"},description:"Microprocessor relay that senses faults and trips devices"},transformer:{icon:"TextureTransformer",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.TRANSFORMER},label:{singular:"Transformer",plural:"Transformers"},description:"Transformer that steps voltage up or down"},meter:{icon:"Gauge",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CONSUMER},label:{singular:"Meter",plural:"Meters"},description:"Revenue meter at the point of consumption",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.meter.fields.power",source:{kind:"state",path:"state.phaseARealPower"},format:{type:"power",unit:"kW",decimals:2},icon:"Pulse"},{id:"consumption",label:"device.meter.fields.consumption",source:{kind:"state",path:"state.latestKwhUsage"},format:{type:"energy",sourceUnit:"kWh",decimals:2},icon:"Lightning"},{id:"voltage",label:"device.meter.fields.voltage",source:{kind:"state",path:"state.phaseAVoltage"},format:{type:"voltage",decimals:1},icon:"Lightning"},{id:"current",label:"device.meter.fields.current",source:{kind:"state",path:"state.phaseACurrent"},format:{type:"current",decimals:2},icon:"Lightning"}]}},consumer:{icon:"Gauge",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.CONSUMER},label:{singular:"Consumer",plural:"Consumers"},description:"Service point or customer premise on the grid"},singlePhaseOverheadLine:{icon:"TextureSinglePhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Single-Phase Overhead Line",plural:"Single-Phase Overhead Lines"},description:"Overhead line carrying one phase conductor"},twoPhaseOverheadLine:{icon:"TextureTwoPhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Two-Phase Overhead Line",plural:"Two-Phase Overhead Lines"},description:"Overhead line carrying two phase conductors"},threePhaseOverheadLine:{icon:"TextureThreePhaseOverheadLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.OVERHEAD_LINE},label:{singular:"Three-Phase Overhead Line",plural:"Three-Phase Overhead Lines"},description:"Overhead line carrying three phase conductors"},singlePhaseUndergroundLine:{icon:"TextureSinglePhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Single-Phase Underground Line",plural:"Single-Phase Underground Lines"},description:"Buried line carrying one phase conductor"},twoPhaseUndergroundLine:{icon:"TextureTwoPhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Two-Phase Underground Line",plural:"Two-Phase Underground Lines"},description:"Buried line carrying two phase conductors"},threePhaseUndergroundLine:{icon:"TextureThreePhaseUndergroundLine",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.UNDERGROUND_LINE},label:{singular:"Three-Phase Underground Line",plural:"Three-Phase Underground Lines"},description:"Buried line carrying three phase conductors"},motorSwitch:{icon:"Diamond",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.MOTOR},label:{singular:"Motor Switch",plural:"Motor Switches"},description:"Motor-operated switch or motor load element"},recloser:{icon:"TextureRecloser",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Recloser",plural:"Reclosers"},description:"Auto-reclosing device that clears transient faults",states:{open:{color:"open"},closed:{color:"closed"}}},fuse:{icon:"TextureFuse",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Fuse",plural:"Fuses"},description:"Fusible element providing overcurrent protection"},breaker:{icon:"TextureBreaker",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.OVERCURRENT_DEVICE},label:{singular:"Breaker",plural:"Breakers"},description:"Circuit breaker that interrupts fault current",states:{open:{color:"open"},closed:{color:"closed"}}},generator:{icon:"Wind",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.GENERATOR},label:{singular:"Generator",plural:"Generators"},description:"Distributed generation unit feeding the grid"},regulator:{icon:"TextureRegulator",category:"grid",archetype:"grid-energized",detailPage:true,properties:{statList:it.REGULATOR},label:{singular:"Regulator",plural:"Regulators"},description:"Voltage regulator that holds line voltage in range"},supportStructure:{icon:"TextureSupportStructure",category:"grid",archetype:"grid-line",detailPage:true,properties:{statList:it.NODE},label:{singular:"Support Structure",plural:"Support Structures"},description:"Structure carrying overhead line equipment"},battery:{icon:"BatteryHigh",category:"device",archetype:"device",detailPage:true,label:{singular:"Battery",plural:"Batteries"},description:"Behind-the-meter battery or storage system",fusedMetricId:"soc",fields:{headlineMetrics:[{id:"power",label:"device.battery.fields.power",source:{kind:"state",path:"state.gridPower"},format:{type:"power",decimals:1},icon:"Lightning"},{id:"soc",label:"device.battery.fields.soc",source:{kind:"state",path:"state.chargePercentage"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"backupReserve",label:"device.battery.fields.backupReserve",source:{kind:"state",path:"state.backupReserve"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"loadPower",label:"device.battery.fields.loadPower",source:{kind:"state",path:"state.loadPower"},format:{type:"power",decimals:1},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.battery.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"},secondaryState:{label:"device.battery.fields.gridState",fieldPath:"state.gridStatus",mapping:{importing:"importing",exporting:"exporting",idle:"importing",unknown:"importing"},fallback:"importing"}}},evCharger:{icon:"ChargingStation",category:"device",archetype:"device",detailPage:true,label:{singular:"EV Charger",plural:"EV Chargers"},description:"Electric-vehicle charging station or port",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.evCharger.fields.power",source:{kind:"state",path:"state.chargerWattage"},format:{type:"power",decimals:1},icon:"Lightning"},{id:"isPluggedIn",label:"device.evCharger.fields.isPluggedIn",source:{kind:"state",path:"state.isPluggedIn"},format:{type:"boolean",trueText:"Yes",falseText:"No"},icon:"Plug"},{id:"voltage",label:"device.evCharger.fields.voltage",source:{kind:"state",path:"state.chargerVoltage"},format:{type:"voltage",decimals:1},icon:"Lightning"},{id:"current",label:"device.evCharger.fields.current",source:{kind:"state",path:"state.chargerCurrent"},format:{type:"current",decimals:1},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.evCharger.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"}}},inverter:{icon:"Sun",category:"device",archetype:"device",detailPage:true,label:{singular:"Solar / Inverter",plural:"Solar / Inverters"},description:"Solar PV inverter and its connected array",fusedMetricId:"power",fields:{headlineMetrics:[{id:"power",label:"device.inverter.fields.power",source:{kind:"state",path:"state.power"},format:{type:"power",decimals:0},icon:"Lightning"},{id:"gridPower",label:"device.inverter.fields.gridPower",source:{kind:"state",path:"state.gridPower"},format:{type:"power",decimals:0},icon:"GridFour"},{id:"generatedEnergy",label:"device.inverter.fields.generatedEnergy",source:{kind:"state",path:"state.generatedEnergy"},format:{type:"energy",decimals:1},icon:"Lightning"},{id:"lifetimeEnergyGenerated",label:"device.inverter.fields.lifetimeEnergyGenerated",source:{kind:"state",path:"state.lifetimeEnergyGenerated"},format:{type:"energy",decimals:0},icon:"Lightning"}]},stateRules:{primaryState:{label:"device.inverter.fields.gridStatus",fieldPath:"state.gridStatus",mapping:{exporting:"exporting",importing:"importing",idle:"idle"},fallback:"unknown"}}},thermostat:{icon:"Thermometer",category:"device",archetype:"device",detailPage:true,label:{singular:"Thermostat",plural:"Thermostats"},description:"Smart thermostat or connected HVAC control",fusedMetricId:"ambientTemperature",fields:{headlineMetrics:[{id:"ambientTemperature",label:"device.thermostat.fields.ambientTemperature",source:{kind:"state",path:"state.ambientTemperature"},format:{type:"temperature",decimals:0},icon:"Thermometer"},{id:"heatTarget",label:"device.thermostat.fields.heatTarget",source:{kind:"state",path:"state.heatTarget"},format:{type:"temperature",decimals:0},icon:"Flame"},{id:"coolTarget",label:"device.thermostat.fields.coolTarget",source:{kind:"state",path:"state.coolTarget"},format:{type:"temperature",decimals:0},icon:"Snowflake"},{id:"fanMode",label:"device.thermostat.fields.fanMode",source:{kind:"state",path:"state.fanMode"},format:{type:"text"}}]},stateRules:{primaryState:{label:"device.thermostat.fields.operatingMode",fieldPath:"state.operatingMode",mapping:{heat:"heat",cool:"cool",auto:"auto",off:"off",eco:"eco",unknown:"unknown"},fallback:"unknown"}}},vehicle:{icon:"Car",category:"device",archetype:"device",detailPage:true,label:{singular:"EV",plural:"EVs"},description:"Electric vehicle managed as a flexible load",fusedMetricId:"chargePercentage",fields:{headlineMetrics:[{id:"chargePercentage",label:"device.vehicle.fields.chargePercentage",source:{kind:"state",path:"state.chargePercentage"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"range",label:"device.vehicle.fields.range",source:{kind:"state",path:"state.range"},format:{type:"distance",unit:"mi",decimals:0},icon:"GasPump"},{id:"chargeLimit",label:"device.vehicle.fields.chargeLimit",source:{kind:"state",path:"state.chargeLimit"},format:{type:"percentage",decimals:0},icon:"BatteryCharging"},{id:"isPluggedIn",label:"device.vehicle.fields.isPluggedIn",source:{kind:"state",path:"state.isPluggedIn"},format:{type:"boolean",trueText:"Yes",falseText:"No"},icon:"Plug"}]},stateRules:{primaryState:{label:"device.vehicle.fields.status",fieldPath:"state.chargingState",mapping:{charging:"charging",discharging:"discharging",idle:"idle",unknown:"unknown"},fallback:"unknown"}}},waterHeater:{icon:"Drop",category:"device",archetype:"device",detailPage:true,label:{singular:"Water Heater",plural:"Water Heaters"},description:"Connected or smart electric water heater"}},uE={source:"SOURCE",substation:"SOURCE",capacitor:"CAPACITOR",switch:"SWITCH",sectionalizer:"SWITCH",relay:"NODE",transformer:"TRANSFORMER",meter:"CONSUMER",consumer:"CONSUMER",singlePhaseOverheadLine:"OVERHEAD_LINE",twoPhaseOverheadLine:"OVERHEAD_LINE",threePhaseOverheadLine:"OVERHEAD_LINE",singlePhaseUndergroundLine:"UNDERGROUND_LINE",twoPhaseUndergroundLine:"UNDERGROUND_LINE",threePhaseUndergroundLine:"UNDERGROUND_LINE",motorSwitch:"MOTOR",recloser:"OVERCURRENT_DEVICE",fuse:"OVERCURRENT_DEVICE",breaker:"OVERCURRENT_DEVICE",generator:"GENERATOR",regulator:"REGULATOR",supportStructure:"NODE"};function gc(e){return oa[e]}function pE(e){return oa[e].icon}function mE(e,t=false){return t?oa[e].label.plural:oa[e].label.singular}function fE(e){return oa[e].category}var gE={min:2,max:4};function bE(e){let t=oa[e];if(!t)throw new Error(`archetypeFor: unknown entity type "${String(e)}"`);return t.archetype}function xE(e){return gc(e).detailPage}function hE(e){return (gc(e).fields?.headlineMetrics.length??0)>0}function Jy(e){return gc(e).properties?.statList??[]}function yE(e){return Jy(e).length>0}function vE({formId:e="dialog-form",onSubmit:t,primaryLabel:r="Save",secondaryLabel:o="Cancel",onCancel:n,primaryVariant:a,secondaryVariant:i="secondary",children:s,title:c,...l}){return jsxRuntime.jsx(Nr,{title:c,primaryAction:{label:r,onPress:()=>{let d=document.getElementById(e);d&&d.requestSubmit();},variant:a},secondaryAction:n?{label:o,onPress:n,variant:i}:void 0,...l,children:jsxRuntime.jsx(Fa,{id:e,onSubmit:t,children:s})})}function CE({formId:e="drawer-form",onSubmit:t,primaryLabel:r="Save",secondaryLabel:o="Cancel",onCancel:n,primaryVariant:a,secondaryVariant:i="secondary",children:s,...c}){return jsxRuntime.jsx(Ei,{primaryAction:{label:r,onPress:()=>{let u=document.getElementById(e);u&&u.requestSubmit();},variant:a},secondaryAction:n?{label:o,onPress:n,variant:i}:void 0,...c,children:jsxRuntime.jsx(Fa,{id:e,onSubmit:t,className:"mt-2",children:s})})}function wE({align:e="end",className:t,...r}){return jsxRuntime.jsx("div",{...r,className:tailwindMerge.twMerge("flex gap-2",e==="start"?"justify-start":e==="between"?"justify-between":"justify-end",t)})}var TE={sm:"gap-2",md:"gap-4",lg:"gap-6"};function PE(e){if(!e)return "";let t=e.base?`grid-cols-${e.base}`:"",r=e.md?`md:grid-cols-${e.md}`:"",o=e.lg?`lg:grid-cols-${e.lg}`:"";return [t,r,o].filter(Boolean).join(" ")}function RE({cols:e={base:1},gap:t="lg",className:r,...o}){return jsxRuntime.jsx("div",{...o,className:tailwindMerge.twMerge("grid",PE(e),TE[t],r)})}function EE({title:e,description:t,showDivider:r,className:o,children:n,...a}){return jsxRuntime.jsxs("section",{...a,className:tailwindMerge.twMerge("flex flex-col",o),children:[(e||t)&&jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 mb-6",children:[typeof e=="string"?jsxRuntime.jsx(Qt,{tag:"h3",size:"sm",children:e}):e,t?jsxRuntime.jsx(Te,{size:"lg",children:t}):null]}),jsxRuntime.jsx("div",{className:"flex flex-col gap-6",children:n}),r&&jsxRuntime.jsx("hr",{className:"mt-2 border-border-muted"})]})}function LE(){return jsxRuntime.jsx("hr",{className:"border-border-muted"})}function AE({steps:e,currentStepId:t,onStepClick:r,className:o}){let n=e.findIndex(a=>a.id===t);return jsxRuntime.jsx("nav",{"aria-label":"Progress",className:tailwindMerge.twMerge("w-full",o),children:jsxRuntime.jsx("div",{className:"relative mb-12",children:jsxRuntime.jsx("ol",{className:"relative flex items-start justify-between",children:e.map((a,i)=>{let s=a.id===t,c=i<n,l=r&&(c||s);return jsxRuntime.jsxs("li",{className:"relative flex flex-col items-center",style:{flex:`1 1 ${100/e.length}%`},children:[jsxRuntime.jsx("button",{type:"button",disabled:!l,onClick:()=>l&&r?.(a.id),className:tailwindMerge.twMerge("relative z-10 flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full border-2 transition-colors bg-background-body",c&&"border-action-primary bg-action-primary text-text-inverse hover:bg-action-primary/90",s&&"border-action-primary bg-background-body text-action-primary",!c&&!s&&"border-border-default bg-background-body text-text-secondary",l&&"cursor-pointer",!l&&"cursor-default"),"aria-current":s?"step":void 0,children:c?jsxRuntime.jsx(B,{name:"Check",size:20,weight:"bold"}):jsxRuntime.jsx("span",{className:"text-sm font-semibold",children:i+1})}),i<e.length-1&&jsxRuntime.jsx("div",{className:"absolute top-5 h-0.5 transition-colors",style:{left:"50%",width:"100%",marginLeft:"20px",backgroundColor:i<n?"var(--color-action-primary)":"var(--color-border-default)"}}),jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center text-center w-32",children:[jsxRuntime.jsx("span",{className:tailwindMerge.twMerge("text-sm font-medium",s&&"text-text-default",c&&"text-text-primary",!s&&!c&&"text-text-secondary"),children:a.title}),a.description&&jsxRuntime.jsx("span",{className:"mt-1 text-xs text-text-secondary",children:a.description})]})]},a.id)})})})})}function FE({formId:e,show:t,isSubmitting:r,onCancel:o,primaryLabel:n="Save changes",secondaryLabel:a="Cancel",className:i}){return t?jsxRuntime.jsx("div",{className:tailwindMerge.twMerge("fixed inset-x-0 bottom-0 z-40 border-t border-border-muted bg-background-surface/95 backdrop-blur supports-[backdrop-filter]:bg-background-surface/70",i),children:jsxRuntime.jsxs("div",{className:"mx-auto flex max-w-screen-lg items-center justify-between gap-3 p-3",children:[jsxRuntime.jsx("div",{className:"text-sm text-text-secondary",children:"You have unsaved changes"}),jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx(Z,{variant:"secondary",onPress:o,children:a}),jsxRuntime.jsx(Z,{type:"submit",form:e,isDisabled:!!r,children:r?"Saving...":n})]})]})}):null}function BE({when:e,message:t="You have unsaved changes. Leave anyway?"}){return Oe__namespace.useEffect(()=>{if(!e)return;let r=o=>(o.preventDefault(),o.returnValue=t,t);return window.addEventListener("beforeunload",r),()=>window.removeEventListener("beforeunload",r)},[e,t]),null}function VE({steps:e,initialStepId:t,canNavigate:r}){if(e.length===0)throw new Error("useWizard: steps array cannot be empty");let[o,n]=Oe__namespace.useState(t||e[0].id),a=e.findIndex(d=>d.id===o),i=a>0,s=a<e.length-1,c=async d=>d===o?true:r&&!await r(o,d)?false:(n(d),true);return {steps:e,currentStepId:o,setCurrentStepId:c,next:async()=>!s||a===-1?false:c(e[a+1].id),prev:async()=>!i||a===-1?false:c(e[a-1].id),hasNext:s,hasPrev:i,stepIndex:a}}function $i(e,t){return t.split(".").reduce((r,o)=>r?.[o],e)}function OE(e,t){let r=$i(e,t.field),o=t.value;switch(t.operator){case "eq":return r===o;case "neq":return r!==o;case "in":return Array.isArray(o)?Array.isArray(r)?r.some(n=>o.includes(n)):o.includes(r):false;case "nin":return Array.isArray(o)?Array.isArray(r)?!r.some(n=>o.includes(n)):!o.includes(r):false;case "gt":return r instanceof Date&&typeof o=="string"?r>new Date(o):r>o;case "gte":return r instanceof Date&&typeof o=="string"?r>=new Date(o):r>=o;case "lt":return r instanceof Date&&typeof o=="string"?r<new Date(o):r<o;case "lte":return r instanceof Date&&typeof o=="string"?r<=new Date(o):r<=o;case "contains":return typeof r!="string"?false:r.toLowerCase().includes(String(o).toLowerCase());case "startsWith":return typeof r!="string"?false:r.toLowerCase().startsWith(String(o).toLowerCase());case "endsWith":return typeof r!="string"?false:r.toLowerCase().endsWith(String(o).toLowerCase());default:return false}}function ev(e,t){if(t.conditions.length===0)return true;let r=t.conditions.map(o=>"conditions"in o?ev(e,o):OE(e,o));return t.logic==="AND"?r.every(Boolean):r.some(Boolean)}function HE(e,t){return !t||t.conditions.length===0?e:e.filter(r=>ev(r,t))}function WE(e,t,r){if(e==null&&t==null)return 0;if(e==null)return r==="asc"?1:-1;if(t==null)return r==="asc"?-1:1;if(e instanceof Date&&t instanceof Date){let o=e.getTime()-t.getTime();return r==="asc"?o:-o}if(typeof e=="string"&&typeof t=="string"){let o=e.toLowerCase().localeCompare(t.toLowerCase());return r==="asc"?o:-o}return e<t?r==="asc"?-1:1:e>t?r==="asc"?1:-1:0}function GE(e,t){return t?[...e].sort((r,o)=>{let n=$i(r,t.field),a=$i(o,t.field);return WE(n,a,t.direction)}):e}function UE(e,t){if(!t||!t.query.trim())return e;let{query:r,fields:o,fuzzy:n=true,threshold:a=.3}=t;if(n)return new zE__default.default(e,{keys:o,threshold:a,ignoreLocation:true,includeScore:true}).search(r).map(l=>l.item);let i=r.toLowerCase();return e.filter(s=>o.some(c=>{let l=$i(s,c);return l==null?false:String(l).toLowerCase().includes(i)}))}function KE(e,t){let r={};for(let o of t){if(r[o.field]={},o.values)for(let n of o.values)r[o.field][String(n.value)]=0;for(let n of e){let a=$i(n,o.field);if(a!=null)if(Array.isArray(a))for(let i of a){let s=String(i);r[o.field][s]=(r[o.field][s]||0)+1;}else {let i=String(a);r[o.field][i]=(r[o.field][i]||0)+1;}}}return r}function Ep({data:e,filters:t,sort:r,search:o,facetConfigs:n=[]}){let a=UE(e,o||null);a=HE(a,t||null);let i=KE(a,n);return a=GE(a,r||null),{data:a,facetCounts:i,resultCount:a.length}}function xc({data:e,filters:t,sort:r,search:o,facetConfigs:n=[]}){return Oe.useMemo(()=>Ep({data:e,filters:t,sort:r,search:o,facetConfigs:n}),[e,t,r,o,n])}function hc({filters:e,sort:t,search:r,onStateChange:o,searchDebounce:n=300}){let a=Bo(r,n),i=Oe.useRef(true);Oe.useEffect(()=>{if(i.current){i.current=false;return}o({filters:e,sort:t,search:a});},[e,t,a,o]);}function tv(e){return e.mode==="client"?xc({data:e.data,filters:e.filters,sort:e.sort,search:e.search,facetConfigs:e.facetConfigs}):(hc({filters:e.filters,sort:e.sort,search:e.search,onStateChange:e.onStateChange,searchDebounce:e.searchDebounce}),{data:e.data,facetCounts:e.facetCounts||{},resultCount:e.resultCount??e.data.length})}var rv=Op(iu());function qE(e,t,r=true){let o=e;if(r){let n=new Date().toISOString().replace(/[:.]/g,"-").slice(0,-5);return `${o}-${n}.${t}`}return `${o}.${t}`}function QE(e,t){return t.accessor?typeof t.accessor=="function"?t.accessor(e):e[t.accessor]:null}function ov(e,t){let r=QE(t,e);return e.exportValue?e.exportValue(r,t)??"":r==null?"":r instanceof Date?r.toISOString():typeof r=="object"?JSON.stringify(r):r}function Lp(e){return e.filter(t=>t.exportable!==false)}function nv(e){let t=e.map(n=>n.exportLabel||n.label),r=new Set,o=[];for(let n of t)r.has(n)?o.includes(n)||o.push(n):r.add(n);if(o.length>0)throw new Error(`Duplicate export headers found: ${o.join(", ")}. Use exportLabel to provide unique headers.`)}async function Ap(e){let{columns:t,data:r,metadata:o={}}=e;try{let n=Lp(t);if(n.length===0)throw new Error("No exportable columns found");nv(n);let a=r.map(l=>{let u={};for(let d of n){let m=d.exportLabel||d.label;u[m]=ov(d,l);}return u}),i=nk__default.default.unparse(a,{header:!0,skipEmptyLines:!0}),s=new Blob([i],{type:"text/csv;charset=utf-8;"}),c=qE(o.filename||"table-data","csv",o.timestamp!==!1);(0,rv.saveAs)(s,c);}catch(n){throw new Error(`CSV export failed: ${n instanceof Error?n.message:"Unknown error"}`)}}function ZE(e){let{columns:t,data:r}=e,o=Lp(t);return nv(o),r.map(n=>{let a={};for(let i of o){let s=i.exportLabel||i.label;a[s]=ov(i,n);}return a})}function _E(e){return Lp(e).map(t=>t.exportLabel||t.label)}function av({columns:e,data:t,metadata:r}){let n=e.filter(i=>i.exportable!==false).length>0&&t.length>0;return {exportCSV:Oe.useCallback(async()=>{try{await Ap({columns:e,data:t,metadata:r});}catch(i){throw console.error("Table export failed:",i),i}},[e,t,r]),canExport:n}}function doe(e){switch(e){case "charging":case "on":return "success";case "discharging":return "warning";case "heat":case "cool":return "info";case "off":case "idle":case "eco":case "auto":return "neutral";default:return "neutral"}}Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return reactAriaComponents.DialogTrigger}});exports.ABSENT_GRID_FIELDS=dE;exports.ActionCell=Ub;exports.ActionMenu=fa;exports.ActivityFeed=vd;exports.ActivityFeedGroup=hs;exports.ActivityItem=ys;exports.Alert=cf;exports.AppShell=bf;exports.AreaSeries=Yo;exports.AutoMobileRenderer=wl;exports.Autocomplete=Rs;exports.Avatar=bo;exports.BREAKPOINTS=sn;exports.Badge=nt;exports.BadgeCell=Yb;exports.Banner=Ds;exports.BarSeries=Ws;exports.BooleanCell=Jb;exports.BrandProvider=Qp;exports.BreadcrumbItem=Ls;exports.Breadcrumbs=Es;exports.Button=Z;exports.CUSTOM_ICON_REGISTRY=ia;exports.Calendar=ha;exports.Card=Ue;exports.CardContent=pd;exports.CardFooter=md;exports.CardHeader=dd;exports.CardMedia=ud;exports.CardMobileRenderer=Nl;exports.CarouselAutoplayTrigger=Yf;exports.CarouselControl=Wf;exports.CarouselIndicator=Gd;exports.CarouselIndicatorGroup=Kf;exports.CarouselItem=Hf;exports.CarouselItemGroup=Of;exports.CarouselNextTrigger=Uf;exports.CarouselPrevTrigger=Gf;exports.CarouselProgressText=Jf;exports.CarouselRoot=zf;exports.CategoryBarChart=wg;exports.ChartAxis=Rr;exports.ChartBottomBar=Ta;exports.ChartContainer=Gg;exports.ChartContext=Pr;exports.ChartEventMarkers=Xs;exports.ChartEventSpans=js;exports.ChartTooltip=Jo;exports.Checkbox=Cn;exports.CheckboxGroup=Ud;exports.Chip=eo;exports.ChipInputField=$f;exports.ClearButton=ai;exports.CodeEditor=rg;exports.Collapse=ya;exports.CollapseContent=Uo;exports.CollapseHeader=Go;exports.CollapseItem=Wo;exports.ColorField=lN;exports.ColorModeProvider=sm;exports.CommandPalette=Fx;exports.Confirm=lg;exports.ConnectionStatusBadge=cg;exports.ContactCard=dg;exports.ContactMetaCell=jb;exports.ContactMetaDisplay=Vs;exports.ContainerQueryProvider=mg;exports.CopyToClipboard=zo;exports.CustomCell=qb;exports.DEFAULT_MAP_TYPE=_l;exports.DataControls=Ab;exports.DataTable=wx;exports.DateCell=Qb;exports.DateField=Bb;exports.DateRangePicker=sl;exports.Description=Te;exports.DeviceHealthBadge=kx;exports.DeviceMetaCell=_b;exports.DeviceMetaDisplay=ml;exports.DeviceStateBadge=zn;exports.DeviceStateCell=tx;exports.DeviceStateWithMetric=bl;exports.DeviceTypeIcon=Px;exports.Dialog=Nr;exports.DialogForm=vE;exports.DialogHeader=Ht;exports.Drawer=Ei;exports.DrawerForm=CE;exports.ENTITY_CATEGORY_CONFIG=cE;exports.ENTITY_CONFIG=oa;exports.EmptyState=$s;exports.EnrollmentStatusBadge=Mx;exports.ErrorBoundary=Vr;exports.FieldError=be;exports.FieldGroup=yf;exports.FileUpload=Ex;exports.FilterChips=Ib;exports.FilterDialog=Hb;exports.FirmwareVersionBadge=Ax;exports.Form=Fa;exports.FormActions=wE;exports.FormDivider=LE;exports.FormGrid=RE;exports.FormSection=EE;exports.FormStepper=AE;exports.FormatRegistry=oe;exports.FormattedCell=ox;exports.FunnelSeries=Jg;exports.GRID_ELEMENT_TYPE_BY_ENTITY=uE;exports.GRID_STATE_COLORS=lE;exports.GRID_STAT_LIST=it;exports.GlobalSearch=zx;exports.Grid=ju;exports.GridStateBadge=gl;exports.HEADLINE_METRIC_BOUNDS=gE;exports.Heading=Qt;exports.HierarchyExplorer=ph;exports.HorizontalBarCell=Bu;exports.HoverCard=pR;exports.Icon=B;exports.InfiniteScrollIndicator=wr;exports.Input=ks;exports.InputWrapper=ht;exports.InteractiveMap=Ui;exports.Kpi=gh;exports.KpiGroup=op;exports.Label=ze;exports.LineSeries=Tn;exports.List=Ch;exports.ListBox=wR;exports.ListBoxItem=_t;exports.ListItem=wh;exports.ListPane=Nh;exports.Loader=fo;exports.Logo=ba;exports.MAP_TYPES=_h;exports.Meter=oy;exports.MiniBarCell=Vu;exports.ModalBackdrop=cr;exports.Notice=oc;exports.NoticeContainer=nc;exports.NoticeProvider=ay;exports.NumberCell=lx;exports.NumberField=Ti;exports.PageBanner=Df;exports.PageLayout=Qn;exports.PercentBarCell=zu;exports.PlaceSearch=my;exports.Popover=st;exports.ProgressBar=gy;exports.Prose=by;exports.Radio=Cy;exports.RadioCard=xy;exports.RadioCardGroup=hy;exports.RadioGroup=vy;exports.RangeCalendar=Ma;exports.ResultsCount=Si;exports.RichTextEditor=Ny;exports.SKELETON_SIZES=Zo;exports.SOURCE_UNIT_TO_WH=Jc;exports.SaveBar=FE;exports.SearchControl=In;exports.SearchEmptyState=Ox;exports.SearchLoadingState=Wx;exports.SearchResultGroup=Ux;exports.SearchResultItem=Kx;exports.SearchResultsList=Yx;exports.SearchTrigger=Xx;exports.Section=Ka;exports.SectionNav=sc;exports.SegmentedControl=tl;exports.Select=go;exports.SelectCell=dx;exports.SideNav=Cs;exports.SiteCard=ky;exports.SiteContactCard=Py;exports.SiteMetaCell=px;exports.SiteMetaDisplay=yl;exports.Skeleton=J;exports.Slider=Ry;exports.SortControl=wi;exports.SparklineCell=Ou;exports.SplitPane=fc;exports.StackNav=Ss;exports.StatList=Ll;exports.StaticMap=Ua;exports.Switch=ll;exports.Tab=pc;exports.TabList=uc;exports.TabPanel=dy;exports.Tabs=dc;exports.TextArea=Iy;exports.TextAreaWithChips=zy;exports.TextCell=bx;exports.TextField=Er;exports.TextLink=Ze;exports.TiledTimeSeriesChart=Zs;exports.TiledTimeSeriesExplorer=Rb;exports.TimeControls=rl;exports.TimeField=Hy;exports.Timeline=Wy;exports.TimelineItem=Gy;exports.ToggleButton=Yy;exports.Tooltip=Zt;exports.TopNav=ni;exports.Tray=lt;exports.UnsavedChangesPrompt=BE;exports.activeDeviceStates=K1;exports.addFilterCondition=Qo;exports.applyDataOperations=Ep;exports.archetypeFor=bE;exports.assembleSeries=db;exports.autoScaleCurrent=RC;exports.autoScaleDistance=bm;exports.autoScaleEnergy=vm;exports.autoScalePower=BC;exports.autoScaleResistance=VC;exports.autoScaleVoltage=KC;exports.baselineFromPoint=zN;exports.camelCaseToWords=Bm;exports.capitalize=Im;exports.celsiusToFahrenheit=zC;exports.celsiusToKelvin=jA;exports.centimetersToInches=MA;exports.clearColorCache=os;exports.createCategoryColorMap=dC;exports.createEmptyFilter=Ni;exports.createFilter=s1;exports.createFilters=l1;exports.createFormat=C5;exports.createTextureIcon=rt;exports.createTiledCameraSyncGroup=Xg;exports.createXScale=tu;exports.createYScale=ui;exports.csvUnitFor=nd;exports.csvValueFor=Om;exports.defaultMargin=Ie;exports.deviceStateLabels=Y1;exports.deviceStateMetricFormats=_G;exports.emptyStore=ub;exports.entityHasDetailPage=xE;exports.entityHasStatList=yE;exports.entityShowsNow=hE;exports.enumToSentenceCase=GC;exports.exportChart=lu;exports.exportTableAsCSV=Ap;exports.fahrenheitToCelsius=OC;exports.fahrenheitToKelvin=qA;exports.feetToMeters=vA;exports.feetToMiles=wA;exports.filterToChips=c1;exports.formatBoolean=lm;exports.formatCapacity=_L;exports.formatComponentValue=jr;exports.formatCurrency=mm;exports.formatCurrent=Vc;exports.formatDate=fm;exports.formatDistance=xm;exports.formatEmptyValue=ul;exports.formatEnergy=Xc;exports.formatFieldValue=Br;exports.formatInternationalPhone=jc;exports.formatNumber=pm;exports.formatPercent=dm;exports.formatPhone=Cm;exports.formatPhoneNumber=ca;exports.formatPower=_c;exports.formatPowerRating=$L;exports.formatResistance=ed;exports.formatTemperature=Mm;exports.formatText=zm;exports.formatUSPhone=ss;exports.formatVoltage=od;exports.getBadgeClasses=Wb;exports.getBooleanBadgeVariant=Gb;exports.getCellAlignmentClasses=Eu;exports.getCellContainerClasses=Me;exports.getCellTextClasses=Lr;exports.getContrastingTextColor=uC;exports.getDateParts=fA;exports.getDefaultChartColor=Qa;exports.getDefaultColors=_p;exports.getDeviceStateDisplayLabel=Iu;exports.getDeviceStateLabel=Iu;exports.getEntityCategory=fE;exports.getEntityConfig=gc;exports.getEntityIcon=pE;exports.getEntityLabel=mE;exports.getEntityStatList=Jy;exports.getEventColor=ho;exports.getExportFormatName=ck;exports.getExportHeaders=_E;exports.getFieldGroupStyles=dS;exports.getFilterFields=Bn;exports.getGridStateLabel=ex;exports.getInputBackgroundStyles=hf;exports.getInputBaseStyles=Vt;exports.getInputStateStyles=Vo;exports.getLinkClasses=Lu;exports.getNumericColorClasses=pl;exports.getResolvedColor=Tt;exports.getSkeletonSize=nr;exports.getStateTone=doe;exports.getThemeCategoricalColors=ln;exports.getYFormatSettings=Or;exports.gridStateLabels=X1;exports.inchesToCentimeters=RA;exports.isActiveDeviceState=Au;exports.isActiveState=Au;exports.isCustomPinsLayer=pp;exports.isExportSupported=lk;exports.isFilterEmpty=il;exports.isGeoJsonLayer=up;exports.isLightColor=$p;exports.isNil=me;exports.isRasterLayer=mp;exports.isVectorLayer=dp;exports.kelvinToCelsius=HC;exports.kelvinToFahrenheit=QA;exports.kilometersToMiles=SA;exports.layer=cp;exports.mapValuesToCategoricalColors=Rc;exports.metersToFeet=yA;exports.metersToMiles=NA;exports.metersToYards=PA;exports.milesToFeet=gm;exports.milesToKilometers=CA;exports.milesToMeters=kA;exports.parseBoolean=Eo;exports.pickEnergyUnit=Yc;exports.prepareTableDataForExport=ZE;exports.registerPhosphorIcon=ty;exports.removeFilterCondition=Fn;exports.resolveValue=Se;exports.snakeCaseToWords=Vm;exports.temperatureStringToSymbol=Nm;exports.tierForViewport=_s;exports.tileIndexAt=pT;exports.tileKey=rr;exports.tileReducer=pb;exports.tilesForViewport=Xo;exports.toA=cA;exports.toActiveInactive=yC;exports.toAmps=as;exports.toBoolean=Do;exports.toCelsius=Tm;exports.toCentimeters=AC;exports.toCheckmark=CC;exports.toCompactNumber=kC;exports.toCurrency=um;exports.toCustomDateFormat=LC;exports.toDateString=MC;exports.toEnabledDisabled=xC;exports.toFahrenheit=km;exports.toFeet=Hc;exports.toFloat=wC;exports.toFormattedNumber=NC;exports.toFullDateTime=DC;exports.toGW=WA;exports.toGWh=ym;exports.toGigawatts=Zc;exports.toISOString=EC;exports.toInches=FC;exports.toInteger=SC;exports.toKA=dA;exports.toKV=n5;exports.toKW=OA;exports.toKelvin=Pm;exports.toKiloamps=Bc;exports.toKilohms=Sm;exports.toKilometers=Oc;exports.toKilovolts=rd;exports.toKilowatts=qc;exports.toLowerCase=Em;exports.toMA=lA;exports.toMV=r5;exports.toMW=HA;exports.toMWh=hm;exports.toMegawatts=Qc;exports.toMegohms=wm;exports.toMeters=zc;exports.toMiles=Wc;exports.toMilliamps=Fc;exports.toMillimeters=IC;exports.toMilliohms=$c;exports.toMillivolts=td;exports.toNauticalMiles=hA;exports.toOhms=cs;exports.toOnOff=hC;exports.toPercentage=cm;exports.toRelativeTime=is;exports.toScientificNotation=TC;exports.toSecret=UC;exports.toSentenceCase=Lm;exports.toTemperature=Rm;exports.toTitleCase=Am;exports.toTrueFalse=vC;exports.toUpperCase=Dm;exports.toV=o5;exports.toVolts=ps;exports.toW=zA;exports.toWatts=ls;exports.toWh=Uc;exports.toYards=Gc;exports.tokWh=Kc;exports.truncateEnd=us;exports.truncateMiddle=da;exports.truncateStart=ds;exports.typeRole=ft;exports.typographyRole=qr;exports.ucFirst=Fm;exports.useBreakpoint=Xt;exports.useChartContext=kn;exports.useClientDataControls=xc;exports.useColorMode=Bt;exports.useComponentFormatter=oA;exports.useContainerBreakpoint=ug;exports.useDataControls=tv;exports.useDebounce=Bo;exports.useElementSize=xa;exports.useInfiniteScroll=Io;exports.useInputFocus=Tr;exports.useLocalStorage=Gl;exports.useMediaQuery=Jt;exports.useNotice=sy;exports.useServerDataControls=hc;exports.useTableExport=av;exports.useTileWindow=yb;exports.useTiledTimeSeries=yu;exports.useWizard=VE;exports.wrapWithLink=ao;exports.yardsToMeters=TA;//# sourceMappingURL=index.cjs.map
48
48
  //# sourceMappingURL=index.cjs.map