@norskvideo/norsk-studio-built-ins 1.0.0 → 1.0.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.
package/client/info.js CHANGED
@@ -743,7 +743,7 @@ var require_config = __commonJS({
743
743
  return void 0;
744
744
  }
745
745
  exports.contractHardwareAcceleration = contractHardwareAcceleration;
746
- function HardwareSelection6() {
746
+ function HardwareSelection7() {
747
747
  return {
748
748
  id: "hardware-acceleration",
749
749
  form: {
@@ -761,7 +761,7 @@ var require_config = __commonJS({
761
761
  }
762
762
  };
763
763
  }
764
- exports.HardwareSelection = HardwareSelection6;
764
+ exports.HardwareSelection = HardwareSelection7;
765
765
  function RootDataDir() {
766
766
  return {
767
767
  id: "root-data-dir",
@@ -1442,6 +1442,119 @@ var init_inline_view8 = __esm({
1442
1442
  }
1443
1443
  });
1444
1444
 
1445
+ // build/processor.dynamicBug/bug-selection.js
1446
+ var bug_selection_exports = {};
1447
+ __export(bug_selection_exports, {
1448
+ default: () => bug_selection_default
1449
+ });
1450
+ function BugSelection(props) {
1451
+ const [loading, setLoading] = (0, import_react33.useState)(true);
1452
+ (0, import_react33.useEffect)(() => {
1453
+ const fn = async () => {
1454
+ const result2 = await fetch("components/processor.dynamicBug/bugs");
1455
+ if (result2.ok && result2.body) {
1456
+ const bugs2 = await result2.json();
1457
+ setBugs(bugs2);
1458
+ setLoading(false);
1459
+ if (props.defaultValue)
1460
+ props.onChanged(props.defaultValue);
1461
+ } else {
1462
+ const text = await result2.text();
1463
+ throw new Error(text);
1464
+ }
1465
+ };
1466
+ fn().catch(console.error);
1467
+ }, []);
1468
+ const [bugs, setBugs] = (0, import_react33.useState)([]);
1469
+ if (loading) {
1470
+ return (0, import_jsx_runtime31.jsx)("div", { children: "Loading.." });
1471
+ }
1472
+ if (bugs.length == 0) {
1473
+ return (0, import_jsx_runtime31.jsx)("div", { children: "No bugs loaded" });
1474
+ }
1475
+ return (0, import_jsx_runtime31.jsx)("div", { children: (0, import_jsx_runtime31.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime31.jsx)("option", { value: "", children: "---" }, "empty"), bugs.map((o, i) => {
1476
+ return (0, import_jsx_runtime31.jsx)("option", { value: o, children: o }, i);
1477
+ })] }) });
1478
+ function myOnChange(e) {
1479
+ props.onChanged(e.target.value);
1480
+ }
1481
+ }
1482
+ var import_jsx_runtime31, import_react33, bug_selection_default;
1483
+ var init_bug_selection = __esm({
1484
+ "build/processor.dynamicBug/bug-selection.js"() {
1485
+ "use strict";
1486
+ import_jsx_runtime31 = __toESM(require_jsx_runtime());
1487
+ import_react33 = __toESM(require_react());
1488
+ bug_selection_default = BugSelection;
1489
+ }
1490
+ });
1491
+
1492
+ // build/processor.dynamicBug/summary-view.js
1493
+ var summary_view_exports5 = {};
1494
+ __export(summary_view_exports5, {
1495
+ default: () => summary_view_default5
1496
+ });
1497
+ function SummaryView7({ state, config, sendCommand }) {
1498
+ const [bug, setBug] = (0, import_react34.useState)(state.activeBug?.file ?? config.defaultBug);
1499
+ const [orientation, setOrientation] = (0, import_react34.useState)(state.activeBug?.orientation ?? config.defaultOrientation);
1500
+ const [bugs, setBugs] = (0, import_react34.useState)([]);
1501
+ const [fileToUpload, setFileToUpload] = (0, import_react34.useState)(void 0);
1502
+ async function updateBugs() {
1503
+ const result2 = await fetch("components/processor.dynamicBug/bugs");
1504
+ if (result2.ok && result2.body) {
1505
+ const bugs2 = await result2.json();
1506
+ setBugs(bugs2);
1507
+ } else {
1508
+ const text = await result2.text();
1509
+ throw new Error(text);
1510
+ }
1511
+ }
1512
+ (0, import_react34.useEffect)(() => {
1513
+ const fn = async () => {
1514
+ await updateBugs();
1515
+ };
1516
+ fn().catch(console.error);
1517
+ }, []);
1518
+ function onFileChange(e) {
1519
+ if (e.target.files?.[0])
1520
+ setFileToUpload(e.target.files[0]);
1521
+ }
1522
+ return (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [(0, import_jsx_runtime32.jsx)("h2", { children: "Controls" }), (0, import_jsx_runtime32.jsx)("label", { htmlFor: "select-preview", className: "mt-2", children: "Source" }), (0, import_jsx_runtime32.jsxs)("select", { id: "select-bug", className: "mt-2 node-editor-select-input", onChange: (e) => {
1523
+ setBug(e.currentTarget.value);
1524
+ }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: bug === void 0, children: "---" }), (0, import_jsx_runtime32.jsx)("option", { value: "new", selected: bug === "new", children: "New" }), bugs.map((s, i) => (0, import_jsx_runtime32.jsx)("option", { selected: bug == s, value: s, children: s }, i))] }), (0, import_jsx_runtime32.jsx)("form", { style: { display: bug === "new" ? "block" : "none" }, onSubmit: (e) => e.preventDefault(), children: (0, import_jsx_runtime32.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange }) }), (0, import_jsx_runtime32.jsxs)("select", { id: "select-orientation", className: "mt-2 node-editor-select-input", onChange: (e) => {
1525
+ setOrientation(e.currentTarget.value);
1526
+ }, children: [(0, import_jsx_runtime32.jsx)("option", { selected: orientation === void 0, children: "---" }), (0, import_jsx_runtime32.jsx)("option", { value: "topleft", selected: orientation === "topleft", children: "Top Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "topright", selected: orientation === "topright", children: "Top Right" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomleft", selected: orientation === "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime32.jsx)("option", { value: "bottomright", selected: orientation === "bottomright", children: "Bottom Right" })] }), bug != state.activeBug?.file || orientation != state.activeBug?.orientation || fileToUpload ? (0, import_jsx_runtime32.jsx)("button", { type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", onClick: async (e) => {
1527
+ e.preventDefault();
1528
+ if (fileToUpload && bug === "new") {
1529
+ const form = new FormData();
1530
+ const url = `http://${document.location.hostname}:${config.apiPort}/bugs`;
1531
+ form.append("file", fileToUpload);
1532
+ await fetch(url, {
1533
+ method: "POST",
1534
+ body: form
1535
+ });
1536
+ setTimeout(async () => {
1537
+ await updateBugs();
1538
+ sendCommand({ type: "change-bug", file: fileToUpload.name, orientation });
1539
+ setBug(fileToUpload.name);
1540
+ setFileToUpload(void 0);
1541
+ return;
1542
+ }, 500);
1543
+ } else {
1544
+ sendCommand({ type: "change-bug", file: bug, orientation });
1545
+ }
1546
+ }, children: "Commit" }) : (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, {})] });
1547
+ }
1548
+ var import_jsx_runtime32, import_react34, summary_view_default5;
1549
+ var init_summary_view5 = __esm({
1550
+ "build/processor.dynamicBug/summary-view.js"() {
1551
+ "use strict";
1552
+ import_jsx_runtime32 = __toESM(require_jsx_runtime());
1553
+ import_react34 = __toESM(require_react());
1554
+ summary_view_default5 = SummaryView7;
1555
+ }
1556
+ });
1557
+
1445
1558
  // build/processor.monetise/summary.js
1446
1559
  var summary_exports3 = {};
1447
1560
  __export(summary_exports3, {
@@ -1450,9 +1563,9 @@ __export(summary_exports3, {
1450
1563
  function InlineView14({ state, config, sendCommand }) {
1451
1564
  const url = state.url;
1452
1565
  const id = config.id;
1453
- const previewVideo = (0, import_react33.useRef)(null);
1454
- const durationSlider = (0, import_react33.useRef)(null);
1455
- (0, import_react33.useEffect)(() => {
1566
+ const previewVideo = (0, import_react36.useRef)(null);
1567
+ const durationSlider = (0, import_react36.useRef)(null);
1568
+ (0, import_react36.useEffect)(() => {
1456
1569
  if (!url)
1457
1570
  return;
1458
1571
  setTimeout(() => {
@@ -1465,8 +1578,8 @@ function InlineView14({ state, config, sendCommand }) {
1465
1578
  }, 1e3);
1466
1579
  }, [state.url]);
1467
1580
  if (!url)
1468
- return (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, { children: "Starting up..." });
1469
- return (0, import_jsx_runtime31.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime31.jsx)("div", { ref: previewVideo, className: "", id: `preview-${id}` }), state.currentAdvert ? (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: ["Advert currently playing: ", Math.floor(state.currentAdvert.timeLeftMs / 1e3), "s"] }) : (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [(0, import_jsx_runtime31.jsxs)("label", { htmlFor: "default-range", className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", children: ["Advert Duration (", durationSlider.current?.value ?? 16, "s)"] }), (0, import_jsx_runtime31.jsx)("input", { ref: durationSlider, id: "default-range", type: "range", defaultValue: "16", min: "16", max: "120", className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700" }), (0, import_jsx_runtime31.jsx)("button", { onClick: sendAdvertCommand, type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", children: "Inject Advert" })] })] });
1581
+ return (0, import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment, { children: "Starting up..." });
1582
+ return (0, import_jsx_runtime33.jsxs)("div", { className: "mb-5", children: [(0, import_jsx_runtime33.jsx)("div", { ref: previewVideo, className: "", id: `preview-${id}` }), state.currentAdvert ? (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: ["Advert currently playing: ", Math.floor(state.currentAdvert.timeLeftMs / 1e3), "s"] }) : (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [(0, import_jsx_runtime33.jsxs)("label", { htmlFor: "default-range", className: "block mb-2 text-sm font-medium text-gray-900 dark:text-white", children: ["Advert Duration (", durationSlider.current?.value ?? 16, "s)"] }), (0, import_jsx_runtime33.jsx)("input", { ref: durationSlider, id: "default-range", type: "range", defaultValue: "16", min: "16", max: "120", className: "w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700" }), (0, import_jsx_runtime33.jsx)("button", { onClick: sendAdvertCommand, type: "button", className: "mt-2 mb-2 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800", children: "Inject Advert" })] })] });
1470
1583
  function sendAdvertCommand() {
1471
1584
  if (!previewVideo.current)
1472
1585
  return;
@@ -1478,12 +1591,12 @@ function InlineView14({ state, config, sendCommand }) {
1478
1591
  });
1479
1592
  }
1480
1593
  }
1481
- var import_jsx_runtime31, import_react33, import_webrtc_client2, summary_default3;
1594
+ var import_jsx_runtime33, import_react36, import_webrtc_client2, summary_default3;
1482
1595
  var init_summary3 = __esm({
1483
1596
  "build/processor.monetise/summary.js"() {
1484
1597
  "use strict";
1485
- import_jsx_runtime31 = __toESM(require_jsx_runtime());
1486
- import_react33 = __toESM(require_react());
1598
+ import_jsx_runtime33 = __toESM(require_jsx_runtime());
1599
+ import_react36 = __toESM(require_react());
1487
1600
  import_webrtc_client2 = __toESM(require_webrtc_client());
1488
1601
  summary_default3 = InlineView14;
1489
1602
  }
@@ -15813,8 +15926,8 @@ __export(inline_view_exports9, {
15813
15926
  default: () => inline_view_default9
15814
15927
  });
15815
15928
  function InlineView15({ state, config: _2 }) {
15816
- const chartContainer = (0, import_react35.useRef)(null);
15817
- const [chartControl, setChartControl] = (0, import_react35.useState)(void 0);
15929
+ const chartContainer = (0, import_react38.useRef)(null);
15930
+ const [chartControl, setChartControl] = (0, import_react38.useState)(void 0);
15818
15931
  function makeDataSet(key, color2, values) {
15819
15932
  return {
15820
15933
  label: key,
@@ -15831,7 +15944,7 @@ function InlineView15({ state, config: _2 }) {
15831
15944
  datasets: [makeDataSet("latency", "rgba(255, 0, 0, 255)", state2.values)]
15832
15945
  };
15833
15946
  }
15834
- (0, import_react35.useEffect)(() => {
15947
+ (0, import_react38.useEffect)(() => {
15835
15948
  if (!chartContainer.current)
15836
15949
  return;
15837
15950
  auto_default.defaults.color = "#FFF";
@@ -15869,19 +15982,19 @@ function InlineView15({ state, config: _2 }) {
15869
15982
  chart.update();
15870
15983
  }, 100);
15871
15984
  }, [chartContainer]);
15872
- (0, import_react35.useEffect)(() => {
15985
+ (0, import_react38.useEffect)(() => {
15873
15986
  if (!chartControl)
15874
15987
  return;
15875
15988
  chartControl.data = makeData(state);
15876
15989
  }, [state]);
15877
- return (0, import_jsx_runtime32.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime32.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
15990
+ return (0, import_jsx_runtime34.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime34.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
15878
15991
  }
15879
- var import_jsx_runtime32, import_react35, inline_view_default9;
15992
+ var import_jsx_runtime34, import_react38, inline_view_default9;
15880
15993
  var init_inline_view9 = __esm({
15881
15994
  "build/util.latency/inline-view.js"() {
15882
15995
  "use strict";
15883
- import_jsx_runtime32 = __toESM(require_jsx_runtime());
15884
- import_react35 = __toESM(require_react());
15996
+ import_jsx_runtime34 = __toESM(require_jsx_runtime());
15997
+ import_react38 = __toESM(require_react());
15885
15998
  init_auto();
15886
15999
  inline_view_default9 = InlineView15;
15887
16000
  }
@@ -15893,22 +16006,22 @@ __export(source_node_selection_exports, {
15893
16006
  default: () => source_node_selection_default
15894
16007
  });
15895
16008
  function SourceNodeSelection(props) {
15896
- return (0, import_jsx_runtime33.jsx)("div", { children: (0, import_jsx_runtime33.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime33.jsx)("option", { value: "", children: "---" }, "empty"), Object.values(props.latestDocument.nodes).map((o, i) => {
16009
+ return (0, import_jsx_runtime35.jsx)("div", { children: (0, import_jsx_runtime35.jsxs)("select", { defaultValue: props.defaultValue, className: `node-editor-select-input`, id: props.id, onChange: myOnChange, onBlur: myOnChange, children: [(0, import_jsx_runtime35.jsx)("option", { value: "", children: "---" }, "empty"), Object.values(props.latestDocument.nodes).map((o, i) => {
15897
16010
  if (o.id == props.id)
15898
- return (0, import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment, {});
16011
+ return (0, import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment, {});
15899
16012
  if (o.info.category === "output")
15900
16013
  return;
15901
- return (0, import_jsx_runtime33.jsx)("option", { value: o.id, children: o.config.displayName }, i);
16014
+ return (0, import_jsx_runtime35.jsx)("option", { value: o.id, children: o.config.displayName }, i);
15902
16015
  })] }) });
15903
16016
  function myOnChange(e) {
15904
16017
  props.onChanged(e.target.value);
15905
16018
  }
15906
16019
  }
15907
- var import_jsx_runtime33, source_node_selection_default;
16020
+ var import_jsx_runtime35, source_node_selection_default;
15908
16021
  var init_source_node_selection = __esm({
15909
16022
  "build/util.latency/source-node-selection.js"() {
15910
16023
  "use strict";
15911
- import_jsx_runtime33 = __toESM(require_jsx_runtime());
16024
+ import_jsx_runtime35 = __toESM(require_jsx_runtime());
15912
16025
  source_node_selection_default = SourceNodeSelection;
15913
16026
  }
15914
16027
  });
@@ -15919,8 +16032,8 @@ __export(inline_view_exports10, {
15919
16032
  default: () => inline_view_default10
15920
16033
  });
15921
16034
  function InlineView16({ state, config: _2 }) {
15922
- const chartContainer = (0, import_react37.useRef)(null);
15923
- const [chartControl, setChartControl] = (0, import_react37.useState)(void 0);
16035
+ const chartContainer = (0, import_react40.useRef)(null);
16036
+ const [chartControl, setChartControl] = (0, import_react40.useState)(void 0);
15924
16037
  function makeDataSet(key, color2, values) {
15925
16038
  return {
15926
16039
  label: key,
@@ -15941,7 +16054,7 @@ function InlineView16({ state, config: _2 }) {
15941
16054
  ]
15942
16055
  };
15943
16056
  }
15944
- (0, import_react37.useEffect)(() => {
16057
+ (0, import_react40.useEffect)(() => {
15945
16058
  if (!chartContainer.current)
15946
16059
  return;
15947
16060
  auto_default.defaults.color = "#FFF";
@@ -15979,19 +16092,19 @@ function InlineView16({ state, config: _2 }) {
15979
16092
  chart.update();
15980
16093
  }, 100);
15981
16094
  }, [chartContainer]);
15982
- (0, import_react37.useEffect)(() => {
16095
+ (0, import_react40.useEffect)(() => {
15983
16096
  if (!chartControl)
15984
16097
  return;
15985
16098
  chartControl.data = makeData(state);
15986
16099
  }, [state]);
15987
- return (0, import_jsx_runtime34.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime34.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
16100
+ return (0, import_jsx_runtime36.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime36.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
15988
16101
  }
15989
- var import_jsx_runtime34, import_react37, inline_view_default10;
16102
+ var import_jsx_runtime36, import_react40, inline_view_default10;
15990
16103
  var init_inline_view10 = __esm({
15991
16104
  "build/util.ma35d/inline-view.js"() {
15992
16105
  "use strict";
15993
- import_jsx_runtime34 = __toESM(require_jsx_runtime());
15994
- import_react37 = __toESM(require_react());
16106
+ import_jsx_runtime36 = __toESM(require_jsx_runtime());
16107
+ import_react40 = __toESM(require_react());
15995
16108
  init_auto();
15996
16109
  inline_view_default10 = InlineView16;
15997
16110
  }
@@ -16003,9 +16116,9 @@ __export(inline_view_exports11, {
16003
16116
  default: () => inline_view_default11
16004
16117
  });
16005
16118
  function InlineView17({ state, config: _2 }) {
16006
- const chartContainer = (0, import_react39.useRef)(null);
16007
- const [chartControl, setChartControl] = (0, import_react39.useState)(void 0);
16008
- (0, import_react39.useEffect)(() => {
16119
+ const chartContainer = (0, import_react42.useRef)(null);
16120
+ const [chartControl, setChartControl] = (0, import_react42.useState)(void 0);
16121
+ (0, import_react42.useEffect)(() => {
16009
16122
  if (!chartContainer.current)
16010
16123
  return;
16011
16124
  if (state.timestamps.length < 2)
@@ -16067,7 +16180,7 @@ function InlineView17({ state, config: _2 }) {
16067
16180
  chart.update();
16068
16181
  }, 100);
16069
16182
  }, [chartContainer]);
16070
- (0, import_react39.useEffect)(() => {
16183
+ (0, import_react42.useEffect)(() => {
16071
16184
  if (!chartControl)
16072
16185
  return;
16073
16186
  chartControl.data = {
@@ -16090,14 +16203,14 @@ function InlineView17({ state, config: _2 }) {
16090
16203
  })
16091
16204
  };
16092
16205
  }, [state]);
16093
- return (0, import_jsx_runtime35.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime35.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
16206
+ return (0, import_jsx_runtime37.jsx)("div", { className: "bg-gray-50 dark:bg-gray-700 rounded", style: { width: "360px", height: "200px", padding: "10px" }, children: (0, import_jsx_runtime37.jsx)("canvas", { className: "bg-gray-50 dark:bg-gray-700 rounded", ref: chartContainer }) });
16094
16207
  }
16095
- var import_jsx_runtime35, import_react39, inline_view_default11;
16208
+ var import_jsx_runtime37, import_react42, inline_view_default11;
16096
16209
  var init_inline_view11 = __esm({
16097
16210
  "build/util.timestamps/inline-view.js"() {
16098
16211
  "use strict";
16099
- import_jsx_runtime35 = __toESM(require_jsx_runtime());
16100
- import_react39 = __toESM(require_react());
16212
+ import_jsx_runtime37 = __toESM(require_jsx_runtime());
16213
+ import_react42 = __toESM(require_react());
16101
16214
  init_auto();
16102
16215
  inline_view_default11 = InlineView17;
16103
16216
  }
@@ -16525,7 +16638,7 @@ function info_default7({ defineComponent, Video, validation: { SourceName }, com
16525
16638
  // build/output.autoCmaf/info.js
16526
16639
  var import_react10 = __toESM(require_react());
16527
16640
  function info_default8({ defineComponent, All, validation: { Z, Hostname } }) {
16528
- const SummaryView7 = import_react10.default.lazy(async () => Promise.resolve().then(() => (init_summary(), summary_exports)));
16641
+ const SummaryView8 = import_react10.default.lazy(async () => Promise.resolve().then(() => (init_summary(), summary_exports)));
16529
16642
  const FullscreenView3 = import_react10.default.lazy(async () => Promise.resolve().then(() => (init_fullscreen(), fullscreen_exports)));
16530
16643
  const SegmentConfiguration2 = import_react10.default.lazy(async () => {
16531
16644
  const views = await Promise.resolve().then(() => (init_form_views(), form_views_exports));
@@ -16572,7 +16685,7 @@ function info_default8({ defineComponent, All, validation: { Z, Hostname } }) {
16572
16685
  }
16573
16686
  return { ...state };
16574
16687
  },
16575
- summary: SummaryView7,
16688
+ summary: SummaryView8,
16576
16689
  fullscreen: FullscreenView3
16577
16690
  },
16578
16691
  configForm: {
@@ -17065,8 +17178,8 @@ function info_default15(R) {
17065
17178
  // build/processor.actionReplay/info.js
17066
17179
  var import_react24 = __toESM(require_react());
17067
17180
  var import_config3 = __toESM(require_config());
17068
- function info_default16({ defineComponent, assertUnreachable: assertUnreachable15, Av }) {
17069
- const SummaryView7 = import_react24.default.lazy(async () => Promise.resolve().then(() => (init_summary2(), summary_exports2)));
17181
+ function info_default16({ defineComponent, assertUnreachable: assertUnreachable16, Av }) {
17182
+ const SummaryView8 = import_react24.default.lazy(async () => Promise.resolve().then(() => (init_summary2(), summary_exports2)));
17070
17183
  return defineComponent({
17071
17184
  identifier: "processor.transform.actionReplay",
17072
17185
  category: "processor",
@@ -17097,7 +17210,7 @@ function info_default16({ defineComponent, assertUnreachable: assertUnreachable1
17097
17210
  }
17098
17211
  },
17099
17212
  runtime: {
17100
- summary: SummaryView7,
17213
+ summary: SummaryView8,
17101
17214
  initialState: () => ({
17102
17215
  replaying: false,
17103
17216
  contentPlayerUrl: void 0
@@ -17112,7 +17225,7 @@ function info_default16({ defineComponent, assertUnreachable: assertUnreachable1
17112
17225
  case "replay-finished":
17113
17226
  return { ...state, replaying: false };
17114
17227
  default:
17115
- return assertUnreachable15(evType);
17228
+ return assertUnreachable16(evType);
17116
17229
  }
17117
17230
  }
17118
17231
  },
@@ -17133,7 +17246,7 @@ function info_default16({ defineComponent, assertUnreachable: assertUnreachable1
17133
17246
  var import_react26 = __toESM(require_react());
17134
17247
  function info_default17({ defineComponent, Audio, validation: { Z } }) {
17135
17248
  const InlineView18 = import_react26.default.lazy(async () => Promise.resolve().then(() => (init_inline_view6(), inline_view_exports6)));
17136
- const SummaryView7 = import_react26.default.lazy(async () => Promise.resolve().then(() => (init_summary_view3(), summary_view_exports3)));
17249
+ const SummaryView8 = import_react26.default.lazy(async () => Promise.resolve().then(() => (init_summary_view3(), summary_view_exports3)));
17137
17250
  return defineComponent({
17138
17251
  identifier: "processor.audioLevel",
17139
17252
  category: "processor",
@@ -17174,7 +17287,7 @@ function info_default17({ defineComponent, Audio, validation: { Z } }) {
17174
17287
  return { ...state };
17175
17288
  },
17176
17289
  inline: InlineView18,
17177
- summary: SummaryView7
17290
+ summary: SummaryView8
17178
17291
  },
17179
17292
  configForm: {
17180
17293
  form: {
@@ -17195,7 +17308,7 @@ function mkSourceKey3(sourceId, key) {
17195
17308
  function info_default18({ defineComponent, Audio, validation: { Z } }) {
17196
17309
  const InlineView18 = import_react28.default.lazy(async () => Promise.resolve().then(() => (init_inline_view7(), inline_view_exports7)));
17197
17310
  const FullscreenView3 = import_react28.default.lazy(async () => Promise.resolve().then(() => (init_fullscreen_view(), fullscreen_view_exports)));
17198
- const SummaryView7 = import_react28.default.lazy(async () => Promise.resolve().then(() => (init_summary_view4(), summary_view_exports4)));
17311
+ const SummaryView8 = import_react28.default.lazy(async () => Promise.resolve().then(() => (init_summary_view4(), summary_view_exports4)));
17199
17312
  return defineComponent({
17200
17313
  identifier: "processor.audioMixer",
17201
17314
  category: "processor",
@@ -17280,7 +17393,7 @@ function info_default18({ defineComponent, Audio, validation: { Z } }) {
17280
17393
  },
17281
17394
  inline: InlineView18,
17282
17395
  fullscreen: FullscreenView3,
17283
- summary: SummaryView7
17396
+ summary: SummaryView8
17284
17397
  },
17285
17398
  configForm: {
17286
17399
  form: {
@@ -17411,9 +17524,9 @@ function info_default20({ defineComponent, Video, validation: { Z } }) {
17411
17524
  }
17412
17525
 
17413
17526
  // build/processor.cascadingSwitch/info.js
17414
- function info_default21({ defineComponent, Av, React: React19, common: { Resolutions, FrameRates } }) {
17415
- const SourceSelection = React19.lazy(async () => Promise.resolve().then(() => (init_source_selection(), source_selection_exports)));
17416
- const InlineView18 = React19.lazy(async () => Promise.resolve().then(() => (init_inline_view8(), inline_view_exports8)));
17527
+ function info_default21({ defineComponent, Av, React: React20, common: { Resolutions, FrameRates } }) {
17528
+ const SourceSelection = React20.lazy(async () => Promise.resolve().then(() => (init_source_selection(), source_selection_exports)));
17529
+ const InlineView18 = React20.lazy(async () => Promise.resolve().then(() => (init_inline_view8(), inline_view_exports8)));
17417
17530
  return defineComponent({
17418
17531
  identifier: "processor.control.cascadingSwitch",
17419
17532
  category: "processor",
@@ -17546,9 +17659,93 @@ function assertUnreachable10(_) {
17546
17659
  throw new Error("Didn't expect to get here");
17547
17660
  }
17548
17661
 
17549
- // build/processor.fixedLadder/info.js
17662
+ // build/processor.dynamicBug/info.js
17550
17663
  var import_config5 = __toESM(require_config());
17551
- function info_default22({ defineComponent, Video }) {
17664
+ var import_react35 = __toESM(require_react());
17665
+ function info_default22({ defineComponent, Video, validation: { Port, unique } }) {
17666
+ const BugSelection2 = import_react35.default.lazy(async () => Promise.resolve().then(() => (init_bug_selection(), bug_selection_exports)));
17667
+ const SummaryView8 = import_react35.default.lazy(async () => Promise.resolve().then(() => (init_summary_view5(), summary_view_exports5)));
17668
+ return defineComponent({
17669
+ identifier: "processor.dynamicBug",
17670
+ category: "processor",
17671
+ name: "Dynamic Bug",
17672
+ subscription: {
17673
+ // Only accept a single video stream
17674
+ accepts: {
17675
+ type: "single-stream",
17676
+ media: Video
17677
+ },
17678
+ produces: {
17679
+ type: "single-stream",
17680
+ media: Video
17681
+ }
17682
+ },
17683
+ extraValidation: function(ctx) {
17684
+ ctx.requireVideo(1);
17685
+ },
17686
+ display: (desc) => {
17687
+ return {
17688
+ default: desc.config.defaultBug ?? "none"
17689
+ };
17690
+ },
17691
+ runtime: {
17692
+ summary: SummaryView8,
17693
+ initialState: () => ({}),
17694
+ handleEvent: (ev, state) => {
17695
+ const evType = ev.type;
17696
+ switch (evType) {
17697
+ case "bug-changed":
17698
+ return { ...state, activeBug: { file: ev.file, orientation: ev.orientation } };
17699
+ default:
17700
+ assertUnreachable11(evType);
17701
+ }
17702
+ }
17703
+ },
17704
+ configForm: {
17705
+ global: {
17706
+ hardware: (0, import_config5.HardwareSelection)()
17707
+ },
17708
+ form: {
17709
+ defaultBug: {
17710
+ help: "The default bug to render on the video (if any)",
17711
+ hint: {
17712
+ type: "custom",
17713
+ component: BugSelection2
17714
+ }
17715
+ },
17716
+ defaultOrientation: {
17717
+ help: "The default location to render the bug in",
17718
+ hint: {
17719
+ type: "select",
17720
+ optional: true,
17721
+ options: [
17722
+ { value: "topleft", display: "Top Left" },
17723
+ { value: "topright", display: "Top Right" },
17724
+ { value: "bottomleft", display: "Bottom Left" },
17725
+ { value: "bottomright", display: "Bottom Right" }
17726
+ ]
17727
+ }
17728
+ },
17729
+ apiPort: {
17730
+ help: "Port to open the API on",
17731
+ hint: {
17732
+ type: "numeric",
17733
+ defaultValue: 5e3,
17734
+ validation: Port,
17735
+ global: unique("port")
17736
+ }
17737
+ }
17738
+ }
17739
+ }
17740
+ });
17741
+ }
17742
+ function assertUnreachable11(_) {
17743
+ throw new Error("Didn't expect to get here");
17744
+ }
17745
+
17746
+ // build/processor.fixedLadder/info.js
17747
+ var import_config6 = __toESM(require_config());
17748
+ function info_default23({ defineComponent, Video }) {
17552
17749
  return defineComponent({
17553
17750
  identifier: "processor.transform.fixedLadder",
17554
17751
  category: "processor",
@@ -17588,7 +17785,7 @@ function info_default22({ defineComponent, Video }) {
17588
17785
  },
17589
17786
  configForm: {
17590
17787
  global: {
17591
- hardware: (0, import_config5.HardwareSelection)()
17788
+ hardware: (0, import_config6.HardwareSelection)()
17592
17789
  },
17593
17790
  form: {
17594
17791
  rungs: {
@@ -17617,11 +17814,11 @@ var rungNames = [
17617
17814
  ];
17618
17815
 
17619
17816
  // build/processor.monetise/info.js
17620
- var import_react34 = __toESM(require_react());
17621
- var import_config6 = __toESM(require_config());
17622
- function info_default23(R) {
17817
+ var import_react37 = __toESM(require_react());
17818
+ var import_config7 = __toESM(require_config());
17819
+ function info_default24(R) {
17623
17820
  const { defineComponent, Av } = R;
17624
- const SummaryView7 = import_react34.default.lazy(async () => Promise.resolve().then(() => (init_summary3(), summary_exports3)));
17821
+ const SummaryView8 = import_react37.default.lazy(async () => Promise.resolve().then(() => (init_summary3(), summary_exports3)));
17625
17822
  return defineComponent({
17626
17823
  identifier: "processor.monetise",
17627
17824
  category: "output",
@@ -17661,27 +17858,27 @@ function info_default23(R) {
17661
17858
  state.currentAdvert = void 0;
17662
17859
  break;
17663
17860
  default:
17664
- assertUnreachable11(evType);
17861
+ assertUnreachable12(evType);
17665
17862
  }
17666
17863
  return { ...state };
17667
17864
  },
17668
- summary: SummaryView7
17865
+ summary: SummaryView8
17669
17866
  },
17670
17867
  configForm: {
17671
17868
  global: {
17672
- iceServers: (0, import_config6.GlobalIceServers)(R),
17673
- hardware: (0, import_config6.HardwareSelection)()
17869
+ iceServers: (0, import_config7.GlobalIceServers)(R),
17870
+ hardware: (0, import_config7.HardwareSelection)()
17674
17871
  },
17675
17872
  form: {}
17676
17873
  }
17677
17874
  });
17678
17875
  }
17679
- function assertUnreachable11(_) {
17876
+ function assertUnreachable12(_) {
17680
17877
  throw new Error("Didn't expect to get here");
17681
17878
  }
17682
17879
 
17683
17880
  // build/processor.whisper-transcribe/info.js
17684
- function info_default24({ defineComponent, Av, Subtitle, validation: { Z } }) {
17881
+ function info_default25({ defineComponent, Av, Subtitle, validation: { Z } }) {
17685
17882
  return defineComponent({
17686
17883
  identifier: "processor.whisper-transcribe",
17687
17884
  category: "processor",
@@ -17723,11 +17920,11 @@ function info_default24({ defineComponent, Av, Subtitle, validation: { Z } }) {
17723
17920
  }
17724
17921
 
17725
17922
  // build/util.latency/info.js
17726
- var import_react36 = __toESM(require_react());
17727
- function info_default25(R) {
17923
+ var import_react39 = __toESM(require_react());
17924
+ function info_default26(R) {
17728
17925
  const { defineComponent } = R;
17729
- const InlineView18 = import_react36.default.lazy(async () => Promise.resolve().then(() => (init_inline_view9(), inline_view_exports9)));
17730
- const SourceNodeSelection2 = import_react36.default.lazy(async () => Promise.resolve().then(() => (init_source_node_selection(), source_node_selection_exports)));
17926
+ const InlineView18 = import_react39.default.lazy(async () => Promise.resolve().then(() => (init_inline_view9(), inline_view_exports9)));
17927
+ const SourceNodeSelection2 = import_react39.default.lazy(async () => Promise.resolve().then(() => (init_source_node_selection(), source_node_selection_exports)));
17731
17928
  return defineComponent({
17732
17929
  identifier: "util.latency-stats",
17733
17930
  category: "output",
@@ -17754,7 +17951,7 @@ function info_default25(R) {
17754
17951
  break;
17755
17952
  }
17756
17953
  default:
17757
- assertUnreachable12(evType);
17954
+ assertUnreachable13(evType);
17758
17955
  }
17759
17956
  return { ...state };
17760
17957
  },
@@ -17808,15 +18005,15 @@ function info_default25(R) {
17808
18005
  }
17809
18006
  });
17810
18007
  }
17811
- function assertUnreachable12(_) {
18008
+ function assertUnreachable13(_) {
17812
18009
  throw new Error("Didn't expect to get here");
17813
18010
  }
17814
18011
 
17815
18012
  // build/util.ma35d/info.js
17816
- var import_react38 = __toESM(require_react());
17817
- function info_default26(R) {
18013
+ var import_react41 = __toESM(require_react());
18014
+ function info_default27(R) {
17818
18015
  const { defineComponent } = R;
17819
- const InlineView18 = import_react38.default.lazy(async () => Promise.resolve().then(() => (init_inline_view10(), inline_view_exports10)));
18016
+ const InlineView18 = import_react41.default.lazy(async () => Promise.resolve().then(() => (init_inline_view10(), inline_view_exports10)));
17820
18017
  return defineComponent({
17821
18018
  identifier: "util.ma35d-stats",
17822
18019
  category: "output",
@@ -17849,7 +18046,7 @@ function info_default26(R) {
17849
18046
  break;
17850
18047
  }
17851
18048
  default:
17852
- assertUnreachable13(evType);
18049
+ assertUnreachable14(evType);
17853
18050
  }
17854
18051
  return { ...state };
17855
18052
  },
@@ -17860,15 +18057,15 @@ function info_default26(R) {
17860
18057
  }
17861
18058
  });
17862
18059
  }
17863
- function assertUnreachable13(_) {
18060
+ function assertUnreachable14(_) {
17864
18061
  throw new Error("Didn't expect to get here");
17865
18062
  }
17866
18063
 
17867
18064
  // build/util.timestamps/info.js
17868
- var import_react40 = __toESM(require_react());
17869
- function info_default27(R) {
18065
+ var import_react43 = __toESM(require_react());
18066
+ function info_default28(R) {
17870
18067
  const { defineComponent, All } = R;
17871
- const InlineView18 = import_react40.default.lazy(async () => Promise.resolve().then(() => (init_inline_view11(), inline_view_exports11)));
18068
+ const InlineView18 = import_react43.default.lazy(async () => Promise.resolve().then(() => (init_inline_view11(), inline_view_exports11)));
17872
18069
  return defineComponent({
17873
18070
  identifier: "util.timestamps",
17874
18071
  category: "output",
@@ -17903,7 +18100,7 @@ function info_default27(R) {
17903
18100
  break;
17904
18101
  }
17905
18102
  default:
17906
- assertUnreachable14(evType);
18103
+ assertUnreachable15(evType);
17907
18104
  }
17908
18105
  return { ...state };
17909
18106
  },
@@ -17914,7 +18111,7 @@ function info_default27(R) {
17914
18111
  }
17915
18112
  });
17916
18113
  }
17917
- function assertUnreachable14(_) {
18114
+ function assertUnreachable15(_) {
17918
18115
  throw new Error("Didn't expect to get here");
17919
18116
  }
17920
18117
 
@@ -17959,6 +18156,7 @@ AllComponents.push((r) => info_default24(r));
17959
18156
  AllComponents.push((r) => info_default25(r));
17960
18157
  AllComponents.push((r) => info_default26(r));
17961
18158
  AllComponents.push((r) => info_default27(r));
18159
+ AllComponents.push((r) => info_default28(r));
17962
18160
  export {
17963
18161
  getNodeInfo as default
17964
18162
  };