@norskvideo/norsk-studio-source-switcher 1.27.0-2025-04-09-a7944f8c → 1.27.0-2025-04-10-614c23ec

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.
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const jsx_runtime_1 = require("react/jsx-runtime");
4
- const activeClasses = "active text-green-500 dark:text-green-300";
5
- const availableClasses = "available text-green-500 dark:text-green-300";
6
- const inactiveClasses = "inactive text-orange-500 dark:text-orange-300";
4
+ const utils_1 = require("./utils");
7
5
  function InlineView({ state }) {
8
- return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h5", { children: "Sources" }), (0, jsx_runtime_1.jsx)("ul", { children: state.knownSources.map((s, i) => state.activeSource.sourceName == s.sourceName ?
9
- (0, jsx_runtime_1.jsxs)("li", { className: activeClasses, children: [s.sourceName, " <--"] }, i)
10
- : state.availableSources.find((a) => a.sourceName == s.sourceName)
11
- ? (0, jsx_runtime_1.jsxs)("li", { className: availableClasses, children: [s.sourceName, " (available)"] }, i)
12
- : (0, jsx_runtime_1.jsxs)("li", { className: inactiveClasses, children: [s.sourceName, " (inactive)"] }, i)) })] });
6
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h5", { className: "text-gray-900 dark:text-white font-medium", children: "Sources:" }), (0, jsx_runtime_1.jsx)("ul", { className: "space-y-2 mt-2", children: state.knownSources.map((s, i) => {
7
+ const isAvailable = state.availableSources.find((a) => a.sourceName === s.sourceName);
8
+ const isActive = state.activeSource.sourceName === s.sourceName;
9
+ const indicatorClasses = (0, utils_1.cn)("w-3 h-3 rounded-full", isActive ? "bg-live" : isAvailable ? "bg-standby" : "bg-offline");
10
+ return ((0, jsx_runtime_1.jsxs)("li", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "relative", children: [(0, jsx_runtime_1.jsx)("div", { className: indicatorClasses }), isActive && (0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, jsx_runtime_1.jsx)("span", { className: "text-gray-900 dark:text-white", children: s.sourceName })] }, i));
11
+ }) })] });
13
12
  }
14
13
  exports.default = InlineView;
15
14
  //# sourceMappingURL=inline-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../src/inline-view.tsx"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAClE,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AACxE,MAAM,eAAe,GAAG,+CAA+C,CAAC;AAExE,SAAS,UAAU,CAAC,EAAE,KAAK,EAA4D;IACrF,OAAO,6DACL,qDAAgB,EAChB,yCACG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/B,KAAK,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC7C,gCAAY,SAAS,EAAE,aAAa,aAAG,CAAC,CAAC,UAAU,aAA1C,CAAC,CAAsD;oBAChE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;wBAChE,CAAC,CAAC,gCAAY,SAAS,EAAE,gBAAgB,aAAG,CAAC,CAAC,UAAU,qBAA7C,CAAC,CAA8D;wBAC1E,CAAC,CAAC,gCAAY,SAAS,EAAE,eAAe,aAAG,CAAC,CAAC,UAAU,oBAA5C,CAAC,CAA4D,CAC7E,GACE,IACJ,CAAA;AACL,CAAC;AAED,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../src/inline-view.tsx"],"names":[],"mappings":";;;AACA,mCAA6B;AAE7B,SAAS,UAAU,CAAC,EAAE,KAAK,EAA4D;IACrF,OAAO,6DACL,+BAAI,SAAS,EAAC,2CAA2C,yBAAc,EACvE,+BAAI,SAAS,EAAC,gBAAgB,YAC3B,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;oBACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC;oBAEhE,MAAM,gBAAgB,GAAG,IAAA,UAAE,EACzB,sBAAsB,EACtB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CACjE,CAAC;oBAEF,OAAO,CACL,gCAAY,SAAS,EAAC,yBAAyB,aAC7C,iCAAK,SAAS,EAAC,UAAU,aACnB,gCAAK,SAAS,EAAE,gBAAgB,GAAQ,EACvC,QAAQ,IAAI,gCAAK,SAAS,EAAC,mDAAmD,YAC7E,gCAAK,SAAS,EAAC,wDAAwD,GAAO,GAC1E,IACF,EACV,iCAAM,SAAS,EAAC,+BAA+B,YAAE,CAAC,CAAC,UAAU,GAAQ,KAP9D,CAAC,CAQL,CACN,CAAC;gBACJ,CAAC,CAAC,GACC,IACJ,CAAA;AACL,CAAC;AAED,kBAAe,UAAU,CAAC"}
package/lib/select.js ADDED
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Select = Select;
27
+ exports.SelectContent = SelectContent;
28
+ exports.SelectGroup = SelectGroup;
29
+ exports.SelectItem = SelectItem;
30
+ exports.SelectLabel = SelectLabel;
31
+ exports.SelectScrollDownButton = SelectScrollDownButton;
32
+ exports.SelectScrollUpButton = SelectScrollUpButton;
33
+ exports.SelectSeparator = SelectSeparator;
34
+ exports.SelectTrigger = SelectTrigger;
35
+ exports.SelectValue = SelectValue;
36
+ const jsx_runtime_1 = require("react/jsx-runtime");
37
+ const SelectPrimitive = __importStar(require("@radix-ui/react-select"));
38
+ const lucide_react_1 = require("lucide-react");
39
+ const utils_1 = require("./utils");
40
+ function Select({ ...props }) {
41
+ return (0, jsx_runtime_1.jsx)(SelectPrimitive.Root, { "data-slot": "select", ...props });
42
+ }
43
+ function SelectGroup({ ...props }) {
44
+ return (0, jsx_runtime_1.jsx)(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
45
+ }
46
+ function SelectValue({ ...props }) {
47
+ return (0, jsx_runtime_1.jsx)(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
48
+ }
49
+ function SelectTrigger({ className, size = "default", children, ...props }) {
50
+ return ((0, jsx_runtime_1.jsxs)(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: (0, utils_1.cn)("text-gray-800 dark:text-gray-200 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-800 border-gray-200 dark:border-gray-600 transition-colors duration-200 flex w-fit items-center justify-between gap-2 rounded-lg border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none ring-0 focus:ring-0 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8", className), ...props, children: [children, (0, jsx_runtime_1.jsx)(SelectPrimitive.Icon, { asChild: true, children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDownIcon, { className: "size-4 text-black dark:text-white" }) })] }));
51
+ }
52
+ function SelectContent({ className, children, position = "popper", ...props }) {
53
+ return ((0, jsx_runtime_1.jsx)(SelectPrimitive.Portal, { children: (0, jsx_runtime_1.jsxs)(SelectPrimitive.Content, { "data-slot": "select-content", className: (0, utils_1.cn)("bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-lg text-sm p-1 ring-0 focus:ring-0 focus:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto", position === "popper" &&
54
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position, ...props, children: [(0, jsx_runtime_1.jsx)(SelectScrollUpButton, {}), (0, jsx_runtime_1.jsx)(SelectPrimitive.Viewport, { className: (0, utils_1.cn)("p-1", position === "popper" &&
55
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"), children: children }), (0, jsx_runtime_1.jsx)(SelectScrollDownButton, {})] }) }));
56
+ }
57
+ function SelectLabel({ className, ...props }) {
58
+ return ((0, jsx_runtime_1.jsx)(SelectPrimitive.Label, { "data-slot": "select-label", className: (0, utils_1.cn)("p-2 text-md font-semibold text-gray-900 dark:text-white", className), ...props }));
59
+ }
60
+ function SelectItem({ className, children, ...props }) {
61
+ return ((0, jsx_runtime_1.jsxs)(SelectPrimitive.Item, { "data-slot": "select-item", className: (0, utils_1.cn)("w-full bg-transparent flex items-center gap-2 hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors duration-200 relative cursor-default rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none text-gray-900 dark:text-white ring-0 focus:ring-0 focus:outline-none", className), ...props, children: [(0, jsx_runtime_1.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: (0, jsx_runtime_1.jsx)(SelectPrimitive.ItemIndicator, { children: (0, jsx_runtime_1.jsx)(lucide_react_1.CheckIcon, { className: "size-4 text-black dark:text-white" }) }) }), (0, jsx_runtime_1.jsx)(SelectPrimitive.ItemText, { children: children })] }));
62
+ }
63
+ function SelectSeparator({ className, ...props }) {
64
+ return ((0, jsx_runtime_1.jsx)(SelectPrimitive.Separator, { "data-slot": "select-separator", className: (0, utils_1.cn)("bg-neutral-200 pointer-events-none -mx-1 my-1 h-px dark:bg-neutral-800", className), ...props }));
65
+ }
66
+ function SelectScrollUpButton({ className, ...props }) {
67
+ return ((0, jsx_runtime_1.jsx)(SelectPrimitive.ScrollUpButton, { "data-slot": "select-scroll-up-button", className: (0, utils_1.cn)("flex cursor-default items-center justify-center py-1", className), ...props, children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronUpIcon, { className: "size-4 text-black dark:text-white" }) }));
68
+ }
69
+ function SelectScrollDownButton({ className, ...props }) {
70
+ return ((0, jsx_runtime_1.jsx)(SelectPrimitive.ScrollDownButton, { "data-slot": "select-scroll-down-button", className: (0, utils_1.cn)("flex cursor-default items-center justify-center py-1", className), ...props, children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDownIcon, { className: "size-4 text-black dark:text-white" }) }));
71
+ }
72
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.tsx"],"names":[],"mappings":"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"}
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const jsx_runtime_1 = require("react/jsx-runtime");
4
4
  const react_1 = require("react");
5
5
  const webrtc_client_1 = require("@norskvideo/webrtc-client");
6
- const activeClasses = "active text-green-500 dark:text-green-300";
7
- const availableClasses = "available text-green-500 dark:text-green-300";
8
- const inactiveClasses = "inactive text-orange-500 dark:text-orange-300";
6
+ const select_1 = require("./select");
7
+ const utils_1 = require("./utils");
9
8
  function SummaryView({ state, config, sendCommand }) {
10
9
  const [previewSource, setPreviewSource] = (0, react_1.useState)(undefined);
11
10
  const [activePlayerSource, setActivePlayerSource] = (0, react_1.useState)(undefined);
@@ -46,19 +45,28 @@ function SummaryView({ state, config, sendCommand }) {
46
45
  initialLoad,
47
46
  state.players
48
47
  ]);
49
- return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h5", { children: "Sources" }), (0, jsx_runtime_1.jsx)("ul", { children: state.knownSources.map((s, i) => state.activeSource.sourceName == s.sourceName && state.activeSource.sourceName == s.sourceName ?
50
- (0, jsx_runtime_1.jsxs)("li", { className: activeClasses, children: [s.sourceName, " <--"] }, i)
51
- : state.availableSources.find((a) => s.sourceName == a.sourceName)
52
- ? (0, jsx_runtime_1.jsxs)("li", { className: availableClasses, children: [s.sourceName, " (available)"] }, i)
53
- : (0, jsx_runtime_1.jsxs)("li", { className: inactiveClasses, children: [s.sourceName, " (inactive)"] }, i)) }), config.enablePreviews ?
54
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h4", { children: previewSource ? previewSource.sourceName : "Preview" }), (0, jsx_runtime_1.jsx)("div", { id: `${config.id}-preview` })] })
55
- : null, (0, jsx_runtime_1.jsx)("label", { htmlFor: "select-preview", className: "mt-2", children: "Source" }), (0, jsx_runtime_1.jsxs)("select", { id: "select-preview", className: "mt-2 node-editor-select-input", onChange: (e) => {
56
- setPreviewSource(JSON.parse(e.currentTarget.value));
57
- }, children: [(0, jsx_runtime_1.jsx)("option", { selected: previewSource === undefined, children: "---" }), state.availableSources.map((s, i) => (0, jsx_runtime_1.jsx)("option", { selected: previewSource == s, value: JSON.stringify(s), children: s.sourceName }, i))] }), previewSource ? (0, jsx_runtime_1.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: (e) => {
48
+ const [selectedSource, setSelectedSource] = (0, react_1.useState)(previewSource ?? state.activeSource);
49
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "select-preview", className: "mt-2", children: "Source" }), (0, jsx_runtime_1.jsxs)(select_1.Select, { onValueChange: (value) => {
50
+ setPreviewSource(JSON.parse(value));
51
+ setSelectedSource(JSON.parse(value));
52
+ }, value: JSON.stringify(previewSource), children: [(0, jsx_runtime_1.jsx)(select_1.SelectTrigger, { className: "w-full", children: selectedSource ?
53
+ (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: `w-4 h-4 rounded-full ${selectedSource.sourceName == state.activeSource.sourceName ? "bg-live" : "bg-standby"}` }), (0, jsx_runtime_1.jsx)("span", { className: "text-gray-900 dark:text-white", children: selectedSource.sourceName })] })
54
+ : (0, jsx_runtime_1.jsx)(select_1.SelectValue, { placeholder: "Select a source" }) }), (0, jsx_runtime_1.jsx)(select_1.SelectContent, { className: "w-full", children: state.knownSources.map((s, i) => {
55
+ const isAvailable = state.availableSources.find((a) => s.sourceName == a.sourceName);
56
+ const isActive = state.activeSource.sourceName == s.sourceName;
57
+ const indicatorClasses = (0, utils_1.cn)("w-4 h-4 rounded-full", isActive ? "bg-live" : isAvailable ? "bg-standby" : "bg-offline");
58
+ const textClasses = (0, utils_1.cn)("text-gray-900 dark:text-white", !isAvailable && "opacity-50");
59
+ return (0, jsx_runtime_1.jsx)(select_1.SelectItem, { disabled: !isAvailable, value: JSON.stringify(s), children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "relative", children: [(0, jsx_runtime_1.jsx)("div", { className: indicatorClasses }), isActive && (0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)("div", { className: "w-3 h-3 rounded-full bg-live animate-ping duration-150" }) })] }), (0, jsx_runtime_1.jsx)("span", { className: textClasses, children: s.sourceName }), (0, jsx_runtime_1.jsxs)("span", { className: "text-gray-500 dark:text-gray-400", children: ["(", isActive ? "Active" : isAvailable ? "Available" : "Unavailable", ")"] })] }) }, i);
60
+ }) })] })] }), (0, jsx_runtime_1.jsx)("button", { disabled: !previewSource || previewSource == state.activeSource, 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-4 py-2 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800 disabled:opacity-50 disabled:cursor-not-allowed", onClick: (e) => {
58
61
  e.preventDefault();
59
- sendCommand({ type: "select-source", source: previewSource, overlays: [] });
60
- setPreviewSource(undefined);
61
- }, children: "Make Active" }) : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})] });
62
+ if (previewSource) {
63
+ sendCommand({ type: "select-source", source: previewSource, overlays: [] });
64
+ setPreviewSource(undefined);
65
+ setSelectedSource(previewSource);
66
+ }
67
+ }, children: "Make Active" }), config.enablePreviews ?
68
+ (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("h4", { className: "text-gray-500 dark:text-gray-400 font-medium", children: "Preview:" }), (0, jsx_runtime_1.jsx)("div", { className: "relative w-full aspect-video bg-gray-200 dark:bg-gray-900 rounded-lg overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { id: `${config.id}-preview`, className: "absolute inset-0" }) })] })
69
+ : null] });
62
70
  }
63
71
  exports.default = SummaryView;
64
72
  //# sourceMappingURL=summary-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary-view.js","sourceRoot":"","sources":["../src/summary-view.tsx"],"names":[],"mappings":";;;AAAA,iCAA4C;AAG5C,6DAAsD;AAEtD,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAClE,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AACxE,MAAM,eAAe,GAAG,+CAA+C,CAAC;AAGxE,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAA6G;IAE5J,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAiC,SAAS,CAAC,CAAC;IAC9F,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,IAAA,gBAAQ,EAAiC,SAAS,CAAC,CAAA;IACvG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAyB,SAAS,CAAC,CAAC;IAEtF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,aAAa,KAAK,kBAAkB,IAAI,WAAW,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB;gBAChE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAC7D,IAAI,CAAC,MAAM;gBAAE,OAAO;YAGpB,IAAI,aAAa,EAAE,CAAC;gBAGlB,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;YAEjE,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;YAC3B,CAAC;YAID,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACrC,cAAc,CAAC,KAAK,CAAC,CAAC;YAEtB,MAAM,MAAM,GAAG,IAAI,0BAAU,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1G,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEzB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE;YACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;YACjE,OAAO,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;gBAC5E,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACnC,CAAC;QAEH,CAAC,EAAE,GAAG,CAAC,CAAA;QACP,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC,EAAE;QACD,aAAa;QACb,kBAAkB;QAClB,WAAW;QACX,KAAK,CAAC,OAAO;KACd,CAAC,CAAA;IAEF,OAAO,6DACL,qDAAgB,EAChB,yCACG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC/B,KAAK,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC9F,gCAAY,SAAS,EAAE,aAAa,aAAG,CAAC,CAAC,UAAU,aAA1C,CAAC,CAAsD;oBAChE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;wBAChE,CAAC,CAAC,gCAAY,SAAS,EAAE,gBAAgB,aAAG,CAAC,CAAC,UAAU,qBAA7C,CAAC,CAA8D;wBAC1E,CAAC,CAAC,gCAAY,SAAS,EAAE,eAAe,aAAG,CAAC,CAAC,UAAU,oBAA5C,CAAC,CAA4D,CAC7E,GACE,EAEJ,MAAM,CAAC,cAAc,CAAC,CAAC;gBACtB,6DACE,yCAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,GAAM,EAC/D,gCAAK,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,UAAU,GAAQ,IACtC;gBACH,CAAC,CAAC,IAAI,EAKR,kCAAO,OAAO,EAAC,gBAAgB,EAAC,SAAS,EAAC,MAAM,uBAAe,EAC/D,oCAAQ,EAAE,EAAC,gBAAgB,EAAC,SAAS,EAAC,+BAA+B,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACpF,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;gBACrD,CAAC,aACC,mCAAQ,QAAQ,EAAE,aAAa,KAAK,SAAS,oBAAc,EAC1D,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnC,mCAAQ,QAAQ,EAAE,aAAa,IAAI,CAAC,EAAU,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAG,CAAC,CAAC,UAAU,IAA1C,CAAC,CAAmD,CAChG,IACM,EAGR,aAAa,CAAC,CAAC,CAAC,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,wQAAwQ,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACvU,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC5E,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC,4BAAsB,CAAC,CAAC,CAAC,kDAAK,IAC9B,CAAA;AACL,CAAC;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"summary-view.js","sourceRoot":"","sources":["../src/summary-view.tsx"],"names":[],"mappings":"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"}
package/lib/utils.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cn = cn;
4
+ const clsx_1 = require("clsx");
5
+ const tailwind_merge_1 = require("tailwind-merge");
6
+ function cn(...inputs) {
7
+ return (0, tailwind_merge_1.twMerge)((0, clsx_1.clsx)(inputs));
8
+ }
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAGA,gBAEC;AALD,+BAA4C;AAC5C,mDAAwC;AAExC,SAAgB,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,IAAA,wBAAO,EAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norskvideo/norsk-studio-source-switcher",
3
- "version": "1.27.0-2025-04-09-a7944f8c",
3
+ "version": "1.27.0-2025-04-10-614c23ec",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rm -rf lib",
@@ -24,8 +24,8 @@
24
24
  "@aws-sdk/client-medialive": "^3.499.0",
25
25
  "@aws-sdk/client-mediapackage": "^3.499.0",
26
26
  "@aws-sdk/client-translate": "^3.535.0",
27
- "@norskvideo/norsk-sdk": "^1.0.401-2025-04-09-b3850791",
28
- "@norskvideo/norsk-studio": "1.27.0-2025-04-09-a7944f8c",
27
+ "@norskvideo/norsk-sdk": "^1.0.401-2025-04-10-b3850791",
28
+ "@norskvideo/norsk-studio": "1.27.0-2025-04-10-614c23ec",
29
29
  "@norskvideo/webrtc-client": "^0.1.2",
30
30
  "chart.js": "^4.4.2",
31
31
  "express": "^4.18.2",