@norskvideo/norsk-studio-built-ins 1.27.0-2025-07-09-1c530503 → 1.27.0-2025-07-09-d12abafa

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.
package/client/info.js CHANGED
@@ -311,6 +311,16 @@ var require_cjs = __commonJS({
311
311
  }
312
312
  });
313
313
 
314
+ // ../../node_modules/@react-icons/all-files/fa/FaPlay.js
315
+ var require_FaPlay = __commonJS({
316
+ "../../node_modules/@react-icons/all-files/fa/FaPlay.js"(exports, module) {
317
+ var GenIcon = require_cjs().GenIcon;
318
+ module.exports.FaPlay = function FaPlay2(props) {
319
+ return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z" } }] })(props);
320
+ };
321
+ }
322
+ });
323
+
314
324
  // ../../node_modules/@react-icons/all-files/fa/FaVideo.js
315
325
  var require_FaVideo = __commonJS({
316
326
  "../../node_modules/@react-icons/all-files/fa/FaVideo.js"(exports, module) {
@@ -346,7 +356,7 @@ var require_util = __commonJS({
346
356
  exports.getObjectByType = getObjectByType;
347
357
  exports.getObjectByPath = getObjectByPath;
348
358
  exports.displayNodeId = displayNodeId;
349
- exports.assertUnreachable = assertUnreachable28;
359
+ exports.assertUnreachable = assertUnreachable29;
350
360
  exports.waitForCondition = waitForCondition;
351
361
  exports.streamMatchesExpected = streamMatchesExpected;
352
362
  exports.shortStreamNameFromDefinition = shortStreamNameFromDefinition;
@@ -419,7 +429,7 @@ var require_util = __commonJS({
419
429
  }
420
430
  return document2.components[id]?.config?.displayName ?? id;
421
431
  }
422
- function assertUnreachable28(_) {
432
+ function assertUnreachable29(_) {
423
433
  throw new Error("Didn't expect to get here");
424
434
  }
425
435
  async function waitForCondition(condition, timeout, interval, name) {
@@ -47149,13 +47159,13 @@ var require_dist3 = __commonJS({
47149
47159
  });
47150
47160
  module.exports = __toCommonJS2(src_exports);
47151
47161
  var React3 = __toESM2(require_react());
47152
- var import_jsx_runtime52 = require_jsx_runtime();
47162
+ var import_jsx_runtime53 = require_jsx_runtime();
47153
47163
  function createContext2(rootComponentName, defaultContext) {
47154
47164
  const Context = React3.createContext(defaultContext);
47155
47165
  const Provider = (props) => {
47156
47166
  const { children, ...context } = props;
47157
47167
  const value = React3.useMemo(() => context, Object.values(context));
47158
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
47168
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
47159
47169
  };
47160
47170
  Provider.displayName = rootComponentName + "Provider";
47161
47171
  function useContext2(consumerName) {
@@ -47178,7 +47188,7 @@ var require_dist3 = __commonJS({
47178
47188
  const { scope, children, ...context } = props;
47179
47189
  const Context = scope?.[scopeName]?.[index3] || BaseContext;
47180
47190
  const value = React3.useMemo(() => context, Object.values(context));
47181
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
47191
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
47182
47192
  };
47183
47193
  Provider.displayName = rootComponentName + "Provider";
47184
47194
  function useContext2(consumerName, scope) {
@@ -47346,7 +47356,7 @@ var require_dist5 = __commonJS({
47346
47356
  module.exports = __toCommonJS2(src_exports);
47347
47357
  var React3 = __toESM2(require_react());
47348
47358
  var import_react_compose_refs = require_dist4();
47349
- var import_jsx_runtime52 = require_jsx_runtime();
47359
+ var import_jsx_runtime53 = require_jsx_runtime();
47350
47360
  var Slot = React3.forwardRef((props, forwardedRef) => {
47351
47361
  const { children, ...slotProps } = props;
47352
47362
  const childrenArray = React3.Children.toArray(children);
@@ -47362,9 +47372,9 @@ var require_dist5 = __commonJS({
47362
47372
  return child;
47363
47373
  }
47364
47374
  });
47365
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
47375
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
47366
47376
  }
47367
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
47377
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
47368
47378
  });
47369
47379
  Slot.displayName = "Slot";
47370
47380
  var SlotClone = React3.forwardRef((props, forwardedRef) => {
@@ -47381,7 +47391,7 @@ var require_dist5 = __commonJS({
47381
47391
  });
47382
47392
  SlotClone.displayName = "SlotClone";
47383
47393
  var Slottable = ({ children }) => {
47384
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_jsx_runtime52.Fragment, { children });
47394
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment, { children });
47385
47395
  };
47386
47396
  function isSlottable(child) {
47387
47397
  return React3.isValidElement(child) && child.type === Slottable;
@@ -47467,7 +47477,7 @@ var require_dist6 = __commonJS({
47467
47477
  var import_react_context = require_dist3();
47468
47478
  var import_react_compose_refs = require_dist4();
47469
47479
  var import_react_slot = require_dist5();
47470
- var import_jsx_runtime52 = require_jsx_runtime();
47480
+ var import_jsx_runtime53 = require_jsx_runtime();
47471
47481
  function createCollection(name) {
47472
47482
  const PROVIDER_NAME = name + "CollectionProvider";
47473
47483
  const [createCollectionContext, createCollectionScope] = (0, import_react_context.createContextScope)(PROVIDER_NAME);
@@ -47479,7 +47489,7 @@ var require_dist6 = __commonJS({
47479
47489
  const { scope, children } = props;
47480
47490
  const ref = import_react18.default.useRef(null);
47481
47491
  const itemMap = import_react18.default.useRef(/* @__PURE__ */ new Map()).current;
47482
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
47492
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
47483
47493
  };
47484
47494
  CollectionProvider.displayName = PROVIDER_NAME;
47485
47495
  const COLLECTION_SLOT_NAME = name + "CollectionSlot";
@@ -47488,7 +47498,7 @@ var require_dist6 = __commonJS({
47488
47498
  const { scope, children } = props;
47489
47499
  const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
47490
47500
  const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, context.collectionRef);
47491
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_slot.Slot, { ref: composedRefs, children });
47501
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_slot.Slot, { ref: composedRefs, children });
47492
47502
  }
47493
47503
  );
47494
47504
  CollectionSlot.displayName = COLLECTION_SLOT_NAME;
@@ -47504,7 +47514,7 @@ var require_dist6 = __commonJS({
47504
47514
  context.itemMap.set(ref, { ref, ...itemData });
47505
47515
  return () => void context.itemMap.delete(ref);
47506
47516
  });
47507
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_slot.Slot, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
47517
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_slot.Slot, { ...{ [ITEM_DATA_ATTR]: "" }, ref: composedRefs, children });
47508
47518
  }
47509
47519
  );
47510
47520
  CollectionItemSlot.displayName = ITEM_SLOT_NAME;
@@ -47571,11 +47581,11 @@ var require_dist7 = __commonJS({
47571
47581
  });
47572
47582
  module.exports = __toCommonJS2(src_exports);
47573
47583
  var React3 = __toESM2(require_react());
47574
- var import_jsx_runtime52 = require_jsx_runtime();
47584
+ var import_jsx_runtime53 = require_jsx_runtime();
47575
47585
  var DirectionContext = React3.createContext(void 0);
47576
47586
  var DirectionProvider = (props) => {
47577
47587
  const { dir, children } = props;
47578
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DirectionContext.Provider, { value: dir, children });
47588
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DirectionContext.Provider, { value: dir, children });
47579
47589
  };
47580
47590
  function useDirection(localDir) {
47581
47591
  const globalDir = React3.useContext(DirectionContext);
@@ -47626,7 +47636,7 @@ var require_dist8 = __commonJS({
47626
47636
  var React3 = __toESM2(require_react());
47627
47637
  var ReactDOM2 = __toESM2(require_react_dom());
47628
47638
  var import_react_slot = require_dist5();
47629
- var import_jsx_runtime52 = require_jsx_runtime();
47639
+ var import_jsx_runtime53 = require_jsx_runtime();
47630
47640
  var NODES = [
47631
47641
  "a",
47632
47642
  "button",
@@ -47652,7 +47662,7 @@ var require_dist8 = __commonJS({
47652
47662
  if (typeof window !== "undefined") {
47653
47663
  window[Symbol.for("radix-ui")] = true;
47654
47664
  }
47655
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
47665
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
47656
47666
  });
47657
47667
  Node2.displayName = `Primitive.${node}`;
47658
47668
  return { ...primitive, [node]: Node2 };
@@ -47811,7 +47821,7 @@ var require_dist11 = __commonJS({
47811
47821
  var import_react_compose_refs = require_dist4();
47812
47822
  var import_react_use_callback_ref = require_dist9();
47813
47823
  var import_react_use_escape_keydown = require_dist10();
47814
- var import_jsx_runtime52 = require_jsx_runtime();
47824
+ var import_jsx_runtime53 = require_jsx_runtime();
47815
47825
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
47816
47826
  var CONTEXT_UPDATE = "dismissableLayer.update";
47817
47827
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -47906,7 +47916,7 @@ var require_dist11 = __commonJS({
47906
47916
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
47907
47917
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
47908
47918
  }, []);
47909
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
47919
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
47910
47920
  import_react_primitive.Primitive.div,
47911
47921
  {
47912
47922
  ...layerProps,
@@ -47940,7 +47950,7 @@ var require_dist11 = __commonJS({
47940
47950
  };
47941
47951
  }
47942
47952
  }, [context.branches]);
47943
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
47953
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
47944
47954
  });
47945
47955
  DismissableLayerBranch.displayName = BRANCH_NAME;
47946
47956
  function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
@@ -48142,7 +48152,7 @@ var require_dist13 = __commonJS({
48142
48152
  var import_react_compose_refs = require_dist4();
48143
48153
  var import_react_primitive = require_dist8();
48144
48154
  var import_react_use_callback_ref = require_dist9();
48145
- var import_jsx_runtime52 = require_jsx_runtime();
48155
+ var import_jsx_runtime53 = require_jsx_runtime();
48146
48156
  var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
48147
48157
  var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
48148
48158
  var EVENT_OPTIONS = { bubbles: false, cancelable: true };
@@ -48272,7 +48282,7 @@ var require_dist13 = __commonJS({
48272
48282
  },
48273
48283
  [loop, trapped, focusScope.paused]
48274
48284
  );
48275
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
48285
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
48276
48286
  });
48277
48287
  FocusScope.displayName = FOCUS_SCOPE_NAME;
48278
48288
  function focusFirst(candidates, { select = false } = {}) {
@@ -50632,11 +50642,11 @@ var require_dist16 = __commonJS({
50632
50642
  module.exports = __toCommonJS2(src_exports);
50633
50643
  var React3 = __toESM2(require_react());
50634
50644
  var import_react_primitive = require_dist8();
50635
- var import_jsx_runtime52 = require_jsx_runtime();
50645
+ var import_jsx_runtime53 = require_jsx_runtime();
50636
50646
  var NAME = "Arrow";
50637
50647
  var Arrow = React3.forwardRef((props, forwardedRef) => {
50638
50648
  const { children, width = 10, height = 5, ...arrowProps } = props;
50639
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
50649
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50640
50650
  import_react_primitive.Primitive.svg,
50641
50651
  {
50642
50652
  ...arrowProps,
@@ -50645,7 +50655,7 @@ var require_dist16 = __commonJS({
50645
50655
  height,
50646
50656
  viewBox: "0 0 30 10",
50647
50657
  preserveAspectRatio: "none",
50648
- children: props.asChild ? children : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("polygon", { points: "0,0 30,0 15,10" })
50658
+ children: props.asChild ? children : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("polygon", { points: "0,0 30,0 15,10" })
50649
50659
  }
50650
50660
  );
50651
50661
  });
@@ -50785,7 +50795,7 @@ var require_dist18 = __commonJS({
50785
50795
  var import_react_use_callback_ref = require_dist9();
50786
50796
  var import_react_use_layout_effect = require_dist14();
50787
50797
  var import_react_use_size = require_dist17();
50788
- var import_jsx_runtime52 = require_jsx_runtime();
50798
+ var import_jsx_runtime53 = require_jsx_runtime();
50789
50799
  var SIDE_OPTIONS = ["top", "right", "bottom", "left"];
50790
50800
  var ALIGN_OPTIONS = ["start", "center", "end"];
50791
50801
  var POPPER_NAME = "Popper";
@@ -50794,7 +50804,7 @@ var require_dist18 = __commonJS({
50794
50804
  var Popper = (props) => {
50795
50805
  const { __scopePopper, children } = props;
50796
50806
  const [anchor, setAnchor] = React3.useState(null);
50797
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
50807
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
50798
50808
  };
50799
50809
  Popper.displayName = POPPER_NAME;
50800
50810
  var ANCHOR_NAME = "PopperAnchor";
@@ -50807,7 +50817,7 @@ var require_dist18 = __commonJS({
50807
50817
  React3.useEffect(() => {
50808
50818
  context.onAnchorChange(virtualRef?.current || ref.current);
50809
50819
  });
50810
- return virtualRef ? null : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...anchorProps, ref: composedRefs });
50820
+ return virtualRef ? null : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...anchorProps, ref: composedRefs });
50811
50821
  }
50812
50822
  );
50813
50823
  PopperAnchor.displayName = ANCHOR_NAME;
@@ -50901,7 +50911,7 @@ var require_dist18 = __commonJS({
50901
50911
  if (content)
50902
50912
  setContentZIndex(window.getComputedStyle(content).zIndex);
50903
50913
  }, [content]);
50904
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
50914
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50905
50915
  "div",
50906
50916
  {
50907
50917
  ref: refs.setFloating,
@@ -50925,7 +50935,7 @@ var require_dist18 = __commonJS({
50925
50935
  }
50926
50936
  },
50927
50937
  dir: props.dir,
50928
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
50938
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50929
50939
  PopperContentProvider,
50930
50940
  {
50931
50941
  scope: __scopePopper,
@@ -50934,7 +50944,7 @@ var require_dist18 = __commonJS({
50934
50944
  arrowX,
50935
50945
  arrowY,
50936
50946
  shouldHideArrow: cannotCenterArrow,
50937
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
50947
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50938
50948
  import_react_primitive.Primitive.div,
50939
50949
  {
50940
50950
  "data-side": placedSide,
@@ -50971,7 +50981,7 @@ var require_dist18 = __commonJS({
50971
50981
  // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)
50972
50982
  // doesn't report size as we'd expect on SVG elements.
50973
50983
  // it reports their bounding box which is effectively the largest path inside the SVG.
50974
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
50984
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50975
50985
  "span",
50976
50986
  {
50977
50987
  ref: contentContext.onArrowChange,
@@ -50994,7 +51004,7 @@ var require_dist18 = __commonJS({
50994
51004
  }[contentContext.placedSide],
50995
51005
  visibility: contentContext.shouldHideArrow ? "hidden" : void 0
50996
51006
  },
50997
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
51007
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
50998
51008
  ArrowPrimitive.Root,
50999
51009
  {
51000
51010
  ...arrowProps,
@@ -51098,14 +51108,14 @@ var require_dist19 = __commonJS({
51098
51108
  var import_react_dom = __toESM2(require_react_dom());
51099
51109
  var import_react_primitive = require_dist8();
51100
51110
  var import_react_use_layout_effect = require_dist14();
51101
- var import_jsx_runtime52 = require_jsx_runtime();
51111
+ var import_jsx_runtime53 = require_jsx_runtime();
51102
51112
  var PORTAL_NAME = "Portal";
51103
51113
  var Portal = React3.forwardRef((props, forwardedRef) => {
51104
51114
  const { container: containerProp, ...portalProps } = props;
51105
51115
  const [mounted, setMounted] = React3.useState(false);
51106
51116
  (0, import_react_use_layout_effect.useLayoutEffect)(() => setMounted(true), []);
51107
51117
  const container = containerProp || mounted && globalThis?.document?.body;
51108
- return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
51118
+ return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
51109
51119
  });
51110
51120
  Portal.displayName = PORTAL_NAME;
51111
51121
  var Root = Portal;
@@ -51283,11 +51293,11 @@ var require_dist22 = __commonJS({
51283
51293
  module.exports = __toCommonJS2(src_exports);
51284
51294
  var React3 = __toESM2(require_react());
51285
51295
  var import_react_primitive = require_dist8();
51286
- var import_jsx_runtime52 = require_jsx_runtime();
51296
+ var import_jsx_runtime53 = require_jsx_runtime();
51287
51297
  var NAME = "VisuallyHidden";
51288
51298
  var VisuallyHidden = React3.forwardRef(
51289
51299
  (props, forwardedRef) => {
51290
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
51300
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
51291
51301
  import_react_primitive.Primitive.span,
51292
51302
  {
51293
51303
  ...props,
@@ -53446,7 +53456,7 @@ var require_dist23 = __commonJS({
53446
53456
  var import_react_visually_hidden = require_dist22();
53447
53457
  var import_aria_hidden = require_es5();
53448
53458
  var import_react_remove_scroll = require_es57();
53449
- var import_jsx_runtime52 = require_jsx_runtime();
53459
+ var import_jsx_runtime53 = require_jsx_runtime();
53450
53460
  var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
53451
53461
  var SELECTION_KEYS = [" ", "Enter"];
53452
53462
  var SELECT_NAME = "Select";
@@ -53494,7 +53504,7 @@ var require_dist23 = __commonJS({
53494
53504
  const isFormControl = trigger ? form || !!trigger.closest("form") : true;
53495
53505
  const [nativeOptionsSet, setNativeOptionsSet] = React3.useState(/* @__PURE__ */ new Set());
53496
53506
  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
53497
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
53507
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
53498
53508
  SelectProvider,
53499
53509
  {
53500
53510
  required,
@@ -53514,7 +53524,7 @@ var require_dist23 = __commonJS({
53514
53524
  triggerPointerDownPosRef,
53515
53525
  disabled,
53516
53526
  children: [
53517
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53527
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53518
53528
  SelectNativeOptionsProvider,
53519
53529
  {
53520
53530
  scope: props.__scopeSelect,
@@ -53531,7 +53541,7 @@ var require_dist23 = __commonJS({
53531
53541
  children
53532
53542
  }
53533
53543
  ) }),
53534
- isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
53544
+ isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
53535
53545
  BubbleSelect,
53536
53546
  {
53537
53547
  "aria-hidden": true,
@@ -53544,7 +53554,7 @@ var require_dist23 = __commonJS({
53544
53554
  disabled,
53545
53555
  form,
53546
53556
  children: [
53547
- value === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("option", { value: "" }) : null,
53557
+ value === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("option", { value: "" }) : null,
53548
53558
  Array.from(nativeOptionsSet)
53549
53559
  ]
53550
53560
  },
@@ -53585,7 +53595,7 @@ var require_dist23 = __commonJS({
53585
53595
  };
53586
53596
  }
53587
53597
  };
53588
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53598
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53589
53599
  import_react_primitive.Primitive.button,
53590
53600
  {
53591
53601
  type: "button",
@@ -53646,13 +53656,13 @@ var require_dist23 = __commonJS({
53646
53656
  (0, import_react_use_layout_effect.useLayoutEffect)(() => {
53647
53657
  onValueNodeHasChildrenChange(hasChildren);
53648
53658
  }, [onValueNodeHasChildrenChange, hasChildren]);
53649
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53659
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53650
53660
  import_react_primitive.Primitive.span,
53651
53661
  {
53652
53662
  ...valueProps,
53653
53663
  ref: composedRefs,
53654
53664
  style: { pointerEvents: "none" },
53655
- children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_jsx_runtime52.Fragment, { children: placeholder }) : children
53665
+ children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment, { children: placeholder }) : children
53656
53666
  }
53657
53667
  );
53658
53668
  }
@@ -53662,13 +53672,13 @@ var require_dist23 = __commonJS({
53662
53672
  var SelectIcon = React3.forwardRef(
53663
53673
  (props, forwardedRef) => {
53664
53674
  const { __scopeSelect, children, ...iconProps } = props;
53665
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "\u25BC" });
53675
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "\u25BC" });
53666
53676
  }
53667
53677
  );
53668
53678
  SelectIcon.displayName = ICON_NAME;
53669
53679
  var PORTAL_NAME = "SelectPortal";
53670
53680
  var SelectPortal = (props) => {
53671
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_portal.Portal, { asChild: true, ...props });
53681
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_portal.Portal, { asChild: true, ...props });
53672
53682
  };
53673
53683
  SelectPortal.displayName = PORTAL_NAME;
53674
53684
  var CONTENT_NAME = "SelectContent";
@@ -53682,11 +53692,11 @@ var require_dist23 = __commonJS({
53682
53692
  if (!context.open) {
53683
53693
  const frag = fragment;
53684
53694
  return frag ? ReactDOM2.createPortal(
53685
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { children: props.children }) }) }),
53695
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { children: props.children }) }) }),
53686
53696
  frag
53687
53697
  ) : null;
53688
53698
  }
53689
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SelectContentImpl, { ...props, ref: forwardedRef });
53699
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectContentImpl, { ...props, ref: forwardedRef });
53690
53700
  }
53691
53701
  );
53692
53702
  SelectContent.displayName = CONTENT_NAME;
@@ -53845,7 +53855,7 @@ var require_dist23 = __commonJS({
53845
53855
  hideWhenDetached,
53846
53856
  avoidCollisions
53847
53857
  } : {};
53848
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53858
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53849
53859
  SelectContentProvider,
53850
53860
  {
53851
53861
  scope: __scopeSelect,
@@ -53861,7 +53871,7 @@ var require_dist23 = __commonJS({
53861
53871
  position,
53862
53872
  isPositioned,
53863
53873
  searchRef,
53864
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_remove_scroll.RemoveScroll, { as: import_react_slot.Slot, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53874
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_remove_scroll.RemoveScroll, { as: import_react_slot.Slot, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53865
53875
  import_react_focus_scope.FocusScope,
53866
53876
  {
53867
53877
  asChild: true,
@@ -53873,7 +53883,7 @@ var require_dist23 = __commonJS({
53873
53883
  context.trigger?.focus({ preventScroll: true });
53874
53884
  event.preventDefault();
53875
53885
  }),
53876
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53886
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53877
53887
  import_react_dismissable_layer.DismissableLayer,
53878
53888
  {
53879
53889
  asChild: true,
@@ -53882,7 +53892,7 @@ var require_dist23 = __commonJS({
53882
53892
  onPointerDownOutside,
53883
53893
  onFocusOutside: (event) => event.preventDefault(),
53884
53894
  onDismiss: () => context.onOpenChange(false),
53885
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
53895
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
53886
53896
  SelectPosition,
53887
53897
  {
53888
53898
  role: "listbox",
@@ -54061,14 +54071,14 @@ var require_dist23 = __commonJS({
54061
54071
  },
54062
54072
  [position, focusSelectedItem]
54063
54073
  );
54064
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54074
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54065
54075
  SelectViewportProvider,
54066
54076
  {
54067
54077
  scope: __scopeSelect,
54068
54078
  contentWrapper,
54069
54079
  shouldExpandOnScrollRef,
54070
54080
  onScrollButtonChange: handleScrollButtonChange,
54071
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54081
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54072
54082
  "div",
54073
54083
  {
54074
54084
  ref: setContentWrapper,
@@ -54078,7 +54088,7 @@ var require_dist23 = __commonJS({
54078
54088
  position: "fixed",
54079
54089
  zIndex: contentZIndex
54080
54090
  },
54081
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54091
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54082
54092
  import_react_primitive.Primitive.div,
54083
54093
  {
54084
54094
  ...popperProps,
@@ -54108,7 +54118,7 @@ var require_dist23 = __commonJS({
54108
54118
  ...popperProps
54109
54119
  } = props;
54110
54120
  const popperScope = usePopperScope(__scopeSelect);
54111
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54121
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54112
54122
  PopperPrimitive.Content,
54113
54123
  {
54114
54124
  ...popperScope,
@@ -54142,8 +54152,8 @@ var require_dist23 = __commonJS({
54142
54152
  const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
54143
54153
  const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, contentContext.onViewportChange);
54144
54154
  const prevScrollTopRef = React3.useRef(0);
54145
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
54146
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54155
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
54156
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54147
54157
  "style",
54148
54158
  {
54149
54159
  dangerouslySetInnerHTML: {
@@ -54152,7 +54162,7 @@ var require_dist23 = __commonJS({
54152
54162
  nonce
54153
54163
  }
54154
54164
  ),
54155
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54165
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54156
54166
  import_react_primitive.Primitive.div,
54157
54167
  {
54158
54168
  "data-radix-select-viewport": "",
@@ -54208,7 +54218,7 @@ var require_dist23 = __commonJS({
54208
54218
  (props, forwardedRef) => {
54209
54219
  const { __scopeSelect, ...groupProps } = props;
54210
54220
  const groupId = (0, import_react_id.useId)();
54211
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
54221
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
54212
54222
  }
54213
54223
  );
54214
54224
  SelectGroup.displayName = GROUP_NAME;
@@ -54217,7 +54227,7 @@ var require_dist23 = __commonJS({
54217
54227
  (props, forwardedRef) => {
54218
54228
  const { __scopeSelect, ...labelProps } = props;
54219
54229
  const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
54220
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
54230
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
54221
54231
  }
54222
54232
  );
54223
54233
  SelectLabel.displayName = LABEL_NAME;
@@ -54254,7 +54264,7 @@ var require_dist23 = __commonJS({
54254
54264
  "A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder."
54255
54265
  );
54256
54266
  }
54257
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54267
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54258
54268
  SelectItemContextProvider,
54259
54269
  {
54260
54270
  scope: __scopeSelect,
@@ -54265,14 +54275,14 @@ var require_dist23 = __commonJS({
54265
54275
  onItemTextChange: React3.useCallback((node) => {
54266
54276
  setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
54267
54277
  }, []),
54268
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54278
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54269
54279
  Collection.ItemSlot,
54270
54280
  {
54271
54281
  scope: __scopeSelect,
54272
54282
  value,
54273
54283
  disabled,
54274
54284
  textValue,
54275
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54285
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54276
54286
  import_react_primitive.Primitive.div,
54277
54287
  {
54278
54288
  role: "option",
@@ -54346,7 +54356,7 @@ var require_dist23 = __commonJS({
54346
54356
  );
54347
54357
  const textContent = itemTextNode?.textContent;
54348
54358
  const nativeOption = React3.useMemo(
54349
- () => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
54359
+ () => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
54350
54360
  [itemContext.disabled, itemContext.value, textContent]
54351
54361
  );
54352
54362
  const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;
@@ -54354,8 +54364,8 @@ var require_dist23 = __commonJS({
54354
54364
  onNativeOptionAdd(nativeOption);
54355
54365
  return () => onNativeOptionRemove(nativeOption);
54356
54366
  }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
54357
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
54358
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
54367
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
54368
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
54359
54369
  itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM2.createPortal(itemTextProps.children, context.valueNode) : null
54360
54370
  ] });
54361
54371
  }
@@ -54366,7 +54376,7 @@ var require_dist23 = __commonJS({
54366
54376
  (props, forwardedRef) => {
54367
54377
  const { __scopeSelect, ...itemIndicatorProps } = props;
54368
54378
  const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
54369
- return itemContext.isSelected ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
54379
+ return itemContext.isSelected ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
54370
54380
  }
54371
54381
  );
54372
54382
  SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
@@ -54389,7 +54399,7 @@ var require_dist23 = __commonJS({
54389
54399
  return () => viewport.removeEventListener("scroll", handleScroll2);
54390
54400
  }
54391
54401
  }, [contentContext.viewport, contentContext.isPositioned]);
54392
- return canScrollUp ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54402
+ return canScrollUp ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54393
54403
  SelectScrollButtonImpl,
54394
54404
  {
54395
54405
  ...props,
@@ -54424,7 +54434,7 @@ var require_dist23 = __commonJS({
54424
54434
  return () => viewport.removeEventListener("scroll", handleScroll2);
54425
54435
  }
54426
54436
  }, [contentContext.viewport, contentContext.isPositioned]);
54427
- return canScrollDown ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54437
+ return canScrollDown ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54428
54438
  SelectScrollButtonImpl,
54429
54439
  {
54430
54440
  ...props,
@@ -54457,7 +54467,7 @@ var require_dist23 = __commonJS({
54457
54467
  const activeItem = getItems().find((item) => item.ref.current === document.activeElement);
54458
54468
  activeItem?.ref.current?.scrollIntoView({ block: "nearest" });
54459
54469
  }, [getItems]);
54460
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54470
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54461
54471
  import_react_primitive.Primitive.div,
54462
54472
  {
54463
54473
  "aria-hidden": true,
@@ -54485,7 +54495,7 @@ var require_dist23 = __commonJS({
54485
54495
  var SelectSeparator = React3.forwardRef(
54486
54496
  (props, forwardedRef) => {
54487
54497
  const { __scopeSelect, ...separatorProps } = props;
54488
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
54498
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
54489
54499
  }
54490
54500
  );
54491
54501
  SelectSeparator.displayName = SEPARATOR_NAME;
@@ -54496,7 +54506,7 @@ var require_dist23 = __commonJS({
54496
54506
  const popperScope = usePopperScope(__scopeSelect);
54497
54507
  const context = useSelectContext(ARROW_NAME, __scopeSelect);
54498
54508
  const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);
54499
- return context.open && contentContext.position === "popper" ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
54509
+ return context.open && contentContext.position === "popper" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
54500
54510
  }
54501
54511
  );
54502
54512
  SelectArrow.displayName = ARROW_NAME;
@@ -54523,7 +54533,7 @@ var require_dist23 = __commonJS({
54523
54533
  select.dispatchEvent(event);
54524
54534
  }
54525
54535
  }, [prevValue, value]);
54526
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_visually_hidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("select", { ...selectProps, ref: composedRefs, defaultValue: value }) });
54536
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_visually_hidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("select", { ...selectProps, ref: composedRefs, defaultValue: value }) });
54527
54537
  }
54528
54538
  );
54529
54539
  BubbleSelect.displayName = "BubbleSelect";
@@ -54907,7 +54917,7 @@ var require_dist25 = __commonJS({
54907
54917
  var import_react_use_controllable_state = require_dist20();
54908
54918
  var import_aria_hidden = require_es5();
54909
54919
  var import_react_remove_scroll = require_es57();
54910
- var import_jsx_runtime52 = require_jsx_runtime();
54920
+ var import_jsx_runtime53 = require_jsx_runtime();
54911
54921
  var POPOVER_NAME = "Popover";
54912
54922
  var [createPopoverContext, createPopoverScope] = (0, import_react_context.createContextScope)(POPOVER_NAME, [
54913
54923
  import_react_popper.createPopperScope
@@ -54931,7 +54941,7 @@ var require_dist25 = __commonJS({
54931
54941
  defaultProp: defaultOpen,
54932
54942
  onChange: onOpenChange
54933
54943
  });
54934
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54944
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54935
54945
  PopoverProvider,
54936
54946
  {
54937
54947
  scope: __scopePopover,
@@ -54960,7 +54970,7 @@ var require_dist25 = __commonJS({
54960
54970
  onCustomAnchorAdd();
54961
54971
  return () => onCustomAnchorRemove();
54962
54972
  }, [onCustomAnchorAdd, onCustomAnchorRemove]);
54963
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
54973
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
54964
54974
  }
54965
54975
  );
54966
54976
  PopoverAnchor.displayName = ANCHOR_NAME;
@@ -54971,7 +54981,7 @@ var require_dist25 = __commonJS({
54971
54981
  const context = usePopoverContext(TRIGGER_NAME, __scopePopover);
54972
54982
  const popperScope = usePopperScope(__scopePopover);
54973
54983
  const composedTriggerRef = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, context.triggerRef);
54974
- const trigger = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
54984
+ const trigger = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
54975
54985
  import_react_primitive.Primitive.button,
54976
54986
  {
54977
54987
  type: "button",
@@ -54984,7 +54994,7 @@ var require_dist25 = __commonJS({
54984
54994
  onClick: (0, import_primitive.composeEventHandlers)(props.onClick, context.onOpenToggle)
54985
54995
  }
54986
54996
  );
54987
- return context.hasCustomAnchor ? trigger : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });
54997
+ return context.hasCustomAnchor ? trigger : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });
54988
54998
  }
54989
54999
  );
54990
55000
  PopoverTrigger.displayName = TRIGGER_NAME;
@@ -54995,7 +55005,7 @@ var require_dist25 = __commonJS({
54995
55005
  var PopoverPortal = (props) => {
54996
55006
  const { __scopePopover, forceMount, children, container } = props;
54997
55007
  const context = usePopoverContext(PORTAL_NAME, __scopePopover);
54998
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_portal.Portal, { asChild: true, container, children }) }) });
55008
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_portal.Portal, { asChild: true, container, children }) }) });
54999
55009
  };
55000
55010
  PopoverPortal.displayName = PORTAL_NAME;
55001
55011
  var CONTENT_NAME = "PopoverContent";
@@ -55004,7 +55014,7 @@ var require_dist25 = __commonJS({
55004
55014
  const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);
55005
55015
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
55006
55016
  const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);
55007
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });
55017
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });
55008
55018
  }
55009
55019
  );
55010
55020
  PopoverContent.displayName = CONTENT_NAME;
@@ -55019,7 +55029,7 @@ var require_dist25 = __commonJS({
55019
55029
  if (content)
55020
55030
  return (0, import_aria_hidden.hideOthers)(content);
55021
55031
  }, []);
55022
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_remove_scroll.RemoveScroll, { as: import_react_slot.Slot, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55032
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_remove_scroll.RemoveScroll, { as: import_react_slot.Slot, allowPinchZoom: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55023
55033
  PopoverContentImpl,
55024
55034
  {
55025
55035
  ...props,
@@ -55055,7 +55065,7 @@ var require_dist25 = __commonJS({
55055
55065
  const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);
55056
55066
  const hasInteractedOutsideRef = React3.useRef(false);
55057
55067
  const hasPointerDownOutsideRef = React3.useRef(false);
55058
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55068
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55059
55069
  PopoverContentImpl,
55060
55070
  {
55061
55071
  ...props,
@@ -55109,7 +55119,7 @@ var require_dist25 = __commonJS({
55109
55119
  const context = usePopoverContext(CONTENT_NAME, __scopePopover);
55110
55120
  const popperScope = usePopperScope(__scopePopover);
55111
55121
  (0, import_react_focus_guards.useFocusGuards)();
55112
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55122
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55113
55123
  import_react_focus_scope.FocusScope,
55114
55124
  {
55115
55125
  asChild: true,
@@ -55117,7 +55127,7 @@ var require_dist25 = __commonJS({
55117
55127
  trapped: trapFocus,
55118
55128
  onMountAutoFocus: onOpenAutoFocus,
55119
55129
  onUnmountAutoFocus: onCloseAutoFocus,
55120
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55130
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55121
55131
  import_react_dismissable_layer.DismissableLayer,
55122
55132
  {
55123
55133
  asChild: true,
@@ -55127,7 +55137,7 @@ var require_dist25 = __commonJS({
55127
55137
  onPointerDownOutside,
55128
55138
  onFocusOutside,
55129
55139
  onDismiss: () => context.onOpenChange(false),
55130
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55140
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55131
55141
  PopperPrimitive.Content,
55132
55142
  {
55133
55143
  "data-state": getState(context.open),
@@ -55160,7 +55170,7 @@ var require_dist25 = __commonJS({
55160
55170
  (props, forwardedRef) => {
55161
55171
  const { __scopePopover, ...closeProps } = props;
55162
55172
  const context = usePopoverContext(CLOSE_NAME, __scopePopover);
55163
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
55173
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
55164
55174
  import_react_primitive.Primitive.button,
55165
55175
  {
55166
55176
  type: "button",
@@ -55177,7 +55187,7 @@ var require_dist25 = __commonJS({
55177
55187
  (props, forwardedRef) => {
55178
55188
  const { __scopePopover, ...arrowProps } = props;
55179
55189
  const popperScope = usePopperScope(__scopePopover);
55180
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
55190
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });
55181
55191
  }
55182
55192
  );
55183
55193
  PopoverArrow.displayName = ARROW_NAME;
@@ -55403,13 +55413,13 @@ var require_dist28 = __commonJS({
55403
55413
  });
55404
55414
  module.exports = __toCommonJS2(index_exports);
55405
55415
  var React3 = __toESM2(require_react());
55406
- var import_jsx_runtime52 = require_jsx_runtime();
55416
+ var import_jsx_runtime53 = require_jsx_runtime();
55407
55417
  function createContext2(rootComponentName, defaultContext) {
55408
55418
  const Context = React3.createContext(defaultContext);
55409
55419
  const Provider = (props) => {
55410
55420
  const { children, ...context } = props;
55411
55421
  const value = React3.useMemo(() => context, Object.values(context));
55412
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
55422
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
55413
55423
  };
55414
55424
  Provider.displayName = rootComponentName + "Provider";
55415
55425
  function useContext2(consumerName) {
@@ -55432,7 +55442,7 @@ var require_dist28 = __commonJS({
55432
55442
  const { scope, children, ...context } = props;
55433
55443
  const Context = scope?.[scopeName]?.[index3] || BaseContext;
55434
55444
  const value = React3.useMemo(() => context, Object.values(context));
55435
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
55445
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
55436
55446
  };
55437
55447
  Provider.displayName = rootComponentName + "Provider";
55438
55448
  function useContext2(consumerName, scope) {
@@ -55891,7 +55901,7 @@ var require_dist34 = __commonJS({
55891
55901
  module.exports = __toCommonJS2(index_exports);
55892
55902
  var React3 = __toESM2(require_react());
55893
55903
  var import_react_compose_refs = require_dist27();
55894
- var import_jsx_runtime52 = require_jsx_runtime();
55904
+ var import_jsx_runtime53 = require_jsx_runtime();
55895
55905
  // @__NO_SIDE_EFFECTS__
55896
55906
  function createSlot(ownerName) {
55897
55907
  const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
@@ -55910,9 +55920,9 @@ var require_dist34 = __commonJS({
55910
55920
  return child;
55911
55921
  }
55912
55922
  });
55913
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
55923
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
55914
55924
  }
55915
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
55925
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
55916
55926
  });
55917
55927
  Slot2.displayName = `${ownerName}.Slot`;
55918
55928
  return Slot2;
@@ -55939,7 +55949,7 @@ var require_dist34 = __commonJS({
55939
55949
  // @__NO_SIDE_EFFECTS__
55940
55950
  function createSlottable(ownerName) {
55941
55951
  const Slottable2 = ({ children }) => {
55942
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_jsx_runtime52.Fragment, { children });
55952
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment, { children });
55943
55953
  };
55944
55954
  Slottable2.displayName = `${ownerName}.Slottable`;
55945
55955
  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
@@ -56029,7 +56039,7 @@ var require_dist35 = __commonJS({
56029
56039
  var React3 = __toESM2(require_react());
56030
56040
  var ReactDOM2 = __toESM2(require_react_dom());
56031
56041
  var import_react_slot = require_dist34();
56032
- var import_jsx_runtime52 = require_jsx_runtime();
56042
+ var import_jsx_runtime53 = require_jsx_runtime();
56033
56043
  var NODES = [
56034
56044
  "a",
56035
56045
  "button",
@@ -56057,7 +56067,7 @@ var require_dist35 = __commonJS({
56057
56067
  if (typeof window !== "undefined") {
56058
56068
  window[Symbol.for("radix-ui")] = true;
56059
56069
  }
56060
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
56070
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
56061
56071
  });
56062
56072
  Node2.displayName = `Primitive.${node}`;
56063
56073
  return { ...primitive, [node]: Node2 };
@@ -56216,7 +56226,7 @@ var require_dist38 = __commonJS({
56216
56226
  var import_react_compose_refs = require_dist27();
56217
56227
  var import_react_use_callback_ref = require_dist36();
56218
56228
  var import_react_use_escape_keydown = require_dist37();
56219
- var import_jsx_runtime52 = require_jsx_runtime();
56229
+ var import_jsx_runtime53 = require_jsx_runtime();
56220
56230
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
56221
56231
  var CONTEXT_UPDATE = "dismissableLayer.update";
56222
56232
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -56311,7 +56321,7 @@ var require_dist38 = __commonJS({
56311
56321
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
56312
56322
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
56313
56323
  }, []);
56314
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
56324
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
56315
56325
  import_react_primitive.Primitive.div,
56316
56326
  {
56317
56327
  ...layerProps,
@@ -56345,7 +56355,7 @@ var require_dist38 = __commonJS({
56345
56355
  };
56346
56356
  }
56347
56357
  }, [context.branches]);
56348
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
56358
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
56349
56359
  });
56350
56360
  DismissableLayerBranch.displayName = BRANCH_NAME;
56351
56361
  function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
@@ -56474,7 +56484,7 @@ var require_dist39 = __commonJS({
56474
56484
  var import_react_compose_refs = require_dist27();
56475
56485
  var import_react_primitive = require_dist35();
56476
56486
  var import_react_use_callback_ref = require_dist36();
56477
- var import_jsx_runtime52 = require_jsx_runtime();
56487
+ var import_jsx_runtime53 = require_jsx_runtime();
56478
56488
  var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
56479
56489
  var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
56480
56490
  var EVENT_OPTIONS = { bubbles: false, cancelable: true };
@@ -56604,7 +56614,7 @@ var require_dist39 = __commonJS({
56604
56614
  },
56605
56615
  [loop, trapped, focusScope.paused]
56606
56616
  );
56607
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
56617
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
56608
56618
  });
56609
56619
  FocusScope.displayName = FOCUS_SCOPE_NAME;
56610
56620
  function focusFirst(candidates, { select = false } = {}) {
@@ -56739,14 +56749,14 @@ var require_dist40 = __commonJS({
56739
56749
  var import_react_dom = __toESM2(require_react_dom());
56740
56750
  var import_react_primitive = require_dist35();
56741
56751
  var import_react_use_layout_effect = require_dist29();
56742
- var import_jsx_runtime52 = require_jsx_runtime();
56752
+ var import_jsx_runtime53 = require_jsx_runtime();
56743
56753
  var PORTAL_NAME = "Portal";
56744
56754
  var Portal = React3.forwardRef((props, forwardedRef) => {
56745
56755
  const { container: containerProp, ...portalProps } = props;
56746
56756
  const [mounted, setMounted] = React3.useState(false);
56747
56757
  (0, import_react_use_layout_effect.useLayoutEffect)(() => setMounted(true), []);
56748
56758
  const container = containerProp || mounted && globalThis?.document?.body;
56749
- return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
56759
+ return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
56750
56760
  });
56751
56761
  Portal.displayName = PORTAL_NAME;
56752
56762
  var Root = Portal;
@@ -57063,7 +57073,7 @@ var require_dist43 = __commonJS({
57063
57073
  var import_react_remove_scroll = require_es57();
57064
57074
  var import_aria_hidden = require_es5();
57065
57075
  var import_react_slot = require_dist34();
57066
- var import_jsx_runtime52 = require_jsx_runtime();
57076
+ var import_jsx_runtime53 = require_jsx_runtime();
57067
57077
  var DIALOG_NAME = "Dialog";
57068
57078
  var [createDialogContext, createDialogScope] = (0, import_react_context.createContextScope)(DIALOG_NAME);
57069
57079
  var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);
@@ -57084,7 +57094,7 @@ var require_dist43 = __commonJS({
57084
57094
  onChange: onOpenChange,
57085
57095
  caller: DIALOG_NAME
57086
57096
  });
57087
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57097
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57088
57098
  DialogProvider,
57089
57099
  {
57090
57100
  scope: __scopeDialog,
@@ -57108,7 +57118,7 @@ var require_dist43 = __commonJS({
57108
57118
  const { __scopeDialog, ...triggerProps } = props;
57109
57119
  const context = useDialogContext(TRIGGER_NAME, __scopeDialog);
57110
57120
  const composedTriggerRef = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, context.triggerRef);
57111
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57121
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57112
57122
  import_react_primitive.Primitive.button,
57113
57123
  {
57114
57124
  type: "button",
@@ -57131,7 +57141,7 @@ var require_dist43 = __commonJS({
57131
57141
  var DialogPortal = (props) => {
57132
57142
  const { __scopeDialog, forceMount, children, container } = props;
57133
57143
  const context = useDialogContext(PORTAL_NAME, __scopeDialog);
57134
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React3.Children.map(children, (child) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_portal.Portal, { asChild: true, container, children: child }) })) });
57144
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React3.Children.map(children, (child) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_portal.Portal, { asChild: true, container, children: child }) })) });
57135
57145
  };
57136
57146
  DialogPortal.displayName = PORTAL_NAME;
57137
57147
  var OVERLAY_NAME = "DialogOverlay";
@@ -57140,7 +57150,7 @@ var require_dist43 = __commonJS({
57140
57150
  const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);
57141
57151
  const { forceMount = portalContext.forceMount, ...overlayProps } = props;
57142
57152
  const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);
57143
- return context.modal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
57153
+ return context.modal ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
57144
57154
  }
57145
57155
  );
57146
57156
  DialogOverlay.displayName = OVERLAY_NAME;
@@ -57152,7 +57162,7 @@ var require_dist43 = __commonJS({
57152
57162
  return (
57153
57163
  // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`
57154
57164
  // ie. when `Overlay` and `Content` are siblings
57155
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_remove_scroll.RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57165
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_remove_scroll.RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57156
57166
  import_react_primitive.Primitive.div,
57157
57167
  {
57158
57168
  "data-state": getState(context.open),
@@ -57170,7 +57180,7 @@ var require_dist43 = __commonJS({
57170
57180
  const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);
57171
57181
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
57172
57182
  const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
57173
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
57183
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
57174
57184
  }
57175
57185
  );
57176
57186
  DialogContent.displayName = CONTENT_NAME;
@@ -57184,7 +57194,7 @@ var require_dist43 = __commonJS({
57184
57194
  if (content)
57185
57195
  return (0, import_aria_hidden.hideOthers)(content);
57186
57196
  }, []);
57187
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57197
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57188
57198
  DialogContentImpl,
57189
57199
  {
57190
57200
  ...props,
@@ -57215,7 +57225,7 @@ var require_dist43 = __commonJS({
57215
57225
  const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
57216
57226
  const hasInteractedOutsideRef = React3.useRef(false);
57217
57227
  const hasPointerDownOutsideRef = React3.useRef(false);
57218
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57228
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57219
57229
  DialogContentImpl,
57220
57230
  {
57221
57231
  ...props,
@@ -57259,8 +57269,8 @@ var require_dist43 = __commonJS({
57259
57269
  const contentRef = React3.useRef(null);
57260
57270
  const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, contentRef);
57261
57271
  (0, import_react_focus_guards.useFocusGuards)();
57262
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
57263
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57272
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
57273
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57264
57274
  import_react_focus_scope.FocusScope,
57265
57275
  {
57266
57276
  asChild: true,
@@ -57268,7 +57278,7 @@ var require_dist43 = __commonJS({
57268
57278
  trapped: trapFocus,
57269
57279
  onMountAutoFocus: onOpenAutoFocus,
57270
57280
  onUnmountAutoFocus: onCloseAutoFocus,
57271
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57281
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57272
57282
  import_react_dismissable_layer.DismissableLayer,
57273
57283
  {
57274
57284
  role: "dialog",
@@ -57283,9 +57293,9 @@ var require_dist43 = __commonJS({
57283
57293
  )
57284
57294
  }
57285
57295
  ),
57286
- /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
57287
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TitleWarning, { titleId: context.titleId }),
57288
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
57296
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
57297
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TitleWarning, { titleId: context.titleId }),
57298
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
57289
57299
  ] })
57290
57300
  ] });
57291
57301
  }
@@ -57295,7 +57305,7 @@ var require_dist43 = __commonJS({
57295
57305
  (props, forwardedRef) => {
57296
57306
  const { __scopeDialog, ...titleProps } = props;
57297
57307
  const context = useDialogContext(TITLE_NAME, __scopeDialog);
57298
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
57308
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
57299
57309
  }
57300
57310
  );
57301
57311
  DialogTitle.displayName = TITLE_NAME;
@@ -57304,7 +57314,7 @@ var require_dist43 = __commonJS({
57304
57314
  (props, forwardedRef) => {
57305
57315
  const { __scopeDialog, ...descriptionProps } = props;
57306
57316
  const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);
57307
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
57317
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
57308
57318
  }
57309
57319
  );
57310
57320
  DialogDescription.displayName = DESCRIPTION_NAME;
@@ -57313,7 +57323,7 @@ var require_dist43 = __commonJS({
57313
57323
  (props, forwardedRef) => {
57314
57324
  const { __scopeDialog, ...closeProps } = props;
57315
57325
  const context = useDialogContext(CLOSE_NAME, __scopeDialog);
57316
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
57326
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
57317
57327
  import_react_primitive.Primitive.button,
57318
57328
  {
57319
57329
  type: "button",
@@ -57913,13 +57923,13 @@ var require_dist47 = __commonJS({
57913
57923
  });
57914
57924
  module.exports = __toCommonJS2(index_exports);
57915
57925
  var React3 = __toESM2(require_react());
57916
- var import_jsx_runtime52 = require_jsx_runtime();
57926
+ var import_jsx_runtime53 = require_jsx_runtime();
57917
57927
  function createContext2(rootComponentName, defaultContext) {
57918
57928
  const Context = React3.createContext(defaultContext);
57919
57929
  const Provider = (props) => {
57920
57930
  const { children, ...context } = props;
57921
57931
  const value = React3.useMemo(() => context, Object.values(context));
57922
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
57932
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
57923
57933
  };
57924
57934
  Provider.displayName = rootComponentName + "Provider";
57925
57935
  function useContext2(consumerName) {
@@ -57942,7 +57952,7 @@ var require_dist47 = __commonJS({
57942
57952
  const { scope, children, ...context } = props;
57943
57953
  const Context = scope?.[scopeName]?.[index3] || BaseContext;
57944
57954
  const value = React3.useMemo(() => context, Object.values(context));
57945
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Context.Provider, { value, children });
57955
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Context.Provider, { value, children });
57946
57956
  };
57947
57957
  Provider.displayName = rootComponentName + "Provider";
57948
57958
  function useContext2(consumerName, scope) {
@@ -58416,7 +58426,7 @@ var require_dist53 = __commonJS({
58416
58426
  module.exports = __toCommonJS2(index_exports);
58417
58427
  var React3 = __toESM2(require_react());
58418
58428
  var import_react_compose_refs = require_dist52();
58419
- var import_jsx_runtime52 = require_jsx_runtime();
58429
+ var import_jsx_runtime53 = require_jsx_runtime();
58420
58430
  // @__NO_SIDE_EFFECTS__
58421
58431
  function createSlot(ownerName) {
58422
58432
  const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
@@ -58435,9 +58445,9 @@ var require_dist53 = __commonJS({
58435
58445
  return child;
58436
58446
  }
58437
58447
  });
58438
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
58448
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null });
58439
58449
  }
58440
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
58450
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
58441
58451
  });
58442
58452
  Slot2.displayName = `${ownerName}.Slot`;
58443
58453
  return Slot2;
@@ -58465,7 +58475,7 @@ var require_dist53 = __commonJS({
58465
58475
  // @__NO_SIDE_EFFECTS__
58466
58476
  function createSlottable(ownerName) {
58467
58477
  const Slottable2 = ({ children }) => {
58468
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_jsx_runtime52.Fragment, { children });
58478
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_jsx_runtime53.Fragment, { children });
58469
58479
  };
58470
58480
  Slottable2.displayName = `${ownerName}.Slottable`;
58471
58481
  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
@@ -58556,7 +58566,7 @@ var require_dist54 = __commonJS({
58556
58566
  var React3 = __toESM2(require_react());
58557
58567
  var ReactDOM2 = __toESM2(require_react_dom());
58558
58568
  var import_react_slot = require_dist53();
58559
- var import_jsx_runtime52 = require_jsx_runtime();
58569
+ var import_jsx_runtime53 = require_jsx_runtime();
58560
58570
  var NODES = [
58561
58571
  "a",
58562
58572
  "button",
@@ -58584,7 +58594,7 @@ var require_dist54 = __commonJS({
58584
58594
  if (typeof window !== "undefined") {
58585
58595
  window[Symbol.for("radix-ui")] = true;
58586
58596
  }
58587
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
58597
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });
58588
58598
  });
58589
58599
  Node2.displayName = `Primitive.${node}`;
58590
58600
  return { ...primitive, [node]: Node2 };
@@ -58743,7 +58753,7 @@ var require_dist57 = __commonJS({
58743
58753
  var import_react_compose_refs = require_dist46();
58744
58754
  var import_react_use_callback_ref = require_dist55();
58745
58755
  var import_react_use_escape_keydown = require_dist56();
58746
- var import_jsx_runtime52 = require_jsx_runtime();
58756
+ var import_jsx_runtime53 = require_jsx_runtime();
58747
58757
  var DISMISSABLE_LAYER_NAME = "DismissableLayer";
58748
58758
  var CONTEXT_UPDATE = "dismissableLayer.update";
58749
58759
  var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
@@ -58838,7 +58848,7 @@ var require_dist57 = __commonJS({
58838
58848
  document.addEventListener(CONTEXT_UPDATE, handleUpdate);
58839
58849
  return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
58840
58850
  }, []);
58841
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
58851
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
58842
58852
  import_react_primitive.Primitive.div,
58843
58853
  {
58844
58854
  ...layerProps,
@@ -58872,7 +58882,7 @@ var require_dist57 = __commonJS({
58872
58882
  };
58873
58883
  }
58874
58884
  }, [context.branches]);
58875
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
58885
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...props, ref: composedRefs });
58876
58886
  });
58877
58887
  DismissableLayerBranch.displayName = BRANCH_NAME;
58878
58888
  function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
@@ -59048,7 +59058,7 @@ var require_dist59 = __commonJS({
59048
59058
  var import_react_compose_refs = require_dist46();
59049
59059
  var import_react_primitive = require_dist54();
59050
59060
  var import_react_use_callback_ref = require_dist58();
59051
- var import_jsx_runtime52 = require_jsx_runtime();
59061
+ var import_jsx_runtime53 = require_jsx_runtime();
59052
59062
  var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
59053
59063
  var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
59054
59064
  var EVENT_OPTIONS = { bubbles: false, cancelable: true };
@@ -59178,7 +59188,7 @@ var require_dist59 = __commonJS({
59178
59188
  },
59179
59189
  [loop, trapped, focusScope.paused]
59180
59190
  );
59181
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
59191
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });
59182
59192
  });
59183
59193
  FocusScope.displayName = FOCUS_SCOPE_NAME;
59184
59194
  function focusFirst(candidates, { select = false } = {}) {
@@ -59355,14 +59365,14 @@ var require_dist61 = __commonJS({
59355
59365
  var import_react_dom = __toESM2(require_react_dom());
59356
59366
  var import_react_primitive = require_dist54();
59357
59367
  var import_react_use_layout_effect = require_dist60();
59358
- var import_jsx_runtime52 = require_jsx_runtime();
59368
+ var import_jsx_runtime53 = require_jsx_runtime();
59359
59369
  var PORTAL_NAME = "Portal";
59360
59370
  var Portal = React3.forwardRef((props, forwardedRef) => {
59361
59371
  const { container: containerProp, ...portalProps } = props;
59362
59372
  const [mounted, setMounted] = React3.useState(false);
59363
59373
  (0, import_react_use_layout_effect.useLayoutEffect)(() => setMounted(true), []);
59364
59374
  const container = containerProp || mounted && globalThis?.document?.body;
59365
- return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
59375
+ return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
59366
59376
  });
59367
59377
  Portal.displayName = PORTAL_NAME;
59368
59378
  var Root = Portal;
@@ -59721,7 +59731,7 @@ var require_dist65 = __commonJS({
59721
59731
  var import_react_remove_scroll = require_es57();
59722
59732
  var import_aria_hidden = require_es5();
59723
59733
  var import_react_slot = require_dist53();
59724
- var import_jsx_runtime52 = require_jsx_runtime();
59734
+ var import_jsx_runtime53 = require_jsx_runtime();
59725
59735
  var DIALOG_NAME = "Dialog";
59726
59736
  var [createDialogContext, createDialogScope] = (0, import_react_context.createContextScope)(DIALOG_NAME);
59727
59737
  var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);
@@ -59742,7 +59752,7 @@ var require_dist65 = __commonJS({
59742
59752
  onChange: onOpenChange,
59743
59753
  caller: DIALOG_NAME
59744
59754
  });
59745
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59755
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59746
59756
  DialogProvider,
59747
59757
  {
59748
59758
  scope: __scopeDialog,
@@ -59766,7 +59776,7 @@ var require_dist65 = __commonJS({
59766
59776
  const { __scopeDialog, ...triggerProps } = props;
59767
59777
  const context = useDialogContext(TRIGGER_NAME, __scopeDialog);
59768
59778
  const composedTriggerRef = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, context.triggerRef);
59769
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59779
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59770
59780
  import_react_primitive.Primitive.button,
59771
59781
  {
59772
59782
  type: "button",
@@ -59789,7 +59799,7 @@ var require_dist65 = __commonJS({
59789
59799
  var DialogPortal = (props) => {
59790
59800
  const { __scopeDialog, forceMount, children, container } = props;
59791
59801
  const context = useDialogContext(PORTAL_NAME, __scopeDialog);
59792
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React3.Children.map(children, (child) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_portal.Portal, { asChild: true, container, children: child }) })) });
59802
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React3.Children.map(children, (child) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_portal.Portal, { asChild: true, container, children: child }) })) });
59793
59803
  };
59794
59804
  DialogPortal.displayName = PORTAL_NAME;
59795
59805
  var OVERLAY_NAME = "DialogOverlay";
@@ -59798,7 +59808,7 @@ var require_dist65 = __commonJS({
59798
59808
  const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);
59799
59809
  const { forceMount = portalContext.forceMount, ...overlayProps } = props;
59800
59810
  const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);
59801
- return context.modal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
59811
+ return context.modal ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;
59802
59812
  }
59803
59813
  );
59804
59814
  DialogOverlay.displayName = OVERLAY_NAME;
@@ -59810,7 +59820,7 @@ var require_dist65 = __commonJS({
59810
59820
  return (
59811
59821
  // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`
59812
59822
  // ie. when `Overlay` and `Content` are siblings
59813
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_remove_scroll.RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59823
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_remove_scroll.RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59814
59824
  import_react_primitive.Primitive.div,
59815
59825
  {
59816
59826
  "data-state": getState(context.open),
@@ -59828,7 +59838,7 @@ var require_dist65 = __commonJS({
59828
59838
  const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);
59829
59839
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
59830
59840
  const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
59831
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
59841
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_presence.Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });
59832
59842
  }
59833
59843
  );
59834
59844
  DialogContent.displayName = CONTENT_NAME;
@@ -59842,7 +59852,7 @@ var require_dist65 = __commonJS({
59842
59852
  if (content)
59843
59853
  return (0, import_aria_hidden.hideOthers)(content);
59844
59854
  }, []);
59845
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59855
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59846
59856
  DialogContentImpl,
59847
59857
  {
59848
59858
  ...props,
@@ -59873,7 +59883,7 @@ var require_dist65 = __commonJS({
59873
59883
  const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
59874
59884
  const hasInteractedOutsideRef = React3.useRef(false);
59875
59885
  const hasPointerDownOutsideRef = React3.useRef(false);
59876
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59886
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59877
59887
  DialogContentImpl,
59878
59888
  {
59879
59889
  ...props,
@@ -59917,8 +59927,8 @@ var require_dist65 = __commonJS({
59917
59927
  const contentRef = React3.useRef(null);
59918
59928
  const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, contentRef);
59919
59929
  (0, import_react_focus_guards.useFocusGuards)();
59920
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
59921
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59930
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
59931
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59922
59932
  import_react_focus_scope.FocusScope,
59923
59933
  {
59924
59934
  asChild: true,
@@ -59926,7 +59936,7 @@ var require_dist65 = __commonJS({
59926
59936
  trapped: trapFocus,
59927
59937
  onMountAutoFocus: onOpenAutoFocus,
59928
59938
  onUnmountAutoFocus: onCloseAutoFocus,
59929
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59939
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59930
59940
  import_react_dismissable_layer.DismissableLayer,
59931
59941
  {
59932
59942
  role: "dialog",
@@ -59941,9 +59951,9 @@ var require_dist65 = __commonJS({
59941
59951
  )
59942
59952
  }
59943
59953
  ),
59944
- /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
59945
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TitleWarning, { titleId: context.titleId }),
59946
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
59954
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
59955
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TitleWarning, { titleId: context.titleId }),
59956
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })
59947
59957
  ] })
59948
59958
  ] });
59949
59959
  }
@@ -59953,7 +59963,7 @@ var require_dist65 = __commonJS({
59953
59963
  (props, forwardedRef) => {
59954
59964
  const { __scopeDialog, ...titleProps } = props;
59955
59965
  const context = useDialogContext(TITLE_NAME, __scopeDialog);
59956
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
59966
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });
59957
59967
  }
59958
59968
  );
59959
59969
  DialogTitle.displayName = TITLE_NAME;
@@ -59962,7 +59972,7 @@ var require_dist65 = __commonJS({
59962
59972
  (props, forwardedRef) => {
59963
59973
  const { __scopeDialog, ...descriptionProps } = props;
59964
59974
  const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);
59965
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_primitive.Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
59975
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_primitive.Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });
59966
59976
  }
59967
59977
  );
59968
59978
  DialogDescription.displayName = DESCRIPTION_NAME;
@@ -59971,7 +59981,7 @@ var require_dist65 = __commonJS({
59971
59981
  (props, forwardedRef) => {
59972
59982
  const { __scopeDialog, ...closeProps } = props;
59973
59983
  const context = useDialogContext(CLOSE_NAME, __scopeDialog);
59974
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
59984
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
59975
59985
  import_react_primitive.Primitive.button,
59976
59986
  {
59977
59987
  type: "button",
@@ -70115,23 +70125,164 @@ var require_FaClock = __commonJS({
70115
70125
  }
70116
70126
  });
70117
70127
 
70118
- // build/input.rtmp/inline-view.js
70128
+ // build/input.file/inline-view.js
70119
70129
  var import_jsx_runtime = __toESM(require_jsx_runtime());
70130
+ function cn(...classes) {
70131
+ return classes.filter(Boolean).join(" ");
70132
+ }
70133
+ function basename(filePath) {
70134
+ return filePath.split("/").pop() || filePath;
70135
+ }
70120
70136
  function InlineView({ state, config }) {
70137
+ const getStatusColor = (status) => {
70138
+ switch (status) {
70139
+ case "playing":
70140
+ return "text-green-500 dark:text-green-300";
70141
+ case "error":
70142
+ return "text-red-500 dark:text-red-300";
70143
+ default:
70144
+ return "text-gray-500 dark:text-gray-400";
70145
+ }
70146
+ };
70147
+ return (0, import_jsx_runtime.jsxs)("div", { className: "file-input space-y-2", id: `file-input-${config.id}`, children: [(0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime.jsx)("span", { className: "text-sm font-medium text-gray-900 dark:text-white", children: "Status:" }), (0, import_jsx_runtime.jsx)("span", { className: cn("text-sm font-medium", getStatusColor(state.status)), children: state.status.charAt(0).toUpperCase() + state.status.slice(1) })] }), state.currentFile && (0, import_jsx_runtime.jsxs)("div", { className: "text-sm text-gray-700 dark:text-gray-300", children: [(0, import_jsx_runtime.jsx)("span", { className: "font-medium", children: "File:" }), " ", basename(state.currentFile)] }), state.error && (0, import_jsx_runtime.jsxs)("div", { className: "text-sm text-red-500 dark:text-red-400 bg-red-50 dark:bg-red-900/20 p-2 rounded", children: [(0, import_jsx_runtime.jsx)("span", { className: "font-medium", children: "Error:" }), " ", state.error] }), state.status === "idle" && !state.currentFile && (0, import_jsx_runtime.jsx)("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: "Ready to play files via API" })] });
70148
+ }
70149
+ var inline_view_default = InlineView;
70150
+
70151
+ // build/input.file/info.js
70152
+ var import_FaPlay = __toESM(require_FaPlay());
70153
+ function defaultStreamMapping(cfg) {
70154
+ return {
70155
+ streams: [{
70156
+ media: "video",
70157
+ displayName: "Video",
70158
+ outputKey: {
70159
+ sourceName: cfg.sourceName ?? "file-source",
70160
+ programNumber: 1,
70161
+ streamId: 256,
70162
+ renditionName: "default"
70163
+ }
70164
+ }, {
70165
+ media: "audio",
70166
+ displayName: "Audio",
70167
+ outputKey: {
70168
+ sourceName: cfg.sourceName ?? "file-source",
70169
+ programNumber: 1,
70170
+ streamId: 257,
70171
+ renditionName: "default"
70172
+ }
70173
+ }]
70174
+ };
70175
+ }
70176
+ function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, validation }) {
70177
+ const { SourceName } = validation;
70178
+ return defineComponent({
70179
+ identifier: "input.file",
70180
+ category: "input",
70181
+ name: "File Input",
70182
+ description: "Dynamically play MP4 or TS files via API calls",
70183
+ icon: import_FaPlay.FaPlay,
70184
+ subscription: {
70185
+ accepts: void 0,
70186
+ produces: {
70187
+ type: "dynamic-streams",
70188
+ groupBy: "sourceName",
70189
+ streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? defaultStreamMapping(cfg))
70190
+ }
70191
+ },
70192
+ display: (desc) => {
70193
+ return {
70194
+ source: desc.config.sourceName || "file-source"
70195
+ };
70196
+ },
70197
+ extraValidation: (_ctx) => {
70198
+ },
70199
+ runtime: {
70200
+ initialState: () => ({
70201
+ status: "idle",
70202
+ currentFile: null,
70203
+ error: null
70204
+ }),
70205
+ handleEvent(ev, state) {
70206
+ const evType = ev.type;
70207
+ switch (evType) {
70208
+ case "playback-started":
70209
+ return {
70210
+ ...state,
70211
+ status: "playing",
70212
+ currentFile: ev.filePath,
70213
+ error: null
70214
+ };
70215
+ case "playback-completed":
70216
+ return {
70217
+ ...state,
70218
+ status: "idle",
70219
+ currentFile: null,
70220
+ error: null
70221
+ };
70222
+ case "playback-stopped":
70223
+ return {
70224
+ ...state,
70225
+ status: "idle",
70226
+ currentFile: null,
70227
+ error: null
70228
+ };
70229
+ case "playback-error":
70230
+ return {
70231
+ ...state,
70232
+ status: "error",
70233
+ error: ev.error
70234
+ };
70235
+ default:
70236
+ assertUnreachable(evType);
70237
+ }
70238
+ },
70239
+ inline: inline_view_default
70240
+ },
70241
+ configForm: {
70242
+ form: {
70243
+ sourceName: {
70244
+ help: "Source name for the output streams",
70245
+ hint: {
70246
+ type: "text",
70247
+ validation: SourceName,
70248
+ defaultValue: "file-source"
70249
+ }
70250
+ },
70251
+ streamMappings: StreamMappingForm(defaultStreamMapping, {
70252
+ sourceNames: (cfg) => [cfg.sourceName ?? "file-source"]
70253
+ }),
70254
+ notes: {
70255
+ help: "Additional notes about this component",
70256
+ hint: {
70257
+ type: "text",
70258
+ optional: true
70259
+ }
70260
+ }
70261
+ }
70262
+ }
70263
+ });
70264
+ }
70265
+ function assertUnreachable(_) {
70266
+ throw new Error("Didn't expect to get here");
70267
+ }
70268
+
70269
+ // build/input.rtmp/inline-view.js
70270
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime());
70271
+ function InlineView2({ state, config }) {
70121
70272
  const maxSourceNum = 4;
70122
70273
  const sourcesToRender = state.connectedStreams.slice(0, maxSourceNum);
70123
70274
  if (state.connectedStreams.length > maxSourceNum) {
70124
70275
  sourcesToRender.push("...");
70125
70276
  }
70126
- const connectedSources = (0, import_jsx_runtime.jsxs)("div", { className: "mt-2", children: [state.connectedStreams.length > 0 ? (0, import_jsx_runtime.jsx)("span", { children: "Connected sources" }) : (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {}), (0, import_jsx_runtime.jsx)("ul", { className: "rtmp-input-connected-sources", children: sourcesToRender.map((sourceName) => {
70127
- return (0, import_jsx_runtime.jsx)("li", { className: "text-green-300", children: sourceName }, sourceName);
70277
+ const connectedSources = (0, import_jsx_runtime2.jsxs)("div", { className: "mt-2", children: [state.connectedStreams.length > 0 ? (0, import_jsx_runtime2.jsx)("span", { children: "Connected sources" }) : (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, {}), (0, import_jsx_runtime2.jsx)("ul", { className: "rtmp-input-connected-sources", children: sourcesToRender.map((sourceName) => {
70278
+ return (0, import_jsx_runtime2.jsx)("li", { className: "text-green-300", children: sourceName }, sourceName);
70128
70279
  }) })] });
70129
- return (0, import_jsx_runtime.jsx)("div", { className: "rtmp-input", id: `rtmp-input-${config.id}`, children: connectedSources });
70280
+ return (0, import_jsx_runtime2.jsx)("div", { className: "rtmp-input", id: `rtmp-input-${config.id}`, children: connectedSources });
70130
70281
  }
70131
- var inline_view_default = InlineView;
70282
+ var inline_view_default2 = InlineView2;
70132
70283
 
70133
70284
  // build/input.rtmp/summary-view.js
70134
- var import_jsx_runtime2 = __toESM(require_jsx_runtime());
70285
+ var import_jsx_runtime3 = __toESM(require_jsx_runtime());
70135
70286
  function SummaryView({ state, config, sendCommand }) {
70136
70287
  const connectedSources = [];
70137
70288
  const disconnectedSources = [];
@@ -70181,10 +70332,10 @@ function SummaryView({ state, config, sendCommand }) {
70181
70332
  disconnectedSources.push(streamName);
70182
70333
  }
70183
70334
  });
70184
- return (0, import_jsx_runtime2.jsxs)("div", { className: "dark:text-white text-black mb-3 w-60", children: [(0, import_jsx_runtime2.jsxs)("div", { id: "rtmp-sources-connected", children: [(0, import_jsx_runtime2.jsx)("span", { children: "Connected Sources" }), (0, import_jsx_runtime2.jsx)("ul", { children: connectedSources.map((streamName) => {
70185
- return (0, import_jsx_runtime2.jsxs)("li", { className: "text-green-300", children: [streamName, (0, import_jsx_runtime2.jsx)("button", { onClick: () => handleResetStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Reset" }), (0, import_jsx_runtime2.jsx)("button", { onClick: () => handleDisableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable" })] }, streamName);
70186
- }) })] }), (0, import_jsx_runtime2.jsxs)("div", { id: "rtmp-sources-disconnected", className: "mt-3", children: [(0, import_jsx_runtime2.jsx)("span", { children: "Disconnected Sources" }), (0, import_jsx_runtime2.jsx)("ul", { children: disconnectedSources.map((streamName) => {
70187
- return (0, import_jsx_runtime2.jsxs)("li", { className: "text-orange-300", children: [streamName, state.disabledStreams.includes(streamName) ? (0, import_jsx_runtime2.jsx)("button", { onClick: () => handleEnableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable" }) : (0, import_jsx_runtime2.jsx)("button", { onClick: () => handleDisableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable" })] }, streamName);
70335
+ return (0, import_jsx_runtime3.jsxs)("div", { className: "dark:text-white text-black mb-3 w-60", children: [(0, import_jsx_runtime3.jsxs)("div", { id: "rtmp-sources-connected", children: [(0, import_jsx_runtime3.jsx)("span", { children: "Connected Sources" }), (0, import_jsx_runtime3.jsx)("ul", { children: connectedSources.map((streamName) => {
70336
+ return (0, import_jsx_runtime3.jsxs)("li", { className: "text-green-300", children: [streamName, (0, import_jsx_runtime3.jsx)("button", { onClick: () => handleResetStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Reset" }), (0, import_jsx_runtime3.jsx)("button", { onClick: () => handleDisableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable" })] }, streamName);
70337
+ }) })] }), (0, import_jsx_runtime3.jsxs)("div", { id: "rtmp-sources-disconnected", className: "mt-3", children: [(0, import_jsx_runtime3.jsx)("span", { children: "Disconnected Sources" }), (0, import_jsx_runtime3.jsx)("ul", { children: disconnectedSources.map((streamName) => {
70338
+ return (0, import_jsx_runtime3.jsxs)("li", { className: "text-orange-300", children: [streamName, state.disabledStreams.includes(streamName) ? (0, import_jsx_runtime3.jsx)("button", { onClick: () => handleEnableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable" }) : (0, import_jsx_runtime3.jsx)("button", { onClick: () => handleDisableStream(streamName), className: "ml-2 px-2 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable" })] }, streamName);
70188
70339
  }) })] })] });
70189
70340
  }
70190
70341
  var summary_view_default = SummaryView;
@@ -70192,7 +70343,7 @@ var summary_view_default = SummaryView;
70192
70343
  // build/input.rtmp/info.js
70193
70344
  var import_FaVideo = __toESM(require_FaVideo());
70194
70345
  var defaultPort = 1935;
70195
- function defaultStreamMapping(cfg) {
70346
+ function defaultStreamMapping2(cfg) {
70196
70347
  return {
70197
70348
  streams: cfg.streamNames?.flatMap((s) => [{
70198
70349
  media: "video",
@@ -70221,7 +70372,7 @@ function defaultStreamMapping(cfg) {
70221
70372
  }]) ?? []
70222
70373
  };
70223
70374
  }
70224
- function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, validation: { Z, Port, SourceName, unique } }) {
70375
+ function info_default2({ defineComponent, mappingsToStreams, StreamMappingForm, validation: { Z, Port, SourceName, unique } }) {
70225
70376
  return defineComponent({
70226
70377
  identifier: "input.rtmp",
70227
70378
  category: "input",
@@ -70233,7 +70384,7 @@ function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, v
70233
70384
  produces: {
70234
70385
  type: "dynamic-streams",
70235
70386
  groupBy: "sourceName",
70236
- streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? defaultStreamMapping(cfg))
70387
+ streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? defaultStreamMapping2(cfg))
70237
70388
  }
70238
70389
  },
70239
70390
  display: (desc) => {
@@ -70259,11 +70410,11 @@ function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, v
70259
70410
  state.disabledStreams.push(ev.streamName);
70260
70411
  break;
70261
70412
  default:
70262
- assertUnreachable(evType);
70413
+ assertUnreachable2(evType);
70263
70414
  }
70264
70415
  return { ...state };
70265
70416
  },
70266
- inline: inline_view_default,
70417
+ inline: inline_view_default2,
70267
70418
  summary: summary_view_default
70268
70419
  },
70269
70420
  configForm: {
@@ -70281,7 +70432,7 @@ function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, v
70281
70432
  global: unique("sourceName")
70282
70433
  }
70283
70434
  },
70284
- streamMappings: StreamMappingForm(defaultStreamMapping, {
70435
+ streamMappings: StreamMappingForm(defaultStreamMapping2, {
70285
70436
  sourceNames: (cfg) => cfg.streamNames ?? []
70286
70437
  }),
70287
70438
  initialState: {
@@ -70313,13 +70464,13 @@ function info_default({ defineComponent, mappingsToStreams, StreamMappingForm, v
70313
70464
  }
70314
70465
  });
70315
70466
  }
70316
- function assertUnreachable(_) {
70467
+ function assertUnreachable2(_) {
70317
70468
  throw new Error("Didn't expect to get here");
70318
70469
  }
70319
70470
 
70320
70471
  // build/input.silence/info.js
70321
70472
  var import_FaVolumeMute = __toESM(require_FaVolumeMute());
70322
- function info_default2({ defineComponent }) {
70473
+ function info_default3({ defineComponent }) {
70323
70474
  return defineComponent({
70324
70475
  identifier: "input.silence",
70325
70476
  category: "input",
@@ -70427,23 +70578,23 @@ var srt_socket_options_default = result;
70427
70578
  var import_util = __toESM(require_util());
70428
70579
 
70429
70580
  // build/shared/srt-form-views.js
70430
- var import_jsx_runtime3 = __toESM(require_jsx_runtime());
70581
+ var import_jsx_runtime4 = __toESM(require_jsx_runtime());
70431
70582
  function SocketConfiguration(options) {
70432
70583
  const show = (n) => n !== void 0 && !Number.isNaN(n) ? n.toString() : "";
70433
- return (0, import_jsx_runtime3.jsxs)("div", { className: "space-y-1 w-full text-gray-500 dark:text-gray-400", children: [(0, import_jsx_runtime3.jsx)("div", { className: "flex w-full", children: (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm", children: options.maxBandwidth === void 0 && options.overheadBandwidth === void 0 && options.inputBandwidth === void 0 && options.peerLatency === void 0 && options.receiveLatency === void 0 ? "Using defaults" : "Manually configured" }) }), options.receiveLatency !== void 0 && (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime3.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Receive Latency" }), (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.receiveLatency) })] }), options.peerLatency !== void 0 && (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime3.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Peer Latency" }), (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.peerLatency) })] }), options.inputBandwidth !== void 0 && (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime3.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Input Bandwidth" }), (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.inputBandwidth) })] }), options.overheadBandwidth !== void 0 && (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime3.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Overhead Bandwidth" }), (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.overheadBandwidth) })] }), options.maxBandwidth !== void 0 && (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime3.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Max Bandwidth" }), (0, import_jsx_runtime3.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.maxBandwidth) })] })] });
70584
+ return (0, import_jsx_runtime4.jsxs)("div", { className: "space-y-1 w-full text-gray-500 dark:text-gray-400", children: [(0, import_jsx_runtime4.jsx)("div", { className: "flex w-full", children: (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm", children: options.maxBandwidth === void 0 && options.overheadBandwidth === void 0 && options.inputBandwidth === void 0 && options.peerLatency === void 0 && options.receiveLatency === void 0 ? "Using defaults" : "Manually configured" }) }), options.receiveLatency !== void 0 && (0, import_jsx_runtime4.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime4.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Receive Latency" }), (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.receiveLatency) })] }), options.peerLatency !== void 0 && (0, import_jsx_runtime4.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime4.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Peer Latency" }), (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.peerLatency) })] }), options.inputBandwidth !== void 0 && (0, import_jsx_runtime4.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime4.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Input Bandwidth" }), (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.inputBandwidth) })] }), options.overheadBandwidth !== void 0 && (0, import_jsx_runtime4.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime4.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Overhead Bandwidth" }), (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.overheadBandwidth) })] }), options.maxBandwidth !== void 0 && (0, import_jsx_runtime4.jsxs)("div", { className: "flex w-full", children: [(0, import_jsx_runtime4.jsx)("dt", { className: "flex-1 text-sm font-bold", children: "Max Bandwidth" }), (0, import_jsx_runtime4.jsx)("dd", { className: "flex-1 text-sm font-medium", children: show(options.maxBandwidth) })] })] });
70434
70585
  }
70435
70586
 
70436
70587
  // build/input.srt-caller/info.js
70437
70588
  var import_FaPhone = __toESM(require_FaPhone());
70438
70589
 
70439
70590
  // build/shared/srt-caller-metrics.js
70440
- var import_jsx_runtime4 = __toESM(require_jsx_runtime());
70591
+ var import_jsx_runtime5 = __toESM(require_jsx_runtime());
70441
70592
  function MetricsView({ state }) {
70442
- return (0, import_jsx_runtime4.jsxs)("div", { className: "srt-output", children: [(0, import_jsx_runtime4.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "SRT Packets" }), state.enabled || state.enabled === void 0 ? (0, import_jsx_runtime4.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime4.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [(0, import_jsx_runtime4.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Component Enabled" }), state.metrics.packetsSent >= 0 ? (0, import_jsx_runtime4.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }) : (0, import_jsx_runtime4.jsxs)("div", { children: ["Received: ", state.metrics.packetsReceived] }), (0, import_jsx_runtime4.jsxs)("div", { children: ["Lost/Retransmitted: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] })] }) }) : (0, import_jsx_runtime4.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Component disabled" })] });
70593
+ return (0, import_jsx_runtime5.jsxs)("div", { className: "srt-output", children: [(0, import_jsx_runtime5.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "SRT Packets" }), state.enabled || state.enabled === void 0 ? (0, import_jsx_runtime5.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime5.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [(0, import_jsx_runtime5.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Component Enabled" }), state.metrics.packetsSent >= 0 ? (0, import_jsx_runtime5.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }) : (0, import_jsx_runtime5.jsxs)("div", { children: ["Received: ", state.metrics.packetsReceived] }), (0, import_jsx_runtime5.jsxs)("div", { children: ["Lost/Retransmitted: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] })] }) }) : (0, import_jsx_runtime5.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Component disabled" })] });
70443
70594
  }
70444
70595
 
70445
70596
  // build/shared/stream-statistics-view.js
70446
- var import_jsx_runtime5 = __toESM(require_jsx_runtime());
70597
+ var import_jsx_runtime6 = __toESM(require_jsx_runtime());
70447
70598
 
70448
70599
  // ../../node_modules/react-chartjs-2/dist/index.js
70449
70600
  var import_react = __toESM(require_react(), 1);
@@ -84977,7 +85128,7 @@ function MetricsView2({ metrics, config, global, charting }) {
84977
85128
  }
84978
85129
  };
84979
85130
  if (!metrics[config.id])
84980
- return (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: "Loading statistics.." });
85131
+ return (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: "Loading statistics.." });
84981
85132
  const allBitrates = metrics[config.id].filter((v) => v.name == "norsk_measured_bitrate").sort((l, r) => displayStreamKey(l.streamKey).localeCompare(displayStreamKey(r.streamKey)));
84982
85133
  const createInitialDataset = (label, color2, initialValue) => ({
84983
85134
  label,
@@ -85005,18 +85156,18 @@ function MetricsView2({ metrics, config, global, charting }) {
85005
85156
  };
85006
85157
  });
85007
85158
  });
85008
- return (0, import_jsx_runtime5.jsxs)("div", { className: "space-y-2", children: [(0, import_jsx_runtime5.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "Measured Bitrates" }), (0, import_jsx_runtime5.jsx)("div", { className: "py-2 dark:px-2 dark:bg-gray-900 rounded-lg dark:border dark:border-gray-600 flex justify-center items-center", children: (0, import_jsx_runtime5.jsx)(Line, { className: "w-fit max-w-fit", width: 272, options: cpuChartOptions, data: bitrates }) })] });
85159
+ return (0, import_jsx_runtime6.jsxs)("div", { className: "space-y-2", children: [(0, import_jsx_runtime6.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "Measured Bitrates" }), (0, import_jsx_runtime6.jsx)("div", { className: "py-2 dark:px-2 dark:bg-gray-900 rounded-lg dark:border dark:border-gray-600 flex justify-center items-center", children: (0, import_jsx_runtime6.jsx)(Line, { className: "w-fit max-w-fit", width: 272, options: cpuChartOptions, data: bitrates }) })] });
85009
85160
  }
85010
85161
 
85011
85162
  // build/input.srt-caller/inline-view.js
85012
- var import_jsx_runtime6 = __toESM(require_jsx_runtime());
85013
- function InlineView2({ state }) {
85014
- return (0, import_jsx_runtime6.jsx)("div", { className: "srt-output", children: (0, import_jsx_runtime6.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime6.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [(0, import_jsx_runtime6.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected" }), (0, import_jsx_runtime6.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }), (0, import_jsx_runtime6.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] })] }) }) });
85163
+ var import_jsx_runtime7 = __toESM(require_jsx_runtime());
85164
+ function InlineView3({ state }) {
85165
+ return (0, import_jsx_runtime7.jsx)("div", { className: "srt-output", children: (0, import_jsx_runtime7.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime7.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [(0, import_jsx_runtime7.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected" }), (0, import_jsx_runtime7.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }), (0, import_jsx_runtime7.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] })] }) }) });
85015
85166
  }
85016
- var inline_view_default2 = InlineView2;
85167
+ var inline_view_default3 = InlineView3;
85017
85168
 
85018
85169
  // build/input.srt-caller/info.js
85019
- function info_default3({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation }) {
85170
+ function info_default4({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation }) {
85020
85171
  const { Port, Hostname: Hostname2, SrtPassphrase, SrtStreamId } = validation;
85021
85172
  return defineComponent({
85022
85173
  identifier: "input.srt-caller",
@@ -85052,7 +85203,7 @@ function info_default3({ defineComponent, singleAvStreamMapping, singleAvStreamM
85052
85203
  }
85053
85204
  return { ...state };
85054
85205
  },
85055
- inline: inline_view_default2,
85206
+ inline: inline_view_default3,
85056
85207
  metrics: [
85057
85208
  {
85058
85209
  title: "SRT Transmission",
@@ -85098,22 +85249,22 @@ function info_default3({ defineComponent, singleAvStreamMapping, singleAvStreamM
85098
85249
  }
85099
85250
 
85100
85251
  // build/input.srt-listener/inline-view.js
85101
- var import_jsx_runtime7 = __toESM(require_jsx_runtime());
85102
- function InlineView3({ state, config }) {
85252
+ var import_jsx_runtime8 = __toESM(require_jsx_runtime());
85253
+ function InlineView4({ state, config }) {
85103
85254
  const maxSourceNum = 4;
85104
85255
  const sourcesToRender = state.connectedStreams.slice(0, maxSourceNum);
85105
85256
  if (state.connectedStreams.length > maxSourceNum) {
85106
85257
  sourcesToRender.push("...");
85107
85258
  }
85108
- const connectedSources = (0, import_jsx_runtime7.jsxs)("div", { className: "mt-2", children: [" ", state.connectedStreams.length > 0 ? (0, import_jsx_runtime7.jsx)("span", { children: "Connected sources" }) : (0, import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment, {}), (0, import_jsx_runtime7.jsx)("ul", { className: "srt-input-connected-sources", children: sourcesToRender.map((sourceName) => {
85109
- return (0, import_jsx_runtime7.jsx)("li", { className: "text-green-300", children: sourceName }, sourceName);
85259
+ const connectedSources = (0, import_jsx_runtime8.jsxs)("div", { className: "mt-2", children: [" ", state.connectedStreams.length > 0 ? (0, import_jsx_runtime8.jsx)("span", { children: "Connected sources" }) : (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, {}), (0, import_jsx_runtime8.jsx)("ul", { className: "srt-input-connected-sources", children: sourcesToRender.map((sourceName) => {
85260
+ return (0, import_jsx_runtime8.jsx)("li", { className: "text-green-300", children: sourceName }, sourceName);
85110
85261
  }) })] });
85111
- return (0, import_jsx_runtime7.jsxs)("div", { className: "srt-input", id: `srt-input-${config.id}`, children: [connectedSources, (0, import_jsx_runtime7.jsxs)("div", { children: ["Received: ", state.metrics.packetsReceived.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime7.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost.reduce((a, i) => a + i, 0), "/", state.metrics.packetsResent.reduce((a, i) => a + i, 0)] })] });
85262
+ return (0, import_jsx_runtime8.jsxs)("div", { className: "srt-input", id: `srt-input-${config.id}`, children: [connectedSources, (0, import_jsx_runtime8.jsxs)("div", { children: ["Received: ", state.metrics.packetsReceived.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime8.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost.reduce((a, i) => a + i, 0), "/", state.metrics.packetsResent.reduce((a, i) => a + i, 0)] })] });
85112
85263
  }
85113
- var inline_view_default3 = InlineView3;
85264
+ var inline_view_default4 = InlineView4;
85114
85265
 
85115
85266
  // build/input.srt-listener/summary-view.js
85116
- var import_jsx_runtime8 = __toESM(require_jsx_runtime());
85267
+ var import_jsx_runtime9 = __toESM(require_jsx_runtime());
85117
85268
  function SummaryView2({ state, config, sendCommand }) {
85118
85269
  const connectedSources = [];
85119
85270
  const disconnectedSources = [];
@@ -85163,7 +85314,7 @@ function SummaryView2({ state, config, sendCommand }) {
85163
85314
  disconnectedSources.push(streamId);
85164
85315
  }
85165
85316
  });
85166
- return (0, import_jsx_runtime8.jsxs)("div", { className: "dark:text-white text-black w-60", children: [(0, import_jsx_runtime8.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime8.jsx)("h3", { className: "text-sm font-semibold mb-2 dark:text-gray-300", children: "Connected Sources" }), (0, import_jsx_runtime8.jsxs)("ul", { className: "space-y-2", children: [connectedSources.map((streamId) => (0, import_jsx_runtime8.jsxs)("li", { className: "flex items-center justify-between group", children: [(0, import_jsx_runtime8.jsx)("span", { className: "text-green-400 font-medium", children: streamId }), (0, import_jsx_runtime8.jsxs)("div", { className: "flex space-x-2", children: [(0, import_jsx_runtime8.jsx)("button", { onClick: () => handleResetStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Reset" }), (0, import_jsx_runtime8.jsx)("button", { onClick: () => handleDisableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Disable" })] })] }, streamId)), connectedSources.length === 0 && (0, import_jsx_runtime8.jsx)("li", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No connected sources" })] })] }), (0, import_jsx_runtime8.jsxs)("div", { children: [(0, import_jsx_runtime8.jsx)("h3", { className: "text-sm font-semibold mb-2 dark:text-gray-300", children: "Disconnected Sources" }), (0, import_jsx_runtime8.jsxs)("ul", { className: "space-y-2", children: [disconnectedSources.map((streamId) => (0, import_jsx_runtime8.jsxs)("li", { className: "flex items-center justify-between group", children: [(0, import_jsx_runtime8.jsx)("span", { className: "text-orange-300 font-medium", children: streamId }), state.disabledStreams.includes(streamId) ? (0, import_jsx_runtime8.jsx)("button", { onClick: () => handleEnableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-blue-600 hover:bg-blue-700 text-white rounded transition-colors", children: "Enable" }) : (0, import_jsx_runtime8.jsx)("button", { onClick: () => handleDisableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Disable" })] }, streamId)), disconnectedSources.length === 0 && (0, import_jsx_runtime8.jsx)("li", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No disconnected sources" })] })] })] });
85317
+ return (0, import_jsx_runtime9.jsxs)("div", { className: "dark:text-white text-black w-60", children: [(0, import_jsx_runtime9.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime9.jsx)("h3", { className: "text-sm font-semibold mb-2 dark:text-gray-300", children: "Connected Sources" }), (0, import_jsx_runtime9.jsxs)("ul", { className: "space-y-2", children: [connectedSources.map((streamId) => (0, import_jsx_runtime9.jsxs)("li", { className: "flex items-center justify-between group", children: [(0, import_jsx_runtime9.jsx)("span", { className: "text-green-400 font-medium", children: streamId }), (0, import_jsx_runtime9.jsxs)("div", { className: "flex space-x-2", children: [(0, import_jsx_runtime9.jsx)("button", { onClick: () => handleResetStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Reset" }), (0, import_jsx_runtime9.jsx)("button", { onClick: () => handleDisableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Disable" })] })] }, streamId)), connectedSources.length === 0 && (0, import_jsx_runtime9.jsx)("li", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No connected sources" })] })] }), (0, import_jsx_runtime9.jsxs)("div", { children: [(0, import_jsx_runtime9.jsx)("h3", { className: "text-sm font-semibold mb-2 dark:text-gray-300", children: "Disconnected Sources" }), (0, import_jsx_runtime9.jsxs)("ul", { className: "space-y-2", children: [disconnectedSources.map((streamId) => (0, import_jsx_runtime9.jsxs)("li", { className: "flex items-center justify-between group", children: [(0, import_jsx_runtime9.jsx)("span", { className: "text-orange-300 font-medium", children: streamId }), state.disabledStreams.includes(streamId) ? (0, import_jsx_runtime9.jsx)("button", { onClick: () => handleEnableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-blue-600 hover:bg-blue-700 text-white rounded transition-colors", children: "Enable" }) : (0, import_jsx_runtime9.jsx)("button", { onClick: () => handleDisableStream(streamId), className: "opacity-80 group-hover:opacity-100 px-3 py-1 text-xs bg-red-600 hover:bg-red-700 text-white rounded transition-colors", children: "Disable" })] }, streamId)), disconnectedSources.length === 0 && (0, import_jsx_runtime9.jsx)("li", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No disconnected sources" })] })] })] });
85167
85318
  }
85168
85319
  var summary_view_default2 = SummaryView2;
85169
85320
 
@@ -85171,15 +85322,15 @@ var summary_view_default2 = SummaryView2;
85171
85322
  var import_FaHeadphones = __toESM(require_FaHeadphones());
85172
85323
 
85173
85324
  // build/shared/srt-listener-metrics.js
85174
- var import_jsx_runtime9 = __toESM(require_jsx_runtime());
85325
+ var import_jsx_runtime10 = __toESM(require_jsx_runtime());
85175
85326
  function MetricsView3({ state }) {
85176
- return (0, import_jsx_runtime9.jsxs)("div", { className: "srt-output space-y-2", children: [(0, import_jsx_runtime9.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "SRT Packets" }), state.enabled === void 0 || state.enabled ? state.metrics.connectionCount == 0 ? (0, import_jsx_runtime9.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "No connections" }) : (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children: (0, import_jsx_runtime9.jsx)("div", { className: "p-2 flex flex-col gap-2 border border-gray-200 dark:border-gray-700", children: (state.metrics.packetsSent.length == 0 ? state.metrics.packetsReceived : state.metrics.packetsSent).map((p, i) => {
85177
- return (0, import_jsx_runtime9.jsxs)("div", { className: "grid grid-cols-2", children: [(0, import_jsx_runtime9.jsx)("dt", { className: "font-medium", children: "Connection" }), (0, import_jsx_runtime9.jsx)("dd", { className: "", children: state.names?.[i] ?? i }), (0, import_jsx_runtime9.jsx)("dt", { className: "font-medium", children: state.metrics.packetsSent.length == 0 ? "Received" : "Sent" }), (0, import_jsx_runtime9.jsx)("dd", { className: "", children: p }), (0, import_jsx_runtime9.jsx)("dt", { className: "font-medium", children: "Retransmitted" }), (0, import_jsx_runtime9.jsx)("dd", { className: "", children: state.metrics.packetsResent[i] }), (0, import_jsx_runtime9.jsx)("dt", { className: "font-medium", children: "Lost" }), (0, import_jsx_runtime9.jsx)("dd", { className: "", children: state.metrics.packetsLost[i] })] }, i);
85178
- }) }) }) : (0, import_jsx_runtime9.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Component disabled" })] });
85327
+ return (0, import_jsx_runtime10.jsxs)("div", { className: "srt-output space-y-2", children: [(0, import_jsx_runtime10.jsx)("h4", { className: "font-bold dark:text-white text-black", children: "SRT Packets" }), state.enabled === void 0 || state.enabled ? state.metrics.connectionCount == 0 ? (0, import_jsx_runtime10.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "No connections" }) : (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: (0, import_jsx_runtime10.jsx)("div", { className: "p-2 flex flex-col gap-2 border border-gray-200 dark:border-gray-700", children: (state.metrics.packetsSent.length == 0 ? state.metrics.packetsReceived : state.metrics.packetsSent).map((p, i) => {
85328
+ return (0, import_jsx_runtime10.jsxs)("div", { className: "grid grid-cols-2", children: [(0, import_jsx_runtime10.jsx)("dt", { className: "font-medium", children: "Connection" }), (0, import_jsx_runtime10.jsx)("dd", { className: "", children: state.names?.[i] ?? i }), (0, import_jsx_runtime10.jsx)("dt", { className: "font-medium", children: state.metrics.packetsSent.length == 0 ? "Received" : "Sent" }), (0, import_jsx_runtime10.jsx)("dd", { className: "", children: p }), (0, import_jsx_runtime10.jsx)("dt", { className: "font-medium", children: "Retransmitted" }), (0, import_jsx_runtime10.jsx)("dd", { className: "", children: state.metrics.packetsResent[i] }), (0, import_jsx_runtime10.jsx)("dt", { className: "font-medium", children: "Lost" }), (0, import_jsx_runtime10.jsx)("dd", { className: "", children: state.metrics.packetsLost[i] })] }, i);
85329
+ }) }) }) : (0, import_jsx_runtime10.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Component disabled" })] });
85179
85330
  }
85180
85331
 
85181
85332
  // build/input.srt-listener/info.js
85182
- function defaultStreamMapping2(cfg) {
85333
+ function defaultStreamMapping3(cfg) {
85183
85334
  return {
85184
85335
  streams: cfg.streamIds?.flatMap((s) => [{
85185
85336
  media: "video",
@@ -85208,7 +85359,7 @@ function defaultStreamMapping2(cfg) {
85208
85359
  }]) ?? []
85209
85360
  };
85210
85361
  }
85211
- function info_default4({ defineComponent, mappingsToStreams, StreamMappingForm, validation }) {
85362
+ function info_default5({ defineComponent, mappingsToStreams, StreamMappingForm, validation }) {
85212
85363
  const { Z, Port, Hostname: Hostname2, SourceName, SrtPassphrase, unique } = validation;
85213
85364
  return defineComponent({
85214
85365
  identifier: "input.srt-listener",
@@ -85221,7 +85372,7 @@ function info_default4({ defineComponent, mappingsToStreams, StreamMappingForm,
85221
85372
  produces: {
85222
85373
  type: "dynamic-streams",
85223
85374
  groupBy: "sourceName",
85224
- streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? defaultStreamMapping2(cfg))
85375
+ streams: (cfg) => mappingsToStreams(cfg.streamMappings ?? defaultStreamMapping3(cfg))
85225
85376
  }
85226
85377
  },
85227
85378
  display: (desc) => {
@@ -85265,11 +85416,11 @@ function info_default4({ defineComponent, mappingsToStreams, StreamMappingForm,
85265
85416
  state.metrics = ev.metrics;
85266
85417
  break;
85267
85418
  default:
85268
- assertUnreachable3(evType);
85419
+ assertUnreachable4(evType);
85269
85420
  }
85270
85421
  return { ...state };
85271
85422
  },
85272
- inline: inline_view_default3,
85423
+ inline: inline_view_default4,
85273
85424
  summary: summary_view_default2,
85274
85425
  metrics: [
85275
85426
  { title: "SRT Transmission", view: MetricsView3 },
@@ -85337,7 +85488,7 @@ function info_default4({ defineComponent, mappingsToStreams, StreamMappingForm,
85337
85488
  global: unique("sourceName")
85338
85489
  }
85339
85490
  },
85340
- streamMappings: StreamMappingForm(defaultStreamMapping2, {
85491
+ streamMappings: StreamMappingForm(defaultStreamMapping3, {
85341
85492
  sourceNames: (cfg) => cfg.streamIds ?? []
85342
85493
  }),
85343
85494
  notes: {
@@ -85351,13 +85502,13 @@ function info_default4({ defineComponent, mappingsToStreams, StreamMappingForm,
85351
85502
  }
85352
85503
  });
85353
85504
  }
85354
- function assertUnreachable3(_) {
85505
+ function assertUnreachable4(_) {
85355
85506
  throw new Error("Didn't expect to get here");
85356
85507
  }
85357
85508
 
85358
85509
  // build/input.udp-ts/info.js
85359
85510
  var import_FaNetworkWired = __toESM(require_FaNetworkWired());
85360
- function info_default5({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation: { Z, Port, Hostname: Hostname2, unique } }) {
85511
+ function info_default6({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation: { Z, Port, Hostname: Hostname2, unique } }) {
85361
85512
  return defineComponent({
85362
85513
  identifier: "input.udp-ts",
85363
85514
  category: "input",
@@ -85393,7 +85544,7 @@ function info_default5({ defineComponent, singleAvStreamMapping, singleAvStreamM
85393
85544
 
85394
85545
  // build/input.videoTestCard/info.js
85395
85546
  var import_FaTv = __toESM(require_FaTv());
85396
- function info_default6({ defineComponent, common: { Resolutions, FrameRates } }) {
85547
+ function info_default7({ defineComponent, common: { Resolutions, FrameRates } }) {
85397
85548
  return defineComponent({
85398
85549
  identifier: "input.videoTestCard",
85399
85550
  category: "input",
@@ -85454,21 +85605,21 @@ var import_util2 = __toESM(require_util());
85454
85605
  var import_FaCloudUploadAlt = __toESM(require_FaCloudUploadAlt());
85455
85606
 
85456
85607
  // build/input.whip/inline-view.js
85457
- var import_jsx_runtime10 = __toESM(require_jsx_runtime());
85608
+ var import_jsx_runtime11 = __toESM(require_jsx_runtime());
85458
85609
  var import_react2 = __toESM(require_react());
85459
- function InlineView4({ state, raise }) {
85610
+ function InlineView5({ state, raise }) {
85460
85611
  (0, import_react2.useEffect)(() => {
85461
85612
  if (raise) {
85462
85613
  raise();
85463
85614
  }
85464
85615
  }, [raise]);
85465
- return (0, import_jsx_runtime10.jsx)("div", { className: "input-whip", children: (0, import_jsx_runtime10.jsxs)("div", { className: "whip-status-inline", children: [(0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime10.jsx)("div", { className: `w-2 h-2 rounded-full ${state.connectionCount > 0 ? "bg-green-400" : "bg-gray-400"}` }), (0, import_jsx_runtime10.jsx)("span", { className: "text-sm", children: state.connectionCount > 0 ? `${state.connectionCount} connected` : "No connections" })] }), state.endpointUrl && (0, import_jsx_runtime10.jsxs)("div", { className: "mt-1", children: [(0, import_jsx_runtime10.jsx)("span", { className: "text-xs text-gray-600", children: "Endpoint: " }), (0, import_jsx_runtime10.jsx)("code", { className: "text-xs bg-gray-100 px-1 rounded", children: state.endpointUrl })] }), state.activeSessions && state.activeSessions.length > 0 && (0, import_jsx_runtime10.jsxs)("div", { className: "mt-2", children: [(0, import_jsx_runtime10.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "Active Sessions:" }), state.activeSessions.slice(0, 3).map((session) => (0, import_jsx_runtime10.jsxs)("div", { className: "text-xs flex items-center space-x-1", children: [(0, import_jsx_runtime10.jsx)("div", { className: `w-1 h-1 rounded-full ${session.status === "connected" ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime10.jsx)("span", { children: session.sourceName }), (0, import_jsx_runtime10.jsxs)("span", { className: "text-gray-500", children: ["(", session.sessionId.slice(0, 8), "...)"] })] }, session.sessionId)), state.activeSessions.length > 3 && (0, import_jsx_runtime10.jsxs)("div", { className: "text-xs text-gray-500", children: ["+ ", state.activeSessions.length - 3, " more"] })] })] }) });
85616
+ return (0, import_jsx_runtime11.jsx)("div", { className: "input-whip", children: (0, import_jsx_runtime11.jsxs)("div", { className: "whip-status-inline", children: [(0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime11.jsx)("div", { className: `w-2 h-2 rounded-full ${state.connectionCount > 0 ? "bg-green-400" : "bg-gray-400"}` }), (0, import_jsx_runtime11.jsx)("span", { className: "text-sm", children: state.connectionCount > 0 ? `${state.connectionCount} connected` : "No connections" })] }), state.endpointUrl && (0, import_jsx_runtime11.jsxs)("div", { className: "mt-1", children: [(0, import_jsx_runtime11.jsx)("span", { className: "text-xs text-gray-600", children: "Endpoint: " }), (0, import_jsx_runtime11.jsx)("code", { className: "text-xs bg-gray-100 px-1 rounded", children: state.endpointUrl })] }), state.activeSessions && state.activeSessions.length > 0 && (0, import_jsx_runtime11.jsxs)("div", { className: "mt-2", children: [(0, import_jsx_runtime11.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "Active Sessions:" }), state.activeSessions.slice(0, 3).map((session) => (0, import_jsx_runtime11.jsxs)("div", { className: "text-xs flex items-center space-x-1", children: [(0, import_jsx_runtime11.jsx)("div", { className: `w-1 h-1 rounded-full ${session.status === "connected" ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime11.jsx)("span", { children: session.sourceName }), (0, import_jsx_runtime11.jsxs)("span", { className: "text-gray-500", children: ["(", session.sessionId.slice(0, 8), "...)"] })] }, session.sessionId)), state.activeSessions.length > 3 && (0, import_jsx_runtime11.jsxs)("div", { className: "text-xs text-gray-500", children: ["+ ", state.activeSessions.length - 3, " more"] })] })] }) });
85466
85617
  }
85467
- var inline_view_default4 = InlineView4;
85618
+ var inline_view_default5 = InlineView5;
85468
85619
 
85469
85620
  // build/input.whip/info.js
85470
85621
  var import_config = __toESM(require_config());
85471
- function info_default7({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation }) {
85622
+ function info_default8({ defineComponent, singleAvStreamMapping, singleAvStreamMappingForm, mappingsToStreams, validation }) {
85472
85623
  return defineComponent({
85473
85624
  identifier: "input.whip",
85474
85625
  category: "input",
@@ -85518,7 +85669,7 @@ function info_default7({ defineComponent, singleAvStreamMapping, singleAvStreamM
85518
85669
  }
85519
85670
  return { ...state };
85520
85671
  },
85521
- inline: inline_view_default4,
85672
+ inline: inline_view_default5,
85522
85673
  metrics: [
85523
85674
  {
85524
85675
  title: "Stream Statistics",
@@ -85569,7 +85720,7 @@ function info_default7({ defineComponent, singleAvStreamMapping, singleAvStreamM
85569
85720
  var import_config2 = __toESM(require_config());
85570
85721
 
85571
85722
  // build/output.autoCmaf/summary-view.js
85572
- var import_jsx_runtime11 = __toESM(require_jsx_runtime());
85723
+ var import_jsx_runtime12 = __toESM(require_jsx_runtime());
85573
85724
  function SummaryView3({ state, sendCommand }) {
85574
85725
  const handleEnableOutput = () => {
85575
85726
  void enableOutput();
@@ -85587,12 +85738,12 @@ function SummaryView3({ state, sendCommand }) {
85587
85738
  type: "disable-output"
85588
85739
  });
85589
85740
  };
85590
- return (0, import_jsx_runtime11.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime11.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime11.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime11.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime11.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime11.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
85741
+ return (0, import_jsx_runtime12.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime12.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime12.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime12.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime12.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime12.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
85591
85742
  }
85592
85743
  var summary_view_default3 = SummaryView3;
85593
85744
 
85594
85745
  // build/output.autoCmaf/fullscreen.js
85595
- var import_jsx_runtime12 = __toESM(require_jsx_runtime());
85746
+ var import_jsx_runtime13 = __toESM(require_jsx_runtime());
85596
85747
  var import_react3 = __toESM(require_react());
85597
85748
  var import_hls = __toESM(require_hls());
85598
85749
  function FullscreenView({ state, config }) {
@@ -85654,20 +85805,20 @@ function FullscreenView({ state, config }) {
85654
85805
  } else if (element.canPlayType("application/vnd.apple.mpegurl")) {
85655
85806
  element.src = url;
85656
85807
  }
85657
- }, [id, url]);
85808
+ }, [config.__global?.ezdrmConfig?.pX, config.drmProvider, id, state.drmToken, url]);
85658
85809
  if (!url)
85659
- return (0, import_jsx_runtime12.jsx)(import_jsx_runtime12.Fragment, { children: "..." });
85810
+ return (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: "..." });
85660
85811
  {
85661
85812
  }
85662
- return (0, import_jsx_runtime12.jsx)("div", { children: (0, import_jsx_runtime12.jsx)("video", { controls: true, autoPlay: true, muted: true, id: `${id}-video` }) });
85813
+ return (0, import_jsx_runtime13.jsx)("div", { children: (0, import_jsx_runtime13.jsx)("video", { controls: true, autoPlay: true, muted: true, id: `${id}-video` }) });
85663
85814
  }
85664
85815
  var fullscreen_default = FullscreenView;
85665
85816
 
85666
85817
  // build/output.autoCmaf/inline-view.js
85667
- var import_jsx_runtime13 = __toESM(require_jsx_runtime());
85818
+ var import_jsx_runtime14 = __toESM(require_jsx_runtime());
85668
85819
  var import_hls2 = __toESM(require_hls());
85669
85820
  var import_react4 = __toESM(require_react());
85670
- function InlineView5({ state, config }) {
85821
+ function InlineView6({ state, config }) {
85671
85822
  const url = state.url;
85672
85823
  const id = config.id;
85673
85824
  const previewVideo = (0, import_react4.useRef)(null);
@@ -85732,9 +85883,9 @@ function InlineView5({ state, config }) {
85732
85883
  previewVideo.current.src = url;
85733
85884
  }
85734
85885
  }, [config.__global?.ezdrmConfig?.pX, config.drmProvider, state.drmToken, url, showPreview]);
85735
- return (0, import_jsx_runtime13.jsxs)("div", { className: "cmaf-output", children: [state.enabled ? (0, import_jsx_runtime13.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Output enabled" }) : (0, import_jsx_runtime13.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }), (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime13.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime13.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), !url ? (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, {}) : (0, import_jsx_runtime13.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime13.jsx)("video", { ref: previewVideo, autoPlay: true, muted: true, id: `${id}-video` }) })] });
85886
+ return (0, import_jsx_runtime14.jsxs)("div", { className: "cmaf-output", children: [state.enabled ? (0, import_jsx_runtime14.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Output enabled" }) : (0, import_jsx_runtime14.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }), (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime14.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime14.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), !url ? (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {}) : (0, import_jsx_runtime14.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime14.jsx)("video", { ref: previewVideo, autoPlay: true, muted: true, id: `${id}-video` }) })] });
85736
85887
  }
85737
- var inline_view_default5 = InlineView5;
85888
+ var inline_view_default6 = InlineView6;
85738
85889
 
85739
85890
  // build/output.autoCmaf/info.js
85740
85891
  var import_FaCog = __toESM(require_FaCog());
@@ -85743,22 +85894,22 @@ var import_FaCog = __toESM(require_FaCog());
85743
85894
  var import_client_types = __toESM(require_client_types());
85744
85895
 
85745
85896
  // build/shared/playlist-form-views.js
85746
- var import_jsx_runtime14 = __toESM(require_jsx_runtime());
85897
+ var import_jsx_runtime15 = __toESM(require_jsx_runtime());
85747
85898
  function Destination(destination) {
85748
85899
  switch (destination.type) {
85749
85900
  case "s3":
85750
- return (0, import_jsx_runtime14.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Host" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.host }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Path" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.prefix }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Include Ads" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.includeAdInsertions ? "yes" : "no" })] });
85901
+ return (0, import_jsx_runtime15.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Host" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.host }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Path" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.prefix }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Include Ads" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.includeAdInsertions ? "yes" : "no" })] });
85751
85902
  case "akamai":
85752
- return (0, import_jsx_runtime14.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Ingest" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.ingest }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Playback" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.playback }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Include Ads" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: destination.includeAdInsertions ? "yes" : "no" })] });
85903
+ return (0, import_jsx_runtime15.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Ingest" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.ingest }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Playback" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.playback }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Include Ads" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: destination.includeAdInsertions ? "yes" : "no" })] });
85753
85904
  default: {
85754
85905
  const _ = destination;
85755
85906
  console.log("Unreachable");
85756
- return (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});
85907
+ return (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, {});
85757
85908
  }
85758
85909
  }
85759
85910
  }
85760
85911
  function SegmentConfiguration(cfg) {
85761
- return (0, import_jsx_runtime14.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Segments" }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-2", children: cfg.defaultSegmentCount == 0 ? "all" : cfg.defaultSegmentCount }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Segment Target" }), (0, import_jsx_runtime14.jsxs)("div", { className: "col-span-2", children: [cfg.targetSegmentDuration, "s"] }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Part Target" }), (0, import_jsx_runtime14.jsxs)("div", { className: "col-span-2", children: [cfg.targetPartDuration, "s"] }), (0, import_jsx_runtime14.jsx)("div", { className: "col-span-1", children: "Retention" }), (0, import_jsx_runtime14.jsxs)("div", { className: "col-span-2", children: [cfg.retentionPeriod, "s"] })] });
85912
+ return (0, import_jsx_runtime15.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Segments" }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-2", children: cfg.defaultSegmentCount == 0 ? "all" : cfg.defaultSegmentCount }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Segment Target" }), (0, import_jsx_runtime15.jsxs)("div", { className: "col-span-2", children: [cfg.targetSegmentDuration, "s"] }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Part Target" }), (0, import_jsx_runtime15.jsxs)("div", { className: "col-span-2", children: [cfg.targetPartDuration, "s"] }), (0, import_jsx_runtime15.jsx)("div", { className: "col-span-1", children: "Retention" }), (0, import_jsx_runtime15.jsxs)("div", { className: "col-span-2", children: [cfg.retentionPeriod, "s"] })] });
85762
85913
  }
85763
85914
 
85764
85915
  // ../../node_modules/zod/lib/index.mjs
@@ -89969,7 +90120,7 @@ var DestinationsFormEntry = {
89969
90120
  };
89970
90121
 
89971
90122
  // build/output.autoCmaf/info.js
89972
- function info_default8(R) {
90123
+ function info_default9(R) {
89973
90124
  const { defineComponent, All, validation: { Z } } = R;
89974
90125
  return defineComponent({
89975
90126
  identifier: "output.autoCmaf",
@@ -90040,13 +90191,13 @@ function info_default8(R) {
90040
90191
  state.enabled = false;
90041
90192
  break;
90042
90193
  default:
90043
- assertUnreachable5(evType);
90194
+ assertUnreachable6(evType);
90044
90195
  }
90045
90196
  return { ...state };
90046
90197
  },
90047
90198
  summary: summary_view_default3,
90048
90199
  fullscreen: fullscreen_default,
90049
- inline: inline_view_default5
90200
+ inline: inline_view_default6
90050
90201
  },
90051
90202
  configForm: {
90052
90203
  global: {
@@ -90172,14 +90323,14 @@ function info_default8(R) {
90172
90323
  }
90173
90324
  });
90174
90325
  }
90175
- function assertUnreachable5(_) {
90326
+ function assertUnreachable6(_) {
90176
90327
  throw new Error("Didn't expect to get here");
90177
90328
  }
90178
90329
 
90179
90330
  // build/output.autoHls/info.js
90180
90331
  var import_FaCogs = __toESM(require_FaCogs());
90181
- function info_default9(R) {
90182
- const autoCmaf = info_default8(R);
90332
+ function info_default10(R) {
90333
+ const autoCmaf = info_default9(R);
90183
90334
  const { drmProvider: _, ...NoCrypto } = autoCmaf.configForm.form;
90184
90335
  return {
90185
90336
  ...autoCmaf,
@@ -90197,7 +90348,7 @@ function info_default9(R) {
90197
90348
  // build/output.cmafMultiVariant/info.js
90198
90349
  var import_util3 = __toESM(require_util());
90199
90350
  var import_FaHeadphones2 = __toESM(require_FaHeadphones());
90200
- function info_default10(registration) {
90351
+ function info_default11(registration) {
90201
90352
  const { defineComponent, validation } = registration;
90202
90353
  const { Z } = validation;
90203
90354
  return defineComponent({
@@ -90288,7 +90439,7 @@ function info_default10(registration) {
90288
90439
  // build/output.cmafPlaylist/info.js
90289
90440
  var import_util4 = __toESM(require_util());
90290
90441
  var import_FaHeadphones3 = __toESM(require_FaHeadphones());
90291
- function info_default11(registration) {
90442
+ function info_default12(registration) {
90292
90443
  const { defineComponent, validation } = registration;
90293
90444
  const { Z } = validation;
90294
90445
  return defineComponent({
@@ -90440,7 +90591,7 @@ function info_default11(registration) {
90440
90591
  }
90441
90592
 
90442
90593
  // build/output.rtmp/summary-view.js
90443
- var import_jsx_runtime15 = __toESM(require_jsx_runtime());
90594
+ var import_jsx_runtime16 = __toESM(require_jsx_runtime());
90444
90595
  function SummaryView4({ state, sendCommand }) {
90445
90596
  const handleEnableOutput = () => {
90446
90597
  void enableOutput();
@@ -90458,36 +90609,36 @@ function SummaryView4({ state, sendCommand }) {
90458
90609
  type: "disable-output"
90459
90610
  });
90460
90611
  };
90461
- return (0, import_jsx_runtime15.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime15.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime15.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime15.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime15.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime15.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
90612
+ return (0, import_jsx_runtime16.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime16.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime16.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime16.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime16.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime16.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
90462
90613
  }
90463
90614
  var summary_view_default4 = SummaryView4;
90464
90615
 
90465
90616
  // build/output.rtmp/inline-view.js
90466
- var import_jsx_runtime17 = __toESM(require_jsx_runtime());
90617
+ var import_jsx_runtime18 = __toESM(require_jsx_runtime());
90467
90618
 
90468
90619
  // build/shared/jitter-buffer-inline.js
90469
- var import_jsx_runtime16 = __toESM(require_jsx_runtime());
90620
+ var import_jsx_runtime17 = __toESM(require_jsx_runtime());
90470
90621
  function initialJitterBufferState() {
90471
90622
  return { target: 0, value: 0, percentage: 0 };
90472
90623
  }
90473
90624
  function JitterBufferInline(jb) {
90474
- return (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: (0, import_jsx_runtime16.jsxs)("div", { children: ["Buffer: ", (0, import_jsx_runtime16.jsx)("meter", { value: jb.percentage, max: 100, high: 50, low: 25 })] }) });
90625
+ return (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: (0, import_jsx_runtime17.jsxs)("div", { children: ["Buffer: ", (0, import_jsx_runtime17.jsx)("meter", { value: jb.percentage, max: 100, high: 50, low: 25 })] }) });
90475
90626
  }
90476
90627
 
90477
90628
  // build/output.rtmp/inline-view.js
90478
- function InlineView6({ state, config }) {
90629
+ function InlineView7({ state, config }) {
90479
90630
  if (!state.enabled) {
90480
- return (0, import_jsx_runtime17.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" });
90631
+ return (0, import_jsx_runtime18.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" });
90481
90632
  }
90482
- const connected = (0, import_jsx_runtime17.jsxs)("div", { children: [(0, import_jsx_runtime17.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected and publishing" }), (0, import_jsx_runtime17.jsx)(JitterBufferInline, { ...state.jitterBuffer })] });
90483
- const disconnected = (0, import_jsx_runtime17.jsxs)("div", { className: "inactive text-orange-500 dark:text-orange-300", children: ["Disconnected ", state.connectRetries > 0 ? `- retrying(${state.connectRetries})` : ""] });
90484
- return (0, import_jsx_runtime17.jsx)("div", { className: "rtmp-output", id: `rtmp-output-${config.id}`, children: state.connected ? connected : disconnected });
90633
+ const connected = (0, import_jsx_runtime18.jsxs)("div", { children: [(0, import_jsx_runtime18.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected and publishing" }), (0, import_jsx_runtime18.jsx)(JitterBufferInline, { ...state.jitterBuffer })] });
90634
+ const disconnected = (0, import_jsx_runtime18.jsxs)("div", { className: "inactive text-orange-500 dark:text-orange-300", children: ["Disconnected ", state.connectRetries > 0 ? `- retrying(${state.connectRetries})` : ""] });
90635
+ return (0, import_jsx_runtime18.jsx)("div", { className: "rtmp-output", id: `rtmp-output-${config.id}`, children: state.connected ? connected : disconnected });
90485
90636
  }
90486
- var inline_view_default6 = InlineView6;
90637
+ var inline_view_default7 = InlineView7;
90487
90638
 
90488
90639
  // build/output.rtmp/info.js
90489
90640
  var import_FaVideoSlash = __toESM(require_FaVideoSlash());
90490
- function info_default12(r) {
90641
+ function info_default13(r) {
90491
90642
  const { validation: { JitterBuffer, Z } } = r;
90492
90643
  return defineRtmpOutputComponent(r, {
90493
90644
  identifier: "output.rtmp",
@@ -90555,22 +90706,22 @@ function defineRtmpOutputComponent({ defineComponent }, settings) {
90555
90706
  state.jitterBuffer = ev.buffer;
90556
90707
  break;
90557
90708
  default:
90558
- assertUnreachable8(evType);
90709
+ assertUnreachable9(evType);
90559
90710
  }
90560
90711
  return { ...state };
90561
90712
  },
90562
- inline: inline_view_default6,
90713
+ inline: inline_view_default7,
90563
90714
  summary: summary_view_default4
90564
90715
  }
90565
90716
  });
90566
90717
  }
90567
- function assertUnreachable8(_) {
90718
+ function assertUnreachable9(_) {
90568
90719
  throw new Error("Didn't expect to get here");
90569
90720
  }
90570
90721
 
90571
90722
  // build/output.facebook/info.js
90572
90723
  var import_FaFacebook = __toESM(require_FaFacebook());
90573
- function info_default13(r) {
90724
+ function info_default14(r) {
90574
90725
  const { validation: { Z } } = r;
90575
90726
  return defineRtmpOutputComponent(r, {
90576
90727
  identifier: "output.Facebook",
@@ -90600,7 +90751,7 @@ function info_default13(r) {
90600
90751
 
90601
90752
  // build/output.linkedin/info.js
90602
90753
  var import_FaLinkedin = __toESM(require_FaLinkedin());
90603
- function info_default14(r) {
90754
+ function info_default15(r) {
90604
90755
  const { validation: { Z } } = r;
90605
90756
  return defineRtmpOutputComponent(r, {
90606
90757
  identifier: "output.LinkedIn",
@@ -90632,7 +90783,7 @@ function info_default14(r) {
90632
90783
  var import_config3 = __toESM(require_config());
90633
90784
 
90634
90785
  // build/output.preview/inline-view.js
90635
- var import_jsx_runtime18 = __toESM(require_jsx_runtime());
90786
+ var import_jsx_runtime19 = __toESM(require_jsx_runtime());
90636
90787
  var import_react6 = __toESM(require_react());
90637
90788
 
90638
90789
  // build/shared/whep.js
@@ -90680,7 +90831,7 @@ function createPlayerElement(stream, container) {
90680
90831
  }
90681
90832
 
90682
90833
  // build/output.preview/inline-view.js
90683
- function InlineView7({ state, config, raise }) {
90834
+ function InlineView8({ state, config, raise }) {
90684
90835
  const url = state.url;
90685
90836
  const id = config.id;
90686
90837
  const [showPreview, setShowPreview] = (0, import_react6.useState)(config.showPreview ?? true);
@@ -90745,7 +90896,7 @@ function InlineView7({ state, config, raise }) {
90745
90896
  }, [config.showPreview]);
90746
90897
  (0, import_react6.useEffect)(() => raise?.(), [raise]);
90747
90898
  if (!url)
90748
- return (0, import_jsx_runtime18.jsx)(import_jsx_runtime18.Fragment, { children: "..." });
90899
+ return (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, { children: "..." });
90749
90900
  function percentage(levels) {
90750
90901
  if (!levels) {
90751
90902
  return 0;
@@ -90755,13 +90906,13 @@ function InlineView7({ state, config, raise }) {
90755
90906
  const snapped = Math.floor(capped * 10) * 10;
90756
90907
  return Math.max(0, 100 - snapped);
90757
90908
  }
90758
- return (0, import_jsx_runtime18.jsxs)("div", { className: "preview-outer-container", children: [(0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime18.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime18.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-stretch h-full", children: [showPreview ? (0, import_jsx_runtime18.jsx)(import_jsx_runtime18.Fragment, { children: (0, import_jsx_runtime18.jsxs)("div", { className: "preview-video", id: `preview-${id}`, children: [imageUrl && (0, import_jsx_runtime18.jsx)("img", { src: imageUrl, width: 420, height: 236, alt: "Preview" }), (0, import_jsx_runtime18.jsx)("style", { children: `#preview-${id} video::-webkit-media-controls-play-button { display: none; }` })] }) }) : (0, import_jsx_runtime18.jsx)("div", { className: "preview-video bg-black flex items-center justify-center text-white h-full py-4", children: "Preview turned off" }), (0, import_jsx_runtime18.jsx)("div", { className: "preview-levels", children: (0, import_jsx_runtime18.jsx)("div", { className: `preview-level clip-${percentage(state.levels)}-preview` }) })] })] });
90909
+ return (0, import_jsx_runtime19.jsxs)("div", { className: "preview-outer-container", children: [(0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime19.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime19.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-stretch h-full", children: [showPreview ? (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, { children: (0, import_jsx_runtime19.jsxs)("div", { className: "preview-video", id: `preview-${id}`, children: [imageUrl && (0, import_jsx_runtime19.jsx)("img", { src: imageUrl, width: 420, height: 236, alt: "Preview" }), (0, import_jsx_runtime19.jsx)("style", { children: `#preview-${id} video::-webkit-media-controls-play-button { display: none; }` })] }) }) : (0, import_jsx_runtime19.jsx)("div", { className: "preview-video bg-black flex items-center justify-center text-white h-full py-4", children: "Preview turned off" }), (0, import_jsx_runtime19.jsx)("div", { className: "preview-levels", children: (0, import_jsx_runtime19.jsx)("div", { className: `preview-level clip-${percentage(state.levels)}-preview` }) })] })] });
90759
90910
  }
90760
- var inline_view_default7 = InlineView7;
90911
+ var inline_view_default8 = InlineView8;
90761
90912
 
90762
90913
  // build/output.preview/info.js
90763
90914
  var import_FaEye = __toESM(require_FaEye());
90764
- function info_default15(R) {
90915
+ function info_default16(R) {
90765
90916
  const { defineComponent, validation: { JitterBuffer } } = R;
90766
90917
  return defineComponent({
90767
90918
  identifier: "output.preview",
@@ -90800,11 +90951,11 @@ function info_default15(R) {
90800
90951
  state = {};
90801
90952
  break;
90802
90953
  default:
90803
- assertUnreachable9(evType);
90954
+ assertUnreachable10(evType);
90804
90955
  }
90805
90956
  return { ...state };
90806
90957
  },
90807
- inline: inline_view_default7
90958
+ inline: inline_view_default8
90808
90959
  },
90809
90960
  configForm: {
90810
90961
  global: {
@@ -90834,7 +90985,7 @@ function info_default15(R) {
90834
90985
  }
90835
90986
  });
90836
90987
  }
90837
- function assertUnreachable9(_) {
90988
+ function assertUnreachable10(_) {
90838
90989
  throw new Error("Didn't expect to get here");
90839
90990
  }
90840
90991
 
@@ -90842,7 +90993,7 @@ function assertUnreachable9(_) {
90842
90993
  var import_util5 = __toESM(require_util());
90843
90994
 
90844
90995
  // build/output.srt-caller/summary-view.js
90845
- var import_jsx_runtime19 = __toESM(require_jsx_runtime());
90996
+ var import_jsx_runtime20 = __toESM(require_jsx_runtime());
90846
90997
  function SummaryView5({ state, sendCommand }) {
90847
90998
  const handleEnableOutput = () => {
90848
90999
  void enableOutput();
@@ -90860,20 +91011,20 @@ function SummaryView5({ state, sendCommand }) {
90860
91011
  type: "disable-output"
90861
91012
  });
90862
91013
  };
90863
- return (0, import_jsx_runtime19.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime19.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-green-500" : "bg-red-500"}` }), (0, import_jsx_runtime19.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime19.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime19.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime19.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-green-700 text-white rounded", children: "Enable Output" }) })] }) });
91014
+ return (0, import_jsx_runtime20.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime20.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-green-500" : "bg-red-500"}` }), (0, import_jsx_runtime20.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime20.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime20.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime20.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-green-700 text-white rounded", children: "Enable Output" }) })] }) });
90864
91015
  }
90865
91016
  var summary_view_default5 = SummaryView5;
90866
91017
 
90867
91018
  // build/output.srt-caller/inline-view.js
90868
- var import_jsx_runtime20 = __toESM(require_jsx_runtime());
90869
- function InlineView8({ state }) {
90870
- return (0, import_jsx_runtime20.jsx)("div", { className: "srt-output", children: state.enabled ? (0, import_jsx_runtime20.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime20.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [(0, import_jsx_runtime20.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected" }), (0, import_jsx_runtime20.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }), (0, import_jsx_runtime20.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] }), (0, import_jsx_runtime20.jsx)(JitterBufferInline, { ...state.jitterBuffer })] }) }) : (0, import_jsx_runtime20.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }) });
91019
+ var import_jsx_runtime21 = __toESM(require_jsx_runtime());
91020
+ function InlineView9({ state }) {
91021
+ return (0, import_jsx_runtime21.jsx)("div", { className: "srt-output", children: state.enabled ? (0, import_jsx_runtime21.jsx)("div", { children: state.metrics.connectionCount == 0 ? (0, import_jsx_runtime21.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "Not Connected" }) : (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [(0, import_jsx_runtime21.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Connected" }), (0, import_jsx_runtime21.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent] }), (0, import_jsx_runtime21.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost, "/", state.metrics.packetsResent] }), (0, import_jsx_runtime21.jsx)(JitterBufferInline, { ...state.jitterBuffer })] }) }) : (0, import_jsx_runtime21.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }) });
90871
91022
  }
90872
- var inline_view_default8 = InlineView8;
91023
+ var inline_view_default9 = InlineView9;
90873
91024
 
90874
91025
  // build/output.srt-caller/info.js
90875
91026
  var import_FaHeadphones4 = __toESM(require_FaHeadphones());
90876
- function info_default16(registration) {
91027
+ function info_default17(registration) {
90877
91028
  const { defineComponent, All, validation } = registration;
90878
91029
  const { Port, Hostname: Hostname2, JitterBuffer, SrtPassphrase, SrtStreamId } = validation;
90879
91030
  return defineComponent({
@@ -90929,7 +91080,7 @@ function info_default16(registration) {
90929
91080
  return { ...state };
90930
91081
  },
90931
91082
  summary: summary_view_default5,
90932
- inline: inline_view_default8,
91083
+ inline: inline_view_default9,
90933
91084
  metrics: [
90934
91085
  {
90935
91086
  title: "SRT Transmission",
@@ -90974,7 +91125,7 @@ function info_default16(registration) {
90974
91125
  var import_util6 = __toESM(require_util());
90975
91126
 
90976
91127
  // build/output.srt-listener/summary-view.js
90977
- var import_jsx_runtime21 = __toESM(require_jsx_runtime());
91128
+ var import_jsx_runtime22 = __toESM(require_jsx_runtime());
90978
91129
  function SummaryView6({ state, sendCommand }) {
90979
91130
  const handleEnableOutput = () => {
90980
91131
  void enableOutput();
@@ -90992,19 +91143,19 @@ function SummaryView6({ state, sendCommand }) {
90992
91143
  type: "disable-output"
90993
91144
  });
90994
91145
  };
90995
- return (0, import_jsx_runtime21.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime21.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-green-500" : "bg-red-500"}` }), (0, import_jsx_runtime21.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime21.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime21.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime21.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-green-700 text-white rounded", children: "Enable Output" }) })] }) });
91146
+ return (0, import_jsx_runtime22.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime22.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-green-500" : "bg-red-500"}` }), (0, import_jsx_runtime22.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime22.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime22.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime22.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-green-700 text-white rounded", children: "Enable Output" }) })] }) });
90996
91147
  }
90997
91148
  var summary_view_default6 = SummaryView6;
90998
91149
 
90999
91150
  // build/output.srt-listener/inline-view.js
91000
- var import_jsx_runtime22 = __toESM(require_jsx_runtime());
91001
- function InlineView9({ state }) {
91002
- return (0, import_jsx_runtime22.jsx)("div", { className: "srt-output", children: state.enabled ? state.metrics.connectionCount == 0 ? (0, import_jsx_runtime22.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "No connections" }) : (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [(0, import_jsx_runtime22.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Output enabled" }), (0, import_jsx_runtime22.jsxs)("div", { children: ["Connections: ", state.metrics.connectionCount] }), (0, import_jsx_runtime22.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime22.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost.reduce((a, i) => a + i, 0), "/", state.metrics.packetsResent.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime22.jsx)(JitterBufferInline, { ...state.jitterBuffer })] }) : (0, import_jsx_runtime22.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }) });
91151
+ var import_jsx_runtime23 = __toESM(require_jsx_runtime());
91152
+ function InlineView10({ state }) {
91153
+ return (0, import_jsx_runtime23.jsx)("div", { className: "srt-output", children: state.enabled ? state.metrics.connectionCount == 0 ? (0, import_jsx_runtime23.jsx)("div", { className: "active text-red-300 dark:text-red-300", children: "No connections" }) : (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [(0, import_jsx_runtime23.jsx)("div", { className: "active text-green-500 dark:text-green-300", children: "Output enabled" }), (0, import_jsx_runtime23.jsxs)("div", { children: ["Connections: ", state.metrics.connectionCount] }), (0, import_jsx_runtime23.jsxs)("div", { children: ["Sent: ", state.metrics.packetsSent.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime23.jsxs)("div", { children: ["Lost/Resent: ", state.metrics.packetsLost.reduce((a, i) => a + i, 0), "/", state.metrics.packetsResent.reduce((a, i) => a + i, 0)] }), (0, import_jsx_runtime23.jsx)(JitterBufferInline, { ...state.jitterBuffer })] }) : (0, import_jsx_runtime23.jsx)("div", { className: "disabled text-gray-500 dark:text-gray-400", children: "Output disabled" }) });
91003
91154
  }
91004
- var inline_view_default9 = InlineView9;
91155
+ var inline_view_default10 = InlineView10;
91005
91156
 
91006
91157
  // build/output.srt-listener/info.js
91007
- function info_default17(registration) {
91158
+ function info_default18(registration) {
91008
91159
  const { defineComponent, All, validation } = registration;
91009
91160
  const { Port, Hostname: Hostname2, JitterBuffer, SrtPassphrase, SrtStreamId } = validation;
91010
91161
  return defineComponent({
@@ -91059,7 +91210,7 @@ function info_default17(registration) {
91059
91210
  return { ...state };
91060
91211
  },
91061
91212
  summary: summary_view_default6,
91062
- inline: inline_view_default9,
91213
+ inline: inline_view_default10,
91063
91214
  metrics: [
91064
91215
  { title: "SRT Transmission", view: MetricsView3 }
91065
91216
  ]
@@ -91101,39 +91252,39 @@ function info_default17(registration) {
91101
91252
  }
91102
91253
 
91103
91254
  // build/output.statistics/inline-view.js
91104
- var import_jsx_runtime23 = __toESM(require_jsx_runtime());
91105
- function InlineView10({ state }) {
91255
+ var import_jsx_runtime24 = __toESM(require_jsx_runtime());
91256
+ function InlineView11({ state }) {
91106
91257
  if (!state.previous)
91107
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91258
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91108
91259
  const format = (stat) => Math.floor(stat).toLocaleString("en-US", { maximumFractionDigits: 0 });
91109
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: state.previous.allStreams.map((s, i) => {
91260
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children: state.previous.allStreams.map((s, i) => {
91110
91261
  const metaCase = s.metadata.case;
91111
91262
  switch (metaCase) {
91112
91263
  case "audio":
91113
- return (0, import_jsx_runtime23.jsxs)("div", { children: [(0, import_jsx_runtime23.jsxs)("div", { children: ["StreamKey: ", streamKey(s.streamKey)] }), (0, import_jsx_runtime23.jsxs)("div", { children: ["Bitrate: ", format(s.bitrate), "bps"] })] }, i);
91264
+ return (0, import_jsx_runtime24.jsxs)("div", { children: [(0, import_jsx_runtime24.jsxs)("div", { children: ["StreamKey: ", streamKey(s.streamKey)] }), (0, import_jsx_runtime24.jsxs)("div", { children: ["Bitrate: ", format(s.bitrate), "bps"] })] }, i);
91114
91265
  case "video":
91115
- return (0, import_jsx_runtime23.jsxs)("div", { children: [(0, import_jsx_runtime23.jsxs)("div", { children: ["StreamKey: ", streamKey(s.streamKey)] }), (0, import_jsx_runtime23.jsxs)("div", { children: ["Bitrate: ", format(s.bitrate), "bps"] })] }, i);
91266
+ return (0, import_jsx_runtime24.jsxs)("div", { children: [(0, import_jsx_runtime24.jsxs)("div", { children: ["StreamKey: ", streamKey(s.streamKey)] }), (0, import_jsx_runtime24.jsxs)("div", { children: ["Bitrate: ", format(s.bitrate), "bps"] })] }, i);
91116
91267
  case "ancillary":
91117
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91268
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91118
91269
  case "subtitle":
91119
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91270
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91120
91271
  case "playlist":
91121
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91272
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91122
91273
  case void 0:
91123
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91274
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91124
91275
  default:
91125
- return (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, {});
91276
+ return (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, {});
91126
91277
  }
91127
91278
  }) });
91128
91279
  }
91129
91280
  function streamKey(streamKey2) {
91130
91281
  return streamKey2.streamId.toString();
91131
91282
  }
91132
- var inline_view_default10 = InlineView10;
91283
+ var inline_view_default11 = InlineView11;
91133
91284
 
91134
91285
  // build/output.statistics/info.js
91135
91286
  var import_FaChartBar = __toESM(require_FaChartBar());
91136
- function info_default18({ defineComponent, All }) {
91287
+ function info_default19({ defineComponent, All }) {
91137
91288
  return defineComponent({
91138
91289
  identifier: "output.statistics",
91139
91290
  category: "output",
@@ -91158,11 +91309,11 @@ function info_default18({ defineComponent, All }) {
91158
91309
  state.previous = ev.summary;
91159
91310
  break;
91160
91311
  default:
91161
- assertUnreachable12(evType);
91312
+ assertUnreachable13(evType);
91162
91313
  }
91163
91314
  return { ...state };
91164
91315
  },
91165
- inline: inline_view_default10
91316
+ inline: inline_view_default11
91166
91317
  },
91167
91318
  configForm: {
91168
91319
  form: {
@@ -91171,14 +91322,14 @@ function info_default18({ defineComponent, All }) {
91171
91322
  }
91172
91323
  });
91173
91324
  }
91174
- function assertUnreachable12(_) {
91325
+ function assertUnreachable13(_) {
91175
91326
  throw new Error("Didn't expect to get here");
91176
91327
  }
91177
91328
 
91178
91329
  // build/output.tsMediaPlaylist/info.js
91179
91330
  var import_util7 = __toESM(require_util());
91180
91331
  var import_FaHeadphones5 = __toESM(require_FaHeadphones());
91181
- function info_default19(registration) {
91332
+ function info_default20(registration) {
91182
91333
  const { defineComponent, validation } = registration;
91183
91334
  const { Z } = validation;
91184
91335
  return defineComponent({
@@ -91290,7 +91441,7 @@ function info_default19(registration) {
91290
91441
  // build/output.tsMultiVariant/info.js
91291
91442
  var import_util8 = __toESM(require_util());
91292
91443
  var import_FaHeadphones6 = __toESM(require_FaHeadphones());
91293
- function info_default20(registration) {
91444
+ function info_default21(registration) {
91294
91445
  const { defineComponent, validation } = registration;
91295
91446
  const { Z } = validation;
91296
91447
  return defineComponent({
@@ -91380,7 +91531,7 @@ function info_default20(registration) {
91380
91531
 
91381
91532
  // build/output.twitch/info.js
91382
91533
  var import_FaTwitch = __toESM(require_FaTwitch());
91383
- function info_default21(r) {
91534
+ function info_default22(r) {
91384
91535
  const { validation: { Z } } = r;
91385
91536
  return defineRtmpOutputComponent(r, {
91386
91537
  identifier: "output.twitch",
@@ -91413,14 +91564,14 @@ var import_util9 = __toESM(require_util());
91413
91564
  var import_FaNetworkWired2 = __toESM(require_FaNetworkWired());
91414
91565
 
91415
91566
  // build/output.udpTs/inline-view.js
91416
- var import_jsx_runtime24 = __toESM(require_jsx_runtime());
91417
- function InlineView11({ state }) {
91418
- return (0, import_jsx_runtime24.jsx)("div", { className: "srt-output", children: (0, import_jsx_runtime24.jsx)("div", { children: (0, import_jsx_runtime24.jsx)(JitterBufferInline, { ...state.jitterBuffer }) }) });
91567
+ var import_jsx_runtime25 = __toESM(require_jsx_runtime());
91568
+ function InlineView12({ state }) {
91569
+ return (0, import_jsx_runtime25.jsx)("div", { className: "srt-output", children: (0, import_jsx_runtime25.jsx)("div", { children: (0, import_jsx_runtime25.jsx)(JitterBufferInline, { ...state.jitterBuffer }) }) });
91419
91570
  }
91420
- var inline_view_default11 = InlineView11;
91571
+ var inline_view_default12 = InlineView12;
91421
91572
 
91422
91573
  // build/output.udpTs/info.js
91423
- function info_default22({ defineComponent, All, validation: { Port, Hostname: Hostname2, JitterBuffer, Iface, Z } }) {
91574
+ function info_default23({ defineComponent, All, validation: { Port, Hostname: Hostname2, JitterBuffer, Iface, Z } }) {
91424
91575
  return defineComponent({
91425
91576
  identifier: "output.udpTs",
91426
91577
  category: "output",
@@ -91449,7 +91600,7 @@ function info_default22({ defineComponent, All, validation: { Port, Hostname: Ho
91449
91600
  }
91450
91601
  return { ...state };
91451
91602
  },
91452
- inline: inline_view_default11,
91603
+ inline: inline_view_default12,
91453
91604
  metrics: []
91454
91605
  },
91455
91606
  display: (desc) => {
@@ -91479,9 +91630,9 @@ function info_default22({ defineComponent, All, validation: { Port, Hostname: Ho
91479
91630
  var import_config4 = __toESM(require_config());
91480
91631
 
91481
91632
  // build/output.whep/inline-view.js
91482
- var import_jsx_runtime25 = __toESM(require_jsx_runtime());
91633
+ var import_jsx_runtime26 = __toESM(require_jsx_runtime());
91483
91634
  var import_react7 = __toESM(require_react());
91484
- function InlineView12({ state, config, raise }) {
91635
+ function InlineView13({ state, config, raise }) {
91485
91636
  const url = state.url;
91486
91637
  const id = config.id;
91487
91638
  const [showPreview, setShowPreview] = (0, import_react7.useState)(config.showPreview ?? true);
@@ -91523,18 +91674,18 @@ function InlineView12({ state, config, raise }) {
91523
91674
  }, [config.showPreview]);
91524
91675
  (0, import_react7.useEffect)(() => raise && raise(), [raise]);
91525
91676
  if (!url)
91526
- return (0, import_jsx_runtime25.jsx)(import_jsx_runtime25.Fragment, { children: "..." });
91677
+ return (0, import_jsx_runtime26.jsx)(import_jsx_runtime26.Fragment, { children: "..." });
91527
91678
  const videoStyles = `
91528
91679
  #whep-${id} video::-webkit-media-controls-play-button {
91529
91680
  display: none;
91530
91681
  }
91531
91682
  `;
91532
- return (0, import_jsx_runtime25.jsxs)("div", { className: "whep-container", children: [(0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime25.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime25.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), (0, import_jsx_runtime25.jsx)("div", { className: "flex items-stretch h-full", children: showPreview ? (0, import_jsx_runtime25.jsx)("div", { className: "whep-video", id: `whep-${id}`, children: (0, import_jsx_runtime25.jsx)("style", { children: videoStyles }) }) : (0, import_jsx_runtime25.jsx)("div", { className: "whep-video bg-black flex items-center justify-center text-white h-full py-4", children: "Preview turned off" }) })] });
91683
+ return (0, import_jsx_runtime26.jsxs)("div", { className: "whep-container", children: [(0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime26.jsx)("input", { type: "checkbox", id: `video-toggle-${id}`, checked: showPreview, onChange: (e) => setShowPreview(e.target.checked), className: "h-4 w-4" }), (0, import_jsx_runtime26.jsx)("label", { htmlFor: `video-toggle-${id}`, className: "text-sm", children: "Show Preview" })] }), (0, import_jsx_runtime26.jsx)("div", { className: "flex items-stretch h-full", children: showPreview ? (0, import_jsx_runtime26.jsx)("div", { className: "whep-video", id: `whep-${id}`, children: (0, import_jsx_runtime26.jsx)("style", { children: videoStyles }) }) : (0, import_jsx_runtime26.jsx)("div", { className: "whep-video bg-black flex items-center justify-center text-white h-full py-4", children: "Preview turned off" }) })] });
91533
91684
  }
91534
- var inline_view_default12 = InlineView12;
91685
+ var inline_view_default13 = InlineView13;
91535
91686
 
91536
91687
  // build/output.whep/summary-view.js
91537
- var import_jsx_runtime26 = __toESM(require_jsx_runtime());
91688
+ var import_jsx_runtime27 = __toESM(require_jsx_runtime());
91538
91689
  function SummaryView7({ state, sendCommand }) {
91539
91690
  const handleEnableOutput = () => {
91540
91691
  void enableOutput();
@@ -91552,13 +91703,13 @@ function SummaryView7({ state, sendCommand }) {
91552
91703
  type: "disable-output"
91553
91704
  });
91554
91705
  };
91555
- return (0, import_jsx_runtime26.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime26.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime26.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime26.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime26.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime26.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
91706
+ return (0, import_jsx_runtime27.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [(0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime27.jsx)("span", { className: `inline-block w-2 h-2 rounded-full ${state.enabled ? "bg-blue-500" : "bg-red-500"}` }), (0, import_jsx_runtime27.jsxs)("span", { className: "text-sm", children: ["Status: ", state.enabled ? "Enabled" : "Disabled"] })] }), (0, import_jsx_runtime27.jsx)("div", { children: state.enabled ? (0, import_jsx_runtime27.jsx)("button", { onClick: handleDisableOutput, className: "px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white rounded", children: "Disable Output" }) : (0, import_jsx_runtime27.jsx)("button", { onClick: handleEnableOutput, className: "px-3 py-1 text-sm bg-blue-600 hover:bg-blue-700 text-white rounded", children: "Enable Output" }) })] }) });
91556
91707
  }
91557
91708
  var summary_view_default7 = SummaryView7;
91558
91709
 
91559
91710
  // build/output.whep/info.js
91560
91711
  var import_FaBroadcastTower = __toESM(require_FaBroadcastTower());
91561
- function info_default23(R) {
91712
+ function info_default24(R) {
91562
91713
  const { defineComponent, validation: { JitterBuffer } } = R;
91563
91714
  return defineComponent({
91564
91715
  identifier: "output.whep",
@@ -91599,11 +91750,11 @@ function info_default23(R) {
91599
91750
  state.enabled = false;
91600
91751
  break;
91601
91752
  default:
91602
- assertUnreachable16(evType);
91753
+ assertUnreachable17(evType);
91603
91754
  }
91604
91755
  return { ...state };
91605
91756
  },
91606
- inline: inline_view_default12,
91757
+ inline: inline_view_default13,
91607
91758
  summary: summary_view_default7
91608
91759
  },
91609
91760
  configForm: {
@@ -91621,13 +91772,13 @@ function info_default23(R) {
91621
91772
  }
91622
91773
  });
91623
91774
  }
91624
- function assertUnreachable16(_) {
91775
+ function assertUnreachable17(_) {
91625
91776
  throw new Error("Didn't expect to get here");
91626
91777
  }
91627
91778
 
91628
91779
  // build/output.youtube/info.js
91629
91780
  var import_FaYoutube = __toESM(require_FaYoutube());
91630
- function info_default24(r) {
91781
+ function info_default25(r) {
91631
91782
  const { validation: { Z } } = r;
91632
91783
  return defineRtmpOutputComponent(r, {
91633
91784
  identifier: "output.youtube",
@@ -91659,14 +91810,14 @@ function info_default24(r) {
91659
91810
  var import_client_types2 = __toESM(require_client_types());
91660
91811
 
91661
91812
  // build/processor.audioEncoder/form-views.js
91662
- var import_jsx_runtime27 = __toESM(require_jsx_runtime());
91813
+ var import_jsx_runtime28 = __toESM(require_jsx_runtime());
91663
91814
  function CodecConfiguration(cfg) {
91664
- return (0, import_jsx_runtime27.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime27.jsx)("div", { className: "col-span-1", children: "Codec" }), (0, import_jsx_runtime27.jsx)("div", { className: "col-span-2", children: cfg.kind }), cfg.kind === "aac" ? (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [(0, import_jsx_runtime27.jsx)("div", { className: "col-span-1", children: "Profile" }), (0, import_jsx_runtime27.jsx)("div", { className: "col-span-2", children: cfg.profile }), (0, import_jsx_runtime27.jsx)("div", { className: "col-span-1", children: "Sample Rate" }), (0, import_jsx_runtime27.jsx)("div", { className: "col-span-2", children: cfg.sampleRate })] }) : null] });
91815
+ return (0, import_jsx_runtime28.jsxs)("div", { className: "grid grid-flow-row-dense grid-cols-3 text-sm", children: [(0, import_jsx_runtime28.jsx)("div", { className: "col-span-1", children: "Codec" }), (0, import_jsx_runtime28.jsx)("div", { className: "col-span-2", children: cfg.kind }), cfg.kind === "aac" ? (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [(0, import_jsx_runtime28.jsx)("div", { className: "col-span-1", children: "Profile" }), (0, import_jsx_runtime28.jsx)("div", { className: "col-span-2", children: cfg.profile }), (0, import_jsx_runtime28.jsx)("div", { className: "col-span-1", children: "Sample Rate" }), (0, import_jsx_runtime28.jsx)("div", { className: "col-span-2", children: cfg.sampleRate })] }) : null] });
91665
91816
  }
91666
91817
 
91667
91818
  // build/processor.audioEncoder/info.js
91668
91819
  var import_FaMicrophone = __toESM(require_FaMicrophone());
91669
- function info_default25({ defineComponent, validation: { Z } }) {
91820
+ function info_default26({ defineComponent, validation: { Z } }) {
91670
91821
  const format = (stat) => Math.floor(stat).toLocaleString("en-US", { maximumFractionDigits: 0 });
91671
91822
  const Hz = (v) => ({ display: `${format(v)}Hz`, value: v });
91672
91823
  return defineComponent({
@@ -91797,8 +91948,8 @@ function info_default25({ defineComponent, validation: { Z } }) {
91797
91948
  }
91798
91949
 
91799
91950
  // build/processor.audioMixer/inline-view.js
91800
- var import_jsx_runtime28 = __toESM(require_jsx_runtime());
91801
- function InlineView13({ state }) {
91951
+ var import_jsx_runtime29 = __toESM(require_jsx_runtime());
91952
+ function InlineView14({ state }) {
91802
91953
  function percentage(levels) {
91803
91954
  if (!levels) {
91804
91955
  return 0;
@@ -91816,17 +91967,17 @@ function InlineView13({ state }) {
91816
91967
  if (mixerOutput) {
91817
91968
  sourcesOrdered.push({ ...mixerOutput });
91818
91969
  }
91819
- return (0, import_jsx_runtime28.jsx)("div", { className: "processor-audioMixer", children: (0, import_jsx_runtime28.jsx)("div", { className: "inline-mixer-console", children: sourcesOrdered.map((source, i) => {
91970
+ return (0, import_jsx_runtime29.jsx)("div", { className: "processor-audioMixer", children: (0, import_jsx_runtime29.jsx)("div", { className: "inline-mixer-console", children: sourcesOrdered.map((source, i) => {
91820
91971
  const isMasterOutput = i == sourcesOrdered.length - 1;
91821
- return (0, import_jsx_runtime28.jsxs)("div", { className: `inline-channel-strip ${isMasterOutput ? "inline-master-strip" : ""}`, children: [(0, import_jsx_runtime28.jsx)("div", { className: "inline-channel-label", children: isMasterOutput ? "Master" : source.displayName }), (0, import_jsx_runtime28.jsx)("div", { className: "inline-level-container", children: (0, import_jsx_runtime28.jsx)("div", { className: `inline-level-meter clip-${percentage(source.levels)}` }) }), (0, import_jsx_runtime28.jsx)("div", { className: "inline-fader-container", children: (0, import_jsx_runtime28.jsx)("div", { className: "inline-fader-track", children: (0, import_jsx_runtime28.jsx)("div", { className: "inline-fader-thumb", style: {
91972
+ return (0, import_jsx_runtime29.jsxs)("div", { className: `inline-channel-strip ${isMasterOutput ? "inline-master-strip" : ""}`, children: [(0, import_jsx_runtime29.jsx)("div", { className: "inline-channel-label", children: isMasterOutput ? "Master" : source.displayName }), (0, import_jsx_runtime29.jsx)("div", { className: "inline-level-container", children: (0, import_jsx_runtime29.jsx)("div", { className: `inline-level-meter clip-${percentage(source.levels)}` }) }), (0, import_jsx_runtime29.jsx)("div", { className: "inline-fader-container", children: (0, import_jsx_runtime29.jsx)("div", { className: "inline-fader-track", children: (0, import_jsx_runtime29.jsx)("div", { className: "inline-fader-thumb", style: {
91822
91973
  bottom: `${Math.max(10, Math.min(90, ((source.configuredGain || 0) + 60) / 84 * 80 + 10))}%`
91823
91974
  } }) }) })] }, i);
91824
91975
  }) }) });
91825
91976
  }
91826
- var inline_view_default13 = InlineView13;
91977
+ var inline_view_default14 = InlineView14;
91827
91978
 
91828
91979
  // build/processor.audioMixer/fullscreen-view.js
91829
- var import_jsx_runtime29 = __toESM(require_jsx_runtime());
91980
+ var import_jsx_runtime30 = __toESM(require_jsx_runtime());
91830
91981
  var import_react8 = __toESM(require_react());
91831
91982
  function FullScreen({ state, sendCommand }) {
91832
91983
  const initialSliders = [];
@@ -91859,7 +92010,7 @@ function FullScreen({ state, sendCommand }) {
91859
92010
  function mkFader(index3) {
91860
92011
  const levels = index3 == state.inputs.length ? state.output : state.inputs[index3];
91861
92012
  const internalSource = index3 == state.inputs.length ? { type: "mixer-output" } : { type: "input-gain", index: index3 };
91862
- return (0, import_jsx_runtime29.jsxs)("div", { id: `audio-slider-${index3}`, className: `${!levels?.levels ? "opacity-20" : ""} audio-mixer-fader-container grid content-center justify-center w-full relative`, children: [(0, import_jsx_runtime29.jsx)("input", { className: "-rotate-90 audio-mixer-fader", type: "range", name: "gain", min: state.gainRange.min - 0.1, max: state.gainRange.max, step: "0.1", value: levels?.configuredGain || 0, disabled: !levels?.levels, onChange: (e) => {
92013
+ return (0, import_jsx_runtime30.jsxs)("div", { id: `audio-slider-${index3}`, className: `${!levels?.levels ? "opacity-20" : ""} audio-mixer-fader-container grid content-center justify-center w-full relative`, children: [(0, import_jsx_runtime30.jsx)("input", { className: "-rotate-90 audio-mixer-fader", type: "range", name: "gain", min: state.gainRange.min - 0.1, max: state.gainRange.max, step: "0.1", value: levels?.configuredGain || 0, disabled: !levels?.levels, onChange: (e) => {
91863
92014
  sliderValues[index3] = Number(e.target.value);
91864
92015
  if (Number(e.target.value) < state.gainRange.min) {
91865
92016
  preMuteValues[index3] = state.gainRange.min;
@@ -91885,25 +92036,25 @@ function FullScreen({ state, sendCommand }) {
91885
92036
  }
91886
92037
  }, onMouseUp: (_e) => {
91887
92038
  sendCommand({ type: "set-gain", source: internalSource, value: sliderValues[index3] || 0 });
91888
- } }), (0, import_jsx_runtime29.jsxs)("div", { className: "grid mixer-gain-db ml-2.5 absolute self-center", children: [(0, import_jsx_runtime29.jsxs)("div", { className: "text-xs absolute border-t w-12", children: [state.gainRange.max, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.75, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.5, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.25, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-12", children: "0dB" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.25, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.5, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.75, "dB"] }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime29.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min, "dB"] })] })] });
92039
+ } }), (0, import_jsx_runtime30.jsxs)("div", { className: "grid mixer-gain-db ml-2.5 absolute self-center", children: [(0, import_jsx_runtime30.jsxs)("div", { className: "text-xs absolute border-t w-12", children: [state.gainRange.max, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.75, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.5, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.max * 0.25, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-12", children: "0dB" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.25, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.5, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min * 0.75, "dB"] }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-4 h-4" }), (0, import_jsx_runtime30.jsxs)("div", { className: "text-xs self-end border-b w-12", children: [state.gainRange.min, "dB"] })] })] });
91889
92040
  }
91890
92041
  function mkLevels(index3) {
91891
92042
  const levels = index3 == state.inputs.length ? state.output : state.inputs[index3];
91892
92043
  const mutedClass = sliderValues[index3] < state.gainRange.min || levels.muted ? "level-muted" : "";
91893
- return (0, import_jsx_runtime29.jsxs)("div", { id: `level-${index3}`, className: `preview-levels-mixer ${!levels ? "opacity-30" : ""}`, children: [(0, import_jsx_runtime29.jsx)("div", { className: "relative w-full h-full", children: (0, import_jsx_runtime29.jsx)("div", { className: `preview-level-mixer absolute h-full w-4/6 clip-${percentage(levels?.levels)} ${mutedClass}` }) }), (0, import_jsx_runtime29.jsxs)("div", { className: "grid mixer-level-db ml-2.5 relative", children: [(0, import_jsx_runtime29.jsx)("div", { className: "text-xs absolute border-t w-12 -right-3.5", children: "0dB" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-25dB" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-50dB" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-75dB" }), (0, import_jsx_runtime29.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-100dB" })] })] });
92044
+ return (0, import_jsx_runtime30.jsxs)("div", { id: `level-${index3}`, className: `preview-levels-mixer ${!levels ? "opacity-30" : ""}`, children: [(0, import_jsx_runtime30.jsx)("div", { className: "relative w-full h-full", children: (0, import_jsx_runtime30.jsx)("div", { className: `preview-level-mixer absolute h-full w-4/6 clip-${percentage(levels?.levels)} ${mutedClass}` }) }), (0, import_jsx_runtime30.jsxs)("div", { className: "grid mixer-level-db ml-2.5 relative", children: [(0, import_jsx_runtime30.jsx)("div", { className: "text-xs absolute border-t w-12 -right-3.5", children: "0dB" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-25dB" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-50dB" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-75dB" }), (0, import_jsx_runtime30.jsx)("div", { className: "text-xs self-end border-b w-12", children: "-100dB" })] })] });
91894
92045
  }
91895
92046
  function mkGainValue(index3) {
91896
92047
  const levels = index3 == state.inputs.length ? state.output : state.inputs[index3];
91897
92048
  const sliderValue = sliderValues[index3];
91898
92049
  const sliderValueText = sliderValue === void 0 ? "- dB" : sliderValue < state.gainRange.min || levels.muted ? "muted" : sliderValue + "dB";
91899
- return (0, import_jsx_runtime29.jsx)("div", { id: `gain-value-${index3}`, className: `${!levels ? "opacity-20" : ""} text-m`, children: sliderValueText });
92050
+ return (0, import_jsx_runtime30.jsx)("div", { id: `gain-value-${index3}`, className: `${!levels ? "opacity-20" : ""} text-m`, children: sliderValueText });
91900
92051
  }
91901
92052
  function muteIcon(index3) {
91902
92053
  const levels = index3 == state.inputs.length ? state.output : state.inputs[index3];
91903
92054
  const internalSource = index3 == state.inputs.length ? { type: "mixer-output" } : { type: "input-gain", index: index3 };
91904
- const mute = (0, import_jsx_runtime29.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: "1.5", stroke: "currentColor", className: "w-6 h-6", children: (0, import_jsx_runtime29.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" }) });
91905
- const unMute = (0, import_jsx_runtime29.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: "1.5", stroke: "currentColor", className: "w-6 h-6", children: (0, import_jsx_runtime29.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" }) });
91906
- return (0, import_jsx_runtime29.jsx)("div", { className: `${!levels ? "opacity-20" : ""} mute-icon self-center`, onClick: (_e) => {
92055
+ const mute = (0, import_jsx_runtime30.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: "1.5", stroke: "currentColor", className: "w-6 h-6", children: (0, import_jsx_runtime30.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" }) });
92056
+ const unMute = (0, import_jsx_runtime30.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: "1.5", stroke: "currentColor", className: "w-6 h-6", children: (0, import_jsx_runtime30.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" }) });
92057
+ return (0, import_jsx_runtime30.jsx)("div", { className: `${!levels ? "opacity-20" : ""} mute-icon self-center`, onClick: (_e) => {
91907
92058
  if (levels) {
91908
92059
  if (levels.muted) {
91909
92060
  sendCommand({ type: "toggle-mute", source: internalSource, muted: false });
@@ -91929,16 +92080,16 @@ function FullScreen({ state, sendCommand }) {
91929
92080
  }
91930
92081
  {
91931
92082
  }
91932
- return (0, import_jsx_runtime29.jsx)("div", { className: "processor-audioMixer fullscreen", children: (0, import_jsx_runtime29.jsx)("div", { className: "audio-mixer grid gap-x-8 justify-items-center", style: mkGridColumns(), children: inputsOrdered.map((s, i) => {
92083
+ return (0, import_jsx_runtime30.jsx)("div", { className: "processor-audioMixer fullscreen", children: (0, import_jsx_runtime30.jsx)("div", { className: "audio-mixer grid gap-x-8 justify-items-center", style: mkGridColumns(), children: inputsOrdered.map((s, i) => {
91933
92084
  const isMasterOutput = i == inputsOrdered.length - 1;
91934
92085
  const divKey = `${i}`;
91935
- return (0, import_jsx_runtime29.jsxs)("div", { className: `channel-container grid justify-items-center ${isMasterOutput ? "master-channel-container ml-12" : ""} `, children: [(0, import_jsx_runtime29.jsx)("div", { id: `channel-title-${divKey}`, className: `channel-title ${isMasterOutput ? "master-title" : ""}`, children: isMasterOutput ? "Master" : s.displayName }), mkLevels(i), muteIcon(i), mkFader(i), mkGainValue(i)] }, divKey);
92086
+ return (0, import_jsx_runtime30.jsxs)("div", { className: `channel-container grid justify-items-center ${isMasterOutput ? "master-channel-container ml-12" : ""} `, children: [(0, import_jsx_runtime30.jsx)("div", { id: `channel-title-${divKey}`, className: `channel-title ${isMasterOutput ? "master-title" : ""}`, children: isMasterOutput ? "Master" : s.displayName }), mkLevels(i), muteIcon(i), mkFader(i), mkGainValue(i)] }, divKey);
91936
92087
  }) }) });
91937
92088
  }
91938
92089
  var fullscreen_view_default = FullScreen;
91939
92090
 
91940
92091
  // build/processor.audioMixer/info.js
91941
- function info_default26({ defineComponent, validation: { Z } }) {
92092
+ function info_default27({ defineComponent, validation: { Z } }) {
91942
92093
  return defineComponent({
91943
92094
  identifier: "processor.audioMixer",
91944
92095
  category: "processor",
@@ -92015,11 +92166,11 @@ function info_default26({ defineComponent, validation: { Z } }) {
92015
92166
  break;
92016
92167
  }
92017
92168
  default:
92018
- assertUnreachable17(evType);
92169
+ assertUnreachable18(evType);
92019
92170
  }
92020
92171
  return { ...state };
92021
92172
  },
92022
- inline: inline_view_default13,
92173
+ inline: inline_view_default14,
92023
92174
  fullscreen: fullscreen_view_default
92024
92175
  },
92025
92176
  configForm: {
@@ -92053,7 +92204,7 @@ var channelLayouts = () => {
92053
92204
  ];
92054
92205
  return ch;
92055
92206
  };
92056
- function assertUnreachable17(_) {
92207
+ function assertUnreachable18(_) {
92057
92208
  throw new Error("Didn't expect to get here");
92058
92209
  }
92059
92210
 
@@ -92062,7 +92213,7 @@ var import_config5 = __toESM(require_config());
92062
92213
  var import_FaWindowRestore = __toESM(require_FaWindowRestore());
92063
92214
 
92064
92215
  // build/processor.browserOverlay/summary-view.js
92065
- var import_jsx_runtime30 = __toESM(require_jsx_runtime());
92216
+ var import_jsx_runtime31 = __toESM(require_jsx_runtime());
92066
92217
  var import_react9 = __toESM(require_react());
92067
92218
  function SummaryView8({ state, sendCommand }) {
92068
92219
  const [url, setUrl] = (0, import_react9.useState)(state.currentUrl);
@@ -92071,7 +92222,7 @@ function SummaryView8({ state, sendCommand }) {
92071
92222
  return url !== state.currentUrl || enabled !== state.enabled;
92072
92223
  }, [url, enabled, state.currentUrl, state.enabled]);
92073
92224
  const buttonClass = "mt-2 mb-5 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800";
92074
- return (0, import_jsx_runtime30.jsxs)("div", { className: "space-y-3 mb-5", children: [(0, import_jsx_runtime30.jsx)("h2", { className: "text-xl font-bold text-gray-900 dark:text-white", children: "Controls" }), (0, import_jsx_runtime30.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime30.jsx)("label", { htmlFor: "url", className: "mb-2 mr-2 text-sm font-medium text-gray-900 dark:text-white", children: "URL" }), (0, import_jsx_runtime30.jsx)("input", { type: "email", id: "url", className: "bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500", value: url, onChange: (e) => setUrl(e.target.value), required: true })] }), (0, import_jsx_runtime30.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime30.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime30.jsx)("span", { className: "me-3 text-sm font-medium text-gray-900 dark:text-gray-300", children: "Enabled" }), (0, import_jsx_runtime30.jsx)("input", { type: "checkbox", checked: enabled, onChange: (e) => setEnabled(e.target.checked), className: "sr-only peer" }), (0, import_jsx_runtime30.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) }), (0, import_jsx_runtime30.jsx)("button", { type: "button", className: `${buttonClass} ${!stateChanged ? "opacity-50 cursor-not-allowed" : ""}`, disabled: !stateChanged, onClick: () => {
92225
+ return (0, import_jsx_runtime31.jsxs)("div", { className: "space-y-3 mb-5", children: [(0, import_jsx_runtime31.jsx)("h2", { className: "text-xl font-bold text-gray-900 dark:text-white", children: "Controls" }), (0, import_jsx_runtime31.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime31.jsx)("label", { htmlFor: "url", className: "mb-2 mr-2 text-sm font-medium text-gray-900 dark:text-white", children: "URL" }), (0, import_jsx_runtime31.jsx)("input", { type: "email", id: "url", className: "bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500", value: url, onChange: (e) => setUrl(e.target.value), required: true })] }), (0, import_jsx_runtime31.jsx)("div", { className: "mb-5", children: (0, import_jsx_runtime31.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime31.jsx)("span", { className: "me-3 text-sm font-medium text-gray-900 dark:text-gray-300", children: "Enabled" }), (0, import_jsx_runtime31.jsx)("input", { type: "checkbox", checked: enabled, onChange: (e) => setEnabled(e.target.checked), className: "sr-only peer" }), (0, import_jsx_runtime31.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) }), (0, import_jsx_runtime31.jsx)("button", { type: "button", className: `${buttonClass} ${!stateChanged ? "opacity-50 cursor-not-allowed" : ""}`, disabled: !stateChanged, onClick: () => {
92075
92226
  if (url !== state.currentUrl) {
92076
92227
  sendCommand({ type: "change-url", url });
92077
92228
  }
@@ -92087,14 +92238,14 @@ function SummaryView8({ state, sendCommand }) {
92087
92238
  var summary_view_default8 = SummaryView8;
92088
92239
 
92089
92240
  // build/processor.browserOverlay/inline-view.js
92090
- var import_jsx_runtime31 = __toESM(require_jsx_runtime());
92091
- function InlineView14({ state, config }) {
92092
- return (0, import_jsx_runtime31.jsx)("div", { id: `browser-overlay-${config.id}`, children: (0, import_jsx_runtime31.jsxs)("div", { className: "w-64 grid grid-cols-[min-content,1fr] gap-2", children: [(0, import_jsx_runtime31.jsx)("div", { children: "URL:" }), (0, import_jsx_runtime31.jsx)("div", { className: "truncate", children: state.currentUrl }), (0, import_jsx_runtime31.jsx)("div", { children: "Enabled:" }), (0, import_jsx_runtime31.jsx)("div", { children: (0, import_jsx_runtime31.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime31.jsx)("input", { type: "checkbox", checked: state.enabled, disabled: true, className: "sr-only peer" }), (0, import_jsx_runtime31.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) })] }) });
92241
+ var import_jsx_runtime32 = __toESM(require_jsx_runtime());
92242
+ function InlineView15({ state, config }) {
92243
+ return (0, import_jsx_runtime32.jsx)("div", { id: `browser-overlay-${config.id}`, children: (0, import_jsx_runtime32.jsxs)("div", { className: "w-64 grid grid-cols-[min-content,1fr] gap-2", children: [(0, import_jsx_runtime32.jsx)("div", { children: "URL:" }), (0, import_jsx_runtime32.jsx)("div", { className: "truncate", children: state.currentUrl }), (0, import_jsx_runtime32.jsx)("div", { children: "Enabled:" }), (0, import_jsx_runtime32.jsx)("div", { children: (0, import_jsx_runtime32.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime32.jsx)("input", { type: "checkbox", checked: state.enabled, disabled: true, className: "sr-only peer" }), (0, import_jsx_runtime32.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) })] }) });
92093
92244
  }
92094
- var inline_view_default14 = InlineView14;
92245
+ var inline_view_default15 = InlineView15;
92095
92246
 
92096
92247
  // build/processor.browserOverlay/info.js
92097
- function info_default27({ defineComponent, validation: { Z } }) {
92248
+ function info_default28({ defineComponent, validation: { Z } }) {
92098
92249
  return defineComponent({
92099
92250
  identifier: "processor.browserOverlay",
92100
92251
  category: "processor",
@@ -92124,7 +92275,7 @@ function info_default27({ defineComponent, validation: { Z } }) {
92124
92275
  },
92125
92276
  runtime: {
92126
92277
  summary: summary_view_default8,
92127
- inline: inline_view_default14,
92278
+ inline: inline_view_default15,
92128
92279
  initialState: () => ({
92129
92280
  currentUrl: "",
92130
92281
  enabled: true
@@ -92139,7 +92290,7 @@ function info_default27({ defineComponent, validation: { Z } }) {
92139
92290
  case "disabled":
92140
92291
  return { ...state, enabled: false };
92141
92292
  default:
92142
- assertUnreachable18(evType);
92293
+ assertUnreachable19(evType);
92143
92294
  }
92144
92295
  }
92145
92296
  },
@@ -92154,7 +92305,7 @@ function info_default27({ defineComponent, validation: { Z } }) {
92154
92305
  }
92155
92306
  });
92156
92307
  }
92157
- function assertUnreachable18(_) {
92308
+ function assertUnreachable19(_) {
92158
92309
  throw new Error("Didn't expect to get here");
92159
92310
  }
92160
92311
 
@@ -92163,113 +92314,113 @@ var import_config6 = __toESM(require_config());
92163
92314
  var import_client_types3 = __toESM(require_client_types());
92164
92315
 
92165
92316
  // build/processor.fixedLadder/rung-view.js
92166
- var import_jsx_runtime32 = __toESM(require_jsx_runtime());
92317
+ var import_jsx_runtime33 = __toESM(require_jsx_runtime());
92167
92318
  function RungView(rung) {
92168
- return (0, import_jsx_runtime32.jsx)("div", { className: "text-gray-900 dark:text-white", children: rung.name });
92319
+ return (0, import_jsx_runtime33.jsx)("div", { className: "text-gray-900 dark:text-white", children: rung.name });
92169
92320
  }
92170
92321
 
92171
92322
  // build/processor.fixedLadder/x26x-bitrate-view.js
92172
- var import_jsx_runtime33 = __toESM(require_jsx_runtime());
92323
+ var import_jsx_runtime34 = __toESM(require_jsx_runtime());
92173
92324
  function X264XBitrateView(bitrate) {
92174
92325
  const value = (() => {
92175
92326
  if (bitrate) {
92176
92327
  switch (bitrate.mode) {
92177
92328
  case "abr":
92178
- return (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: ["ABR ", bitrate.value, "kbps "] });
92329
+ return (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: ["ABR ", bitrate.value, "kbps "] });
92179
92330
  case "cqp":
92180
- return (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: ["CQP ", bitrate.value] });
92331
+ return (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: ["CQP ", bitrate.value] });
92181
92332
  case "crf":
92182
- return (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: ["CRF ", bitrate.value] });
92333
+ return (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: ["CRF ", bitrate.value] });
92183
92334
  }
92184
92335
  } else {
92185
- return (0, import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment, { children: "N/A" });
92336
+ return (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: "N/A" });
92186
92337
  }
92187
92338
  })();
92188
- return (0, import_jsx_runtime33.jsx)("div", { className: "text-gray-900 dark:text-white", children: value });
92339
+ return (0, import_jsx_runtime34.jsx)("div", { className: "text-gray-900 dark:text-white", children: value });
92189
92340
  }
92190
92341
 
92191
92342
  // build/processor.fixedLadder/nvidia-rate-control-view.js
92192
- var import_jsx_runtime34 = __toESM(require_jsx_runtime());
92343
+ var import_jsx_runtime35 = __toESM(require_jsx_runtime());
92193
92344
  function NvidiaRateControlView(rateControl) {
92194
92345
  const value = (() => {
92195
92346
  if (rateControl) {
92196
92347
  switch (rateControl.mode) {
92197
92348
  case "con_stqp":
92198
- return (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: "Constant QP" });
92349
+ return (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: "Constant QP" });
92199
92350
  case "vbr":
92200
- return (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: "VBR" });
92351
+ return (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: "VBR" });
92201
92352
  case "cbr":
92202
- return (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: "CBR" });
92353
+ return (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: "CBR" });
92203
92354
  }
92204
92355
  } else {
92205
- return (0, import_jsx_runtime34.jsx)(import_jsx_runtime34.Fragment, { children: "N/A" });
92356
+ return (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, { children: "N/A" });
92206
92357
  }
92207
92358
  })();
92208
- return (0, import_jsx_runtime34.jsx)("div", { className: "text-gray-900 dark:text-white", children: value });
92359
+ return (0, import_jsx_runtime35.jsx)("div", { className: "text-gray-900 dark:text-white", children: value });
92209
92360
  }
92210
92361
 
92211
92362
  // build/processor.fixedLadder/software-view.js
92212
- var import_jsx_runtime35 = __toESM(require_jsx_runtime());
92363
+ var import_jsx_runtime36 = __toESM(require_jsx_runtime());
92213
92364
  function SoftwareView(codec) {
92214
92365
  if (codec == void 0) {
92215
- return (0, import_jsx_runtime35.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92366
+ return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92216
92367
  } else {
92217
92368
  const type = codec.type;
92218
92369
  const undefinedToDefault = (val) => val ?? "[default]";
92219
92370
  switch (type) {
92220
92371
  case "x264":
92221
- return (0, import_jsx_runtime35.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime35.jsxs)("ul", { children: [(0, import_jsx_runtime35.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.keyFrameIntervalMin), "-", undefinedToDefault(codec.keyFrameIntervalMax)] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.frameReference)] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.bframes)] })] }) });
92372
+ return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime36.jsxs)("ul", { children: [(0, import_jsx_runtime36.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.keyFrameIntervalMin), "-", undefinedToDefault(codec.keyFrameIntervalMax)] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.frameReference)] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.bframes)] })] }) });
92222
92373
  case "x265":
92223
- return (0, import_jsx_runtime35.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime35.jsxs)("ul", { children: [(0, import_jsx_runtime35.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.keyFrameIntervalMin), "-", undefinedToDefault(codec.keyFrameIntervalMax)] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.frameReference)] }), (0, import_jsx_runtime35.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.bframes)] })] }) });
92374
+ return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime36.jsxs)("ul", { children: [(0, import_jsx_runtime36.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.keyFrameIntervalMin), "-", undefinedToDefault(codec.keyFrameIntervalMax)] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.frameReference)] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.bframes)] })] }) });
92224
92375
  }
92225
92376
  }
92226
92377
  }
92227
92378
 
92228
92379
  // build/processor.fixedLadder/quadra-view.js
92229
- var import_jsx_runtime36 = __toESM(require_jsx_runtime());
92380
+ var import_jsx_runtime37 = __toESM(require_jsx_runtime());
92230
92381
  function QuadraView(codec) {
92231
92382
  if (codec == void 0) {
92232
- return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92383
+ return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92233
92384
  } else {
92234
92385
  const type = codec.type;
92235
92386
  const undefinedToDefault = (val) => val ?? "[default]";
92236
92387
  switch (type) {
92237
92388
  case "quadra-h264":
92238
- return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime36.jsxs)("ul", { children: [(0, import_jsx_runtime36.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92389
+ return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime37.jsxs)("ul", { children: [(0, import_jsx_runtime37.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92239
92390
  case "quadra-hevc":
92240
- return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime36.jsxs)("ul", { children: [(0, import_jsx_runtime36.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92391
+ return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime37.jsxs)("ul", { children: [(0, import_jsx_runtime37.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92241
92392
  case "quadra-av1":
92242
- return (0, import_jsx_runtime36.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime36.jsxs)("ul", { children: [(0, import_jsx_runtime36.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime36.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92393
+ return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime37.jsxs)("ul", { children: [(0, import_jsx_runtime37.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["Opts: ", undefinedToDefault(codec.extraOpts)] })] }) });
92243
92394
  }
92244
92395
  }
92245
92396
  }
92246
92397
 
92247
92398
  // build/processor.fixedLadder/nvidia-view.js
92248
- var import_jsx_runtime37 = __toESM(require_jsx_runtime());
92399
+ var import_jsx_runtime38 = __toESM(require_jsx_runtime());
92249
92400
  function NvidiaView(codec) {
92250
92401
  if (codec == void 0) {
92251
- return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92402
+ return (0, import_jsx_runtime38.jsx)("div", { className: "text-gray-900 dark:text-white", children: "N/A" });
92252
92403
  } else {
92253
92404
  const type = codec.type;
92254
92405
  const undefinedToDefault = (val) => val ?? "[default]";
92255
92406
  switch (type) {
92256
92407
  case "nv-h264":
92257
- return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime37.jsxs)("ul", { children: [(0, import_jsx_runtime37.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.idrPeriod)] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.maxNumRefFrames)] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.useBFramesAsRef)] })] }) });
92408
+ return (0, import_jsx_runtime38.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime38.jsxs)("ul", { children: [(0, import_jsx_runtime38.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime38.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.idrPeriod)] }), (0, import_jsx_runtime38.jsxs)("li", { children: ["Ref-frames: ", undefinedToDefault(codec.maxNumRefFrames)] }), (0, import_jsx_runtime38.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.useBFramesAsRef)] })] }) });
92258
92409
  case "nv-hevc":
92259
- return (0, import_jsx_runtime37.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime37.jsxs)("ul", { children: [(0, import_jsx_runtime37.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.idrPeriod)] }), (0, import_jsx_runtime37.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.useBFramesAsRef)] })] }) });
92410
+ return (0, import_jsx_runtime38.jsx)("div", { className: "text-gray-900 dark:text-white", children: (0, import_jsx_runtime38.jsxs)("ul", { children: [(0, import_jsx_runtime38.jsxs)("li", { children: ["Codec: ", type] }), (0, import_jsx_runtime38.jsxs)("li", { children: ["GOP Size: ", undefinedToDefault(codec.idrPeriod)] }), (0, import_jsx_runtime38.jsxs)("li", { children: ["B-Frames: ", undefinedToDefault(codec.useBFramesAsRef)] })] }) });
92260
92411
  }
92261
92412
  }
92262
92413
  }
92263
92414
 
92264
92415
  // build/processor.fixedLadder/codec-view.js
92265
- var import_jsx_runtime38 = __toESM(require_jsx_runtime());
92416
+ var import_jsx_runtime39 = __toESM(require_jsx_runtime());
92266
92417
  function CodecEditor(props) {
92267
- return (0, import_jsx_runtime38.jsxs)("div", { className: "text-gray-900 dark:text-white", children: [props?.width, "x", props?.height] });
92418
+ return (0, import_jsx_runtime39.jsxs)("div", { className: "text-gray-900 dark:text-white", children: [props?.width, "x", props?.height] });
92268
92419
  }
92269
92420
 
92270
92421
  // build/processor.fixedLadder/info.js
92271
92422
  var import_FaLayerGroup = __toESM(require_FaLayerGroup());
92272
- function info_default28({ defineComponent, common: { FrameRates } }) {
92423
+ function info_default29({ defineComponent, common: { FrameRates } }) {
92273
92424
  function softwareHint() {
92274
92425
  return {
92275
92426
  type: "form-pick",
@@ -93507,7 +93658,7 @@ function createSoftwareRung(rung) {
93507
93658
  case "h264_320x180":
93508
93659
  return createRungImpl({ name: rung, threads: 1, bitrate: 800 });
93509
93660
  default:
93510
- return assertUnreachable19(rung);
93661
+ return assertUnreachable20(rung);
93511
93662
  }
93512
93663
  }
93513
93664
  function createNvidiaRung(rung) {
@@ -93521,7 +93672,7 @@ function createNvidiaRung(rung) {
93521
93672
  case "h264_320x180":
93522
93673
  return createNvidiaRungImpl({ name: rung, bitrate: 8e5 });
93523
93674
  default:
93524
- return assertUnreachable19(rung);
93675
+ return assertUnreachable20(rung);
93525
93676
  }
93526
93677
  }
93527
93678
  function createQuadraRung(rung) {
@@ -93535,7 +93686,7 @@ function createQuadraRung(rung) {
93535
93686
  case "h264_320x180":
93536
93687
  return createQuadraRungImpl({ name: rung, bitrate: 8e5 });
93537
93688
  default:
93538
- return assertUnreachable19(rung);
93689
+ return assertUnreachable20(rung);
93539
93690
  }
93540
93691
  }
93541
93692
  function createRungImpl({ name, threads, bitrate }) {
@@ -93598,7 +93749,7 @@ function rungWidth(rungName) {
93598
93749
  function rungHeight(rungName) {
93599
93750
  return parseInt(rungName.split("_")[1].split(`x`)[1]);
93600
93751
  }
93601
- function assertUnreachable19(_) {
93752
+ function assertUnreachable20(_) {
93602
93753
  throw new Error("Didn't expect to get here");
93603
93754
  }
93604
93755
 
@@ -93606,8 +93757,8 @@ function assertUnreachable19(_) {
93606
93757
  var import_FaImage = __toESM(require_FaImage());
93607
93758
 
93608
93759
  // build/processor.gate/inline-view.js
93609
- var import_jsx_runtime39 = __toESM(require_jsx_runtime());
93610
- function InlineView15({ state, config, sendCommand }) {
93760
+ var import_jsx_runtime40 = __toESM(require_jsx_runtime());
93761
+ function InlineView16({ state, config, sendCommand }) {
93611
93762
  function onStatusChanged(selected) {
93612
93763
  if (selected) {
93613
93764
  sendCommand({ type: "open" });
@@ -93615,12 +93766,12 @@ function InlineView15({ state, config, sendCommand }) {
93615
93766
  sendCommand({ type: "close" });
93616
93767
  }
93617
93768
  }
93618
- return (0, import_jsx_runtime39.jsx)("div", { id: `browser-overlay-${config.id}`, children: (0, import_jsx_runtime39.jsxs)("div", { className: "w-64 grid grid-cols-[min-content,1fr] gap-2", children: [(0, import_jsx_runtime39.jsx)("div", { children: state.status == "open" ? "Open" : "Closed" }), (0, import_jsx_runtime39.jsx)("div", { children: (0, import_jsx_runtime39.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime39.jsx)("input", { type: "checkbox", checked: state.status == "open", onChange: (e) => onStatusChanged(e.target.checked), className: "sr-only peer" }), (0, import_jsx_runtime39.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) })] }) });
93769
+ return (0, import_jsx_runtime40.jsx)("div", { id: `browser-overlay-${config.id}`, children: (0, import_jsx_runtime40.jsxs)("div", { className: "w-64 grid grid-cols-[min-content,1fr] gap-2", children: [(0, import_jsx_runtime40.jsx)("div", { children: state.status == "open" ? "Open" : "Closed" }), (0, import_jsx_runtime40.jsx)("div", { children: (0, import_jsx_runtime40.jsxs)("label", { className: "inline-flex items-center cursor-pointer", children: [(0, import_jsx_runtime40.jsx)("input", { type: "checkbox", checked: state.status == "open", onChange: (e) => onStatusChanged(e.target.checked), className: "sr-only peer" }), (0, import_jsx_runtime40.jsx)("div", { className: "relative w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600" })] }) })] }) });
93619
93770
  }
93620
- var inline_view_default15 = InlineView15;
93771
+ var inline_view_default16 = InlineView16;
93621
93772
 
93622
93773
  // build/processor.gate/info.js
93623
- function info_default29({ defineComponent, All }) {
93774
+ function info_default30({ defineComponent, All }) {
93624
93775
  return defineComponent({
93625
93776
  identifier: "processor.gate",
93626
93777
  category: "processor",
@@ -93651,7 +93802,7 @@ function info_default29({ defineComponent, All }) {
93651
93802
  };
93652
93803
  },
93653
93804
  runtime: {
93654
- inline: inline_view_default15,
93805
+ inline: inline_view_default16,
93655
93806
  initialState: () => ({
93656
93807
  status: "closed"
93657
93808
  }),
@@ -93661,7 +93812,7 @@ function info_default29({ defineComponent, All }) {
93661
93812
  case "status-changed":
93662
93813
  return { ...state, status: ev.status };
93663
93814
  default:
93664
- assertUnreachable20(evType);
93815
+ assertUnreachable21(evType);
93665
93816
  }
93666
93817
  }
93667
93818
  },
@@ -93683,13 +93834,13 @@ function info_default29({ defineComponent, All }) {
93683
93834
  }
93684
93835
  });
93685
93836
  }
93686
- function assertUnreachable20(_) {
93837
+ function assertUnreachable21(_) {
93687
93838
  throw new Error("Didn't expect to get here");
93688
93839
  }
93689
93840
 
93690
93841
  // build/processor.makeProgram/info.js
93691
93842
  var import_FaPlayCircle = __toESM(require_FaPlayCircle());
93692
- function info_default30({ defineComponent, All, validation: { Z } }) {
93843
+ function info_default31({ defineComponent, All, validation: { Z } }) {
93693
93844
  return defineComponent({
93694
93845
  identifier: "processor.makeProgram",
93695
93846
  category: "processor",
@@ -93815,7 +93966,7 @@ function getStreamKeyMapping(componentId, rows, columns) {
93815
93966
  audioStreamKeys
93816
93967
  };
93817
93968
  }
93818
- function info_default31({ defineComponent, validation: { Z } }) {
93969
+ function info_default32({ defineComponent, validation: { Z } }) {
93819
93970
  return defineComponent({
93820
93971
  identifier: "processor.multiview",
93821
93972
  name: "Multiview",
@@ -93926,7 +94077,7 @@ function info_default31({ defineComponent, validation: { Z } }) {
93926
94077
  var import_config7 = __toESM(require_config());
93927
94078
 
93928
94079
  // build/processor.onscreenGraphic/image-selection.js
93929
- var import_jsx_runtime40 = __toESM(require_jsx_runtime());
94080
+ var import_jsx_runtime41 = __toESM(require_jsx_runtime());
93930
94081
  var import_react10 = __toESM(require_react());
93931
94082
  function GraphicSelection(props) {
93932
94083
  const [loading, setLoading] = (0, import_react10.useState)(true);
@@ -93955,19 +94106,19 @@ function GraphicSelection(props) {
93955
94106
  }, [staticUrl, defaultValue, onChanged]);
93956
94107
  const [graphcs, setGraphics] = (0, import_react10.useState)([]);
93957
94108
  if (loading) {
93958
- return (0, import_jsx_runtime40.jsx)("div", { children: "Loading.." });
94109
+ return (0, import_jsx_runtime41.jsx)("div", { children: "Loading.." });
93959
94110
  }
93960
94111
  if (graphcs.length == 0) {
93961
- return (0, import_jsx_runtime40.jsx)("div", { children: "No graphics loaded" });
94112
+ return (0, import_jsx_runtime41.jsx)("div", { children: "No graphics loaded" });
93962
94113
  }
93963
- return (0, import_jsx_runtime40.jsx)("div", { children: (0, import_jsx_runtime40.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime40.jsx)("option", { value: "", children: "---" }, "empty"), graphcs.map((o, i) => {
93964
- return (0, import_jsx_runtime40.jsx)("option", { value: o, children: o }, i);
94114
+ return (0, import_jsx_runtime41.jsx)("div", { children: (0, import_jsx_runtime41.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime41.jsx)("option", { value: "", children: "---" }, "empty"), graphcs.map((o, i) => {
94115
+ return (0, import_jsx_runtime41.jsx)("option", { value: o, children: o }, i);
93965
94116
  })] }) });
93966
94117
  }
93967
94118
  var image_selection_default = GraphicSelection;
93968
94119
 
93969
94120
  // build/processor.onscreenGraphic/summary-view.js
93970
- var import_jsx_runtime41 = __toESM(require_jsx_runtime());
94121
+ var import_jsx_runtime42 = __toESM(require_jsx_runtime());
93971
94122
  var import_react11 = __toESM(require_react());
93972
94123
  function SummaryView9({ state, sendCommand, urls }) {
93973
94124
  const [graphic, setGraphic] = (0, import_react11.useState)(state.activeGraphic?.file);
@@ -94105,7 +94256,7 @@ function SummaryView9({ state, sendCommand, urls }) {
94105
94256
  const buttonClass = "mt-2 mb-5 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800";
94106
94257
  const deleteButtonClass = "mt-2 text-white w-full justify-center bg-red-600 hover:bg-red-700 focus:ring-4 focus:outline-none focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-red-700 dark:hover:bg-red-800 dark:focus:ring-red-900";
94107
94258
  const fileInputClass = "block w-full text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400";
94108
- return (0, import_jsx_runtime41.jsxs)("div", { className: "space-y-3", children: [(0, import_jsx_runtime41.jsx)("h2", { className: "text-xl font-bold text-gray-900 dark:text-white", children: "Controls" }), (0, import_jsx_runtime41.jsxs)("div", { children: [(0, import_jsx_runtime41.jsx)("label", { htmlFor: "select-graphic", className: "block text-gray-900 dark:text-white mb-1", children: "Source" }), (0, import_jsx_runtime41.jsxs)("select", { id: "select-graphic", className: "w-full node-editor-select-input", value: graphic || "", onChange: (e) => setGraphic(e.target.value || void 0), children: [(0, import_jsx_runtime41.jsx)("option", { value: "", children: "---" }), graphics.map((s) => (0, import_jsx_runtime41.jsx)("option", { value: s, children: s }, s))] })] }), graphic && (0, import_jsx_runtime41.jsxs)("div", { children: [(0, import_jsx_runtime41.jsx)("label", { htmlFor: "select-position", className: "block text-gray-900 dark:text-white mb-1", children: "Graphic position" }), (0, import_jsx_runtime41.jsx)(PositionSelector, { initialPosition: position, onChange: setPosition, graphicChanged, ...state })] }), (0, import_jsx_runtime41.jsx)("button", { type: "button", className: `${buttonClass} ${!stateChanged ? "opacity-50 cursor-not-allowed" : ""}`, onClick: () => sendCommand({ type: "change-graphic", file: graphic, position }), disabled: !stateChanged, children: "Commit" }), !showFileInput && !uploadStatus.success && (0, import_jsx_runtime41.jsx)("button", { type: "button", className: buttonClass, onClick: () => setShowFileInput(true), style: { marginBottom: "1rem" }, children: "Upload Graphic" }), showFileInput && (0, import_jsx_runtime41.jsxs)("form", { style: { display: "block", marginBottom: "1rem" }, children: [(0, import_jsx_runtime41.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange, className: fileInputClass }), showUploadButton && (0, import_jsx_runtime41.jsx)("button", { type: "button", className: buttonClass, onClick: uploadFile, children: "Upload" })] }), (0, import_jsx_runtime41.jsx)("button", { type: "button", className: deleteButtonClass, onClick: () => setShowDeleteDropdown(!showDeleteDropdown), style: { marginBottom: "1rem" }, children: showDeleteDropdown ? "Hide Delete Options" : "Delete Graphics" }), showDeleteDropdown && (0, import_jsx_runtime41.jsxs)("div", { className: "mt-2 p-2 bg-gray-100 dark:bg-gray-800 rounded-lg", children: [(0, import_jsx_runtime41.jsx)("h3", { className: "text-lg font-semibold mb-2 text-gray-900 dark:text-white", children: "Select Graphic to Delete" }), (0, import_jsx_runtime41.jsxs)("select", { className: "w-full mb-2 node-editor-select-input", value: graphicToDelete, onChange: (e) => setGraphicToDelete(e.target.value), children: [(0, import_jsx_runtime41.jsx)("option", { value: "", children: " Select a graphic" }), graphics.map((graphicName) => (0, import_jsx_runtime41.jsx)("option", { value: graphicName, children: graphicName }, graphicName))] }), (0, import_jsx_runtime41.jsx)("button", { onClick: deleteBug, disabled: !graphicToDelete, className: `${deleteButtonClass} ${!graphicToDelete ? "opacity-50 cursor-not-allowed" : ""}`, children: "Delete Selected Graphic" })] }), uploadStatus.message && (0, import_jsx_runtime41.jsx)("div", { className: `mt-2 text-center ${uploadStatus.success ? "text-green-600" : "text-red-600"}`, children: uploadStatus.message })] });
94259
+ return (0, import_jsx_runtime42.jsxs)("div", { className: "space-y-3", children: [(0, import_jsx_runtime42.jsx)("h2", { className: "text-xl font-bold text-gray-900 dark:text-white", children: "Controls" }), (0, import_jsx_runtime42.jsxs)("div", { children: [(0, import_jsx_runtime42.jsx)("label", { htmlFor: "select-graphic", className: "block text-gray-900 dark:text-white mb-1", children: "Source" }), (0, import_jsx_runtime42.jsxs)("select", { id: "select-graphic", className: "w-full node-editor-select-input", value: graphic || "", onChange: (e) => setGraphic(e.target.value || void 0), children: [(0, import_jsx_runtime42.jsx)("option", { value: "", children: "---" }), graphics.map((s) => (0, import_jsx_runtime42.jsx)("option", { value: s, children: s }, s))] })] }), graphic && (0, import_jsx_runtime42.jsxs)("div", { children: [(0, import_jsx_runtime42.jsx)("label", { htmlFor: "select-position", className: "block text-gray-900 dark:text-white mb-1", children: "Graphic position" }), (0, import_jsx_runtime42.jsx)(PositionSelector, { initialPosition: position, onChange: setPosition, graphicChanged, ...state })] }), (0, import_jsx_runtime42.jsx)("button", { type: "button", className: `${buttonClass} ${!stateChanged ? "opacity-50 cursor-not-allowed" : ""}`, onClick: () => sendCommand({ type: "change-graphic", file: graphic, position }), disabled: !stateChanged, children: "Commit" }), !showFileInput && !uploadStatus.success && (0, import_jsx_runtime42.jsx)("button", { type: "button", className: buttonClass, onClick: () => setShowFileInput(true), style: { marginBottom: "1rem" }, children: "Upload Graphic" }), showFileInput && (0, import_jsx_runtime42.jsxs)("form", { style: { display: "block", marginBottom: "1rem" }, children: [(0, import_jsx_runtime42.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange, className: fileInputClass }), showUploadButton && (0, import_jsx_runtime42.jsx)("button", { type: "button", className: buttonClass, onClick: uploadFile, children: "Upload" })] }), (0, import_jsx_runtime42.jsx)("button", { type: "button", className: deleteButtonClass, onClick: () => setShowDeleteDropdown(!showDeleteDropdown), style: { marginBottom: "1rem" }, children: showDeleteDropdown ? "Hide Delete Options" : "Delete Graphics" }), showDeleteDropdown && (0, import_jsx_runtime42.jsxs)("div", { className: "mt-2 p-2 bg-gray-100 dark:bg-gray-800 rounded-lg", children: [(0, import_jsx_runtime42.jsx)("h3", { className: "text-lg font-semibold mb-2 text-gray-900 dark:text-white", children: "Select Graphic to Delete" }), (0, import_jsx_runtime42.jsxs)("select", { className: "w-full mb-2 node-editor-select-input", value: graphicToDelete, onChange: (e) => setGraphicToDelete(e.target.value), children: [(0, import_jsx_runtime42.jsx)("option", { value: "", children: " Select a graphic" }), graphics.map((graphicName) => (0, import_jsx_runtime42.jsx)("option", { value: graphicName, children: graphicName }, graphicName))] }), (0, import_jsx_runtime42.jsx)("button", { onClick: deleteBug, disabled: !graphicToDelete, className: `${deleteButtonClass} ${!graphicToDelete ? "opacity-50 cursor-not-allowed" : ""}`, children: "Delete Selected Graphic" })] }), uploadStatus.message && (0, import_jsx_runtime42.jsx)("div", { className: `mt-2 text-center ${uploadStatus.success ? "text-green-600" : "text-red-600"}`, children: uploadStatus.message })] });
94109
94260
  }
94110
94261
  function fromLocalPosition(pos) {
94111
94262
  if (pos.type === "named")
@@ -94114,7 +94265,7 @@ function fromLocalPosition(pos) {
94114
94265
  return { type: pos.type, x: pos.x, y: pos.y };
94115
94266
  if (pos.type === "percentage")
94116
94267
  return { type: pos.type, x: pos.x, y: pos.y };
94117
- assertUnreachable21(pos);
94268
+ assertUnreachable22(pos);
94118
94269
  }
94119
94270
  function convertPosition(givenPosition, currentVideo, currentGraphic) {
94120
94271
  if (!givenPosition)
@@ -94132,7 +94283,7 @@ function convertPosition(givenPosition, currentVideo, currentGraphic) {
94132
94283
  } else if (givenPosition.position === "center") {
94133
94284
  xy = { x: 50, y: 50 };
94134
94285
  } else {
94135
- assertUnreachable21(givenPosition.position);
94286
+ assertUnreachable22(givenPosition.position);
94136
94287
  }
94137
94288
  return { ...givenPosition, ...xy, xPct: xy.x, yPct: xy.y };
94138
94289
  }
@@ -94231,7 +94382,7 @@ var PositionSelector = ({ initialPosition: givenPosition = { type: "named", posi
94231
94382
  window.removeEventListener("mouseup", previous.handleMouseUp);
94232
94383
  };
94233
94384
  }, [isDragging, handleMouseMove, handleMouseUp]);
94234
- return (0, import_jsx_runtime41.jsxs)("div", { className: "relative w-full max-w-lg mx-auto mt-4 mb-8", children: [(0, import_jsx_runtime41.jsxs)("div", { className: "mb-4 flex items-center gap-2", children: [(0, import_jsx_runtime41.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: "Position Type:" }), (0, import_jsx_runtime41.jsxs)("select", { value: position.type, onChange: (e) => {
94385
+ return (0, import_jsx_runtime42.jsxs)("div", { className: "relative w-full max-w-lg mx-auto mt-4 mb-8", children: [(0, import_jsx_runtime42.jsxs)("div", { className: "mb-4 flex items-center gap-2", children: [(0, import_jsx_runtime42.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: "Position Type:" }), (0, import_jsx_runtime42.jsxs)("select", { value: position.type, onChange: (e) => {
94235
94386
  const newType = e.target.value;
94236
94387
  if (newType === "named") {
94237
94388
  setPosition(convertPos({ type: "named", position: "topleft" }));
@@ -94239,12 +94390,12 @@ var PositionSelector = ({ initialPosition: givenPosition = { type: "named", posi
94239
94390
  setPositionUnit("%");
94240
94391
  setPosition({ ...convertPos(position), type: "percentage" });
94241
94392
  }
94242
- }, className: "node-editor-select-input", children: [(0, import_jsx_runtime41.jsx)("option", { value: "coordinate", children: "Custom Position" }), (0, import_jsx_runtime41.jsx)("option", { value: "named", children: "Preset Position" })] })] }), position.type === "named" ? (0, import_jsx_runtime41.jsx)("div", { className: "mb-4", children: (0, import_jsx_runtime41.jsxs)("select", { value: position.position, onChange: (e) => {
94393
+ }, className: "node-editor-select-input", children: [(0, import_jsx_runtime42.jsx)("option", { value: "coordinate", children: "Custom Position" }), (0, import_jsx_runtime42.jsx)("option", { value: "named", children: "Preset Position" })] })] }), position.type === "named" ? (0, import_jsx_runtime42.jsx)("div", { className: "mb-4", children: (0, import_jsx_runtime42.jsxs)("select", { value: position.position, onChange: (e) => {
94243
94394
  setPosition(convertPos({
94244
94395
  type: "named",
94245
94396
  position: e.target.value
94246
94397
  }));
94247
- }, className: "w-full node-editor-select-input", children: [(0, import_jsx_runtime41.jsx)("option", { value: "topleft", children: "Top Left" }), (0, import_jsx_runtime41.jsx)("option", { value: "topright", children: "Top Right" }), (0, import_jsx_runtime41.jsx)("option", { value: "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime41.jsx)("option", { value: "bottomright", children: "Bottom Right" }), (0, import_jsx_runtime41.jsx)("option", { value: "center", children: "Centered" })] }) }) : (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [(0, import_jsx_runtime41.jsxs)("div", { className: "mb-4 flex items-center gap-2", children: [(0, import_jsx_runtime41.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: "Position Unit:" }), (0, import_jsx_runtime41.jsxs)("select", { value: positionUnit, onChange: (e) => {
94398
+ }, className: "w-full node-editor-select-input", children: [(0, import_jsx_runtime42.jsx)("option", { value: "topleft", children: "Top Left" }), (0, import_jsx_runtime42.jsx)("option", { value: "topright", children: "Top Right" }), (0, import_jsx_runtime42.jsx)("option", { value: "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime42.jsx)("option", { value: "bottomright", children: "Bottom Right" }), (0, import_jsx_runtime42.jsx)("option", { value: "center", children: "Centered" })] }) }) : (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [(0, import_jsx_runtime42.jsxs)("div", { className: "mb-4 flex items-center gap-2", children: [(0, import_jsx_runtime42.jsx)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: "Position Unit:" }), (0, import_jsx_runtime42.jsxs)("select", { value: positionUnit, onChange: (e) => {
94248
94399
  setPositionUnit(e.target.value);
94249
94400
  if (e.target.value === "px" && position.type !== "coordinate" && currentVideo && currentGraphic) {
94250
94401
  const { width: videoWidth, height: videoHeight } = currentVideo;
@@ -94269,18 +94420,18 @@ var PositionSelector = ({ initialPosition: givenPosition = { type: "named", posi
94269
94420
  yStr: void 0
94270
94421
  });
94271
94422
  }
94272
- }, className: "node-editor-select-input", children: [(0, import_jsx_runtime41.jsx)("option", { value: "px", children: "Pixels" }), (0, import_jsx_runtime41.jsx)("option", { value: "%", children: "Percentage" })] })] }), (0, import_jsx_runtime41.jsxs)("div", { className: "relative bg-gray-200 dark:bg-gray-700 rounded-lg", style: {
94423
+ }, className: "node-editor-select-input", children: [(0, import_jsx_runtime42.jsx)("option", { value: "px", children: "Pixels" }), (0, import_jsx_runtime42.jsx)("option", { value: "%", children: "Percentage" })] })] }), (0, import_jsx_runtime42.jsxs)("div", { className: "relative bg-gray-200 dark:bg-gray-700 rounded-lg", style: {
94273
94424
  width: "100%",
94274
94425
  userSelect: "none",
94275
94426
  aspectRatio: currentVideo ? `${currentVideo.width} / ${currentVideo.height}` : `3 / 2`
94276
- }, ref: previewAreaRef, children: [(0, import_jsx_runtime41.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-gray-500 dark:text-gray-400", children: [(0, import_jsx_runtime41.jsx)("span", { children: currentVideo ? "Video Preview Area" : "Video Dimensions Unknown" }), " ", currentVideo ? (0, import_jsx_runtime41.jsxs)("span", { children: [currentVideo.width, "x", currentVideo.height, "px"] }) : ""] }), (0, import_jsx_runtime41.jsx)("div", { className: `absolute cursor-move ${currentGraphic && !graphicChanged ? "" : "p-2"} rounded-lg bg-primary-500 bg-opacity-50 hover:bg-opacity-75 transition-colors
94427
+ }, ref: previewAreaRef, children: [(0, import_jsx_runtime42.jsxs)("div", { className: "absolute inset-0 flex flex-col items-center justify-center text-gray-500 dark:text-gray-400", children: [(0, import_jsx_runtime42.jsx)("span", { children: currentVideo ? "Video Preview Area" : "Video Dimensions Unknown" }), " ", currentVideo ? (0, import_jsx_runtime42.jsxs)("span", { children: [currentVideo.width, "x", currentVideo.height, "px"] }) : ""] }), (0, import_jsx_runtime42.jsx)("div", { className: `absolute cursor-move ${currentGraphic && !graphicChanged ? "" : "p-2"} rounded-lg bg-primary-500 bg-opacity-50 hover:bg-opacity-75 transition-colors
94277
94428
  ${isDragging ? "bg-opacity-75" : ""}`, style: {
94278
94429
  left: `${position.xPct}%`,
94279
94430
  top: `${position.yPct}%`,
94280
94431
  transform: `translate(-${position.xPct}%, -${position.yPct}%)`,
94281
94432
  aspectRatio: currentGraphic && !graphicChanged ? `${currentGraphic.width} / ${currentGraphic.height}` : `1`,
94282
94433
  width: currentGraphic && currentVideo && !graphicChanged ? currentGraphic.width / currentVideo.width * 100 + "%" : void 0
94283
- }, onMouseDown: handleMouseDown, ref: previewTargetRef, children: (0, import_jsx_runtime41.jsx)("svg", { className: `${currentGraphic && !graphicChanged ? "w-full h-full" : "w-6 h-6"} text-white`, "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: (0, import_jsx_runtime41.jsx)("path", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 6v12m-6-6h12m-6-6 1.5 1.5M12 6l-1.5 1.5m1.5 10.5L10.5 16.5M12 18l1.5-1.5M6 12l1.5-1.5M7.5 13.5 6 12m12 0-1.5-1.5M16.5 13.5 18 12" }) }) })] }), (0, import_jsx_runtime41.jsxs)("div", { className: "mt-2 text-sm text-gray-600 dark:text-gray-300 text-center", children: ["Position:", " ", position.type === "percentage" ? `${position.xPct.toFixed(1)}%, ${position.yPct.toFixed(1)}%` : `${Math.round(position.x)}px, ${Math.round(position.y)}px`] }), (0, import_jsx_runtime41.jsxs)("div", { className: "mt-2 flex gap-4", children: [(0, import_jsx_runtime41.jsxs)("div", { children: [(0, import_jsx_runtime41.jsxs)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: ["X Position ", positionUnit] }), (0, import_jsx_runtime41.jsx)("input", { type: "number", step: positionUnit === "%" ? "0.1" : "1", value: position.xStr ?? (positionUnit === "%" ? position.xPct.toFixed(1) : Math.round(position.x)), onChange: (e) => {
94434
+ }, onMouseDown: handleMouseDown, ref: previewTargetRef, children: (0, import_jsx_runtime42.jsx)("svg", { className: `${currentGraphic && !graphicChanged ? "w-full h-full" : "w-6 h-6"} text-white`, "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: (0, import_jsx_runtime42.jsx)("path", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M12 6v12m-6-6h12m-6-6 1.5 1.5M12 6l-1.5 1.5m1.5 10.5L10.5 16.5M12 18l1.5-1.5M6 12l1.5-1.5M7.5 13.5 6 12m12 0-1.5-1.5M16.5 13.5 18 12" }) }) })] }), (0, import_jsx_runtime42.jsxs)("div", { className: "mt-2 text-sm text-gray-600 dark:text-gray-300 text-center", children: ["Position:", " ", position.type === "percentage" ? `${position.xPct.toFixed(1)}%, ${position.yPct.toFixed(1)}%` : `${Math.round(position.x)}px, ${Math.round(position.y)}px`] }), (0, import_jsx_runtime42.jsxs)("div", { className: "mt-2 flex gap-4", children: [(0, import_jsx_runtime42.jsxs)("div", { children: [(0, import_jsx_runtime42.jsxs)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: ["X Position ", positionUnit] }), (0, import_jsx_runtime42.jsx)("input", { type: "number", step: positionUnit === "%" ? "0.1" : "1", value: position.xStr ?? (positionUnit === "%" ? position.xPct.toFixed(1) : Math.round(position.x)), onChange: (e) => {
94284
94435
  const newX = Number(e.target.value);
94285
94436
  setPosition(convertPos({
94286
94437
  type: positionUnit === "%" ? "percentage" : "coordinate",
@@ -94289,7 +94440,7 @@ var PositionSelector = ({ initialPosition: givenPosition = { type: "named", posi
94289
94440
  y: position.y,
94290
94441
  yStr: position.yStr
94291
94442
  }));
94292
- }, className: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 sm:text-sm dark:bg-gray-700 dark:border-gray-600" })] }), (0, import_jsx_runtime41.jsxs)("div", { children: [(0, import_jsx_runtime41.jsxs)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: ["Y Position ", positionUnit] }), (0, import_jsx_runtime41.jsx)("input", { type: "number", step: positionUnit === "%" ? "0.1" : "1", value: position.yStr ?? (positionUnit === "%" ? position.yPct.toFixed(1) : Math.round(position.y)), onChange: (e) => {
94443
+ }, className: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary-500 focus:ring-primary-500 sm:text-sm dark:bg-gray-700 dark:border-gray-600" })] }), (0, import_jsx_runtime42.jsxs)("div", { children: [(0, import_jsx_runtime42.jsxs)("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300", children: ["Y Position ", positionUnit] }), (0, import_jsx_runtime42.jsx)("input", { type: "number", step: positionUnit === "%" ? "0.1" : "1", value: position.yStr ?? (positionUnit === "%" ? position.yPct.toFixed(1) : Math.round(position.y)), onChange: (e) => {
94293
94444
  const newY = Number(e.target.value);
94294
94445
  setPosition(convertPos({
94295
94446
  type: positionUnit === "%" ? "percentage" : "coordinate",
@@ -94303,14 +94454,14 @@ var PositionSelector = ({ initialPosition: givenPosition = { type: "named", posi
94303
94454
  function clamp2(min2, num, max2) {
94304
94455
  return num < min2 ? min2 : num > max2 ? max2 : num;
94305
94456
  }
94306
- function assertUnreachable21(_) {
94457
+ function assertUnreachable22(_) {
94307
94458
  throw new Error("Didn't expect to get here");
94308
94459
  }
94309
94460
  var summary_view_default9 = SummaryView9;
94310
94461
 
94311
94462
  // build/processor.onscreenGraphic/info.js
94312
94463
  var import_FaImage2 = __toESM(require_FaImage());
94313
- function info_default32({ defineComponent }) {
94464
+ function info_default33({ defineComponent }) {
94314
94465
  return defineComponent({
94315
94466
  identifier: "processor.onscreenGraphic",
94316
94467
  category: "processor",
@@ -94349,7 +94500,7 @@ function info_default32({ defineComponent }) {
94349
94500
  case "graphic-loaded":
94350
94501
  return { ...state, currentGraphic: ev.currentGraphic };
94351
94502
  default:
94352
- assertUnreachable22(evType);
94503
+ assertUnreachable23(evType);
94353
94504
  }
94354
94505
  }
94355
94506
  },
@@ -94385,12 +94536,12 @@ function info_default32({ defineComponent }) {
94385
94536
  }
94386
94537
  });
94387
94538
  }
94388
- function assertUnreachable22(_) {
94539
+ function assertUnreachable23(_) {
94389
94540
  throw new Error("Didn't expect to get here");
94390
94541
  }
94391
94542
 
94392
94543
  // build/processor.smartSingleMediaSwitch/source-selection.js
94393
- var import_jsx_runtime42 = __toESM(require_jsx_runtime());
94544
+ var import_jsx_runtime43 = __toESM(require_jsx_runtime());
94394
94545
  var import_react12 = __toESM(require_react());
94395
94546
  function OrderInput(props) {
94396
94547
  const { onChanged } = props;
@@ -94399,10 +94550,10 @@ function OrderInput(props) {
94399
94550
  onChanged(value);
94400
94551
  }, [value, onChanged]);
94401
94552
  if (value.length == 0) {
94402
- return (0, import_jsx_runtime42.jsx)("p", { className: "node-editor-helper-text", children: "Sources will appear here when subscriptions have been added to this node" });
94553
+ return (0, import_jsx_runtime43.jsx)("p", { className: "node-editor-helper-text", children: "Sources will appear here when subscriptions have been added to this node" });
94403
94554
  } else {
94404
- return (0, import_jsx_runtime42.jsx)("div", { id: props.id, children: (0, import_jsx_runtime42.jsx)("ul", { children: value.map((v, ix) => {
94405
- return (0, import_jsx_runtime42.jsxs)("li", { className: "flex", children: [(0, import_jsx_runtime42.jsx)("span", { className: "node-editor-label flex-grow", children: v.displayName }), ix == 0 ? (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, {}) : (0, import_jsx_runtime42.jsx)("svg", { onClick: moveUp(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime42.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18" }) }), ix == value.length - 1 ? (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, {}) : (0, import_jsx_runtime42.jsx)("svg", { onClick: moveDown(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime42.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3" }) })] }, ix);
94555
+ return (0, import_jsx_runtime43.jsx)("div", { id: props.id, children: (0, import_jsx_runtime43.jsx)("ul", { children: value.map((v, ix) => {
94556
+ return (0, import_jsx_runtime43.jsxs)("li", { className: "flex", children: [(0, import_jsx_runtime43.jsx)("span", { className: "node-editor-label flex-grow", children: v.displayName }), ix == 0 ? (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, {}) : (0, import_jsx_runtime43.jsx)("svg", { onClick: moveUp(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime43.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18" }) }), ix == value.length - 1 ? (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, {}) : (0, import_jsx_runtime43.jsx)("svg", { onClick: moveDown(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime43.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3" }) })] }, ix);
94406
94557
  }) }) });
94407
94558
  }
94408
94559
  function moveUp(ix) {
@@ -94425,18 +94576,18 @@ function OrderInput(props) {
94425
94576
  var source_selection_default = OrderInput;
94426
94577
 
94427
94578
  // build/processor.smartSingleMediaSwitch/inline-view.js
94428
- var import_jsx_runtime43 = __toESM(require_jsx_runtime());
94579
+ var import_jsx_runtime44 = __toESM(require_jsx_runtime());
94429
94580
  var activeClasses = "active text-green-500 dark:text-green-300";
94430
94581
  var availableClasses = "available text-green-500 dark:text-green-300";
94431
94582
  var inactiveClasses = "inactive text-orange-500 dark:text-orange-300";
94432
- function InlineView16({ state, config }) {
94433
- return (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [(0, import_jsx_runtime43.jsx)("h5", { children: "Sources" }), (0, import_jsx_runtime43.jsxs)("ul", { children: [config.sources.map((s, i) => state.activeSource == i ? (0, import_jsx_runtime43.jsxs)("li", { className: activeClasses, children: [s.displayName, " <--"] }, i) : state.availableSources.includes(i) ? (0, import_jsx_runtime43.jsxs)("li", { className: availableClasses, children: [s.displayName, " (available)"] }, i) : (0, import_jsx_runtime43.jsxs)("li", { className: inactiveClasses, children: [s.displayName, " (inactive)"] }, i)), (0, import_jsx_runtime43.jsx)("li", { className: state.activeSource < 0 ? activeClasses : availableClasses, children: "fallback" }, "fallback")] })] });
94583
+ function InlineView17({ state, config }) {
94584
+ return (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [(0, import_jsx_runtime44.jsx)("h5", { children: "Sources" }), (0, import_jsx_runtime44.jsxs)("ul", { children: [config.sources.map((s, i) => state.activeSource == i ? (0, import_jsx_runtime44.jsxs)("li", { className: activeClasses, children: [s.displayName, " <--"] }, i) : state.availableSources.includes(i) ? (0, import_jsx_runtime44.jsxs)("li", { className: availableClasses, children: [s.displayName, " (available)"] }, i) : (0, import_jsx_runtime44.jsxs)("li", { className: inactiveClasses, children: [s.displayName, " (inactive)"] }, i)), (0, import_jsx_runtime44.jsx)("li", { className: state.activeSource < 0 ? activeClasses : availableClasses, children: "fallback" }, "fallback")] })] });
94434
94585
  }
94435
- var inline_view_default16 = InlineView16;
94586
+ var inline_view_default17 = InlineView17;
94436
94587
 
94437
94588
  // build/processor.smartSingleMediaSwitch/info.js
94438
94589
  var import_FaSlidersH = __toESM(require_FaSlidersH());
94439
- function info_default33({ defineComponent, All, common: { Resolutions, FrameRates }, streamMatchesFilter }) {
94590
+ function info_default34({ defineComponent, All, common: { Resolutions, FrameRates }, streamMatchesFilter }) {
94440
94591
  function patchConfigFromSubscription(cfg, sub) {
94441
94592
  const potentiallyNewSources = sub.expectedStreams;
94442
94593
  potentiallyNewSources.forEach((s) => {
@@ -94521,12 +94672,12 @@ function info_default33({ defineComponent, All, common: { Resolutions, FrameRate
94521
94672
  state.availableSources.splice(state.availableSources.indexOf(ev.sourceIndex), 1);
94522
94673
  return { ...state };
94523
94674
  default:
94524
- assertUnreachable23(evType);
94675
+ assertUnreachable24(evType);
94525
94676
  }
94526
94677
  },
94527
- inline: inline_view_default16,
94528
- summary: inline_view_default16,
94529
- fullscreen: inline_view_default16
94678
+ inline: inline_view_default17,
94679
+ summary: inline_view_default17,
94680
+ fullscreen: inline_view_default17
94530
94681
  },
94531
94682
  configForm: {
94532
94683
  form: {
@@ -94573,12 +94724,12 @@ function info_default33({ defineComponent, All, common: { Resolutions, FrameRate
94573
94724
  }
94574
94725
  });
94575
94726
  }
94576
- function assertUnreachable23(_) {
94727
+ function assertUnreachable24(_) {
94577
94728
  throw new Error("Didn't expect to get here");
94578
94729
  }
94579
94730
 
94580
94731
  // build/processor.smartSourceSwitch/source-selection.js
94581
- var import_jsx_runtime44 = __toESM(require_jsx_runtime());
94732
+ var import_jsx_runtime45 = __toESM(require_jsx_runtime());
94582
94733
  var import_react13 = __toESM(require_react());
94583
94734
  function OrderInput2(props) {
94584
94735
  const { onChanged } = props;
@@ -94587,10 +94738,10 @@ function OrderInput2(props) {
94587
94738
  onChanged(value);
94588
94739
  }, [value, onChanged]);
94589
94740
  if (value.length == 0) {
94590
- return (0, import_jsx_runtime44.jsx)("p", { className: "node-editor-helper-text", children: "Sources will appear here when subscriptions have been added to this node" });
94741
+ return (0, import_jsx_runtime45.jsx)("p", { className: "node-editor-helper-text", children: "Sources will appear here when subscriptions have been added to this node" });
94591
94742
  } else {
94592
- return (0, import_jsx_runtime44.jsx)("div", { id: props.id, children: (0, import_jsx_runtime44.jsx)("ul", { children: value.map((v, ix) => {
94593
- return (0, import_jsx_runtime44.jsxs)("li", { className: "flex", children: [(0, import_jsx_runtime44.jsx)("span", { className: "node-editor-label flex-grow", children: v }), ix == 0 ? (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {}) : (0, import_jsx_runtime44.jsx)("svg", { onClick: moveUp(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime44.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18" }) }), ix == value.length - 1 ? (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {}) : (0, import_jsx_runtime44.jsx)("svg", { onClick: moveDown(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime44.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3" }) })] }, v);
94743
+ return (0, import_jsx_runtime45.jsx)("div", { id: props.id, children: (0, import_jsx_runtime45.jsx)("ul", { children: value.map((v, ix) => {
94744
+ return (0, import_jsx_runtime45.jsxs)("li", { className: "flex", children: [(0, import_jsx_runtime45.jsx)("span", { className: "node-editor-label flex-grow", children: v }), ix == 0 ? (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, {}) : (0, import_jsx_runtime45.jsx)("svg", { onClick: moveUp(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime45.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18" }) }), ix == value.length - 1 ? (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, {}) : (0, import_jsx_runtime45.jsx)("svg", { onClick: moveDown(ix), xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, className: "w-4 h-6 shrink cursor-pointer stroke-gray-700 dark:stroke-gray-50", children: (0, import_jsx_runtime45.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3" }) })] }, v);
94594
94745
  }) }) });
94595
94746
  }
94596
94747
  function moveUp(ix) {
@@ -94613,35 +94764,35 @@ function OrderInput2(props) {
94613
94764
  var source_selection_default2 = OrderInput2;
94614
94765
 
94615
94766
  // build/processor.smartSourceSwitch/inline-view.js
94616
- var import_jsx_runtime45 = __toESM(require_jsx_runtime());
94617
- function cn(...classes) {
94767
+ var import_jsx_runtime46 = __toESM(require_jsx_runtime());
94768
+ function cn2(...classes) {
94618
94769
  return classes.filter(Boolean).join(" ");
94619
94770
  }
94620
- function InlineView17({ state, config }) {
94621
- return (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [(0, import_jsx_runtime45.jsx)("h5", { className: "text-gray-900 dark:text-white font-medium", children: "Sources:" }), (0, import_jsx_runtime45.jsxs)("ul", { className: "space-y-2 mt-2", children: [config.sources.map((s, i) => {
94771
+ function InlineView18({ state, config }) {
94772
+ return (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [(0, import_jsx_runtime46.jsx)("h5", { className: "text-gray-900 dark:text-white font-medium", children: "Sources:" }), (0, import_jsx_runtime46.jsxs)("ul", { className: "space-y-2 mt-2", children: [config.sources.map((s, i) => {
94622
94773
  const isActive = state.activeSource === s;
94623
94774
  const isAvailable = state.availableSources.includes(s);
94624
- const indicatorClasses = cn("w-3 h-3 rounded-full", isActive ? "bg-live" : isAvailable ? "bg-standby" : "bg-offline");
94625
- return (0, import_jsx_runtime45.jsxs)("li", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime45.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime45.jsx)("div", { className: indicatorClasses }), isActive && (0, import_jsx_runtime45.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, import_jsx_runtime45.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, import_jsx_runtime45.jsx)("span", { className: "text-gray-900 dark:text-white", children: s })] }, i);
94626
- }), (0, import_jsx_runtime45.jsxs)("li", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime45.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime45.jsx)("div", { className: cn("w-3 h-3 rounded-full", state.activeSource === "fallback" ? "bg-live" : "bg-standby") }), state.activeSource === "fallback" && (0, import_jsx_runtime45.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, import_jsx_runtime45.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, import_jsx_runtime45.jsx)("span", { className: "text-gray-900 dark:text-white", children: "fallback" })] }, "fallback")] })] });
94775
+ const indicatorClasses = cn2("w-3 h-3 rounded-full", isActive ? "bg-live" : isAvailable ? "bg-standby" : "bg-offline");
94776
+ return (0, import_jsx_runtime46.jsxs)("li", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime46.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime46.jsx)("div", { className: indicatorClasses }), isActive && (0, import_jsx_runtime46.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, import_jsx_runtime46.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, import_jsx_runtime46.jsx)("span", { className: "text-gray-900 dark:text-white", children: s })] }, i);
94777
+ }), (0, import_jsx_runtime46.jsxs)("li", { className: "flex items-center gap-2", children: [(0, import_jsx_runtime46.jsxs)("div", { className: "relative", children: [(0, import_jsx_runtime46.jsx)("div", { className: cn2("w-3 h-3 rounded-full", state.activeSource === "fallback" ? "bg-live" : "bg-standby") }), state.activeSource === "fallback" && (0, import_jsx_runtime46.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, import_jsx_runtime46.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, import_jsx_runtime46.jsx)("span", { className: "text-gray-900 dark:text-white", children: "fallback" })] }, "fallback")] })] });
94627
94778
  }
94628
- var inline_view_default17 = InlineView17;
94779
+ var inline_view_default18 = InlineView18;
94629
94780
 
94630
94781
  // build/processor.smartSourceSwitch/info.js
94631
94782
  var import_FaSlidersH2 = __toESM(require_FaSlidersH());
94632
94783
  var import_client_types4 = __toESM(require_client_types());
94633
94784
 
94634
94785
  // build/processor.smartSourceSwitch/form-views.js
94635
- var import_jsx_runtime46 = __toESM(require_jsx_runtime());
94786
+ var import_jsx_runtime47 = __toESM(require_jsx_runtime());
94636
94787
  function FallbackConfiguration(cfg) {
94637
94788
  if (cfg.kind === "file") {
94638
- return (0, import_jsx_runtime46.jsx)("div", { className: "text-sm", children: cfg.filePath || "No file specified" });
94789
+ return (0, import_jsx_runtime47.jsx)("div", { className: "text-sm", children: cfg.filePath || "No file specified" });
94639
94790
  }
94640
- return (0, import_jsx_runtime46.jsx)("div", { className: "text-sm", children: "Test Card" });
94791
+ return (0, import_jsx_runtime47.jsx)("div", { className: "text-sm", children: "Test Card" });
94641
94792
  }
94642
94793
 
94643
94794
  // build/processor.smartSourceSwitch/info.js
94644
- function info_default34({ defineComponent, Av, common: { Resolutions, FrameRates } }) {
94795
+ function info_default35({ defineComponent, Av, common: { Resolutions, FrameRates } }) {
94645
94796
  function patchConfigFromSubscription(cfg, sub) {
94646
94797
  const potentiallyNewSources = sub.expectedStreams.map((s) => s.sourceName).filter((s) => !!s);
94647
94798
  potentiallyNewSources.forEach((s) => {
@@ -94738,12 +94889,12 @@ function info_default34({ defineComponent, Av, common: { Resolutions, FrameRates
94738
94889
  state.availableSources.splice(state.availableSources.indexOf(ev.source), 1);
94739
94890
  return { ...state };
94740
94891
  default:
94741
- assertUnreachable24(evType);
94892
+ assertUnreachable25(evType);
94742
94893
  }
94743
94894
  },
94744
- inline: inline_view_default17,
94745
- summary: inline_view_default17,
94746
- fullscreen: inline_view_default17
94895
+ inline: inline_view_default18,
94896
+ summary: inline_view_default18,
94897
+ fullscreen: inline_view_default18
94747
94898
  },
94748
94899
  configForm: {
94749
94900
  form: {
@@ -94818,13 +94969,13 @@ function info_default34({ defineComponent, Av, common: { Resolutions, FrameRates
94818
94969
  }
94819
94970
  });
94820
94971
  }
94821
- function assertUnreachable24(_) {
94972
+ function assertUnreachable25(_) {
94822
94973
  throw new Error("Didn't expect to get here");
94823
94974
  }
94824
94975
 
94825
94976
  // build/processor.streamKeyOverride/info.js
94826
94977
  var import_FaKey = __toESM(require_FaKey());
94827
- function info_default35({ defineComponent, All, validation: { Z } }) {
94978
+ function info_default36({ defineComponent, All, validation: { Z } }) {
94828
94979
  return defineComponent({
94829
94980
  identifier: "processor.streamKeyOverride",
94830
94981
  category: "processor",
@@ -94920,20 +95071,20 @@ function info_default35({ defineComponent, All, validation: { Z } }) {
94920
95071
  var import_config8 = __toESM(require_config());
94921
95072
 
94922
95073
  // build/processor.syncExternalAudio/inline-view.js
94923
- var import_jsx_runtime47 = __toESM(require_jsx_runtime());
95074
+ var import_jsx_runtime48 = __toESM(require_jsx_runtime());
94924
95075
  var import_react14 = __toESM(require_react());
94925
- function InlineView18({ state, raise }) {
95076
+ function InlineView19({ state, raise }) {
94926
95077
  (0, import_react14.useEffect)(() => {
94927
95078
  if (raise) {
94928
95079
  raise();
94929
95080
  }
94930
95081
  }, [raise]);
94931
- return (0, import_jsx_runtime47.jsx)("div", { className: "processor-syncExternalAudio", children: (0, import_jsx_runtime47.jsx)("div", { className: "sync-status-inline", children: (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime47.jsx)("div", { className: `w-2 h-2 rounded-full ${state.isConnected ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime47.jsx)("span", { className: "text-sm", children: state.isConnected ? "Connected" : "Disconnected" }), state.currentSyncMs !== void 0 && (0, import_jsx_runtime47.jsxs)("span", { className: "text-xs text-gray-500", children: ["(", state.currentSyncMs, "ms)"] })] }) }) });
95082
+ return (0, import_jsx_runtime48.jsx)("div", { className: "processor-syncExternalAudio", children: (0, import_jsx_runtime48.jsx)("div", { className: "sync-status-inline", children: (0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center space-x-2", children: [(0, import_jsx_runtime48.jsx)("div", { className: `w-2 h-2 rounded-full ${state.isConnected ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime48.jsx)("span", { className: "text-sm", children: state.isConnected ? "Connected" : "Disconnected" }), state.currentSyncMs !== void 0 && (0, import_jsx_runtime48.jsxs)("span", { className: "text-xs text-gray-500", children: ["(", state.currentSyncMs, "ms)"] })] }) }) });
94932
95083
  }
94933
- var inline_view_default18 = InlineView18;
95084
+ var inline_view_default19 = InlineView19;
94934
95085
 
94935
95086
  // build/processor.syncExternalAudio/fullscreen-view.js
94936
- var import_jsx_runtime48 = __toESM(require_jsx_runtime());
95087
+ var import_jsx_runtime49 = __toESM(require_jsx_runtime());
94937
95088
  var import_react15 = __toESM(require_react());
94938
95089
  var CommentaryWhepClient = class extends NorskWhepClient {
94939
95090
  audio;
@@ -95122,11 +95273,11 @@ function SyncExternalAudioFullscreenView({ state, config, sendCommand }) {
95122
95273
  setAudioStarted(true);
95123
95274
  }
95124
95275
  };
95125
- return (0, import_jsx_runtime48.jsxs)("div", { className: "w-full h-full flex flex-col bg-gray-900 text-white", children: [(0, import_jsx_runtime48.jsxs)("div", { className: "flex justify-between items-center p-4 bg-gray-800 border-b border-gray-700", children: [(0, import_jsx_runtime48.jsxs)("h1", { className: "text-xl font-semibold", children: ["Sync External Audio - ", config.displayName] }), (0, import_jsx_runtime48.jsx)("div", { className: "flex items-center space-x-4", children: (0, import_jsx_runtime48.jsxs)("div", { className: `flex items-center space-x-2 ${state.isConnected ? "text-green-400" : "text-red-400"}`, children: [(0, import_jsx_runtime48.jsx)("div", { className: `w-2 h-2 rounded-full ${state.isConnected ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime48.jsx)("span", { className: "text-sm", children: state.isConnected ? "Connected" : "Disconnected" })] }) })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "flex-1 flex", children: [(0, import_jsx_runtime48.jsx)("div", { className: "flex-1 flex flex-col", children: (0, import_jsx_runtime48.jsx)("div", { className: "flex-1 bg-black flex items-center justify-center", children: state.primaryWhepUrl && state.commentaryWhepUrl ? (0, import_jsx_runtime48.jsx)("div", { ref: videoContainerRef, className: "max-w-full max-h-full" }) : (0, import_jsx_runtime48.jsxs)("div", { className: "text-gray-500 text-center", children: [(0, import_jsx_runtime48.jsx)("div", { className: "text-6xl mb-4", children: "\u{1F4FA}" }), (0, import_jsx_runtime48.jsx)("div", { children: "Waiting for video preview..." }), state.primaryWhepUrl && !state.commentaryWhepUrl && (0, import_jsx_runtime48.jsx)("div", { className: "text-sm mt-2", children: "Primary stream ready, waiting for commentary..." }), !state.primaryWhepUrl && state.commentaryWhepUrl && (0, import_jsx_runtime48.jsx)("div", { className: "text-sm mt-2", children: "Commentary stream ready, waiting for primary..." })] }) }) }), (0, import_jsx_runtime48.jsxs)("div", { className: "w-80 bg-gray-800 border-l border-gray-700 flex flex-col", children: [(0, import_jsx_runtime48.jsxs)("div", { className: "p-4 border-b border-gray-700", children: [(0, import_jsx_runtime48.jsx)("h3", { className: "text-lg font-medium mb-4", children: "Commentary Sync Control" }), (0, import_jsx_runtime48.jsxs)("div", { className: "mb-4 p-3 bg-gray-700 rounded-lg text-center", children: [(0, import_jsx_runtime48.jsx)("div", { className: "text-sm text-gray-300", children: "Current Offset" }), (0, import_jsx_runtime48.jsxs)("div", { className: "text-2xl font-mono", children: [state.currentSyncMs, "ms"] })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "mb-4", children: [(0, import_jsx_runtime48.jsx)("div", { className: "text-sm text-gray-300 mb-2", children: "Fine Adjustment (\xB1200ms)" }), (0, import_jsx_runtime48.jsxs)("div", { className: "flex space-x-2", children: [(0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(-200), className: "flex-1 px-3 py-2 bg-red-600 hover:bg-red-700 rounded text-sm font-medium", children: "-200ms" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(200), className: "flex-1 px-3 py-2 bg-green-600 hover:bg-green-700 rounded text-sm font-medium", children: "+200ms" })] })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "mb-4", children: [(0, import_jsx_runtime48.jsx)("div", { className: "text-sm text-gray-300 mb-2", children: "Coarse Adjustment" }), (0, import_jsx_runtime48.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [(0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(-1e3), className: "px-3 py-2 bg-red-700 hover:bg-red-800 rounded text-sm", children: "-1000ms" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(1e3), className: "px-3 py-2 bg-green-700 hover:bg-green-800 rounded text-sm", children: "+1000ms" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(-500), className: "px-3 py-2 bg-red-600 hover:bg-red-700 rounded text-sm", children: "-500ms" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => handleSyncAdjust(500), className: "px-3 py-2 bg-green-600 hover:bg-green-700 rounded text-sm", children: "+500ms" })] })] }), (0, import_jsx_runtime48.jsxs)("button", { onClick: handleResetSync, className: "w-full px-3 py-2 bg-blue-600 hover:bg-blue-700 rounded text-sm font-medium", children: ["Reset to Initial (", config.initialSyncMs, "ms)"] })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "p-4 flex-1", children: [(0, import_jsx_runtime48.jsx)("h3", { className: "text-lg font-medium mb-4", children: "Audio Monitor Controls" }), !audioStarted && isReady && (0, import_jsx_runtime48.jsxs)("div", { className: "mb-6 p-4 bg-yellow-900 border border-yellow-600 rounded-lg", children: [(0, import_jsx_runtime48.jsx)("div", { className: "text-sm text-yellow-200 mb-2", children: "Click to enable commentary audio (required by browser policy):" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => void handleStartAudio(), className: "w-full px-3 py-2 bg-yellow-600 hover:bg-yellow-700 rounded text-sm font-medium", children: "\u{1F50A} Start Commentary Audio" })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [(0, import_jsx_runtime48.jsx)("span", { className: "text-sm font-medium", children: "Primary Audio" }), (0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center space-x-2", children: [isReady ? (0, import_jsx_runtime48.jsx)("span", { className: "text-xs text-green-400", children: "\u2713 Ready" }) : (0, import_jsx_runtime48.jsx)("span", { className: "text-xs text-yellow-400", children: "\u23F3 Loading" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => setPrimaryMuted(!primaryMuted), disabled: !isReady, className: `px-2 py-1 rounded text-xs ${!isReady ? "bg-gray-500 cursor-not-allowed" : primaryMuted ? "bg-red-600 hover:bg-red-700" : "bg-gray-600 hover:bg-gray-700"}`, children: primaryMuted ? "Unmute" : "Mute" })] })] }), (0, import_jsx_runtime48.jsx)("input", { type: "range", min: "0", max: "100", value: primaryVolume, onChange: (e) => setPrimaryVolume(parseInt(e.target.value)), className: "w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer", disabled: primaryMuted || !isReady }), (0, import_jsx_runtime48.jsxs)("div", { className: "text-xs text-gray-400 mt-1", children: [primaryVolume, "%"] })] }), (0, import_jsx_runtime48.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [(0, import_jsx_runtime48.jsx)("span", { className: "text-sm font-medium", children: "Commentary Audio" }), (0, import_jsx_runtime48.jsxs)("div", { className: "flex items-center space-x-2", children: [isReady ? (0, import_jsx_runtime48.jsx)("span", { className: "text-xs text-green-400", children: "\u2713 Ready" }) : (0, import_jsx_runtime48.jsx)("span", { className: "text-xs text-yellow-400", children: "\u23F3 Loading" }), (0, import_jsx_runtime48.jsx)("button", { onClick: () => setCommentaryMuted(!commentaryMuted), disabled: !isReady, className: `px-2 py-1 rounded text-xs ${!isReady ? "bg-gray-500 cursor-not-allowed" : commentaryMuted ? "bg-red-600 hover:bg-red-700" : "bg-gray-600 hover:bg-gray-700"}`, children: commentaryMuted ? "Unmute" : "Mute" })] })] }), (0, import_jsx_runtime48.jsx)("input", { type: "range", min: "0", max: "100", value: commentaryVolume, onChange: (e) => setCommentaryVolume(parseInt(e.target.value)), className: "w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer", disabled: commentaryMuted || !isReady }), (0, import_jsx_runtime48.jsxs)("div", { className: "text-xs text-gray-400 mt-1", children: [commentaryVolume, "%"] })] }), (0, import_jsx_runtime48.jsx)("div", { className: "mt-auto pt-4 border-t border-gray-700", children: (0, import_jsx_runtime48.jsxs)("div", { className: "text-xs text-gray-400 space-y-1", children: [(0, import_jsx_runtime48.jsxs)("div", { children: ["Primary Delay: ", config.delayMs, "ms"] }), (0, import_jsx_runtime48.jsxs)("div", { children: ["Primary WHEP: ", state.primaryWhepUrl ? "\u2713 Available" : "\u2717 Not ready"] }), (0, import_jsx_runtime48.jsxs)("div", { children: ["Commentary WHEP: ", state.commentaryWhepUrl ? "\u2713 Available" : "\u2717 Not ready"] }), (0, import_jsx_runtime48.jsxs)("div", { children: ["Dual Streams: ", isReady ? "\u2713 Connected" : "\u23F3 Connecting"] }), (0, import_jsx_runtime48.jsxs)("div", { children: ["Audio Started: ", audioStarted ? "\u2713 Yes" : "\u2717 No"] }), isReady && (0, import_jsx_runtime48.jsx)("div", { className: "text-green-400", children: "\u2713 Dual WHEP ready" }), isReady && (0, import_jsx_runtime48.jsx)("div", { className: "text-xs text-gray-500 mt-1", children: "Check browser console for audio debug logs" })] }) })] })] })] })] });
95276
+ return (0, import_jsx_runtime49.jsxs)("div", { className: "w-full h-full flex flex-col bg-gray-900 text-white", children: [(0, import_jsx_runtime49.jsxs)("div", { className: "flex justify-between items-center p-4 bg-gray-800 border-b border-gray-700", children: [(0, import_jsx_runtime49.jsxs)("h1", { className: "text-xl font-semibold", children: ["Sync External Audio - ", config.displayName] }), (0, import_jsx_runtime49.jsx)("div", { className: "flex items-center space-x-4", children: (0, import_jsx_runtime49.jsxs)("div", { className: `flex items-center space-x-2 ${state.isConnected ? "text-green-400" : "text-red-400"}`, children: [(0, import_jsx_runtime49.jsx)("div", { className: `w-2 h-2 rounded-full ${state.isConnected ? "bg-green-400" : "bg-red-400"}` }), (0, import_jsx_runtime49.jsx)("span", { className: "text-sm", children: state.isConnected ? "Connected" : "Disconnected" })] }) })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "flex-1 flex", children: [(0, import_jsx_runtime49.jsx)("div", { className: "flex-1 flex flex-col", children: (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 bg-black flex items-center justify-center", children: state.primaryWhepUrl && state.commentaryWhepUrl ? (0, import_jsx_runtime49.jsx)("div", { ref: videoContainerRef, className: "max-w-full max-h-full" }) : (0, import_jsx_runtime49.jsxs)("div", { className: "text-gray-500 text-center", children: [(0, import_jsx_runtime49.jsx)("div", { className: "text-6xl mb-4", children: "\u{1F4FA}" }), (0, import_jsx_runtime49.jsx)("div", { children: "Waiting for video preview..." }), state.primaryWhepUrl && !state.commentaryWhepUrl && (0, import_jsx_runtime49.jsx)("div", { className: "text-sm mt-2", children: "Primary stream ready, waiting for commentary..." }), !state.primaryWhepUrl && state.commentaryWhepUrl && (0, import_jsx_runtime49.jsx)("div", { className: "text-sm mt-2", children: "Commentary stream ready, waiting for primary..." })] }) }) }), (0, import_jsx_runtime49.jsxs)("div", { className: "w-80 bg-gray-800 border-l border-gray-700 flex flex-col", children: [(0, import_jsx_runtime49.jsxs)("div", { className: "p-4 border-b border-gray-700", children: [(0, import_jsx_runtime49.jsx)("h3", { className: "text-lg font-medium mb-4", children: "Commentary Sync Control" }), (0, import_jsx_runtime49.jsxs)("div", { className: "mb-4 p-3 bg-gray-700 rounded-lg text-center", children: [(0, import_jsx_runtime49.jsx)("div", { className: "text-sm text-gray-300", children: "Current Offset" }), (0, import_jsx_runtime49.jsxs)("div", { className: "text-2xl font-mono", children: [state.currentSyncMs, "ms"] })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "mb-4", children: [(0, import_jsx_runtime49.jsx)("div", { className: "text-sm text-gray-300 mb-2", children: "Fine Adjustment (\xB1200ms)" }), (0, import_jsx_runtime49.jsxs)("div", { className: "flex space-x-2", children: [(0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(-200), className: "flex-1 px-3 py-2 bg-red-600 hover:bg-red-700 rounded text-sm font-medium", children: "-200ms" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(200), className: "flex-1 px-3 py-2 bg-green-600 hover:bg-green-700 rounded text-sm font-medium", children: "+200ms" })] })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "mb-4", children: [(0, import_jsx_runtime49.jsx)("div", { className: "text-sm text-gray-300 mb-2", children: "Coarse Adjustment" }), (0, import_jsx_runtime49.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [(0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(-1e3), className: "px-3 py-2 bg-red-700 hover:bg-red-800 rounded text-sm", children: "-1000ms" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(1e3), className: "px-3 py-2 bg-green-700 hover:bg-green-800 rounded text-sm", children: "+1000ms" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(-500), className: "px-3 py-2 bg-red-600 hover:bg-red-700 rounded text-sm", children: "-500ms" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => handleSyncAdjust(500), className: "px-3 py-2 bg-green-600 hover:bg-green-700 rounded text-sm", children: "+500ms" })] })] }), (0, import_jsx_runtime49.jsxs)("button", { onClick: handleResetSync, className: "w-full px-3 py-2 bg-blue-600 hover:bg-blue-700 rounded text-sm font-medium", children: ["Reset to Initial (", config.initialSyncMs, "ms)"] })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "p-4 flex-1", children: [(0, import_jsx_runtime49.jsx)("h3", { className: "text-lg font-medium mb-4", children: "Audio Monitor Controls" }), !audioStarted && isReady && (0, import_jsx_runtime49.jsxs)("div", { className: "mb-6 p-4 bg-yellow-900 border border-yellow-600 rounded-lg", children: [(0, import_jsx_runtime49.jsx)("div", { className: "text-sm text-yellow-200 mb-2", children: "Click to enable commentary audio (required by browser policy):" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => void handleStartAudio(), className: "w-full px-3 py-2 bg-yellow-600 hover:bg-yellow-700 rounded text-sm font-medium", children: "\u{1F50A} Start Commentary Audio" })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [(0, import_jsx_runtime49.jsx)("span", { className: "text-sm font-medium", children: "Primary Audio" }), (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center space-x-2", children: [isReady ? (0, import_jsx_runtime49.jsx)("span", { className: "text-xs text-green-400", children: "\u2713 Ready" }) : (0, import_jsx_runtime49.jsx)("span", { className: "text-xs text-yellow-400", children: "\u23F3 Loading" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => setPrimaryMuted(!primaryMuted), disabled: !isReady, className: `px-2 py-1 rounded text-xs ${!isReady ? "bg-gray-500 cursor-not-allowed" : primaryMuted ? "bg-red-600 hover:bg-red-700" : "bg-gray-600 hover:bg-gray-700"}`, children: primaryMuted ? "Unmute" : "Mute" })] })] }), (0, import_jsx_runtime49.jsx)("input", { type: "range", min: "0", max: "100", value: primaryVolume, onChange: (e) => setPrimaryVolume(parseInt(e.target.value)), className: "w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer", disabled: primaryMuted || !isReady }), (0, import_jsx_runtime49.jsxs)("div", { className: "text-xs text-gray-400 mt-1", children: [primaryVolume, "%"] })] }), (0, import_jsx_runtime49.jsxs)("div", { className: "mb-6", children: [(0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [(0, import_jsx_runtime49.jsx)("span", { className: "text-sm font-medium", children: "Commentary Audio" }), (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center space-x-2", children: [isReady ? (0, import_jsx_runtime49.jsx)("span", { className: "text-xs text-green-400", children: "\u2713 Ready" }) : (0, import_jsx_runtime49.jsx)("span", { className: "text-xs text-yellow-400", children: "\u23F3 Loading" }), (0, import_jsx_runtime49.jsx)("button", { onClick: () => setCommentaryMuted(!commentaryMuted), disabled: !isReady, className: `px-2 py-1 rounded text-xs ${!isReady ? "bg-gray-500 cursor-not-allowed" : commentaryMuted ? "bg-red-600 hover:bg-red-700" : "bg-gray-600 hover:bg-gray-700"}`, children: commentaryMuted ? "Unmute" : "Mute" })] })] }), (0, import_jsx_runtime49.jsx)("input", { type: "range", min: "0", max: "100", value: commentaryVolume, onChange: (e) => setCommentaryVolume(parseInt(e.target.value)), className: "w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer", disabled: commentaryMuted || !isReady }), (0, import_jsx_runtime49.jsxs)("div", { className: "text-xs text-gray-400 mt-1", children: [commentaryVolume, "%"] })] }), (0, import_jsx_runtime49.jsx)("div", { className: "mt-auto pt-4 border-t border-gray-700", children: (0, import_jsx_runtime49.jsxs)("div", { className: "text-xs text-gray-400 space-y-1", children: [(0, import_jsx_runtime49.jsxs)("div", { children: ["Primary Delay: ", config.delayMs, "ms"] }), (0, import_jsx_runtime49.jsxs)("div", { children: ["Primary WHEP: ", state.primaryWhepUrl ? "\u2713 Available" : "\u2717 Not ready"] }), (0, import_jsx_runtime49.jsxs)("div", { children: ["Commentary WHEP: ", state.commentaryWhepUrl ? "\u2713 Available" : "\u2717 Not ready"] }), (0, import_jsx_runtime49.jsxs)("div", { children: ["Dual Streams: ", isReady ? "\u2713 Connected" : "\u23F3 Connecting"] }), (0, import_jsx_runtime49.jsxs)("div", { children: ["Audio Started: ", audioStarted ? "\u2713 Yes" : "\u2717 No"] }), isReady && (0, import_jsx_runtime49.jsx)("div", { className: "text-green-400", children: "\u2713 Dual WHEP ready" }), isReady && (0, import_jsx_runtime49.jsx)("div", { className: "text-xs text-gray-500 mt-1", children: "Check browser console for audio debug logs" })] }) })] })] })] })] });
95126
95277
  }
95127
95278
 
95128
95279
  // build/processor.syncExternalAudio/info.js
95129
- function info_default36(R) {
95280
+ function info_default37(R) {
95130
95281
  const { defineComponent, validation: { Z } } = R;
95131
95282
  return defineComponent({
95132
95283
  identifier: "processor.syncExternalAudio",
@@ -95231,14 +95382,14 @@ function info_default36(R) {
95231
95382
  }
95232
95383
  },
95233
95384
  fullscreen: SyncExternalAudioFullscreenView,
95234
- inline: inline_view_default18
95385
+ inline: inline_view_default19
95235
95386
  }
95236
95387
  });
95237
95388
  }
95238
95389
 
95239
95390
  // build/processor.videoDecoder/info.js
95240
95391
  var import_FaFileVideo = __toESM(require_FaFileVideo());
95241
- function info_default37({ defineComponent }) {
95392
+ function info_default38({ defineComponent }) {
95242
95393
  return defineComponent({
95243
95394
  identifier: "processor.videoDecoder",
95244
95395
  category: "processor",
@@ -95291,7 +95442,7 @@ var import_config9 = __toESM(require_config());
95291
95442
  var import_util10 = __toESM(require_util());
95292
95443
 
95293
95444
  // build/processor.webRtcDuplex/fullscreen.js
95294
- var import_jsx_runtime49 = __toESM(require_jsx_runtime());
95445
+ var import_jsx_runtime50 = __toESM(require_jsx_runtime());
95295
95446
  var import_react16 = __toESM(require_react());
95296
95447
  var import_webrtc_client2 = __toESM(require_webrtc_client());
95297
95448
  var DuplexWhepClient = class extends NorskWhepClient {
@@ -95364,11 +95515,11 @@ function FullscreenView2({ state, config }) {
95364
95515
  }
95365
95516
  }
95366
95517
  }, [state.publishUrl, state.outputUrl, container, button, client, sender, config, state.videoAvailable]);
95367
- return (0, import_jsx_runtime49.jsxs)("div", { children: [(0, import_jsx_runtime49.jsx)("div", { id: "buttons", children: (0, import_jsx_runtime49.jsx)("button", { ref: button, type: "button", className: "text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800", onClick: () => void go(), id: "go", children: "Send/Receive" }) }), (0, import_jsx_runtime49.jsx)("div", { id: "error" }), (0, import_jsx_runtime49.jsx)("div", { id: "container", ref: container, className: "p-4 absolute h-full w-full" })] });
95518
+ return (0, import_jsx_runtime50.jsxs)("div", { children: [(0, import_jsx_runtime50.jsx)("div", { id: "buttons", children: (0, import_jsx_runtime50.jsx)("button", { ref: button, type: "button", className: "text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800", onClick: () => void go(), id: "go", children: "Send/Receive" }) }), (0, import_jsx_runtime50.jsx)("div", { id: "error" }), (0, import_jsx_runtime50.jsx)("div", { id: "container", ref: container, className: "p-4 absolute h-full w-full" })] });
95368
95519
  }
95369
95520
 
95370
95521
  // build/processor.webRtcDuplex/info.js
95371
- function info_default38(R) {
95522
+ function info_default39(R) {
95372
95523
  const { defineComponent } = R;
95373
95524
  return defineComponent({
95374
95525
  identifier: "processor.webrtcDuplex",
@@ -95447,7 +95598,7 @@ function info_default38(R) {
95447
95598
 
95448
95599
  // build/processor.zoomTo/info.js
95449
95600
  var import_config10 = __toESM(require_config());
95450
- function info_default39({ defineComponent, validation: { Z } }) {
95601
+ function info_default40({ defineComponent, validation: { Z } }) {
95451
95602
  return defineComponent({
95452
95603
  identifier: "processor.zoomTo",
95453
95604
  name: "Zoom To",
@@ -95524,7 +95675,7 @@ function info_default39({ defineComponent, validation: { Z } }) {
95524
95675
  inputVideoAspectRatio: ev.inputVideoAspectRatio
95525
95676
  };
95526
95677
  default:
95527
- assertUnreachable26(evType);
95678
+ assertUnreachable27(evType);
95528
95679
  }
95529
95680
  }
95530
95681
  },
@@ -95613,12 +95764,12 @@ function info_default39({ defineComponent, validation: { Z } }) {
95613
95764
  }
95614
95765
  });
95615
95766
  }
95616
- function assertUnreachable26(_) {
95767
+ function assertUnreachable27(_) {
95617
95768
  throw new Error("Didn't expect to get here");
95618
95769
  }
95619
95770
 
95620
95771
  // build/util.stats.latency/inline-view.js
95621
- var import_jsx_runtime50 = __toESM(require_jsx_runtime());
95772
+ var import_jsx_runtime51 = __toESM(require_jsx_runtime());
95622
95773
  var import_react17 = __toESM(require_react());
95623
95774
 
95624
95775
  // ../../node_modules/chart.js/auto/auto.js
@@ -95626,7 +95777,7 @@ Chart.register(...registerables);
95626
95777
  var auto_default = Chart;
95627
95778
 
95628
95779
  // build/util.stats.latency/inline-view.js
95629
- function InlineView19({ state, config: _2 }) {
95780
+ function InlineView20({ state, config: _2 }) {
95630
95781
  const chartContainer = (0, import_react17.useRef)(null);
95631
95782
  const [chartControl, setChartControl] = (0, import_react17.useState)(void 0);
95632
95783
  function makeDataSet(key, color2, values) {
@@ -95688,19 +95839,19 @@ function InlineView19({ state, config: _2 }) {
95688
95839
  return;
95689
95840
  chartControl.data = makeData(state);
95690
95841
  }, [chartControl, makeData, state]);
95691
- return (0, import_jsx_runtime50.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime50.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
95842
+ return (0, import_jsx_runtime51.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime51.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
95692
95843
  }
95693
- var inline_view_default19 = InlineView19;
95844
+ var inline_view_default20 = InlineView20;
95694
95845
 
95695
95846
  // build/util.stats.latency/source-node-selection.js
95696
- var import_jsx_runtime51 = __toESM(require_jsx_runtime());
95847
+ var import_jsx_runtime52 = __toESM(require_jsx_runtime());
95697
95848
  function SourceNodeSelection(props) {
95698
- return (0, import_jsx_runtime51.jsx)("div", { children: (0, import_jsx_runtime51.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime51.jsx)("option", { value: "", children: "---" }, "empty"), Object.values(props.latestDocument.components).map((o, i) => {
95849
+ return (0, import_jsx_runtime52.jsx)("div", { children: (0, import_jsx_runtime52.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime52.jsx)("option", { value: "", children: "---" }, "empty"), Object.values(props.latestDocument.components).map((o, i) => {
95699
95850
  if (o.id == props.id)
95700
- return (0, import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment, {});
95851
+ return (0, import_jsx_runtime52.jsx)(import_jsx_runtime52.Fragment, {});
95701
95852
  if (o.info.category === "output")
95702
95853
  return;
95703
- return (0, import_jsx_runtime51.jsx)("option", { value: o.id, children: o.config.displayName }, i);
95854
+ return (0, import_jsx_runtime52.jsx)("option", { value: o.id, children: o.config.displayName }, i);
95704
95855
  })] }) });
95705
95856
  function myOnChange(e) {
95706
95857
  props.onChanged(e.target.value);
@@ -95710,7 +95861,7 @@ var source_node_selection_default = SourceNodeSelection;
95710
95861
 
95711
95862
  // build/util.stats.latency/info.js
95712
95863
  var import_FaClock = __toESM(require_FaClock());
95713
- function info_default40(R) {
95864
+ function info_default41(R) {
95714
95865
  const { defineComponent } = R;
95715
95866
  return defineComponent({
95716
95867
  identifier: "util.stats.latency",
@@ -95740,11 +95891,11 @@ function info_default40(R) {
95740
95891
  break;
95741
95892
  }
95742
95893
  default:
95743
- assertUnreachable27(evType);
95894
+ assertUnreachable28(evType);
95744
95895
  }
95745
95896
  return { ...state };
95746
95897
  },
95747
- inline: inline_view_default19
95898
+ inline: inline_view_default20
95748
95899
  },
95749
95900
  configForm: {
95750
95901
  form: {
@@ -95795,7 +95946,7 @@ function info_default40(R) {
95795
95946
  }
95796
95947
  });
95797
95948
  }
95798
- function assertUnreachable27(_) {
95949
+ function assertUnreachable28(_) {
95799
95950
  throw new Error("Didn't expect to get here");
95800
95951
  }
95801
95952
 
@@ -95824,11 +95975,11 @@ AllComponents.push((r) => info_default8(r));
95824
95975
  AllComponents.push((r) => info_default9(r));
95825
95976
  AllComponents.push((r) => info_default10(r));
95826
95977
  AllComponents.push((r) => info_default11(r));
95827
- AllComponents.push((r) => info_default13(r));
95978
+ AllComponents.push((r) => info_default12(r));
95828
95979
  AllComponents.push((r) => info_default14(r));
95829
95980
  AllComponents.push((r) => info_default15(r));
95830
- AllComponents.push((r) => info_default12(r));
95831
95981
  AllComponents.push((r) => info_default16(r));
95982
+ AllComponents.push((r) => info_default13(r));
95832
95983
  AllComponents.push((r) => info_default17(r));
95833
95984
  AllComponents.push((r) => info_default18(r));
95834
95985
  AllComponents.push((r) => info_default19(r));
@@ -95853,6 +96004,7 @@ AllComponents.push((r) => info_default37(r));
95853
96004
  AllComponents.push((r) => info_default38(r));
95854
96005
  AllComponents.push((r) => info_default39(r));
95855
96006
  AllComponents.push((r) => info_default40(r));
96007
+ AllComponents.push((r) => info_default41(r));
95856
96008
  export {
95857
96009
  getNodeInfo as default
95858
96010
  };