@norskvideo/norsk-studio-built-ins 1.12.0 → 1.14.0
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/Readme.adoc +16 -0
- package/client/info.js +135 -63
- package/client/style.css +125 -1
- package/lib/info.js +2 -2
- package/lib/info.js.map +1 -1
- package/lib/input.rtmp/info.js +1 -0
- package/lib/input.rtmp/info.js.map +1 -1
- package/lib/input.rtmp/runtime.d.ts +1 -1
- package/lib/input.rtmp/runtime.js.map +1 -1
- package/lib/input.srt-listener/runtime.d.ts +1 -1
- package/lib/input.srt-listener/runtime.js.map +1 -1
- package/lib/output.autoCmaf/runtime.d.ts +1 -1
- package/lib/output.autoCmaf/runtime.js.map +1 -1
- package/lib/output.preview/runtime.d.ts +3 -3
- package/lib/output.preview/runtime.js.map +1 -1
- package/lib/output.rtmp/runtime.d.ts +2 -2
- package/lib/output.rtmp/runtime.js.map +1 -1
- package/lib/output.statistics/runtime.d.ts +1 -1
- package/lib/output.statistics/runtime.js.map +1 -1
- package/lib/processor.browserOverlay/info.js +1 -1
- package/lib/processor.browserOverlay/info.js.map +1 -1
- package/lib/processor.browserOverlay/runtime.js +6 -7
- package/lib/processor.browserOverlay/runtime.js.map +1 -1
- package/lib/processor.cascadingSwitch/info.js +1 -1
- package/lib/processor.cascadingSwitch/info.js.map +1 -1
- package/lib/processor.cascadingSwitch/runtime.d.ts +1 -1
- package/lib/processor.cascadingSwitch/runtime.js.map +1 -1
- package/lib/processor.dynamicBug/info.js +7 -5
- package/lib/processor.dynamicBug/info.js.map +1 -1
- package/lib/processor.dynamicBug/runtime.d.ts +18 -15
- package/lib/processor.dynamicBug/runtime.js +243 -75
- package/lib/processor.dynamicBug/runtime.js.map +1 -1
- package/lib/processor.dynamicBug/summary-view.d.ts +1 -1
- package/lib/processor.dynamicBug/summary-view.js +114 -46
- package/lib/processor.dynamicBug/summary-view.js.map +1 -1
- package/lib/processor.dynamicBug/types.d.ts +19 -0
- package/lib/processor.dynamicBug/types.js +3 -0
- package/lib/processor.dynamicBug/types.js.map +1 -0
- package/lib/processor.dynamicBug/types.yaml +25 -0
- package/lib/processor.fixedLadder/info.js +1 -1
- package/lib/processor.fixedLadder/info.js.map +1 -1
- package/lib/test/browser-overlay.js +1 -0
- package/lib/test/browser-overlay.js.map +1 -1
- package/lib/test/dynamic-bug.js +11 -15
- package/lib/test/dynamic-bug.js.map +1 -1
- package/lib/test/preview.js +3 -3
- package/lib/test/preview.js.map +1 -1
- package/lib/{util.latency → util.stats.latency}/info.js +1 -1
- package/lib/util.stats.latency/info.js.map +1 -0
- package/lib/util.stats.latency/inline-view.js.map +1 -0
- package/lib/{util.latency → util.stats.latency}/runtime.d.ts +1 -1
- package/lib/util.stats.latency/runtime.js.map +1 -0
- package/lib/util.stats.latency/source-node-selection.js.map +1 -0
- package/lib/{util.ma35d → util.stats.ma35d}/info.js +1 -1
- package/lib/util.stats.ma35d/info.js.map +1 -0
- package/lib/util.stats.ma35d/inline-view.js.map +1 -0
- package/lib/{util.ma35d → util.stats.ma35d}/runtime.d.ts +1 -1
- package/lib/util.stats.ma35d/runtime.js.map +1 -0
- package/lib/util.timestamps/runtime.d.ts +1 -1
- package/lib/util.timestamps/runtime.js.map +1 -1
- package/package.json +8 -5
- package/lib/util.latency/info.js.map +0 -1
- package/lib/util.latency/inline-view.js.map +0 -1
- package/lib/util.latency/runtime.js.map +0 -1
- package/lib/util.latency/source-node-selection.js.map +0 -1
- package/lib/util.ma35d/info.js.map +0 -1
- package/lib/util.ma35d/inline-view.js.map +0 -1
- package/lib/util.ma35d/runtime.js.map +0 -1
- /package/lib/{util.latency → util.stats.latency}/info.d.ts +0 -0
- /package/lib/{util.latency → util.stats.latency}/inline-view.d.ts +0 -0
- /package/lib/{util.latency → util.stats.latency}/inline-view.js +0 -0
- /package/lib/{util.latency → util.stats.latency}/runtime.js +0 -0
- /package/lib/{util.latency → util.stats.latency}/source-node-selection.d.ts +0 -0
- /package/lib/{util.latency → util.stats.latency}/source-node-selection.js +0 -0
- /package/lib/{util.ma35d → util.stats.ma35d}/info.d.ts +0 -0
- /package/lib/{util.ma35d → util.stats.ma35d}/inline-view.d.ts +0 -0
- /package/lib/{util.ma35d → util.stats.ma35d}/inline-view.js +0 -0
- /package/lib/{util.ma35d → util.stats.ma35d}/runtime.js +0 -0
package/Readme.adoc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
== workspaces/built-ins
|
2
|
+
|
3
|
+
This built-ins directory contains a collection of the default components available for use within Studio.
|
4
|
+
Its package.json builds a manifest for everything found in 'src' in src/index.ts, as well as building a client-side bundle for all of them.
|
5
|
+
|
6
|
+
=== Structure
|
7
|
+
|
8
|
+
Inside the 'src' folder, we have several subdirectories each containing components in a particular class:
|
9
|
+
|
10
|
+
- Inputs: Modules that define how media streams are ingested.
|
11
|
+
- Outputs: Modules that define how media streams are delivered to their destinations.
|
12
|
+
- Processors: Modules that handle the transformation or analysis of media streams.
|
13
|
+
|
14
|
+
Using Norsk Studio, we can combine these components to easily build even complex live media workflows.
|
15
|
+
|
16
|
+
The documentation for each of the components can be found within the component's folder Readme.
|
package/client/info.js
CHANGED
@@ -695,56 +695,119 @@ var summary_view_exports3 = {};
|
|
695
695
|
__export(summary_view_exports3, {
|
696
696
|
default: () => summary_view_default3
|
697
697
|
});
|
698
|
-
function SummaryView5({ state, sendCommand,
|
698
|
+
function SummaryView5({ state, sendCommand, urls }) {
|
699
699
|
const [bug, setBug] = (0, import_react14.useState)(state.activeBug?.file);
|
700
700
|
const [position, setPosition] = (0, import_react14.useState)(state.activeBug?.position);
|
701
701
|
const [bugs, setBugs] = (0, import_react14.useState)([]);
|
702
702
|
const [fileToUpload, setFileToUpload] = (0, import_react14.useState)(void 0);
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
703
|
+
const [showFileInput, setShowFileInput] = (0, import_react14.useState)(false);
|
704
|
+
const [showUploadButton, setShowUploadButton] = (0, import_react14.useState)(false);
|
705
|
+
const [uploadStatus, setUploadStatus] = (0, import_react14.useState)({ success: false, message: null });
|
706
|
+
const [showDeleteDropdown, setShowDeleteDropdown] = (0, import_react14.useState)(false);
|
707
|
+
const [bugToDelete, setBugToDelete] = (0, import_react14.useState)("");
|
708
|
+
const updateBugs = (0, import_react14.useCallback)(async () => {
|
709
|
+
try {
|
710
|
+
const result2 = await fetch(`${urls.componentUrl}/bugs`);
|
711
|
+
if (result2.ok) {
|
712
|
+
const newBugs = await result2.json();
|
713
|
+
setBugs(newBugs);
|
714
|
+
} else {
|
715
|
+
throw new Error(await result2.text());
|
716
|
+
}
|
717
|
+
} catch (error) {
|
718
|
+
console.error("Failed to update bugs:", error);
|
719
|
+
setUploadStatus({
|
720
|
+
success: false,
|
721
|
+
message: "Failed to update bug list."
|
722
|
+
});
|
711
723
|
}
|
712
|
-
}
|
724
|
+
}, [urls.componentUrl]);
|
713
725
|
(0, import_react14.useEffect)(() => {
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
setPosition(e.currentTarget.value);
|
727
|
-
}, children: [(0, import_jsx_runtime15.jsx)("option", { value: "topleft", selected: position === "topleft", children: "Top Left" }), (0, import_jsx_runtime15.jsx)("option", { value: "topright", selected: position === "topright", children: "Top Right" }), (0, import_jsx_runtime15.jsx)("option", { value: "bottomleft", selected: position === "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime15.jsx)("option", { value: "bottomright", selected: position === "bottomright", children: "Bottom Right" })] }), bug != state.activeBug?.file || position != state.activeBug?.position || fileToUpload ? (0, import_jsx_runtime15.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) => {
|
728
|
-
e.preventDefault();
|
729
|
-
if (fileToUpload && bug === "new") {
|
726
|
+
updateBugs().catch(console.error);
|
727
|
+
}, [updateBugs]);
|
728
|
+
const onFileChange = (e) => {
|
729
|
+
const file = e.target.files?.[0];
|
730
|
+
setFileToUpload(file);
|
731
|
+
setShowUploadButton(!!file);
|
732
|
+
setUploadStatus({ success: false, message: null });
|
733
|
+
};
|
734
|
+
const uploadFile = async () => {
|
735
|
+
if (!fileToUpload)
|
736
|
+
return;
|
737
|
+
try {
|
730
738
|
const form = new FormData();
|
731
|
-
const url = httpApi.toString() + "/bugs";
|
732
739
|
form.append("file", fileToUpload);
|
733
|
-
await fetch(
|
740
|
+
const response = await fetch(`${urls.componentUrl}/bugs`, {
|
734
741
|
method: "POST",
|
735
742
|
body: form
|
736
743
|
});
|
737
|
-
|
738
|
-
await
|
739
|
-
|
740
|
-
|
744
|
+
if (response.status === 409) {
|
745
|
+
const errorData = await response.json();
|
746
|
+
setUploadStatus({
|
747
|
+
success: false,
|
748
|
+
message: `${errorData.error}. Delete the existing bug first if you want to replace it.`
|
749
|
+
});
|
750
|
+
} else if (!response.ok) {
|
751
|
+
throw new Error("Upload failed");
|
752
|
+
} else {
|
741
753
|
setFileToUpload(void 0);
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
754
|
+
setShowFileInput(false);
|
755
|
+
setUploadStatus({
|
756
|
+
success: true,
|
757
|
+
message: "Bug uploaded successfully!"
|
758
|
+
});
|
759
|
+
await updateBugs();
|
760
|
+
}
|
761
|
+
} catch (error) {
|
762
|
+
console.error("Failed to upload file:", error);
|
763
|
+
setUploadStatus({ success: false, message: "Failed to upload bug." });
|
764
|
+
}
|
765
|
+
setTimeout(() => setUploadStatus({ success: false, message: null }), 5e3);
|
766
|
+
};
|
767
|
+
const deleteBug = async () => {
|
768
|
+
if (!bugToDelete)
|
769
|
+
return;
|
770
|
+
try {
|
771
|
+
const response = await fetch(`${urls.componentUrl}/bug`, {
|
772
|
+
method: "DELETE",
|
773
|
+
headers: {
|
774
|
+
"Content-Type": "application/json"
|
775
|
+
},
|
776
|
+
body: JSON.stringify({ filename: bugToDelete })
|
777
|
+
});
|
778
|
+
if (response.ok) {
|
779
|
+
setUploadStatus({
|
780
|
+
success: true,
|
781
|
+
message: "Bug deleted successfully!"
|
782
|
+
});
|
783
|
+
await updateBugs();
|
784
|
+
if (bug === bugToDelete) {
|
785
|
+
setBug(void 0);
|
786
|
+
sendCommand({
|
787
|
+
type: "change-bug",
|
788
|
+
file: void 0,
|
789
|
+
position: void 0
|
790
|
+
});
|
791
|
+
}
|
792
|
+
setBugToDelete("");
|
793
|
+
setShowDeleteDropdown(false);
|
794
|
+
} else {
|
795
|
+
const errorData = await response.json();
|
796
|
+
setUploadStatus({
|
797
|
+
success: false,
|
798
|
+
message: errorData.error || "Failed to delete bug"
|
799
|
+
});
|
800
|
+
}
|
801
|
+
} catch (error) {
|
802
|
+
console.error("Failed to delete bug:", error);
|
803
|
+
setUploadStatus({ success: false, message: "Failed to delete bug" });
|
746
804
|
}
|
747
|
-
|
805
|
+
setTimeout(() => setUploadStatus({ success: false, message: null }), 3e3);
|
806
|
+
};
|
807
|
+
const buttonClass = "mt-2 mb-5 text-white w-full justify-center bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800";
|
808
|
+
const deleteButtonClass = "mt-2 text-white w-full justify-center bg-red-600 hover:bg-red-700 focus:ring-4 focus:outline-none focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-red-700 dark:hover:bg-red-800 dark:focus:ring-red-900";
|
809
|
+
const fileInputClass = "block w-full text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400";
|
810
|
+
return (0, import_jsx_runtime15.jsxs)("div", { className: "space-y-3", children: [(0, import_jsx_runtime15.jsx)("h2", { className: "text-xl font-bold text-gray-900 dark:text-white", children: "Controls" }), (0, import_jsx_runtime15.jsxs)("div", { children: [(0, import_jsx_runtime15.jsx)("label", { htmlFor: "select-bug", className: "block text-gray-900 dark:text-white mb-1", children: "Source" }), (0, import_jsx_runtime15.jsxs)("select", { id: "select-bug", className: "w-full node-editor-select-input", value: bug || "", onChange: (e) => setBug(e.target.value || void 0), children: [(0, import_jsx_runtime15.jsx)("option", { value: "", children: "---" }), bugs.map((s) => (0, import_jsx_runtime15.jsx)("option", { value: s, children: s }, s))] })] }), bug && (0, import_jsx_runtime15.jsxs)("div", { children: [(0, import_jsx_runtime15.jsx)("label", { htmlFor: "select-position", className: "block text-gray-900 dark:text-white mb-1", children: "Position" }), (0, import_jsx_runtime15.jsxs)("select", { id: "select-position", className: "w-full node-editor-select-input", value: position, onChange: (e) => setPosition(e.target.value), children: [(0, import_jsx_runtime15.jsx)("option", { value: "topleft", children: "Top Left" }), (0, import_jsx_runtime15.jsx)("option", { value: "topright", children: "Top Right" }), (0, import_jsx_runtime15.jsx)("option", { value: "bottomleft", children: "Bottom Left" }), (0, import_jsx_runtime15.jsx)("option", { value: "bottomright", children: "Bottom Right" })] })] }), (bug !== state.activeBug?.file || position !== state.activeBug?.position) && (0, import_jsx_runtime15.jsx)("button", { type: "button", className: buttonClass, onClick: () => sendCommand({ type: "change-bug", file: bug, position }), children: "Commit" }), !showFileInput && !uploadStatus.success && (0, import_jsx_runtime15.jsx)("button", { type: "button", className: buttonClass, onClick: () => setShowFileInput(true), style: { marginBottom: "1rem" }, children: "Upload Bug" }), showFileInput && (0, import_jsx_runtime15.jsxs)("form", { style: { display: "block", marginBottom: "1rem" }, children: [(0, import_jsx_runtime15.jsx)("input", { type: "file", id: "file", name: "filename", onChange: onFileChange, className: fileInputClass }), showUploadButton && (0, import_jsx_runtime15.jsx)("button", { type: "button", className: buttonClass, onClick: uploadFile, children: "Upload" })] }), (0, import_jsx_runtime15.jsx)("button", { type: "button", className: deleteButtonClass, onClick: () => setShowDeleteDropdown(!showDeleteDropdown), style: { marginBottom: "1rem" }, children: showDeleteDropdown ? "Hide Delete Options" : "Delete Bugs" }), showDeleteDropdown && (0, import_jsx_runtime15.jsxs)("div", { className: "mt-2 p-2 bg-gray-100 dark:bg-gray-800 rounded-lg", children: [(0, import_jsx_runtime15.jsx)("h3", { className: "text-lg font-semibold mb-2 text-gray-900 dark:text-white", children: "Select Bug to Delete" }), (0, import_jsx_runtime15.jsxs)("select", { className: "w-full mb-2 node-editor-select-input", value: bugToDelete, onChange: (e) => setBugToDelete(e.target.value), children: [(0, import_jsx_runtime15.jsx)("option", { value: "", children: " Select a bug" }), bugs.map((bugName) => (0, import_jsx_runtime15.jsx)("option", { value: bugName, children: bugName }, bugName))] }), (0, import_jsx_runtime15.jsx)("button", { onClick: deleteBug, disabled: !bugToDelete, className: `${deleteButtonClass} ${!bugToDelete ? "opacity-50 cursor-not-allowed" : ""}`, children: "Delete Selected Bug" })] }), uploadStatus.message && (0, import_jsx_runtime15.jsx)("div", { className: `mt-2 text-center ${uploadStatus.success ? "text-green-600" : "text-red-600"}`, children: uploadStatus.message })] });
|
748
811
|
}
|
749
812
|
var import_jsx_runtime15, import_react14, summary_view_default3;
|
750
813
|
var init_summary_view3 = __esm({
|
@@ -4339,7 +4402,7 @@ function getAxisItems(chart, position, axis, intersect, useFinalPosition) {
|
|
4339
4402
|
const rangeMethod = axis === "x" ? "inXRange" : "inYRange";
|
4340
4403
|
let intersectsItem = false;
|
4341
4404
|
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index2) => {
|
4342
|
-
if (element[rangeMethod](position[axis], useFinalPosition)) {
|
4405
|
+
if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
|
4343
4406
|
items.push({
|
4344
4407
|
element,
|
4345
4408
|
datasetIndex,
|
@@ -8248,8 +8311,10 @@ var init_chart = __esm({
|
|
8248
8311
|
const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta) => meta.controller.options.grouped);
|
8249
8312
|
const stacked = iScale.options.stacked;
|
8250
8313
|
const stacks = [];
|
8314
|
+
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
|
8315
|
+
const iScaleValue = currentParsed && currentParsed[iScale.axis];
|
8251
8316
|
const skipNull = (meta) => {
|
8252
|
-
const parsed = meta.
|
8317
|
+
const parsed = meta._parsed.find((item) => item[iScale.axis] === iScaleValue);
|
8253
8318
|
const val = parsed && parsed[meta.vScale.axis];
|
8254
8319
|
if (isNullOrUndef(val) || isNaN(val)) {
|
8255
8320
|
return true;
|
@@ -11181,7 +11246,7 @@ var init_chart = __esm({
|
|
11181
11246
|
}
|
11182
11247
|
};
|
11183
11248
|
hasFunction = (value) => isObject(value) && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));
|
11184
|
-
version = "4.4.
|
11249
|
+
version = "4.4.4";
|
11185
11250
|
KNOWN_POSITIONS = [
|
11186
11251
|
"top",
|
11187
11252
|
"bottom",
|
@@ -11641,8 +11706,8 @@ var init_chart = __esm({
|
|
11641
11706
|
let i;
|
11642
11707
|
if (this._resizeBeforeDraw) {
|
11643
11708
|
const { width, height } = this._resizeBeforeDraw;
|
11644
|
-
this._resize(width, height);
|
11645
11709
|
this._resizeBeforeDraw = null;
|
11710
|
+
this._resize(width, height);
|
11646
11711
|
}
|
11647
11712
|
this.clear();
|
11648
11713
|
if (this.width <= 0 || this.height <= 0) {
|
@@ -12082,7 +12147,8 @@ var init_chart = __esm({
|
|
12082
12147
|
], useFinalPosition);
|
12083
12148
|
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
|
12084
12149
|
const _circumference = valueOrDefault(circumference, endAngle - startAngle);
|
12085
|
-
const
|
12150
|
+
const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;
|
12151
|
+
const betweenAngles = _circumference >= TAU || nonZeroBetween;
|
12086
12152
|
const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
|
12087
12153
|
return betweenAngles && withinRadius;
|
12088
12154
|
}
|
@@ -13316,6 +13382,9 @@ var init_chart = __esm({
|
|
13316
13382
|
++count;
|
13317
13383
|
}
|
13318
13384
|
}
|
13385
|
+
if (count === 0 || xSet.size === 0) {
|
13386
|
+
return false;
|
13387
|
+
}
|
13319
13388
|
const xAverage = [
|
13320
13389
|
...xSet
|
13321
13390
|
].reduce((a, b) => a + b) / xSet.size;
|
@@ -14642,7 +14711,7 @@ var init_chart = __esm({
|
|
14642
14711
|
ctx.strokeStyle = color2;
|
14643
14712
|
ctx.setLineDash(optsAtIndex.borderDash);
|
14644
14713
|
ctx.lineDashOffset = optsAtIndex.borderDashOffset;
|
14645
|
-
offset = this.getDistanceFromCenterForValue(opts.
|
14714
|
+
offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);
|
14646
14715
|
position = this.getPointPosition(i, offset);
|
14647
14716
|
ctx.beginPath();
|
14648
14717
|
ctx.moveTo(this.xCenter, this.yCenter);
|
@@ -15144,7 +15213,7 @@ var init_auto = __esm({
|
|
15144
15213
|
}
|
15145
15214
|
});
|
15146
15215
|
|
15147
|
-
// build/util.latency/inline-view.js
|
15216
|
+
// build/util.stats.latency/inline-view.js
|
15148
15217
|
var inline_view_exports7 = {};
|
15149
15218
|
__export(inline_view_exports7, {
|
15150
15219
|
default: () => inline_view_default7
|
@@ -15215,7 +15284,7 @@ function InlineView10({ state, config: _2 }) {
|
|
15215
15284
|
}
|
15216
15285
|
var import_jsx_runtime19, import_react18, inline_view_default7;
|
15217
15286
|
var init_inline_view7 = __esm({
|
15218
|
-
"build/util.latency/inline-view.js"() {
|
15287
|
+
"build/util.stats.latency/inline-view.js"() {
|
15219
15288
|
"use strict";
|
15220
15289
|
import_jsx_runtime19 = __toESM(require_jsx_runtime());
|
15221
15290
|
import_react18 = __toESM(require_react());
|
@@ -15224,7 +15293,7 @@ var init_inline_view7 = __esm({
|
|
15224
15293
|
}
|
15225
15294
|
});
|
15226
15295
|
|
15227
|
-
// build/util.latency/source-node-selection.js
|
15296
|
+
// build/util.stats.latency/source-node-selection.js
|
15228
15297
|
var source_node_selection_exports = {};
|
15229
15298
|
__export(source_node_selection_exports, {
|
15230
15299
|
default: () => source_node_selection_default
|
@@ -15243,14 +15312,14 @@ function SourceNodeSelection(props) {
|
|
15243
15312
|
}
|
15244
15313
|
var import_jsx_runtime20, source_node_selection_default;
|
15245
15314
|
var init_source_node_selection = __esm({
|
15246
|
-
"build/util.latency/source-node-selection.js"() {
|
15315
|
+
"build/util.stats.latency/source-node-selection.js"() {
|
15247
15316
|
"use strict";
|
15248
15317
|
import_jsx_runtime20 = __toESM(require_jsx_runtime());
|
15249
15318
|
source_node_selection_default = SourceNodeSelection;
|
15250
15319
|
}
|
15251
15320
|
});
|
15252
15321
|
|
15253
|
-
// build/util.ma35d/inline-view.js
|
15322
|
+
// build/util.stats.ma35d/inline-view.js
|
15254
15323
|
var inline_view_exports8 = {};
|
15255
15324
|
__export(inline_view_exports8, {
|
15256
15325
|
default: () => inline_view_default8
|
@@ -15325,7 +15394,7 @@ function InlineView11({ state, config: _2 }) {
|
|
15325
15394
|
}
|
15326
15395
|
var import_jsx_runtime21, import_react20, inline_view_default8;
|
15327
15396
|
var init_inline_view8 = __esm({
|
15328
|
-
"build/util.ma35d/inline-view.js"() {
|
15397
|
+
"build/util.stats.ma35d/inline-view.js"() {
|
15329
15398
|
"use strict";
|
15330
15399
|
import_jsx_runtime21 = __toESM(require_jsx_runtime());
|
15331
15400
|
import_react20 = __toESM(require_react());
|
@@ -15450,6 +15519,7 @@ function info_default({ defineComponent, Av, validation: { Z, Port, SourceName,
|
|
15450
15519
|
identifier: "input.rtmp",
|
15451
15520
|
category: "input",
|
15452
15521
|
name: "RTMP Ingest",
|
15522
|
+
description: "A component that listens for RTMP input on the address specified.",
|
15453
15523
|
subscription: {
|
15454
15524
|
accepts: void 0,
|
15455
15525
|
produces: {
|
@@ -16295,7 +16365,7 @@ function info_default13(R) {
|
|
16295
16365
|
var import_config3 = __toESM(require_config());
|
16296
16366
|
function info_default14({ defineComponent, Video, validation: { Z } }) {
|
16297
16367
|
return defineComponent({
|
16298
|
-
identifier: "processor.
|
16368
|
+
identifier: "processor.browserOverlay",
|
16299
16369
|
category: "processor",
|
16300
16370
|
name: "Browser Overlay",
|
16301
16371
|
subscription: {
|
@@ -16333,7 +16403,7 @@ function info_default15({ defineComponent, Av, React: React14, common: { Resolut
|
|
16333
16403
|
const SourceSelection = React14.lazy(async () => Promise.resolve().then(() => (init_source_selection(), source_selection_exports)));
|
16334
16404
|
const InlineView13 = React14.lazy(async () => Promise.resolve().then(() => (init_inline_view6(), inline_view_exports6)));
|
16335
16405
|
return defineComponent({
|
16336
|
-
identifier: "processor.
|
16406
|
+
identifier: "processor.cascadingSwitch",
|
16337
16407
|
category: "processor",
|
16338
16408
|
name: "Cascading Switch",
|
16339
16409
|
subscription: {
|
@@ -16474,6 +16544,7 @@ function info_default16({ defineComponent, Video }) {
|
|
16474
16544
|
identifier: "processor.dynamicBug",
|
16475
16545
|
category: "processor",
|
16476
16546
|
name: "Dynamic Bug",
|
16547
|
+
description: "",
|
16477
16548
|
subscription: {
|
16478
16549
|
// Only accept a single video stream
|
16479
16550
|
accepts: {
|
@@ -16490,7 +16561,7 @@ function info_default16({ defineComponent, Video }) {
|
|
16490
16561
|
},
|
16491
16562
|
display: (desc) => {
|
16492
16563
|
return {
|
16493
|
-
default: desc.config.
|
16564
|
+
default: desc.config.initialBug ?? "none"
|
16494
16565
|
};
|
16495
16566
|
},
|
16496
16567
|
runtime: {
|
@@ -16511,15 +16582,16 @@ function info_default16({ defineComponent, Video }) {
|
|
16511
16582
|
hardware: (0, import_config4.HardwareSelection)()
|
16512
16583
|
},
|
16513
16584
|
form: {
|
16514
|
-
|
16515
|
-
help: "The
|
16585
|
+
initialBug: {
|
16586
|
+
help: "The initial bug to render on the video (if any)",
|
16516
16587
|
hint: {
|
16517
16588
|
type: "custom",
|
16589
|
+
optional: true,
|
16518
16590
|
component: BugSelection2
|
16519
16591
|
}
|
16520
16592
|
},
|
16521
|
-
|
16522
|
-
help: "The
|
16593
|
+
initialPosition: {
|
16594
|
+
help: "The initial location at which to render the bug",
|
16523
16595
|
hint: {
|
16524
16596
|
type: "select",
|
16525
16597
|
optional: true,
|
@@ -16547,7 +16619,7 @@ function info_default17({ defineComponent, Video }) {
|
|
16547
16619
|
const CodecEditor3 = import_react17.default.lazy(async () => Promise.resolve().then(() => (init_codec_editor(), codec_editor_exports)));
|
16548
16620
|
const CodecView = import_react17.default.lazy(async () => Promise.resolve().then(() => (init_codec_view(), codec_view_exports)));
|
16549
16621
|
return defineComponent({
|
16550
|
-
identifier: "processor.
|
16622
|
+
identifier: "processor.fixedLadder",
|
16551
16623
|
category: "processor",
|
16552
16624
|
name: "Encode Ladder",
|
16553
16625
|
subscription: {
|
@@ -16907,14 +16979,14 @@ function info_default18({ defineComponent, Av, Subtitle, validation: { Z } }) {
|
|
16907
16979
|
});
|
16908
16980
|
}
|
16909
16981
|
|
16910
|
-
// build/util.latency/info.js
|
16982
|
+
// build/util.stats.latency/info.js
|
16911
16983
|
var import_react19 = __toESM(require_react());
|
16912
16984
|
function info_default19(R) {
|
16913
16985
|
const { defineComponent } = R;
|
16914
16986
|
const InlineView13 = import_react19.default.lazy(async () => Promise.resolve().then(() => (init_inline_view7(), inline_view_exports7)));
|
16915
16987
|
const SourceNodeSelection2 = import_react19.default.lazy(async () => Promise.resolve().then(() => (init_source_node_selection(), source_node_selection_exports)));
|
16916
16988
|
return defineComponent({
|
16917
|
-
identifier: "util.latency
|
16989
|
+
identifier: "util.stats.latency",
|
16918
16990
|
category: "output",
|
16919
16991
|
name: "Latency Probe",
|
16920
16992
|
subscription: {
|
@@ -16997,13 +17069,13 @@ function assertUnreachable10(_) {
|
|
16997
17069
|
throw new Error("Didn't expect to get here");
|
16998
17070
|
}
|
16999
17071
|
|
17000
|
-
// build/util.ma35d/info.js
|
17072
|
+
// build/util.stats.ma35d/info.js
|
17001
17073
|
var import_react21 = __toESM(require_react());
|
17002
17074
|
function info_default20(R) {
|
17003
17075
|
const { defineComponent } = R;
|
17004
17076
|
const InlineView13 = import_react21.default.lazy(async () => Promise.resolve().then(() => (init_inline_view8(), inline_view_exports8)));
|
17005
17077
|
return defineComponent({
|
17006
|
-
identifier: "util.ma35d
|
17078
|
+
identifier: "util.stats.ma35d",
|
17007
17079
|
category: "output",
|
17008
17080
|
name: "MA35D Stats",
|
17009
17081
|
subscription: {
|
@@ -17153,7 +17225,7 @@ export {
|
|
17153
17225
|
|
17154
17226
|
chart.js/dist/chunks/helpers.segment.js:
|
17155
17227
|
(*!
|
17156
|
-
* Chart.js v4.4.
|
17228
|
+
* Chart.js v4.4.4
|
17157
17229
|
* https://www.chartjs.org
|
17158
17230
|
* (c) 2024 Chart.js Contributors
|
17159
17231
|
* Released under the MIT License
|
@@ -17161,7 +17233,7 @@ chart.js/dist/chunks/helpers.segment.js:
|
|
17161
17233
|
|
17162
17234
|
chart.js/dist/chart.js:
|
17163
17235
|
(*!
|
17164
|
-
* Chart.js v4.4.
|
17236
|
+
* Chart.js v4.4.4
|
17165
17237
|
* https://www.chartjs.org
|
17166
17238
|
* (c) 2024 Chart.js Contributors
|
17167
17239
|
* Released under the MIT License
|
package/client/style.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
! tailwindcss v3.4.
|
2
|
+
! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com
|
3
3
|
*/
|
4
4
|
|
5
5
|
/*
|
@@ -941,6 +941,10 @@ input[type="range"]::-ms-fill-lower {
|
|
941
941
|
grid-column: span 2 / span 2;
|
942
942
|
}
|
943
943
|
|
944
|
+
.mb-1 {
|
945
|
+
margin-bottom: 0.25rem;
|
946
|
+
}
|
947
|
+
|
944
948
|
.mb-2 {
|
945
949
|
margin-bottom: 0.5rem;
|
946
950
|
}
|
@@ -1022,6 +1026,10 @@ input[type="range"]::-ms-fill-lower {
|
|
1022
1026
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
1023
1027
|
}
|
1024
1028
|
|
1029
|
+
.cursor-not-allowed {
|
1030
|
+
cursor: not-allowed;
|
1031
|
+
}
|
1032
|
+
|
1025
1033
|
.cursor-pointer {
|
1026
1034
|
cursor: pointer;
|
1027
1035
|
}
|
@@ -1046,6 +1054,12 @@ input[type="range"]::-ms-fill-lower {
|
|
1046
1054
|
justify-content: center;
|
1047
1055
|
}
|
1048
1056
|
|
1057
|
+
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
|
1058
|
+
--tw-space-y-reverse: 0;
|
1059
|
+
margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
|
1060
|
+
margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
|
1061
|
+
}
|
1062
|
+
|
1049
1063
|
.rounded {
|
1050
1064
|
border-radius: 0.25rem;
|
1051
1065
|
}
|
@@ -1074,6 +1088,20 @@ input[type="range"]::-ms-fill-lower {
|
|
1074
1088
|
border-end-start-radius: 0.5rem;
|
1075
1089
|
}
|
1076
1090
|
|
1091
|
+
.border {
|
1092
|
+
border-width: 1px;
|
1093
|
+
}
|
1094
|
+
|
1095
|
+
.border-gray-300 {
|
1096
|
+
--tw-border-opacity: 1;
|
1097
|
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
1098
|
+
}
|
1099
|
+
|
1100
|
+
.bg-gray-100 {
|
1101
|
+
--tw-bg-opacity: 1;
|
1102
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
1103
|
+
}
|
1104
|
+
|
1077
1105
|
.bg-gray-200 {
|
1078
1106
|
--tw-bg-opacity: 1;
|
1079
1107
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
@@ -1089,10 +1117,19 @@ input[type="range"]::-ms-fill-lower {
|
|
1089
1117
|
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1090
1118
|
}
|
1091
1119
|
|
1120
|
+
.bg-red-600 {
|
1121
|
+
--tw-bg-opacity: 1;
|
1122
|
+
background-color: rgb(224 36 36 / var(--tw-bg-opacity));
|
1123
|
+
}
|
1124
|
+
|
1092
1125
|
.stroke-gray-700 {
|
1093
1126
|
stroke: #374151;
|
1094
1127
|
}
|
1095
1128
|
|
1129
|
+
.p-2 {
|
1130
|
+
padding: 0.5rem;
|
1131
|
+
}
|
1132
|
+
|
1096
1133
|
.px-5 {
|
1097
1134
|
padding-left: 1.25rem;
|
1098
1135
|
padding-right: 1.25rem;
|
@@ -1107,15 +1144,33 @@ input[type="range"]::-ms-fill-lower {
|
|
1107
1144
|
text-align: center;
|
1108
1145
|
}
|
1109
1146
|
|
1147
|
+
.text-lg {
|
1148
|
+
font-size: 1.125rem;
|
1149
|
+
line-height: 1.75rem;
|
1150
|
+
}
|
1151
|
+
|
1110
1152
|
.text-sm {
|
1111
1153
|
font-size: 0.875rem;
|
1112
1154
|
line-height: 1.25rem;
|
1113
1155
|
}
|
1114
1156
|
|
1157
|
+
.text-xl {
|
1158
|
+
font-size: 1.25rem;
|
1159
|
+
line-height: 1.75rem;
|
1160
|
+
}
|
1161
|
+
|
1162
|
+
.font-bold {
|
1163
|
+
font-weight: 700;
|
1164
|
+
}
|
1165
|
+
|
1115
1166
|
.font-medium {
|
1116
1167
|
font-weight: 500;
|
1117
1168
|
}
|
1118
1169
|
|
1170
|
+
.font-semibold {
|
1171
|
+
font-weight: 600;
|
1172
|
+
}
|
1173
|
+
|
1119
1174
|
.leading-6 {
|
1120
1175
|
line-height: 1.5rem;
|
1121
1176
|
}
|
@@ -1129,21 +1184,40 @@ input[type="range"]::-ms-fill-lower {
|
|
1129
1184
|
color: rgb(0 0 0 / var(--tw-text-opacity));
|
1130
1185
|
}
|
1131
1186
|
|
1187
|
+
.text-gray-900 {
|
1188
|
+
--tw-text-opacity: 1;
|
1189
|
+
color: rgb(17 24 39 / var(--tw-text-opacity));
|
1190
|
+
}
|
1191
|
+
|
1132
1192
|
.text-green-300 {
|
1133
1193
|
--tw-text-opacity: 1;
|
1134
1194
|
color: rgb(132 225 188 / var(--tw-text-opacity));
|
1135
1195
|
}
|
1136
1196
|
|
1197
|
+
.text-green-600 {
|
1198
|
+
--tw-text-opacity: 1;
|
1199
|
+
color: rgb(5 122 85 / var(--tw-text-opacity));
|
1200
|
+
}
|
1201
|
+
|
1137
1202
|
.text-orange-300 {
|
1138
1203
|
--tw-text-opacity: 1;
|
1139
1204
|
color: rgb(253 186 140 / var(--tw-text-opacity));
|
1140
1205
|
}
|
1141
1206
|
|
1207
|
+
.text-red-600 {
|
1208
|
+
--tw-text-opacity: 1;
|
1209
|
+
color: rgb(224 36 36 / var(--tw-text-opacity));
|
1210
|
+
}
|
1211
|
+
|
1142
1212
|
.text-white {
|
1143
1213
|
--tw-text-opacity: 1;
|
1144
1214
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
1145
1215
|
}
|
1146
1216
|
|
1217
|
+
.opacity-50 {
|
1218
|
+
opacity: 0.5;
|
1219
|
+
}
|
1220
|
+
|
1147
1221
|
.shadow-lg {
|
1148
1222
|
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
1149
1223
|
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
@@ -1345,6 +1419,11 @@ input[type="range"]::-ms-fill-lower {
|
|
1345
1419
|
background-color: rgb(30 64 175 / var(--tw-bg-opacity));
|
1346
1420
|
}
|
1347
1421
|
|
1422
|
+
.hover\:bg-red-700:hover {
|
1423
|
+
--tw-bg-opacity: 1;
|
1424
|
+
background-color: rgb(200 30 30 / var(--tw-bg-opacity));
|
1425
|
+
}
|
1426
|
+
|
1348
1427
|
.focus\:outline-none:focus {
|
1349
1428
|
outline: 2px solid transparent;
|
1350
1429
|
outline-offset: 2px;
|
@@ -1361,6 +1440,16 @@ input[type="range"]::-ms-fill-lower {
|
|
1361
1440
|
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
1362
1441
|
}
|
1363
1442
|
|
1443
|
+
.focus\:ring-red-300:focus {
|
1444
|
+
--tw-ring-opacity: 1;
|
1445
|
+
--tw-ring-color: rgb(248 180 180 / var(--tw-ring-opacity));
|
1446
|
+
}
|
1447
|
+
|
1448
|
+
.dark\:border-gray-600:is(.dark *) {
|
1449
|
+
--tw-border-opacity: 1;
|
1450
|
+
border-color: rgb(75 85 99 / var(--tw-border-opacity));
|
1451
|
+
}
|
1452
|
+
|
1364
1453
|
.dark\:bg-black:is(.dark *) {
|
1365
1454
|
--tw-bg-opacity: 1;
|
1366
1455
|
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
|
@@ -1371,15 +1460,30 @@ input[type="range"]::-ms-fill-lower {
|
|
1371
1460
|
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
1372
1461
|
}
|
1373
1462
|
|
1463
|
+
.dark\:bg-gray-800:is(.dark *) {
|
1464
|
+
--tw-bg-opacity: 1;
|
1465
|
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
|
1466
|
+
}
|
1467
|
+
|
1374
1468
|
.dark\:bg-primary-600:is(.dark *) {
|
1375
1469
|
--tw-bg-opacity: 1;
|
1376
1470
|
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
|
1377
1471
|
}
|
1378
1472
|
|
1473
|
+
.dark\:bg-red-700:is(.dark *) {
|
1474
|
+
--tw-bg-opacity: 1;
|
1475
|
+
background-color: rgb(200 30 30 / var(--tw-bg-opacity));
|
1476
|
+
}
|
1477
|
+
|
1379
1478
|
.dark\:stroke-gray-50:is(.dark *) {
|
1380
1479
|
stroke: #F9FAFB;
|
1381
1480
|
}
|
1382
1481
|
|
1482
|
+
.dark\:text-gray-400:is(.dark *) {
|
1483
|
+
--tw-text-opacity: 1;
|
1484
|
+
color: rgb(156 163 175 / var(--tw-text-opacity));
|
1485
|
+
}
|
1486
|
+
|
1383
1487
|
.dark\:text-green-300:is(.dark *) {
|
1384
1488
|
--tw-text-opacity: 1;
|
1385
1489
|
color: rgb(132 225 188 / var(--tw-text-opacity));
|
@@ -1395,12 +1499,32 @@ input[type="range"]::-ms-fill-lower {
|
|
1395
1499
|
color: rgb(255 255 255 / var(--tw-text-opacity));
|
1396
1500
|
}
|
1397
1501
|
|
1502
|
+
.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder {
|
1503
|
+
--tw-placeholder-opacity: 1;
|
1504
|
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1505
|
+
}
|
1506
|
+
|
1507
|
+
.dark\:placeholder-gray-400:is(.dark *)::placeholder {
|
1508
|
+
--tw-placeholder-opacity: 1;
|
1509
|
+
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
|
1510
|
+
}
|
1511
|
+
|
1398
1512
|
.dark\:hover\:bg-primary-700:hover:is(.dark *) {
|
1399
1513
|
--tw-bg-opacity: 1;
|
1400
1514
|
background-color: rgb(29 78 216 / var(--tw-bg-opacity));
|
1401
1515
|
}
|
1402
1516
|
|
1517
|
+
.dark\:hover\:bg-red-800:hover:is(.dark *) {
|
1518
|
+
--tw-bg-opacity: 1;
|
1519
|
+
background-color: rgb(155 28 28 / var(--tw-bg-opacity));
|
1520
|
+
}
|
1521
|
+
|
1403
1522
|
.dark\:focus\:ring-primary-800:focus:is(.dark *) {
|
1404
1523
|
--tw-ring-opacity: 1;
|
1405
1524
|
--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
|
1406
1525
|
}
|
1526
|
+
|
1527
|
+
.dark\:focus\:ring-red-900:focus:is(.dark *) {
|
1528
|
+
--tw-ring-opacity: 1;
|
1529
|
+
--tw-ring-color: rgb(119 29 29 / var(--tw-ring-opacity));
|
1530
|
+
}
|
package/lib/info.js
CHANGED
@@ -53,9 +53,9 @@ const info_17 = __importDefault(require("./processor.fixedLadder/info"));
|
|
53
53
|
AllComponents.push((r) => (0, info_17.default)(r));
|
54
54
|
const info_18 = __importDefault(require("./processor.whisper-transcribe/info"));
|
55
55
|
AllComponents.push((r) => (0, info_18.default)(r));
|
56
|
-
const info_19 = __importDefault(require("./util.latency/info"));
|
56
|
+
const info_19 = __importDefault(require("./util.stats.latency/info"));
|
57
57
|
AllComponents.push((r) => (0, info_19.default)(r));
|
58
|
-
const info_20 = __importDefault(require("./util.ma35d/info"));
|
58
|
+
const info_20 = __importDefault(require("./util.stats.ma35d/info"));
|
59
59
|
AllComponents.push((r) => (0, info_20.default)(r));
|
60
60
|
const info_21 = __importDefault(require("./util.timestamps/info"));
|
61
61
|
AllComponents.push((r) => (0, info_21.default)(r));
|