@riddix/hamh 2.1.0-alpha.845 → 2.1.0-alpha.847

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.
@@ -159489,6 +159489,9 @@ init_nodejs();
159489
159489
  init_home_assistant_entity_behavior();
159490
159490
  var lastTurnOnTimestamps = /* @__PURE__ */ new Map();
159491
159491
  var LAST_TURN_ON_TTL_MS = 6e4;
159492
+ var lastTurnOffTimestamps = /* @__PURE__ */ new Map();
159493
+ var DEFAULT_OFF_SUPPRESSION_WINDOW_MS = 1e3;
159494
+ var offSuppressionWindowMs = DEFAULT_OFF_SUPPRESSION_WINDOW_MS;
159492
159495
  var optimisticLevelState = /* @__PURE__ */ new Map();
159493
159496
  var OPTIMISTIC_TIMEOUT_MS = 3e3;
159494
159497
  var OPTIMISTIC_TOLERANCE = 5;
@@ -159506,11 +159509,23 @@ function sweepLastTurnOn(now) {
159506
159509
  }
159507
159510
  }
159508
159511
  }
159512
+ function sweepLastTurnOff(now) {
159513
+ for (const [key, entry] of lastTurnOffTimestamps) {
159514
+ if (now - entry.ts > LAST_TURN_ON_TTL_MS) {
159515
+ lastTurnOffTimestamps.delete(key);
159516
+ }
159517
+ }
159518
+ }
159509
159519
  function notifyLightTurnedOn(entityId) {
159510
159520
  const now = Date.now();
159511
159521
  sweepLastTurnOn(now);
159512
159522
  lastTurnOnTimestamps.set(entityId, now);
159513
159523
  }
159524
+ function notifyLightTurnedOff(entityId, haLastChanged) {
159525
+ const now = Date.now();
159526
+ sweepLastTurnOff(now);
159527
+ lastTurnOffTimestamps.set(entityId, { ts: now, haLastChanged });
159528
+ }
159514
159529
  var logger208 = Logger.get("LevelControlServer");
159515
159530
  var FeaturedBase5 = LevelControlServer.with("OnOff", "Lighting");
159516
159531
  var LevelControlServerBase = class extends FeaturedBase5 {
@@ -159631,6 +159646,27 @@ var LevelControlServerBase = class extends FeaturedBase5 {
159631
159646
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
159632
159647
  const config11 = this.state.config;
159633
159648
  const entityId = homeAssistant.entity.entity_id;
159649
+ const lastTurnOff = lastTurnOffTimestamps.get(entityId);
159650
+ const sinceTurnOff = lastTurnOff != null ? Date.now() - lastTurnOff.ts : null;
159651
+ const haState = homeAssistant.entity.state;
159652
+ const freshHaOn = haState?.state === "on" && lastTurnOff != null && haState.last_changed !== lastTurnOff.haLastChanged;
159653
+ if (sinceTurnOff != null && sinceTurnOff < offSuppressionWindowMs && !freshHaOn && this.agent.has(OnOffServer) && this.agent.get(OnOffServer).state.onOff === false) {
159654
+ const remembered = Math.min(
159655
+ Math.max(this.minLevel, level),
159656
+ this.maxLevel
159657
+ );
159658
+ this.state.currentLevel = remembered;
159659
+ const now2 = Date.now();
159660
+ sweepOptimisticLevel(now2);
159661
+ optimisticLevelState.set(entityId, {
159662
+ expectedLevel: remembered,
159663
+ timestamp: now2
159664
+ });
159665
+ logger208.debug(
159666
+ `[${entityId}] Storing level ${level} without calling HA - moveToLevel arrived ${sinceTurnOff}ms after a Matter off while still off (#434)`
159667
+ );
159668
+ return;
159669
+ }
159634
159670
  const levelPercent = level / this.maxLevel;
159635
159671
  const { featureFlags } = this.env.get(BridgeDataProvider);
159636
159672
  if (featureFlags?.alexaPreserveBrightnessOnTurnOn === true) {
@@ -159771,6 +159807,10 @@ var OnOffServerBase = class extends OnOffServer {
159771
159807
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
159772
159808
  const action = turnOff ? turnOff(void 0, this.agent) : defaultOnOffAction(homeAssistant.entityId, false);
159773
159809
  applyPatchState(this.state, { onOff: false });
159810
+ notifyLightTurnedOff(
159811
+ homeAssistant.entityId,
159812
+ homeAssistant.entity.state?.last_changed
159813
+ );
159774
159814
  if (!action) {
159775
159815
  return;
159776
159816
  }
@@ -163325,6 +163365,13 @@ function haRestEnd(action) {
163325
163365
  }
163326
163366
  return null;
163327
163367
  }
163368
+ var POSITION_TOLERANCE_100THS = 100;
163369
+ function isExactPosition(a, b) {
163370
+ return Math.abs(a - b) < POSITION_TOLERANCE_100THS;
163371
+ }
163372
+ function withinRestTolerance(a, b) {
163373
+ return Math.abs(a - b) <= POSITION_TOLERANCE_100THS;
163374
+ }
163328
163375
  function getCoverOptimistic(endpoint) {
163329
163376
  let st = coverOptimistic.get(endpoint);
163330
163377
  if (!st) {
@@ -163442,7 +163489,7 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163442
163489
  const getExpected = config11.getExpectedRestPosition;
163443
163490
  const expectedPercent = entry.expectedRestEnd != null && getExpected != null ? getExpected(entry.expectedRestEnd, this.agent) : null;
163444
163491
  const goal = expectedPercent != null ? expectedPercent * 100 : existingTarget;
163445
- const reachedTarget = positionAware && current100ths != null && goal != null && Math.abs(current100ths - goal) < 100;
163492
+ const reachedTarget = positionAware && current100ths != null && goal != null && withinRestTolerance(current100ths, goal);
163446
163493
  const expired = Date.now() - entry.startedAt >= optimisticMovementTimeoutMs;
163447
163494
  if (reachedTarget || expired) {
163448
163495
  clearOptimisticAxis(optimistic, axis);
@@ -163545,6 +163592,56 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163545
163592
  ...this.features.tilt ? { tilt } : {}
163546
163593
  };
163547
163594
  }
163595
+ // At rest target MUST equal current. matter.js pre-writes target 0/10000 for
163596
+ // the command it is about to run and its own snap is skipped while operational
163597
+ // mode handling is disabled (WindowCoveringServer.js:322-335, #328), so any
163598
+ // path that ends a move without an HA tick has to do it here.
163599
+ snapTargetToCurrent(axis) {
163600
+ if (axis === "lift") {
163601
+ if (!this.features.positionAwareLift) return;
163602
+ const current2 = this.state.currentPositionLiftPercent100ths;
163603
+ if (current2 != null) {
163604
+ this.state.targetPositionLiftPercent100ths = current2;
163605
+ }
163606
+ return;
163607
+ }
163608
+ if (!this.features.positionAwareTilt) return;
163609
+ const current = this.state.currentPositionTiltPercent100ths;
163610
+ if (current != null) {
163611
+ this.state.targetPositionTiltPercent100ths = current;
163612
+ }
163613
+ }
163614
+ // Is the axis already parked where the dispatched action would drive it? Uses
163615
+ // the live rest-position hook so the answer is resolved in the stored space,
163616
+ // flags and swap included, instead of re-deriving them here (#429). Strict:
163617
+ // a cover one percent off the end really does move, so it must report the
163618
+ // move; the inclusive completion check clears it again on landing.
163619
+ isAtExpectedRest(axis, end) {
163620
+ const positionAware = axis === "lift" ? this.features.positionAwareLift : this.features.positionAwareTilt;
163621
+ if (!positionAware || end == null) {
163622
+ return false;
163623
+ }
163624
+ const expected = this.state.config.getExpectedRestPosition?.(
163625
+ end,
163626
+ this.agent
163627
+ );
163628
+ const current = axis === "lift" ? this.state.currentPositionLiftPercent100ths : this.state.currentPositionTiltPercent100ths;
163629
+ if (expected == null || current == null) {
163630
+ return false;
163631
+ }
163632
+ return isExactPosition(current, expected * 100);
163633
+ }
163634
+ // The action moves nothing, so HA reports no state change and an optimistic
163635
+ // Opening/Closing would sit there until the safety timeout. Just line the
163636
+ // attributes up with the rest the axis is provably already at.
163637
+ settleAtRest(axis) {
163638
+ this.snapTargetToCurrent(axis);
163639
+ const optimistic = getCoverOptimistic(this.endpoint);
163640
+ if (optimistic[axis]) {
163641
+ clearOptimisticAxis(optimistic, axis);
163642
+ this.writeOperationalStatus({ [axis]: MovementStatus.Stopped });
163643
+ }
163644
+ }
163548
163645
  // Record the optimistic direction and emit it now so a controller gets the
163549
163646
  // moving->stopped edge even when HA never reports a transitional state (#429).
163550
163647
  startOptimisticMovement(axis, status3, expectedRestEnd) {
@@ -163598,8 +163695,10 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163598
163695
  async handleMovement(type, _, direction, targetPercent100ths) {
163599
163696
  const currentLift = this.state.currentPositionLiftPercent100ths ?? 0;
163600
163697
  const currentTilt = this.state.currentPositionTiltPercent100ths ?? 0;
163698
+ const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
163699
+ const flags2 = this.state.config.getDiagnosticFlags?.(this.agent);
163601
163700
  logger218.info(
163602
- `handleMovement: type=${MovementType[type]}, direction=${MovementDirection[direction]}, target=${targetPercent100ths}, currentLift=${currentLift}, currentTilt=${currentTilt}`
163701
+ `handleMovement ${homeAssistant.entityId}: type=${MovementType[type]}, direction=${MovementDirection[direction]}, target=${targetPercent100ths}, currentLift=${currentLift}, currentTilt=${currentTilt}${flags2 ? `, ${flags2}` : ""}`
163603
163702
  );
163604
163703
  if (type === MovementType.Lift) {
163605
163704
  this.lastLiftMovementMs = Date.now();
@@ -163642,6 +163741,8 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163642
163741
  const optimistic = getCoverOptimistic(this.endpoint);
163643
163742
  clearOptimisticAxis(optimistic, "lift");
163644
163743
  clearOptimisticAxis(optimistic, "tilt");
163744
+ this.snapTargetToCurrent("lift");
163745
+ this.snapTargetToCurrent("tilt");
163645
163746
  this.writeOperationalStatus({
163646
163747
  ...this.features.lift ? { lift: MovementStatus.Stopped } : {},
163647
163748
  ...this.features.tilt ? { tilt: MovementStatus.Stopped } : {}
@@ -163653,30 +163754,38 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163653
163754
  clearPendingLift(getCoverDebounce(this.endpoint));
163654
163755
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
163655
163756
  const action = this.state.config.openCoverLift(void 0, this.agent);
163656
- this.startOptimisticMovement(
163657
- "lift",
163658
- MovementStatus.Opening,
163659
- haRestEnd(action)
163757
+ const end = haRestEnd(action);
163758
+ const atRest = this.isAtExpectedRest("lift", end);
163759
+ if (atRest) {
163760
+ this.settleAtRest("lift");
163761
+ } else {
163762
+ this.startOptimisticMovement("lift", MovementStatus.Opening, end);
163763
+ }
163764
+ logger218.info(
163765
+ `handleLiftOpen ${homeAssistant.entityId}: calling action=${action.action}, atRest=${atRest}, ${this.state.config.getDiagnosticFlags?.(this.agent) ?? ""}`
163660
163766
  );
163661
- logger218.info(`handleLiftOpen: calling action=${action.action}`);
163662
163767
  homeAssistant.callAction(action);
163663
163768
  }
163664
163769
  handleLiftClose() {
163665
163770
  clearPendingLift(getCoverDebounce(this.endpoint));
163666
163771
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
163667
163772
  const action = this.state.config.closeCoverLift(void 0, this.agent);
163668
- this.startOptimisticMovement(
163669
- "lift",
163670
- MovementStatus.Closing,
163671
- haRestEnd(action)
163773
+ const end = haRestEnd(action);
163774
+ const atRest = this.isAtExpectedRest("lift", end);
163775
+ if (atRest) {
163776
+ this.settleAtRest("lift");
163777
+ } else {
163778
+ this.startOptimisticMovement("lift", MovementStatus.Closing, end);
163779
+ }
163780
+ logger218.info(
163781
+ `handleLiftClose ${homeAssistant.entityId}: calling action=${action.action}, atRest=${atRest}, ${this.state.config.getDiagnosticFlags?.(this.agent) ?? ""}`
163672
163782
  );
163673
- logger218.info(`handleLiftClose: calling action=${action.action}`);
163674
163783
  homeAssistant.callAction(action);
163675
163784
  }
163676
163785
  handleGoToLiftPosition(targetPercent100ths) {
163677
163786
  const config11 = this.state.config;
163678
163787
  const currentPositionMatter = this.state.currentPositionLiftPercent100ths;
163679
- if (currentPositionMatter != null && Math.abs(targetPercent100ths - currentPositionMatter) < 100) {
163788
+ if (currentPositionMatter != null && isExactPosition(targetPercent100ths, currentPositionMatter)) {
163680
163789
  return;
163681
163790
  }
163682
163791
  this.state.targetPositionLiftPercent100ths = targetPercent100ths;
@@ -163722,12 +163831,17 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163722
163831
  clearPendingTilt(st);
163723
163832
  if (st.pendingLift?.action.action.includes("tilt")) clearPendingLift(st);
163724
163833
  const action = this.state.config.openCoverTilt(void 0, this.agent);
163725
- this.startOptimisticMovement(
163726
- "tilt",
163727
- MovementStatus.Opening,
163728
- haRestEnd(action)
163729
- );
163834
+ const end = haRestEnd(action);
163835
+ const atRest = this.isAtExpectedRest("tilt", end);
163836
+ if (atRest) {
163837
+ this.settleAtRest("tilt");
163838
+ } else {
163839
+ this.startOptimisticMovement("tilt", MovementStatus.Opening, end);
163840
+ }
163730
163841
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
163842
+ logger218.info(
163843
+ `handleTiltOpen ${homeAssistant.entityId}: calling action=${action.action}, atRest=${atRest}, ${this.state.config.getDiagnosticFlags?.(this.agent) ?? ""}`
163844
+ );
163731
163845
  homeAssistant.callAction(action);
163732
163846
  }
163733
163847
  handleTiltClose() {
@@ -163735,18 +163849,23 @@ var WindowCoveringServerBase = class _WindowCoveringServerBase extends FeaturedB
163735
163849
  clearPendingTilt(st);
163736
163850
  if (st.pendingLift?.action.action.includes("tilt")) clearPendingLift(st);
163737
163851
  const action = this.state.config.closeCoverTilt(void 0, this.agent);
163738
- this.startOptimisticMovement(
163739
- "tilt",
163740
- MovementStatus.Closing,
163741
- haRestEnd(action)
163742
- );
163852
+ const end = haRestEnd(action);
163853
+ const atRest = this.isAtExpectedRest("tilt", end);
163854
+ if (atRest) {
163855
+ this.settleAtRest("tilt");
163856
+ } else {
163857
+ this.startOptimisticMovement("tilt", MovementStatus.Closing, end);
163858
+ }
163743
163859
  const homeAssistant = this.agent.get(HomeAssistantEntityBehavior);
163860
+ logger218.info(
163861
+ `handleTiltClose ${homeAssistant.entityId}: calling action=${action.action}, atRest=${atRest}, ${this.state.config.getDiagnosticFlags?.(this.agent) ?? ""}`
163862
+ );
163744
163863
  homeAssistant.callAction(action);
163745
163864
  }
163746
163865
  handleGoToTiltPosition(targetPercent100ths) {
163747
163866
  const config11 = this.state.config;
163748
163867
  const currentPositionMatter = this.state.currentPositionTiltPercent100ths;
163749
- if (currentPositionMatter != null && Math.abs(targetPercent100ths - currentPositionMatter) < 100) {
163868
+ if (currentPositionMatter != null && isExactPosition(targetPercent100ths, currentPositionMatter)) {
163750
163869
  return;
163751
163870
  }
163752
163871
  this.state.targetPositionTiltPercent100ths = targetPercent100ths;
@@ -163908,6 +164027,14 @@ var shouldSwapOpenClose = (agent) => {
163908
164027
  const { featureFlags } = agent.env.get(BridgeDataProvider);
163909
164028
  return featureFlags?.coverSwapOpenClose === true;
163910
164029
  };
164030
+ var diagnosticFlags = (agent) => {
164031
+ const { featureFlags } = agent.env.get(BridgeDataProvider);
164032
+ const useHaPercentage = featureFlags?.coverUseHomeAssistantPercentage === true;
164033
+ const doNotInvert = featureFlags?.coverDoNotInvertPercentage === true;
164034
+ const skipInversion = useHaPercentage || doNotInvert || usesMatterSemantics(agent);
164035
+ const spaceInverted = !skipInversion && featureFlags?.coverSwapOpenClose !== true;
164036
+ return `useHaPercentage=${useHaPercentage} doNotInvert=${doNotInvert} swapDispatch=${shouldSwapOpenClose(agent)} spaceInverted=${spaceInverted}`;
164037
+ };
163911
164038
  var supportsPositionControl = (agent) => {
163912
164039
  const homeAssistant = agent.get(HomeAssistantEntityBehavior);
163913
164040
  const supportedFeatures = attributes6(homeAssistant.entity.state).supported_features ?? 0;
@@ -163989,6 +164116,7 @@ var config6 = {
163989
164116
  return position == null ? null : adjustPositionForReading2(position, agent);
163990
164117
  },
163991
164118
  getExpectedRestPosition: expectedRestPosition,
164119
+ getDiagnosticFlags: diagnosticFlags,
163992
164120
  getCoverType: (entity) => deviceClassMapping(entity)?.type,
163993
164121
  getEndProductType: (entity) => deviceClassMapping(entity)?.endProductType,
163994
164122
  getMovementStatus: (entity, agent) => {
@@ -459,8 +459,8 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
459
459
  `,`
460
460
  +`).split(`
461
461
  `));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,C.useEffect)(()=>{let n=t?.target??O5,c=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!c)&&h8(e))return!1;let n=j5(e.code,s);if(a.current.add(e[n]),A5(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=j5(e.code,s);A5(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener(`keydown`,e),n?.addEventListener(`keyup`,l),window.addEventListener(`blur`,u),window.addEventListener(`contextmenu`,u),()=>{n?.removeEventListener(`keydown`,e),n?.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,u),window.removeEventListener(`contextmenu`,u)}}},[e,r]),n}function A5(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function j5(e,t){return t.includes(e)?`code`:`key`}var s1e=()=>{let e=_5();return(0,C.useMemo)(()=>({zoomIn:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):Promise.resolve(!1)},zoomOut:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):Promise.resolve(!1)},zoomTo:(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=a8(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return n8(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=r8(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function M5(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)c1e(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function c1e(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing);break}}function N5(e,t){return M5(e,t)}function P5(e,t){return M5(e,t)}function F5(e,t){return{id:e,type:`select`,selected:t}}function I5(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(F5(a.id,e)))}return r}function L5({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function R5(e){return{id:e.id,type:`remove`}}var z5=e=>BQe(e),l1e=e=>F6(e);function B5(e){return(0,C.forwardRef)(e)}function V5(e){let[t,n]=(0,C.useState)(BigInt(0)),[r]=(0,C.useState)(()=>u1e(()=>n(e=>e+BigInt(1))));return C5(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function u1e(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var H5=(0,C.createContext)(null);function d1e({children:e}){let t=_5(),n=V5((0,C.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=L5({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=V5((0,C.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(L5({items:s,lookup:o}))},[])),i=(0,C.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,W.jsx)(H5.Provider,{value:i,children:e})}function f1e(){let e=(0,C.useContext)(H5);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var p1e=e=>!!e.panZoom;function U5(){let e=s1e(),t=_5(),n=f1e(),r=g5(p1e),i=(0,C.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=z5(e)?e:n.get(e.id),a=i.parentId?u8(i.position,i.measured,i.parentId,n,r):i.position;return Y6({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&z5(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&l1e(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await GQe({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(R5);o?.(f),c(e)}if(m){let e=d.map(R5);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=$6(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=Y6(s?r:a),l=Q6(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=$6(e)?e:a(e);if(!r)return!1;let i=Q6(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return VQe(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??YQe();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,C.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var W5=e=>e.selected,m1e=typeof window<`u`?window:void 0;function h1e({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=_5(),{deleteElements:r}=U5(),i=k5(e,{actInsideInputWithModifier:!1}),a=k5(t,{target:m1e});(0,C.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(W5),edges:e.filter(W5)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,C.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function g1e(e){let t=_5();(0,C.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=p8(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,S6.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var G5={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},_1e=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function v1e({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=D6.Free,zoomOnDoubleClick:o=!0,panOnDrag:s=!0,defaultViewport:c,translateExtent:l,minZoom:u,maxZoom:d,zoomActivationKeyCode:f,preventScrolling:p=!0,children:m,noWheelClassName:h,noPanClassName:g,onViewportChange:_,isControlledViewport:v,paneClickDistance:y,selectionOnDrag:b}){let x=_5(),S=(0,C.useRef)(null),{userSelectionActive:w,lib:T,connectionInProgress:E}=g5(_1e,p5),D=k5(f),O=(0,C.useRef)();g1e(S);let k=(0,C.useCallback)(e=>{_?.({x:e[0],y:e[1],zoom:e[2]}),v||x.setState({transform:e})},[_,v]);return(0,C.useEffect)(()=>{if(S.current){O.current=M$e({domNode:S.current,minZoom:u,maxZoom:d,translateExtent:l,viewport:c,onDraggingChange:e=>x.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=x.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=x.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=x.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=O.current.getViewport();return x.setState({panZoom:O.current,transform:[e,t,n],domNode:S.current.closest(`.react-flow`)}),()=>{O.current?.destroy()}}},[]),(0,C.useEffect)(()=>{O.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:s,zoomActivationKeyPressed:D,preventScrolling:p,noPanClassName:g,userSelectionActive:w,noWheelClassName:h,lib:T,onTransformChange:k,connectionInProgress:E,selectionOnDrag:b,paneClickDistance:y})},[e,t,n,r,i,a,o,s,D,p,g,w,h,T,k,E,b,y]),(0,W.jsx)(`div`,{className:`react-flow__renderer`,ref:S,style:G5,children:m})}var y1e=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function b1e(){let{userSelectionActive:e,userSelectionRect:t}=g5(y1e,p5);return e&&t?(0,W.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var K5=(e,t)=>n=>{n.target===t.current&&e?.(n)},x1e=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function S1e({isSelecting:e,selectionKeyPressed:t,selectionMode:n=O6.Full,panOnDrag:r,paneClickDistance:i,selectionOnDrag:a,onSelectionStart:o,onSelectionEnd:s,onPaneClick:c,onPaneContextMenu:l,onPaneScroll:u,onPaneMouseEnter:d,onPaneMouseMove:f,onPaneMouseLeave:p,children:m}){let h=_5(),{userSelectionActive:g,elementsSelectable:_,dragging:v,connectionInProgress:y}=g5(x1e,p5),b=_&&(e||g),x=(0,C.useRef)(null),S=(0,C.useRef)(),w=(0,C.useRef)(new Set),T=(0,C.useRef)(new Set),E=(0,C.useRef)(!1),D=e=>{if(E.current||y){E.current=!1;return}c?.(e),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},O=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}l?.(e)},k=u?e=>u(e):void 0;return(0,W.jsxs)(`div`,{className:v4([`react-flow__pane`,{draggable:r===!0||Array.isArray(r)&&r.includes(0),dragging:v,selection:e}]),onClick:b?void 0:K5(D,x),onContextMenu:K5(O,x),onWheel:K5(k,x),onPointerEnter:b?void 0:d,onPointerMove:b?e=>{let{userSelectionRect:r,transform:a,nodeLookup:s,edgeLookup:c,connectionLookup:l,triggerNodeChanges:u,triggerEdgeChanges:d,defaultEdgeOptions:f,resetSelectedElements:p}=h.getState();if(!S.current||!r)return;let{x:m,y:g}=_8(e.nativeEvent,S.current),{startX:_,startY:v}=r;if(!E.current){let n=t?0:i;if(Math.hypot(m-_,g-v)<=n)return;p(),o?.(e)}E.current=!0;let y={startX:_,startY:v,x:m<_?m:_,y:g<v?g:v,width:Math.abs(m-_),height:Math.abs(g-v)},b=w.current,x=T.current;w.current=new Set(z6(s,y,a,n===O6.Partial,!0).map(e=>e.id)),T.current=new Set;let C=f?.selectable??!0;for(let e of w.current){let t=l.get(e);if(t)for(let{edgeId:e}of t.values()){let t=c.get(e);t&&(t.selectable??C)&&T.current.add(e)}}d8(b,w.current)||u(I5(s,w.current,!0)),d8(x,T.current)||d(I5(c,T.current)),h.setState({userSelectionRect:y,userSelectionActive:!0,nodesSelectionActive:!1})}:f,onPointerUp:b?e=>{e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!g&&e.target===x.current&&h.getState().userSelectionRect&&D?.(e),h.setState({userSelectionActive:!1,userSelectionRect:null}),E.current&&(s?.(e),h.setState({nodesSelectionActive:w.current.size>0})))}:void 0,onPointerDownCapture:b?n=>{let{domNode:r}=h.getState();if(S.current=r?.getBoundingClientRect(),!S.current)return;let i=n.target===x.current;if(!i&&n.target.closest(`.nokey`)||!e||!(a&&i||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),E.current=!1;let{x:o,y:s}=_8(n.nativeEvent,S.current);h.setState({userSelectionRect:{width:0,height:0,startX:o,startY:s,x:o,y:s}}),i||(n.stopPropagation(),n.preventDefault())}:void 0,onClickCapture:b?e=>{E.current&&=(e.stopPropagation(),!1)}:void 0,onPointerLeave:p,ref:x,style:G5,children:[m,(0,W.jsx)(b1e,{})]})}function q5({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,S6.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function J5({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let s=_5(),[c,l]=(0,C.useState)(!1),u=(0,C.useRef)();return(0,C.useEffect)(()=>{u.current=v$e({getStoreItems:()=>s.getState(),onNodeMouseDown:t=>{q5({id:t,store:s,nodeRef:e})},onDragStart:()=>{l(!0)},onDragStop:()=>{l(!1)}})},[]),(0,C.useEffect)(()=>{if(!(t||!e.current||!u.current))return u.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o}),()=>{u.current?.destroy()}},[n,r,t,a,e,i,o]),c}var C1e=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function Y5(){let e=_5();return(0,C.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=C1e(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=t8(t,i));let{position:a,positionAbsolute:s}=B6({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var X5=(0,C.createContext)(null),w1e=X5.Provider;X5.Consumer;var Z5=()=>(0,C.useContext)(X5),T1e=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),E1e=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o,u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===E6.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function D1e({type:e=`source`,position:t=M6.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=_5(),_=Z5(),{connectOnClick:v,noPanClassName:y,rfId:b}=g5(T1e,p5),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=g5(E1e(_,m,e),p5);_||g.getState().onError?.(`010`,S6.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t}=g.getState();t(n$e(i,e))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=g8(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();X8.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,W.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:v4([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:C,connectingfrom:x,connectingto:S,valid:D,connectionindicator:r&&(!T||w)&&(T||E?a:i)}]),onMouseDown:k,onTouchStart:k,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=m8(t.target),h=n||c,{connection:v,isValid:y}=X8.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&O(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var Q5=(0,C.memo)(B5(D1e));function O1e({data:e,isConnectable:t,sourcePosition:n=M6.Bottom}){return(0,W.jsxs)(W.Fragment,{children:[e?.label,(0,W.jsx)(Q5,{type:`source`,position:n,isConnectable:t})]})}function k1e({data:e,isConnectable:t,targetPosition:n=M6.Top,sourcePosition:r=M6.Bottom}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q5,{type:`target`,position:n,isConnectable:t}),e?.label,(0,W.jsx)(Q5,{type:`source`,position:r,isConnectable:t})]})}function A1e(){return null}function j1e({data:e,isConnectable:t,targetPosition:n=M6.Top}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q5,{type:`target`,position:n,isConnectable:t}),e?.label]})}var $5={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},e7={input:O1e,default:k1e,output:j1e,group:A1e};function M1e(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}var N1e=e=>{let{width:t,height:n,x:r,y:i}=R6(e.nodeLookup,{filter:e=>!!e.selected});return{width:e8(t)?t:null,height:e8(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function P1e({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=_5(),{width:i,height:a,transformString:o,userSelectionActive:s}=g5(N1e,p5),c=Y5(),l=(0,C.useRef)(null);(0,C.useEffect)(()=>{n||l.current?.focus({preventScroll:!0})},[n]);let u=!s&&i!==null&&a!==null;if(J5({nodeRef:l,disabled:!u}),!u)return null;let d=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,W.jsx)(`div`,{className:v4([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,W.jsx)(`div`,{ref:l,className:`react-flow__nodesselection-rect`,onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call($5,e.key)&&(e.preventDefault(),c({direction:$5[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var t7=typeof window<`u`?window:void 0,F1e=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function n7({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:w,defaultViewport:T,translateExtent:E,minZoom:D,maxZoom:O,preventScrolling:k,onSelectionContextMenu:A,noWheelClassName:j,noPanClassName:M,disableKeyboardA11y:N,onViewportChange:P,isControlledViewport:F}){let{nodesSelectionActive:I,userSelectionActive:L}=g5(F1e,p5),R=k5(l,{target:t7}),ee=k5(h,{target:t7}),z=ee||w,te=ee||b,B=u&&z!==!0,V=R||L||B;return h1e({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,W.jsx)(v1e,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:te,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:!R&&z,defaultViewport:T,translateExtent:E,minZoom:D,maxZoom:O,zoomActivationKeyCode:g,preventScrolling:k,noWheelClassName:j,noPanClassName:M,onViewportChange:P,isControlledViewport:F,paneClickDistance:s,selectionOnDrag:B,children:(0,W.jsxs)(S1e,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:z,isSelecting:!!V,selectionMode:d,selectionKeyPressed:R,paneClickDistance:s,selectionOnDrag:B,children:[e,I&&(0,W.jsx)(P1e,{onSelectionContextMenu:A,noPanClassName:M,disableKeyboardA11y:N})]})})}n7.displayName=`FlowRenderer`;var I1e=(0,C.memo)(n7),L1e=e=>t=>e?z6(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function R1e(e){return g5((0,C.useCallback)(L1e(e),[e]),p5)}var z1e=e=>e.updateNodeInternals;function B1e(){let e=g5(z1e),[t]=(0,C.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,C.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function V1e({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=_5(),a=(0,C.useRef)(null),o=(0,C.useRef)(null),s=(0,C.useRef)(e.sourcePosition),c=(0,C.useRef)(e.targetPosition),l=(0,C.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,C.useEffect)(()=>{a.current&&!e.hidden&&(!u||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[u,e.hidden]),(0,C.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,C.useEffect)(()=>{if(a.current){let n=l.current!==t,r=s.current!==e.sourcePosition,o=c.current!==e.targetPosition;(n||r||o)&&(l.current=t,s.current=e.sourcePosition,c.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}function H1e({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:x}=g5(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},p5),S=y.type||`default`,C=g?.[S]||e7[S];C===void 0&&(v?.(`003`,S6.error003(S)),S=`default`,C=g?.default||e7.default);let w=!!(y.draggable||s&&y.draggable===void 0),T=!!(y.selectable||c&&y.selectable===void 0),E=!!(y.connectable||l&&y.connectable===void 0),D=!!(y.focusable||u&&y.focusable===void 0),O=_5(),k=l8(y),A=V1e({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=J5({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=Y5();if(y.hidden)return null;let N=c8(y),P=M1e(y),F=T||w||t||n||r||i,I=n?e=>n(e,{...b.userNode}):void 0,L=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,ee=a?e=>a(e,{...b.userNode}):void 0,z=o?e=>o(e,{...b.userNode}):void 0,te=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=O.getState();T&&(!r||!w||i>0)&&q5({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},B=t=>{if(!(h8(t.nativeEvent)||m)){if(w6.includes(t.key)&&T)q5({id:e,store:O,unselect:t.key===`Escape`,nodeRef:A});else if(w&&y.selected&&Object.prototype.hasOwnProperty.call($5,t.key)){t.preventDefault();let{ariaLabelConfig:e}=O.getState();O.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),M({direction:$5[t.key],factor:t.shiftKey?4:1})}}},V=()=>{if(m||!A.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=O.getState();i&&(z6(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+N.width/2,y.position.y+N.height/2,{zoom:t[2]}))};return(0,W.jsx)(`div`,{className:v4([`react-flow__node`,`react-flow__node-${S}`,{[p]:w},y.className,{selected:y.selected,selectable:T,parent:x,draggable:w,dragging:j}]),ref:A,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:F?`all`:`none`,visibility:k?`visible`:`hidden`,...y.style,...P},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:I,onMouseMove:L,onMouseLeave:R,onContextMenu:ee,onClick:te,onDoubleClick:z,onKeyDown:D?B:void 0,tabIndex:D?0:void 0,onFocus:D?V:void 0,role:y.ariaRole??(D?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${y5}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,W.jsx)(w1e,{value:e,children:(0,W.jsx)(C,{id:e,data:y.data,type:S,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:T,draggable:w,deletable:y.deletable??!0,isConnectable:E,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:j,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...N})})})}var U1e=(0,C.memo)(H1e),W1e=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function r7(e){let{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,onError:a}=g5(W1e,p5),o=R1e(e.onlyRenderVisibleElements),s=B1e();return(0,W.jsx)(`div`,{className:`react-flow__nodes`,style:G5,children:o.map(o=>(0,W.jsx)(U1e,{id:o,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:s,nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,nodeClickDistance:e.nodeClickDistance,onError:a},o))})}r7.displayName=`NodeRenderer`;var G1e=(0,C.memo)(r7);function K1e(e){return g5((0,C.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&$Qe({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),p5)}var q1e=({color:e=`none`,strokeWidth:t=1})=>(0,W.jsx)(`polyline`,{className:`arrow`,style:{strokeWidth:t,...e&&{stroke:e}},strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`}),J1e=({color:e=`none`,strokeWidth:t=1})=>(0,W.jsx)(`polyline`,{className:`arrowclosed`,style:{strokeWidth:t,...e&&{stroke:e,fill:e}},strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`}),i7={[j6.Arrow]:q1e,[j6.ArrowClosed]:J1e};function Y1e(e){let t=_5();return(0,C.useMemo)(()=>Object.prototype.hasOwnProperty.call(i7,e)?i7[e]:(t.getState().onError?.(`009`,S6.error009(e)),null),[e])}var X1e=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=Y1e(t);return c?(0,W.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,W.jsx)(c,{color:n,strokeWidth:o})}):null},a7=({defaultColor:e,rfId:t})=>{let n=g5(e=>e.edges),r=g5(e=>e.defaultEdgeOptions),i=(0,C.useMemo)(()=>s$e(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,W.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,W.jsx)(`defs`,{children:i.map(e=>(0,W.jsx)(X1e,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};a7.displayName=`MarkerDefinitions`;var Z1e=(0,C.memo)(a7);function o7({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:s=2,children:c,className:l,...u}){let[d,f]=(0,C.useState)({x:1,y:0,width:0,height:0}),p=v4([`react-flow__edge-textwrapper`,l]),m=(0,C.useRef)(null);return(0,C.useEffect)(()=>{if(m.current){let e=m.current.getBBox();f({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,W.jsxs)(`g`,{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:p,visibility:d.width?`visible`:`hidden`,...u,children:[i&&(0,W.jsx)(`rect`,{width:d.width+2*o[0],x:-o[0],y:-o[1],height:d.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:s,ry:s}),(0,W.jsx)(`text`,{className:`react-flow__edge-text`,y:d.height/2,dy:`0.3em`,ref:m,style:r,children:n}),c]}):null}o7.displayName=`EdgeText`;var Q1e=(0,C.memo)(o7);function s7({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`path`,{...u,d:e,fill:`none`,className:v4([`react-flow__edge-path`,u.className])}),l?(0,W.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&e8(t)&&e8(n)?(0,W.jsx)(Q1e,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function c7({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===M6.Left||e===M6.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function l7({sourceX:e,sourceY:t,sourcePosition:n=M6.Bottom,targetX:r,targetY:i,targetPosition:a=M6.Top}){let[o,s]=c7({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=c7({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=y8({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function u7(e){return(0,C.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=l7({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s});return(0,W.jsx)(s7,{id:e.isInternal?void 0:t,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var $1e=u7({isInternal:!1}),d7=u7({isInternal:!0});$1e.displayName=`SimpleBezierEdge`,d7.displayName=`SimpleBezierEdgeInternal`;function f7(e){return(0,C.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=M6.Bottom,targetPosition:m=M6.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=D8({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition});return(0,W.jsx)(s7,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:x,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var p7=f7({isInternal:!1}),m7=f7({isInternal:!0});p7.displayName=`SmoothStepEdge`,m7.displayName=`SmoothStepEdgeInternal`;function h7(e){return(0,C.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,W.jsx)(p7,{...n,id:r,pathOptions:(0,C.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var e0e=h7({isInternal:!1}),g7=h7({isInternal:!0});e0e.displayName=`StepEdge`,g7.displayName=`StepEdgeInternal`;function _7(e){return(0,C.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=w8({sourceX:n,sourceY:r,targetX:i,targetY:a});return(0,W.jsx)(s7,{id:e.isInternal?void 0:t,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var t0e=_7({isInternal:!1}),v7=_7({isInternal:!0});t0e.displayName=`StraightEdge`,v7.displayName=`StraightEdgeInternal`;function y7(e){return(0,C.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=M6.Bottom,targetPosition:s=M6.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=S8({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature});return(0,W.jsx)(s7,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:x,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var n0e=y7({isInternal:!1}),b7=y7({isInternal:!0});n0e.displayName=`BezierEdge`,b7.displayName=`BezierEdgeInternal`;var x7={default:b7,straight:v7,step:g7,smoothstep:m7,simplebezier:d7},S7={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},r0e=(e,t,n)=>n===M6.Left?e-t:n===M6.Right?e+t:e,i0e=(e,t,n)=>n===M6.Top?e-t:n===M6.Bottom?e+t:e,C7=`react-flow__edgeupdater`;function w7({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,W.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:v4([C7,`${C7}-${s}`]),cx:r0e(t,r,e),cy:i0e(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function a0e({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=_5(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;X8.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,W.jsxs)(W.Fragment,{children:[(e===!0||e===`source`)&&(0,W.jsx)(w7,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,W.jsx)(w7,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function o0e({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,rfId:m,edgeTypes:h,noPanClassName:g,onError:_,disableKeyboardA11y:v}){let y=g5(t=>t.edgeLookup.get(e)),b=g5(e=>e.defaultEdgeOptions);y=b?{...b,...y}:y;let x=y.type||`default`,S=h?.[x]||x7[x];S===void 0&&(_?.(`011`,S6.error011(x)),x=`default`,S=h?.default||x7.default);let w=!!(y.focusable||t&&y.focusable===void 0),T=d!==void 0&&(y.reconnectable||n&&y.reconnectable===void 0),E=!!(y.selectable||r&&y.selectable===void 0),D=(0,C.useRef)(null),[O,k]=(0,C.useState)(!1),[A,j]=(0,C.useState)(!1),M=_5(),{zIndex:N,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:ee}=g5((0,C.useCallback)(t=>{let n=t.nodeLookup.get(y.source),r=t.nodeLookup.get(y.target);if(!n||!r)return{zIndex:y.zIndex,...S7};let i=o$e({id:e,sourceNode:n,targetNode:r,sourceHandle:y.sourceHandle||null,targetHandle:y.targetHandle||null,connectionMode:t.connectionMode,onError:_});return{zIndex:QQe({selected:y.selected,zIndex:y.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode}),...i||S7}},[y.source,y.target,y.sourceHandle,y.targetHandle,y.selected,y.zIndex]),p5),z=(0,C.useMemo)(()=>y.markerStart?`url('#${M8(y.markerStart,m)}')`:void 0,[y.markerStart,m]),te=(0,C.useMemo)(()=>y.markerEnd?`url('#${M8(y.markerEnd,m)}')`:void 0,[y.markerEnd,m]);if(y.hidden||P===null||F===null||I===null||L===null)return null;let B=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=M.getState();E&&(M.setState({nodesSelectionActive:!1}),y.selected&&a?(r({nodes:[],edges:[y]}),D.current?.blur()):n([e])),i&&i(t,y)},V=a?e=>{a(e,{...y})}:void 0,ne=o?e=>{o(e,{...y})}:void 0,re=s?e=>{s(e,{...y})}:void 0,ie=c?e=>{c(e,{...y})}:void 0,ae=l?e=>{l(e,{...y})}:void 0;return(0,W.jsx)(`svg`,{style:{zIndex:N},children:(0,W.jsxs)(`g`,{className:v4([`react-flow__edge`,`react-flow__edge-${x}`,y.className,g,{selected:y.selected,animated:y.animated,inactive:!E&&!i,updating:O,selectable:E}]),onClick:B,onDoubleClick:V,onContextMenu:ne,onMouseEnter:re,onMouseMove:ie,onMouseLeave:ae,onKeyDown:w?t=>{if(!v&&w6.includes(t.key)&&E){let{unselectNodesAndEdges:n,addSelectedEdges:r}=M.getState();t.key===`Escape`?(D.current?.blur(),n({edges:[y]})):r([e])}}:void 0,tabIndex:w?0:void 0,role:y.ariaRole??(w?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":y.ariaLabel===null?void 0:y.ariaLabel||`Edge from ${y.source} to ${y.target}`,"aria-describedby":w?`${b5}-${m}`:void 0,ref:D,...y.domAttributes,children:[!A&&(0,W.jsx)(S,{id:e,source:y.source,target:y.target,type:y.type,selected:y.selected,animated:y.animated,selectable:E,deletable:y.deletable??!0,label:y.label,labelStyle:y.labelStyle,labelShowBg:y.labelShowBg,labelBgStyle:y.labelBgStyle,labelBgPadding:y.labelBgPadding,labelBgBorderRadius:y.labelBgBorderRadius,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:ee,data:y.data,style:y.style,sourceHandleId:y.sourceHandle,targetHandleId:y.targetHandle,markerStart:z,markerEnd:te,pathOptions:`pathOptions`in y?y.pathOptions:void 0,interactionWidth:y.interactionWidth}),T&&(0,W.jsx)(a0e,{edge:y,isReconnectable:T,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:ee,setUpdateHover:k,setReconnecting:j})]})})}var s0e=(0,C.memo)(o0e),c0e=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function T7({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=g5(c0e,p5),b=K1e(t);return(0,W.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,W.jsx)(Z1e,{defaultColor:e,rfId:n}),b.map(e=>(0,W.jsx)(s0e,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}T7.displayName=`EdgeRenderer`;var l0e=(0,C.memo)(T7),u0e=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function d0e({children:e}){return(0,W.jsx)(`div`,{className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:g5(u0e)},children:e})}function f0e(e){let t=U5(),n=(0,C.useRef)(!1);(0,C.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var p0e=e=>e.panZoom?.syncViewport;function m0e(e){let t=g5(p0e),n=_5();return(0,C.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function E7(e){return e.connection.inProgress?{...e.connection,to:n8(e.connection.to,e.transform)}:{...e.connection}}function h0e(e){return e?t=>e(E7(t)):E7}function g0e(e){return g5(h0e(e),p5)}var _0e=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function v0e({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=g5(_0e,p5);return a&&i&&c?(0,W.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,W.jsx)(`g`,{className:v4([`react-flow__connection`,P6(s)]),children:(0,W.jsx)(D7,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var D7=({style:e,type:t=A6.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=g0e();if(!i)return;if(n)return(0,W.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:P6(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case A6.Bezier:[m]=S8(h);break;case A6.SimpleBezier:[m]=l7(h);break;case A6.Step:[m]=D8({...h,borderRadius:0});break;case A6.SmoothStep:[m]=D8(h);break;default:[m]=w8(h)}return(0,W.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};D7.displayName=`ConnectionLine`;var y0e={};function O7(e=y0e){(0,C.useRef)(e),_5(),(0,C.useEffect)(()=>{},[e])}function b0e(){_5(),(0,C.useRef)(!1),(0,C.useEffect)(()=>{},[])}function k7({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,deleteKeyCode:w,onlyRenderVisibleElements:T,elementsSelectable:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,defaultMarkerColor:M,zoomOnScroll:N,zoomOnPinch:P,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:R,panOnDrag:ee,onPaneClick:z,onPaneMouseEnter:te,onPaneMouseMove:B,onPaneMouseLeave:V,onPaneScroll:ne,onPaneContextMenu:re,paneClickDistance:ie,nodeClickDistance:ae,onEdgeContextMenu:oe,onEdgeMouseEnter:se,onEdgeMouseMove:ce,onEdgeMouseLeave:le,reconnectRadius:ue,onReconnect:H,onReconnectStart:de,onReconnectEnd:fe,noDragClassName:pe,noWheelClassName:me,noPanClassName:he,disableKeyboardA11y:U,nodeExtent:ge,rfId:_e,viewport:ve,onViewportChange:ye}){return O7(e),O7(t),b0e(),f0e(n),m0e(ve),(0,W.jsx)(I1e,{onPaneClick:z,onPaneMouseEnter:te,onPaneMouseMove:B,onPaneMouseLeave:V,onPaneContextMenu:re,onPaneScroll:ne,paneClickDistance:ie,deleteKeyCode:w,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,elementsSelectable:E,zoomOnScroll:N,zoomOnPinch:P,zoomOnDoubleClick:R,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:ee,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,onSelectionContextMenu:d,preventScrolling:j,noDragClassName:pe,noWheelClassName:me,noPanClassName:he,disableKeyboardA11y:U,onViewportChange:ye,isControlledViewport:!!ve,children:(0,W.jsxs)(d0e,{children:[(0,W.jsx)(l0e,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:H,onReconnectStart:de,onReconnectEnd:fe,onlyRenderVisibleElements:T,onEdgeContextMenu:oe,onEdgeMouseEnter:se,onEdgeMouseMove:ce,onEdgeMouseLeave:le,reconnectRadius:ue,defaultMarkerColor:M,noPanClassName:he,disableKeyboardA11y:U,rfId:_e}),(0,W.jsx)(v0e,{style:h,type:m,component:g,containerStyle:_}),(0,W.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,W.jsx)(G1e,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:ae,onlyRenderVisibleElements:T,noPanClassName:he,noDragClassName:pe,disableKeyboardA11y:U,nodeExtent:ge,rfId:_e}),(0,W.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}k7.displayName=`GraphView`;var x0e=(0,C.memo)(k7),A7=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??C6;H8(h,g,_);let{nodesInitialized:x}=L8(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=a8(R6(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:C6,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:E6.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...k6},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:KQe,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:T6,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},S0e=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>U$e((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await WQe({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...A7({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=L8(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();H8(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=m$e(e,n,r,i,a,o,l);d&&(u$e(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=A8(e,o.fromHandle,M6.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=B8(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(N5(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(P5(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>F5(e,!0)));return}i(I5(r,new Set([...e]),!0)),a(I5(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>F5(e,!0)));return}a(I5(n,new Set([...e]))),i(I5(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(F5(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(F5(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,F5(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,F5(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();e[0][0]===o[0][0]&&e[0][1]===o[0][1]&&e[1][0]===o[1][0]&&e[1][1]===o[1][1]||(L8(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return h$e({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return Promise.resolve(!1);let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{p({connection:{...k6}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...A7()})}},Object.is);function C0e({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:s,initialFitViewOptions:c,fitView:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f,children:p}){let[m]=(0,C.useState)(()=>S0e({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:l,minZoom:o,maxZoom:s,fitViewOptions:c,nodeOrigin:u,nodeExtent:d,zIndexMode:f}));return(0,W.jsx)(W$e,{value:m,children:(0,W.jsx)(d1e,{children:p})})}function w0e({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p}){return(0,C.useContext)(m5)?(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(C0e,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:s,initialFitViewOptions:c,initialMinZoom:l,initialMaxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:e})}var T0e={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function E0e({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:s,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,onNodeMouseEnter:v,onNodeMouseMove:y,onNodeMouseLeave:b,onNodeContextMenu:x,onNodeDoubleClick:S,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onSelectionChange:A,onSelectionDragStart:j,onSelectionDrag:M,onSelectionDragStop:N,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onBeforeDelete:L,connectionMode:R,connectionLineType:ee=A6.Bezier,connectionLineStyle:z,connectionLineComponent:te,connectionLineContainerStyle:B,deleteKeyCode:V=`Backspace`,selectionKeyCode:ne=`Shift`,selectionOnDrag:re=!1,selectionMode:ie=O6.Full,panActivationKeyCode:ae=`Space`,multiSelectionKeyCode:oe=o8()?`Meta`:`Control`,zoomActivationKeyCode:se=o8()?`Meta`:`Control`,snapToGrid:ce,snapGrid:le,onlyRenderVisibleElements:ue=!1,selectNodesOnDrag:H,nodesDraggable:de,autoPanOnNodeFocus:fe,nodesConnectable:pe,nodesFocusable:me,nodeOrigin:he=w5,edgesFocusable:U,edgesReconnectable:ge,elementsSelectable:_e=!0,defaultViewport:ve=r1e,minZoom:ye=.5,maxZoom:be=2,translateExtent:xe=C6,preventScrolling:Se=!0,nodeExtent:Ce,defaultMarkerColor:we=`#b1b1b7`,zoomOnScroll:Te=!0,zoomOnPinch:Ee=!0,panOnScroll:De=!1,panOnScrollSpeed:Oe=.5,panOnScrollMode:ke=D6.Free,zoomOnDoubleClick:Ae=!0,panOnDrag:je=!0,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:Pe,onPaneMouseLeave:Fe,onPaneScroll:Ie,onPaneContextMenu:Le,paneClickDistance:Re=1,nodeClickDistance:ze=0,children:Be,onReconnect:Ve,onReconnectStart:He,onReconnectEnd:Ue,onEdgeContextMenu:We,onEdgeDoubleClick:Ge,onEdgeMouseEnter:Ke,onEdgeMouseMove:qe,onEdgeMouseLeave:Je,reconnectRadius:Ye=10,onNodesChange:Xe,onEdgesChange:Ze,noDragClassName:Qe=`nodrag`,noWheelClassName:$e=`nowheel`,noPanClassName:et=`nopan`,fitView:tt,fitViewOptions:nt,connectOnClick:rt,attributionPosition:it,proOptions:at,defaultEdgeOptions:ot,elevateNodesOnSelect:st=!0,elevateEdgesOnSelect:ct=!1,disableKeyboardA11y:lt=!1,autoPanOnConnect:ut,autoPanOnNodeDrag:dt,autoPanSpeed:ft,connectionRadius:pt,isValidConnection:mt,onError:ht,style:gt,id:_t,nodeDragThreshold:vt,connectionDragThreshold:yt,viewport:bt,onViewportChange:xt,width:St,height:Ct,colorMode:wt=`light`,debug:Tt,onScroll:Et,ariaLabelConfig:Dt,zIndexMode:Ot=`basic`,...kt},At){let jt=_t||`1`,Mt=o1e(wt),Nt=(0,C.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),Et?.(e)},[Et]);return(0,W.jsx)(`div`,{"data-testid":`rf__wrapper`,...kt,onScroll:Nt,style:{...gt,...T0e},ref:At,className:v4([`react-flow`,i,Mt]),id:_t,role:`application`,children:(0,W.jsxs)(w0e,{nodes:e,edges:t,width:St,height:Ct,fitView:tt,fitViewOptions:nt,minZoom:ye,maxZoom:be,nodeOrigin:he,nodeExtent:Ce,zIndexMode:Ot,children:[(0,W.jsx)(a1e,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,nodesDraggable:de,autoPanOnNodeFocus:fe,nodesConnectable:pe,nodesFocusable:me,edgesFocusable:U,edgesReconnectable:ge,elementsSelectable:_e,elevateNodesOnSelect:st,elevateEdgesOnSelect:ct,minZoom:ye,maxZoom:be,nodeExtent:Ce,onNodesChange:Xe,onEdgesChange:Ze,snapToGrid:ce,snapGrid:le,connectionMode:R,translateExtent:xe,connectOnClick:rt,defaultEdgeOptions:ot,fitView:tt,fitViewOptions:nt,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onSelectionDrag:M,onSelectionDragStart:j,onSelectionDragStop:N,onMove:u,onMoveStart:d,onMoveEnd:f,noPanClassName:et,nodeOrigin:he,rfId:jt,autoPanOnConnect:ut,autoPanOnNodeDrag:dt,autoPanSpeed:ft,onError:ht,connectionRadius:pt,isValidConnection:mt,selectNodesOnDrag:H,nodeDragThreshold:vt,connectionDragThreshold:yt,onBeforeDelete:L,debug:Tt,ariaLabelConfig:Dt,zIndexMode:Ot}),(0,W.jsx)(x0e,{onInit:l,onNodeClick:s,onEdgeClick:c,onNodeMouseEnter:v,onNodeMouseMove:y,onNodeMouseLeave:b,onNodeContextMenu:x,onNodeDoubleClick:S,nodeTypes:a,edgeTypes:o,connectionLineType:ee,connectionLineStyle:z,connectionLineComponent:te,connectionLineContainerStyle:B,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:ie,deleteKeyCode:V,multiSelectionKeyCode:oe,panActivationKeyCode:ae,zoomActivationKeyCode:se,onlyRenderVisibleElements:ue,defaultViewport:ve,translateExtent:xe,minZoom:ye,maxZoom:be,preventScrolling:Se,zoomOnScroll:Te,zoomOnPinch:Ee,zoomOnDoubleClick:Ae,panOnScroll:De,panOnScrollSpeed:Oe,panOnScrollMode:ke,panOnDrag:je,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:Pe,onPaneMouseLeave:Fe,onPaneScroll:Ie,onPaneContextMenu:Le,paneClickDistance:Re,nodeClickDistance:ze,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onReconnect:Ve,onReconnectStart:He,onReconnectEnd:Ue,onEdgeContextMenu:We,onEdgeDoubleClick:Ge,onEdgeMouseEnter:Ke,onEdgeMouseMove:qe,onEdgeMouseLeave:Je,reconnectRadius:Ye,defaultMarkerColor:we,noDragClassName:Qe,noWheelClassName:$e,noPanClassName:et,rfId:jt,disableKeyboardA11y:lt,nodeExtent:Ce,viewport:bt,onViewportChange:xt}),(0,W.jsx)(n1e,{onSelectionChange:A}),Be,(0,W.jsx)(Z$e,{proOptions:at,position:it}),(0,W.jsx)(X$e,{rfId:jt,disableKeyboardA11y:lt})]})})}var D0e=B5(E0e);function O0e(e){let[t,n]=(0,C.useState)(e);return[t,n,(0,C.useCallback)(e=>n(t=>N5(e,t)),[])]}function k0e(e){let[t,n]=(0,C.useState)(e);return[t,n,(0,C.useCallback)(e=>n(t=>P5(e,t)),[])]}S6.error014();function A0e({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,W.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:v4([`react-flow__background-pattern`,n,r])})}function j0e({radius:e,className:t}){return(0,W.jsx)(`circle`,{cx:e,cy:e,r:e,className:v4([`react-flow__background-pattern`,`dots`,t])})}var j7;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(j7||={});var M0e={[j7.Dots]:1,[j7.Lines]:1,[j7.Cross]:6},N0e=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function M7({id:e,variant:t=j7.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:s,style:c,className:l,patternClassName:u}){let d=(0,C.useRef)(null),{transform:f,patternId:p}=g5(N0e,p5),m=r||M0e[t],h=t===j7.Dots,g=t===j7.Cross,_=Array.isArray(n)?n:[n,n],v=[_[0]*f[2]||1,_[1]*f[2]||1],y=m*f[2],b=Array.isArray(a)?a:[a,a],x=g?[y,y]:v,S=[b[0]*f[2]||1+x[0]/2,b[1]*f[2]||1+x[1]/2],w=`${p}${e||``}`;return(0,W.jsxs)(`svg`,{className:v4([`react-flow__background`,l]),style:{...c,...G5,"--xy-background-color-props":s,"--xy-background-pattern-color-props":o},ref:d,"data-testid":`rf__background`,children:[(0,W.jsx)(`pattern`,{id:w,x:f[0]%v[0],y:f[1]%v[1],width:v[0],height:v[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${S[0]},-${S[1]})`,children:h?(0,W.jsx)(j0e,{radius:y/2,className:u}):(0,W.jsx)(A0e,{dimensions:x,lineWidth:i,variant:t,className:u})}),(0,W.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}M7.displayName=`Background`;var P0e=(0,C.memo)(M7);function F0e(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,W.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function I0e(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,W.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function L0e(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,W.jsx)(`path`,{d:`M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z`})})}function R0e(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,W.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z`})})}function z0e(){return(0,W.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,W.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z`})})}function N7({children:e,className:t,...n}){return(0,W.jsx)(`button`,{type:`button`,className:v4([`react-flow__controls-button`,t]),...n,children:e})}var B0e=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function P7({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=_5(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=g5(B0e,p5),{zoomIn:y,zoomOut:b,fitView:x}=U5();return(0,W.jsxs)(x5,{className:v4([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(N7,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,W.jsx)(F0e,{})}),(0,W.jsx)(N7,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,W.jsx)(I0e,{})})]}),n&&(0,W.jsx)(N7,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,W.jsx)(L0e,{})}),r&&(0,W.jsx)(N7,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,W.jsx)(z0e,{}):(0,W.jsx)(R0e,{})}),u]})}P7.displayName=`Controls`;var V0e=(0,C.memo)(P7);function H0e({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,W.jsx)(`rect`,{className:v4([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var U0e=(0,C.memo)(H0e),W0e=e=>e.nodes.map(e=>e.id),F7=e=>e instanceof Function?e:()=>e;function G0e({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=U0e,onClick:o}){let s=g5(W0e,p5),c=F7(t),l=F7(e),u=F7(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,W.jsx)(W.Fragment,{children:s.map(e=>(0,W.jsx)(q0e,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function K0e({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=g5(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=c8(r);return{node:r,x:i,y:a,width:o,height:s}},p5);return!l||l.hidden||!l8(l)?null:(0,W.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var q0e=(0,C.memo)(K0e),J0e=(0,C.memo)(G0e),Y0e=200,X0e=150,Z0e=e=>!e.hidden,Q0e=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?Z6(R6(e.nodeLookup,{filter:Z0e}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},$0e=`react-flow__minimap-desc`;function I7({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:s,bgColor:c,maskColor:l,maskStrokeColor:u,maskStrokeWidth:d,position:f=`bottom-right`,onClick:p,onNodeClick:m,pannable:h=!1,zoomable:g=!1,ariaLabel:_,inversePan:v,zoomStep:y=1,offsetScale:b=5}){let x=_5(),S=(0,C.useRef)(null),{boundingRect:w,viewBB:T,rfId:E,panZoom:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=g5(Q0e,p5),M=e?.width??Y0e,N=e?.height??X0e,P=w.width/M,F=w.height/N,I=Math.max(P,F),L=I*M,R=I*N,ee=b*I,z=w.x-(L-w.width)/2-ee,te=w.y-(R-w.height)/2-ee,B=L+ee*2,V=R+ee*2,ne=`${$0e}-${E}`,re=(0,C.useRef)(0),ie=(0,C.useRef)();re.current=I,(0,C.useEffect)(()=>{if(S.current&&D)return ie.current=w$e({domNode:S.current,panZoom:D,getTransform:()=>x.getState().transform,getViewScale:()=>re.current}),()=>{ie.current?.destroy()}},[D]),(0,C.useEffect)(()=>{ie.current?.update({translateExtent:O,width:k,height:A,inversePan:v,pannable:h,zoomStep:y,zoomable:g})},[h,g,v,y,O,k,A]);let ae=p?e=>{let[t,n]=ie.current?.pointer(e)||[0,0];p(e,{x:t,y:n})}:void 0,oe=m?(0,C.useCallback)((e,t)=>{let n=x.getState().nodeLookup.get(t).internals.userNode;m(e,n)},[]):void 0,se=_??j[`minimap.ariaLabel`];return(0,W.jsx)(x5,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c==`string`?c:void 0,"--xy-minimap-mask-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-stroke-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof d==`number`?d*I:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:v4([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,W.jsxs)(`svg`,{width:M,height:N,viewBox:`${z} ${te} ${B} ${V}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":ne,ref:S,onClick:ae,children:[se&&(0,W.jsx)(`title`,{id:ne,children:se}),(0,W.jsx)(J0e,{onClick:oe,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:s}),(0,W.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${z-ee},${te-ee}h${B+ee*2}v${V+ee*2}h${-B-ee*2}z
462
- M${T.x},${T.y}h${T.width}v${T.height}h${-T.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}I7.displayName=`MiniMap`;var e2e=(0,C.memo)(I7),t2e=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,n2e={[r5.Line]:`right`,[r5.Handle]:`bottom-right`};function r2e({nodeId:e,position:t,variant:n=r5.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:s=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:p=!0,shouldResize:m,onResizeStart:h,onResize:g,onResizeEnd:_}){let v=Z5(),y=typeof e==`string`?e:v,b=_5(),x=(0,C.useRef)(null),S=n===r5.Handle,w=g5((0,C.useCallback)(t2e(S&&p),[S,p]),p5),T=(0,C.useRef)(null),E=t??n2e[n];return(0,C.useEffect)(()=>{if(!(!x.current||!y))return T.current||=R$e({domNode:x.current,nodeId:y,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=b.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=b.getState(),o=[],s={x:e.x,y:e.y},c=r.get(y);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=B8([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...u8({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:y,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:y,type:`dimensions`,resizing:!0,setAttributes:f?f===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:y,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};b.getState().triggerNodeChanges([n])}}),T.current.update({controlPosition:E,boundaries:{minWidth:s,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:g,onResizeEnd:_,shouldResize:m}),()=>{T.current?.destroy()}},[E,s,c,l,u,d,h,g,_,m]),(0,W.jsx)(`div`,{className:v4([`react-flow__resize-control`,`nodrag`,...E.split(`-`),n,r]),ref:x,style:{...i,scale:w,...o&&{[S?`backgroundColor`:`borderColor`]:o}},children:a})}(0,C.memo)(r2e);function i2e(e){return{running:{color:e?`#81c784`:`#2e7d32`,bg:e?`#1b3a1b`:`#e8f5e9`,border:`#4caf50`,Icon:vv},starting:{color:e?`#ffb74d`:`#ed6c02`,bg:e?`#3a2a10`:`#fff3e0`,border:`#ff9800`,Icon:Lhe},stopped:{color:e?`#bdbdbd`:`#757575`,bg:e?`#2a2a2a`:`#f5f5f5`,border:e?`#616161`:`#bdbdbd`,Icon:Xhe},failed:{color:e?`#ef5350`:`#d32f2f`,bg:e?`#3a1515`:`#ffebee`,border:`#f44336`,Icon:jx}}}var a2e={hub:({data:e})=>{let{label:t,bridgeCount:n,deviceCount:r}=e,i=Em(),a=i.palette.primary.main,o=i.palette.primary.dark;return(0,W.jsxs)(X,{sx:{background:`linear-gradient(135deg, ${a}, ${o})`,borderRadius:`50%`,width:120,height:120,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,color:i.palette.primary.contrastText,boxShadow:`0 4px 20px ${i.palette.mode===`dark`?`rgba(0,0,0,0.5)`:`rgba(25,118,210,0.4)`}`,border:`3px solid rgba(255,255,255,0.3)`},children:[(0,W.jsx)(_E,{sx:{fontSize:32,mb:.5}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:700,lineHeight:1.1,children:t}),(0,W.jsxs)(Q,{variant:`caption`,sx:{opacity:.8,fontSize:`0.65rem`},children:[n,` bridges · `,r,` devices`]}),(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Left,style:{opacity:0},id:`left`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`})]})},bridge:({data:e})=>{let{label:t,status:n,port:r,deviceCount:i,failedCount:a,fabricCount:o}=e,{mode:s}=Im(),c=i2e(s===`dark`),l=c[n]??c.stopped,{Icon:u}=l;return(0,W.jsxs)(X,{sx:{background:l.bg,border:`2px solid ${l.border}`,borderRadius:2,px:2,py:1.5,minWidth:180,maxWidth:220,boxShadow:`0 2px 12px rgba(0,0,0,0.08)`},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:.5},children:[(0,W.jsx)(u,{sx:{fontSize:16,color:l.color}}),(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:700,noWrap:!0,sx:{color:l.color},children:t})]}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,children:[`Port `,r]}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:.5,mt:.5,flexWrap:`wrap`},children:[(0,W.jsx)(Pv,{label:`${i} devices`,size:`small`,sx:{fontSize:`0.65rem`,height:20}}),o>0&&(0,W.jsx)(Pv,{label:`${o} fabrics`,size:`small`,color:`primary`,variant:`outlined`,sx:{fontSize:`0.65rem`,height:20}}),a>0&&(0,W.jsx)(Pv,{label:`${a} failed`,size:`small`,color:`error`,sx:{fontSize:`0.65rem`,height:20}})]})]})},device:({data:e})=>{let{label:t,deviceType:n}=e;return(0,W.jsxs)(X,{sx:{background:e=>e.palette.background.paper,border:`1px solid`,borderColor:`divider`,borderRadius:1.5,px:1.5,py:1,minWidth:150,maxWidth:200,boxShadow:`0 1px 6px rgba(0,0,0,0.06)`},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(Sb,{sx:{fontSize:14,color:`text.secondary`}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:600,noWrap:!0,sx:{maxWidth:160},children:t})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,sx:{fontSize:`0.6rem`,mt:.25},noWrap:!0,children:n})]})},fabric:({data:e})=>{let{label:t,vendorId:n}=e,r=Em(),i=kx(n)===`Vendor ${n}`?t||`Vendor ${n}`:kx(n);return(0,W.jsxs)(X,{sx:{background:`linear-gradient(135deg, ${r.palette.secondary.dark}, ${r.palette.secondary.main})`,borderRadius:2,px:1.5,py:1,minWidth:140,color:r.palette.secondary.contrastText,boxShadow:`0 2px 12px ${r.palette.mode===`dark`?`rgba(0,0,0,0.4)`:`rgba(123,31,162,0.3)`}`},children:[(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(She,{sx:{fontSize:16}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:700,children:i})]}),t&&t!==i&&(0,W.jsx)(Q,{variant:`caption`,display:`block`,sx:{opacity:.8,fontSize:`0.6rem`},children:t})]})},failed:({data:e})=>{let{label:t,reason:n}=e,{mode:r}=Im(),i=r===`dark`,a=i?`#ef5350`:`#d32f2f`;return(0,W.jsxs)(X,{sx:{background:i?`#3a1515`:`#ffebee`,border:`1px dashed #f44336`,borderRadius:1.5,px:1.5,py:1,minWidth:150,maxWidth:200,opacity:.85},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(wb,{sx:{fontSize:14,color:a}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:600,noWrap:!0,sx:{maxWidth:160,color:a},children:t})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,sx:{fontSize:`0.6rem`,mt:.25},noWrap:!0,title:n,children:n})]})}};function o2e(e,t,n,r){let i=[],a=[],o=e.reduce((e,t)=>e+t.deviceCount,0),s=new Map,c=e.map(e=>{let r=t[e.id],i=r?Rx(r).filter(e=>e.endpoint!==0):[],a=e.failedEntities?.length??0,o=i.length+a,s=Math.min(o,n.devicesPerColumn);return{bridge:e,devices:i,height:Math.max(n.minBridgeSpacingY,s*n.deviceSpacingY+80)}}),l=c.reduce((e,t)=>e+t.height,0)/2;i.push({id:`hub`,type:`hub`,position:{x:n.hubX,y:l-60},data:{label:`HAMH`,bridgeCount:e.length,deviceCount:o}});let u=0;c.forEach(({bridge:e,devices:t,height:o})=>{let c=`bridge-${e.id}`,l=u+o/2,d=n.hubX+n.bridgeOffsetX,f=e.commissioning?.fabrics?.length??0,p=e.failedEntities?.length??0;if(i.push({id:c,type:`bridge`,position:{x:d,y:l-30},data:{label:e.name,status:e.status,port:e.port,deviceCount:e.deviceCount,failedCount:p,fabricCount:f}}),a.push({id:`hub-${c}`,source:`hub`,target:c,type:`smoothstep`,animated:e.status===`running`,style:{stroke:e.status===`running`?r.running:r.inactive,strokeWidth:2}}),e.commissioning?.fabrics)for(let t of e.commissioning.fabrics){let n=s.get(t.rootVendorId);n?n.bridgeIds.includes(e.id)||n.bridgeIds.push(e.id):s.set(t.rootVendorId,{vendorId:t.rootVendorId,label:t.label,bridgeIds:[e.id]})}let m=e.failedEntities??[],h=t.length+m.length,g=l-Math.min(h,n.devicesPerColumn)*n.deviceSpacingY/2,_=d+n.deviceOffsetX;t.forEach((t,o)=>{let s=Math.floor(o/n.devicesPerColumn),l=o%n.devicesPerColumn,u=`device-${e.id}-${t.id.global}`,d=zx(t.state)??t.id.local;i.push({id:u,type:`device`,position:{x:_+s*n.deviceColumnSpacingX,y:g+l*n.deviceSpacingY},data:{label:d,deviceType:t.type.name,entityId:t.id.local}}),a.push({id:`${c}-${u}`,source:c,target:u,type:`smoothstep`,style:{stroke:r.device,strokeWidth:1}})}),m.forEach((o,s)=>{let l=t.length+s,u=Math.floor(l/n.devicesPerColumn),d=l%n.devicesPerColumn,f=`failed-${e.id}-${o.entityId}`;i.push({id:f,type:`failed`,position:{x:_+u*n.deviceColumnSpacingX,y:g+d*n.deviceSpacingY},data:{label:o.entityId,reason:o.reason}}),a.push({id:`${c}-${f}`,source:c,target:f,type:`smoothstep`,style:{stroke:r.failed,strokeWidth:1,strokeDasharray:`5,5`}})}),u+=o});let d=Array.from(s.values()),f=l-(d.length-1)*120/2;return d.forEach((e,t)=>{let o=`fabric-${e.vendorId}`;i.push({id:o,type:`fabric`,position:{x:n.hubX+n.fabricOffsetX,y:f+t*120},data:{label:e.label,vendorId:e.vendorId}});for(let t of e.bridgeIds)a.push({id:`${o}-bridge-${t}`,source:o,target:`bridge-${t}`,type:`smoothstep`,animated:!0,style:{stroke:r.fabric,strokeWidth:1.5}})}),{nodes:i,edges:a}}var s2e=()=>{let{t:e}=_s(),t=nv(),{content:n,isLoading:r}=KT(),i=rv(e=>e.devices.byBridge),[a,o,s]=O0e([]),[c,l,u]=k0e([]),[d,f]=(0,C.useState)(!1),{mode:p}=Im(),m=p===`dark`,h=(0,C.useRef)([]),[g,_]=(0,C.useState)(!1);(0,C.useEffect)(()=>{t(Y_())},[t]),(0,C.useEffect)(()=>{if(n)for(let e of n)t(ZT(e.id))},[t,n]);let v=(0,C.useMemo)(()=>{let e={};if(n)for(let t of n)e[t.id]=i[t.id]?.content;return e},[n,i]),y=(0,C.useMemo)(()=>!n||n.length===0?!0:n.every(e=>i[e.id]?.isInitialized),[n,i]);(0,C.useEffect)(()=>{if(!n||!y)return;let e=o2e(n,v,{hubX:400,minBridgeSpacingY:200,deviceSpacingY:55,devicesPerColumn:10,deviceColumnSpacingX:220,fabricOffsetX:-350,bridgeOffsetX:250,deviceOffsetX:280},{running:m?`#81c784`:`#4caf50`,inactive:m?`#616161`:`#bdbdbd`,device:m?`#90caf9`:`#64b5f6`,failed:m?`#ef5350`:`#f44336`,fabric:m?`#ce93d8`:`#ab47bc`});try{let t=localStorage.getItem(`hamh-network-map-positions`);if(t){let n=JSON.parse(t);for(let t of e.nodes)n[t.id]&&(t.position=n[t.id])}}catch{}o(e.nodes),l(e.edges)},[n,v,y,o,l,m]);let b=(0,C.useCallback)(()=>{t(Y_())},[t]),x=(0,C.useCallback)((e,t)=>{let n=a.find(e=>e.id===t.id);n&&(h.current.push({nodeId:t.id,position:{...n.position}}),_(!0));let r=`hamh-network-map-positions`;try{let e=localStorage.getItem(r),n=e?JSON.parse(e):{};n[t.id]={x:t.position.x,y:t.position.y},localStorage.setItem(r,JSON.stringify(n))}catch{}},[a]),S=(0,C.useCallback)(()=>{localStorage.removeItem(`hamh-network-map-positions`),h.current=[],_(!1),t(Y_())},[t]),w=(0,C.useCallback)(()=>{let e=h.current.pop();if(!e)return;_(h.current.length>0),o(t=>t.map(t=>t.id===e.nodeId?{...t,position:e.position}:t));let t=`hamh-network-map-positions`;try{let n=localStorage.getItem(t),r=n?JSON.parse(n):{};r[e.nodeId]=e.position,localStorage.setItem(t,JSON.stringify(r))}catch{}},[o]),T=r||!y;return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2},children:[(0,W.jsxs)(Q,{variant:`h4`,sx:{display:`flex`,alignItems:`center`,gap:2},children:[(0,W.jsx)(rE,{}),e(`networkMap.title`)]}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:.5},children:[(0,W.jsx)(yb,{title:e(`networkMap.undoMove`),children:(0,W.jsx)(`span`,{children:(0,W.jsx)(Hh,{onClick:w,color:`primary`,disabled:!g,children:(0,W.jsx)(nge,{})})})}),(0,W.jsx)(yb,{title:e(`networkMap.resetLayout`),children:(0,W.jsx)(Hh,{onClick:S,color:`primary`,children:(0,W.jsx)(TE,{})})}),(0,W.jsx)(yb,{title:e(`networkMap.refreshData`),children:(0,W.jsx)(Hh,{onClick:b,color:`primary`,children:(0,W.jsx)(wE,{})})}),(0,W.jsx)(yb,{title:e(d?`networkMap.exitFullscreen`:`networkMap.fullscreen`),children:(0,W.jsx)(Hh,{onClick:()=>f(e=>!e),color:`primary`,children:d?(0,W.jsx)(Ihe,{}):(0,W.jsx)(Fhe,{})})})]})]}),T?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:8},children:(0,W.jsx)(Bh,{})}):(0,W.jsx)(X,{sx:{width:`100%`,height:d?`calc(100vh - 100px)`:600,border:`1px solid`,borderColor:`divider`,borderRadius:2,overflow:`hidden`,transition:`height 0.3s ease`},children:(0,W.jsxs)(D0e,{nodes:a,edges:c,onNodesChange:s,onEdgesChange:u,onNodeDragStop:x,nodeTypes:a2e,colorMode:m?`dark`:`light`,fitView:!0,fitViewOptions:{padding:.2},minZoom:.1,maxZoom:2,proOptions:{hideAttribution:!0},children:[(0,W.jsx)(P0e,{variant:j7.Dots,gap:20,size:1}),(0,W.jsx)(V0e,{}),(0,W.jsx)(e2e,{nodeStrokeWidth:3,zoomable:!0,pannable:!0,nodeColor:e=>{switch(e.type){case`hub`:return`#1976d2`;case`bridge`:return`#4caf50`;case`fabric`:return`#9c27b0`;case`failed`:return`#f44336`;default:return m?`#90caf9`:`#90a4ae`}},style:{borderRadius:8}})]})}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:3,mt:2,flexWrap:`wrap`,alignItems:`center`},children:[(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,fontWeight:600,children:[e(`networkMap.legend`),`:`]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:`50%`,background:`linear-gradient(135deg, #7b1fa2, #9c27b0)`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.controller`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:`50%`,background:`linear-gradient(135deg, #1976d2, #1565c0)`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.hub`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#1b3a1b`:`#e8f5e9`,border:`1px solid #4caf50`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.bridge`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#2a2a2a`:`#fff`,border:`1px solid ${m?`#616161`:`#bdbdbd`}`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.device`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#3a1515`:`#ffebee`,border:`1px dashed #f44336`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.failed`)})]})]})]})};function c2e(e){return Vd(`MuiTab`,e)}var L7=Hd(`MuiTab`,[`root`,`labelIcon`,`textColorInherit`,`textColorPrimary`,`textColorSecondary`,`selected`,`disabled`,`fullWidth`,`wrapped`,`iconWrapper`,`icon`]),l2e=e=>{let{classes:t,textColor:n,fullWidth:r,wrapped:i,icon:a,label:o,selected:s,disabled:c}=e;return _p({root:[`root`,a&&o&&`labelIcon`,`textColor${J(n)}`,r&&`fullWidth`,i&&`wrapped`,s&&`selected`,c&&`disabled`],icon:[`iconWrapper`,`icon`]},c2e,t)},u2e=q(Fh,{name:`MuiTab`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${J(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{[`& .${L7.iconWrapper}`]:t.iconWrapper},{[`& .${L7.icon}`]:t.icon}]}})(Lm(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:`relative`,minHeight:48,flexShrink:0,padding:`12px 16px`,overflow:`hidden`,whiteSpace:`normal`,textAlign:`center`,lineHeight:1.25,variants:[{props:({ownerState:e})=>e.label&&(e.iconPosition===`top`||e.iconPosition===`bottom`),style:{flexDirection:`column`}},{props:({ownerState:e})=>e.label&&e.iconPosition!==`top`&&e.iconPosition!==`bottom`,style:{flexDirection:`row`}},{props:({ownerState:e})=>e.icon&&e.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`top`,style:{[`& > .${L7.icon}`]:{marginBottom:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`bottom`,style:{[`& > .${L7.icon}`]:{marginTop:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`start`,style:{[`& > .${L7.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`end`,style:{[`& > .${L7.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:`inherit`},style:{color:`inherit`,opacity:.6,[`&.${L7.selected}`]:{opacity:1},[`&.${L7.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:`primary`},style:{color:(e.vars||e).palette.text.secondary,[`&.${L7.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${L7.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:`secondary`},style:{color:(e.vars||e).palette.text.secondary,[`&.${L7.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${L7.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:e})=>e.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:`none`}},{props:({ownerState:e})=>e.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),R7=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTab`}),{className:r,disabled:i=!1,disableFocusRipple:a=!1,fullWidth:o,icon:s,iconPosition:c=`top`,indicator:l,label:u,onChange:d,onClick:f,onFocus:p,selected:m,selectionFollowsFocus:h,textColor:g=`inherit`,value:_,wrapped:v=!1,...y}=n,b={...n,disabled:i,disableFocusRipple:a,selected:m,icon:!!s,iconPosition:c,label:!!u,fullWidth:o,textColor:g,wrapped:v},x=l2e(b),S=s&&u&&C.isValidElement(s)?C.cloneElement(s,{className:G(x.icon,s.props.className)}):s;return(0,W.jsxs)(u2e,{focusRipple:!a,className:G(x.root,r),ref:t,role:`tab`,"aria-selected":m,disabled:i,onClick:e=>{!m&&d&&d(e,_),f&&f(e)},onFocus:e=>{h&&!m&&d&&d(e,_),p&&p(e)},ownerState:b,tabIndex:m?0:-1,...y,children:[c===`top`||c===`start`?(0,W.jsxs)(C.Fragment,{children:[S,u]}):(0,W.jsxs)(C.Fragment,{children:[u,S]}),l]})});function d2e(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function f2e(e,t,n,r={},i=()=>{}){let{ease:a=d2e,duration:o=300}=r,s=null,c=t[e],l=!1,u=()=>{l=!0},d=r=>{if(l){i(Error(`Animation cancelled`));return}s===null&&(s=r);let u=Math.min(1,(r-s)/o);if(t[e]=a(u)*(n-c)+c,u>=1){requestAnimationFrame(()=>{i(null)});return}requestAnimationFrame(d)};return c===n?(i(Error(`Element already at target position`)),u):(requestAnimationFrame(d),u)}var p2e={width:99,height:99,position:`absolute`,top:-9999,overflow:`scroll`};function m2e(e){let{onChange:t,...n}=e,r=C.useRef(),i=C.useRef(null),a=()=>{r.current=i.current.offsetHeight-i.current.clientHeight};return ah(()=>{let e=Qm(()=>{let e=r.current;a(),e!==r.current&&t(r.current)}),n=rh(i.current);return n.addEventListener(`resize`,e),()=>{e.clear(),n.removeEventListener(`resize`,e)}},[t]),C.useEffect(()=>{a(),t(r.current)},[t]),(0,W.jsx)(`div`,{style:p2e,...n,ref:i})}var h2e=Y((0,W.jsx)(`path`,{d:`M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z`}),`KeyboardArrowLeft`),g2e=Y((0,W.jsx)(`path`,{d:`M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z`}),`KeyboardArrowRight`);function _2e(e){return Vd(`MuiTabScrollButton`,e)}var v2e=Hd(`MuiTabScrollButton`,[`root`,`vertical`,`horizontal`,`disabled`]),y2e=e=>{let{classes:t,orientation:n,disabled:r}=e;return _p({root:[`root`,n,r&&`disabled`]},_2e,t)},b2e=q(Fh,{name:`MuiTabScrollButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${v2e.disabled}`]:{opacity:0},variants:[{props:{orientation:`vertical`},style:{width:`100%`,height:40,"& svg":{transform:`var(--TabScrollButton-svgRotate)`}}}]}),x2e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTabScrollButton`}),{className:r,slots:i={},slotProps:a={},direction:o,orientation:s,disabled:c,...l}=n,u=If(),d={isRtl:u,...n},f=y2e(d),p=i.StartScrollButtonIcon??h2e,m=i.EndScrollButtonIcon??g2e,h=Xv({elementType:p,externalSlotProps:a.startScrollButtonIcon,additionalProps:{fontSize:`small`},ownerState:d}),g=Xv({elementType:m,externalSlotProps:a.endScrollButtonIcon,additionalProps:{fontSize:`small`},ownerState:d});return(0,W.jsx)(b2e,{component:`div`,className:G(f.root,r),ref:t,role:null,ownerState:d,tabIndex:null,...l,style:{...l.style,...s===`vertical`&&{"--TabScrollButton-svgRotate":`rotate(${u?-90:90}deg)`}},children:o===`left`?(0,W.jsx)(p,{...h}):(0,W.jsx)(m,{...g})})});function S2e(e){return Vd(`MuiTabs`,e)}var z7=Hd(`MuiTabs`,[`root`,`vertical`,`list`,`flexContainer`,`flexContainerVertical`,`centered`,`scroller`,`fixed`,`scrollableX`,`scrollableY`,`hideScrollbar`,`scrollButtons`,`scrollButtonsHideMobile`,`indicator`]),B7=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,V7=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,H7=(e,t,n)=>{let r=!1,i=n(e,t);for(;i;){if(i===e.firstChild){if(r)return;r=!0}let t=i.disabled||i.getAttribute(`aria-disabled`)===`true`;if(!i.hasAttribute(`tabindex`)||t)i=n(e,i);else{i.focus();return}}},C2e=e=>{let{vertical:t,fixed:n,hideScrollbar:r,scrollableX:i,scrollableY:a,centered:o,scrollButtonsHideMobile:s,classes:c}=e;return _p({root:[`root`,t&&`vertical`],scroller:[`scroller`,n&&`fixed`,r&&`hideScrollbar`,i&&`scrollableX`,a&&`scrollableY`],list:[`list`,`flexContainer`,t&&`flexContainerVertical`,t&&`vertical`,o&&`centered`],indicator:[`indicator`],scrollButtons:[`scrollButtons`,s&&`scrollButtonsHideMobile`],scrollableX:[i&&`scrollableX`],hideScrollbar:[r&&`hideScrollbar`]},S2e,c)},w2e=q(`div`,{name:`MuiTabs`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${z7.scrollButtons}`]:t.scrollButtons},{[`& .${z7.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(Lm(({theme:e})=>({overflow:`hidden`,minHeight:48,WebkitOverflowScrolling:`touch`,display:`flex`,variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:`column`}},{props:({ownerState:e})=>e.scrollButtonsHideMobile,style:{[`& .${z7.scrollButtons}`]:{[e.breakpoints.down(`sm`)]:{display:`none`}}}}]}))),T2e=q(`div`,{name:`MuiTabs`,slot:`Scroller`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})({position:`relative`,display:`inline-block`,flex:`1 1 auto`,whiteSpace:`nowrap`,variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:`hidden`,width:`100%`}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:`auto`,overflowY:`hidden`}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:`auto`,overflowX:`hidden`}}]}),E2e=q(`div`,{name:`MuiTabs`,slot:`List`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.list,t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})({display:`flex`,variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:`column`}},{props:({ownerState:e})=>e.centered,style:{justifyContent:`center`}}]}),D2e=q(`span`,{name:`MuiTabs`,slot:`Indicator`})(Lm(({theme:e})=>({position:`absolute`,height:2,bottom:0,width:`100%`,transition:e.transitions.create(),variants:[{props:{indicatorColor:`primary`},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:`secondary`},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:e})=>e.vertical,style:{height:`100%`,width:2,right:0}}]}))),O2e=q(m2e)({overflowX:`auto`,overflowY:`hidden`,scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}),U7={},k2e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTabs`}),r=Em(),i=If(),{"aria-label":a,"aria-labelledby":o,action:s,centered:c=!1,children:l,className:u,component:d=`div`,allowScrollButtonsMobile:f=!1,indicatorColor:p=`primary`,onChange:m,orientation:h=`horizontal`,ScrollButtonComponent:g,scrollButtons:_=`auto`,selectionFollowsFocus:v,slots:y={},slotProps:b={},TabIndicatorProps:x={},TabScrollButtonProps:S={},textColor:w=`primary`,value:T,variant:E=`standard`,visibleScrollbar:D=!1,...O}=n,k=E===`scrollable`,A=h===`vertical`,j=A?`scrollTop`:`scrollLeft`,M=A?`top`:`left`,N=A?`bottom`:`right`,P=A?`clientHeight`:`clientWidth`,F=A?`height`:`width`,I={...n,component:d,allowScrollButtonsMobile:f,indicatorColor:p,orientation:h,vertical:A,scrollButtons:_,textColor:w,variant:E,visibleScrollbar:D,fixed:!k,hideScrollbar:k&&!D,scrollableX:k&&!A,scrollableY:k&&A,centered:c&&!k,scrollButtonsHideMobile:!f},L=C2e(I),R=Xv({elementType:y.StartScrollButtonIcon,externalSlotProps:b.startScrollButtonIcon,ownerState:I}),ee=Xv({elementType:y.EndScrollButtonIcon,externalSlotProps:b.endScrollButtonIcon,ownerState:I}),[z,te]=C.useState(!1),[B,V]=C.useState(U7),[ne,re]=C.useState(!1),[ie,ae]=C.useState(!1),[oe,se]=C.useState(!1),[ce,le]=C.useState({overflow:`hidden`,scrollbarWidth:0}),ue=new Map,H=C.useRef(null),de=C.useRef(null),fe={slots:y,slotProps:{indicator:x,scrollButtons:S,...b}},pe=()=>{let e=H.current,t;if(e){let n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}let n;if(e&&T!==!1){let e=de.current.children;if(e.length>0){let t=e[ue.get(T)];n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},me=uh(()=>{let{tabsMeta:e,tabMeta:t}=pe(),n=0,r;A?(r=`top`,t&&e&&(n=t.top-e.top+e.scrollTop)):(r=i?`right`:`left`,t&&e&&(n=(i?-1:1)*(t[r]-e[r]+e.scrollLeft)));let a={[r]:n,[F]:t?t[F]:0};if(typeof B[r]!=`number`||typeof B[F]!=`number`)V(a);else{let e=Math.abs(B[r]-a[r]),t=Math.abs(B[F]-a[F]);(e>=1||t>=1)&&V(a)}}),he=(e,{animation:t=!0}={})=>{t?f2e(j,H.current,e,{duration:r.transitions.duration.standard}):H.current[j]=e},U=e=>{let t=H.current[j];A?t+=e:t+=e*(i?-1:1),he(t)},ge=()=>{let e=H.current[P],t=0,n=Array.from(de.current.children);for(let r=0;r<n.length;r+=1){let i=n[r];if(t+i[P]>e){r===0&&(t=e);break}t+=i[P]}return t},_e=()=>{U(-1*ge())},ve=()=>{U(ge())},[ye,{onChange:be,...xe}]=Gm(`scrollbar`,{className:G(L.scrollableX,L.hideScrollbar),elementType:O2e,shouldForwardComponentProp:!0,externalForwardedProps:fe,ownerState:I}),Se=C.useCallback(e=>{be?.(e),le({overflow:null,scrollbarWidth:e})},[be]),[Ce,we]=Gm(`scrollButtons`,{className:G(L.scrollButtons,S.className),elementType:x2e,externalForwardedProps:fe,ownerState:I,additionalProps:{orientation:h,slots:{StartScrollButtonIcon:y.startScrollButtonIcon||y.StartScrollButtonIcon,EndScrollButtonIcon:y.endScrollButtonIcon||y.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:R,endScrollButtonIcon:ee}}}),Te=()=>{let e={};e.scrollbarSizeListener=k?(0,W.jsx)(ye,{...xe,onChange:Se}):null;let t=k&&(_===`auto`&&(ne||ie)||_===!0);return e.scrollButtonStart=t?(0,W.jsx)(Ce,{direction:i?`right`:`left`,onClick:_e,disabled:!ne,...we}):null,e.scrollButtonEnd=t?(0,W.jsx)(Ce,{direction:i?`left`:`right`,onClick:ve,disabled:!ie,...we}):null,e},Ee=uh(e=>{let{tabsMeta:t,tabMeta:n}=pe();!n||!t||(n[M]<t[M]?he(t[j]+(n[M]-t[M]),{animation:e}):n[N]>t[N]&&he(t[j]+(n[N]-t[N]),{animation:e}))}),De=uh(()=>{k&&_!==!1&&se(!oe)});C.useEffect(()=>{let e=Qm(()=>{H.current&&me()}),t,n=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{t?.unobserve(e)}),e.addedNodes.forEach(e=>{t?.observe(e)})}),e(),De()},r=rh(H.current);r.addEventListener(`resize`,e);let i;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(e),Array.from(de.current.children).forEach(e=>{t.observe(e)})),typeof MutationObserver<`u`&&(i=new MutationObserver(n),i.observe(de.current,{childList:!0})),()=>{e.clear(),r.removeEventListener(`resize`,e),i?.disconnect(),t?.disconnect()}},[me,De]),C.useEffect(()=>{let e=Array.from(de.current.children),t=e.length;if(typeof IntersectionObserver<`u`&&t>0&&k&&_!==!1){let n=e[0],r=e[t-1],i={root:H.current,threshold:.99},a=new IntersectionObserver(e=>{re(!e[0].isIntersecting)},i);a.observe(n);let o=new IntersectionObserver(e=>{ae(!e[0].isIntersecting)},i);return o.observe(r),()=>{a.disconnect(),o.disconnect()}}},[k,_,oe,l?.length]),C.useEffect(()=>{te(!0)},[]),C.useEffect(()=>{me()}),C.useEffect(()=>{Ee(U7!==B)},[Ee,B]),C.useImperativeHandle(s,()=>({updateIndicator:me,updateScrollButtons:De}),[me,De]);let[Oe,ke]=Gm(`indicator`,{className:G(L.indicator,x.className),elementType:D2e,externalForwardedProps:fe,ownerState:I,additionalProps:{style:B}}),Ae=(0,W.jsx)(Oe,{...ke}),je=0,Me=C.Children.map(l,e=>{if(!C.isValidElement(e))return null;let t=e.props.value===void 0?je:e.props.value;ue.set(t,je);let n=t===T;return je+=1,C.cloneElement(e,{fullWidth:E===`fullWidth`,indicator:n&&!z&&Ae,selected:n,selectionFollowsFocus:v,onChange:m,textColor:w,value:t,...je===1&&T===!1&&!e.props.tabIndex?{tabIndex:0}:{}})}),Ne=e=>{if(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)return;let t=de.current,n=Rb(th(t));if(n?.getAttribute(`role`)!==`tab`)return;let r=h===`horizontal`?`ArrowLeft`:`ArrowUp`,a=h===`horizontal`?`ArrowRight`:`ArrowDown`;switch(h===`horizontal`&&i&&(r=`ArrowRight`,a=`ArrowLeft`),e.key){case r:e.preventDefault(),H7(t,n,V7);break;case a:e.preventDefault(),H7(t,n,B7);break;case`Home`:e.preventDefault(),H7(t,null,B7);break;case`End`:e.preventDefault(),H7(t,null,V7);break;default:break}},Pe=Te(),[Fe,Ie]=Gm(`root`,{ref:t,className:G(L.root,u),elementType:w2e,externalForwardedProps:{...fe,...O,component:d},ownerState:I}),[Le,Re]=Gm(`scroller`,{ref:H,className:L.scroller,elementType:T2e,externalForwardedProps:fe,ownerState:I,additionalProps:{style:{overflow:ce.overflow,[A?`margin${i?`Left`:`Right`}`:`marginBottom`]:D?void 0:-ce.scrollbarWidth}}}),[ze,Be]=Gm(`list`,{ref:de,className:G(L.list,L.flexContainer),elementType:E2e,externalForwardedProps:fe,ownerState:I,getSlotProps:e=>({...e,onKeyDown:t=>{Ne(t),e.onKeyDown?.(t)}})});return(0,W.jsxs)(Fe,{...Ie,children:[Pe.scrollButtonStart,Pe.scrollbarSizeListener,(0,W.jsxs)(Le,{...Re,children:[(0,W.jsx)(ze,{"aria-label":a,"aria-labelledby":o,"aria-orientation":h===`vertical`?`vertical`:null,role:`tablist`,...Be,children:Me}),z&&Ae]}),Pe.scrollButtonEnd]})});async function W7(e,t){let n=await fetch(e,t);if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`${n.status} ${n.statusText}`)}return n.json()}var A2e=()=>{let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)([]),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(0),[f,p]=(0,C.useState)(``),[m,h]=(0,C.useState)(``),[g,_]=(0,C.useState)(null),[v,y]=(0,C.useState)(!1),[b,x]=(0,C.useState)(),S=(0,C.useRef)(null),w=(0,C.useCallback)(async()=>{a(!0),s(void 0);try{let[e,n]=await Promise.all([W7(`api/plugins`),W7(`api/plugins/installed`)]);t(e),r(n)}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]);(0,C.useEffect)(()=>{w()},[w]);let T=async()=>{if(f.trim()){y(!0),x(void 0);try{await W7(`api/plugins/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageName:f.trim()})}),p(``),l(!1),await w()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}},E=async()=>{if(g){y(!0),x(void 0);try{let e=await g.arrayBuffer(),t=await fetch(`api/plugins/upload`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`},body:e});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`${t.status} ${t.statusText}`)}_(null),S.current&&(S.current.value=``),l(!1),await w()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}},D=async()=>{if(m.trim()){y(!0),x(void 0);try{await W7(`api/plugins/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:m.trim()})}),h(``),l(!1),await w()}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}},O=async e=>{try{await W7(`api/plugins/uninstall`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageName:e})}),await w()}catch(e){s(e instanceof Error?e.message:String(e))}},k=async(e,t,n)=>{try{await W7(`api/plugins/${e}/${t}/${n}`,{method:`POST`}),await w()}catch(e){s(e instanceof Error?e.message:String(e))}};if(i)return(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,py:6},children:(0,W.jsx)(Bh,{})});let A=e.reduce((e,t)=>e+t.plugins.length,0);return(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:3,p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsxs)(Q,{variant:`h5`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(mE,{}),` Plugins`]}),(0,W.jsxs)(Yv,{direction:`row`,spacing:1,children:[(0,W.jsx)(yb,{title:`Refresh`,children:(0,W.jsx)(Hh,{onClick:w,children:(0,W.jsx)(wE,{})})}),(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(bb,{}),onClick:()=>{x(void 0),l(!0)},size:`small`,children:`Install Plugin`})]})]}),o&&(0,W.jsx)(Gh,{severity:`error`,onClose:()=>s(void 0),children:o}),A===0&&n.length===0&&(0,W.jsx)(Gh,{severity:`info`,children:`No plugins installed. Click "Install Plugin" to add an npm plugin package, or plugins will appear here when registered by the bridge.`}),n.length>0&&(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,gutterBottom:!0,children:`Installed Packages`}),(0,W.jsx)(oy,{dense:!0,children:n.map(e=>(0,W.jsxs)(uy,{secondaryAction:(0,W.jsx)(yb,{title:`Uninstall`,children:(0,W.jsx)(Hh,{edge:`end`,onClick:()=>O(e.packageName),color:`error`,size:`small`,children:(0,W.jsx)(KS,{})})}),children:[(0,W.jsx)(fy,{children:(0,W.jsx)(mE,{})}),(0,W.jsx)(my,{primary:e.packageName,secondary:`v${e.version}, installed ${new Date(e.installedAt).toLocaleDateString()}`})]},e.packageName))})]})}),e.map(e=>(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,gutterBottom:!0,children:e.bridgeName}),e.plugins.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:`No active plugins on this bridge.`}):(0,W.jsx)(oy,{dense:!0,children:e.plugins.map(t=>(0,W.jsxs)(X,{children:[(0,W.jsxs)(uy,{secondaryAction:(0,W.jsxs)(Yv,{direction:`row`,spacing:.5,children:[t.circuitBreaker?.disabled&&(0,W.jsx)(yb,{title:`Reset circuit breaker`,children:(0,W.jsx)(Hh,{size:`small`,onClick:()=>k(e.bridgeId,t.name,`reset`),children:(0,W.jsx)(TE,{})})}),(0,W.jsx)(yb,{title:t.enabled?`Disable`:`Enable`,children:(0,W.jsx)(Hh,{size:`small`,onClick:()=>k(e.bridgeId,t.name,t.enabled?`disable`:`enable`),children:t.enabled?(0,W.jsx)(Khe,{}):(0,W.jsx)(Ghe,{})})})]}),children:[(0,W.jsx)(fy,{children:(0,W.jsx)(mE,{color:t.enabled?`primary`:`disabled`})}),(0,W.jsx)(my,{primary:(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[t.name,(0,W.jsx)(Pv,{label:`v${t.version}`,size:`small`,variant:`outlined`}),t.source===`builtin`&&(0,W.jsx)(Pv,{label:`built-in`,size:`small`}),!t.enabled&&(0,W.jsx)(Pv,{label:`disabled`,size:`small`,color:`warning`}),t.circuitBreaker?.disabled&&(0,W.jsx)(Pv,{label:`circuit breaker open`,size:`small`,color:`error`})]}),secondary:t.devices.length>0?`${t.devices.length} device(s)`:`No devices registered`})]}),t.circuitBreaker?.disabled&&t.circuitBreaker.lastError&&(0,W.jsx)(Gh,{severity:`error`,sx:{mx:2,mb:1},children:t.circuitBreaker.lastError}),t.devices.length>0&&(0,W.jsx)(oy,{dense:!0,sx:{pl:6},children:t.devices.map(e=>(0,W.jsx)(uy,{children:(0,W.jsx)(my,{primary:e.name,secondary:`${e.deviceType}, ${e.id}`})},e.id))}),(0,W.jsx)(Zb,{})]},t.name))})]})},e.bridgeId)),(0,W.jsxs)(Kb,{open:c,onClose:()=>l(!1),maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Yb,{children:`Install Plugin`}),(0,W.jsxs)(Jb,{children:[(0,W.jsxs)(k2e,{value:u,onChange:(e,t)=>{d(t),x(void 0)},sx:{mb:2},children:[(0,W.jsx)(R7,{label:`npm`}),(0,W.jsx)(R7,{label:`Upload .tgz`}),(0,W.jsx)(R7,{label:`Local Path`})]}),u===0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(PS,{autoFocus:!0,margin:`dense`,label:`npm package name`,placeholder:`e.g. hamh-plugin-example`,fullWidth:!0,value:f,onChange:e=>{p(e.target.value),x(void 0)},disabled:v,error:!!b,helperText:b,onKeyDown:e=>{e.key===`Enter`&&T()}}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`The plugin will be installed via npm. After installation, restart the bridge to load the plugin.`})]}),u===1&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Z,{variant:`outlined`,component:`label`,startIcon:(0,W.jsx)(FE,{}),fullWidth:!0,sx:{mt:1},disabled:v,children:[g?g.name:`Choose .tgz file`,(0,W.jsx)(`input`,{ref:S,type:`file`,accept:`.tgz,application/gzip`,hidden:!0,onChange:e=>{_(e.target.files?.[0]??null),x(void 0)}})]}),b&&(0,W.jsx)(NS,{error:!0,sx:{mt:1},children:b}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`Upload a packaged plugin (.tgz). Restart the bridge after installation.`})]}),u===2&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(PS,{autoFocus:!0,margin:`dense`,label:`Absolute path to plugin folder`,placeholder:`/path/to/your/plugin`,fullWidth:!0,value:m,onChange:e=>{h(e.target.value),x(void 0)},disabled:v,error:!!b,helperText:b,InputProps:{startAdornment:(0,W.jsx)(Phe,{sx:{mr:1}})},onKeyDown:e=>{e.key===`Enter`&&D()}}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`Link a local plugin directory (creates a symlink). Useful for development. Restart the bridge after linking.`})]})]}),(0,W.jsxs)(qb,{children:[(0,W.jsx)(Z,{onClick:()=>l(!1),disabled:v,children:`Cancel`}),u===0&&(0,W.jsx)(Z,{onClick:T,variant:`contained`,disabled:v||!f.trim(),children:v?(0,W.jsx)(Bh,{size:20}):`Install`}),u===1&&(0,W.jsx)(Z,{onClick:E,variant:`contained`,disabled:v||!g,children:v?(0,W.jsx)(Bh,{size:20}):`Upload`}),u===2&&(0,W.jsx)(Z,{onClick:D,variant:`contained`,disabled:v||!m.trim(),children:v?(0,W.jsx)(Bh,{size:20}):`Link`})]})]})]})};async function j2e(){let e=await fetch(`api/settings/auth`);return await B_(e,`Failed to fetch auth settings`),z_(e)}async function M2e(e,t){let n=await fetch(`api/settings/auth`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({username:e,password:t})});return await B_(n,`Failed to update auth settings`),z_(n)}async function N2e(){let e=await fetch(`api/settings/auth`,{method:`DELETE`});return await B_(e,`Failed to delete auth settings`),z_(e)}async function P2e(){let e=await fetch(`api/settings/recovery`);return await B_(e,`Failed to fetch recovery settings`),z_(e)}async function F2e(e){let t=await fetch(`api/settings/recovery`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return await B_(t,`Failed to update recovery settings`),z_(t)}var I2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(null),s=(0,C.useCallback)(async()=>{i(!0),o(null);try{let t=await fetch(`api/system/update-check`);t.ok?n(await t.json()):t.status===404?o(e(`updateChecker.notAvailable`)):o(e(`updateChecker.checkFailed`))}catch{o(e(`updateChecker.unreachable`))}finally{i(!1)}},[e]);return(0,C.useEffect)(()=>{s()},[s]),(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2},children:[(0,W.jsxs)(Q,{variant:`h6`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Whe,{}),e(`updateChecker.title`)]}),(0,W.jsx)(Z,{size:`small`,startIcon:r?(0,W.jsx)(Bh,{size:16}):(0,W.jsx)(wE,{}),onClick:s,disabled:r,children:e(`updateChecker.checkNow`)})]}),a&&(0,W.jsx)(Gh,{severity:`warning`,sx:{mb:2},children:a}),t&&(0,W.jsxs)(Yv,{spacing:2,children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[e(`updateChecker.currentVersion`),`:`]}),(0,W.jsx)(Pv,{label:t.currentVersion,size:`small`,color:`primary`})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[e(`updateChecker.latestVersion`),`:`]}),(0,W.jsx)(Pv,{label:t.latestVersion,size:`small`,color:t.updateAvailable?`warning`:`success`})]}),t.updateAvailable?(0,W.jsxs)(Gh,{severity:`info`,action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,endIcon:(0,W.jsx)(xE,{}),href:t.releaseUrl,target:`_blank`,rel:`noopener noreferrer`,children:e(`updateChecker.releaseNotes`)}),children:[(0,W.jsx)(Q,{variant:`body2`,sx:{fontWeight:600},children:e(`updateChecker.updateAvailable`)}),(0,W.jsx)(Q,{variant:`body2`,children:(t=>{switch(t){case`Home Assistant Add-on`:return e(`updateChecker.instructionAddon`);case`Docker`:return e(`updateChecker.instructionDocker`);default:return e(`updateChecker.instructionNpm`)}})(t.environment)})]}):(0,W.jsx)(Gh,{severity:`success`,children:e(`updateChecker.upToDate`)}),t.releaseNotes&&t.updateAvailable&&(0,W.jsx)(X,{sx:{p:1.5,borderRadius:1,bgcolor:`action.hover`,maxHeight:400,overflow:`auto`},children:(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{whiteSpace:`pre-wrap`},children:t.releaseNotes})})]})]})})},G7=10,K7=3600,L2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(60),[a,o]=(0,C.useState)(!0),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null);return(0,C.useEffect)(()=>{P2e().then(e=>{n(e.autoRecoveryEnabled),i(Math.round(e.recoveryIntervalMs/1e3))}).catch(e=>u(e instanceof Error?e.message:String(e))).finally(()=>o(!1))},[]),(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:e(`settings.recovery.title`,`Auto recovery`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`settings.recovery.hint`,`Periodically restarts bridges that failed to start. Only failed bridges are touched.`)}),l&&(0,W.jsx)(Gh,{severity:`error`,sx:{mb:2},children:l}),a?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:2},children:(0,W.jsx)(Bh,{})}):(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,W.jsx)(Vv,{control:(0,W.jsx)(eC,{checked:t,onChange:e=>n(e.target.checked)}),label:e(`settings.recovery.enabled`,`Enabled`)}),(0,W.jsx)(PS,{type:`number`,size:`small`,label:e(`settings.recovery.interval`,`Interval (seconds)`),value:r,disabled:!t,onChange:e=>i(Number(e.target.value)),slotProps:{htmlInput:{min:G7,max:K7}},sx:{maxWidth:220}}),(0,W.jsx)(X,{children:(0,W.jsx)(Z,{variant:`contained`,onClick:async()=>{c(!0),u(null);try{let e=await F2e({autoRecoveryEnabled:t,recoveryIntervalMs:r*1e3});n(e.autoRecoveryEnabled),i(Math.round(e.recoveryIntervalMs/1e3))}catch(e){u(e instanceof Error?e.message:String(e))}finally{c(!1)}},disabled:s||Number.isNaN(r)||r<G7||r>K7,children:e(`common.save`,`Save`)})})]})]})})},R2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(null),[l,u]=(0,C.useState)(null),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),h=(0,C.useCallback)(async()=>{i(!0);try{let e=await j2e();n(e),e.username&&f(e.username),c(null)}catch(t){c(t instanceof Error?t.message:e(`settings.authLoadFailed`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{h()},[h]);let g=async()=>{if(!d.trim()||!p.trim()){c(e(`settings.usernamePasswordRequired`));return}o(!0),c(null),u(null);try{n(await M2e(d.trim(),p)),m(``),u(`Authentication enabled. The browser will prompt you to log in on the next request.`)}catch(t){c(t instanceof Error?t.message:e(`settings.authSaveFailed`))}finally{o(!1)}},[_,v]=(0,C.useState)(!1),y=async()=>{v(!1),o(!0),c(null),u(null);try{n(await N2e()),f(``),m(``),u(e(`settings.authDisabled`))}catch(t){c(t instanceof Error?t.message:e(`settings.authRemoveFailed`))}finally{o(!1)}},b=t?.source===`environment`;return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,sx:{mb:3},children:[(0,W.jsx)(UT,{sx:{mr:1,verticalAlign:`middle`}}),e(`settings.title`)]}),(0,W.jsx)(t4,{}),(0,W.jsx)(Zb,{sx:{my:3}}),(0,W.jsx)(I2e,{}),(0,W.jsx)(Zb,{sx:{my:3}}),(0,W.jsx)(L2e,{}),(0,W.jsx)(Zb,{sx:{my:3}}),r?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Bh,{})}):(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:2},children:[(0,W.jsx)(kE,{sx:{mr:1,verticalAlign:`middle`,fontSize:20}}),e(`settings.title`)]}),b&&(0,W.jsxs)(Gh,{severity:`info`,sx:{mb:2},children:[`Authentication is configured via environment variables (`,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_USERNAME`}),` /`,` `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_PASSWORD`}),`). Remove the environment variables to manage authentication from here.`]}),s&&(0,W.jsx)(Gh,{severity:`error`,sx:{mb:2},children:s}),l&&(0,W.jsx)(Gh,{severity:`success`,sx:{mb:2},children:l}),t?.enabled&&!b&&(0,W.jsxs)(Gh,{severity:`info`,sx:{mb:2},children:[`Authentication is currently enabled for user "`,t.username,`". Enter a new password to change it, or remove authentication entirely.`]}),(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:2,maxWidth:400},children:[(0,W.jsx)(PS,{label:e(`settings.username`),value:d,onChange:e=>f(e.target.value),disabled:b||a,fullWidth:!0,size:`small`}),(0,W.jsx)(PS,{label:e(`settings.password`),type:`password`,value:p,onChange:e=>m(e.target.value),disabled:b||a,fullWidth:!0,size:`small`,placeholder:t?.enabled&&!b?e(`settings.enterNewPassword`):``}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:1},children:[(0,W.jsx)(Z,{variant:`contained`,onClick:g,disabled:b||a||!d.trim()||!p.trim(),startIcon:a?(0,W.jsx)(Bh,{size:16}):(0,W.jsx)(DE,{}),children:t?.enabled&&!b?e(`common.update`):e(`settings.enableAuth`)}),t?.enabled&&!b&&(0,W.jsx)(Z,{variant:`outlined`,color:`error`,onClick:()=>v(!0),disabled:a,startIcon:(0,W.jsx)(KS,{}),children:e(`common.disabled`)})]})]}),(0,W.jsxs)(Gh,{severity:`warning`,sx:{mt:3},children:[`If you get locked out, delete the settings from the storage directory or set `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_USERNAME`}),` /`,` `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_PASSWORD`}),` environment variables in your Docker Compose file to regain access.`]})]})}),(0,W.jsx)(eE,{open:_,title:e(`settings.disableAuth`),message:e(`settings.disableAuthMessage`),confirmLabel:e(`settings.disableAuthConfirm`),confirmColor:`error`,onConfirm:y,onCancel:()=>v(!1)})]})};function z2e(e){let t=e.filter?.include??[];if(t.length!==0)return t.map(e=>e.type===sv.Pattern?e.value:`${e.type}: ${e.value}`).join(`, `)}var q7=/^[a-z0-9_]+\.[a-z0-9_]+$/,B2e=10;function J7(e){return e?.message}var V2e=()=>{let{t:e}=_s(),t=ey(),n=nv(),{content:r,isLoading:i}=KT(),a=YT(),o=XT(),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(``),d=(0,C.useRef)(0),[f,p]=(0,C.useState)([{key:0,value:``}]),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(null),v=f.map(e=>e.value.trim()),y=v.filter(e=>e!==``),b=e=>{let t=v[e];return t===``?!1:q7.test(t)?v.indexOf(t)!==e:!0},x=y.length>0&&f.every((e,t)=>!b(t)),S=(r??[]).filter(e=>e.featureFlags?.serverMode===!0),w=(0,C.useCallback)(async()=>{let r=l.trim(),i=f.map(e=>e.value.trim()).filter(e=>e!==``);if(!(!r||i.length===0||i.some(e=>!q7.test(e))||new Set(i).size!==i.length)){h(!0);try{await a({name:r,filter:{include:i.map(e=>({type:sv.Pattern,value:e})),exclude:[]},featureFlags:{serverMode:!0}}),t.show({message:e(`standaloneDevices.created`,`Standalone device created`),severity:`success`}),c(!1),u(``),p([{key:0,value:``}]),n(Y_())}catch(n){t.show({message:J7(n)??e(`standaloneDevices.createFailed`,`Could not create device`),severity:`error`})}finally{h(!1)}}},[l,f,a,t,e,n]),T=(0,C.useCallback)(async r=>{try{await o(r.id),t.show({message:e(`standaloneDevices.deleted`,`Standalone device deleted`),severity:`success`}),n(Y_())}catch(n){t.show({message:J7(n)??e(`standaloneDevices.deleteFailed`,`Could not delete device`),severity:`error`})}},[o,t,e,n]);return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:1},children:[(0,W.jsx)(Q,{variant:`h5`,component:`h1`,children:e(`standaloneDevices.title`,`Standalone Devices`)}),(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(bb,{}),onClick:()=>c(!0),children:e(`standaloneDevices.create`,`Add device`)})]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`standaloneDevices.subtitle`,`Each device runs on its own Matter node with its own pairing code, instead of inside a bridge.`)}),i&&!r?(0,W.jsx)(Bh,{}):S.length===0?(0,W.jsx)(Gh,{severity:`info`,children:e(`standaloneDevices.empty`,`No standalone devices yet. Add one to expose a single entity as its own Matter device.`)}):(0,W.jsx)(Yv,{spacing:1,children:S.map(t=>(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:2},children:[(0,W.jsxs)(X,{sx:{minWidth:0},children:[(0,W.jsx)(Q,{variant:`subtitle1`,noWrap:!0,children:t.name}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,noWrap:!0,children:z2e(t)??e(`standaloneDevices.noEntity`,`no entity`)})]}),(0,W.jsxs)(Yv,{direction:`row`,spacing:1,alignItems:`center`,children:[(t.failedEntities?.length??0)>0&&(0,W.jsx)(yb,{title:t.failedEntities?.map(e=>e.reason).join(` `)??``,children:(0,W.jsx)(Pv,{size:`small`,color:`warning`,label:e(`standaloneDevices.entityProblem`,`entity problem`)})}),(0,W.jsx)(Mx,{status:t.status,reason:t.statusReason}),(0,W.jsx)(yb,{title:e(`standaloneDevices.openBridge`,`Open details and pairing`),children:(0,W.jsx)(Hh,{component:ra,to:Y9.bridge(t.id),size:`small`,children:(0,W.jsx)(zhe,{fontSize:`small`})})}),(0,W.jsx)(yb,{title:e(`common.delete`,`Delete`),children:(0,W.jsx)(Hh,{onClick:()=>_(t),size:`small`,color:`error`,children:(0,W.jsx)(fE,{fontSize:`small`})})})]})]})},t.id))}),(0,W.jsxs)(Kb,{open:s,onClose:()=>{m||c(!1)},fullWidth:!0,maxWidth:`sm`,children:[(0,W.jsx)(Yb,{children:e(`standaloneDevices.create`,`Add device`)}),(0,W.jsxs)(Jb,{children:[(0,W.jsx)(PS,{label:e(`standaloneDevices.name`,`Name`),value:l,onChange:e=>u(e.target.value),fullWidth:!0,margin:`normal`,slotProps:{htmlInput:{maxLength:32}}}),f.map((t,n)=>(0,W.jsxs)(X,{sx:{display:`flex`,gap:1,alignItems:`flex-start`},children:[(0,W.jsx)(X,{sx:{flexGrow:1},children:(0,W.jsx)(iC,{value:t.value,onChange:e=>{p(n=>n.map(n=>n.key===t.key?{...n,value:e}:n))},label:n===0?e(`standaloneDevices.entity`,`Entity`):e(`standaloneDevices.additionalEntity`,`Additional entity`),helperText:b(n)?e(`standaloneDevices.entityInvalid`,`Enter a single entity id like vacuum.living_room, wildcards are not allowed.`):n===0?e(`standaloneDevices.entityHelp`,`Pick the Home Assistant entity to expose.`):void 0})}),f.length>1&&(0,W.jsx)(Hh,{size:`small`,sx:{mt:3},onClick:()=>p(e=>e.filter(e=>e.key!==t.key)),children:(0,W.jsx)(fE,{fontSize:`small`})})]},t.key)),(0,W.jsx)(Z,{size:`small`,startIcon:(0,W.jsx)(bb,{}),disabled:f.length>=B2e,onClick:()=>{d.current+=1,p(e=>[...e,{key:d.current,value:``}])},children:e(`standaloneDevices.addEntity`,`Add another entity`)}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mt:1},children:e(`standaloneDevices.multiHint`,`The first entity is the primary and names the device. More than one entity per device is experimental.`)})]}),(0,W.jsxs)(qb,{children:[(0,W.jsx)(Z,{onClick:()=>c(!1),disabled:m,children:e(`common.cancel`,`Cancel`)}),(0,W.jsx)(Z,{onClick:w,variant:`contained`,disabled:m||!l.trim()||!x,children:m?e(`standaloneDevices.creating`,`Creating`):e(`common.create`,`Create`)})]})]}),(0,W.jsx)(eE,{open:g!==null,title:e(`standaloneDevices.confirmDeleteTitle`,`Delete standalone device`),message:e(`standaloneDevices.confirmDeleteMessage`,`This deletes the device's Matter node and unpairs it from your controllers. This cannot be undone.`),confirmLabel:e(`common.delete`,`Delete`),cancelLabel:e(`common.cancel`,`Cancel`),confirmColor:`error`,onConfirm:()=>{let e=g;_(null),e&&T(e)},onCancel:()=>_(null)})]})};function H2e(){var e=[...arguments];return(0,C.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var Y7=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function X7(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function Z7(e){return`nodeType`in e}function Q7(e){return e?X7(e)?e:Z7(e)?e.ownerDocument?.defaultView??window:window:window}function $7(e){let{Document:t}=Q7(e);return e instanceof t}function e9(e){return X7(e)?!1:e instanceof Q7(e).HTMLElement}function t9(e){return e instanceof Q7(e).SVGElement}function n9(e){return e?X7(e)?e.document:Z7(e)?$7(e)?e:e9(e)||t9(e)?e.ownerDocument:document:document:document}var r9=Y7?C.useLayoutEffect:C.useEffect;function i9(e){let t=(0,C.useRef)(e);return r9(()=>{t.current=e}),(0,C.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function U2e(){let e=(0,C.useRef)(null);return[(0,C.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,C.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function a9(e,t){t===void 0&&(t=[e]);let n=(0,C.useRef)(e);return r9(()=>{n.current!==e&&(n.current=e)},t),n}function o9(e,t){let n=(0,C.useRef)();return(0,C.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function s9(e){let t=i9(e),n=(0,C.useRef)(null);return[n,(0,C.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function c9(e){let t=(0,C.useRef)();return(0,C.useEffect)(()=>{t.current=e},[e]),t.current}var l9={};function u9(e,t){return(0,C.useMemo)(()=>{if(t)return t;let n=l9[e]==null?0:l9[e]+1;return l9[e]=n,e+`-`+n},[e,t])}function d9(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var f9=d9(1),p9=d9(-1);function W2e(e){return`clientX`in e&&`clientY`in e}function m9(e){if(!e)return!1;let{KeyboardEvent:t}=Q7(e.target);return t&&e instanceof t}function G2e(e){if(!e)return!1;let{TouchEvent:t}=Q7(e.target);return t&&e instanceof t}function h9(e){if(G2e(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return W2e(e)?{x:e.clientX,y:e.clientY}:null}var g9=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[g9.Translate.toString(e),g9.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),_9=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function K2e(e){return e.matches(_9)?e:e.querySelector(_9)}var q2e={display:`none`};function J2e(e){let{id:t,value:n}=e;return C.createElement(`div`,{id:t,style:q2e},n)}function Y2e(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return C.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function X2e(){let[e,t]=(0,C.useState)(``);return{announce:(0,C.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var v9=(0,C.createContext)(null);function Z2e(e){let t=(0,C.useContext)(v9);(0,C.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function Q2e(){let[e]=(0,C.useState)(()=>new Set),t=(0,C.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,C.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var $2e={draggable:`
462
+ M${T.x},${T.y}h${T.width}v${T.height}h${-T.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}I7.displayName=`MiniMap`;var e2e=(0,C.memo)(I7),t2e=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,n2e={[r5.Line]:`right`,[r5.Handle]:`bottom-right`};function r2e({nodeId:e,position:t,variant:n=r5.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:s=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:p=!0,shouldResize:m,onResizeStart:h,onResize:g,onResizeEnd:_}){let v=Z5(),y=typeof e==`string`?e:v,b=_5(),x=(0,C.useRef)(null),S=n===r5.Handle,w=g5((0,C.useCallback)(t2e(S&&p),[S,p]),p5),T=(0,C.useRef)(null),E=t??n2e[n];return(0,C.useEffect)(()=>{if(!(!x.current||!y))return T.current||=R$e({domNode:x.current,nodeId:y,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=b.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=b.getState(),o=[],s={x:e.x,y:e.y},c=r.get(y);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=B8([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...u8({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:y,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:y,type:`dimensions`,resizing:!0,setAttributes:f?f===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:y,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};b.getState().triggerNodeChanges([n])}}),T.current.update({controlPosition:E,boundaries:{minWidth:s,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:g,onResizeEnd:_,shouldResize:m}),()=>{T.current?.destroy()}},[E,s,c,l,u,d,h,g,_,m]),(0,W.jsx)(`div`,{className:v4([`react-flow__resize-control`,`nodrag`,...E.split(`-`),n,r]),ref:x,style:{...i,scale:w,...o&&{[S?`backgroundColor`:`borderColor`]:o}},children:a})}(0,C.memo)(r2e);function i2e(e){return{running:{color:e?`#81c784`:`#2e7d32`,bg:e?`#1b3a1b`:`#e8f5e9`,border:`#4caf50`,Icon:vv},starting:{color:e?`#ffb74d`:`#ed6c02`,bg:e?`#3a2a10`:`#fff3e0`,border:`#ff9800`,Icon:Lhe},stopped:{color:e?`#bdbdbd`:`#757575`,bg:e?`#2a2a2a`:`#f5f5f5`,border:e?`#616161`:`#bdbdbd`,Icon:Xhe},failed:{color:e?`#ef5350`:`#d32f2f`,bg:e?`#3a1515`:`#ffebee`,border:`#f44336`,Icon:jx}}}var a2e={hub:({data:e})=>{let{label:t,bridgeCount:n,deviceCount:r}=e,i=Em(),a=i.palette.primary.main,o=i.palette.primary.dark;return(0,W.jsxs)(X,{sx:{background:`linear-gradient(135deg, ${a}, ${o})`,borderRadius:`50%`,width:120,height:120,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,color:i.palette.primary.contrastText,boxShadow:`0 4px 20px ${i.palette.mode===`dark`?`rgba(0,0,0,0.5)`:`rgba(25,118,210,0.4)`}`,border:`3px solid rgba(255,255,255,0.3)`},children:[(0,W.jsx)(_E,{sx:{fontSize:32,mb:.5}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:700,lineHeight:1.1,children:t}),(0,W.jsxs)(Q,{variant:`caption`,sx:{opacity:.8,fontSize:`0.65rem`},children:[n,` bridges · `,r,` devices`]}),(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Left,style:{opacity:0},id:`left`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`})]})},bridge:({data:e})=>{let{label:t,status:n,port:r,deviceCount:i,failedCount:a,fabricCount:o}=e,{mode:s}=Im(),c=i2e(s===`dark`),l=c[n]??c.stopped,{Icon:u}=l;return(0,W.jsxs)(X,{sx:{background:l.bg,border:`2px solid ${l.border}`,borderRadius:2,px:2,py:1.5,minWidth:180,maxWidth:220,boxShadow:`0 2px 12px rgba(0,0,0,0.08)`},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:.5},children:[(0,W.jsx)(u,{sx:{fontSize:16,color:l.color}}),(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:700,noWrap:!0,sx:{color:l.color},children:t})]}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,children:[`Port `,r]}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:.5,mt:.5,flexWrap:`wrap`},children:[(0,W.jsx)(Pv,{label:`${i} devices`,size:`small`,sx:{fontSize:`0.65rem`,height:20}}),o>0&&(0,W.jsx)(Pv,{label:`${o} fabrics`,size:`small`,color:`primary`,variant:`outlined`,sx:{fontSize:`0.65rem`,height:20}}),a>0&&(0,W.jsx)(Pv,{label:`${a} failed`,size:`small`,color:`error`,sx:{fontSize:`0.65rem`,height:20}})]})]})},device:({data:e})=>{let{label:t,deviceType:n}=e;return(0,W.jsxs)(X,{sx:{background:e=>e.palette.background.paper,border:`1px solid`,borderColor:`divider`,borderRadius:1.5,px:1.5,py:1,minWidth:150,maxWidth:200,boxShadow:`0 1px 6px rgba(0,0,0,0.06)`},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(Sb,{sx:{fontSize:14,color:`text.secondary`}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:600,noWrap:!0,sx:{maxWidth:160},children:t})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,sx:{fontSize:`0.6rem`,mt:.25},noWrap:!0,children:n})]})},fabric:({data:e})=>{let{label:t,vendorId:n}=e,r=Em(),i=kx(n)===`Vendor ${n}`?t||`Vendor ${n}`:kx(n);return(0,W.jsxs)(X,{sx:{background:`linear-gradient(135deg, ${r.palette.secondary.dark}, ${r.palette.secondary.main})`,borderRadius:2,px:1.5,py:1,minWidth:140,color:r.palette.secondary.contrastText,boxShadow:`0 2px 12px ${r.palette.mode===`dark`?`rgba(0,0,0,0.4)`:`rgba(123,31,162,0.3)`}`},children:[(0,W.jsx)(Q5,{type:`source`,position:M6.Right,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`source`,position:M6.Bottom,style:{opacity:0},id:`bottom`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(She,{sx:{fontSize:16}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:700,children:i})]}),t&&t!==i&&(0,W.jsx)(Q,{variant:`caption`,display:`block`,sx:{opacity:.8,fontSize:`0.6rem`},children:t})]})},failed:({data:e})=>{let{label:t,reason:n}=e,{mode:r}=Im(),i=r===`dark`,a=i?`#ef5350`:`#d32f2f`;return(0,W.jsxs)(X,{sx:{background:i?`#3a1515`:`#ffebee`,border:`1px dashed #f44336`,borderRadius:1.5,px:1.5,py:1,minWidth:150,maxWidth:200,opacity:.85},children:[(0,W.jsx)(Q5,{type:`target`,position:M6.Left,style:{opacity:0}}),(0,W.jsx)(Q5,{type:`target`,position:M6.Top,style:{opacity:0},id:`top`}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(wb,{sx:{fontSize:14,color:a}}),(0,W.jsx)(Q,{variant:`caption`,fontWeight:600,noWrap:!0,sx:{maxWidth:160,color:a},children:t})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,sx:{fontSize:`0.6rem`,mt:.25},noWrap:!0,title:n,children:n})]})}};function o2e(e,t,n,r){let i=[],a=[],o=e.reduce((e,t)=>e+t.deviceCount,0),s=new Map,c=e.map(e=>{let r=t[e.id],i=r?Rx(r).filter(e=>e.endpoint!==0):[],a=e.failedEntities?.length??0,o=i.length+a,s=Math.min(o,n.devicesPerColumn);return{bridge:e,devices:i,height:Math.max(n.minBridgeSpacingY,s*n.deviceSpacingY+80)}}),l=c.reduce((e,t)=>e+t.height,0)/2;i.push({id:`hub`,type:`hub`,position:{x:n.hubX,y:l-60},data:{label:`HAMH`,bridgeCount:e.length,deviceCount:o}});let u=0;c.forEach(({bridge:e,devices:t,height:o})=>{let c=`bridge-${e.id}`,l=u+o/2,d=n.hubX+n.bridgeOffsetX,f=e.commissioning?.fabrics?.length??0,p=e.failedEntities?.length??0;if(i.push({id:c,type:`bridge`,position:{x:d,y:l-30},data:{label:e.name,status:e.status,port:e.port,deviceCount:e.deviceCount,failedCount:p,fabricCount:f}}),a.push({id:`hub-${c}`,source:`hub`,target:c,type:`smoothstep`,animated:e.status===`running`,style:{stroke:e.status===`running`?r.running:r.inactive,strokeWidth:2}}),e.commissioning?.fabrics)for(let t of e.commissioning.fabrics){let n=s.get(t.rootVendorId);n?n.bridgeIds.includes(e.id)||n.bridgeIds.push(e.id):s.set(t.rootVendorId,{vendorId:t.rootVendorId,label:t.label,bridgeIds:[e.id]})}let m=e.failedEntities??[],h=t.length+m.length,g=l-Math.min(h,n.devicesPerColumn)*n.deviceSpacingY/2,_=d+n.deviceOffsetX;t.forEach((t,o)=>{let s=Math.floor(o/n.devicesPerColumn),l=o%n.devicesPerColumn,u=`device-${e.id}-${t.id.global}`,d=zx(t.state)??t.id.local;i.push({id:u,type:`device`,position:{x:_+s*n.deviceColumnSpacingX,y:g+l*n.deviceSpacingY},data:{label:d,deviceType:t.type.name,entityId:t.id.local}}),a.push({id:`${c}-${u}`,source:c,target:u,type:`smoothstep`,style:{stroke:r.device,strokeWidth:1}})}),m.forEach((o,s)=>{let l=t.length+s,u=Math.floor(l/n.devicesPerColumn),d=l%n.devicesPerColumn,f=`failed-${e.id}-${o.entityId}`;i.push({id:f,type:`failed`,position:{x:_+u*n.deviceColumnSpacingX,y:g+d*n.deviceSpacingY},data:{label:o.entityId,reason:o.reason}}),a.push({id:`${c}-${f}`,source:c,target:f,type:`smoothstep`,style:{stroke:r.failed,strokeWidth:1,strokeDasharray:`5,5`}})}),u+=o});let d=Array.from(s.values()),f=l-(d.length-1)*120/2;return d.forEach((e,t)=>{let o=`fabric-${e.vendorId}`;i.push({id:o,type:`fabric`,position:{x:n.hubX+n.fabricOffsetX,y:f+t*120},data:{label:e.label,vendorId:e.vendorId}});for(let t of e.bridgeIds)a.push({id:`${o}-bridge-${t}`,source:o,target:`bridge-${t}`,type:`smoothstep`,animated:!0,style:{stroke:r.fabric,strokeWidth:1.5}})}),{nodes:i,edges:a}}var s2e=()=>{let{t:e}=_s(),t=nv(),{content:n,isLoading:r}=KT(),i=rv(e=>e.devices.byBridge),[a,o,s]=O0e([]),[c,l,u]=k0e([]),[d,f]=(0,C.useState)(!1),{mode:p}=Im(),m=p===`dark`,h=(0,C.useRef)([]),[g,_]=(0,C.useState)(!1);(0,C.useEffect)(()=>{t(Y_())},[t]),(0,C.useEffect)(()=>{if(n)for(let e of n)t(ZT(e.id))},[t,n]);let v=(0,C.useMemo)(()=>{let e={};if(n)for(let t of n)e[t.id]=i[t.id]?.content;return e},[n,i]),y=(0,C.useMemo)(()=>!n||n.length===0?!0:n.every(e=>i[e.id]?.isInitialized),[n,i]);(0,C.useEffect)(()=>{if(!n||!y)return;let e=o2e(n,v,{hubX:400,minBridgeSpacingY:200,deviceSpacingY:55,devicesPerColumn:10,deviceColumnSpacingX:220,fabricOffsetX:-350,bridgeOffsetX:250,deviceOffsetX:280},{running:m?`#81c784`:`#4caf50`,inactive:m?`#616161`:`#bdbdbd`,device:m?`#90caf9`:`#64b5f6`,failed:m?`#ef5350`:`#f44336`,fabric:m?`#ce93d8`:`#ab47bc`});try{let t=localStorage.getItem(`hamh-network-map-positions`);if(t){let n=JSON.parse(t);for(let t of e.nodes)n[t.id]&&(t.position=n[t.id])}}catch{}o(e.nodes),l(e.edges)},[n,v,y,o,l,m]);let b=(0,C.useCallback)(()=>{t(Y_())},[t]),x=(0,C.useCallback)((e,t)=>{let n=a.find(e=>e.id===t.id);n&&(h.current.push({nodeId:t.id,position:{...n.position}}),_(!0));let r=`hamh-network-map-positions`;try{let e=localStorage.getItem(r),n=e?JSON.parse(e):{};n[t.id]={x:t.position.x,y:t.position.y},localStorage.setItem(r,JSON.stringify(n))}catch{}},[a]),S=(0,C.useCallback)(()=>{localStorage.removeItem(`hamh-network-map-positions`),h.current=[],_(!1),t(Y_())},[t]),w=(0,C.useCallback)(()=>{let e=h.current.pop();if(!e)return;_(h.current.length>0),o(t=>t.map(t=>t.id===e.nodeId?{...t,position:e.position}:t));let t=`hamh-network-map-positions`;try{let n=localStorage.getItem(t),r=n?JSON.parse(n):{};r[e.nodeId]=e.position,localStorage.setItem(t,JSON.stringify(r))}catch{}},[o]),T=r||!y;return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2},children:[(0,W.jsxs)(Q,{variant:`h4`,sx:{display:`flex`,alignItems:`center`,gap:2},children:[(0,W.jsx)(rE,{}),e(`networkMap.title`)]}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:.5},children:[(0,W.jsx)(yb,{title:e(`networkMap.undoMove`),children:(0,W.jsx)(`span`,{children:(0,W.jsx)(Hh,{onClick:w,color:`primary`,disabled:!g,children:(0,W.jsx)(nge,{})})})}),(0,W.jsx)(yb,{title:e(`networkMap.resetLayout`),children:(0,W.jsx)(Hh,{onClick:S,color:`primary`,children:(0,W.jsx)(TE,{})})}),(0,W.jsx)(yb,{title:e(`networkMap.refreshData`),children:(0,W.jsx)(Hh,{onClick:b,color:`primary`,children:(0,W.jsx)(wE,{})})}),(0,W.jsx)(yb,{title:e(d?`networkMap.exitFullscreen`:`networkMap.fullscreen`),children:(0,W.jsx)(Hh,{onClick:()=>f(e=>!e),color:`primary`,children:d?(0,W.jsx)(Ihe,{}):(0,W.jsx)(Fhe,{})})})]})]}),T?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:8},children:(0,W.jsx)(Bh,{})}):(0,W.jsx)(X,{sx:{width:`100%`,height:d?`calc(100vh - 100px)`:600,border:`1px solid`,borderColor:`divider`,borderRadius:2,overflow:`hidden`,transition:`height 0.3s ease`},children:(0,W.jsxs)(D0e,{nodes:a,edges:c,onNodesChange:s,onEdgesChange:u,onNodeDragStop:x,nodeTypes:a2e,colorMode:m?`dark`:`light`,fitView:!0,fitViewOptions:{padding:.2},minZoom:.1,maxZoom:2,proOptions:{hideAttribution:!0},children:[(0,W.jsx)(P0e,{variant:j7.Dots,gap:20,size:1}),(0,W.jsx)(V0e,{}),(0,W.jsx)(e2e,{nodeStrokeWidth:3,zoomable:!0,pannable:!0,nodeColor:e=>{switch(e.type){case`hub`:return`#1976d2`;case`bridge`:return`#4caf50`;case`fabric`:return`#9c27b0`;case`failed`:return`#f44336`;default:return m?`#90caf9`:`#90a4ae`}},style:{borderRadius:8}})]})}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:3,mt:2,flexWrap:`wrap`,alignItems:`center`},children:[(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,fontWeight:600,children:[e(`networkMap.legend`),`:`]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:`50%`,background:`linear-gradient(135deg, #7b1fa2, #9c27b0)`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.controller`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:`50%`,background:`linear-gradient(135deg, #1976d2, #1565c0)`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.hub`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#1b3a1b`:`#e8f5e9`,border:`1px solid #4caf50`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.bridge`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#2a2a2a`:`#fff`,border:`1px solid ${m?`#616161`:`#bdbdbd`}`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.device`)})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(X,{sx:{width:12,height:12,borderRadius:.5,background:m?`#3a1515`:`#ffebee`,border:`1px dashed #f44336`}}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:e(`networkMap.failed`)})]})]})]})};function c2e(e){return Vd(`MuiTab`,e)}var L7=Hd(`MuiTab`,[`root`,`labelIcon`,`textColorInherit`,`textColorPrimary`,`textColorSecondary`,`selected`,`disabled`,`fullWidth`,`wrapped`,`iconWrapper`,`icon`]),l2e=e=>{let{classes:t,textColor:n,fullWidth:r,wrapped:i,icon:a,label:o,selected:s,disabled:c}=e;return _p({root:[`root`,a&&o&&`labelIcon`,`textColor${J(n)}`,r&&`fullWidth`,i&&`wrapped`,s&&`selected`,c&&`disabled`],icon:[`iconWrapper`,`icon`]},c2e,t)},u2e=q(Fh,{name:`MuiTab`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${J(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{[`& .${L7.iconWrapper}`]:t.iconWrapper},{[`& .${L7.icon}`]:t.icon}]}})(Lm(({theme:e})=>({...e.typography.button,maxWidth:360,minWidth:90,position:`relative`,minHeight:48,flexShrink:0,padding:`12px 16px`,overflow:`hidden`,whiteSpace:`normal`,textAlign:`center`,lineHeight:1.25,variants:[{props:({ownerState:e})=>e.label&&(e.iconPosition===`top`||e.iconPosition===`bottom`),style:{flexDirection:`column`}},{props:({ownerState:e})=>e.label&&e.iconPosition!==`top`&&e.iconPosition!==`bottom`,style:{flexDirection:`row`}},{props:({ownerState:e})=>e.icon&&e.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`top`,style:{[`& > .${L7.icon}`]:{marginBottom:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`bottom`,style:{[`& > .${L7.icon}`]:{marginTop:6}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`start`,style:{[`& > .${L7.icon}`]:{marginRight:e.spacing(1)}}},{props:({ownerState:e,iconPosition:t})=>e.icon&&e.label&&t===`end`,style:{[`& > .${L7.icon}`]:{marginLeft:e.spacing(1)}}},{props:{textColor:`inherit`},style:{color:`inherit`,opacity:.6,[`&.${L7.selected}`]:{opacity:1},[`&.${L7.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}}},{props:{textColor:`primary`},style:{color:(e.vars||e).palette.text.secondary,[`&.${L7.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${L7.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:{textColor:`secondary`},style:{color:(e.vars||e).palette.text.secondary,[`&.${L7.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${L7.disabled}`]:{color:(e.vars||e).palette.text.disabled}}},{props:({ownerState:e})=>e.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:`none`}},{props:({ownerState:e})=>e.wrapped,style:{fontSize:e.typography.pxToRem(12)}}]}))),R7=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTab`}),{className:r,disabled:i=!1,disableFocusRipple:a=!1,fullWidth:o,icon:s,iconPosition:c=`top`,indicator:l,label:u,onChange:d,onClick:f,onFocus:p,selected:m,selectionFollowsFocus:h,textColor:g=`inherit`,value:_,wrapped:v=!1,...y}=n,b={...n,disabled:i,disableFocusRipple:a,selected:m,icon:!!s,iconPosition:c,label:!!u,fullWidth:o,textColor:g,wrapped:v},x=l2e(b),S=s&&u&&C.isValidElement(s)?C.cloneElement(s,{className:G(x.icon,s.props.className)}):s;return(0,W.jsxs)(u2e,{focusRipple:!a,className:G(x.root,r),ref:t,role:`tab`,"aria-selected":m,disabled:i,onClick:e=>{!m&&d&&d(e,_),f&&f(e)},onFocus:e=>{h&&!m&&d&&d(e,_),p&&p(e)},ownerState:b,tabIndex:m?0:-1,...y,children:[c===`top`||c===`start`?(0,W.jsxs)(C.Fragment,{children:[S,u]}):(0,W.jsxs)(C.Fragment,{children:[u,S]}),l]})});function d2e(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function f2e(e,t,n,r={},i=()=>{}){let{ease:a=d2e,duration:o=300}=r,s=null,c=t[e],l=!1,u=()=>{l=!0},d=r=>{if(l){i(Error(`Animation cancelled`));return}s===null&&(s=r);let u=Math.min(1,(r-s)/o);if(t[e]=a(u)*(n-c)+c,u>=1){requestAnimationFrame(()=>{i(null)});return}requestAnimationFrame(d)};return c===n?(i(Error(`Element already at target position`)),u):(requestAnimationFrame(d),u)}var p2e={width:99,height:99,position:`absolute`,top:-9999,overflow:`scroll`};function m2e(e){let{onChange:t,...n}=e,r=C.useRef(),i=C.useRef(null),a=()=>{r.current=i.current.offsetHeight-i.current.clientHeight};return ah(()=>{let e=Qm(()=>{let e=r.current;a(),e!==r.current&&t(r.current)}),n=rh(i.current);return n.addEventListener(`resize`,e),()=>{e.clear(),n.removeEventListener(`resize`,e)}},[t]),C.useEffect(()=>{a(),t(r.current)},[t]),(0,W.jsx)(`div`,{style:p2e,...n,ref:i})}var h2e=Y((0,W.jsx)(`path`,{d:`M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z`}),`KeyboardArrowLeft`),g2e=Y((0,W.jsx)(`path`,{d:`M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z`}),`KeyboardArrowRight`);function _2e(e){return Vd(`MuiTabScrollButton`,e)}var v2e=Hd(`MuiTabScrollButton`,[`root`,`vertical`,`horizontal`,`disabled`]),y2e=e=>{let{classes:t,orientation:n,disabled:r}=e;return _p({root:[`root`,n,r&&`disabled`]},_2e,t)},b2e=q(Fh,{name:`MuiTabScrollButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${v2e.disabled}`]:{opacity:0},variants:[{props:{orientation:`vertical`},style:{width:`100%`,height:40,"& svg":{transform:`var(--TabScrollButton-svgRotate)`}}}]}),x2e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTabScrollButton`}),{className:r,slots:i={},slotProps:a={},direction:o,orientation:s,disabled:c,...l}=n,u=If(),d={isRtl:u,...n},f=y2e(d),p=i.StartScrollButtonIcon??h2e,m=i.EndScrollButtonIcon??g2e,h=Xv({elementType:p,externalSlotProps:a.startScrollButtonIcon,additionalProps:{fontSize:`small`},ownerState:d}),g=Xv({elementType:m,externalSlotProps:a.endScrollButtonIcon,additionalProps:{fontSize:`small`},ownerState:d});return(0,W.jsx)(b2e,{component:`div`,className:G(f.root,r),ref:t,role:null,ownerState:d,tabIndex:null,...l,style:{...l.style,...s===`vertical`&&{"--TabScrollButton-svgRotate":`rotate(${u?-90:90}deg)`}},children:o===`left`?(0,W.jsx)(p,{...h}):(0,W.jsx)(m,{...g})})});function S2e(e){return Vd(`MuiTabs`,e)}var z7=Hd(`MuiTabs`,[`root`,`vertical`,`list`,`flexContainer`,`flexContainerVertical`,`centered`,`scroller`,`fixed`,`scrollableX`,`scrollableY`,`hideScrollbar`,`scrollButtons`,`scrollButtonsHideMobile`,`indicator`]),B7=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,V7=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,H7=(e,t,n)=>{let r=!1,i=n(e,t);for(;i;){if(i===e.firstChild){if(r)return;r=!0}let t=i.disabled||i.getAttribute(`aria-disabled`)===`true`;if(!i.hasAttribute(`tabindex`)||t)i=n(e,i);else{i.focus();return}}},C2e=e=>{let{vertical:t,fixed:n,hideScrollbar:r,scrollableX:i,scrollableY:a,centered:o,scrollButtonsHideMobile:s,classes:c}=e;return _p({root:[`root`,t&&`vertical`],scroller:[`scroller`,n&&`fixed`,r&&`hideScrollbar`,i&&`scrollableX`,a&&`scrollableY`],list:[`list`,`flexContainer`,t&&`flexContainerVertical`,t&&`vertical`,o&&`centered`],indicator:[`indicator`],scrollButtons:[`scrollButtons`,s&&`scrollButtonsHideMobile`],scrollableX:[i&&`scrollableX`],hideScrollbar:[r&&`hideScrollbar`]},S2e,c)},w2e=q(`div`,{name:`MuiTabs`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${z7.scrollButtons}`]:t.scrollButtons},{[`& .${z7.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(Lm(({theme:e})=>({overflow:`hidden`,minHeight:48,WebkitOverflowScrolling:`touch`,display:`flex`,variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:`column`}},{props:({ownerState:e})=>e.scrollButtonsHideMobile,style:{[`& .${z7.scrollButtons}`]:{[e.breakpoints.down(`sm`)]:{display:`none`}}}}]}))),T2e=q(`div`,{name:`MuiTabs`,slot:`Scroller`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})({position:`relative`,display:`inline-block`,flex:`1 1 auto`,whiteSpace:`nowrap`,variants:[{props:({ownerState:e})=>e.fixed,style:{overflowX:`hidden`,width:`100%`}},{props:({ownerState:e})=>e.hideScrollbar,style:{scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}},{props:({ownerState:e})=>e.scrollableX,style:{overflowX:`auto`,overflowY:`hidden`}},{props:({ownerState:e})=>e.scrollableY,style:{overflowY:`auto`,overflowX:`hidden`}}]}),E2e=q(`div`,{name:`MuiTabs`,slot:`List`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.list,t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})({display:`flex`,variants:[{props:({ownerState:e})=>e.vertical,style:{flexDirection:`column`}},{props:({ownerState:e})=>e.centered,style:{justifyContent:`center`}}]}),D2e=q(`span`,{name:`MuiTabs`,slot:`Indicator`})(Lm(({theme:e})=>({position:`absolute`,height:2,bottom:0,width:`100%`,transition:e.transitions.create(),variants:[{props:{indicatorColor:`primary`},style:{backgroundColor:(e.vars||e).palette.primary.main}},{props:{indicatorColor:`secondary`},style:{backgroundColor:(e.vars||e).palette.secondary.main}},{props:({ownerState:e})=>e.vertical,style:{height:`100%`,width:2,right:0}}]}))),O2e=q(m2e)({overflowX:`auto`,overflowY:`hidden`,scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}),U7={},k2e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiTabs`}),r=Em(),i=If(),{"aria-label":a,"aria-labelledby":o,action:s,centered:c=!1,children:l,className:u,component:d=`div`,allowScrollButtonsMobile:f=!1,indicatorColor:p=`primary`,onChange:m,orientation:h=`horizontal`,ScrollButtonComponent:g,scrollButtons:_=`auto`,selectionFollowsFocus:v,slots:y={},slotProps:b={},TabIndicatorProps:x={},TabScrollButtonProps:S={},textColor:w=`primary`,value:T,variant:E=`standard`,visibleScrollbar:D=!1,...O}=n,k=E===`scrollable`,A=h===`vertical`,j=A?`scrollTop`:`scrollLeft`,M=A?`top`:`left`,N=A?`bottom`:`right`,P=A?`clientHeight`:`clientWidth`,F=A?`height`:`width`,I={...n,component:d,allowScrollButtonsMobile:f,indicatorColor:p,orientation:h,vertical:A,scrollButtons:_,textColor:w,variant:E,visibleScrollbar:D,fixed:!k,hideScrollbar:k&&!D,scrollableX:k&&!A,scrollableY:k&&A,centered:c&&!k,scrollButtonsHideMobile:!f},L=C2e(I),R=Xv({elementType:y.StartScrollButtonIcon,externalSlotProps:b.startScrollButtonIcon,ownerState:I}),ee=Xv({elementType:y.EndScrollButtonIcon,externalSlotProps:b.endScrollButtonIcon,ownerState:I}),[z,te]=C.useState(!1),[B,V]=C.useState(U7),[ne,re]=C.useState(!1),[ie,ae]=C.useState(!1),[oe,se]=C.useState(!1),[ce,le]=C.useState({overflow:`hidden`,scrollbarWidth:0}),ue=new Map,H=C.useRef(null),de=C.useRef(null),fe={slots:y,slotProps:{indicator:x,scrollButtons:S,...b}},pe=()=>{let e=H.current,t;if(e){let n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}let n;if(e&&T!==!1){let e=de.current.children;if(e.length>0){let t=e[ue.get(T)];n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},me=uh(()=>{let{tabsMeta:e,tabMeta:t}=pe(),n=0,r;A?(r=`top`,t&&e&&(n=t.top-e.top+e.scrollTop)):(r=i?`right`:`left`,t&&e&&(n=(i?-1:1)*(t[r]-e[r]+e.scrollLeft)));let a={[r]:n,[F]:t?t[F]:0};if(typeof B[r]!=`number`||typeof B[F]!=`number`)V(a);else{let e=Math.abs(B[r]-a[r]),t=Math.abs(B[F]-a[F]);(e>=1||t>=1)&&V(a)}}),he=(e,{animation:t=!0}={})=>{t?f2e(j,H.current,e,{duration:r.transitions.duration.standard}):H.current[j]=e},U=e=>{let t=H.current[j];A?t+=e:t+=e*(i?-1:1),he(t)},ge=()=>{let e=H.current[P],t=0,n=Array.from(de.current.children);for(let r=0;r<n.length;r+=1){let i=n[r];if(t+i[P]>e){r===0&&(t=e);break}t+=i[P]}return t},_e=()=>{U(-1*ge())},ve=()=>{U(ge())},[ye,{onChange:be,...xe}]=Gm(`scrollbar`,{className:G(L.scrollableX,L.hideScrollbar),elementType:O2e,shouldForwardComponentProp:!0,externalForwardedProps:fe,ownerState:I}),Se=C.useCallback(e=>{be?.(e),le({overflow:null,scrollbarWidth:e})},[be]),[Ce,we]=Gm(`scrollButtons`,{className:G(L.scrollButtons,S.className),elementType:x2e,externalForwardedProps:fe,ownerState:I,additionalProps:{orientation:h,slots:{StartScrollButtonIcon:y.startScrollButtonIcon||y.StartScrollButtonIcon,EndScrollButtonIcon:y.endScrollButtonIcon||y.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:R,endScrollButtonIcon:ee}}}),Te=()=>{let e={};e.scrollbarSizeListener=k?(0,W.jsx)(ye,{...xe,onChange:Se}):null;let t=k&&(_===`auto`&&(ne||ie)||_===!0);return e.scrollButtonStart=t?(0,W.jsx)(Ce,{direction:i?`right`:`left`,onClick:_e,disabled:!ne,...we}):null,e.scrollButtonEnd=t?(0,W.jsx)(Ce,{direction:i?`left`:`right`,onClick:ve,disabled:!ie,...we}):null,e},Ee=uh(e=>{let{tabsMeta:t,tabMeta:n}=pe();!n||!t||(n[M]<t[M]?he(t[j]+(n[M]-t[M]),{animation:e}):n[N]>t[N]&&he(t[j]+(n[N]-t[N]),{animation:e}))}),De=uh(()=>{k&&_!==!1&&se(!oe)});C.useEffect(()=>{let e=Qm(()=>{H.current&&me()}),t,n=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{t?.unobserve(e)}),e.addedNodes.forEach(e=>{t?.observe(e)})}),e(),De()},r=rh(H.current);r.addEventListener(`resize`,e);let i;return typeof ResizeObserver<`u`&&(t=new ResizeObserver(e),Array.from(de.current.children).forEach(e=>{t.observe(e)})),typeof MutationObserver<`u`&&(i=new MutationObserver(n),i.observe(de.current,{childList:!0})),()=>{e.clear(),r.removeEventListener(`resize`,e),i?.disconnect(),t?.disconnect()}},[me,De]),C.useEffect(()=>{let e=Array.from(de.current.children),t=e.length;if(typeof IntersectionObserver<`u`&&t>0&&k&&_!==!1){let n=e[0],r=e[t-1],i={root:H.current,threshold:.99},a=new IntersectionObserver(e=>{re(!e[0].isIntersecting)},i);a.observe(n);let o=new IntersectionObserver(e=>{ae(!e[0].isIntersecting)},i);return o.observe(r),()=>{a.disconnect(),o.disconnect()}}},[k,_,oe,l?.length]),C.useEffect(()=>{te(!0)},[]),C.useEffect(()=>{me()}),C.useEffect(()=>{Ee(U7!==B)},[Ee,B]),C.useImperativeHandle(s,()=>({updateIndicator:me,updateScrollButtons:De}),[me,De]);let[Oe,ke]=Gm(`indicator`,{className:G(L.indicator,x.className),elementType:D2e,externalForwardedProps:fe,ownerState:I,additionalProps:{style:B}}),Ae=(0,W.jsx)(Oe,{...ke}),je=0,Me=C.Children.map(l,e=>{if(!C.isValidElement(e))return null;let t=e.props.value===void 0?je:e.props.value;ue.set(t,je);let n=t===T;return je+=1,C.cloneElement(e,{fullWidth:E===`fullWidth`,indicator:n&&!z&&Ae,selected:n,selectionFollowsFocus:v,onChange:m,textColor:w,value:t,...je===1&&T===!1&&!e.props.tabIndex?{tabIndex:0}:{}})}),Ne=e=>{if(e.altKey||e.shiftKey||e.ctrlKey||e.metaKey)return;let t=de.current,n=Rb(th(t));if(n?.getAttribute(`role`)!==`tab`)return;let r=h===`horizontal`?`ArrowLeft`:`ArrowUp`,a=h===`horizontal`?`ArrowRight`:`ArrowDown`;switch(h===`horizontal`&&i&&(r=`ArrowRight`,a=`ArrowLeft`),e.key){case r:e.preventDefault(),H7(t,n,V7);break;case a:e.preventDefault(),H7(t,n,B7);break;case`Home`:e.preventDefault(),H7(t,null,B7);break;case`End`:e.preventDefault(),H7(t,null,V7);break;default:break}},Pe=Te(),[Fe,Ie]=Gm(`root`,{ref:t,className:G(L.root,u),elementType:w2e,externalForwardedProps:{...fe,...O,component:d},ownerState:I}),[Le,Re]=Gm(`scroller`,{ref:H,className:L.scroller,elementType:T2e,externalForwardedProps:fe,ownerState:I,additionalProps:{style:{overflow:ce.overflow,[A?`margin${i?`Left`:`Right`}`:`marginBottom`]:D?void 0:-ce.scrollbarWidth}}}),[ze,Be]=Gm(`list`,{ref:de,className:G(L.list,L.flexContainer),elementType:E2e,externalForwardedProps:fe,ownerState:I,getSlotProps:e=>({...e,onKeyDown:t=>{Ne(t),e.onKeyDown?.(t)}})});return(0,W.jsxs)(Fe,{...Ie,children:[Pe.scrollButtonStart,Pe.scrollbarSizeListener,(0,W.jsxs)(Le,{...Re,children:[(0,W.jsx)(ze,{"aria-label":a,"aria-labelledby":o,"aria-orientation":h===`vertical`?`vertical`:null,role:`tablist`,...Be,children:Me}),z&&Ae]}),Pe.scrollButtonEnd]})});function A2e(e){let{bridges:t,bridgePlugins:n,installed:r}=e;if(n.reduce((e,t)=>e+t.plugins.length,0)>0||r.length>0)return;if(t==null)return`none-installed`;if(t.length===0)return`no-bridges`;let i=t.filter(e=>!e.featureFlags?.serverMode);return i.length===0?`all-server-mode`:i.some(e=>e.status===ov.Running)?`none-installed`:`bridge-not-running`}async function W7(e,t){let n=await fetch(e,t);if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`${n.status} ${n.statusText}`)}return n.json()}var j2e=()=>{let{content:e}=KT(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)([]),[a,o]=(0,C.useState)(!0),[s,c]=(0,C.useState)(),[l,u]=(0,C.useState)(!1),[d,f]=(0,C.useState)(0),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(``),[_,v]=(0,C.useState)(null),[y,b]=(0,C.useState)(!1),[x,S]=(0,C.useState)(),w=(0,C.useRef)(null),T=(0,C.useCallback)(async()=>{o(!0),c(void 0);try{let[e,t]=await Promise.all([W7(`api/plugins`),W7(`api/plugins/installed`)]);n(e),i(t)}catch(e){c(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,C.useEffect)(()=>{T()},[T]);let E=async()=>{if(p.trim()){b(!0),S(void 0);try{await W7(`api/plugins/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageName:p.trim()})}),m(``),u(!1),await T()}catch(e){S(e instanceof Error?e.message:String(e))}finally{b(!1)}}},D=async()=>{if(_){b(!0),S(void 0);try{let e=await _.arrayBuffer(),t=await fetch(`api/plugins/upload`,{method:`POST`,headers:{"Content-Type":`application/octet-stream`},body:e});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`${t.status} ${t.statusText}`)}v(null),w.current&&(w.current.value=``),u(!1),await T()}catch(e){S(e instanceof Error?e.message:String(e))}finally{b(!1)}}},O=async()=>{if(h.trim()){b(!0),S(void 0);try{await W7(`api/plugins/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:h.trim()})}),g(``),u(!1),await T()}catch(e){S(e instanceof Error?e.message:String(e))}finally{b(!1)}}},k=async e=>{try{await W7(`api/plugins/uninstall`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageName:e})}),await T()}catch(e){c(e instanceof Error?e.message:String(e))}},A=async(e,t,n)=>{try{await W7(`api/plugins/${e}/${t}/${n}`,{method:`POST`}),await T()}catch(e){c(e instanceof Error?e.message:String(e))}};if(a)return(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,py:6},children:(0,W.jsx)(Bh,{})});let j=A2e({bridges:e,bridgePlugins:t,installed:r}),M=e?.filter(e=>e.featureFlags?.serverMode)??[];return(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:3,p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsxs)(Q,{variant:`h5`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(mE,{}),` Plugins`]}),(0,W.jsxs)(Yv,{direction:`row`,spacing:1,children:[(0,W.jsx)(yb,{title:`Refresh`,children:(0,W.jsx)(Hh,{onClick:T,children:(0,W.jsx)(wE,{})})}),(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(bb,{}),onClick:()=>{S(void 0),u(!0)},size:`small`,children:`Install Plugin`})]})]}),s&&(0,W.jsx)(Gh,{severity:`error`,onClose:()=>c(void 0),children:s}),j===`no-bridges`&&(0,W.jsx)(Gh,{severity:`info`,children:`No bridges configured. Create a bridge first, then plugins registered on it appear here.`}),j===`all-server-mode`&&(0,W.jsx)(Gh,{severity:`info`,children:`Plugins run on standard bridges. Server mode bridges host none, including the built-in camera. Create a standard bridge to use plugins.`}),j===`bridge-not-running`&&(0,W.jsx)(Gh,{severity:`info`,children:`No plugins reported yet. Plugins load when the bridge starts, so start the bridge and refresh this page.`}),j===`none-installed`&&(0,W.jsx)(Gh,{severity:`info`,children:`No plugins installed. Click "Install Plugin" to add an npm plugin package, or plugins will appear here when registered by the bridge.`}),r.length>0&&(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,gutterBottom:!0,children:`Installed Packages`}),(0,W.jsx)(oy,{dense:!0,children:r.map(e=>(0,W.jsxs)(uy,{secondaryAction:(0,W.jsx)(yb,{title:`Uninstall`,children:(0,W.jsx)(Hh,{edge:`end`,onClick:()=>k(e.packageName),color:`error`,size:`small`,children:(0,W.jsx)(KS,{})})}),children:[(0,W.jsx)(fy,{children:(0,W.jsx)(mE,{})}),(0,W.jsx)(my,{primary:e.packageName,secondary:`v${e.version}, installed ${new Date(e.installedAt).toLocaleDateString()}`})]},e.packageName))})]})}),t.map(e=>(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,gutterBottom:!0,children:e.bridgeName}),e.plugins.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:`No active plugins on this bridge.`}):(0,W.jsx)(oy,{dense:!0,children:e.plugins.map(t=>(0,W.jsxs)(X,{children:[(0,W.jsxs)(uy,{secondaryAction:(0,W.jsxs)(Yv,{direction:`row`,spacing:.5,children:[t.circuitBreaker?.disabled&&(0,W.jsx)(yb,{title:`Reset circuit breaker`,children:(0,W.jsx)(Hh,{size:`small`,onClick:()=>A(e.bridgeId,t.name,`reset`),children:(0,W.jsx)(TE,{})})}),(0,W.jsx)(yb,{title:t.enabled?`Disable`:`Enable`,children:(0,W.jsx)(Hh,{size:`small`,onClick:()=>A(e.bridgeId,t.name,t.enabled?`disable`:`enable`),children:t.enabled?(0,W.jsx)(Khe,{}):(0,W.jsx)(Ghe,{})})})]}),children:[(0,W.jsx)(fy,{children:(0,W.jsx)(mE,{color:t.enabled?`primary`:`disabled`})}),(0,W.jsx)(my,{primary:(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[t.name,(0,W.jsx)(Pv,{label:`v${t.version}`,size:`small`,variant:`outlined`}),t.source===`builtin`&&(0,W.jsx)(Pv,{label:`built-in`,size:`small`}),!t.enabled&&(0,W.jsx)(Pv,{label:`disabled`,size:`small`,color:`warning`}),t.circuitBreaker?.disabled&&(0,W.jsx)(Pv,{label:`circuit breaker open`,size:`small`,color:`error`})]}),secondary:t.devices.length>0?`${t.devices.length} device(s)`:`No devices registered`})]}),t.circuitBreaker?.disabled&&t.circuitBreaker.lastError&&(0,W.jsx)(Gh,{severity:`error`,sx:{mx:2,mb:1},children:t.circuitBreaker.lastError}),t.devices.length>0&&(0,W.jsx)(oy,{dense:!0,sx:{pl:6},children:t.devices.map(e=>(0,W.jsx)(uy,{children:(0,W.jsx)(my,{primary:e.name,secondary:`${e.deviceType}, ${e.id}`})},e.id))}),(0,W.jsx)(Zb,{})]},t.name))})]})},e.bridgeId)),M.map(e=>(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,gutterBottom:!0,children:e.name}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:`Server mode bridge, hosts no plugins.`})]})},e.id)),(0,W.jsxs)(Kb,{open:l,onClose:()=>u(!1),maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Yb,{children:`Install Plugin`}),(0,W.jsxs)(Jb,{children:[(0,W.jsxs)(k2e,{value:d,onChange:(e,t)=>{f(t),S(void 0)},sx:{mb:2},children:[(0,W.jsx)(R7,{label:`npm`}),(0,W.jsx)(R7,{label:`Upload .tgz`}),(0,W.jsx)(R7,{label:`Local Path`})]}),d===0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(PS,{autoFocus:!0,margin:`dense`,label:`npm package name`,placeholder:`e.g. hamh-plugin-example`,fullWidth:!0,value:p,onChange:e=>{m(e.target.value),S(void 0)},disabled:y,error:!!x,helperText:x,onKeyDown:e=>{e.key===`Enter`&&E()}}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`The plugin will be installed via npm. After installation, restart the bridge to load the plugin.`})]}),d===1&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Z,{variant:`outlined`,component:`label`,startIcon:(0,W.jsx)(FE,{}),fullWidth:!0,sx:{mt:1},disabled:y,children:[_?_.name:`Choose .tgz file`,(0,W.jsx)(`input`,{ref:w,type:`file`,accept:`.tgz,application/gzip`,hidden:!0,onChange:e=>{v(e.target.files?.[0]??null),S(void 0)}})]}),x&&(0,W.jsx)(NS,{error:!0,sx:{mt:1},children:x}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`Upload a packaged plugin (.tgz). Restart the bridge after installation.`})]}),d===2&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(PS,{autoFocus:!0,margin:`dense`,label:`Absolute path to plugin folder`,placeholder:`/path/to/your/plugin`,fullWidth:!0,value:h,onChange:e=>{g(e.target.value),S(void 0)},disabled:y,error:!!x,helperText:x,InputProps:{startAdornment:(0,W.jsx)(Phe,{sx:{mr:1}})},onKeyDown:e=>{e.key===`Enter`&&O()}}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:`Link a local plugin directory (creates a symlink). Useful for development. Restart the bridge after linking.`})]})]}),(0,W.jsxs)(qb,{children:[(0,W.jsx)(Z,{onClick:()=>u(!1),disabled:y,children:`Cancel`}),d===0&&(0,W.jsx)(Z,{onClick:E,variant:`contained`,disabled:y||!p.trim(),children:y?(0,W.jsx)(Bh,{size:20}):`Install`}),d===1&&(0,W.jsx)(Z,{onClick:D,variant:`contained`,disabled:y||!_,children:y?(0,W.jsx)(Bh,{size:20}):`Upload`}),d===2&&(0,W.jsx)(Z,{onClick:O,variant:`contained`,disabled:y||!h.trim(),children:y?(0,W.jsx)(Bh,{size:20}):`Link`})]})]})]})};async function M2e(){let e=await fetch(`api/settings/auth`);return await B_(e,`Failed to fetch auth settings`),z_(e)}async function N2e(e,t){let n=await fetch(`api/settings/auth`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({username:e,password:t})});return await B_(n,`Failed to update auth settings`),z_(n)}async function P2e(){let e=await fetch(`api/settings/auth`,{method:`DELETE`});return await B_(e,`Failed to delete auth settings`),z_(e)}async function F2e(){let e=await fetch(`api/settings/recovery`);return await B_(e,`Failed to fetch recovery settings`),z_(e)}async function I2e(e){let t=await fetch(`api/settings/recovery`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return await B_(t,`Failed to update recovery settings`),z_(t)}var L2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(null),s=(0,C.useCallback)(async()=>{i(!0),o(null);try{let t=await fetch(`api/system/update-check`);t.ok?n(await t.json()):t.status===404?o(e(`updateChecker.notAvailable`)):o(e(`updateChecker.checkFailed`))}catch{o(e(`updateChecker.unreachable`))}finally{i(!1)}},[e]);return(0,C.useEffect)(()=>{s()},[s]),(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2},children:[(0,W.jsxs)(Q,{variant:`h6`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Whe,{}),e(`updateChecker.title`)]}),(0,W.jsx)(Z,{size:`small`,startIcon:r?(0,W.jsx)(Bh,{size:16}):(0,W.jsx)(wE,{}),onClick:s,disabled:r,children:e(`updateChecker.checkNow`)})]}),a&&(0,W.jsx)(Gh,{severity:`warning`,sx:{mb:2},children:a}),t&&(0,W.jsxs)(Yv,{spacing:2,children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[e(`updateChecker.currentVersion`),`:`]}),(0,W.jsx)(Pv,{label:t.currentVersion,size:`small`,color:`primary`})]}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[e(`updateChecker.latestVersion`),`:`]}),(0,W.jsx)(Pv,{label:t.latestVersion,size:`small`,color:t.updateAvailable?`warning`:`success`})]}),t.updateAvailable?(0,W.jsxs)(Gh,{severity:`info`,action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,endIcon:(0,W.jsx)(xE,{}),href:t.releaseUrl,target:`_blank`,rel:`noopener noreferrer`,children:e(`updateChecker.releaseNotes`)}),children:[(0,W.jsx)(Q,{variant:`body2`,sx:{fontWeight:600},children:e(`updateChecker.updateAvailable`)}),(0,W.jsx)(Q,{variant:`body2`,children:(t=>{switch(t){case`Home Assistant Add-on`:return e(`updateChecker.instructionAddon`);case`Docker`:return e(`updateChecker.instructionDocker`);default:return e(`updateChecker.instructionNpm`)}})(t.environment)})]}):(0,W.jsx)(Gh,{severity:`success`,children:e(`updateChecker.upToDate`)}),t.releaseNotes&&t.updateAvailable&&(0,W.jsx)(X,{sx:{p:1.5,borderRadius:1,bgcolor:`action.hover`,maxHeight:400,overflow:`auto`},children:(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{whiteSpace:`pre-wrap`},children:t.releaseNotes})})]})]})})},G7=10,K7=3600,R2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(60),[a,o]=(0,C.useState)(!0),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null);return(0,C.useEffect)(()=>{F2e().then(e=>{n(e.autoRecoveryEnabled),i(Math.round(e.recoveryIntervalMs/1e3))}).catch(e=>u(e instanceof Error?e.message:String(e))).finally(()=>o(!1))},[]),(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:e(`settings.recovery.title`,`Auto recovery`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`settings.recovery.hint`,`Periodically restarts bridges that failed to start. Only failed bridges are touched.`)}),l&&(0,W.jsx)(Gh,{severity:`error`,sx:{mb:2},children:l}),a?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:2},children:(0,W.jsx)(Bh,{})}):(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,W.jsx)(Vv,{control:(0,W.jsx)(eC,{checked:t,onChange:e=>n(e.target.checked)}),label:e(`settings.recovery.enabled`,`Enabled`)}),(0,W.jsx)(PS,{type:`number`,size:`small`,label:e(`settings.recovery.interval`,`Interval (seconds)`),value:r,disabled:!t,onChange:e=>i(Number(e.target.value)),slotProps:{htmlInput:{min:G7,max:K7}},sx:{maxWidth:220}}),(0,W.jsx)(X,{children:(0,W.jsx)(Z,{variant:`contained`,onClick:async()=>{c(!0),u(null);try{let e=await I2e({autoRecoveryEnabled:t,recoveryIntervalMs:r*1e3});n(e.autoRecoveryEnabled),i(Math.round(e.recoveryIntervalMs/1e3))}catch(e){u(e instanceof Error?e.message:String(e))}finally{c(!1)}},disabled:s||Number.isNaN(r)||r<G7||r>K7,children:e(`common.save`,`Save`)})})]})]})})},z2e=()=>{let{t:e}=_s(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!0),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(null),[l,u]=(0,C.useState)(null),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(``),h=(0,C.useCallback)(async()=>{i(!0);try{let e=await M2e();n(e),e.username&&f(e.username),c(null)}catch(t){c(t instanceof Error?t.message:e(`settings.authLoadFailed`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{h()},[h]);let g=async()=>{if(!d.trim()||!p.trim()){c(e(`settings.usernamePasswordRequired`));return}o(!0),c(null),u(null);try{n(await N2e(d.trim(),p)),m(``),u(`Authentication enabled. The browser will prompt you to log in on the next request.`)}catch(t){c(t instanceof Error?t.message:e(`settings.authSaveFailed`))}finally{o(!1)}},[_,v]=(0,C.useState)(!1),y=async()=>{v(!1),o(!0),c(null),u(null);try{n(await P2e()),f(``),m(``),u(e(`settings.authDisabled`))}catch(t){c(t instanceof Error?t.message:e(`settings.authRemoveFailed`))}finally{o(!1)}},b=t?.source===`environment`;return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,sx:{mb:3},children:[(0,W.jsx)(UT,{sx:{mr:1,verticalAlign:`middle`}}),e(`settings.title`)]}),(0,W.jsx)(t4,{}),(0,W.jsx)(Zb,{sx:{my:3}}),(0,W.jsx)(L2e,{}),(0,W.jsx)(Zb,{sx:{my:3}}),(0,W.jsx)(R2e,{}),(0,W.jsx)(Zb,{sx:{my:3}}),r?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Bh,{})}):(0,W.jsx)(Cv,{children:(0,W.jsxs)(Ev,{children:[(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:2},children:[(0,W.jsx)(kE,{sx:{mr:1,verticalAlign:`middle`,fontSize:20}}),e(`settings.title`)]}),b&&(0,W.jsxs)(Gh,{severity:`info`,sx:{mb:2},children:[`Authentication is configured via environment variables (`,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_USERNAME`}),` /`,` `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_PASSWORD`}),`). Remove the environment variables to manage authentication from here.`]}),s&&(0,W.jsx)(Gh,{severity:`error`,sx:{mb:2},children:s}),l&&(0,W.jsx)(Gh,{severity:`success`,sx:{mb:2},children:l}),t?.enabled&&!b&&(0,W.jsxs)(Gh,{severity:`info`,sx:{mb:2},children:[`Authentication is currently enabled for user "`,t.username,`". Enter a new password to change it, or remove authentication entirely.`]}),(0,W.jsxs)(X,{sx:{display:`flex`,flexDirection:`column`,gap:2,maxWidth:400},children:[(0,W.jsx)(PS,{label:e(`settings.username`),value:d,onChange:e=>f(e.target.value),disabled:b||a,fullWidth:!0,size:`small`}),(0,W.jsx)(PS,{label:e(`settings.password`),type:`password`,value:p,onChange:e=>m(e.target.value),disabled:b||a,fullWidth:!0,size:`small`,placeholder:t?.enabled&&!b?e(`settings.enterNewPassword`):``}),(0,W.jsxs)(X,{sx:{display:`flex`,gap:1},children:[(0,W.jsx)(Z,{variant:`contained`,onClick:g,disabled:b||a||!d.trim()||!p.trim(),startIcon:a?(0,W.jsx)(Bh,{size:16}):(0,W.jsx)(DE,{}),children:t?.enabled&&!b?e(`common.update`):e(`settings.enableAuth`)}),t?.enabled&&!b&&(0,W.jsx)(Z,{variant:`outlined`,color:`error`,onClick:()=>v(!0),disabled:a,startIcon:(0,W.jsx)(KS,{}),children:e(`common.disabled`)})]})]}),(0,W.jsxs)(Gh,{severity:`warning`,sx:{mt:3},children:[`If you get locked out, delete the settings from the storage directory or set `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_USERNAME`}),` /`,` `,(0,W.jsx)(`code`,{children:`HAMH_HTTP_AUTH_PASSWORD`}),` environment variables in your Docker Compose file to regain access.`]})]})}),(0,W.jsx)(eE,{open:_,title:e(`settings.disableAuth`),message:e(`settings.disableAuthMessage`),confirmLabel:e(`settings.disableAuthConfirm`),confirmColor:`error`,onConfirm:y,onCancel:()=>v(!1)})]})};function B2e(e){let t=e.filter?.include??[];if(t.length!==0)return t.map(e=>e.type===sv.Pattern?e.value:`${e.type}: ${e.value}`).join(`, `)}var q7=/^[a-z0-9_]+\.[a-z0-9_]+$/,V2e=10;function J7(e){return e?.message}var H2e=()=>{let{t:e}=_s(),t=ey(),n=nv(),{content:r,isLoading:i}=KT(),a=YT(),o=XT(),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(``),d=(0,C.useRef)(0),[f,p]=(0,C.useState)([{key:0,value:``}]),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(null),v=f.map(e=>e.value.trim()),y=v.filter(e=>e!==``),b=e=>{let t=v[e];return t===``?!1:q7.test(t)?v.indexOf(t)!==e:!0},x=y.length>0&&f.every((e,t)=>!b(t)),S=(r??[]).filter(e=>e.featureFlags?.serverMode===!0),w=(0,C.useCallback)(async()=>{let r=l.trim(),i=f.map(e=>e.value.trim()).filter(e=>e!==``);if(!(!r||i.length===0||i.some(e=>!q7.test(e))||new Set(i).size!==i.length)){h(!0);try{await a({name:r,filter:{include:i.map(e=>({type:sv.Pattern,value:e})),exclude:[]},featureFlags:{serverMode:!0}}),t.show({message:e(`standaloneDevices.created`,`Standalone device created`),severity:`success`}),c(!1),u(``),p([{key:0,value:``}]),n(Y_())}catch(n){t.show({message:J7(n)??e(`standaloneDevices.createFailed`,`Could not create device`),severity:`error`})}finally{h(!1)}}},[l,f,a,t,e,n]),T=(0,C.useCallback)(async r=>{try{await o(r.id),t.show({message:e(`standaloneDevices.deleted`,`Standalone device deleted`),severity:`success`}),n(Y_())}catch(n){t.show({message:J7(n)??e(`standaloneDevices.deleteFailed`,`Could not delete device`),severity:`error`})}},[o,t,e,n]);return(0,W.jsxs)(X,{sx:{p:2},children:[(0,W.jsxs)(X,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:1},children:[(0,W.jsx)(Q,{variant:`h5`,component:`h1`,children:e(`standaloneDevices.title`,`Standalone Devices`)}),(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(bb,{}),onClick:()=>c(!0),children:e(`standaloneDevices.create`,`Add device`)})]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`standaloneDevices.subtitle`,`Each device runs on its own Matter node with its own pairing code, instead of inside a bridge.`)}),i&&!r?(0,W.jsx)(Bh,{}):S.length===0?(0,W.jsx)(Gh,{severity:`info`,children:e(`standaloneDevices.empty`,`No standalone devices yet. Add one to expose a single entity as its own Matter device.`)}):(0,W.jsx)(Yv,{spacing:1,children:S.map(t=>(0,W.jsx)(Cv,{variant:`outlined`,children:(0,W.jsxs)(Ev,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:2},children:[(0,W.jsxs)(X,{sx:{minWidth:0},children:[(0,W.jsx)(Q,{variant:`subtitle1`,noWrap:!0,children:t.name}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,noWrap:!0,children:B2e(t)??e(`standaloneDevices.noEntity`,`no entity`)})]}),(0,W.jsxs)(Yv,{direction:`row`,spacing:1,alignItems:`center`,children:[(t.failedEntities?.length??0)>0&&(0,W.jsx)(yb,{title:t.failedEntities?.map(e=>e.reason).join(` `)??``,children:(0,W.jsx)(Pv,{size:`small`,color:`warning`,label:e(`standaloneDevices.entityProblem`,`entity problem`)})}),(0,W.jsx)(Mx,{status:t.status,reason:t.statusReason}),(0,W.jsx)(yb,{title:e(`standaloneDevices.openBridge`,`Open details and pairing`),children:(0,W.jsx)(Hh,{component:ra,to:Y9.bridge(t.id),size:`small`,children:(0,W.jsx)(zhe,{fontSize:`small`})})}),(0,W.jsx)(yb,{title:e(`common.delete`,`Delete`),children:(0,W.jsx)(Hh,{onClick:()=>_(t),size:`small`,color:`error`,children:(0,W.jsx)(fE,{fontSize:`small`})})})]})]})},t.id))}),(0,W.jsxs)(Kb,{open:s,onClose:()=>{m||c(!1)},fullWidth:!0,maxWidth:`sm`,children:[(0,W.jsx)(Yb,{children:e(`standaloneDevices.create`,`Add device`)}),(0,W.jsxs)(Jb,{children:[(0,W.jsx)(PS,{label:e(`standaloneDevices.name`,`Name`),value:l,onChange:e=>u(e.target.value),fullWidth:!0,margin:`normal`,slotProps:{htmlInput:{maxLength:32}}}),f.map((t,n)=>(0,W.jsxs)(X,{sx:{display:`flex`,gap:1,alignItems:`flex-start`},children:[(0,W.jsx)(X,{sx:{flexGrow:1},children:(0,W.jsx)(iC,{value:t.value,onChange:e=>{p(n=>n.map(n=>n.key===t.key?{...n,value:e}:n))},label:n===0?e(`standaloneDevices.entity`,`Entity`):e(`standaloneDevices.additionalEntity`,`Additional entity`),helperText:b(n)?e(`standaloneDevices.entityInvalid`,`Enter a single entity id like vacuum.living_room, wildcards are not allowed.`):n===0?e(`standaloneDevices.entityHelp`,`Pick the Home Assistant entity to expose.`):void 0})}),f.length>1&&(0,W.jsx)(Hh,{size:`small`,sx:{mt:3},onClick:()=>p(e=>e.filter(e=>e.key!==t.key)),children:(0,W.jsx)(fE,{fontSize:`small`})})]},t.key)),(0,W.jsx)(Z,{size:`small`,startIcon:(0,W.jsx)(bb,{}),disabled:f.length>=V2e,onClick:()=>{d.current+=1,p(e=>[...e,{key:d.current,value:``}])},children:e(`standaloneDevices.addEntity`,`Add another entity`)}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mt:1},children:e(`standaloneDevices.multiHint`,`The first entity is the primary and names the device. More than one entity per device is experimental.`)})]}),(0,W.jsxs)(qb,{children:[(0,W.jsx)(Z,{onClick:()=>c(!1),disabled:m,children:e(`common.cancel`,`Cancel`)}),(0,W.jsx)(Z,{onClick:w,variant:`contained`,disabled:m||!l.trim()||!x,children:m?e(`standaloneDevices.creating`,`Creating`):e(`common.create`,`Create`)})]})]}),(0,W.jsx)(eE,{open:g!==null,title:e(`standaloneDevices.confirmDeleteTitle`,`Delete standalone device`),message:e(`standaloneDevices.confirmDeleteMessage`,`This deletes the device's Matter node and unpairs it from your controllers. This cannot be undone.`),confirmLabel:e(`common.delete`,`Delete`),cancelLabel:e(`common.cancel`,`Cancel`),confirmColor:`error`,onConfirm:()=>{let e=g;_(null),e&&T(e)},onCancel:()=>_(null)})]})};function U2e(){var e=[...arguments];return(0,C.useMemo)(()=>t=>{e.forEach(e=>e(t))},e)}var Y7=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function X7(e){let t=Object.prototype.toString.call(e);return t===`[object Window]`||t===`[object global]`}function Z7(e){return`nodeType`in e}function Q7(e){return e?X7(e)?e:Z7(e)?e.ownerDocument?.defaultView??window:window:window}function $7(e){let{Document:t}=Q7(e);return e instanceof t}function e9(e){return X7(e)?!1:e instanceof Q7(e).HTMLElement}function t9(e){return e instanceof Q7(e).SVGElement}function n9(e){return e?X7(e)?e.document:Z7(e)?$7(e)?e:e9(e)||t9(e)?e.ownerDocument:document:document:document}var r9=Y7?C.useLayoutEffect:C.useEffect;function i9(e){let t=(0,C.useRef)(e);return r9(()=>{t.current=e}),(0,C.useCallback)(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function W2e(){let e=(0,C.useRef)(null);return[(0,C.useCallback)((t,n)=>{e.current=setInterval(t,n)},[]),(0,C.useCallback)(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[])]}function a9(e,t){t===void 0&&(t=[e]);let n=(0,C.useRef)(e);return r9(()=>{n.current!==e&&(n.current=e)},t),n}function o9(e,t){let n=(0,C.useRef)();return(0,C.useMemo)(()=>{let t=e(n.current);return n.current=t,t},[...t])}function s9(e){let t=i9(e),n=(0,C.useRef)(null);return[n,(0,C.useCallback)(e=>{e!==n.current&&t?.(e,n.current),n.current=e},[])]}function c9(e){let t=(0,C.useRef)();return(0,C.useEffect)(()=>{t.current=e},[e]),t.current}var l9={};function u9(e,t){return(0,C.useMemo)(()=>{if(t)return t;let n=l9[e]==null?0:l9[e]+1;return l9[e]=n,e+`-`+n},[e,t])}function d9(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>{let r=Object.entries(n);for(let[n,i]of r){let r=t[n];r!=null&&(t[n]=r+e*i)}return t},{...t})}}var f9=d9(1),p9=d9(-1);function G2e(e){return`clientX`in e&&`clientY`in e}function m9(e){if(!e)return!1;let{KeyboardEvent:t}=Q7(e.target);return t&&e instanceof t}function K2e(e){if(!e)return!1;let{TouchEvent:t}=Q7(e.target);return t&&e instanceof t}function h9(e){if(K2e(e)){if(e.touches&&e.touches.length){let{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){let{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return G2e(e)?{x:e.clientX,y:e.clientY}:null}var g9=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return`translate3d(`+(t?Math.round(t):0)+`px, `+(n?Math.round(n):0)+`px, 0)`}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return`scaleX(`+t+`) scaleY(`+n+`)`}},Transform:{toString(e){if(e)return[g9.Translate.toString(e),g9.Scale.toString(e)].join(` `)}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+` `+n+`ms `+r}}}),_9=`a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]`;function q2e(e){return e.matches(_9)?e:e.querySelector(_9)}var J2e={display:`none`};function Y2e(e){let{id:t,value:n}=e;return C.createElement(`div`,{id:t,style:J2e},n)}function X2e(e){let{id:t,announcement:n,ariaLiveType:r=`assertive`}=e;return C.createElement(`div`,{id:t,style:{position:`fixed`,top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0 0 0 0)`,clipPath:`inset(100%)`,whiteSpace:`nowrap`},role:`status`,"aria-live":r,"aria-atomic":!0},n)}function Z2e(){let[e,t]=(0,C.useState)(``);return{announce:(0,C.useCallback)(e=>{e!=null&&t(e)},[]),announcement:e}}var v9=(0,C.createContext)(null);function Q2e(e){let t=(0,C.useContext)(v9);(0,C.useEffect)(()=>{if(!t)throw Error(`useDndMonitor must be used within a children of <DndContext>`);return t(e)},[e,t])}function $2e(){let[e]=(0,C.useState)(()=>new Set),t=(0,C.useCallback)(t=>(e.add(t),()=>e.delete(t)),[e]);return[(0,C.useCallback)(t=>{let{type:n,event:r}=t;e.forEach(e=>e[n]?.call(e,r))},[e]),t]}var e4e={draggable:`
463
463
  To pick up a draggable item, press the space bar.
464
464
  While dragging, use the arrow keys to move the item.
465
465
  Press space again to drop the item in its new position, or press escape to cancel.
466
- `},e4e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function t4e(e){let{announcements:t=e4e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=$2e}=e,{announce:a,announcement:o}=X2e(),s=u9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),Z2e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(J2e,{id:r,value:i.draggable}),C.createElement(Y2e,{id:s,announcement:o}));return n?(0,Sa.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function n4e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function r4e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function i4e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function a4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function o4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function s4e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function c4e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function l4e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var u4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=l4e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=i4e(l4e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(a4e)},d4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=s4e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=s4e(r),o=i.reduce((e,t,r)=>e+i4e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(a4e)};function f4e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var p4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=f4e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(o4e)};function m4e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function h4e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function g4e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var _4e=g4e(1);function v4e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function y4e(e,t,n){let r=v4e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var b4e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=b4e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=Q7(e).getComputedStyle(e);t&&(n=y4e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function x4e(e){return S9(e,{ignoreTransform:!0})}function S4e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function C4e(e,t){return t===void 0&&(t=Q7(e).getComputedStyle(e)),t.position===`fixed`}function w4e(e,t){t===void 0&&(t=Q7(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if($7(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!e9(i)||t9(i)||n.includes(i))return n;let a=Q7(e).getComputedStyle(i);return i!==e&&w4e(i,a)&&n.push(i),C4e(i,a)?n:r(i.parentNode)}return e?r(e):n}function T4e(e){let[t]=C9(e,1);return t??null}function w9(e){return!Y7||!e?null:X7(e)?e:Z7(e)?$7(e)||e===n9(e).scrollingElement?window:e9(e)?e:null:null}function E4e(e){return X7(e)?e.scrollX:e.scrollLeft}function D4e(e){return X7(e)?e.scrollY:e.scrollTop}function T9(e){return{x:E4e(e),y:D4e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function O4e(e){return!Y7||!e?!1:e===document.scrollingElement}function k4e(e){let t={x:0,y:0},n=O4e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var A4e={x:.2,y:.2};function j4e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=A4e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=k4e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function M4e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function N4e(e){return e.reduce((e,t)=>f9(e,T9(t)),x9)}function P4e(e){return e.reduce((e,t)=>e+E4e(t),0)}function F4e(e){return e.reduce((e,t)=>e+D4e(t),0)}function I4e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);T4e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var L4e=[[`x`,[`left`,`right`],P4e],[`y`,[`top`,`bottom`],F4e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=N4e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of L4e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function R4e(e){let{EventTarget:t}=Q7(e);return e instanceof t?e:n9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function z4e(e){e.preventDefault()}function B4e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var V4e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},H4e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(n9(t)),this.windowListeners=new O9(Q7(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&I4e(n),t(x9)}handleKeyDown(e){if(m9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=V4e,coordinateGetter:a=H4e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=p9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=k4e(n),p=M4e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,f9(p9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=V4e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function U4e(e){return!!(e&&`distance`in e)}function W4e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=R4e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=n9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(Q7(i)),this.initialCoordinates=h9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,z4e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,z4e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(W4e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(U4e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,B4e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=h9(e)??x9,s=p9(n,o);if(!t&&a){if(U4e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(W4e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},G4e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=n9(t.target);super(e,G4e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var K4e={move:{name:`mousemove`},end:{name:`mouseup`}},q4e;(function(e){e[e.RightClick=2]=`RightClick`})(q4e||={});var J4e=class extends N9{constructor(e){super(e,K4e,n9(e.event.target))}};J4e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===q4e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},Y4e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};Y4e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function X4e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=Q4e({delta:d,disabled:!a}),[m,h]=U2e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=j4e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var Z4e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function Q4e(e){let{delta:t,disabled:n}=e,r=c9(t);return o9(e=>{if(n||!r||!e)return Z4e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function $4e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return o9(e=>t==null?null:r??e??null,[r,t])}function e3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var t3e;(function(e){e.Optimized=`optimized`})(t3e||={});var n3e=new Map;function r3e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=a9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=o9(t=>{if(d&&!n)return n3e;if(!t||t===n3e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function i3e(e,t){return o9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function a3e(e,t){return i3e(e,t)}function o3e(e){let{callback:t,disabled:n}=e,r=i9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=i9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function s3e(e){return new D9(S9(e),e)}function c3e(e,t,n){t===void 0&&(t=s3e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=o3e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return r9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function l3e(e){return h4e(e,i3e(e))}var u3e=[];function d3e(e){let t=(0,C.useRef)(e),n=o9(n=>e?n&&n!==u3e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):u3e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function f3e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>f9(e,t),x9):N4e(e):x9,[e,t])}function p3e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?p9(e,n.current):x9}function m3e(e){(0,C.useEffect)(()=>{if(!Y7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function h3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function g3e(e){return(0,C.useMemo)(()=>e?S4e(e):null,[e])}var _3e=[];function v3e(e,t){t===void 0&&(t=S9);let[n]=e,r=g3e(n?Q7(n):null),[i,a]=(0,C.useState)(_3e);function o(){a(()=>e.length?e.map(e=>O4e(e)?r:new D9(t(e),e)):_3e)}let s=z9({callback:o});return r9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function y3e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return e9(t)?t:e}function b3e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(e9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=s9((0,C.useCallback)(e=>{let n=y3e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var x3e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],S3e={current:{}},B9={draggable:{measure:x4e},droppable:{measure:x4e,strategy:R9.WhileDragging,frequency:t3e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},C3e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},w3e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(w3e),T3e=(0,C.createContext)(C3e);function E3e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function D3e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function O3e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=c9(r),o=c9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!m9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=K2e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function k3e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function A3e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function j3e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;r9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=h4e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=T4e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var M3e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var N3e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=x3e,collisionDetection:o=p4e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(D3e,void 0,E3e),[f,p]=Q2e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??S3e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=a9(l,Object.values(l)),j=u9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=A3e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=r3e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=$4e(v,_),R=(0,C.useMemo)(()=>O?h9(O):null,[O]),ee=Ee(),z=a3e(L,N.draggable.measure);j3e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=c3e(L,N.draggable.measure,z),B=c3e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=b3e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=l3e(oe?null:te),ce=g3e(ie?Q7(ie):null),le=d3e(g?ne??L:null),ue=v3e(le),H=k3e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),de=R?f9(R,y):null,fe=f3e(le),pe=p3e(fe),me=p3e(fe,[te]),he=f9(H,pe),U=ae?_4e(ae,H):null,ge=w&&U?o({active:w,collisionRect:U,droppableRects:P,droppableContainers:M,pointerCoordinates:de}):null,_e=c4e(ge,`id`),[ve,ye]=(0,C.useState)(null),be=m4e(oe?H:f9(H,me),ve?.rect??null,te),xe=(0,C.useRef)(null),Se=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;xe.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,Sa.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(xe.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,Sa.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ye(null),D(null),k(null),xe.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Ce=e3e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Se(n,t))},[v,Se]));m3e(a),r9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:he.x,y:he.y},over:i};(0,Sa.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[he.x,he.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(_e),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,Sa.unstable_batchedUpdates)(()=>{ye(s),a?.(c),f({type:`onDragOver`,event:c})})},[_e]),r9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:U,collisions:ge,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:ve,scrollableAncestors:le,scrollAdjustedTranslate:he},S.current={initial:ae,translated:U}},[w,L,ge,U,v,ie,ae,P,b,ve,le,he]),X4e({...ee,delta:y,draggingRect:U,pointerCoordinates:de,scrollableAncestors:le,scrollableAncestorRects:ue});let we=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:ge,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:ve,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,ge,B,re,v,b,P,ve,F,le,ue,N,I,ce]),Te=(0,C.useMemo)(()=>({activatorEvent:O,activators:Ce,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:ve,measureDroppableContainers:F}),[O,Ce,w,te,d,j,v,ve,F]);return C.createElement(v9.Provider,{value:p},C.createElement(H9.Provider,{value:Te},C.createElement(T3e.Provider,{value:we},C.createElement(M3e.Provider,{value:be},i)),C.createElement(O3e,{disabled:n?.restoreFocus===!1})),C.createElement(t4e,{...n,hiddenTextDescribedById:j}));function Ee(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),P3e=(0,C.createContext)(null),F3e=`button`,I3e=`Draggable`;function L3e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=u9(I3e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=F3e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?M3e:P3e),[v,y]=s9(),[b,x]=s9(),S=h3e(o,t),w=a9(n);return r9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===F3e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function R3e(){return(0,C.useContext)(T3e)}var z3e=`Droppable`,B3e={timeout:25};function V3e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=u9(z3e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...B3e,...i},_=a9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=s9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=a9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function H3e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function U3e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function W3e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var G3e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},K3e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=q3e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function q3e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var J3e=`Sortable`,Y3e=C.createContext({activeIndex:-1,containerId:J3e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:G3e,disabled:{draggable:!1,droppable:!1}});function X3e(e){let{children:t,id:n,items:r,strategy:i=G3e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=R3e(),d=u9(J3e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!U3e(p,_.current),y=g!==-1&&h===-1||v,b=W3e(a);r9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:H3e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(Y3e.Provider,{value:x},t)}var Z3e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},Q3e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},$3e={duration:200,easing:`ease`},e6e=`transform`,t6e=g9.Transition.toString({property:e6e,duration:0,easing:`linear`}),n6e={roleDescription:`sortable`};function r6e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return r9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function i6e(e){let{animateLayoutChanges:t=Q3e,attributes:n,disabled:r,data:i,getNewIndex:a=Z3e,id:o,strategy:s,resizeObserverConfig:c,transition:l=$3e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(Y3e),y=a6e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=V3e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=L3e({id:o,data:x,attributes:{...n6e,...n},disabled:y.draggable}),R=H2e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=r6e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return t6e;if(!(te&&!m9(k)||!l)&&(ee||ae))return g9.Transition.toString({...l,property:e6e})}}function a6e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var o6e=[j9.Down,j9.Right,j9.Up,j9.Left],s6e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(o6e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=d4e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=c4e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=c6e(e,t),a=l6e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:p9(u,l)}}}};function c6e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function l6e(e,t){return!q9(e)||!q9(t)||!c6e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var u6e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=i6e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{LE(e.id).then(l)},[e.id]),(0,W.jsx)(Cv,{ref:i,style:{transform:g9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,W.jsxs)(Ev,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,W.jsx)(X,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,W.jsx)(jhe,{})}),(0,W.jsx)(Pv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,W.jsx)(X,{component:`img`,src:RE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,W.jsx)(Mb,{sx:{bgcolor:WE(e),width:40,height:40,boxShadow:2},children:(0,W.jsx)(UE(e),{sx:{fontSize:24}})}),(0,W.jsxs)(X,{sx:{flex:1},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},d6e=()=>{let{t:e}=_s(),t=ey(),{content:n,isLoading:r}=KT(),i=Qme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=r4e(n4e(P9),n4e(M9,{coordinateGetter:s6e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,W.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,W.jsxs)(Yv,{spacing:3,children:[(0,W.jsx)($v,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,W.jsxs)(X,{display:`flex`,alignItems:`center`,gap:2,children:[(0,W.jsx)(yv,{color:`primary`,fontSize:`large`}),(0,W.jsxs)(X,{children:[(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,W.jsx)(Gh,{severity:`info`,action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,startIcon:(0,W.jsx)(DE,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,W.jsx)(N3e,{sensors:l,collisionDetection:u4e,onDragEnd:u,children:(0,W.jsx)(X3e,{items:f,strategy:K3e,children:(0,W.jsx)(Yv,{spacing:1,children:a.map((e,t)=>(0,W.jsx)(u6e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,W.jsx)(X,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(DE,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,standaloneDevices:`/standalone-devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},f6e=[{path:``,element:(0,W.jsx)(Sre,{}),children:[{path:``,element:(0,W.jsx)(d_e,{})},{path:Y9.bridges,element:(0,W.jsx)(a_e,{})},{path:Y9.createBridge,element:(0,W.jsx)(EJe,{})},{path:Y9.areaSetup,element:(0,W.jsx)(wae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,W.jsx)(mhe,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,W.jsx)(OJe,{})},{path:Y9.devices,element:(0,W.jsx)(A_e,{})},{path:Y9.standaloneDevices,element:(0,W.jsx)(V2e,{})},{path:Y9.networkMap,element:(0,W.jsx)(s2e,{})},{path:Y9.health,element:(0,W.jsx)(ZJe,{})},{path:Y9.labels,element:(0,W.jsx)(QJe,{})},{path:Y9.lockCredentials,element:(0,W.jsx)(iYe,{})},{path:Y9.plugins,element:(0,W.jsx)(A2e,{})},{path:Y9.settings,element:(0,W.jsx)(R2e,{})},{path:Y9.startup,element:(0,W.jsx)(d6e,{})},{path:`*`,element:(0,W.jsx)(aYe,{})}]}],p6e=k_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(Y_.pending,e=>{e.items.isLoading=!0}).addCase(Y_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(Y_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(X_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(Q_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase($_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(Z_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(ev,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(tv,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),m6e=k_({byBridge:{}},e=>{e.addCase(ZT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(ZT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(ZT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=k_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(ZT.pending,e=>{e.isLoading=!0}).addCase(ZT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(ZT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),h6e=$ne({reducer:{bridges:p6e,devices:m6e}}),Z9=Sp({createStyledComponent:q(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${J(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>jm({props:e,name:`MuiContainer`})});function g6e(e){return Vd(`MuiToolbar`,e)}Hd(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var _6e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return _p({root:[`root`,!n&&`gutters`,r]},g6e,t)},v6e=q(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Lm(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),y6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,W.jsx)(v6e,{as:i,className:G(_6e(c).root,r),ref:t,ownerState:c,...s})}),b6e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,W.jsxs)(X,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(wb,{color:`error`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:zs.t(`errorBoundary.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??zs.t(`errorBoundary.fallbackMessage`)}),(0,W.jsx)(Z,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:zs.t(`errorBoundary.reload`)})]}):this.props.children}};function x6e(e){return Vd(`MuiFab`,e)}var S6e=Hd(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),C6e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=_p({root:[`root`,n,`size${J(i)}`,t===`inherit`?`colorInherit`:t]},x6e,r);return{...r,...a}},w6e=q(Fh,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>km(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${J(n.size)}`],n.color===`inherit`&&t.colorInherit,t[J(n.size)],t[n.color]]}})(Lm(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${S6e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Lm(({theme:e})=>({variants:[...Object.entries(e.palette).filter(Km([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Lm(({theme:e})=>({[`&.${S6e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),T6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=C6e(p);return(0,W.jsx)(w6e,{className:G(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:G(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),E6e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`hu`,flag:`🇭🇺`,name:`Magyar`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`},{code:`pt-BR`,flag:`🇧🇷`,name:`Português (Brasil)`}],D6e=`hamh-custom-languages`;function O6e(){try{let e=localStorage.getItem(D6e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var k6e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function A6e(){let{t:e,i18n:t}=_s(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...E6e,...O6e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,W.jsx)(Jh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,W.jsxs)(X,{children:[(0,W.jsx)(T6e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,W.jsx)(Rhe,{})}),(0,W.jsx)(pb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,W.jsx)(zb,{...t,timeout:200,children:(0,W.jsxs)(qm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,W.jsxs)(X,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,W.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,W.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,W.jsx)(Zb,{}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,W.jsx)(ty,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,W.jsx)(Qv,{href:k6e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var j6e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.845`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.17.7`,"@matter/nodejs":`0.17.7`,"@matter/protocol":`0.17.7`,"@matter/general":`0.17.7`,"@matter/types":`0.17.7`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.2.0`,nocache:`4.0.0`,unzipper:`0.12.3`,werift:`0.22.4`,ws:`8.21.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function M6e(){let e=`2.1.0-alpha.845`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>t?e!==t:!1,[t]);return(0,C.useMemo)(()=>({name:j6e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var N6e=()=>{let{t:e}=_s(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,W.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,W.jsx)(Zb,{sx:{mt:4,mb:4}}),(0,W.jsx)(Hv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,W.jsx)(Hv,{size:{xs:12,sm:`auto`},children:(0,W.jsx)(Z,{fullWidth:!0,size:`small`,variant:`outlined`,component:Qv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function P6e(e){return Vd(`MuiAppBar`,e)}Hd(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var F6e=e=>{let{color:t,position:n,classes:r}=e;return _p({root:[`root`,`color${J(t)}`,`position${J(n)}`]},P6e,r)},I6e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,L6e=q(qm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${J(n.position)}`],t[`color${J(n.color)}`]]}})(Lm(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(Km([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?I6e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?I6e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),R6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,W.jsx)(L6e,{square:!0,component:`header`,ownerState:c,elevation:4,className:G(F6e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),z6e={visibility:`hidden`};function B6e(e,t,n){let r=n&&n.getBoundingClientRect(),i=rh(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function V6e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=B6e(e,t,V6e(n));r&&(t.style.transform=r)}var H6e=C.forwardRef(function(e,t){let n=Em(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=dh(Kh(s),x,t),w=Xh(x,(e,t)=>{Q9(l,e,c),Yh(e),f&&f(e,t)}),T=Xh(x,(e,t)=>{let r=Qh({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Xh(x,p),D=Xh(x,_),O=Xh(x,e=>{let t=Qh({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Xh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Qm(()=>{x.current&&Q9(l,x.current,c)}),t=rh(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,W.jsx)(Eh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:z6e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function U6e(e){return Vd(`MuiDrawer`,e)}Hd(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var W6e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},G6e=e=>{let{classes:t,anchor:n,variant:r}=e;return _p({root:[`root`,`anchor${J(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${J(n)}`,r!==`temporary`&&`paperAnchorDocked${J(n)}`]},U6e,t)},K6e=q(Ub,{name:`MuiDrawer`,slot:`Root`,overridesResolver:W6e})(Lm(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),q6e=q(`div`,{shouldForwardProp:km,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:W6e})({flex:`0 0 auto`}),J6e=q(qm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${J(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${J(n.anchor)}`]]}})(Lm(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),Y6e={left:`right`,right:`left`,top:`down`,bottom:`up`};function X6e(e){return[`left`,`right`].includes(e)}function Z6e({direction:e},t){return e===`rtl`&&X6e(t)?Y6e[t]:t}var Q6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiDrawer`}),r=Em(),i=If(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=Z6e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=G6e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:fh(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Gm(`root`,{ref:t,elementType:K6e,className:G(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Gm(`paper`,{elementType:J6e,shouldForwardComponentProp:!0,className:G(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Gm(`docked`,{elementType:q6e,ref:t,className:G(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Gm(`transition`,{elementType:H6e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:Y6e[E],timeout:y,appear:T.current}}),ee=(0,W.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,W.jsx)(F,{...I,children:ee});let z=(0,W.jsx)(L,{...R,children:ee});return b===`persistent`?(0,W.jsx)(F,{...I,children:z}):(0,W.jsx)(j,{...M,children:z})}),$6e=uf({themeId:Tm}),e8e={error:jx,warn:ny,info:Eb,debug:lE},t8e=({open:e,onClose:t})=>{let{t:n}=_s(),r=Em(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,W.jsx)(e8e[e]||Eb,{sx:{fontSize:16,color:i[e]}});return(0,W.jsxs)(Kb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,W.jsxs)(Yb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(lE,{}),n(`logs.title`),(0,W.jsx)(X,{sx:{flexGrow:1}}),(0,W.jsx)(yb,{title:n(`logs.autoRefresh`),children:(0,W.jsx)(Pv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,W.jsx)(Hh,{onClick:t,children:(0,W.jsx)(dE,{})})]}),(0,W.jsxs)(Jb,{children:[(0,W.jsx)(Yv,{spacing:2,sx:{mb:2},children:(0,W.jsxs)(Yv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,W.jsxs)(Iv,{size:`small`,sx:{minWidth:200},children:[(0,W.jsx)(Jx,{children:n(`logs.logLevel`)}),(0,W.jsxs)(AS,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,W.jsx)(X,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,W.jsx)(Pv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,W.jsx)(jS,{value:`error`,children:n(`logs.error`)}),(0,W.jsx)(jS,{value:`warn`,children:n(`logs.warning`)}),(0,W.jsx)(jS,{value:`info`,children:n(`logs.info`)}),(0,W.jsx)(jS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,W.jsx)(PS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,W.jsx)(Z,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,W.jsx)(Z,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,W.jsx)(X,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,W.jsx)(Yv,{spacing:1,children:a.map((e,t)=>(0,W.jsxs)(X,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,W.jsx)(Pv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,W.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,W.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,W.jsx)(qb,{children:(0,W.jsx)(Z,{onClick:t,children:n(`common.close`)})})]})};function n8e(){let{t:e}=_s(),{isConnected:t}=av(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,W.jsxs)(X,{sx:{p:.5},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,W.jsx)(yb,{title:d,arrow:!0,children:(0,W.jsx)(Pv,{icon:i||!s?(0,W.jsx)(jx,{fontSize:`small`}):l?(0,W.jsx)(vv,{fontSize:`small`}):(0,W.jsx)(kb,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var r8e=e=>(0,W.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,W.jsxs)(`g`,{style:{display:`inline`},children:[(0,W.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,W.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),i8e=e=>{let t=M6e();return(0,W.jsxs)(X,{component:ra,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,W.jsx)(r8e,{style:{height:`40px`}}),(0,W.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(J).join(`-`)}),e.large&&(0,W.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},a8e=()=>{let e=$6e(`(min-width:600px)`),{mode:t,setMode:n}=Im(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=Dr(),c=Tr(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=_s(),f=[{label:d(`dashboard.title`),icon:(0,W.jsx)(gE,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,W.jsx)(_E,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,W.jsx)(Sb,{}),to:Y9.devices},{label:d(`nav.standaloneDevices`,`Standalone Devices`),icon:(0,W.jsx)(Jhe,{}),to:Y9.standaloneDevices},{label:d(`nav.networkMap`),icon:(0,W.jsx)(rE,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,W.jsx)(yv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,W.jsx)(FT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,W.jsx)(vE,{}),to:Y9.labels},{label:`Plugins`,icon:(0,W.jsx)(mE,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,W.jsx)(UT,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,W.jsx)(Vhe,{}):(0,W.jsx)(Ohe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,W.jsx)(lE,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,W.jsx)(Lx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,W.jsxs)(X,{children:[(0,W.jsx)(R6e,{sx:{height:`72px`},children:(0,W.jsx)(y6e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,W.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(i8e,{large:e}),e?(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,W.jsx)(yb,{title:e.label,children:(0,W.jsx)(Hh,{component:ra,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,W.jsx)(yb,{title:e.label,children:(0,W.jsx)(Hh,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,W.jsx)(n8e,{})]}):(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(n8e,{}),(0,W.jsx)(Hh,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,W.jsx)(Hhe,{})})]})]})})}),(0,W.jsx)(Q6e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,W.jsx)(oy,{sx:{width:250},children:f.map(e=>(0,W.jsxs)(cy,{selected:l(e.to),onClick:()=>p(e),children:[(0,W.jsx)(fy,{children:e.icon}),(0,W.jsx)(my,{primary:e.label})]},e.label))})}),(0,W.jsx)(t8e,{open:r,onClose:()=>i(!1)})]})},o8e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=M6e(),{isConnected:r}=av();return(0,W.jsxs)(X,{children:[(0,W.jsx)(a8e,{}),(0,W.jsx)(y6e,{}),e&&(0,W.jsxs)(Gh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,W.jsx)(Gh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,W.jsx)(Z9,{sx:{p:2},children:(0,W.jsx)(b6e,{children:(0,W.jsx)(si,{})})}),(0,W.jsx)(N6e,{}),(0,W.jsx)(A6e,{})]})},s8e=Cm({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var c8e=$i([{path:`/`,element:(0,W.jsx)(o8e,{}),children:f6e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(C.StrictMode,{children:(0,W.jsx)(L,{store:h6e,children:(0,W.jsxs)(Yee,{theme:s8e,children:[(0,W.jsx)(Uee,{}),(0,W.jsx)(Dm,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,W.jsx)(xre,{children:(0,W.jsx)(dne,{children:(0,W.jsx)(Ca,{router:c8e})})})]})})}));
466
+ `},t4e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function n4e(e){let{announcements:t=t4e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=e4e}=e,{announce:a,announcement:o}=Z2e(),s=u9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),Q2e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(Y2e,{id:r,value:i.draggable}),C.createElement(X2e,{id:s,announcement:o}));return n?(0,Sa.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function r4e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function i4e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function a4e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function o4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function s4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function c4e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function l4e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function u4e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var d4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=u4e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=a4e(u4e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(o4e)},f4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=c4e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=c4e(r),o=i.reduce((e,t,r)=>e+a4e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(o4e)};function p4e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var m4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=p4e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(s4e)};function h4e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function g4e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function _4e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var v4e=_4e(1);function y4e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function b4e(e,t,n){let r=y4e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var x4e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=x4e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=Q7(e).getComputedStyle(e);t&&(n=b4e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function S4e(e){return S9(e,{ignoreTransform:!0})}function C4e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function w4e(e,t){return t===void 0&&(t=Q7(e).getComputedStyle(e)),t.position===`fixed`}function T4e(e,t){t===void 0&&(t=Q7(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if($7(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!e9(i)||t9(i)||n.includes(i))return n;let a=Q7(e).getComputedStyle(i);return i!==e&&T4e(i,a)&&n.push(i),w4e(i,a)?n:r(i.parentNode)}return e?r(e):n}function E4e(e){let[t]=C9(e,1);return t??null}function w9(e){return!Y7||!e?null:X7(e)?e:Z7(e)?$7(e)||e===n9(e).scrollingElement?window:e9(e)?e:null:null}function D4e(e){return X7(e)?e.scrollX:e.scrollLeft}function O4e(e){return X7(e)?e.scrollY:e.scrollTop}function T9(e){return{x:D4e(e),y:O4e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function k4e(e){return!Y7||!e?!1:e===document.scrollingElement}function A4e(e){let t={x:0,y:0},n=k4e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var j4e={x:.2,y:.2};function M4e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=j4e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=A4e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function N4e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function P4e(e){return e.reduce((e,t)=>f9(e,T9(t)),x9)}function F4e(e){return e.reduce((e,t)=>e+D4e(t),0)}function I4e(e){return e.reduce((e,t)=>e+O4e(t),0)}function L4e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);E4e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var R4e=[[`x`,[`left`,`right`],F4e],[`y`,[`top`,`bottom`],I4e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=P4e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of R4e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function z4e(e){let{EventTarget:t}=Q7(e);return e instanceof t?e:n9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function B4e(e){e.preventDefault()}function V4e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var H4e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},U4e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(n9(t)),this.windowListeners=new O9(Q7(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&L4e(n),t(x9)}handleKeyDown(e){if(m9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=H4e,coordinateGetter:a=U4e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=p9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=A4e(n),p=N4e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,f9(p9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=H4e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function W4e(e){return!!(e&&`distance`in e)}function G4e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=z4e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=n9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(Q7(i)),this.initialCoordinates=h9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,B4e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,B4e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(G4e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(W4e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,V4e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=h9(e)??x9,s=p9(n,o);if(!t&&a){if(W4e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(G4e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},K4e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=n9(t.target);super(e,K4e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var q4e={move:{name:`mousemove`},end:{name:`mouseup`}},J4e;(function(e){e[e.RightClick=2]=`RightClick`})(J4e||={});var Y4e=class extends N9{constructor(e){super(e,q4e,n9(e.event.target))}};Y4e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===J4e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},X4e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};X4e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function Z4e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=$4e({delta:d,disabled:!a}),[m,h]=W2e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=M4e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var Q4e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function $4e(e){let{delta:t,disabled:n}=e,r=c9(t);return o9(e=>{if(n||!r||!e)return Q4e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function e3e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return o9(e=>t==null?null:r??e??null,[r,t])}function t3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var n3e;(function(e){e.Optimized=`optimized`})(n3e||={});var r3e=new Map;function i3e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=a9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=o9(t=>{if(d&&!n)return r3e;if(!t||t===r3e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function a3e(e,t){return o9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function o3e(e,t){return a3e(e,t)}function s3e(e){let{callback:t,disabled:n}=e,r=i9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=i9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function c3e(e){return new D9(S9(e),e)}function l3e(e,t,n){t===void 0&&(t=c3e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=s3e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return r9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function u3e(e){return g4e(e,a3e(e))}var d3e=[];function f3e(e){let t=(0,C.useRef)(e),n=o9(n=>e?n&&n!==d3e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):d3e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function p3e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>f9(e,t),x9):P4e(e):x9,[e,t])}function m3e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?p9(e,n.current):x9}function h3e(e){(0,C.useEffect)(()=>{if(!Y7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function g3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function _3e(e){return(0,C.useMemo)(()=>e?C4e(e):null,[e])}var v3e=[];function y3e(e,t){t===void 0&&(t=S9);let[n]=e,r=_3e(n?Q7(n):null),[i,a]=(0,C.useState)(v3e);function o(){a(()=>e.length?e.map(e=>k4e(e)?r:new D9(t(e),e)):v3e)}let s=z9({callback:o});return r9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function b3e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return e9(t)?t:e}function x3e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(e9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=s9((0,C.useCallback)(e=>{let n=b3e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var S3e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],C3e={current:{}},B9={draggable:{measure:S4e},droppable:{measure:S4e,strategy:R9.WhileDragging,frequency:n3e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},w3e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},T3e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(T3e),E3e=(0,C.createContext)(w3e);function D3e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function O3e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function k3e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=c9(r),o=c9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!m9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=q2e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function A3e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function j3e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function M3e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;r9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=g4e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=E4e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var N3e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var P3e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=S3e,collisionDetection:o=m4e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(O3e,void 0,D3e),[f,p]=$2e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??C3e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=a9(l,Object.values(l)),j=u9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=j3e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=i3e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=e3e(v,_),R=(0,C.useMemo)(()=>O?h9(O):null,[O]),ee=Ee(),z=o3e(L,N.draggable.measure);M3e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=l3e(L,N.draggable.measure,z),B=l3e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=x3e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=u3e(oe?null:te),ce=_3e(ie?Q7(ie):null),le=f3e(g?ne??L:null),ue=y3e(le),H=A3e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),de=R?f9(R,y):null,fe=p3e(le),pe=m3e(fe),me=m3e(fe,[te]),he=f9(H,pe),U=ae?v4e(ae,H):null,ge=w&&U?o({active:w,collisionRect:U,droppableRects:P,droppableContainers:M,pointerCoordinates:de}):null,_e=l4e(ge,`id`),[ve,ye]=(0,C.useState)(null),be=h4e(oe?H:f9(H,me),ve?.rect??null,te),xe=(0,C.useRef)(null),Se=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;xe.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,Sa.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(xe.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,Sa.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ye(null),D(null),k(null),xe.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Ce=t3e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Se(n,t))},[v,Se]));h3e(a),r9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:he.x,y:he.y},over:i};(0,Sa.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[he.x,he.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(_e),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,Sa.unstable_batchedUpdates)(()=>{ye(s),a?.(c),f({type:`onDragOver`,event:c})})},[_e]),r9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:U,collisions:ge,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:ve,scrollableAncestors:le,scrollAdjustedTranslate:he},S.current={initial:ae,translated:U}},[w,L,ge,U,v,ie,ae,P,b,ve,le,he]),Z4e({...ee,delta:y,draggingRect:U,pointerCoordinates:de,scrollableAncestors:le,scrollableAncestorRects:ue});let we=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:ge,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:ve,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,ge,B,re,v,b,P,ve,F,le,ue,N,I,ce]),Te=(0,C.useMemo)(()=>({activatorEvent:O,activators:Ce,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:ve,measureDroppableContainers:F}),[O,Ce,w,te,d,j,v,ve,F]);return C.createElement(v9.Provider,{value:p},C.createElement(H9.Provider,{value:Te},C.createElement(E3e.Provider,{value:we},C.createElement(N3e.Provider,{value:be},i)),C.createElement(k3e,{disabled:n?.restoreFocus===!1})),C.createElement(n4e,{...n,hiddenTextDescribedById:j}));function Ee(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),F3e=(0,C.createContext)(null),I3e=`button`,L3e=`Draggable`;function R3e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=u9(L3e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=I3e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?N3e:F3e),[v,y]=s9(),[b,x]=s9(),S=g3e(o,t),w=a9(n);return r9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===I3e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function z3e(){return(0,C.useContext)(E3e)}var B3e=`Droppable`,V3e={timeout:25};function H3e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=u9(B3e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...V3e,...i},_=a9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=s9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=a9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function U3e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function W3e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function G3e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var K3e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},q3e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=J3e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function J3e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var Y3e=`Sortable`,X3e=C.createContext({activeIndex:-1,containerId:Y3e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:K3e,disabled:{draggable:!1,droppable:!1}});function Z3e(e){let{children:t,id:n,items:r,strategy:i=K3e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=z3e(),d=u9(Y3e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!W3e(p,_.current),y=g!==-1&&h===-1||v,b=G3e(a);r9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:U3e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(X3e.Provider,{value:x},t)}var Q3e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},$3e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},e6e={duration:200,easing:`ease`},t6e=`transform`,n6e=g9.Transition.toString({property:t6e,duration:0,easing:`linear`}),r6e={roleDescription:`sortable`};function i6e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return r9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function a6e(e){let{animateLayoutChanges:t=$3e,attributes:n,disabled:r,data:i,getNewIndex:a=Q3e,id:o,strategy:s,resizeObserverConfig:c,transition:l=e6e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(X3e),y=o6e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=H3e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=R3e({id:o,data:x,attributes:{...r6e,...n},disabled:y.draggable}),R=U2e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=i6e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return n6e;if(!(te&&!m9(k)||!l)&&(ee||ae))return g9.Transition.toString({...l,property:t6e})}}function o6e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var s6e=[j9.Down,j9.Right,j9.Up,j9.Left],c6e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(s6e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=f4e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=l4e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=l6e(e,t),a=u6e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:p9(u,l)}}}};function l6e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function u6e(e,t){return!q9(e)||!q9(t)||!l6e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var d6e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=a6e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{LE(e.id).then(l)},[e.id]),(0,W.jsx)(Cv,{ref:i,style:{transform:g9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,W.jsxs)(Ev,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,W.jsx)(X,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,W.jsx)(jhe,{})}),(0,W.jsx)(Pv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,W.jsx)(X,{component:`img`,src:RE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,W.jsx)(Mb,{sx:{bgcolor:WE(e),width:40,height:40,boxShadow:2},children:(0,W.jsx)(UE(e),{sx:{fontSize:24}})}),(0,W.jsxs)(X,{sx:{flex:1},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},f6e=()=>{let{t:e}=_s(),t=ey(),{content:n,isLoading:r}=KT(),i=Qme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=i4e(r4e(P9),r4e(M9,{coordinateGetter:c6e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,W.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,W.jsxs)(Yv,{spacing:3,children:[(0,W.jsx)($v,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,W.jsxs)(X,{display:`flex`,alignItems:`center`,gap:2,children:[(0,W.jsx)(yv,{color:`primary`,fontSize:`large`}),(0,W.jsxs)(X,{children:[(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,W.jsx)(Gh,{severity:`info`,action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,startIcon:(0,W.jsx)(DE,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,W.jsx)(P3e,{sensors:l,collisionDetection:d4e,onDragEnd:u,children:(0,W.jsx)(Z3e,{items:f,strategy:q3e,children:(0,W.jsx)(Yv,{spacing:1,children:a.map((e,t)=>(0,W.jsx)(d6e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,W.jsx)(X,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(Z,{variant:`contained`,startIcon:(0,W.jsx)(DE,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,standaloneDevices:`/standalone-devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},p6e=[{path:``,element:(0,W.jsx)(Sre,{}),children:[{path:``,element:(0,W.jsx)(d_e,{})},{path:Y9.bridges,element:(0,W.jsx)(a_e,{})},{path:Y9.createBridge,element:(0,W.jsx)(EJe,{})},{path:Y9.areaSetup,element:(0,W.jsx)(wae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,W.jsx)(mhe,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,W.jsx)(OJe,{})},{path:Y9.devices,element:(0,W.jsx)(A_e,{})},{path:Y9.standaloneDevices,element:(0,W.jsx)(H2e,{})},{path:Y9.networkMap,element:(0,W.jsx)(s2e,{})},{path:Y9.health,element:(0,W.jsx)(ZJe,{})},{path:Y9.labels,element:(0,W.jsx)(QJe,{})},{path:Y9.lockCredentials,element:(0,W.jsx)(iYe,{})},{path:Y9.plugins,element:(0,W.jsx)(j2e,{})},{path:Y9.settings,element:(0,W.jsx)(z2e,{})},{path:Y9.startup,element:(0,W.jsx)(f6e,{})},{path:`*`,element:(0,W.jsx)(aYe,{})}]}],m6e=k_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(Y_.pending,e=>{e.items.isLoading=!0}).addCase(Y_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(Y_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(X_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(Q_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase($_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(Z_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(ev,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(tv,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),h6e=k_({byBridge:{}},e=>{e.addCase(ZT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(ZT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(ZT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=k_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(ZT.pending,e=>{e.isLoading=!0}).addCase(ZT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(ZT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),g6e=$ne({reducer:{bridges:m6e,devices:h6e}}),Z9=Sp({createStyledComponent:q(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${J(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>jm({props:e,name:`MuiContainer`})});function _6e(e){return Vd(`MuiToolbar`,e)}Hd(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var v6e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return _p({root:[`root`,!n&&`gutters`,r]},_6e,t)},y6e=q(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Lm(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),b6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,W.jsx)(y6e,{as:i,className:G(v6e(c).root,r),ref:t,ownerState:c,...s})}),x6e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,W.jsxs)(X,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(wb,{color:`error`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:zs.t(`errorBoundary.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??zs.t(`errorBoundary.fallbackMessage`)}),(0,W.jsx)(Z,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:zs.t(`errorBoundary.reload`)})]}):this.props.children}};function S6e(e){return Vd(`MuiFab`,e)}var C6e=Hd(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),w6e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=_p({root:[`root`,n,`size${J(i)}`,t===`inherit`?`colorInherit`:t]},S6e,r);return{...r,...a}},T6e=q(Fh,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>km(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${J(n.size)}`],n.color===`inherit`&&t.colorInherit,t[J(n.size)],t[n.color]]}})(Lm(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${C6e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Lm(({theme:e})=>({variants:[...Object.entries(e.palette).filter(Km([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Lm(({theme:e})=>({[`&.${C6e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),E6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=w6e(p);return(0,W.jsx)(T6e,{className:G(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:G(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),D6e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`hu`,flag:`🇭🇺`,name:`Magyar`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`},{code:`pt-BR`,flag:`🇧🇷`,name:`Português (Brasil)`}],O6e=`hamh-custom-languages`;function k6e(){try{let e=localStorage.getItem(O6e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var A6e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function j6e(){let{t:e,i18n:t}=_s(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...D6e,...k6e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,W.jsx)(Jh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,W.jsxs)(X,{children:[(0,W.jsx)(E6e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,W.jsx)(Rhe,{})}),(0,W.jsx)(pb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,W.jsx)(zb,{...t,timeout:200,children:(0,W.jsxs)(qm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,W.jsxs)(X,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,W.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,W.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,W.jsx)(Zb,{}),(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,W.jsx)(ty,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,W.jsx)(Qv,{href:A6e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var M6e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.847`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.17.7`,"@matter/nodejs":`0.17.7`,"@matter/protocol":`0.17.7`,"@matter/general":`0.17.7`,"@matter/types":`0.17.7`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.2.0`,nocache:`4.0.0`,unzipper:`0.12.3`,werift:`0.22.4`,ws:`8.21.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function N6e(){let e=`2.1.0-alpha.847`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>t?e!==t:!1,[t]);return(0,C.useMemo)(()=>({name:M6e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var P6e=()=>{let{t:e}=_s(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,W.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,W.jsx)(Zb,{sx:{mt:4,mb:4}}),(0,W.jsx)(Hv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,W.jsx)(Hv,{size:{xs:12,sm:`auto`},children:(0,W.jsx)(Z,{fullWidth:!0,size:`small`,variant:`outlined`,component:Qv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function F6e(e){return Vd(`MuiAppBar`,e)}Hd(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var I6e=e=>{let{color:t,position:n,classes:r}=e;return _p({root:[`root`,`color${J(t)}`,`position${J(n)}`]},F6e,r)},L6e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,R6e=q(qm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${J(n.position)}`],t[`color${J(n.color)}`]]}})(Lm(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(Km([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?L6e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?L6e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),z6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,W.jsx)(R6e,{square:!0,component:`header`,ownerState:c,elevation:4,className:G(I6e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),B6e={visibility:`hidden`};function V6e(e,t,n){let r=n&&n.getBoundingClientRect(),i=rh(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function H6e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=V6e(e,t,H6e(n));r&&(t.style.transform=r)}var U6e=C.forwardRef(function(e,t){let n=Em(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=dh(Kh(s),x,t),w=Xh(x,(e,t)=>{Q9(l,e,c),Yh(e),f&&f(e,t)}),T=Xh(x,(e,t)=>{let r=Qh({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Xh(x,p),D=Xh(x,_),O=Xh(x,e=>{let t=Qh({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Xh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Qm(()=>{x.current&&Q9(l,x.current,c)}),t=rh(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,W.jsx)(Eh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:B6e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function W6e(e){return Vd(`MuiDrawer`,e)}Hd(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var G6e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},K6e=e=>{let{classes:t,anchor:n,variant:r}=e;return _p({root:[`root`,`anchor${J(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${J(n)}`,r!==`temporary`&&`paperAnchorDocked${J(n)}`]},W6e,t)},q6e=q(Ub,{name:`MuiDrawer`,slot:`Root`,overridesResolver:G6e})(Lm(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),J6e=q(`div`,{shouldForwardProp:km,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:G6e})({flex:`0 0 auto`}),Y6e=q(qm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${J(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${J(n.anchor)}`]]}})(Lm(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),X6e={left:`right`,right:`left`,top:`down`,bottom:`up`};function Z6e(e){return[`left`,`right`].includes(e)}function Q6e({direction:e},t){return e===`rtl`&&Z6e(t)?X6e[t]:t}var $6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiDrawer`}),r=Em(),i=If(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=Q6e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=K6e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:fh(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Gm(`root`,{ref:t,elementType:q6e,className:G(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Gm(`paper`,{elementType:Y6e,shouldForwardComponentProp:!0,className:G(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Gm(`docked`,{elementType:J6e,ref:t,className:G(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Gm(`transition`,{elementType:U6e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:X6e[E],timeout:y,appear:T.current}}),ee=(0,W.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,W.jsx)(F,{...I,children:ee});let z=(0,W.jsx)(L,{...R,children:ee});return b===`persistent`?(0,W.jsx)(F,{...I,children:z}):(0,W.jsx)(j,{...M,children:z})}),e8e=uf({themeId:Tm}),t8e={error:jx,warn:ny,info:Eb,debug:lE},n8e=({open:e,onClose:t})=>{let{t:n}=_s(),r=Em(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,W.jsx)(t8e[e]||Eb,{sx:{fontSize:16,color:i[e]}});return(0,W.jsxs)(Kb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,W.jsxs)(Yb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(lE,{}),n(`logs.title`),(0,W.jsx)(X,{sx:{flexGrow:1}}),(0,W.jsx)(yb,{title:n(`logs.autoRefresh`),children:(0,W.jsx)(Pv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,W.jsx)(Hh,{onClick:t,children:(0,W.jsx)(dE,{})})]}),(0,W.jsxs)(Jb,{children:[(0,W.jsx)(Yv,{spacing:2,sx:{mb:2},children:(0,W.jsxs)(Yv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,W.jsxs)(Iv,{size:`small`,sx:{minWidth:200},children:[(0,W.jsx)(Jx,{children:n(`logs.logLevel`)}),(0,W.jsxs)(AS,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,W.jsx)(X,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,W.jsx)(Pv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,W.jsx)(jS,{value:`error`,children:n(`logs.error`)}),(0,W.jsx)(jS,{value:`warn`,children:n(`logs.warning`)}),(0,W.jsx)(jS,{value:`info`,children:n(`logs.info`)}),(0,W.jsx)(jS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,W.jsx)(PS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,W.jsx)(Z,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,W.jsx)(Z,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,W.jsx)(X,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,W.jsx)(X,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,W.jsx)(Yv,{spacing:1,children:a.map((e,t)=>(0,W.jsxs)(X,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,W.jsx)(Pv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,W.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,W.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,W.jsx)(qb,{children:(0,W.jsx)(Z,{onClick:t,children:n(`common.close`)})})]})};function r8e(){let{t:e}=_s(),{isConnected:t}=av(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,W.jsxs)(X,{sx:{p:.5},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,W.jsx)(yb,{title:d,arrow:!0,children:(0,W.jsx)(Pv,{icon:i||!s?(0,W.jsx)(jx,{fontSize:`small`}):l?(0,W.jsx)(vv,{fontSize:`small`}):(0,W.jsx)(kb,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var i8e=e=>(0,W.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,W.jsxs)(`g`,{style:{display:`inline`},children:[(0,W.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,W.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),a8e=e=>{let t=N6e();return(0,W.jsxs)(X,{component:ra,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,W.jsx)(i8e,{style:{height:`40px`}}),(0,W.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(J).join(`-`)}),e.large&&(0,W.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},o8e=()=>{let e=e8e(`(min-width:600px)`),{mode:t,setMode:n}=Im(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=Dr(),c=Tr(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=_s(),f=[{label:d(`dashboard.title`),icon:(0,W.jsx)(gE,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,W.jsx)(_E,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,W.jsx)(Sb,{}),to:Y9.devices},{label:d(`nav.standaloneDevices`,`Standalone Devices`),icon:(0,W.jsx)(Jhe,{}),to:Y9.standaloneDevices},{label:d(`nav.networkMap`),icon:(0,W.jsx)(rE,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,W.jsx)(yv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,W.jsx)(FT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,W.jsx)(vE,{}),to:Y9.labels},{label:`Plugins`,icon:(0,W.jsx)(mE,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,W.jsx)(UT,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,W.jsx)(Vhe,{}):(0,W.jsx)(Ohe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,W.jsx)(lE,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,W.jsx)(Lx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,W.jsxs)(X,{children:[(0,W.jsx)(z6e,{sx:{height:`72px`},children:(0,W.jsx)(b6e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,W.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(a8e,{large:e}),e?(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,W.jsx)(yb,{title:e.label,children:(0,W.jsx)(Hh,{component:ra,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,W.jsx)(yb,{title:e.label,children:(0,W.jsx)(Hh,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,W.jsx)(r8e,{})]}):(0,W.jsxs)(X,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(r8e,{}),(0,W.jsx)(Hh,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,W.jsx)(Hhe,{})})]})]})})}),(0,W.jsx)($6e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,W.jsx)(oy,{sx:{width:250},children:f.map(e=>(0,W.jsxs)(cy,{selected:l(e.to),onClick:()=>p(e),children:[(0,W.jsx)(fy,{children:e.icon}),(0,W.jsx)(my,{primary:e.label})]},e.label))})}),(0,W.jsx)(n8e,{open:r,onClose:()=>i(!1)})]})},s8e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=N6e(),{isConnected:r}=av();return(0,W.jsxs)(X,{children:[(0,W.jsx)(o8e,{}),(0,W.jsx)(b6e,{}),e&&(0,W.jsxs)(Gh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,W.jsx)(Z,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,W.jsx)(Gh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,W.jsx)(Z9,{sx:{p:2},children:(0,W.jsx)(x6e,{children:(0,W.jsx)(si,{})})}),(0,W.jsx)(P6e,{}),(0,W.jsx)(j6e,{})]})},c8e=Cm({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var l8e=$i([{path:`/`,element:(0,W.jsx)(s8e,{}),children:p6e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(C.StrictMode,{children:(0,W.jsx)(L,{store:g6e,children:(0,W.jsxs)(Yee,{theme:c8e,children:[(0,W.jsx)(Uee,{}),(0,W.jsx)(Dm,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,W.jsx)(xre,{children:(0,W.jsx)(dne,{children:(0,W.jsx)(Ca,{router:l8e})})})]})})}));
@@ -8,7 +8,7 @@
8
8
  <!-- BASE -->
9
9
  <base href="/" />
10
10
  <!-- /BASE -->
11
- <script type="module" crossorigin src="./assets/index-By39Nd-r.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-DQRaqeXk.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="./assets/index-G-pxPqsB.css">
13
13
  </head>
14
14
  <body>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@riddix/hamh",
3
3
  "description": "",
4
- "version": "2.1.0-alpha.845",
4
+ "version": "2.1.0-alpha.847",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "bin": {
@@ -58,9 +58,9 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/lodash-es": "^4.17.12",
61
- "@home-assistant-matter-hub/backend": "2.1.0-alpha.845",
62
- "@home-assistant-matter-hub/common": "2.1.0-alpha.845",
63
- "@home-assistant-matter-hub/frontend": "2.1.0-alpha.845"
61
+ "@home-assistant-matter-hub/backend": "2.1.0-alpha.847",
62
+ "@home-assistant-matter-hub/common": "2.1.0-alpha.847",
63
+ "@home-assistant-matter-hub/frontend": "2.1.0-alpha.847"
64
64
  },
65
65
  "overrides": {
66
66
  "minimatch": "9.0.7",