@arcanewizards/timecode-toolbox 0.1.0 → 0.1.2

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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -0
  3. package/dist/components/frontend/index.js +1035 -442
  4. package/dist/components/frontend/index.mjs +884 -291
  5. package/dist/entrypoint.css +163 -53
  6. package/dist/entrypoint.js +1769 -788
  7. package/dist/entrypoint.js.map +4 -4
  8. package/dist/frontend.js +1769 -788
  9. package/dist/frontend.js.map +4 -4
  10. package/dist/index.d.mts +3 -1
  11. package/dist/index.d.ts +3 -1
  12. package/dist/index.js +346 -76
  13. package/dist/index.mjs +348 -69
  14. package/dist/start.d.mts +1 -2
  15. package/dist/start.d.ts +1 -2
  16. package/dist/start.js +349 -77
  17. package/dist/start.mjs +351 -70
  18. package/package.json +12 -6
  19. package/.turbo/turbo-build.log +0 -58
  20. package/.turbo/turbo-lint.log +0 -4
  21. package/CHANGELOG.md +0 -40
  22. package/eslint.config.mjs +0 -49
  23. package/src/app.tsx +0 -147
  24. package/src/components/backend/index.ts +0 -6
  25. package/src/components/backend/toolbox-root.ts +0 -119
  26. package/src/components/frontend/constants.ts +0 -81
  27. package/src/components/frontend/entrypoint.ts +0 -12
  28. package/src/components/frontend/frontend.css +0 -108
  29. package/src/components/frontend/index.tsx +0 -46
  30. package/src/components/frontend/toolbox/content.tsx +0 -45
  31. package/src/components/frontend/toolbox/context.tsx +0 -63
  32. package/src/components/frontend/toolbox/core/size-aware-div.tsx +0 -51
  33. package/src/components/frontend/toolbox/core/timecode-display.tsx +0 -592
  34. package/src/components/frontend/toolbox/generators.tsx +0 -318
  35. package/src/components/frontend/toolbox/inputs.tsx +0 -484
  36. package/src/components/frontend/toolbox/outputs.tsx +0 -581
  37. package/src/components/frontend/toolbox/preferences.ts +0 -25
  38. package/src/components/frontend/toolbox/root.tsx +0 -335
  39. package/src/components/frontend/toolbox/settings.tsx +0 -54
  40. package/src/components/frontend/toolbox/types.ts +0 -28
  41. package/src/components/frontend/toolbox/util.tsx +0 -61
  42. package/src/components/proto.ts +0 -420
  43. package/src/config.ts +0 -7
  44. package/src/generators/clock.tsx +0 -206
  45. package/src/generators/index.tsx +0 -15
  46. package/src/index.ts +0 -38
  47. package/src/inputs/artnet.tsx +0 -305
  48. package/src/inputs/index.tsx +0 -13
  49. package/src/inputs/tcnet.tsx +0 -272
  50. package/src/outputs/artnet.tsx +0 -170
  51. package/src/outputs/index.tsx +0 -11
  52. package/src/start.ts +0 -47
  53. package/src/tree.ts +0 -133
  54. package/src/types.ts +0 -12
  55. package/src/urls.ts +0 -49
  56. package/src/util.ts +0 -82
  57. package/tailwind.config.cjs +0 -7
  58. package/tsconfig.json +0 -10
  59. package/tsup.config.ts +0 -10
@@ -8020,7 +8020,7 @@
8020
8020
  function mountLayoutEffect(create, deps) {
8021
8021
  var fiberFlags = 4194308;
8022
8022
  (currentlyRenderingFiber.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 134217728);
8023
- return mountEffectImpl(fiberFlags, Layout, create, deps);
8023
+ return mountEffectImpl(fiberFlags, Layout2, create, deps);
8024
8024
  }
8025
8025
  function imperativeHandleEffect(create, ref) {
8026
8026
  if ("function" === typeof ref) {
@@ -8048,7 +8048,7 @@
8048
8048
  (currentlyRenderingFiber.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 134217728);
8049
8049
  mountEffectImpl(
8050
8050
  fiberFlags,
8051
- Layout,
8051
+ Layout2,
8052
8052
  imperativeHandleEffect.bind(null, create, ref),
8053
8053
  deps
8054
8054
  );
@@ -8061,7 +8061,7 @@
8061
8061
  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
8062
8062
  updateEffectImpl(
8063
8063
  4,
8064
- Layout,
8064
+ Layout2,
8065
8065
  imperativeHandleEffect.bind(null, create, ref),
8066
8066
  deps
8067
8067
  );
@@ -10975,7 +10975,7 @@
10975
10975
  updateQueue
10976
10976
  ), (flags & Insertion) !== NoFlags && (isRunningInsertionEffect = false), void 0 !== lastEffect && "function" !== typeof lastEffect)) {
10977
10977
  var hookName = void 0;
10978
- hookName = 0 !== (updateQueue.tag & Layout) ? "useLayoutEffect" : 0 !== (updateQueue.tag & Insertion) ? "useInsertionEffect" : "useEffect";
10978
+ hookName = 0 !== (updateQueue.tag & Layout2) ? "useLayoutEffect" : 0 !== (updateQueue.tag & Insertion) ? "useInsertionEffect" : "useEffect";
10979
10979
  var addendum = void 0;
10980
10980
  addendum = null === lastEffect ? " You returned null. If your effect does not require clean up, return undefined (or nothing)." : "function" === typeof lastEffect.then ? "\n\nIt looks like you wrote " + hookName + "(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:\n\n" + hookName + "(() => {\n async function fetchData() {\n // You can await here\n const response = await MyAPI.getData(someId);\n // ...\n }\n fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching" : " You returned: " + lastEffect;
10981
10981
  runWithFiberInDEV(
@@ -11462,7 +11462,7 @@
11462
11462
  case 11:
11463
11463
  case 15:
11464
11464
  recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
11465
- flags & 4 && commitHookLayoutEffects(finishedWork, Layout | HasEffect);
11465
+ flags & 4 && commitHookLayoutEffects(finishedWork, Layout2 | HasEffect);
11466
11466
  break;
11467
11467
  case 1:
11468
11468
  recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
@@ -11793,7 +11793,7 @@
11793
11793
  offscreenSubtreeWasHidden || commitHookLayoutUnmountEffects(
11794
11794
  deletedFiber,
11795
11795
  nearestMountedAncestor,
11796
- Layout
11796
+ Layout2
11797
11797
  );
11798
11798
  recursivelyTraverseDeletionEffects(
11799
11799
  finishedRoot,
@@ -11972,7 +11972,7 @@
11972
11972
  ), commitHookEffectListMount(Insertion | HasEffect, finishedWork), commitHookLayoutUnmountEffects(
11973
11973
  finishedWork,
11974
11974
  finishedWork.return,
11975
- Layout | HasEffect
11975
+ Layout2 | HasEffect
11976
11976
  ));
11977
11977
  break;
11978
11978
  case 1:
@@ -12362,7 +12362,7 @@
12362
12362
  commitHookLayoutUnmountEffects(
12363
12363
  finishedWork,
12364
12364
  finishedWork.return,
12365
- Layout
12365
+ Layout2
12366
12366
  );
12367
12367
  recursivelyTraverseDisappearLayoutEffects(finishedWork);
12368
12368
  break;
@@ -12423,7 +12423,7 @@
12423
12423
  finishedWork,
12424
12424
  includeWorkInProgressEffects
12425
12425
  );
12426
- commitHookLayoutEffects(finishedWork, Layout);
12426
+ commitHookLayoutEffects(finishedWork, Layout2);
12427
12427
  break;
12428
12428
  case 1:
12429
12429
  recursivelyTraverseReappearLayoutEffects(
@@ -20188,7 +20188,7 @@
20188
20188
  var reconcileChildFibers = createChildReconciler(true), mountChildFibers = createChildReconciler(false), UpdateState = 0, ReplaceState = 1, ForceUpdate = 2, CaptureUpdate = 3, hasForceUpdate = false;
20189
20189
  var didWarnUpdateInsideUpdate = false;
20190
20190
  var currentlyProcessingQueue = null;
20191
- var didReadFromEntangledAsyncAction = false, currentTreeHiddenStackCursor = createCursor(null), prevEntangledRenderLanesCursor = createCursor(0), suspenseHandlerStackCursor = createCursor(null), shellBoundary = null, SubtreeSuspenseContextMask = 1, ForceSuspenseFallback = 2, suspenseStackCursor = createCursor(0), NoFlags = 0, HasEffect = 1, Insertion = 2, Layout = 4, Passive = 8, didWarnUncachedGetSnapshot;
20191
+ var didReadFromEntangledAsyncAction = false, currentTreeHiddenStackCursor = createCursor(null), prevEntangledRenderLanesCursor = createCursor(0), suspenseHandlerStackCursor = createCursor(null), shellBoundary = null, SubtreeSuspenseContextMask = 1, ForceSuspenseFallback = 2, suspenseStackCursor = createCursor(0), NoFlags = 0, HasEffect = 1, Insertion = 2, Layout2 = 4, Passive = 8, didWarnUncachedGetSnapshot;
20192
20192
  var didWarnAboutMismatchedHooksForComponent = /* @__PURE__ */ new Set();
20193
20193
  var didWarnAboutUseWrappedInTryCatch = /* @__PURE__ */ new Set();
20194
20194
  var didWarnAboutAsyncClientComponent = /* @__PURE__ */ new Set();
@@ -20519,7 +20519,7 @@
20519
20519
  useLayoutEffect: function(create, deps) {
20520
20520
  currentHookNameInDev = "useLayoutEffect";
20521
20521
  updateHookTypesDev();
20522
- return updateEffectImpl(4, Layout, create, deps);
20522
+ return updateEffectImpl(4, Layout2, create, deps);
20523
20523
  },
20524
20524
  useMemo: function(create, deps) {
20525
20525
  currentHookNameInDev = "useMemo";
@@ -20649,7 +20649,7 @@
20649
20649
  useLayoutEffect: function(create, deps) {
20650
20650
  currentHookNameInDev = "useLayoutEffect";
20651
20651
  updateHookTypesDev();
20652
- return updateEffectImpl(4, Layout, create, deps);
20652
+ return updateEffectImpl(4, Layout2, create, deps);
20653
20653
  },
20654
20654
  useMemo: function(create, deps) {
20655
20655
  currentHookNameInDev = "useMemo";
@@ -20944,7 +20944,7 @@
20944
20944
  currentHookNameInDev = "useLayoutEffect";
20945
20945
  warnInvalidHookAccess();
20946
20946
  updateHookTypesDev();
20947
- return updateEffectImpl(4, Layout, create, deps);
20947
+ return updateEffectImpl(4, Layout2, create, deps);
20948
20948
  },
20949
20949
  useMemo: function(create, deps) {
20950
20950
  currentHookNameInDev = "useMemo";
@@ -21099,7 +21099,7 @@
21099
21099
  currentHookNameInDev = "useLayoutEffect";
21100
21100
  warnInvalidHookAccess();
21101
21101
  updateHookTypesDev();
21102
- return updateEffectImpl(4, Layout, create, deps);
21102
+ return updateEffectImpl(4, Layout2, create, deps);
21103
21103
  },
21104
21104
  useMemo: function(create, deps) {
21105
21105
  currentHookNameInDev = "useMemo";
@@ -25238,8 +25238,8 @@
25238
25238
  return t4;
25239
25239
  };
25240
25240
 
25241
- // ../../packages/sigil/dist/chunk-XAK7WC3D.js
25242
- var import_compiler_runtime5 = __toESM(require_compiler_runtime(), 1);
25241
+ // ../../packages/sigil/dist/chunk-E3VUC3Q4.js
25242
+ var import_compiler_runtime4 = __toESM(require_compiler_runtime(), 1);
25243
25243
 
25244
25244
  // ../../packages/sigil/dist/chunk-BIY5HAXP.js
25245
25245
  var import_compiler_runtime2 = __toESM(require_compiler_runtime(), 1);
@@ -31306,10 +31306,6 @@
31306
31306
  return t1;
31307
31307
  };
31308
31308
 
31309
- // ../../packages/sigil/dist/chunk-H4U4Z4GM.js
31310
- var import_compiler_runtime4 = __toESM(require_compiler_runtime(), 1);
31311
- var import_react11 = __toESM(require_react(), 1);
31312
-
31313
31309
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js
31314
31310
  var external_exports = {};
31315
31311
  __export(external_exports, {
@@ -35354,7 +35350,7 @@
35354
35350
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js
35355
35351
  var zod_default = external_exports;
35356
35352
 
35357
- // ../../packages/sigil/dist/chunk-H4U4Z4GM.js
35353
+ // ../../packages/sigil/dist/chunk-WYUGJOEB.js
35358
35354
  var SIGIL_COLOR = external_exports.enum(["purple", "blue", "teal", "red", "green", "yellow", "brown", "orange", "gray"]);
35359
35355
  var sigilColorUsage = (color) => ({
35360
35356
  text: `var(--sigil-usage-${color}-text)`,
@@ -35385,38 +35381,13 @@
35385
35381
  [`--${prefix}-gradient-dark`]: usage.gradientDark
35386
35382
  });
35387
35383
  var cssHintColorVariables = (color) => cssSigilColorUsageVariables(`sigil-usage-hint`, sigilColorUsage(color));
35388
- var useRootHintVariables = (color) => {
35389
- const $ = (0, import_compiler_runtime4.c)(3);
35390
- let t0;
35391
- let t1;
35392
- if ($[0] !== color) {
35393
- t0 = () => {
35394
- const root = document.querySelector(".arcane-theme-root");
35395
- if (!root) {
35396
- return;
35397
- }
35398
- Object.entries(cssHintColorVariables(color)).forEach((t2) => {
35399
- const [key, value] = t2;
35400
- root.style.setProperty(key, value);
35401
- });
35402
- };
35403
- t1 = [color];
35404
- $[0] = color;
35405
- $[1] = t0;
35406
- $[2] = t1;
35407
- } else {
35408
- t0 = $[1];
35409
- t1 = $[2];
35410
- }
35411
- (0, import_react11.useEffect)(t0, t1);
35412
- };
35413
35384
  var cssVariables = (variables) => variables;
35414
35385
  function cnd(condition, truthyClassName, falseyClassName) {
35415
35386
  return condition ? truthyClassName : falseyClassName;
35416
35387
  }
35417
35388
 
35418
- // ../../packages/sigil/dist/chunk-XAK7WC3D.js
35419
- var import_react12 = __toESM(require_react(), 1);
35389
+ // ../../packages/sigil/dist/chunk-E3VUC3Q4.js
35390
+ var import_react11 = __toESM(require_react(), 1);
35420
35391
 
35421
35392
  // ../../node_modules/.pnpm/@arcanejs+toolkit-frontend@0.11.0/node_modules/@arcanejs/toolkit-frontend/dist/chunk-DK4BAXVE.mjs
35422
35393
  var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
@@ -35454,16 +35425,16 @@
35454
35425
  `;
35455
35426
  var TRANSPARENCY_SVG_URI = `data:image/svg+xml,${encodeURIComponent(TRANSPARENCY_SVG)}`;
35456
35427
 
35457
- // ../../packages/sigil/dist/chunk-XAK7WC3D.js
35458
- var import_react13 = __toESM(require_react(), 1);
35428
+ // ../../packages/sigil/dist/chunk-E3VUC3Q4.js
35429
+ var import_react12 = __toESM(require_react(), 1);
35459
35430
  var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
35460
- var import_react14 = __toESM(require_react(), 1);
35431
+ var import_react13 = __toESM(require_react(), 1);
35461
35432
  var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
35462
- var import_react15 = __toESM(require_react(), 1);
35433
+ var import_react14 = __toESM(require_react(), 1);
35463
35434
  var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
35464
- var import_react16 = __toESM(require_react(), 1);
35435
+ var import_react15 = __toESM(require_react(), 1);
35465
35436
  var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
35466
- var import_react17 = __toESM(require_react(), 1);
35437
+ var import_react16 = __toESM(require_react(), 1);
35467
35438
  var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
35468
35439
  var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
35469
35440
  var clsControlPosition = (position) => {
@@ -35514,9 +35485,10 @@
35514
35485
  active,
35515
35486
  touching,
35516
35487
  position,
35517
- className
35518
- }) => cn(`sigil-control-button`, cnd(variant === "border", `sigil-control-button-variant-border`), cnd(variant === "large", `sigil-control-button-variant-large`), cnd(variant === "properties", `sigil-control-button-variant-properties`), cnd(variant === "table-row", `sigil-control-button-variant-table-row`), cnd(variant === "toolbar", `sigil-control-button-variant-toolbar`), cnd(variant === "titlebar", `sigil-control-button-variant-titlebar`), cnd(touching, `sigil-control-button-touching`), cnd(active, `sigil-control-button-active`), cnd(touching && active, `sigil-control-button-active-touching`), clsControlPosition(position), className);
35519
- var ControlButtonFrame = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35488
+ className,
35489
+ primary
35490
+ }) => cn(`sigil-control-button`, cnd(variant === "border", `sigil-control-button-variant-border`), cnd(variant === "large", `sigil-control-button-variant-large`), cnd(variant === "properties", `sigil-control-button-variant-properties`), cnd(variant === "table-row", `sigil-control-button-variant-table-row`), cnd(variant === "toolbar", `sigil-control-button-variant-toolbar`), cnd(variant === "titlebar", `sigil-control-button-variant-titlebar`), cnd(touching, `sigil-control-button-touching`), cnd(active, `sigil-control-button-active`), cnd(touching && active, `sigil-control-button-active-touching`), cnd(primary, `sigil-control-button-primary`), clsControlPosition(position), className);
35491
+ var ControlButtonFrame = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35520
35492
  children,
35521
35493
  className,
35522
35494
  type,
@@ -35528,6 +35500,7 @@
35528
35500
  title,
35529
35501
  tooltipSide,
35530
35502
  position,
35503
+ primary,
35531
35504
  ...props
35532
35505
  }, ref) => {
35533
35506
  const btn = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", {
@@ -35540,6 +35513,7 @@
35540
35513
  active,
35541
35514
  touching,
35542
35515
  position,
35516
+ primary,
35543
35517
  className
35544
35518
  }),
35545
35519
  children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", {
@@ -35557,7 +35531,7 @@
35557
35531
  });
35558
35532
  });
35559
35533
  ControlButtonFrame.displayName = "ControlButtonFrame";
35560
- var ControlButton = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35534
+ var ControlButton = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35561
35535
  onClick,
35562
35536
  disabled,
35563
35537
  ...props
@@ -35575,7 +35549,7 @@
35575
35549
  });
35576
35550
  });
35577
35551
  ControlButton.displayName = "ControlButton";
35578
- var CheckboxControlButton = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35552
+ var CheckboxControlButton = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35579
35553
  active,
35580
35554
  label,
35581
35555
  ...props
@@ -35588,7 +35562,7 @@
35588
35562
  }), label]
35589
35563
  }));
35590
35564
  CheckboxControlButton.displayName = "CheckboxControlButton";
35591
- var LongPressableControlButton = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35565
+ var LongPressableControlButton = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35592
35566
  active,
35593
35567
  disabled,
35594
35568
  onPress,
@@ -35611,7 +35585,7 @@
35611
35585
  });
35612
35586
  });
35613
35587
  LongPressableControlButton.displayName = "LongPressableControlButton";
35614
- var ControlButtonGroup = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35588
+ var ControlButtonGroup = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35615
35589
  children,
35616
35590
  className,
35617
35591
  position,
@@ -35626,7 +35600,7 @@
35626
35600
  children
35627
35601
  }));
35628
35602
  ControlButtonGroup.displayName = "ControlButtonGroup";
35629
- var ControlParagraph = /* @__PURE__ */ (0, import_react14.forwardRef)(({
35603
+ var ControlParagraph = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35630
35604
  className,
35631
35605
  mode,
35632
35606
  position = "all",
@@ -35647,7 +35621,7 @@
35647
35621
  `), className)
35648
35622
  }));
35649
35623
  ControlParagraph.displayName = "ControlParagraph";
35650
- var ControlLabel = /* @__PURE__ */ (0, import_react14.forwardRef)(({
35624
+ var ControlLabel = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35651
35625
  className,
35652
35626
  disabled,
35653
35627
  nonMicro,
@@ -35662,7 +35636,7 @@
35662
35636
  });
35663
35637
  });
35664
35638
  ControlLabel.displayName = "ControlLabel";
35665
- var ControlDetails = /* @__PURE__ */ (0, import_react14.forwardRef)(({
35639
+ var ControlDetails = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35666
35640
  align,
35667
35641
  className,
35668
35642
  position = "all",
@@ -35673,7 +35647,7 @@
35673
35647
  className: cn("flex items-center px-0.3 text-sigil-foreground-muted", clsControlPosition(position), cnd(align === "start", "justify-start"), cnd(align === "center", "justify-center"), cnd(align === "end", "justify-end"), className)
35674
35648
  }));
35675
35649
  ControlDetails.displayName = "ControlDetails";
35676
- var InputSpanningTitle = /* @__PURE__ */ (0, import_react14.forwardRef)(({
35650
+ var InputSpanningTitle = /* @__PURE__ */ (0, import_react13.forwardRef)(({
35677
35651
  className,
35678
35652
  position = "row",
35679
35653
  ...props
@@ -35683,7 +35657,7 @@
35683
35657
  className: cn("truncate p-0.6 text-center text-[0.8rem] font-bold", clsControlPosition(position), className)
35684
35658
  }));
35685
35659
  InputSpanningTitle.displayName = "InputSpanningTitle";
35686
- var ControlDialogButtons = /* @__PURE__ */ (0, import_react15.forwardRef)(({
35660
+ var ControlDialogButtons = /* @__PURE__ */ (0, import_react14.forwardRef)(({
35687
35661
  children,
35688
35662
  className,
35689
35663
  ...props
@@ -35712,29 +35686,29 @@
35712
35686
  inputRef: inputRefProp,
35713
35687
  ...props
35714
35688
  }) => {
35715
- const lastValue = (0, import_react16.useRef)(value);
35716
- const inputRef = (0, import_react16.useRef)(null);
35717
- (0, import_react16.useEffect)(() => {
35689
+ const lastValue = (0, import_react15.useRef)(value);
35690
+ const inputRef = (0, import_react15.useRef)(null);
35691
+ (0, import_react15.useEffect)(() => {
35718
35692
  if (inputRef.current && inputRef.current.value !== value) {
35719
35693
  inputRef.current.value = value;
35720
35694
  }
35721
35695
  lastValue.current = value;
35722
35696
  }, [value]);
35723
- const updateRef = (0, import_react16.useCallback)((instance) => {
35697
+ const updateRef = (0, import_react15.useCallback)((instance) => {
35724
35698
  inputRef.current = instance;
35725
35699
  if (inputRefProp) {
35726
35700
  inputRefProp.current = instance;
35727
35701
  }
35728
35702
  }, [inputRefProp]);
35729
35703
  const onBlurProp = props.onBlur;
35730
- const onBlur = (0, import_react16.useCallback)((e) => {
35704
+ const onBlur = (0, import_react15.useCallback)((e) => {
35731
35705
  if (e.currentTarget.value !== lastValue.current) {
35732
35706
  onChange(e.currentTarget.value, false);
35733
35707
  }
35734
35708
  onBlurProp?.(e);
35735
35709
  }, [onChange, onBlurProp]);
35736
35710
  const onKeyUpProp = props.onKeyUp;
35737
- const onKeyUp = (0, import_react16.useCallback)((e_0) => {
35711
+ const onKeyUp = (0, import_react15.useCallback)((e_0) => {
35738
35712
  if ((e_0.key === "Enter" || e_0.key.startsWith("Arrow")) && e_0.currentTarget.value !== lastValue.current) {
35739
35713
  onChange(e_0.currentTarget.value, true);
35740
35714
  }
@@ -35772,7 +35746,7 @@
35772
35746
  });
35773
35747
  var NULL_VALUE = "__null_value__";
35774
35748
  var ControlSelect = (t0) => {
35775
- const $ = (0, import_compiler_runtime5.c)(20);
35749
+ const $ = (0, import_compiler_runtime4.c)(20);
35776
35750
  const {
35777
35751
  options,
35778
35752
  value,
@@ -35983,7 +35957,7 @@
35983
35957
  });
35984
35958
  };
35985
35959
  var isDarkDialog = (variant) => variant === "dark" || variant === "dark-compact";
35986
- var DialogTitle = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35960
+ var DialogTitle = /* @__PURE__ */ (0, import_react11.forwardRef)(({
35987
35961
  className,
35988
35962
  variant = "light",
35989
35963
  ...props
@@ -35996,7 +35970,7 @@
35996
35970
  `, cnd(isDarkDialog(variant), "bg-sigil-bg-light", "bg-sigil-bg-dark"), className)
35997
35971
  }));
35998
35972
  DialogTitle.displayName = "DialogTitle";
35999
- var DialogButtons = /* @__PURE__ */ (0, import_react12.forwardRef)(({
35973
+ var DialogButtons = /* @__PURE__ */ (0, import_react11.forwardRef)(({
36000
35974
  className,
36001
35975
  ...props
36002
35976
  }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", {
@@ -36006,7 +35980,7 @@
36006
35980
  }));
36007
35981
  DialogButtons.displayName = "DialogButtons";
36008
35982
  var Dialog = (t0) => {
36009
- const $ = (0, import_compiler_runtime5.c)(19);
35983
+ const $ = (0, import_compiler_runtime4.c)(19);
36010
35984
  const {
36011
35985
  children,
36012
35986
  dialogClosed,
@@ -36016,7 +35990,7 @@
36016
35990
  } = t0;
36017
35991
  const closable = t1 === void 0 ? true : t1;
36018
35992
  const variant = t2 === void 0 ? "light" : t2;
36019
- const [dialogRef, setDialogRef] = (0, import_react12.useState)(null);
35993
+ const [dialogRef, setDialogRef] = (0, import_react11.useState)(null);
36020
35994
  let t3;
36021
35995
  let t4;
36022
35996
  if ($[0] !== dialogRef) {
@@ -36034,7 +36008,7 @@
36034
36008
  t3 = $[1];
36035
36009
  t4 = $[2];
36036
36010
  }
36037
- (0, import_react12.useEffect)(t3, t4);
36011
+ (0, import_react11.useEffect)(t3, t4);
36038
36012
  let t5;
36039
36013
  if ($[3] !== dialogRef) {
36040
36014
  t5 = () => dialogRef?.close();
@@ -36120,27 +36094,27 @@
36120
36094
  var isCoreComponent = (component) => component.namespace === "core";
36121
36095
 
36122
36096
  // ../../node_modules/.pnpm/@arcanejs+toolkit-frontend@0.11.0/node_modules/@arcanejs/toolkit-frontend/dist/components/index.mjs
36097
+ var import_react17 = __toESM(require_react(), 1);
36123
36098
  var import_react18 = __toESM(require_react(), 1);
36124
- var import_react19 = __toESM(require_react(), 1);
36125
36099
  var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
36100
+ var import_react19 = __toESM(require_react(), 1);
36126
36101
  var import_react20 = __toESM(require_react(), 1);
36127
- var import_react21 = __toESM(require_react(), 1);
36128
36102
  var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
36129
36103
  var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
36130
36104
  var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
36131
36105
  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
36132
- var import_react22 = __toESM(require_react(), 1);
36106
+ var import_react21 = __toESM(require_react(), 1);
36133
36107
  var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
36134
- var import_react23 = __toESM(require_react(), 1);
36108
+ var import_react22 = __toESM(require_react(), 1);
36135
36109
  var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
36136
- var import_react24 = __toESM(require_react(), 1);
36110
+ var import_react23 = __toESM(require_react(), 1);
36137
36111
  var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
36138
- var import_react25 = __toESM(require_react(), 1);
36112
+ var import_react24 = __toESM(require_react(), 1);
36139
36113
  var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
36140
- var import_react26 = __toESM(require_react(), 1);
36114
+ var import_react25 = __toESM(require_react(), 1);
36141
36115
  var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
36142
36116
  var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
36143
- var StageContext = (0, import_react19.createContext)(
36117
+ var StageContext = (0, import_react18.createContext)(
36144
36118
  new Proxy({}, {
36145
36119
  get: () => {
36146
36120
  throw new Error("Missing StageContext.Provider");
@@ -36148,8 +36122,8 @@
36148
36122
  })
36149
36123
  );
36150
36124
  var Button = (props) => {
36151
- const { call } = import_react18.default.useContext(StageContext);
36152
- const [localState, setLocalState] = import_react18.default.useState(null);
36125
+ const { call } = import_react17.default.useContext(StageContext);
36126
+ const [localState, setLocalState] = import_react17.default.useState(null);
36153
36127
  const state = localState ?? props.info.state;
36154
36128
  const { touching, handlers } = usePressable(async () => {
36155
36129
  try {
@@ -36220,9 +36194,9 @@
36220
36194
  return "dark";
36221
36195
  }
36222
36196
  }
36223
- var LastNestedColor = import_react21.default.createContext("dark");
36197
+ var LastNestedColor = import_react20.default.createContext("dark");
36224
36198
  var NestedContent = ({ className, children }) => {
36225
- const color = import_react21.default.useContext(LastNestedColor);
36199
+ const color = import_react20.default.useContext(LastNestedColor);
36226
36200
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
36227
36201
  "div",
36228
36202
  {
@@ -36238,7 +36212,7 @@
36238
36212
  );
36239
36213
  };
36240
36214
  NestedContent.displayName = "NestedContent";
36241
- var GroupStateContext = import_react20.default.createContext({
36215
+ var GroupStateContext = import_react19.default.createContext({
36242
36216
  isCollapsed: () => {
36243
36217
  throw new Error("missing GroupStateContext");
36244
36218
  },
@@ -36247,7 +36221,7 @@
36247
36221
  }
36248
36222
  });
36249
36223
  var GroupStateWrapper = ({ openByDefault, children }) => {
36250
- const [state, setState] = (0, import_react20.useState)({});
36224
+ const [state, setState] = (0, import_react19.useState)({});
36251
36225
  const isCollapsed = (key, defaultState) => {
36252
36226
  let match = state[key];
36253
36227
  if (!match) {
@@ -36268,9 +36242,9 @@
36268
36242
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(GroupStateContext.Provider, { value: { isCollapsed, toggleCollapsed }, children });
36269
36243
  };
36270
36244
  var Group2 = ({ className, info }) => {
36271
- const groupState = (0, import_react20.useContext)(GroupStateContext);
36272
- const { renderComponent, sendMessage } = (0, import_react20.useContext)(StageContext);
36273
- const [editingTitle, setEditingTitle] = (0, import_react20.useState)(false);
36245
+ const groupState = (0, import_react19.useContext)(GroupStateContext);
36246
+ const { renderComponent, sendMessage } = (0, import_react19.useContext)(StageContext);
36247
+ const [editingTitle, setEditingTitle] = (0, import_react19.useState)(false);
36274
36248
  const children = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
36275
36249
  "div",
36276
36250
  {
@@ -36461,16 +36435,16 @@
36461
36435
  return pageX - rect.left;
36462
36436
  };
36463
36437
  var SliderButton = ({ info, className }) => {
36464
- const { sendMessage } = import_react22.default.useContext(StageContext);
36465
- const [state, setState] = import_react22.default.useState({ state: "closed" });
36466
- const input = import_react22.default.useRef(null);
36438
+ const { sendMessage } = import_react21.default.useContext(StageContext);
36439
+ const [state, setState] = import_react21.default.useState({ state: "closed" });
36440
+ const input = import_react21.default.useRef(null);
36467
36441
  const displayValue = (value2) => {
36468
36442
  if (info.max === 1 && info.min === 0) {
36469
36443
  return `${Math.round(value2 * 100)}%`;
36470
36444
  }
36471
36445
  return NUMBER_FORMATTER.format(value2);
36472
36446
  };
36473
- const sendValue = (0, import_react22.useCallback)(
36447
+ const sendValue = (0, import_react21.useCallback)(
36474
36448
  (value2) => sendMessage?.({
36475
36449
  type: "component-message",
36476
36450
  namespace: "core",
@@ -36480,7 +36454,7 @@
36480
36454
  }),
36481
36455
  [sendMessage, info.key]
36482
36456
  );
36483
- const sanitizeValue = (0, import_react22.useCallback)(
36457
+ const sanitizeValue = (0, import_react21.useCallback)(
36484
36458
  (value2) => {
36485
36459
  const i = Math.round((value2 - info.min) / info.step);
36486
36460
  const v = i * info.step + info.min;
@@ -36488,13 +36462,13 @@
36488
36462
  },
36489
36463
  [info.min, info.max, info.step]
36490
36464
  );
36491
- const getNewValue = (0, import_react22.useCallback)(
36465
+ const getNewValue = (0, import_react21.useCallback)(
36492
36466
  (startValue, diff) => {
36493
36467
  return sanitizeValue((startValue || 0) + diff);
36494
36468
  },
36495
36469
  [sanitizeValue]
36496
36470
  );
36497
- const getCurrentInputValue = (0, import_react22.useCallback)(
36471
+ const getCurrentInputValue = (0, import_react21.useCallback)(
36498
36472
  (e) => {
36499
36473
  const float = parseFloat(e.currentTarget.value);
36500
36474
  return sanitizeValue(isNaN(float) ? info.value || 0 : float);
@@ -36682,9 +36656,9 @@
36682
36656
  );
36683
36657
  };
36684
36658
  var Switch = ({ className, info }) => {
36685
- const { sendMessage } = import_react23.default.useContext(StageContext);
36686
- const [touching, setTouching] = (0, import_react23.useState)(false);
36687
- const onClick = (0, import_react23.useMemo)(
36659
+ const { sendMessage } = import_react22.default.useContext(StageContext);
36660
+ const [touching, setTouching] = (0, import_react22.useState)(false);
36661
+ const onClick = (0, import_react22.useMemo)(
36688
36662
  () => () => {
36689
36663
  sendMessage?.({
36690
36664
  type: "component-message",
@@ -36695,14 +36669,14 @@
36695
36669
  },
36696
36670
  [sendMessage, info.key]
36697
36671
  );
36698
- const onTouchStart = (0, import_react23.useMemo)(
36672
+ const onTouchStart = (0, import_react22.useMemo)(
36699
36673
  () => (event) => {
36700
36674
  event.preventDefault();
36701
36675
  setTouching(true);
36702
36676
  },
36703
36677
  []
36704
36678
  );
36705
- const onTouchEnd = (0, import_react23.useMemo)(
36679
+ const onTouchEnd = (0, import_react22.useMemo)(
36706
36680
  () => (event) => {
36707
36681
  event.preventDefault();
36708
36682
  setTouching(false);
@@ -36800,9 +36774,9 @@
36800
36774
  );
36801
36775
  };
36802
36776
  var Tabs = (props) => {
36803
- const { renderComponent } = import_react24.default.useContext(StageContext);
36804
- const [touching, setTouching] = import_react24.default.useState(null);
36805
- const [currentTab, setCurrentTab] = import_react24.default.useState(0);
36777
+ const { renderComponent } = import_react23.default.useContext(StageContext);
36778
+ const [touching, setTouching] = import_react23.default.useState(null);
36779
+ const [currentTab, setCurrentTab] = import_react23.default.useState(0);
36806
36780
  const tab = props.info.tabs[currentTab];
36807
36781
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
36808
36782
  "div",
@@ -36853,9 +36827,9 @@
36853
36827
  );
36854
36828
  };
36855
36829
  var TextInput = ({ className, info }) => {
36856
- const { sendMessage } = import_react25.default.useContext(StageContext);
36857
- const ref = import_react25.default.useRef(null);
36858
- (0, import_react25.useEffect)(() => {
36830
+ const { sendMessage } = import_react24.default.useContext(StageContext);
36831
+ const ref = import_react24.default.useRef(null);
36832
+ (0, import_react24.useEffect)(() => {
36859
36833
  if (ref.current && ref.current.value !== info.value) {
36860
36834
  ref.current.value = info.value;
36861
36835
  }
@@ -36885,13 +36859,13 @@
36885
36859
  };
36886
36860
  var Timeline = (props) => {
36887
36861
  const { className, info } = props;
36888
- const { timeDifferenceMs } = (0, import_react26.useContext)(StageContext);
36889
- const frameState = import_react26.default.useRef({
36862
+ const { timeDifferenceMs } = (0, import_react25.useContext)(StageContext);
36863
+ const frameState = import_react25.default.useRef({
36890
36864
  animationFrame: -1,
36891
36865
  state: null
36892
36866
  });
36893
- const [currentTimeMillis, setCurrentTimeMillis] = (0, import_react26.useState)(0);
36894
- (0, import_react26.useEffect)(() => {
36867
+ const [currentTimeMillis, setCurrentTimeMillis] = (0, import_react25.useState)(0);
36868
+ (0, import_react25.useEffect)(() => {
36895
36869
  frameState.current.state = info.state;
36896
36870
  const recalculateCurrentTimeMillis = () => {
36897
36871
  if (frameState.current.state !== info.state) {
@@ -36988,11 +36962,11 @@
36988
36962
  };
36989
36963
 
36990
36964
  // ../../packages/sigil/dist/frontend.js
36965
+ var import_react27 = __toESM(require_react(), 1);
36991
36966
  var import_react28 = __toESM(require_react(), 1);
36992
- var import_react29 = __toESM(require_react(), 1);
36993
36967
  var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
36994
36968
  var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
36995
- var import_react30 = __toESM(require_react(), 1);
36969
+ var import_react29 = __toESM(require_react(), 1);
36996
36970
  var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
36997
36971
 
36998
36972
  // ../../node_modules/.pnpm/@arcanejs+toolkit@8.0.0_@arcanejs+toolkit-frontend@0.11.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@arcanejs/toolkit/dist/frontend/index.mjs
@@ -37126,7 +37100,7 @@
37126
37100
  };
37127
37101
 
37128
37102
  // ../../node_modules/.pnpm/@arcanejs+toolkit@8.0.0_@arcanejs+toolkit-frontend@0.11.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@arcanejs/toolkit/dist/frontend/index.mjs
37129
- var import_react27 = __toESM(require_react(), 1);
37103
+ var import_react26 = __toESM(require_react(), 1);
37130
37104
 
37131
37105
  // ../../node_modules/.pnpm/@arcanejs+toolkit-frontend@0.11.0/node_modules/@arcanejs/toolkit-frontend/dist/styling.mjs
37132
37106
  var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
@@ -37149,32 +37123,32 @@
37149
37123
  // ../../node_modules/.pnpm/@arcanejs+toolkit@8.0.0_@arcanejs+toolkit-frontend@0.11.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@arcanejs/toolkit/dist/frontend/index.mjs
37150
37124
  var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
37151
37125
  var Stage = ({ className, renderers, loadingState }) => {
37152
- const [root, setRoot] = (0, import_react27.useState)(
37126
+ const [root, setRoot] = (0, import_react26.useState)(
37153
37127
  void 0
37154
37128
  );
37155
- const socket = (0, import_react27.useRef)(null);
37156
- const [connection, setConnection] = (0, import_react27.useState)({
37129
+ const socket = (0, import_react26.useRef)(null);
37130
+ const [connection, setConnection] = (0, import_react26.useState)({
37157
37131
  state: "connecting"
37158
37132
  });
37159
- const [clockSync, setClockSync] = (0, import_react27.useState)(null);
37160
- const [lastPingMs, setLastPingMs] = (0, import_react27.useState)(null);
37161
- const [bestPing, setBestPing] = (0, import_react27.useState)(null);
37162
- const calls = (0, import_react27.useRef)({
37133
+ const [clockSync, setClockSync] = (0, import_react26.useState)(null);
37134
+ const [lastPingMs, setLastPingMs] = (0, import_react26.useState)(null);
37135
+ const [bestPing, setBestPing] = (0, import_react26.useState)(null);
37136
+ const calls = (0, import_react26.useRef)({
37163
37137
  nextId: 1,
37164
37138
  calls: /* @__PURE__ */ new Map()
37165
37139
  });
37166
- const pings = (0, import_react27.useRef)({
37140
+ const pings = (0, import_react26.useRef)({
37167
37141
  nextId: 1,
37168
37142
  pings: /* @__PURE__ */ new Map()
37169
37143
  });
37170
- const preparedRenderers = (0, import_react27.useMemo)(() => {
37144
+ const preparedRenderers = (0, import_react26.useMemo)(() => {
37171
37145
  const prepared = {};
37172
37146
  for (const renderer of renderers) {
37173
37147
  prepared[renderer.namespace] = renderer;
37174
37148
  }
37175
37149
  return prepared;
37176
37150
  }, [renderers]);
37177
- const renderComponent = (0, import_react27.useCallback)(
37151
+ const renderComponent = (0, import_react26.useCallback)(
37178
37152
  (info) => {
37179
37153
  const renderer = preparedRenderers[info.namespace];
37180
37154
  if (!renderer) {
@@ -37184,7 +37158,7 @@
37184
37158
  },
37185
37159
  [preparedRenderers]
37186
37160
  );
37187
- const handleMessage = (0, import_react27.useCallback)((msg) => {
37161
+ const handleMessage = (0, import_react26.useCallback)((msg) => {
37188
37162
  switch (msg.type) {
37189
37163
  case "metadata":
37190
37164
  setConnection({ state: "connected", uuid: msg.connectionUuid });
@@ -37240,7 +37214,7 @@
37240
37214
  }
37241
37215
  }
37242
37216
  }, []);
37243
- const initializeWebsocket = (0, import_react27.useCallback)(async () => {
37217
+ const initializeWebsocket = (0, import_react26.useCallback)(async () => {
37244
37218
  if (socket.current) {
37245
37219
  socket.current.then((s) => s.close()).catch((err) => console.error(err));
37246
37220
  socket.current = null;
@@ -37276,10 +37250,10 @@
37276
37250
  });
37277
37251
  return socket.current;
37278
37252
  }, []);
37279
- const sendMessage = (0, import_react27.useCallback)(async (msg) => {
37253
+ const sendMessage = (0, import_react26.useCallback)(async (msg) => {
37280
37254
  (await (socket.current || initializeWebsocket())).send(JSON.stringify(msg));
37281
37255
  }, []);
37282
- const call = (0, import_react27.useCallback)(
37256
+ const call = (0, import_react26.useCallback)(
37283
37257
  async (msg) => {
37284
37258
  const requestId = calls.current.nextId++;
37285
37259
  const sendMsg = {
@@ -37301,10 +37275,10 @@
37301
37275
  },
37302
37276
  []
37303
37277
  );
37304
- (0, import_react27.useEffect)(() => {
37278
+ (0, import_react26.useEffect)(() => {
37305
37279
  initializeWebsocket();
37306
37280
  }, [initializeWebsocket]);
37307
- (0, import_react27.useEffect)(() => {
37281
+ (0, import_react26.useEffect)(() => {
37308
37282
  if (connection.state !== "connected" && clockSync !== null) {
37309
37283
  setClockSync(null);
37310
37284
  }
@@ -37334,7 +37308,7 @@
37334
37308
  window.clearInterval(interval);
37335
37309
  };
37336
37310
  }, [clockSync, connection.state, sendMessage]);
37337
- const stageContext = (0, import_react27.useMemo)(
37311
+ const stageContext = (0, import_react26.useMemo)(
37338
37312
  () => ({
37339
37313
  sendMessage,
37340
37314
  renderComponent,
@@ -37475,7 +37449,7 @@
37475
37449
  ...browser
37476
37450
  };
37477
37451
  };
37478
- var BrowserContext = /* @__PURE__ */ (0, import_react29.createContext)(new Proxy({}, {
37452
+ var BrowserContext = /* @__PURE__ */ (0, import_react28.createContext)(new Proxy({}, {
37479
37453
  get: () => {
37480
37454
  throw new Error("BrowserContext not provided.");
37481
37455
  }
@@ -37490,7 +37464,7 @@
37490
37464
  });
37491
37465
  };
37492
37466
  var useBrowserContext = () => {
37493
- return (0, import_react29.useContext)(BrowserContext);
37467
+ return (0, import_react28.useContext)(BrowserContext);
37494
37468
  };
37495
37469
  var AppRoot = ({
37496
37470
  info,
@@ -37503,13 +37477,13 @@
37503
37477
  const {
37504
37478
  renderComponent,
37505
37479
  call
37506
- } = (0, import_react28.useContext)(StageContext);
37507
- const [logs, setLogs] = (0, import_react28.useState)({
37480
+ } = (0, import_react27.useContext)(StageContext);
37481
+ const [logs, setLogs] = (0, import_react27.useState)({
37508
37482
  lastLog: -1,
37509
37483
  logs: []
37510
37484
  });
37511
- const [debugMode, setDebugMode] = (0, import_react28.useState)(false);
37512
- (0, import_react28.useEffect)(() => {
37485
+ const [debugMode, setDebugMode] = (0, import_react27.useState)(false);
37486
+ (0, import_react27.useEffect)(() => {
37513
37487
  if (!debugMode || !call) return;
37514
37488
  const lastLogId = logs.logs[logs.logs.length - 1]?.index ?? -1;
37515
37489
  call({
@@ -37528,7 +37502,7 @@
37528
37502
  });
37529
37503
  });
37530
37504
  }, [call, debugMode, info.key, lastLog, logs]);
37531
- const debuggerContext = (0, import_react28.useMemo)(() => ({
37505
+ const debuggerContext = (0, import_react27.useMemo)(() => ({
37532
37506
  logs: logs.logs,
37533
37507
  setDebugMode
37534
37508
  }), [logs.logs]);
@@ -37564,8 +37538,8 @@ Caused by: ${unwrapErrorStack(error.cause)}`;
37564
37538
  title,
37565
37539
  className
37566
37540
  }) => {
37567
- const scrollRef = (0, import_react30.useRef)(null);
37568
- const shouldScrollToBottom = (0, import_react30.useRef)(true);
37541
+ const scrollRef = (0, import_react29.useRef)(null);
37542
+ const shouldScrollToBottom = (0, import_react29.useRef)(true);
37569
37543
  const {
37570
37544
  openDevTools
37571
37545
  } = useBrowserContext();
@@ -37574,7 +37548,7 @@ Caused by: ${unwrapErrorStack(error.cause)}`;
37574
37548
  logs
37575
37549
  } = useDebuggerContext();
37576
37550
  const system = useSystemInformation();
37577
- (0, import_react30.useEffect)(() => {
37551
+ (0, import_react29.useEffect)(() => {
37578
37552
  setDebugMode(true);
37579
37553
  return () => {
37580
37554
  setDebugMode(false);
@@ -37589,19 +37563,19 @@ Caused by: ${unwrapErrorStack(error.cause)}`;
37589
37563
  } = scrollRef.current;
37590
37564
  shouldScrollToBottom.current = scrollTop + clientHeight >= scrollHeight - 10;
37591
37565
  };
37592
- const scrollToBottomIfRequired = (0, import_react30.useCallback)(() => {
37566
+ const scrollToBottomIfRequired = (0, import_react29.useCallback)(() => {
37593
37567
  if (shouldScrollToBottom.current && scrollRef.current) {
37594
37568
  scrollRef.current.scrollTop = scrollRef.current.scrollHeight;
37595
37569
  }
37596
37570
  }, []);
37597
- (0, import_react30.useEffect)(scrollToBottomIfRequired, [logs, scrollToBottomIfRequired]);
37598
- (0, import_react30.useEffect)(() => {
37571
+ (0, import_react29.useEffect)(scrollToBottomIfRequired, [logs, scrollToBottomIfRequired]);
37572
+ (0, import_react29.useEffect)(() => {
37599
37573
  window.addEventListener("resize", scrollToBottomIfRequired);
37600
37574
  return () => {
37601
37575
  window.removeEventListener("resize", scrollToBottomIfRequired);
37602
37576
  };
37603
37577
  }, [scrollToBottomIfRequired]);
37604
- const exportLogs = (0, import_react30.useCallback)(() => {
37578
+ const exportLogs = (0, import_react29.useCallback)(() => {
37605
37579
  const logText = JSON.stringify({
37606
37580
  system,
37607
37581
  logs
@@ -37616,7 +37590,7 @@ Caused by: ${unwrapErrorStack(error.cause)}`;
37616
37590
  link.click();
37617
37591
  URL.revokeObjectURL(url);
37618
37592
  }, [system, logs]);
37619
- const handleRequestScrollToBottom = (0, import_react30.useCallback)(() => {
37593
+ const handleRequestScrollToBottom = (0, import_react29.useCallback)(() => {
37620
37594
  shouldScrollToBottom.current = true;
37621
37595
  scrollToBottomIfRequired();
37622
37596
  }, [scrollToBottomIfRequired]);
@@ -37770,7 +37744,12 @@ Data Directory: ${system.dataDirectory}`
37770
37744
  var TOOLBOX_CONFIG = zod_default.object({
37771
37745
  inputs: zod_default.record(zod_default.string(), INPUT_CONFIG),
37772
37746
  generators: zod_default.record(zod_default.string(), GENERATOR_CONFIG),
37773
- outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG)
37747
+ outputs: zod_default.record(zod_default.string(), OUTPUT_CONFIG),
37748
+ /**
37749
+ * Hash of the license the user has agreed to.
37750
+ */
37751
+ agreedToLicense: zod_default.string().optional(),
37752
+ checkForUpdates: zod_default.boolean().optional().default(true)
37774
37753
  });
37775
37754
  var isTimecodeInstance = (instance) => instance !== null && "state" in instance && "metadata" in instance;
37776
37755
  var isTimecodeGroup = (instance) => instance !== null && "timecodes" in instance;
@@ -37778,16 +37757,235 @@ Data Directory: ${system.dataDirectory}`
37778
37757
  var isTimecodeToolboxComponent = (component) => component.namespace === NAMESPACE;
37779
37758
 
37780
37759
  // src/components/frontend/toolbox/root.tsx
37781
- var import_compiler_runtime15 = __toESM(require_compiler_runtime());
37782
- var import_react39 = __toESM(require_react());
37760
+ var import_compiler_runtime20 = __toESM(require_compiler_runtime());
37761
+ var import_react43 = __toESM(require_react());
37783
37762
 
37784
- // src/components/frontend/toolbox/content.tsx
37763
+ // ../../packages/artnet/dist/chunk-J2HDMITA.js
37764
+ var ARTNET_PORT = 6454;
37765
+ var TIMECODE_FPS = {
37766
+ FILM: 24,
37767
+ EBU: 25,
37768
+ DF: 29.97,
37769
+ SMPTE: 30
37770
+ };
37771
+
37772
+ // src/components/frontend/constants.ts
37773
+ var MS_FORMAT = new Intl.NumberFormat(void 0, {
37774
+ style: "unit",
37775
+ unit: "millisecond",
37776
+ maximumFractionDigits: 0
37777
+ });
37778
+ var SOURCE_CODE_URL = "https://github.com/ArcaneWizards/open-source/tree/main/apps/timecode-toolbox";
37779
+ var STRINGS = {
37780
+ title: "Timecode Toolbox",
37781
+ debugger: "Debug Tools & Log",
37782
+ connectionError: "Disconnected from Timecode Toolbox Server",
37783
+ reconnect: "Reconnect",
37784
+ openInNewWindow: "Open in new window",
37785
+ toggle: (text) => `Toggle ${text}`,
37786
+ close: (text) => `Close ${text}`,
37787
+ license: "License & About",
37788
+ acceptLicense: "Accept License",
37789
+ licensePrompt: "Please review and accept the license to use Timecode Toolbox",
37790
+ sourceCode: "Source Code",
37791
+ protocols: {
37792
+ artnet: {
37793
+ short: "ArtNet",
37794
+ long: "ArtNet"
37795
+ },
37796
+ tcnet: {
37797
+ short: "TCNet",
37798
+ long: "TCNet (ShowKontrol / Pioneer)"
37799
+ }
37800
+ },
37801
+ inputs: {
37802
+ title: "INPUTS",
37803
+ noChildren: "No inputs yet. Please add one using the buttons below.",
37804
+ addButton: (protocol) => `Add ${protocol}`,
37805
+ addDialog: (protocol) => `Add ${protocol} Input`,
37806
+ editDialog: (protocol, name) => `Edit ${protocol} Input ${name}`
37807
+ },
37808
+ smtpeModes: {
37809
+ SMPTE: `SMPTE ${TIMECODE_FPS.SMPTE}FPS`,
37810
+ FILM: `FILM ${TIMECODE_FPS.FILM}FPS`,
37811
+ EBU: `EBU ${TIMECODE_FPS.EBU}FPS`,
37812
+ DF: `DF ${TIMECODE_FPS.DF}FPS`
37813
+ },
37814
+ smtpeModeOptions: {
37815
+ SMPTE: `SMPTE (${TIMECODE_FPS.SMPTE}FPS) (Recommended)`,
37816
+ FILM: `FILM (${TIMECODE_FPS.FILM}FPS)`,
37817
+ EBU: `EBU (${TIMECODE_FPS.EBU}FPS)`,
37818
+ DF: `DF (${TIMECODE_FPS.DF}FPS)`
37819
+ },
37820
+ accuracy: (accuracyMillis) => `Accuracy: ${MS_FORMAT.format(accuracyMillis)}`,
37821
+ delay: (delayMs) => `Delay: ${MS_FORMAT.format(delayMs)}`,
37822
+ generators: {
37823
+ title: "GENERATORS",
37824
+ noChildren: "No generators yet. Please add one using the buttons below.",
37825
+ type: {
37826
+ clock: "Clock"
37827
+ },
37828
+ addDialog: (protocol) => `Add ${protocol} Generator`,
37829
+ editDialog: (protocol, name) => `Edit ${protocol} Generator ${name}`
37830
+ },
37831
+ outputs: {
37832
+ title: "OUTPUTS",
37833
+ noChildren: "No outputs yet. Please add one using the buttons below.",
37834
+ addButton: (protocol) => `Add ${protocol}`,
37835
+ addDialog: (protocol) => `Add ${protocol} Output`,
37836
+ editDialog: (protocol, name) => `Edit ${protocol} Output ${name}`
37837
+ },
37838
+ settings: {
37839
+ title: "Settings"
37840
+ },
37841
+ controls: {
37842
+ play: "Play",
37843
+ pause: "Pause",
37844
+ beginning: "Reset timecode to start",
37845
+ back5seconds: "Back 5 Seconds",
37846
+ forward5seconds: "Forward 5 Seconds"
37847
+ },
37848
+ errors: {
37849
+ unknownTimecodeID: "Unknown timecode ID, please close the window"
37850
+ },
37851
+ updates: {
37852
+ updateAvailable: (current, latest) => `Version ${latest} is available! You are currently on version ${current}.`,
37853
+ download: "Download",
37854
+ settingsLabel: "Automatically check for updates",
37855
+ settingsDetails: `When enabled, the app will automatically check for updates periodically and display a message when a new version is available.`,
37856
+ lastChecked: (time) => `Last checked: ${time}`
37857
+ },
37858
+ general: {
37859
+ enabled: "Enabled",
37860
+ disabled: "Disabled"
37861
+ }
37862
+ };
37863
+
37864
+ // src/components/frontend/toolbox/outputs.tsx
37865
+ var import_compiler_runtime9 = __toESM(require_compiler_runtime());
37866
+ var import_react33 = __toESM(require_react());
37867
+
37868
+ // src/components/frontend/toolbox/util.tsx
37869
+ var import_compiler_runtime5 = __toESM(require_compiler_runtime());
37870
+ var import_jsx_runtime41 = __toESM(require_jsx_runtime());
37871
+ var PrimaryToolboxSection = (t0) => {
37872
+ const $ = (0, import_compiler_runtime5.c)(12);
37873
+ const {
37874
+ title,
37875
+ children,
37876
+ buttons
37877
+ } = t0;
37878
+ let t1;
37879
+ if ($[0] !== title) {
37880
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
37881
+ className: "\n flex items-center justify-center bg-sigil-bg-light p-1\n writing-mode-vertical-rl\n ",
37882
+ children: title
37883
+ });
37884
+ $[0] = title;
37885
+ $[1] = t1;
37886
+ } else {
37887
+ t1 = $[1];
37888
+ }
37889
+ let t2;
37890
+ if ($[2] !== children) {
37891
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
37892
+ className: "flex grow flex-col gap-px",
37893
+ children
37894
+ });
37895
+ $[2] = children;
37896
+ $[3] = t2;
37897
+ } else {
37898
+ t2 = $[3];
37899
+ }
37900
+ let t3;
37901
+ if ($[4] !== buttons) {
37902
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
37903
+ className: "flex w-full flex-wrap gap-1 bg-sigil-bg-light p-1",
37904
+ children: buttons
37905
+ });
37906
+ $[4] = buttons;
37907
+ $[5] = t3;
37908
+ } else {
37909
+ t3 = $[5];
37910
+ }
37911
+ let t4;
37912
+ if ($[6] !== t2 || $[7] !== t3) {
37913
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
37914
+ className: "flex grow flex-col gap-px",
37915
+ children: [t2, t3]
37916
+ });
37917
+ $[6] = t2;
37918
+ $[7] = t3;
37919
+ $[8] = t4;
37920
+ } else {
37921
+ t4 = $[8];
37922
+ }
37923
+ let t5;
37924
+ if ($[9] !== t1 || $[10] !== t4) {
37925
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", {
37926
+ className: "flex grow gap-px",
37927
+ children: [t1, t4]
37928
+ });
37929
+ $[9] = t1;
37930
+ $[10] = t4;
37931
+ $[11] = t5;
37932
+ } else {
37933
+ t5 = $[11];
37934
+ }
37935
+ return t5;
37936
+ };
37937
+ function displayMillis(totalMilliseconds) {
37938
+ if (totalMilliseconds < 0) {
37939
+ return "-" + displayMillis(-totalMilliseconds);
37940
+ }
37941
+ let remaining = totalMilliseconds;
37942
+ const hours = remaining / 36e5 | 0;
37943
+ remaining -= hours * 36e5;
37944
+ const mins = remaining / 6e4 | 0;
37945
+ remaining -= mins * 6e4;
37946
+ const seconds = remaining / 1e3 | 0;
37947
+ remaining -= seconds * 1e3;
37948
+ const millis = remaining | 0;
37949
+ return (hours < 10 ? "0" : "") + hours + ":" + (mins < 10 ? "0" : "") + mins + ":" + (seconds < 10 ? "0" : "") + seconds + ":" + (millis < 10 ? "00" : millis < 100 ? "0" : "") + millis;
37950
+ }
37951
+
37952
+ // src/components/frontend/toolbox/context.tsx
37953
+ var import_react30 = __toESM(require_react());
37954
+ var ConfigContext = /* @__PURE__ */ (0, import_react30.createContext)(new Proxy({}, {
37955
+ get() {
37956
+ throw new Error("ConfigContext not initialized");
37957
+ }
37958
+ }));
37959
+ var ApplicationStateContext = /* @__PURE__ */ (0, import_react30.createContext)(new Proxy({}, {
37960
+ get() {
37961
+ throw new Error("ApplicationStateContext not initialized");
37962
+ }
37963
+ }));
37964
+ var useApplicationState = () => {
37965
+ return (0, import_react30.useContext)(ApplicationStateContext);
37966
+ };
37967
+ var ApplicationHandlersContext = /* @__PURE__ */ (0, import_react30.createContext)(new Proxy({}, {
37968
+ get() {
37969
+ throw new Error("ApplicationHandlersContext not initialized");
37970
+ }
37971
+ }));
37972
+ var useApplicationHandlers = () => {
37973
+ return (0, import_react30.useContext)(ApplicationHandlersContext);
37974
+ };
37975
+ var NetworkContext = /* @__PURE__ */ (0, import_react30.createContext)(new Proxy({}, {
37976
+ get() {
37977
+ throw new Error("NetworkContext not initialized");
37978
+ }
37979
+ }));
37980
+
37981
+ // src/components/frontend/toolbox/core/timecode-display.tsx
37785
37982
  var import_compiler_runtime7 = __toESM(require_compiler_runtime());
37983
+ var import_react32 = __toESM(require_react());
37786
37984
 
37787
37985
  // src/components/frontend/toolbox/core/size-aware-div.tsx
37788
37986
  var import_compiler_runtime6 = __toESM(require_compiler_runtime());
37789
37987
  var import_react31 = __toESM(require_react());
37790
- var import_jsx_runtime41 = __toESM(require_jsx_runtime());
37988
+ var import_jsx_runtime42 = __toESM(require_jsx_runtime());
37791
37989
  var SizeAwareDiv = (t0) => {
37792
37990
  const $ = (0, import_compiler_runtime6.c)(16);
37793
37991
  let children;
@@ -37861,7 +38059,7 @@ Data Directory: ${system.dataDirectory}`
37861
38059
  }
37862
38060
  let t5;
37863
38061
  if ($[12] !== children || $[13] !== rest || $[14] !== t4) {
37864
- t5 = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
38062
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
37865
38063
  ref: setDiv,
37866
38064
  ...rest,
37867
38065
  style: t4,
@@ -37877,286 +38075,6 @@ Data Directory: ${system.dataDirectory}`
37877
38075
  return t5;
37878
38076
  };
37879
38077
 
37880
- // src/components/frontend/toolbox/content.tsx
37881
- var import_jsx_runtime42 = __toESM(require_jsx_runtime());
37882
- var ExternalLink = (t0) => {
37883
- const $ = (0, import_compiler_runtime7.c)(7);
37884
- const {
37885
- href,
37886
- children
37887
- } = t0;
37888
- const {
37889
- openExternalLink
37890
- } = useBrowserContext();
37891
- let t1;
37892
- if ($[0] !== href || $[1] !== openExternalLink) {
37893
- t1 = (e) => {
37894
- e.preventDefault();
37895
- openExternalLink(href);
37896
- };
37897
- $[0] = href;
37898
- $[1] = openExternalLink;
37899
- $[2] = t1;
37900
- } else {
37901
- t1 = $[2];
37902
- }
37903
- let t2;
37904
- if ($[3] !== children || $[4] !== href || $[5] !== t1) {
37905
- t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("a", {
37906
- href,
37907
- target: "_blank",
37908
- rel: "noopener noreferrer",
37909
- onClick: t1,
37910
- className: "\n text-sigil-usage-hint-foreground no-underline\n hover:underline\n ",
37911
- children
37912
- });
37913
- $[3] = children;
37914
- $[4] = href;
37915
- $[5] = t1;
37916
- $[6] = t2;
37917
- } else {
37918
- t2 = $[6];
37919
- }
37920
- return t2;
37921
- };
37922
- var NoToolboxChildren = (t0) => {
37923
- const $ = (0, import_compiler_runtime7.c)(3);
37924
- const {
37925
- text
37926
- } = t0;
37927
- let t1;
37928
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
37929
- t1 = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon2, {
37930
- icon: "handyman",
37931
- className: "text-block-icon"
37932
- });
37933
- $[0] = t1;
37934
- } else {
37935
- t1 = $[0];
37936
- }
37937
- let t2;
37938
- if ($[1] !== text) {
37939
- t2 = /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(SizeAwareDiv, {
37940
- className: "\n flex grow flex-col items-center justify-center gap-1 bg-sigil-bg-light\n p-1 text-sigil-foreground-muted\n ",
37941
- children: [t1, /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", {
37942
- className: "text-center",
37943
- children: text
37944
- })]
37945
- });
37946
- $[1] = text;
37947
- $[2] = t2;
37948
- } else {
37949
- t2 = $[2];
37950
- }
37951
- return t2;
37952
- };
37953
-
37954
- // ../../packages/artnet/dist/chunk-J2HDMITA.js
37955
- var ARTNET_PORT = 6454;
37956
- var TIMECODE_FPS = {
37957
- FILM: 24,
37958
- EBU: 25,
37959
- DF: 29.97,
37960
- SMPTE: 30
37961
- };
37962
-
37963
- // src/components/frontend/constants.ts
37964
- var MS_FORMAT = new Intl.NumberFormat(void 0, {
37965
- style: "unit",
37966
- unit: "millisecond",
37967
- maximumFractionDigits: 0
37968
- });
37969
- var STRINGS = {
37970
- title: "Timecode Toolbox",
37971
- debugger: "Debug Tools & Log",
37972
- connectionError: "Disconnected from Timecode Toolbox Server",
37973
- reconnect: "Reconnect",
37974
- openInNewWindow: "Open in new window",
37975
- toggle: (text) => `Toggle ${text}`,
37976
- close: (text) => `Close ${text}`,
37977
- protocols: {
37978
- artnet: {
37979
- short: "ArtNet",
37980
- long: "ArtNet"
37981
- },
37982
- tcnet: {
37983
- short: "TCNet",
37984
- long: "TCNet (ShowKontrol / Pioneer)"
37985
- }
37986
- },
37987
- inputs: {
37988
- title: "INPUTS",
37989
- noChildren: "No inputs yet. Please add one using the buttons below.",
37990
- addButton: (protocol) => `Add ${protocol}`,
37991
- addDialog: (protocol) => `Add ${protocol} Input`,
37992
- editDialog: (protocol, name) => `Edit ${protocol} Input ${name}`
37993
- },
37994
- smtpeModes: {
37995
- SMPTE: `SMPTE ${TIMECODE_FPS.SMPTE}FPS`,
37996
- FILM: `FILM ${TIMECODE_FPS.FILM}FPS`,
37997
- EBU: `EBU ${TIMECODE_FPS.EBU}FPS`,
37998
- DF: `DF ${TIMECODE_FPS.DF}FPS`
37999
- },
38000
- smtpeModeOptions: {
38001
- SMPTE: `SMPTE (${TIMECODE_FPS.SMPTE}FPS) (Recommended)`,
38002
- FILM: `FILM (${TIMECODE_FPS.FILM}FPS)`,
38003
- EBU: `EBU (${TIMECODE_FPS.EBU}FPS)`,
38004
- DF: `DF (${TIMECODE_FPS.DF}FPS)`
38005
- },
38006
- accuracy: (accuracyMillis) => `Accuracy: ${MS_FORMAT.format(accuracyMillis)}`,
38007
- delay: (delayMs) => `Delay: ${MS_FORMAT.format(delayMs)}`,
38008
- generators: {
38009
- title: "GENERATORS",
38010
- noChildren: "No generators yet. Please add one using the buttons below.",
38011
- type: {
38012
- clock: "Clock"
38013
- },
38014
- addDialog: (protocol) => `Add ${protocol} Generator`,
38015
- editDialog: (protocol, name) => `Edit ${protocol} Generator ${name}`
38016
- },
38017
- outputs: {
38018
- title: "OUTPUTS",
38019
- noChildren: "No outputs yet. Please add one using the buttons below.",
38020
- addButton: (protocol) => `Add ${protocol}`,
38021
- addDialog: (protocol) => `Add ${protocol} Output`,
38022
- editDialog: (protocol, name) => `Edit ${protocol} Output ${name}`
38023
- },
38024
- settings: {
38025
- title: "Settings"
38026
- },
38027
- controls: {
38028
- play: "Play",
38029
- pause: "Pause",
38030
- beginning: "Reset timecode to start",
38031
- back5seconds: "Back 5 Seconds",
38032
- forward5seconds: "Forward 5 Seconds"
38033
- },
38034
- errors: {
38035
- unknownTimecodeID: "Unknown timecode ID, please close the window"
38036
- }
38037
- };
38038
-
38039
- // src/components/frontend/toolbox/outputs.tsx
38040
- var import_compiler_runtime10 = __toESM(require_compiler_runtime());
38041
- var import_react34 = __toESM(require_react());
38042
-
38043
- // src/components/frontend/toolbox/util.tsx
38044
- var import_compiler_runtime8 = __toESM(require_compiler_runtime());
38045
- var import_jsx_runtime43 = __toESM(require_jsx_runtime());
38046
- var PrimaryToolboxSection = (t0) => {
38047
- const $ = (0, import_compiler_runtime8.c)(12);
38048
- const {
38049
- title,
38050
- children,
38051
- buttons
38052
- } = t0;
38053
- let t1;
38054
- if ($[0] !== title) {
38055
- t1 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38056
- className: "\n flex items-center justify-center bg-sigil-bg-light p-1\n writing-mode-vertical-rl\n ",
38057
- children: title
38058
- });
38059
- $[0] = title;
38060
- $[1] = t1;
38061
- } else {
38062
- t1 = $[1];
38063
- }
38064
- let t2;
38065
- if ($[2] !== children) {
38066
- t2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38067
- className: "flex grow flex-col gap-px",
38068
- children
38069
- });
38070
- $[2] = children;
38071
- $[3] = t2;
38072
- } else {
38073
- t2 = $[3];
38074
- }
38075
- let t3;
38076
- if ($[4] !== buttons) {
38077
- t3 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38078
- className: "flex w-full flex-wrap gap-1 bg-sigil-bg-light p-1",
38079
- children: buttons
38080
- });
38081
- $[4] = buttons;
38082
- $[5] = t3;
38083
- } else {
38084
- t3 = $[5];
38085
- }
38086
- let t4;
38087
- if ($[6] !== t2 || $[7] !== t3) {
38088
- t4 = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38089
- className: "flex grow flex-col gap-px",
38090
- children: [t2, t3]
38091
- });
38092
- $[6] = t2;
38093
- $[7] = t3;
38094
- $[8] = t4;
38095
- } else {
38096
- t4 = $[8];
38097
- }
38098
- let t5;
38099
- if ($[9] !== t1 || $[10] !== t4) {
38100
- t5 = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38101
- className: "flex grow gap-px",
38102
- children: [t1, t4]
38103
- });
38104
- $[9] = t1;
38105
- $[10] = t4;
38106
- $[11] = t5;
38107
- } else {
38108
- t5 = $[11];
38109
- }
38110
- return t5;
38111
- };
38112
- function displayMillis(totalMilliseconds) {
38113
- if (totalMilliseconds < 0) {
38114
- return "-" + displayMillis(-totalMilliseconds);
38115
- }
38116
- let remaining = totalMilliseconds;
38117
- const hours = remaining / 36e5 | 0;
38118
- remaining -= hours * 36e5;
38119
- const mins = remaining / 6e4 | 0;
38120
- remaining -= mins * 6e4;
38121
- const seconds = remaining / 1e3 | 0;
38122
- remaining -= seconds * 1e3;
38123
- const millis = remaining | 0;
38124
- return (hours < 10 ? "0" : "") + hours + ":" + (mins < 10 ? "0" : "") + mins + ":" + (seconds < 10 ? "0" : "") + seconds + ":" + (millis < 10 ? "00" : millis < 100 ? "0" : "") + millis;
38125
- }
38126
-
38127
- // src/components/frontend/toolbox/context.tsx
38128
- var import_react32 = __toESM(require_react());
38129
- var ConfigContext = /* @__PURE__ */ (0, import_react32.createContext)(new Proxy({}, {
38130
- get() {
38131
- throw new Error("ConfigContext not initialized");
38132
- }
38133
- }));
38134
- var ApplicationStateContext = /* @__PURE__ */ (0, import_react32.createContext)(new Proxy({}, {
38135
- get() {
38136
- throw new Error("ApplicationStateContext not initialized");
38137
- }
38138
- }));
38139
- var useApplicationState = () => {
38140
- return (0, import_react32.useContext)(ApplicationStateContext);
38141
- };
38142
- var ApplicationHandlersContext = /* @__PURE__ */ (0, import_react32.createContext)(new Proxy({}, {
38143
- get() {
38144
- throw new Error("ApplicationHandlersContext not initialized");
38145
- }
38146
- }));
38147
- var useApplicationHandlers = () => {
38148
- return (0, import_react32.useContext)(ApplicationHandlersContext);
38149
- };
38150
- var NetworkContext = /* @__PURE__ */ (0, import_react32.createContext)(new Proxy({}, {
38151
- get() {
38152
- throw new Error("NetworkContext not initialized");
38153
- }
38154
- }));
38155
-
38156
- // src/components/frontend/toolbox/core/timecode-display.tsx
38157
- var import_compiler_runtime9 = __toESM(require_compiler_runtime());
38158
- var import_react33 = __toESM(require_react());
38159
-
38160
38078
  // src/tree.ts
38161
38079
  var isTreeNode = (node) => "children" in node && typeof node.children === "object" && node.children !== null;
38162
38080
  var getTreeValue = (current, path) => {
@@ -38264,17 +38182,17 @@ Data Directory: ${system.dataDirectory}`
38264
38182
  };
38265
38183
 
38266
38184
  // src/components/frontend/toolbox/core/timecode-display.tsx
38267
- var import_jsx_runtime44 = __toESM(require_jsx_runtime());
38185
+ var import_jsx_runtime43 = __toESM(require_jsx_runtime());
38268
38186
  var ActiveTimecodeText = (t0) => {
38269
- const $ = (0, import_compiler_runtime9.c)(7);
38187
+ const $ = (0, import_compiler_runtime7.c)(7);
38270
38188
  const {
38271
38189
  effectiveStartTimeMillis,
38272
38190
  speed
38273
38191
  } = t0;
38274
- const [millis, setMillis] = (0, import_react33.useState)(0);
38192
+ const [millis, setMillis] = (0, import_react32.useState)(0);
38275
38193
  const {
38276
38194
  timeDifferenceMs
38277
- } = (0, import_react33.useContext)(StageContext);
38195
+ } = (0, import_react32.useContext)(StageContext);
38278
38196
  let t1;
38279
38197
  let t2;
38280
38198
  if ($[0] !== effectiveStartTimeMillis || $[1] !== speed || $[2] !== timeDifferenceMs) {
@@ -38303,7 +38221,7 @@ Data Directory: ${system.dataDirectory}`
38303
38221
  t1 = $[3];
38304
38222
  t2 = $[4];
38305
38223
  }
38306
- (0, import_react33.useEffect)(t1, t2);
38224
+ (0, import_react32.useEffect)(t1, t2);
38307
38225
  let t3;
38308
38226
  if ($[5] !== millis) {
38309
38227
  t3 = displayMillis(millis);
@@ -38315,15 +38233,15 @@ Data Directory: ${system.dataDirectory}`
38315
38233
  return t3;
38316
38234
  };
38317
38235
  var Timeline2 = (t0) => {
38318
- const $ = (0, import_compiler_runtime9.c)(11);
38236
+ const $ = (0, import_compiler_runtime7.c)(11);
38319
38237
  const {
38320
38238
  state,
38321
38239
  totalTime
38322
38240
  } = t0;
38323
- const [millis, setMillis] = (0, import_react33.useState)(0);
38241
+ const [millis, setMillis] = (0, import_react32.useState)(0);
38324
38242
  const {
38325
38243
  timeDifferenceMs
38326
- } = (0, import_react33.useContext)(StageContext);
38244
+ } = (0, import_react32.useContext)(StageContext);
38327
38245
  let t1;
38328
38246
  if ($[0] !== state.effectiveStartTimeMillis || $[1] !== state.positionMillis || $[2] !== state.speed || $[3] !== state.state || $[4] !== timeDifferenceMs) {
38329
38247
  t1 = () => {
@@ -38367,15 +38285,15 @@ Data Directory: ${system.dataDirectory}`
38367
38285
  } else {
38368
38286
  t2 = $[8];
38369
38287
  }
38370
- (0, import_react33.useEffect)(t1, t2);
38288
+ (0, import_react32.useEffect)(t1, t2);
38371
38289
  const t3 = `${Math.min(millis / totalTime.timeMillis * 100, 100)}%`;
38372
38290
  let t4;
38373
38291
  if ($[9] !== t3) {
38374
- t4 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38292
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38375
38293
  className: "w-full border border-timecode-usage-foreground p-px",
38376
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38294
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38377
38295
  className: "relative h-1 w-full overflow-hidden",
38378
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38296
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38379
38297
  className: "absolute inset-y-0 left-0 bg-timecode-usage-foreground",
38380
38298
  style: {
38381
38299
  width: t3
@@ -38391,7 +38309,7 @@ Data Directory: ${system.dataDirectory}`
38391
38309
  return t4;
38392
38310
  };
38393
38311
  var TimecodeDisplay = (t0) => {
38394
- const $ = (0, import_compiler_runtime9.c)(71);
38312
+ const $ = (0, import_compiler_runtime7.c)(71);
38395
38313
  const {
38396
38314
  id,
38397
38315
  timecode: t1,
@@ -38538,7 +38456,7 @@ Data Directory: ${system.dataDirectory}`
38538
38456
  }
38539
38457
  let t11;
38540
38458
  if ($[26] !== headerComponents) {
38541
- t11 = headerComponents && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38459
+ t11 = headerComponents && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38542
38460
  className: "flex flex-wrap gap-0.25",
38543
38461
  children: headerComponents
38544
38462
  });
@@ -38570,7 +38488,7 @@ Data Directory: ${system.dataDirectory}`
38570
38488
  }
38571
38489
  let t15;
38572
38490
  if ($[33] !== state.effectiveStartTimeMillis || $[34] !== state.positionMillis || $[35] !== state.speed || $[36] !== state.state) {
38573
- t15 = state.state === "none" ? "--:--:--:---" : state.state === "stopped" ? displayMillis(state.positionMillis) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ActiveTimecodeText, {
38491
+ t15 = state.state === "none" ? "--:--:--:---" : state.state === "stopped" ? displayMillis(state.positionMillis) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ActiveTimecodeText, {
38574
38492
  effectiveStartTimeMillis: state.effectiveStartTimeMillis,
38575
38493
  speed: state.speed
38576
38494
  });
@@ -38584,9 +38502,9 @@ Data Directory: ${system.dataDirectory}`
38584
38502
  }
38585
38503
  let t16;
38586
38504
  if ($[38] !== t15) {
38587
- t16 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38505
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38588
38506
  className: "absolute inset-0 flex items-center justify-center",
38589
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", {
38507
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", {
38590
38508
  className: t14,
38591
38509
  children: t15
38592
38510
  })
@@ -38598,7 +38516,7 @@ Data Directory: ${system.dataDirectory}`
38598
38516
  }
38599
38517
  let t17;
38600
38518
  if ($[40] !== t13 || $[41] !== t16 || $[42] !== toggle) {
38601
- t17 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SizeAwareDiv, {
38519
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SizeAwareDiv, {
38602
38520
  className: t13,
38603
38521
  onClick: toggle,
38604
38522
  children: t16
@@ -38612,37 +38530,37 @@ Data Directory: ${system.dataDirectory}`
38612
38530
  }
38613
38531
  let t18;
38614
38532
  if ($[44] !== back5seconds || $[45] !== beginning || $[46] !== forward5seconds || $[47] !== hooks || $[48] !== pause || $[49] !== play || $[50] !== state.state) {
38615
- t18 = hooks?.pause || hooks?.play ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38533
+ t18 = hooks?.pause || hooks?.play ? /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38616
38534
  className: "flex justify-center gap-px",
38617
- children: [hooks.beginning && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38535
+ children: [hooks.beginning && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38618
38536
  onClick: beginning,
38619
38537
  variant: "large",
38620
38538
  icon: "skip_previous",
38621
38539
  disabled: !hooks?.beginning,
38622
38540
  title: STRINGS.controls.beginning,
38623
38541
  className: "text-timecode-usage-foreground!"
38624
- }), hooks.seekRelative && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38542
+ }), hooks.seekRelative && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38625
38543
  onClick: back5seconds,
38626
38544
  variant: "large",
38627
38545
  icon: "replay_5",
38628
38546
  disabled: !hooks?.seekRelative,
38629
38547
  title: STRINGS.controls.back5seconds,
38630
38548
  className: "text-timecode-usage-foreground!"
38631
- }), state.state === "none" || state.state === "stopped" ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38549
+ }), state.state === "none" || state.state === "stopped" ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38632
38550
  onClick: play,
38633
38551
  variant: "large",
38634
38552
  icon: "play_arrow",
38635
38553
  disabled: !hooks?.play,
38636
38554
  title: STRINGS.controls.play,
38637
38555
  className: "text-timecode-usage-foreground!"
38638
- }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38556
+ }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38639
38557
  onClick: pause,
38640
38558
  variant: "large",
38641
38559
  icon: "pause",
38642
38560
  disabled: !hooks?.pause,
38643
38561
  title: STRINGS.controls.pause,
38644
38562
  className: "text-timecode-usage-foreground!"
38645
- }), hooks.seekRelative && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38563
+ }), hooks.seekRelative && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38646
38564
  onClick: forward5seconds,
38647
38565
  variant: "large",
38648
38566
  icon: "forward_5",
@@ -38664,7 +38582,7 @@ Data Directory: ${system.dataDirectory}`
38664
38582
  }
38665
38583
  let t19;
38666
38584
  if ($[52] !== metadata || $[53] !== state) {
38667
- t19 = metadata?.totalTime && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Timeline2, {
38585
+ t19 = metadata?.totalTime && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Timeline2, {
38668
38586
  state,
38669
38587
  totalTime: metadata.totalTime
38670
38588
  });
@@ -38676,7 +38594,7 @@ Data Directory: ${system.dataDirectory}`
38676
38594
  }
38677
38595
  let t20;
38678
38596
  if ($[55] !== t10 || $[56] !== t11 || $[57] !== t17 || $[58] !== t18 || $[59] !== t19) {
38679
- t20 = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38597
+ t20 = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38680
38598
  className: t10,
38681
38599
  children: [t11, t17, t18, t19]
38682
38600
  });
@@ -38691,15 +38609,15 @@ Data Directory: ${system.dataDirectory}`
38691
38609
  }
38692
38610
  let t21;
38693
38611
  if ($[61] !== config || $[62] !== state.accuracyMillis || $[63] !== state.smpteMode) {
38694
- t21 = (state.smpteMode !== null || state.accuracyMillis !== null || config.delayMs !== null) && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38612
+ t21 = (state.smpteMode !== null || state.accuracyMillis !== null || config.delayMs !== null) && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38695
38613
  className: "flex gap-px",
38696
- children: [config.delayMs !== null && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38614
+ children: [config.delayMs !== null && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38697
38615
  className: "grow basis-0 truncate bg-sigil-bg-light p-0.5",
38698
38616
  children: STRINGS.delay(config.delayMs)
38699
- }), state.smpteMode !== null && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38617
+ }), state.smpteMode !== null && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38700
38618
  className: "grow basis-0 truncate bg-sigil-bg-light p-0.5",
38701
38619
  children: STRINGS.smtpeModes[state.smpteMode]
38702
- }), state.accuracyMillis !== null && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38620
+ }), state.accuracyMillis !== null && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38703
38621
  className: "grow basis-0 truncate bg-sigil-bg-light p-0.5",
38704
38622
  children: STRINGS.accuracy(state.accuracyMillis)
38705
38623
  })]
@@ -38713,26 +38631,26 @@ Data Directory: ${system.dataDirectory}`
38713
38631
  }
38714
38632
  let t22;
38715
38633
  if ($[65] !== metadata) {
38716
- t22 = metadata?.artist || metadata?.title ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TooltipWrapper, {
38717
- tooltip: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, {
38718
- children: [metadata.title && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38719
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", {
38634
+ t22 = metadata?.artist || metadata?.title ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TooltipWrapper, {
38635
+ tooltip: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, {
38636
+ children: [metadata.title && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38637
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", {
38720
38638
  className: "font-bold",
38721
38639
  children: "Title:"
38722
38640
  }), " ", metadata.title]
38723
- }), metadata.artist && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38724
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", {
38641
+ }), metadata.artist && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38642
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", {
38725
38643
  className: "font-bold",
38726
38644
  children: "Artist:"
38727
38645
  }), " ", metadata.artist]
38728
38646
  })]
38729
38647
  }),
38730
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38648
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38731
38649
  className: "flex gap-px",
38732
- children: [metadata.title && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38650
+ children: [metadata.title && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38733
38651
  className: "grow truncate bg-sigil-bg-light p-0.5 font-bold",
38734
38652
  children: metadata.title
38735
- }), metadata.artist && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38653
+ }), metadata.artist && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38736
38654
  className: "grow truncate bg-sigil-bg-light p-0.5",
38737
38655
  children: metadata.artist
38738
38656
  })]
@@ -38745,7 +38663,7 @@ Data Directory: ${system.dataDirectory}`
38745
38663
  }
38746
38664
  let t23;
38747
38665
  if ($[67] !== t20 || $[68] !== t21 || $[69] !== t22) {
38748
- t23 = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38666
+ t23 = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38749
38667
  className: "flex grow flex-col gap-px",
38750
38668
  children: [t20, t21, t22]
38751
38669
  });
@@ -38785,7 +38703,7 @@ Data Directory: ${system.dataDirectory}`
38785
38703
  const {
38786
38704
  openNewWidow
38787
38705
  } = useBrowserContext();
38788
- const openInNewWindow = (0, import_react33.useCallback)(() => {
38706
+ const openInNewWindow = (0, import_react32.useCallback)(() => {
38789
38707
  if (id) {
38790
38708
  openNewWidow(withUrlFragment({
38791
38709
  values: {
@@ -38799,7 +38717,7 @@ Data Directory: ${system.dataDirectory}`
38799
38717
  }, [id, openNewWidow]);
38800
38718
  name = timecode?.name ? [...name, timecode.name] : name;
38801
38719
  if (isTimecodeGroup(timecode) && Object.values(timecode.timecodes).length) {
38802
- return Object.entries(timecode.timecodes).map(([key, child]) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TimecodeTreeDisplay, {
38720
+ return Object.entries(timecode.timecodes).map(([key, child]) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TimecodeTreeDisplay, {
38803
38721
  config,
38804
38722
  id: extendId(id, key),
38805
38723
  type,
@@ -38811,26 +38729,26 @@ Data Directory: ${system.dataDirectory}`
38811
38729
  assignToOutput
38812
38730
  }, key));
38813
38731
  }
38814
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38732
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38815
38733
  className: "relative flex grow flex-col text-timecode-usage-foreground",
38816
38734
  style: color && cssSigilColorUsageVariables("timecode-usage", sigilColorUsage(color)),
38817
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TimecodeDisplay, {
38735
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TimecodeDisplay, {
38818
38736
  id,
38819
38737
  timecode: isTimecodeInstance(timecode) ? timecode : EMPTY_TIMECODE,
38820
38738
  config,
38821
- headerComponents: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, {
38822
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", {
38739
+ headerComponents: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, {
38740
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", {
38823
38741
  className: "flex grow items-start gap-0.25",
38824
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38742
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38825
38743
  className: " m-0.25 rounded-md border border-sigil-bg-light bg-timecode-usage-foreground px-1 py-0.25 text-sigil-control text-timecode-usage-text ",
38826
38744
  children: type
38827
- }), /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38745
+ }), /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
38828
38746
  className: cn("grow basis-0 truncate p-0.5", cnd(name.length, "font-bold", "italic opacity-50")),
38829
38747
  children: name.length ? name.join(" / ") : namePlaceholder
38830
38748
  })]
38831
- }), /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(ControlButtonGroup, {
38749
+ }), /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(ControlButtonGroup, {
38832
38750
  className: "rounded-md bg-sigil-bg-light",
38833
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ControlButton, {
38751
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ControlButton, {
38834
38752
  variant: "toolbar",
38835
38753
  icon: "open_in_new",
38836
38754
  title: STRINGS.openInNewWindow,
@@ -38838,10 +38756,10 @@ Data Directory: ${system.dataDirectory}`
38838
38756
  }), buttons]
38839
38757
  })]
38840
38758
  })
38841
- }), assignToOutput && id && !isOutputInstanceId(id) && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SizeAwareDiv, {
38759
+ }), assignToOutput && id && !isOutputInstanceId(id) && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SizeAwareDiv, {
38842
38760
  className: " absolute inset-0 flex cursor-pointer items-center justify-center bg-timecode-backdrop text-timecode-usage-text hover:bg-timecode-backdrop-hover ",
38843
38761
  onClick: () => assignToOutput(id),
38844
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Icon2, {
38762
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon2, {
38845
38763
  icon: "link",
38846
38764
  className: "text-block-icon"
38847
38765
  })
@@ -38849,14 +38767,14 @@ Data Directory: ${system.dataDirectory}`
38849
38767
  });
38850
38768
  };
38851
38769
  var FullscreenTimecodeDisplay = (t0) => {
38852
- const $ = (0, import_compiler_runtime9.c)(38);
38770
+ const $ = (0, import_compiler_runtime7.c)(38);
38853
38771
  const {
38854
38772
  id
38855
38773
  } = t0;
38856
38774
  const {
38857
38775
  config
38858
- } = (0, import_react33.useContext)(ConfigContext);
38859
- const applicationState = (0, import_react33.useContext)(ApplicationStateContext);
38776
+ } = (0, import_react32.useContext)(ConfigContext);
38777
+ const applicationState = (0, import_react32.useContext)(ApplicationStateContext);
38860
38778
  let t1;
38861
38779
  bb0: if (isInputInstanceId(id) || isGeneratorInstanceId(id)) {
38862
38780
  let t22;
@@ -39027,12 +38945,12 @@ Data Directory: ${system.dataDirectory}`
39027
38945
  if (!instanceConfig) {
39028
38946
  let t32;
39029
38947
  if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
39030
- t32 = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(SizeAwareDiv, {
38948
+ t32 = /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(SizeAwareDiv, {
39031
38949
  className: "\n flex grow flex-col items-center justify-center gap-1 bg-sigil-bg-light\n p-1 text-sigil-foreground-muted\n ",
39032
- children: [/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Icon2, {
38950
+ children: [/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Icon2, {
39033
38951
  icon: "question_mark",
39034
38952
  className: "text-block-icon"
39035
- }), /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38953
+ }), /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
39036
38954
  className: "text-center",
39037
38955
  children: STRINGS.errors.unknownTimecodeID
39038
38956
  })]
@@ -39045,9 +38963,9 @@ Data Directory: ${system.dataDirectory}`
39045
38963
  }
39046
38964
  let t3;
39047
38965
  if ($[34] !== id || $[35] !== instanceConfig || $[36] !== timecode) {
39048
- t3 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
38966
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {
39049
38967
  className: "\n flex h-0 grow flex-col gap-px overflow-y-auto bg-sigil-border\n scrollbar-sigil\n ",
39050
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TimecodeTreeDisplay, {
38968
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TimecodeTreeDisplay, {
39051
38969
  id,
39052
38970
  timecode,
39053
38971
  assignToOutput: null,
@@ -39117,21 +39035,117 @@ Data Directory: ${system.dataDirectory}`
39117
39035
  }
39118
39036
  var v4_default = v4;
39119
39037
 
39038
+ // src/components/frontend/toolbox/content.tsx
39039
+ var import_compiler_runtime8 = __toESM(require_compiler_runtime());
39040
+ var import_jsx_runtime44 = __toESM(require_jsx_runtime());
39041
+ var ExternalLink = (t0) => {
39042
+ const $ = (0, import_compiler_runtime8.c)(7);
39043
+ const {
39044
+ href,
39045
+ children
39046
+ } = t0;
39047
+ const {
39048
+ openExternalLink
39049
+ } = useBrowserContext();
39050
+ let t1;
39051
+ if ($[0] !== href || $[1] !== openExternalLink) {
39052
+ t1 = (e) => {
39053
+ e.preventDefault();
39054
+ openExternalLink(href);
39055
+ };
39056
+ $[0] = href;
39057
+ $[1] = openExternalLink;
39058
+ $[2] = t1;
39059
+ } else {
39060
+ t1 = $[2];
39061
+ }
39062
+ let t2;
39063
+ if ($[3] !== children || $[4] !== href || $[5] !== t1) {
39064
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("a", {
39065
+ href,
39066
+ target: "_blank",
39067
+ rel: "noopener noreferrer",
39068
+ onClick: t1,
39069
+ className: "\n text-sigil-usage-hint-foreground no-underline\n hover:underline\n ",
39070
+ children
39071
+ });
39072
+ $[3] = children;
39073
+ $[4] = href;
39074
+ $[5] = t1;
39075
+ $[6] = t2;
39076
+ } else {
39077
+ t2 = $[6];
39078
+ }
39079
+ return t2;
39080
+ };
39081
+ var TextButton = (t0) => {
39082
+ const $ = (0, import_compiler_runtime8.c)(3);
39083
+ const {
39084
+ onClick,
39085
+ children
39086
+ } = t0;
39087
+ let t1;
39088
+ if ($[0] !== children || $[1] !== onClick) {
39089
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", {
39090
+ onClick,
39091
+ className: "\n cursor-pointer text-sigil-usage-hint-foreground\n hover:underline\n ",
39092
+ children
39093
+ });
39094
+ $[0] = children;
39095
+ $[1] = onClick;
39096
+ $[2] = t1;
39097
+ } else {
39098
+ t1 = $[2];
39099
+ }
39100
+ return t1;
39101
+ };
39102
+ var NoToolboxChildren = (t0) => {
39103
+ const $ = (0, import_compiler_runtime8.c)(3);
39104
+ const {
39105
+ text
39106
+ } = t0;
39107
+ let t1;
39108
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
39109
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Icon2, {
39110
+ icon: "handyman",
39111
+ className: "text-block-icon"
39112
+ });
39113
+ $[0] = t1;
39114
+ } else {
39115
+ t1 = $[0];
39116
+ }
39117
+ let t2;
39118
+ if ($[1] !== text) {
39119
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(SizeAwareDiv, {
39120
+ className: "\n flex grow flex-col items-center justify-center gap-1 bg-sigil-bg-light\n p-1 text-sigil-foreground-muted\n ",
39121
+ children: [t1, /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", {
39122
+ className: "text-center",
39123
+ children: text
39124
+ })]
39125
+ });
39126
+ $[1] = text;
39127
+ $[2] = t2;
39128
+ } else {
39129
+ t2 = $[2];
39130
+ }
39131
+ return t2;
39132
+ };
39133
+
39120
39134
  // src/components/frontend/toolbox/outputs.tsx
39121
39135
  var import_jsx_runtime45 = __toESM(require_jsx_runtime());
39122
39136
  var DmxConnectionSettings = (t0) => {
39123
- const $ = (0, import_compiler_runtime10.c)(41);
39137
+ const $ = (0, import_compiler_runtime9.c)(41);
39124
39138
  const {
39125
39139
  data,
39126
39140
  updateSettings
39127
39141
  } = t0;
39128
39142
  const {
39129
39143
  commitChanges
39130
- } = (0, import_react34.useContext)(ChangeCommitContext);
39144
+ } = (0, import_react33.useContext)(ChangeCommitContext);
39131
39145
  const {
39132
39146
  getNetworkInterfaces
39133
- } = (0, import_react34.useContext)(NetworkContext);
39134
- const [interfaces, setInterfaces] = (0, import_react34.useState)(null);
39147
+ } = (0, import_react33.useContext)(NetworkContext);
39148
+ const [interfaces, setInterfaces] = (0, import_react33.useState)(null);
39135
39149
  let t1;
39136
39150
  if ($[0] !== getNetworkInterfaces) {
39137
39151
  t1 = () => {
@@ -39158,7 +39172,7 @@ Data Directory: ${system.dataDirectory}`
39158
39172
  t2 = $[3];
39159
39173
  t3 = $[4];
39160
39174
  }
39161
- (0, import_react34.useEffect)(t2, t3);
39175
+ (0, import_react33.useEffect)(t2, t3);
39162
39176
  if (data.type !== "artnet") {
39163
39177
  return null;
39164
39178
  }
@@ -39402,8 +39416,8 @@ Data Directory: ${system.dataDirectory}`
39402
39416
  const {
39403
39417
  config,
39404
39418
  updateConfig
39405
- } = (0, import_react34.useContext)(ConfigContext);
39406
- const [newData, setNewData] = (0, import_react34.useState)({
39419
+ } = (0, import_react33.useContext)(ConfigContext);
39420
+ const [newData, setNewData] = (0, import_react33.useState)({
39407
39421
  name: "",
39408
39422
  enabled: true,
39409
39423
  definition: {
@@ -39416,7 +39430,7 @@ Data Directory: ${system.dataDirectory}`
39416
39430
  },
39417
39431
  link: null
39418
39432
  });
39419
- const updateSettings = (0, import_react34.useCallback)((change) => {
39433
+ const updateSettings = (0, import_react33.useCallback)((change) => {
39420
39434
  if (target.type === "add") {
39421
39435
  setNewData(change);
39422
39436
  } else {
@@ -39435,13 +39449,13 @@ Data Directory: ${system.dataDirectory}`
39435
39449
  });
39436
39450
  }
39437
39451
  }, [target, updateConfig]);
39438
- const updateDefinition = (0, import_react34.useCallback)((change_0) => {
39452
+ const updateDefinition = (0, import_react33.useCallback)((change_0) => {
39439
39453
  updateSettings((current_0) => ({
39440
39454
  ...current_0,
39441
39455
  definition: change_0(current_0.definition)
39442
39456
  }));
39443
39457
  }, [updateSettings]);
39444
- const addOutput = (0, import_react34.useCallback)(() => {
39458
+ const addOutput = (0, import_react33.useCallback)(() => {
39445
39459
  updateConfig((current_1) => {
39446
39460
  return {
39447
39461
  ...current_1,
@@ -39455,7 +39469,7 @@ Data Directory: ${system.dataDirectory}`
39455
39469
  }, [newData, close, updateConfig]);
39456
39470
  const resolvedTarget = target.type === "add" ? "add" : config.outputs?.[target.uuid];
39457
39471
  const data = resolvedTarget === "add" ? newData : resolvedTarget;
39458
- const commitChanges = (0, import_react34.useCallback)(() => {
39472
+ const commitChanges = (0, import_react33.useCallback)(() => {
39459
39473
  if (target.type === "add") {
39460
39474
  addOutput();
39461
39475
  } else {
@@ -39544,7 +39558,7 @@ Data Directory: ${system.dataDirectory}`
39544
39558
  });
39545
39559
  };
39546
39560
  var OutputDisplay = (t0) => {
39547
- const $ = (0, import_compiler_runtime10.c)(57);
39561
+ const $ = (0, import_compiler_runtime9.c)(57);
39548
39562
  const {
39549
39563
  uuid,
39550
39564
  config,
@@ -39555,7 +39569,7 @@ Data Directory: ${system.dataDirectory}`
39555
39569
  const applicationState = useApplicationState();
39556
39570
  const {
39557
39571
  updateConfig
39558
- } = (0, import_react34.useContext)(ConfigContext);
39572
+ } = (0, import_react33.useContext)(ConfigContext);
39559
39573
  let t1;
39560
39574
  if ($[0] !== setAssignToOutput || $[1] !== updateConfig || $[2] !== uuid) {
39561
39575
  t1 = () => {
@@ -39819,7 +39833,7 @@ Data Directory: ${system.dataDirectory}`
39819
39833
  return t24;
39820
39834
  };
39821
39835
  var OutputsSection = (t0) => {
39822
- const $ = (0, import_compiler_runtime10.c)(11);
39836
+ const $ = (0, import_compiler_runtime9.c)(11);
39823
39837
  const {
39824
39838
  setDialogMode,
39825
39839
  assignToOutput,
@@ -39827,7 +39841,7 @@ Data Directory: ${system.dataDirectory}`
39827
39841
  } = t0;
39828
39842
  const {
39829
39843
  config
39830
- } = (0, import_react34.useContext)(ConfigContext);
39844
+ } = (0, import_react33.useContext)(ConfigContext);
39831
39845
  let t1;
39832
39846
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
39833
39847
  t1 = ["artnet"];
@@ -39913,18 +39927,18 @@ Data Directory: ${system.dataDirectory}`
39913
39927
  }
39914
39928
 
39915
39929
  // src/components/frontend/toolbox/generators.tsx
39916
- var import_compiler_runtime11 = __toESM(require_compiler_runtime());
39917
- var import_react35 = __toESM(require_react());
39930
+ var import_compiler_runtime10 = __toESM(require_compiler_runtime());
39931
+ var import_react34 = __toESM(require_react());
39918
39932
  var import_jsx_runtime46 = __toESM(require_jsx_runtime());
39919
39933
  var ClockSpecificSettings = (t0) => {
39920
- const $ = (0, import_compiler_runtime11.c)(9);
39934
+ const $ = (0, import_compiler_runtime10.c)(9);
39921
39935
  const {
39922
39936
  data,
39923
39937
  updateSettings
39924
39938
  } = t0;
39925
39939
  const {
39926
39940
  commitChanges
39927
- } = (0, import_react35.useContext)(ChangeCommitContext);
39941
+ } = (0, import_react34.useContext)(ChangeCommitContext);
39928
39942
  if (data.type !== "clock") {
39929
39943
  return null;
39930
39944
  }
@@ -39993,15 +40007,15 @@ Data Directory: ${system.dataDirectory}`
39993
40007
  const {
39994
40008
  config,
39995
40009
  updateConfig
39996
- } = (0, import_react35.useContext)(ConfigContext);
39997
- const [newData, setNewData] = (0, import_react35.useState)({
40010
+ } = (0, import_react34.useContext)(ConfigContext);
40011
+ const [newData, setNewData] = (0, import_react34.useState)({
39998
40012
  name: "",
39999
40013
  definition: {
40000
40014
  type: generator,
40001
40015
  speed: 1
40002
40016
  }
40003
40017
  });
40004
- const updateSettings = (0, import_react35.useCallback)((change) => {
40018
+ const updateSettings = (0, import_react34.useCallback)((change) => {
40005
40019
  if (target.type === "add") {
40006
40020
  setNewData(change);
40007
40021
  } else {
@@ -40020,13 +40034,13 @@ Data Directory: ${system.dataDirectory}`
40020
40034
  });
40021
40035
  }
40022
40036
  }, [target, updateConfig]);
40023
- const updateDefinition = (0, import_react35.useCallback)((change_0) => {
40037
+ const updateDefinition = (0, import_react34.useCallback)((change_0) => {
40024
40038
  updateSettings((current_0) => ({
40025
40039
  ...current_0,
40026
40040
  definition: change_0(current_0.definition)
40027
40041
  }));
40028
40042
  }, [updateSettings]);
40029
- const addGenerator = (0, import_react35.useCallback)(() => {
40043
+ const addGenerator = (0, import_react34.useCallback)(() => {
40030
40044
  updateConfig((current_1) => {
40031
40045
  return {
40032
40046
  ...current_1,
@@ -40040,7 +40054,7 @@ Data Directory: ${system.dataDirectory}`
40040
40054
  }, [newData, close, updateConfig]);
40041
40055
  const resolvedTarget = target.type === "add" ? "add" : config.generators?.[target.uuid];
40042
40056
  const data = resolvedTarget === "add" ? newData : resolvedTarget;
40043
- const commitChanges = (0, import_react35.useCallback)(() => {
40057
+ const commitChanges = (0, import_react34.useCallback)(() => {
40044
40058
  if (target.type === "add") {
40045
40059
  addGenerator();
40046
40060
  } else {
@@ -40109,7 +40123,7 @@ Data Directory: ${system.dataDirectory}`
40109
40123
  });
40110
40124
  };
40111
40125
  var GeneratorDisplay = (t0) => {
40112
- const $ = (0, import_compiler_runtime11.c)(19);
40126
+ const $ = (0, import_compiler_runtime10.c)(19);
40113
40127
  const {
40114
40128
  uuid,
40115
40129
  config,
@@ -40203,14 +40217,14 @@ Data Directory: ${system.dataDirectory}`
40203
40217
  return t8;
40204
40218
  };
40205
40219
  var GeneratorsSection = (t0) => {
40206
- const $ = (0, import_compiler_runtime11.c)(10);
40220
+ const $ = (0, import_compiler_runtime10.c)(10);
40207
40221
  const {
40208
40222
  setDialogMode,
40209
40223
  assignToOutput
40210
40224
  } = t0;
40211
40225
  const {
40212
40226
  config
40213
- } = (0, import_react35.useContext)(ConfigContext);
40227
+ } = (0, import_react34.useContext)(ConfigContext);
40214
40228
  let t1;
40215
40229
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
40216
40230
  t1 = ["clock"];
@@ -40281,22 +40295,22 @@ Data Directory: ${system.dataDirectory}`
40281
40295
  };
40282
40296
 
40283
40297
  // src/components/frontend/toolbox/inputs.tsx
40284
- var import_compiler_runtime12 = __toESM(require_compiler_runtime());
40285
- var import_react36 = __toESM(require_react());
40298
+ var import_compiler_runtime11 = __toESM(require_compiler_runtime());
40299
+ var import_react35 = __toESM(require_react());
40286
40300
  var import_jsx_runtime47 = __toESM(require_jsx_runtime());
40287
40301
  var DmxConnectionSettings2 = (t0) => {
40288
- const $ = (0, import_compiler_runtime12.c)(31);
40302
+ const $ = (0, import_compiler_runtime11.c)(31);
40289
40303
  const {
40290
40304
  data,
40291
40305
  updateSettings
40292
40306
  } = t0;
40293
40307
  const {
40294
40308
  commitChanges
40295
- } = (0, import_react36.useContext)(ChangeCommitContext);
40309
+ } = (0, import_react35.useContext)(ChangeCommitContext);
40296
40310
  const {
40297
40311
  getNetworkInterfaces
40298
- } = (0, import_react36.useContext)(NetworkContext);
40299
- const [interfaces, setInterfaces] = (0, import_react36.useState)(null);
40312
+ } = (0, import_react35.useContext)(NetworkContext);
40313
+ const [interfaces, setInterfaces] = (0, import_react35.useState)(null);
40300
40314
  let t1;
40301
40315
  if ($[0] !== getNetworkInterfaces) {
40302
40316
  t1 = () => {
@@ -40323,7 +40337,7 @@ Data Directory: ${system.dataDirectory}`
40323
40337
  t2 = $[3];
40324
40338
  t3 = $[4];
40325
40339
  }
40326
- (0, import_react36.useEffect)(t2, t3);
40340
+ (0, import_react35.useEffect)(t2, t3);
40327
40341
  if (data.type !== "artnet") {
40328
40342
  return null;
40329
40343
  }
@@ -40475,15 +40489,15 @@ Data Directory: ${system.dataDirectory}`
40475
40489
  return t16;
40476
40490
  };
40477
40491
  var TCNetConnectionSettings = (t0) => {
40478
- const $ = (0, import_compiler_runtime12.c)(21);
40492
+ const $ = (0, import_compiler_runtime11.c)(21);
40479
40493
  const {
40480
40494
  data,
40481
40495
  updateSettings
40482
40496
  } = t0;
40483
40497
  const {
40484
40498
  getNetworkInterfaces
40485
- } = (0, import_react36.useContext)(NetworkContext);
40486
- const [interfaces, setInterfaces] = (0, import_react36.useState)(null);
40499
+ } = (0, import_react35.useContext)(NetworkContext);
40500
+ const [interfaces, setInterfaces] = (0, import_react35.useState)(null);
40487
40501
  let t1;
40488
40502
  if ($[0] !== getNetworkInterfaces) {
40489
40503
  t1 = () => {
@@ -40510,7 +40524,7 @@ Data Directory: ${system.dataDirectory}`
40510
40524
  t2 = $[3];
40511
40525
  t3 = $[4];
40512
40526
  }
40513
- (0, import_react36.useEffect)(t2, t3);
40527
+ (0, import_react35.useEffect)(t2, t3);
40514
40528
  if (data.type !== "tcnet") {
40515
40529
  return null;
40516
40530
  }
@@ -40615,8 +40629,8 @@ Data Directory: ${system.dataDirectory}`
40615
40629
  const {
40616
40630
  config,
40617
40631
  updateConfig
40618
- } = (0, import_react36.useContext)(ConfigContext);
40619
- const [newData, setNewData] = (0, import_react36.useState)({
40632
+ } = (0, import_react35.useContext)(ConfigContext);
40633
+ const [newData, setNewData] = (0, import_react35.useState)({
40620
40634
  name: "",
40621
40635
  enabled: true,
40622
40636
  definition: input === "artnet" ? {
@@ -40628,7 +40642,7 @@ Data Directory: ${system.dataDirectory}`
40628
40642
  iface: ""
40629
40643
  }
40630
40644
  });
40631
- const updateSettings = (0, import_react36.useCallback)((change) => {
40645
+ const updateSettings = (0, import_react35.useCallback)((change) => {
40632
40646
  if (target.type === "add") {
40633
40647
  setNewData(change);
40634
40648
  } else {
@@ -40647,13 +40661,13 @@ Data Directory: ${system.dataDirectory}`
40647
40661
  });
40648
40662
  }
40649
40663
  }, [target, updateConfig]);
40650
- const updateDefinition = (0, import_react36.useCallback)((change_0) => {
40664
+ const updateDefinition = (0, import_react35.useCallback)((change_0) => {
40651
40665
  updateSettings((current_0) => ({
40652
40666
  ...current_0,
40653
40667
  definition: change_0(current_0.definition)
40654
40668
  }));
40655
40669
  }, [updateSettings]);
40656
- const addInput = (0, import_react36.useCallback)(() => {
40670
+ const addInput = (0, import_react35.useCallback)(() => {
40657
40671
  updateConfig((current_1) => {
40658
40672
  return {
40659
40673
  ...current_1,
@@ -40667,7 +40681,7 @@ Data Directory: ${system.dataDirectory}`
40667
40681
  }, [newData, close, updateConfig]);
40668
40682
  const resolvedTarget = target.type === "add" ? "add" : config.inputs?.[target.uuid];
40669
40683
  const data = resolvedTarget === "add" ? newData : resolvedTarget;
40670
- const commitChanges = (0, import_react36.useCallback)(() => {
40684
+ const commitChanges = (0, import_react35.useCallback)(() => {
40671
40685
  if (target.type === "add") {
40672
40686
  addInput();
40673
40687
  } else {
@@ -40759,7 +40773,7 @@ Data Directory: ${system.dataDirectory}`
40759
40773
  });
40760
40774
  };
40761
40775
  var InputDisplay = (t0) => {
40762
- const $ = (0, import_compiler_runtime12.c)(29);
40776
+ const $ = (0, import_compiler_runtime11.c)(29);
40763
40777
  const {
40764
40778
  uuid,
40765
40779
  config,
@@ -40768,7 +40782,7 @@ Data Directory: ${system.dataDirectory}`
40768
40782
  } = t0;
40769
40783
  const {
40770
40784
  updateConfig
40771
- } = (0, import_react36.useContext)(ConfigContext);
40785
+ } = (0, import_react35.useContext)(ConfigContext);
40772
40786
  const {
40773
40787
  inputs
40774
40788
  } = useApplicationState();
@@ -40909,14 +40923,14 @@ Data Directory: ${system.dataDirectory}`
40909
40923
  return t13;
40910
40924
  };
40911
40925
  var InputsSection = (t0) => {
40912
- const $ = (0, import_compiler_runtime12.c)(10);
40926
+ const $ = (0, import_compiler_runtime11.c)(10);
40913
40927
  const {
40914
40928
  setDialogMode,
40915
40929
  assignToOutput
40916
40930
  } = t0;
40917
40931
  const {
40918
40932
  config
40919
- } = (0, import_react36.useContext)(ConfigContext);
40933
+ } = (0, import_react35.useContext)(ConfigContext);
40920
40934
  let t1;
40921
40935
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
40922
40936
  t1 = ["artnet", "tcnet"];
@@ -40999,14 +41013,15 @@ Data Directory: ${system.dataDirectory}`
40999
41013
  }
41000
41014
 
41001
41015
  // src/components/frontend/toolbox/settings.tsx
41002
- var import_compiler_runtime14 = __toESM(require_compiler_runtime());
41016
+ var import_compiler_runtime13 = __toESM(require_compiler_runtime());
41017
+ var import_react38 = __toESM(require_react());
41003
41018
 
41004
41019
  // ../../packages/sigil/dist/frontend/appearance.js
41005
- var import_compiler_runtime13 = __toESM(require_compiler_runtime(), 1);
41006
- var import_react37 = __toESM(require_react(), 1);
41020
+ var import_compiler_runtime12 = __toESM(require_compiler_runtime(), 1);
41021
+ var import_react36 = __toESM(require_react(), 1);
41007
41022
  var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
41008
41023
  var AppearanceSwitcher = (t0) => {
41009
- const $ = (0, import_compiler_runtime13.c)(16);
41024
+ const $ = (0, import_compiler_runtime12.c)(16);
41010
41025
  const {
41011
41026
  color,
41012
41027
  onColorChange
@@ -41120,9 +41135,9 @@ Data Directory: ${system.dataDirectory}`
41120
41135
  };
41121
41136
 
41122
41137
  // ../../packages/sigil/dist/frontend/preferences.js
41123
- var import_react38 = __toESM(require_react(), 1);
41138
+ var import_react37 = __toESM(require_react(), 1);
41124
41139
  var createBrowserPreferencesHook = (def) => () => {
41125
- const [preferences, setPreference] = (0, import_react38.useState)(() => {
41140
+ const [preferences, setPreference] = (0, import_react37.useState)(() => {
41126
41141
  const stored = window.localStorage.getItem(def.key);
41127
41142
  if (stored) {
41128
41143
  try {
@@ -41141,7 +41156,7 @@ Data Directory: ${system.dataDirectory}`
41141
41156
  newValue
41142
41157
  }));
41143
41158
  };
41144
- (0, import_react38.useEffect)(() => {
41159
+ (0, import_react37.useEffect)(() => {
41145
41160
  const onStorageChange = (event) => {
41146
41161
  if (event.key === def.key) {
41147
41162
  const newValue = event.newValue;
@@ -41182,8 +41197,18 @@ Data Directory: ${system.dataDirectory}`
41182
41197
 
41183
41198
  // src/components/frontend/toolbox/settings.tsx
41184
41199
  var import_jsx_runtime49 = __toESM(require_jsx_runtime());
41200
+ var ENABLED_DISABLED_OPTIONS = [{
41201
+ value: "enabled",
41202
+ label: STRINGS.general.enabled
41203
+ }, {
41204
+ value: "disabled",
41205
+ label: STRINGS.general.disabled
41206
+ }];
41207
+ var DATE_FORMATTER = new Intl.DateTimeFormat(void 0, {
41208
+ timeStyle: "medium"
41209
+ });
41185
41210
  var Settings = (t0) => {
41186
- const $ = (0, import_compiler_runtime14.c)(16);
41211
+ const $ = (0, import_compiler_runtime13.c)(29);
41187
41212
  const {
41188
41213
  setWindowMode
41189
41214
  } = t0;
@@ -41191,6 +41216,13 @@ Data Directory: ${system.dataDirectory}`
41191
41216
  preferences,
41192
41217
  updateBrowserPrefs
41193
41218
  } = useBrowserPreferences();
41219
+ const {
41220
+ config,
41221
+ updateConfig
41222
+ } = (0, import_react38.useContext)(ConfigContext);
41223
+ const {
41224
+ updates
41225
+ } = useApplicationState();
41194
41226
  let t1;
41195
41227
  let t2;
41196
41228
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
@@ -41259,15 +41291,9 @@ Data Directory: ${system.dataDirectory}`
41259
41291
  }
41260
41292
  let t8;
41261
41293
  if ($[10] !== preferences.color || $[11] !== t7) {
41262
- t8 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", {
41263
- className: "\n grow basis-0 overflow-y-auto bg-sigil-bg-light scrollbar-sigil\n ",
41264
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
41265
- className: "control-grid-large",
41266
- children: [t6, /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(AppearanceSwitcher, {
41267
- color: preferences.color,
41268
- onColorChange: t7
41269
- })]
41270
- })
41294
+ t8 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(AppearanceSwitcher, {
41295
+ color: preferences.color,
41296
+ onColorChange: t7
41271
41297
  });
41272
41298
  $[10] = preferences.color;
41273
41299
  $[11] = t7;
@@ -41276,44 +41302,1090 @@ Data Directory: ${system.dataDirectory}`
41276
41302
  t8 = $[12];
41277
41303
  }
41278
41304
  let t9;
41279
- if ($[13] !== t5 || $[14] !== t8) {
41280
- t9 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
41305
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
41306
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ControlLabel, {
41307
+ children: STRINGS.updates.settingsLabel
41308
+ });
41309
+ $[13] = t9;
41310
+ } else {
41311
+ t9 = $[13];
41312
+ }
41313
+ const t10 = config.checkForUpdates ? "enabled" : "disabled";
41314
+ let t11;
41315
+ if ($[14] !== updateConfig) {
41316
+ t11 = (value) => updateConfig((current_0) => ({
41317
+ ...current_0,
41318
+ checkForUpdates: value === "enabled"
41319
+ }));
41320
+ $[14] = updateConfig;
41321
+ $[15] = t11;
41322
+ } else {
41323
+ t11 = $[15];
41324
+ }
41325
+ let t12;
41326
+ if ($[16] !== t10 || $[17] !== t11) {
41327
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ControlSelect, {
41328
+ value: t10,
41329
+ options: ENABLED_DISABLED_OPTIONS,
41330
+ onChange: t11,
41331
+ variant: "large"
41332
+ });
41333
+ $[16] = t10;
41334
+ $[17] = t11;
41335
+ $[18] = t12;
41336
+ } else {
41337
+ t12 = $[18];
41338
+ }
41339
+ let t13;
41340
+ if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
41341
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ControlDetails, {
41342
+ children: STRINGS.updates.settingsDetails
41343
+ });
41344
+ $[19] = t13;
41345
+ } else {
41346
+ t13 = $[19];
41347
+ }
41348
+ let t14;
41349
+ if ($[20] !== updates) {
41350
+ t14 = updates && "lastCheckedMillis" in updates && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ControlDetails, {
41351
+ children: STRINGS.updates.lastChecked(DATE_FORMATTER.format(updates.lastCheckedMillis))
41352
+ });
41353
+ $[20] = updates;
41354
+ $[21] = t14;
41355
+ } else {
41356
+ t14 = $[21];
41357
+ }
41358
+ let t15;
41359
+ if ($[22] !== t12 || $[23] !== t14 || $[24] !== t8) {
41360
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", {
41361
+ className: "\n grow basis-0 overflow-y-auto bg-sigil-bg-light scrollbar-sigil\n ",
41362
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
41363
+ className: "control-grid-large",
41364
+ children: [t6, t8, t9, t12, t13, t14]
41365
+ })
41366
+ });
41367
+ $[22] = t12;
41368
+ $[23] = t14;
41369
+ $[24] = t8;
41370
+ $[25] = t15;
41371
+ } else {
41372
+ t15 = $[25];
41373
+ }
41374
+ let t16;
41375
+ if ($[26] !== t15 || $[27] !== t5) {
41376
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", {
41281
41377
  className: "flex grow flex-col",
41282
- children: [t5, t8]
41378
+ children: [t5, t15]
41283
41379
  });
41284
- $[13] = t5;
41285
- $[14] = t8;
41286
- $[15] = t9;
41380
+ $[26] = t15;
41381
+ $[27] = t5;
41382
+ $[28] = t16;
41287
41383
  } else {
41288
- t9 = $[15];
41384
+ t16 = $[28];
41289
41385
  }
41290
- return t9;
41386
+ return t16;
41291
41387
  };
41292
41388
 
41293
- // src/components/frontend/toolbox/root.tsx
41389
+ // src/components/frontend/toolbox/license.tsx
41390
+ var import_compiler_runtime18 = __toESM(require_compiler_runtime());
41391
+ var import_react41 = __toESM(require_react());
41392
+
41393
+ // src/components/frontend/toolbox/logo.tsx
41394
+ var import_compiler_runtime14 = __toESM(require_compiler_runtime());
41294
41395
  var import_jsx_runtime50 = __toESM(require_jsx_runtime());
41295
- var ToolboxRoot = (t0) => {
41296
- const $ = (0, import_compiler_runtime15.c)(64);
41396
+ var TimecodeToolboxLogo = (props) => {
41397
+ const $ = (0, import_compiler_runtime14.c)(33);
41398
+ let t0;
41399
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
41400
+ t0 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41401
+ id: "b",
41402
+ maskUnits: "userSpaceOnUse",
41403
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41404
+ fill: "#fff",
41405
+ "stroke-linecap": "round",
41406
+ "stroke-linejoin": "round",
41407
+ "stroke-width": "50.12",
41408
+ d: "m347.83 438.376 11.825 188.138-36.885 62.692v411.759h986.987v-411.76l-36.886-62.691 11.825-188.138z"
41409
+ })
41410
+ });
41411
+ $[0] = t0;
41412
+ } else {
41413
+ t0 = $[0];
41414
+ }
41415
+ let t1;
41416
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
41417
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41418
+ id: "g",
41419
+ maskUnits: "userSpaceOnUse",
41420
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41421
+ fill: "#fff",
41422
+ "stroke-linecap": "round",
41423
+ "stroke-linejoin": "round",
41424
+ "stroke-width": "5.581",
41425
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41426
+ })
41427
+ });
41428
+ $[1] = t1;
41429
+ } else {
41430
+ t1 = $[1];
41431
+ }
41432
+ let t2;
41433
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
41434
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41435
+ id: "f",
41436
+ maskUnits: "userSpaceOnUse",
41437
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41438
+ fill: "#fff",
41439
+ "stroke-linecap": "round",
41440
+ "stroke-linejoin": "round",
41441
+ "stroke-width": "5.581",
41442
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41443
+ })
41444
+ });
41445
+ $[2] = t2;
41446
+ } else {
41447
+ t2 = $[2];
41448
+ }
41449
+ let t3;
41450
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
41451
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41452
+ id: "e",
41453
+ maskUnits: "userSpaceOnUse",
41454
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41455
+ fill: "#fff",
41456
+ "stroke-linecap": "round",
41457
+ "stroke-linejoin": "round",
41458
+ "stroke-width": "5.581",
41459
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41460
+ })
41461
+ });
41462
+ $[3] = t3;
41463
+ } else {
41464
+ t3 = $[3];
41465
+ }
41466
+ let t4;
41467
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
41468
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41469
+ id: "d",
41470
+ maskUnits: "userSpaceOnUse",
41471
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41472
+ fill: "#fff",
41473
+ "stroke-linecap": "round",
41474
+ "stroke-linejoin": "round",
41475
+ "stroke-width": "5.581",
41476
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41477
+ })
41478
+ });
41479
+ $[4] = t4;
41480
+ } else {
41481
+ t4 = $[4];
41482
+ }
41483
+ let t5;
41484
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
41485
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41486
+ id: "c",
41487
+ maskUnits: "userSpaceOnUse",
41488
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41489
+ fill: "#fff",
41490
+ "stroke-linecap": "round",
41491
+ "stroke-linejoin": "round",
41492
+ "stroke-width": "5.581",
41493
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41494
+ })
41495
+ });
41496
+ $[5] = t5;
41497
+ } else {
41498
+ t5 = $[5];
41499
+ }
41500
+ let t6;
41501
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
41502
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41503
+ id: "k",
41504
+ maskUnits: "userSpaceOnUse",
41505
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41506
+ fill: "#fff",
41507
+ "stroke-linecap": "round",
41508
+ "stroke-linejoin": "round",
41509
+ "stroke-width": "7.033",
41510
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9Z"
41511
+ })
41512
+ });
41513
+ $[6] = t6;
41514
+ } else {
41515
+ t6 = $[6];
41516
+ }
41517
+ let t7;
41518
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
41519
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41520
+ id: "j",
41521
+ maskUnits: "userSpaceOnUse",
41522
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41523
+ fill: "#fff",
41524
+ "stroke-linecap": "round",
41525
+ "stroke-linejoin": "round",
41526
+ "stroke-width": "7.033",
41527
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9Z"
41528
+ })
41529
+ });
41530
+ $[7] = t7;
41531
+ } else {
41532
+ t7 = $[7];
41533
+ }
41534
+ let t8;
41535
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
41536
+ t8 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41537
+ id: "i",
41538
+ maskUnits: "userSpaceOnUse",
41539
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41540
+ fill: "#fff",
41541
+ "stroke-linecap": "round",
41542
+ "stroke-linejoin": "round",
41543
+ "stroke-width": "7.033",
41544
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9Z"
41545
+ })
41546
+ });
41547
+ $[8] = t8;
41548
+ } else {
41549
+ t8 = $[8];
41550
+ }
41551
+ let t9;
41552
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
41553
+ t9 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("mask", {
41554
+ id: "h",
41555
+ maskUnits: "userSpaceOnUse",
41556
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41557
+ fill: "#fff",
41558
+ "stroke-linecap": "round",
41559
+ "stroke-linejoin": "round",
41560
+ "stroke-width": "7.033",
41561
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9Z"
41562
+ })
41563
+ });
41564
+ $[9] = t9;
41565
+ } else {
41566
+ t9 = $[9];
41567
+ }
41568
+ let t10;
41569
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
41570
+ t10 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("defs", {
41571
+ children: [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("filter", {
41572
+ id: "a",
41573
+ width: "1.201",
41574
+ height: "1.19",
41575
+ x: "-.101",
41576
+ y: "-.074",
41577
+ "color-interpolation-filters": "sRGB",
41578
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("feGaussianBlur", {
41579
+ stdDeviation: "10.298"
41580
+ })
41581
+ })]
41582
+ });
41583
+ $[10] = t10;
41584
+ } else {
41585
+ t10 = $[10];
41586
+ }
41587
+ let t11;
41588
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
41589
+ t11 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("g", {
41590
+ stroke: "#000",
41591
+ "stroke-linecap": "round",
41592
+ "stroke-linejoin": "round",
41593
+ filter: "url(#a)",
41594
+ opacity: ".25",
41595
+ transform: "translate(-216.03 -84.295)scale(1.10099)",
41596
+ children: [/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41597
+ "stroke-width": "153.76517303999998",
41598
+ d: "m337.226 438.886 12.093 192.397-37.72 64.11v421.08h1009.328v-421.08l-37.72-64.11 12.093-192.397z",
41599
+ opacity: "1"
41600
+ }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41601
+ "stroke-width": "80.096",
41602
+ d: "m671.405 893.22 272.7-357.92s31.213-32.62 41.864-63.169.898-65.581-2.235-94.827c-4.866-45.427 53.846-99.798 53.846-99.798s63.494-44.226 69.93-36.68-42.14 86.544-36.064 111.056c9.632 38.858 73.216 67.84 104.599 53.149 31.382-14.691 49.22-108.795 62.171-111.964s28.353 77.775 26.435 124.473-47.523 75.82-75.955 84.554-64.694 9.851-93.104 31.972c-28.41 22.12-328.269 427.981-328.269 427.981z"
41603
+ }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41604
+ "stroke-width": "80.096",
41605
+ d: "m386.903 318.933 69.855 140.41 28.443-11.092 255.918 349.22 36.307-26.606L521.614 421.79l19.583-24.326-112.85-108.903z"
41606
+ })]
41607
+ });
41608
+ $[11] = t11;
41609
+ } else {
41610
+ t11 = $[11];
41611
+ }
41612
+ let t12;
41613
+ let t13;
41614
+ let t14;
41615
+ let t15;
41616
+ let t16;
41617
+ let t17;
41618
+ let t18;
41619
+ let t19;
41620
+ let t20;
41621
+ let t21;
41622
+ let t22;
41623
+ let t23;
41624
+ let t24;
41625
+ let t25;
41626
+ let t26;
41627
+ let t27;
41628
+ let t28;
41629
+ let t29;
41630
+ let t30;
41631
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
41632
+ t12 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("g", {
41633
+ stroke: "#fff",
41634
+ "stroke-linecap": "round",
41635
+ "stroke-linejoin": "round",
41636
+ children: [/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41637
+ fill: "#8c63d9",
41638
+ "stroke-width": "165.54595738999998",
41639
+ d: "m166.927 398.352 13.02 207.137-40.611 69.024v453.341h1086.661V674.513l-40.61-69.024 13.02-207.137H424.595Z"
41640
+ }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41641
+ fill: "none",
41642
+ "stroke-width": "73.48667853999999",
41643
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9z"
41644
+ }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41645
+ fill: "none",
41646
+ "stroke-width": "66.746",
41647
+ d: "m671.405 893.22 272.7-357.92s31.213-32.62 41.864-63.169.898-65.581-2.235-94.827c-4.866-45.427 53.846-99.798 53.846-99.798s63.494-44.226 69.93-36.68-42.14 86.544-36.064 111.056c9.632 38.858 73.216 67.84 104.599 53.149 31.382-14.691 49.22-108.795 62.171-111.964s28.353 77.775 26.435 124.473-47.523 75.82-75.955 84.554-64.694 9.851-93.104 31.972c-28.41 22.12-328.269 427.981-328.269 427.981z",
41648
+ transform: "translate(-216.03 -84.295)scale(1.10099)"
41649
+ })]
41650
+ });
41651
+ t13 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41652
+ fill: "#8c63d9",
41653
+ stroke: "#263238",
41654
+ "stroke-linecap": "round",
41655
+ "stroke-linejoin": "round",
41656
+ "stroke-width": "55.182",
41657
+ d: "m166.927 398.352 13.02 207.137-40.611 69.023v453.342h1086.661V674.512l-40.61-69.023 13.02-207.137z"
41658
+ });
41659
+ t14 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41660
+ fill: "#cc7000",
41661
+ stroke: "#ffba66",
41662
+ "stroke-linecap": "round",
41663
+ "stroke-linejoin": "round",
41664
+ "stroke-width": "38.593",
41665
+ d: "M322.77 689.206h986.986l-36.885-62.693H359.655Z",
41666
+ mask: "url(#b)",
41667
+ transform: "translate(-216.03 -84.295)scale(1.10099)"
41668
+ });
41669
+ t15 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41670
+ fill: "#ff8c00",
41671
+ d: "m1185.387 605.49 13.02-207.138H166.926l13.02 207.137z"
41672
+ });
41673
+ t16 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41674
+ fill: "none",
41675
+ stroke: "#263238",
41676
+ "stroke-linecap": "round",
41677
+ "stroke-linejoin": "round",
41678
+ "stroke-width": "29.395",
41679
+ d: "m523.18 899.13 300.24-394.065s34.365-35.915 46.091-69.549c11.727-33.634.988-72.204-2.46-104.403-5.358-50.016 59.283-109.877 59.283-109.877s69.906-48.692 76.993-40.385-46.397 95.284-39.707 122.272c10.605 42.782 80.61 74.691 115.162 58.516s54.191-119.781 68.45-123.27c14.259-3.49 31.217 85.629 29.104 137.042s-52.322 83.478-83.625 93.094-71.227 10.846-102.507 35.2-361.42 471.203-361.42 471.203z"
41680
+ });
41681
+ t17 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41682
+ fill: "#eceff1",
41683
+ d: "m916.084 52.25 420.493 180.531-532.698 916.066-476.546-308.58Z",
41684
+ mask: "url(#c)"
41685
+ });
41686
+ t18 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41687
+ fill: "#fff",
41688
+ d: "M856.06 362.55s35.273 37.417 44.671 47.481 30.133 23.878 30.133 23.878-19.577-12.395-133.162 132.35c-113.586 144.744-274.29 356.33-274.29 356.33l-74.43-62.208z",
41689
+ mask: "url(#d)"
41690
+ });
41691
+ t19 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41692
+ fill: "#fff",
41693
+ d: "M1003.804 214.75s-61.324 47.811-85.42 85.1c-24.096 37.29-8.4 134.552-8.4 134.552l-119.375-94.095 193.083-235.652 92.963 84.914z",
41694
+ mask: "url(#e)"
41695
+ });
41696
+ t20 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41697
+ fill: "#cfd8dc",
41698
+ d: "M1128.958 213.086s18.838 96.946 18.548 125.56c-.29 28.612-8.26 73.801-33.74 89.024s-63.802 38.756-115.38 20.88-172.024-84.115-172.024-84.115S981.864 470.314 1006.22 474.08s112.252 10.05 112.252 10.05l90.662-46.814 21.129-221.796z",
41699
+ mask: "url(#f)"
41700
+ });
41701
+ t21 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41702
+ fill: "#cfd8dc",
41703
+ d: "M1041.552 459.425s-36.954 8.644-65.379 28.54-170.117 214.54-170.117 214.54L582.36 996.25l52.042 26.094 450.026-523.432z",
41704
+ mask: "url(#g)"
41705
+ });
41706
+ t22 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41707
+ fill: "none",
41708
+ stroke: "#263238",
41709
+ "stroke-linecap": "round",
41710
+ "stroke-linejoin": "round",
41711
+ "stroke-width": "29.395",
41712
+ d: "m209.947 266.846 76.909 154.59 31.315-12.212 281.763 384.488 39.973-29.294-281.646-384.327 21.561-26.783-124.246-119.9Z"
41713
+ });
41714
+ t23 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41715
+ fill: "#eceff1",
41716
+ d: "m105.922 257.574 152.745-109.918 438.66 518.005-348.484 67.536Z",
41717
+ mask: "url(#h)"
41718
+ });
41719
+ t24 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41720
+ fill: "#fff",
41721
+ d: "M326.613 211.828s-59.58 39.097-77.947 64.605C232.303 299.16 204.56 380.52 204.56 380.52l-48.272-119.485 119.003-77.722z",
41722
+ mask: "url(#i)"
41723
+ });
41724
+ t25 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41725
+ fill: "#cfd8dc",
41726
+ d: "M248.625 369.326s24.346 28.663 44.076 34.332c15.33 4.405 30.118-5.584 30.118-5.584l212.415 286.577-185.65 5.65z",
41727
+ mask: "url(#j)"
41728
+ });
41729
+ t26 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41730
+ fill: "#cfd8dc",
41731
+ d: "M355.22 375.68s11.46-16.196 12.454-25.01c3.052-27.043-32.344-49.296-32.344-49.296l77.092 54.069-53.634 24.84z",
41732
+ mask: "url(#k)"
41733
+ });
41734
+ t27 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41735
+ fill: "#ffba66",
41736
+ d: "M170.482 652.84h1025.265v453.341H170.482Z"
41737
+ });
41738
+ t28 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41739
+ fill: "#ff8c00",
41740
+ d: "M139.336 674.512h1086.662v453.342H139.336Z"
41741
+ });
41742
+ t29 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("rect", {
41743
+ width: "875.482",
41744
+ height: "332.3",
41745
+ x: "244.926",
41746
+ y: "735.033",
41747
+ fill: "#cc7000",
41748
+ rx: "77.883",
41749
+ ry: "77.883"
41750
+ });
41751
+ t30 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("path", {
41752
+ fill: "#fff",
41753
+ d: "M316.789 901.245q0-47.968 15.206-71.828 15.206-23.984 45.743-23.984 30.66 0 45.866 23.86t15.206 71.952q0 47.968-15.206 71.828-15.207 23.86-45.866 23.86-30.537 0-45.743-23.86-15.206-23.984-15.206-71.828m42.528 49.328q5.81 15.453 18.42 15.453 12.734 0 18.545-15.453 5.81-15.454 5.81-49.328 0-12.857-.865-22.995l-43.146 68.737q.618 1.978 1.236 3.586m18.42-114.233q-12.61 0-18.42 15.453-5.81 15.454-5.81 49.452 0 10.508.494 19.162l42.528-67.872-.247-.742q-5.81-15.453-18.544-15.453m91.486 64.905q0-47.968 15.206-71.828 15.206-23.984 45.742-23.984 30.66 0 45.867 23.86t15.206 71.952q0 47.968-15.206 71.828-15.207 23.86-45.867 23.86-30.536 0-45.742-23.86-15.206-23.984-15.206-71.828m42.528 49.328q5.81 15.453 18.42 15.453 12.734 0 18.545-15.453 5.81-15.454 5.81-49.328 0-12.858-.865-22.995l-43.147 68.737q.619 1.978 1.237 3.586m18.42-114.233q-12.61 0-18.42 15.453-5.81 15.454-5.81 49.452 0 10.508.494 19.162l42.528-67.872-.247-.742q-5.81-15.453-18.545-15.453M661.96 861.93h41.169v45.124h-41.169Zm0 86.045h41.169v45.372h-41.169Zm112.131-46.731q0-47.968 15.207-71.828 15.206-23.984 45.742-23.984 30.66 0 45.866 23.86 15.207 23.86 15.207 71.952 0 47.968-15.207 71.828-15.206 23.86-45.866 23.86-30.536 0-45.742-23.86-15.207-23.984-15.207-71.828m42.528 49.328q5.811 15.453 18.421 15.453 12.734 0 18.544-15.453 5.81-15.454 5.81-49.328 0-12.858-.865-22.995l-43.146 68.737q.618 1.978 1.236 3.586M835.04 836.34q-12.61 0-18.42 15.453-5.811 15.454-5.811 49.452 0 10.508.494 19.162l42.529-67.872-.248-.742q-5.81-15.453-18.544-15.453m91.485 64.905q0-47.968 15.206-71.828 15.207-23.984 45.743-23.984 30.66 0 45.866 23.86t15.206 71.952q0 47.968-15.206 71.828t-45.866 23.86q-30.536 0-45.743-23.86-15.206-23.984-15.206-71.828m42.528 49.328q5.81 15.453 18.42 15.453 12.735 0 18.545-15.453 5.81-15.454 5.81-49.328 0-12.858-.865-22.995l-43.146 68.737q.618 1.978 1.236 3.586m18.42-114.233q-12.61 0-18.42 15.453-5.81 15.454-5.81 49.452 0 10.508.494 19.162l42.528-67.872-.247-.742q-5.81-15.453-18.544-15.453",
41754
+ "aria-label": "00:00"
41755
+ });
41756
+ $[12] = t12;
41757
+ $[13] = t13;
41758
+ $[14] = t14;
41759
+ $[15] = t15;
41760
+ $[16] = t16;
41761
+ $[17] = t17;
41762
+ $[18] = t18;
41763
+ $[19] = t19;
41764
+ $[20] = t20;
41765
+ $[21] = t21;
41766
+ $[22] = t22;
41767
+ $[23] = t23;
41768
+ $[24] = t24;
41769
+ $[25] = t25;
41770
+ $[26] = t26;
41771
+ $[27] = t27;
41772
+ $[28] = t28;
41773
+ $[29] = t29;
41774
+ $[30] = t30;
41775
+ } else {
41776
+ t12 = $[12];
41777
+ t13 = $[13];
41778
+ t14 = $[14];
41779
+ t15 = $[15];
41780
+ t16 = $[16];
41781
+ t17 = $[17];
41782
+ t18 = $[18];
41783
+ t19 = $[19];
41784
+ t20 = $[20];
41785
+ t21 = $[21];
41786
+ t22 = $[22];
41787
+ t23 = $[23];
41788
+ t24 = $[24];
41789
+ t25 = $[25];
41790
+ t26 = $[26];
41791
+ t27 = $[27];
41792
+ t28 = $[28];
41793
+ t29 = $[29];
41794
+ t30 = $[30];
41795
+ }
41796
+ let t31;
41797
+ if ($[31] !== props) {
41798
+ t31 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("svg", {
41799
+ xmlns: "http://www.w3.org/2000/svg",
41800
+ viewBox: "0 0 1365.333 1365.333",
41801
+ ...props,
41802
+ children: [t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30]
41803
+ });
41804
+ $[31] = props;
41805
+ $[32] = t31;
41806
+ } else {
41807
+ t31 = $[32];
41808
+ }
41809
+ return t31;
41810
+ };
41811
+
41812
+ // src/components/frontend/toolbox/core/layout.tsx
41813
+ var import_compiler_runtime17 = __toESM(require_compiler_runtime());
41814
+ var import_react40 = __toESM(require_react());
41815
+
41816
+ // src/components/frontend/toolbox/core/footer.tsx
41817
+ var import_compiler_runtime15 = __toESM(require_compiler_runtime());
41818
+ var import_jsx_runtime51 = __toESM(require_jsx_runtime());
41819
+ var Footer = (t0) => {
41820
+ const $ = (0, import_compiler_runtime15.c)(7);
41297
41821
  const {
41298
- info
41822
+ openLicenseDetails
41299
41823
  } = t0;
41300
- const [windowMode, setWindowMode] = (0, import_react39.useState)(null);
41824
+ let t1;
41825
+ let t2;
41826
+ let t3;
41827
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
41828
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", {
41829
+ children: ["Created by", "\xA0", /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ExternalLink, {
41830
+ href: "https://arcanewizards.com",
41831
+ children: "Arcane Wizards"
41832
+ })]
41833
+ });
41834
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ToolbarDivider, {});
41835
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ExternalLink, {
41836
+ href: SOURCE_CODE_URL,
41837
+ children: STRINGS.sourceCode
41838
+ });
41839
+ $[0] = t1;
41840
+ $[1] = t2;
41841
+ $[2] = t3;
41842
+ } else {
41843
+ t1 = $[0];
41844
+ t2 = $[1];
41845
+ t3 = $[2];
41846
+ }
41847
+ let t4;
41848
+ if ($[3] !== openLicenseDetails) {
41849
+ t4 = openLicenseDetails && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, {
41850
+ children: [/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ToolbarDivider, {}), /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TextButton, {
41851
+ onClick: openLicenseDetails,
41852
+ children: STRINGS.license
41853
+ })]
41854
+ });
41855
+ $[3] = openLicenseDetails;
41856
+ $[4] = t4;
41857
+ } else {
41858
+ t4 = $[4];
41859
+ }
41860
+ let t5;
41861
+ if ($[5] !== t4) {
41862
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", {
41863
+ className: "\n flex items-center justify-center gap-1 border-t border-sigil-border\n bg-sigil-bg-dark p-1 text-[80%]\n ",
41864
+ children: [t1, t2, t3, t4]
41865
+ });
41866
+ $[5] = t4;
41867
+ $[6] = t5;
41868
+ } else {
41869
+ t5 = $[6];
41870
+ }
41871
+ return t5;
41872
+ };
41873
+
41874
+ // ../../packages/sigil/dist/frontend/styling.hooks.js
41875
+ var import_compiler_runtime16 = __toESM(require_compiler_runtime(), 1);
41876
+ var import_react39 = __toESM(require_react(), 1);
41877
+ var useRootHintVariables = (color) => {
41878
+ const $ = (0, import_compiler_runtime16.c)(3);
41879
+ let t0;
41880
+ let t1;
41881
+ if ($[0] !== color) {
41882
+ t0 = () => {
41883
+ const root = document.querySelector(".arcane-theme-root");
41884
+ if (!root) {
41885
+ return;
41886
+ }
41887
+ Object.entries(cssHintColorVariables(color)).forEach((t2) => {
41888
+ const [key, value] = t2;
41889
+ root.style.setProperty(key, value);
41890
+ });
41891
+ };
41892
+ t1 = [color];
41893
+ $[0] = color;
41894
+ $[1] = t0;
41895
+ $[2] = t1;
41896
+ } else {
41897
+ t0 = $[1];
41898
+ t1 = $[2];
41899
+ }
41900
+ (0, import_react39.useEffect)(t0, t1);
41901
+ };
41902
+
41903
+ // src/components/frontend/toolbox/core/layout.tsx
41904
+ var import_jsx_runtime52 = __toESM(require_jsx_runtime());
41905
+ var Layout = (t0) => {
41906
+ const $ = (0, import_compiler_runtime17.c)(21);
41301
41907
  const {
41302
- config
41303
- } = info;
41908
+ modes,
41909
+ children,
41910
+ licenseMode,
41911
+ footer
41912
+ } = t0;
41913
+ const [windowMode, setWindowMode] = (0, import_react40.useState)(null);
41304
41914
  const {
41305
- sendMessage,
41306
- call,
41307
41915
  connection,
41308
41916
  reconnect
41309
- } = (0, import_react39.useContext)(StageContext);
41310
- const [dialogMode, setDialogMode] = (0, import_react39.useState)(null);
41311
- const [assignToOutput, setAssignToOutput] = (0, import_react39.useState)(null);
41917
+ } = (0, import_react40.useContext)(StageContext);
41312
41918
  const {
41313
41919
  preferences
41314
41920
  } = useBrowserPreferences();
41315
41921
  useRootHintVariables(preferences.color);
41316
41922
  let t1;
41923
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
41924
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
41925
+ className: "\n flex h-full min-h-[36px] grow items-center justify-center px-1\n app-title-bar\n ",
41926
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", {
41927
+ className: "font-bold text-hint-gradient",
41928
+ children: STRINGS.title
41929
+ })
41930
+ });
41931
+ $[0] = t1;
41932
+ } else {
41933
+ t1 = $[0];
41934
+ }
41935
+ let t2;
41936
+ if ($[1] !== modes || $[2] !== windowMode) {
41937
+ t2 = modes && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, {
41938
+ children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ToolbarDivider, {}), Object.entries(modes).map((t32) => {
41939
+ const [key, t42] = t32;
41940
+ const {
41941
+ icon,
41942
+ title
41943
+ } = t42;
41944
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ControlButton, {
41945
+ onClick: () => setWindowMode((mode) => mode === key ? null : key),
41946
+ variant: "titlebar",
41947
+ icon,
41948
+ active: windowMode === key,
41949
+ title: STRINGS.toggle(title)
41950
+ }, key);
41951
+ })]
41952
+ });
41953
+ $[1] = modes;
41954
+ $[2] = windowMode;
41955
+ $[3] = t2;
41956
+ } else {
41957
+ t2 = $[3];
41958
+ }
41959
+ let t3;
41960
+ if ($[4] !== t2) {
41961
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ToolbarWrapper, {
41962
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(ToolbarRow, {
41963
+ children: [t1, t2]
41964
+ })
41965
+ });
41966
+ $[4] = t2;
41967
+ $[5] = t3;
41968
+ } else {
41969
+ t3 = $[5];
41970
+ }
41971
+ let t4;
41972
+ if ($[6] !== children || $[7] !== connection.state || $[8] !== modes || $[9] !== reconnect || $[10] !== windowMode) {
41973
+ t4 = connection.state !== "connected" ? /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(SizeAwareDiv, {
41974
+ className: "\n flex grow flex-col items-center justify-center gap-1\n bg-sigil-bg-light p-1 text-sigil-foreground-muted\n ",
41975
+ children: [/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icon2, {
41976
+ icon: "signal_disconnected",
41977
+ className: "text-block-icon"
41978
+ }), /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
41979
+ className: "text-center",
41980
+ children: STRINGS.connectionError
41981
+ }), /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ControlButton, {
41982
+ onClick: reconnect,
41983
+ variant: "large",
41984
+ icon: "replay",
41985
+ children: STRINGS.reconnect
41986
+ })]
41987
+ }) : windowMode && modes?.[windowMode] ? modes[windowMode].child(setWindowMode) : children;
41988
+ $[6] = children;
41989
+ $[7] = connection.state;
41990
+ $[8] = modes;
41991
+ $[9] = reconnect;
41992
+ $[10] = windowMode;
41993
+ $[11] = t4;
41994
+ } else {
41995
+ t4 = $[11];
41996
+ }
41997
+ let t5;
41998
+ if ($[12] !== t4) {
41999
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", {
42000
+ className: "relative flex h-0 grow flex-col",
42001
+ children: t4
42002
+ });
42003
+ $[12] = t4;
42004
+ $[13] = t5;
42005
+ } else {
42006
+ t5 = $[13];
42007
+ }
42008
+ let t6;
42009
+ if ($[14] !== footer || $[15] !== licenseMode) {
42010
+ t6 = footer && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Footer, {
42011
+ openLicenseDetails: licenseMode && (() => setWindowMode((mode_0) => mode_0 === licenseMode ? null : licenseMode))
42012
+ });
42013
+ $[14] = footer;
42014
+ $[15] = licenseMode;
42015
+ $[16] = t6;
42016
+ } else {
42017
+ t6 = $[16];
42018
+ }
42019
+ let t7;
42020
+ if ($[17] !== t3 || $[18] !== t5 || $[19] !== t6) {
42021
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", {
42022
+ className: "flex h-screen flex-col",
42023
+ children: [t3, t5, t6]
42024
+ });
42025
+ $[17] = t3;
42026
+ $[18] = t5;
42027
+ $[19] = t6;
42028
+ $[20] = t7;
42029
+ } else {
42030
+ t7 = $[20];
42031
+ }
42032
+ return t7;
42033
+ };
42034
+
42035
+ // src/components/frontend/toolbox/license.tsx
42036
+ var import_jsx_runtime53 = __toESM(require_jsx_runtime());
42037
+ var LicenseContent = (t0) => {
42038
+ const $ = (0, import_compiler_runtime18.c)(4);
42039
+ const {
42040
+ license
42041
+ } = t0;
42042
+ let t1;
42043
+ if ($[0] !== license) {
42044
+ t1 = license.split("\n\n").map(_temp4);
42045
+ $[0] = license;
42046
+ $[1] = t1;
42047
+ } else {
42048
+ t1 = $[1];
42049
+ }
42050
+ let t2;
42051
+ if ($[2] !== t1) {
42052
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
42053
+ className: "flex flex-col gap-2 rounded-md bg-sigil-bg-light p-2",
42054
+ children: t1
42055
+ });
42056
+ $[2] = t1;
42057
+ $[3] = t2;
42058
+ } else {
42059
+ t2 = $[3];
42060
+ }
42061
+ return t2;
42062
+ };
42063
+ var License = (t0) => {
42064
+ const $ = (0, import_compiler_runtime18.c)(11);
42065
+ const {
42066
+ license,
42067
+ setWindowMode
42068
+ } = t0;
42069
+ let t1;
42070
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
42071
+ t1 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TimecodeToolboxLogo, {
42072
+ className: "h-[20%] max-h-[420px] min-h-[110px] w-full"
42073
+ });
42074
+ $[0] = t1;
42075
+ } else {
42076
+ t1 = $[0];
42077
+ }
42078
+ let t2;
42079
+ if ($[1] !== license) {
42080
+ t2 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(LicenseContent, {
42081
+ license
42082
+ });
42083
+ $[1] = license;
42084
+ $[2] = t2;
42085
+ } else {
42086
+ t2 = $[2];
42087
+ }
42088
+ let t3;
42089
+ if ($[3] !== setWindowMode) {
42090
+ t3 = () => setWindowMode(null);
42091
+ $[3] = setWindowMode;
42092
+ $[4] = t3;
42093
+ } else {
42094
+ t3 = $[4];
42095
+ }
42096
+ let t4;
42097
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
42098
+ t4 = STRINGS.close(STRINGS.license);
42099
+ $[5] = t4;
42100
+ } else {
42101
+ t4 = $[5];
42102
+ }
42103
+ let t5;
42104
+ if ($[6] !== t3) {
42105
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
42106
+ className: "flex justify-center p-2",
42107
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ControlButton, {
42108
+ onClick: t3,
42109
+ variant: "large",
42110
+ icon: "close",
42111
+ children: t4
42112
+ })
42113
+ });
42114
+ $[6] = t3;
42115
+ $[7] = t5;
42116
+ } else {
42117
+ t5 = $[7];
42118
+ }
42119
+ let t6;
42120
+ if ($[8] !== t2 || $[9] !== t5) {
42121
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
42122
+ className: "flex grow flex-col",
42123
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", {
42124
+ className: "\n flex grow basis-0 flex-col overflow-y-auto px-2 pb-2 scrollbar-sigil\n ",
42125
+ children: [t1, t2, t5]
42126
+ })
42127
+ });
42128
+ $[8] = t2;
42129
+ $[9] = t5;
42130
+ $[10] = t6;
42131
+ } else {
42132
+ t6 = $[10];
42133
+ }
42134
+ return t6;
42135
+ };
42136
+ var LicenseGate = (t0) => {
42137
+ const $ = (0, import_compiler_runtime18.c)(14);
42138
+ const {
42139
+ info
42140
+ } = t0;
42141
+ const {
42142
+ sendMessage
42143
+ } = (0, import_react41.useContext)(StageContext);
42144
+ let t1;
42145
+ if ($[0] !== info.hash || $[1] !== info.key || $[2] !== sendMessage) {
42146
+ t1 = () => {
42147
+ sendMessage?.({
42148
+ type: "component-message",
42149
+ namespace: "timecode-toolbox",
42150
+ component: "license-gate",
42151
+ componentKey: info.key,
42152
+ action: "accept-license",
42153
+ hash: info.hash
42154
+ });
42155
+ };
42156
+ $[0] = info.hash;
42157
+ $[1] = info.key;
42158
+ $[2] = sendMessage;
42159
+ $[3] = t1;
42160
+ } else {
42161
+ t1 = $[3];
42162
+ }
42163
+ const acceptLicense = t1;
42164
+ let t2;
42165
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
42166
+ t2 = {
42167
+ debug: {
42168
+ child: _temp23,
42169
+ icon: "bug_report",
42170
+ title: STRINGS.debugger
42171
+ }
42172
+ };
42173
+ $[4] = t2;
42174
+ } else {
42175
+ t2 = $[4];
42176
+ }
42177
+ let t3;
42178
+ let t4;
42179
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
42180
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TimecodeToolboxLogo, {
42181
+ className: "h-[20%] max-h-[420px] min-h-[110px] w-full"
42182
+ });
42183
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h2", {
42184
+ className: "text-center text-sigil-usage-hint-foreground",
42185
+ children: STRINGS.licensePrompt
42186
+ });
42187
+ $[5] = t3;
42188
+ $[6] = t4;
42189
+ } else {
42190
+ t3 = $[5];
42191
+ t4 = $[6];
42192
+ }
42193
+ let t5;
42194
+ if ($[7] !== info.license) {
42195
+ t5 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(LicenseContent, {
42196
+ license: info.license
42197
+ });
42198
+ $[7] = info.license;
42199
+ $[8] = t5;
42200
+ } else {
42201
+ t5 = $[8];
42202
+ }
42203
+ let t6;
42204
+ if ($[9] !== acceptLicense) {
42205
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
42206
+ className: "flex justify-center p-2",
42207
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ControlButton, {
42208
+ onClick: acceptLicense,
42209
+ variant: "large",
42210
+ icon: "check",
42211
+ primary: true,
42212
+ children: STRINGS.acceptLicense
42213
+ })
42214
+ });
42215
+ $[9] = acceptLicense;
42216
+ $[10] = t6;
42217
+ } else {
42218
+ t6 = $[10];
42219
+ }
42220
+ let t7;
42221
+ if ($[11] !== t5 || $[12] !== t6) {
42222
+ t7 = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Layout, {
42223
+ footer: true,
42224
+ modes: t2,
42225
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", {
42226
+ className: "\n flex grow basis-0 flex-col overflow-y-auto px-2 pb-2 scrollbar-sigil\n ",
42227
+ children: [t3, t4, t5, t6]
42228
+ })
42229
+ });
42230
+ $[11] = t5;
42231
+ $[12] = t6;
42232
+ $[13] = t7;
42233
+ } else {
42234
+ t7 = $[13];
42235
+ }
42236
+ return t7;
42237
+ };
42238
+ function _temp4(paragraph, index2) {
42239
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", {
42240
+ className: "m-0",
42241
+ children: paragraph.replace(/\n/g, " ").trim()
42242
+ }, index2);
42243
+ }
42244
+ function _temp23() {
42245
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Debugger, {
42246
+ title: STRINGS.debugger,
42247
+ className: "size-full"
42248
+ });
42249
+ }
42250
+
42251
+ // src/components/frontend/toolbox/core/updates.tsx
42252
+ var import_compiler_runtime19 = __toESM(require_compiler_runtime());
42253
+ var import_react42 = __toESM(require_react());
42254
+ var import_jsx_runtime54 = __toESM(require_jsx_runtime());
42255
+ var UpdateBanner = () => {
42256
+ const $ = (0, import_compiler_runtime19.c)(19);
42257
+ const {
42258
+ updates
42259
+ } = useApplicationState();
42260
+ const {
42261
+ version
42262
+ } = useSystemInformation();
42263
+ const {
42264
+ openExternalLink
42265
+ } = useBrowserContext();
42266
+ const [displayState, setDisplayState] = (0, import_react42.useState)();
42267
+ let t0;
42268
+ let t1;
42269
+ if ($[0] !== updates) {
42270
+ t0 = () => {
42271
+ if (updates?.type !== "loading") {
42272
+ setDisplayState(updates);
42273
+ }
42274
+ };
42275
+ t1 = [updates];
42276
+ $[0] = updates;
42277
+ $[1] = t0;
42278
+ $[2] = t1;
42279
+ } else {
42280
+ t0 = $[1];
42281
+ t1 = $[2];
42282
+ }
42283
+ (0, import_react42.useEffect)(t0, t1);
42284
+ let t2;
42285
+ if ($[3] !== displayState || $[4] !== openExternalLink) {
42286
+ t2 = () => {
42287
+ if (displayState?.type === "updates-available" && displayState.response.downloadUrl) {
42288
+ openExternalLink(displayState.response.downloadUrl);
42289
+ }
42290
+ };
42291
+ $[3] = displayState;
42292
+ $[4] = openExternalLink;
42293
+ $[5] = t2;
42294
+ } else {
42295
+ t2 = $[5];
42296
+ }
42297
+ const openDownloadLink = t2;
42298
+ if (displayState?.type === "error") {
42299
+ let t3;
42300
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
42301
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon2, {
42302
+ icon: "error"
42303
+ });
42304
+ $[6] = t3;
42305
+ } else {
42306
+ t3 = $[6];
42307
+ }
42308
+ let t4;
42309
+ if ($[7] !== displayState.error) {
42310
+ t4 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
42311
+ className: "\n flex items-center justify-center gap-2 border-b\n border-sigil-usage-orange-border bg-sigil-usage-orange-background p-1\n text-sigil-usage-orange-text\n ",
42312
+ children: [t3, displayState.error]
42313
+ });
42314
+ $[7] = displayState.error;
42315
+ $[8] = t4;
42316
+ } else {
42317
+ t4 = $[8];
42318
+ }
42319
+ return t4;
42320
+ }
42321
+ if (displayState?.type === "updates-available") {
42322
+ let t3;
42323
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
42324
+ t3 = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon2, {
42325
+ icon: "upgrade"
42326
+ });
42327
+ $[9] = t3;
42328
+ } else {
42329
+ t3 = $[9];
42330
+ }
42331
+ let t4;
42332
+ if ($[10] !== displayState.response.latestVersion || $[11] !== version) {
42333
+ t4 = STRINGS.updates.updateAvailable(version, displayState.response.latestVersion);
42334
+ $[10] = displayState.response.latestVersion;
42335
+ $[11] = version;
42336
+ $[12] = t4;
42337
+ } else {
42338
+ t4 = $[12];
42339
+ }
42340
+ let t5;
42341
+ if ($[13] !== displayState.response.downloadUrl || $[14] !== openDownloadLink) {
42342
+ t5 = displayState.response.downloadUrl && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("button", {
42343
+ className: "\n flex cursor-pointer items-center gap-0.5 rounded-md border\n border-sigil-usage-blue-selected-border\n bg-sigil-usage-blue-selected-background px-1 py-0.5\n text-sigil-usage-blue-text\n hover:bg-sigil-usage-blue-selected-border\n ",
42344
+ onClick: openDownloadLink,
42345
+ children: [/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon2, {
42346
+ icon: "download"
42347
+ }), STRINGS.updates.download]
42348
+ });
42349
+ $[13] = displayState.response.downloadUrl;
42350
+ $[14] = openDownloadLink;
42351
+ $[15] = t5;
42352
+ } else {
42353
+ t5 = $[15];
42354
+ }
42355
+ let t6;
42356
+ if ($[16] !== t4 || $[17] !== t5) {
42357
+ t6 = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", {
42358
+ className: "\n flex items-center justify-center gap-2 border-b\n border-sigil-usage-blue-border bg-sigil-usage-blue-background p-1\n text-sigil-usage-blue-text\n ",
42359
+ children: [t3, t4, t5]
42360
+ });
42361
+ $[16] = t4;
42362
+ $[17] = t5;
42363
+ $[18] = t6;
42364
+ } else {
42365
+ t6 = $[18];
42366
+ }
42367
+ return t6;
42368
+ }
42369
+ return null;
42370
+ };
42371
+
42372
+ // src/components/frontend/toolbox/root.tsx
42373
+ var import_jsx_runtime55 = __toESM(require_jsx_runtime());
42374
+ var ToolboxRoot = (t0) => {
42375
+ const $ = (0, import_compiler_runtime20.c)(43);
42376
+ const {
42377
+ info
42378
+ } = t0;
42379
+ const {
42380
+ config
42381
+ } = info;
42382
+ const {
42383
+ sendMessage,
42384
+ call
42385
+ } = (0, import_react43.useContext)(StageContext);
42386
+ const [dialogMode, setDialogMode] = (0, import_react43.useState)(null);
42387
+ const [assignToOutput, setAssignToOutput] = (0, import_react43.useState)(null);
42388
+ let t1;
41317
42389
  let t2;
41318
42390
  if ($[0] !== assignToOutput) {
41319
42391
  t1 = () => {
@@ -41337,7 +42409,7 @@ Data Directory: ${system.dataDirectory}`
41337
42409
  t1 = $[1];
41338
42410
  t2 = $[2];
41339
42411
  }
41340
- (0, import_react39.useEffect)(t1, t2);
42412
+ (0, import_react43.useEffect)(t1, t2);
41341
42413
  let t3;
41342
42414
  if ($[3] !== config || $[4] !== info.key || $[5] !== sendMessage) {
41343
42415
  t3 = (change) => {
@@ -41505,237 +42577,142 @@ Data Directory: ${system.dataDirectory}`
41505
42577
  }
41506
42578
  t14 = t15;
41507
42579
  const windowedTimecodeId = t14;
41508
- const isMainWindow = windowedTimecodeId === null;
41509
42580
  let t16;
41510
42581
  let t17;
41511
- if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
41512
- t17 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", {
41513
- className: "\n flex h-full min-h-[36px] grow items-center justify-center px-1\n app-title-bar\n ",
41514
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", {
41515
- className: "font-bold text-hint-gradient",
41516
- children: STRINGS.title
41517
- })
41518
- });
41519
- $[26] = t17;
41520
- } else {
41521
- t17 = $[26];
41522
- }
41523
- let t18;
41524
- if ($[27] !== windowMode) {
41525
- t18 = isMainWindow && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, {
41526
- children: [/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ToolbarDivider, {}), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ControlButton, {
41527
- onClick: () => setWindowMode(_temp4),
41528
- variant: "titlebar",
41529
- icon: "settings",
41530
- active: windowMode === "settings",
41531
- title: STRINGS.toggle(STRINGS.settings.title)
41532
- }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ControlButton, {
41533
- onClick: () => setWindowMode(_temp23),
41534
- variant: "titlebar",
41535
- icon: "bug_report",
41536
- active: windowMode === "debug",
41537
- title: STRINGS.toggle(STRINGS.debugger)
41538
- })]
41539
- });
41540
- $[27] = windowMode;
41541
- $[28] = t18;
41542
- } else {
41543
- t18 = $[28];
41544
- }
41545
- let t19;
41546
- if ($[29] !== t18) {
41547
- t19 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ToolbarWrapper, {
41548
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(ToolbarRow, {
41549
- children: [t17, t18]
42582
+ if ($[26] !== assignToOutput || $[27] !== assignToOutputCallback || $[28] !== dialogMode || $[29] !== info.license) {
42583
+ t17 = windowedTimecodeId ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Layout, {
42584
+ modes: null,
42585
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FullscreenTimecodeDisplay, {
42586
+ id: windowedTimecodeId
41550
42587
  })
41551
- });
41552
- $[29] = t18;
41553
- $[30] = t19;
41554
- } else {
41555
- t19 = $[30];
41556
- }
41557
- let t20;
41558
- if ($[31] !== assignToOutput || $[32] !== assignToOutputCallback || $[33] !== connection.state || $[34] !== reconnect || $[35] !== windowMode) {
41559
- t20 = connection.state !== "connected" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(SizeAwareDiv, {
41560
- className: "\n flex grow flex-col items-center justify-center gap-1\n bg-sigil-bg-light p-1 text-sigil-foreground-muted\n ",
41561
- children: [/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon2, {
41562
- icon: "signal_disconnected",
41563
- className: "text-block-icon"
41564
- }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", {
41565
- className: "text-center",
41566
- children: STRINGS.connectionError
41567
- }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ControlButton, {
41568
- onClick: reconnect,
41569
- variant: "large",
41570
- icon: "replay",
41571
- children: STRINGS.reconnect
41572
- })]
41573
- }) : windowMode === "debug" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Debugger, {
41574
- title: STRINGS.debugger,
41575
- className: "size-full"
41576
- }) : windowMode === "settings" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Settings, {
41577
- setWindowMode
41578
- }) : windowedTimecodeId ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(FullscreenTimecodeDisplay, {
41579
- id: windowedTimecodeId
41580
- }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", {
41581
- className: "\n flex h-0 grow flex-col gap-px overflow-y-auto bg-sigil-border\n scrollbar-sigil\n ",
41582
- children: [/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(InputsSection, {
41583
- setDialogMode,
41584
- assignToOutput: assignToOutputCallback
41585
- }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(GeneratorsSection, {
41586
- setDialogMode,
41587
- assignToOutput: assignToOutputCallback
41588
- }), /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(OutputsSection, {
41589
- setDialogMode,
41590
- assignToOutput,
41591
- setAssignToOutput
41592
- })]
41593
- });
41594
- $[31] = assignToOutput;
41595
- $[32] = assignToOutputCallback;
41596
- $[33] = connection.state;
41597
- $[34] = reconnect;
41598
- $[35] = windowMode;
41599
- $[36] = t20;
41600
- } else {
41601
- t20 = $[36];
41602
- }
41603
- let t21;
41604
- if ($[37] !== dialogMode) {
41605
- t21 = dialogMode?.section.type === "inputs" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(InputSettingsDialog, {
41606
- close: closeDialog,
41607
- input: dialogMode.section.input,
41608
- target: dialogMode.target
41609
- });
41610
- $[37] = dialogMode;
41611
- $[38] = t21;
41612
- } else {
41613
- t21 = $[38];
41614
- }
41615
- let t22;
41616
- if ($[39] !== dialogMode) {
41617
- t22 = dialogMode?.section.type === "generators" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(GeneratorSettingsDialog, {
41618
- close: closeDialog,
41619
- generator: dialogMode.section.generator,
41620
- target: dialogMode.target
41621
- });
41622
- $[39] = dialogMode;
41623
- $[40] = t22;
41624
- } else {
41625
- t22 = $[40];
41626
- }
41627
- let t23;
41628
- if ($[41] !== dialogMode) {
41629
- t23 = dialogMode?.section.type === "outputs" && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(OutputSettingsDialog, {
41630
- close: closeDialog,
41631
- output: dialogMode.section.output,
41632
- target: dialogMode.target
41633
- });
41634
- $[41] = dialogMode;
41635
- $[42] = t23;
41636
- } else {
41637
- t23 = $[42];
41638
- }
41639
- let t24;
41640
- if ($[43] !== t20 || $[44] !== t21 || $[45] !== t22 || $[46] !== t23) {
41641
- t24 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", {
41642
- className: "relative flex h-0 grow flex-col",
41643
- children: [t20, t21, t22, t23]
41644
- });
41645
- $[43] = t20;
41646
- $[44] = t21;
41647
- $[45] = t22;
41648
- $[46] = t23;
41649
- $[47] = t24;
41650
- } else {
41651
- t24 = $[47];
41652
- }
41653
- let t25;
41654
- if ($[48] === Symbol.for("react.memo_cache_sentinel")) {
41655
- t25 = isMainWindow && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", {
41656
- className: "\n flex justify-center border-t border-sigil-border bg-sigil-bg-dark\n p-1 text-[80%]\n ",
41657
- children: ["Created by", "\xA0", /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ExternalLink, {
41658
- href: "https://arcanewizards.com",
41659
- children: "Arcane Wizards"
42588
+ }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, {
42589
+ children: [/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Layout, {
42590
+ footer: true,
42591
+ modes: {
42592
+ license: {
42593
+ child: (setWindowMode) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(License, {
42594
+ license: info.license,
42595
+ setWindowMode
42596
+ }),
42597
+ icon: "info",
42598
+ title: STRINGS.license
42599
+ },
42600
+ settings: {
42601
+ child: _temp5,
42602
+ icon: "settings",
42603
+ title: STRINGS.settings.title
42604
+ },
42605
+ debug: {
42606
+ child: _temp24,
42607
+ icon: "bug_report",
42608
+ title: STRINGS.debugger
42609
+ }
42610
+ },
42611
+ licenseMode: "license",
42612
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, {
42613
+ children: [/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(UpdateBanner, {}), /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", {
42614
+ className: "\n flex h-0 grow flex-col gap-px overflow-y-auto bg-sigil-border\n scrollbar-sigil\n ",
42615
+ children: [/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(InputsSection, {
42616
+ setDialogMode,
42617
+ assignToOutput: assignToOutputCallback
42618
+ }), /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(GeneratorsSection, {
42619
+ setDialogMode,
42620
+ assignToOutput: assignToOutputCallback
42621
+ }), /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(OutputsSection, {
42622
+ setDialogMode,
42623
+ assignToOutput,
42624
+ setAssignToOutput
42625
+ })]
42626
+ })]
42627
+ })
42628
+ }), dialogMode?.section.type === "inputs" && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(InputSettingsDialog, {
42629
+ close: closeDialog,
42630
+ input: dialogMode.section.input,
42631
+ target: dialogMode.target
42632
+ }), dialogMode?.section.type === "generators" && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(GeneratorSettingsDialog, {
42633
+ close: closeDialog,
42634
+ generator: dialogMode.section.generator,
42635
+ target: dialogMode.target
42636
+ }), dialogMode?.section.type === "outputs" && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(OutputSettingsDialog, {
42637
+ close: closeDialog,
42638
+ output: dialogMode.section.output,
42639
+ target: dialogMode.target
41660
42640
  })]
41661
42641
  });
41662
- $[48] = t25;
42642
+ $[26] = assignToOutput;
42643
+ $[27] = assignToOutputCallback;
42644
+ $[28] = dialogMode;
42645
+ $[29] = info.license;
42646
+ $[30] = t17;
41663
42647
  } else {
41664
- t25 = $[48];
42648
+ t17 = $[30];
41665
42649
  }
41666
- let t26;
41667
- if ($[49] !== t19 || $[50] !== t24) {
41668
- t26 = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", {
41669
- className: "flex h-screen flex-col",
41670
- children: [t19, t24, t25]
41671
- });
41672
- $[49] = t19;
41673
- $[50] = t24;
41674
- $[51] = t26;
41675
- } else {
41676
- t26 = $[51];
41677
- }
41678
- t16 = t26;
42650
+ t16 = t17;
41679
42651
  const root = t16;
41680
- let t27;
41681
- if ($[52] !== handlers || $[53] !== root) {
41682
- t27 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ApplicationHandlersContext.Provider, {
42652
+ let t18;
42653
+ if ($[31] !== handlers || $[32] !== root) {
42654
+ t18 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ApplicationHandlersContext.Provider, {
41683
42655
  value: handlers,
41684
42656
  children: root
41685
42657
  });
41686
- $[52] = handlers;
41687
- $[53] = root;
41688
- $[54] = t27;
42658
+ $[31] = handlers;
42659
+ $[32] = root;
42660
+ $[33] = t18;
41689
42661
  } else {
41690
- t27 = $[54];
42662
+ t18 = $[33];
41691
42663
  }
41692
- let t28;
41693
- if ($[55] !== info.state || $[56] !== t27) {
41694
- t28 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ApplicationStateContext.Provider, {
42664
+ let t19;
42665
+ if ($[34] !== info.state || $[35] !== t18) {
42666
+ t19 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ApplicationStateContext.Provider, {
41695
42667
  value: info.state,
41696
- children: t27
42668
+ children: t18
41697
42669
  });
41698
- $[55] = info.state;
41699
- $[56] = t27;
41700
- $[57] = t28;
42670
+ $[34] = info.state;
42671
+ $[35] = t18;
42672
+ $[36] = t19;
41701
42673
  } else {
41702
- t28 = $[57];
42674
+ t19 = $[36];
41703
42675
  }
41704
- let t29;
41705
- if ($[58] !== networkContextValue || $[59] !== t28) {
41706
- t29 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(NetworkContext.Provider, {
42676
+ let t20;
42677
+ if ($[37] !== networkContextValue || $[38] !== t19) {
42678
+ t20 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(NetworkContext.Provider, {
41707
42679
  value: networkContextValue,
41708
- children: t28
42680
+ children: t19
41709
42681
  });
41710
- $[58] = networkContextValue;
41711
- $[59] = t28;
41712
- $[60] = t29;
42682
+ $[37] = networkContextValue;
42683
+ $[38] = t19;
42684
+ $[39] = t20;
41713
42685
  } else {
41714
- t29 = $[60];
42686
+ t20 = $[39];
41715
42687
  }
41716
- let t30;
41717
- if ($[61] !== configContext || $[62] !== t29) {
41718
- t30 = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ConfigContext.Provider, {
42688
+ let t21;
42689
+ if ($[40] !== configContext || $[41] !== t20) {
42690
+ t21 = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ConfigContext.Provider, {
41719
42691
  value: configContext,
41720
- children: t29
42692
+ children: t20
41721
42693
  });
41722
- $[61] = configContext;
41723
- $[62] = t29;
41724
- $[63] = t30;
42694
+ $[40] = configContext;
42695
+ $[41] = t20;
42696
+ $[42] = t21;
41725
42697
  } else {
41726
- t30 = $[63];
42698
+ t21 = $[42];
41727
42699
  }
41728
- return t30;
42700
+ return t21;
41729
42701
  };
41730
- function _temp4(mode) {
41731
- return mode === "settings" ? null : "settings";
42702
+ function _temp5(setWindowMode_0) {
42703
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Settings, {
42704
+ setWindowMode: setWindowMode_0
42705
+ });
41732
42706
  }
41733
- function _temp23(mode_0) {
41734
- return mode_0 === "debug" ? null : "debug";
42707
+ function _temp24() {
42708
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Debugger, {
42709
+ title: STRINGS.debugger,
42710
+ className: "size-full"
42711
+ });
41735
42712
  }
41736
42713
 
41737
42714
  // src/components/frontend/index.tsx
41738
- var import_jsx_runtime51 = __toESM(require_jsx_runtime());
42715
+ var import_jsx_runtime56 = __toESM(require_jsx_runtime());
41739
42716
  var timecodeToolboxFrontendComponents = () => ({
41740
42717
  namespace: NAMESPACE,
41741
42718
  render: (info) => {
@@ -41744,7 +42721,11 @@ Data Directory: ${system.dataDirectory}`
41744
42721
  }
41745
42722
  switch (info.component) {
41746
42723
  case "toolbox-root":
41747
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ToolboxRoot, {
42724
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ToolboxRoot, {
42725
+ info
42726
+ });
42727
+ case "license-gate":
42728
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(LicenseGate, {
41748
42729
  info
41749
42730
  });
41750
42731
  }
@@ -41754,7 +42735,7 @@ Data Directory: ${system.dataDirectory}`
41754
42735
  startSigilFrontend({
41755
42736
  browser,
41756
42737
  appRenderers: [timecodeToolboxFrontendComponents()],
41757
- loadingState: () => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", {
42738
+ loadingState: () => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", {
41758
42739
  style: {
41759
42740
  width: "100%",
41760
42741
  textAlign: "center",