@arcanewizards/timecode-toolbox 0.1.4 → 0.1.5
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.md +3 -3
- package/dist/components/frontend/index.js +218 -55
- package/dist/components/frontend/index.mjs +237 -68
- package/dist/entrypoint.css +9 -0
- package/dist/entrypoint.js +800 -496
- package/dist/entrypoint.js.map +3 -3
- package/dist/frontend.js +800 -496
- package/dist/frontend.js.map +3 -3
- package/dist/index.js +47 -8
- package/dist/index.mjs +47 -8
- package/dist/start.js +47 -8
- package/dist/start.mjs +47 -8
- package/package.json +5 -4
|
@@ -15972,7 +15972,7 @@ import {
|
|
|
15972
15972
|
useCallback as useCallback24,
|
|
15973
15973
|
useContext as useContext17,
|
|
15974
15974
|
useEffect as useEffect34,
|
|
15975
|
-
useMemo as
|
|
15975
|
+
useMemo as useMemo19,
|
|
15976
15976
|
useState as useState36
|
|
15977
15977
|
} from "react";
|
|
15978
15978
|
|
|
@@ -16016,6 +16016,10 @@ var STRINGS = {
|
|
|
16016
16016
|
},
|
|
16017
16017
|
inputs: {
|
|
16018
16018
|
title: "INPUTS",
|
|
16019
|
+
unnamed: "Unnamed Input",
|
|
16020
|
+
enable: "Enable Input",
|
|
16021
|
+
disable: "Disable Input",
|
|
16022
|
+
edit: "Edit Input",
|
|
16019
16023
|
noChildren: "No inputs yet. Please add one using the buttons below.",
|
|
16020
16024
|
addButton: (protocol) => `Add ${protocol}`,
|
|
16021
16025
|
addDialog: (protocol) => `Add ${protocol} Input`,
|
|
@@ -16039,6 +16043,8 @@ var STRINGS = {
|
|
|
16039
16043
|
delay: (delayMs) => `Delay: ${MS_FORMAT.format(delayMs)}`,
|
|
16040
16044
|
generators: {
|
|
16041
16045
|
title: "GENERATORS",
|
|
16046
|
+
unnamed: "Unnamed Generator",
|
|
16047
|
+
edit: "Edit Generator",
|
|
16042
16048
|
noChildren: "No generators yet. Please add one using the buttons below.",
|
|
16043
16049
|
type: {
|
|
16044
16050
|
clock: "Clock"
|
|
@@ -16050,6 +16056,11 @@ var STRINGS = {
|
|
|
16050
16056
|
},
|
|
16051
16057
|
outputs: {
|
|
16052
16058
|
title: "OUTPUTS",
|
|
16059
|
+
unnamed: "Unnamed Output",
|
|
16060
|
+
enable: "Enable Output",
|
|
16061
|
+
disable: "Disable Output",
|
|
16062
|
+
link: "Link Output",
|
|
16063
|
+
edit: "Edit Output",
|
|
16053
16064
|
noChildren: "No outputs yet. Please add one using the buttons below.",
|
|
16054
16065
|
addButton: (protocol) => `Add ${protocol}`,
|
|
16055
16066
|
addDialog: (protocol) => `Add ${protocol} Output`,
|
|
@@ -16394,7 +16405,9 @@ var TimecodeDisplay = ({
|
|
|
16394
16405
|
id,
|
|
16395
16406
|
timecode: { state, metadata },
|
|
16396
16407
|
config,
|
|
16397
|
-
headerComponents
|
|
16408
|
+
headerComponents,
|
|
16409
|
+
disabled,
|
|
16410
|
+
rootState
|
|
16398
16411
|
}) => {
|
|
16399
16412
|
const { handlers, callHandler } = useApplicationHandlers();
|
|
16400
16413
|
const hooks = id && getTreeValue(handlers, id);
|
|
@@ -16445,29 +16458,41 @@ var TimecodeDisplay = ({
|
|
|
16445
16458
|
)
|
|
16446
16459
|
),
|
|
16447
16460
|
children: [
|
|
16448
|
-
headerComponents && /* @__PURE__ */ jsx26("div", { className: "flex
|
|
16461
|
+
headerComponents && /* @__PURE__ */ jsx26("div", { className: "flex gap-0.25", children: headerComponents }),
|
|
16449
16462
|
/* @__PURE__ */ jsx26(
|
|
16450
16463
|
SizeAwareDiv,
|
|
16451
16464
|
{
|
|
16452
|
-
className:
|
|
16453
|
-
"relative min-h-timecode-min-height grow",
|
|
16454
|
-
cnd(state?.state === "stopped", "opacity-50"),
|
|
16455
|
-
cnd(
|
|
16456
|
-
hooks?.play && hooks?.pause,
|
|
16457
|
-
`
|
|
16458
|
-
cursor-pointer
|
|
16459
|
-
hover:opacity-100
|
|
16460
|
-
`
|
|
16461
|
-
)
|
|
16462
|
-
),
|
|
16465
|
+
className: "relative min-h-timecode-min-height grow",
|
|
16463
16466
|
onClick: toggle,
|
|
16464
|
-
children:
|
|
16465
|
-
|
|
16467
|
+
children: disabled ? /* @__PURE__ */ jsx26(
|
|
16468
|
+
SizeAwareDiv,
|
|
16469
|
+
{
|
|
16470
|
+
className: "\n pointer-events-none absolute inset-0 flex items-center\n justify-center\n ",
|
|
16471
|
+
children: /* @__PURE__ */ jsx26(Icon2, { icon: "pause", className: "text-timecode-adaptive" })
|
|
16472
|
+
}
|
|
16473
|
+
) : /* @__PURE__ */ jsx26(
|
|
16474
|
+
"div",
|
|
16466
16475
|
{
|
|
16467
|
-
|
|
16468
|
-
|
|
16476
|
+
className: cn(
|
|
16477
|
+
"absolute inset-0 flex items-center justify-center",
|
|
16478
|
+
cnd(state?.state === "stopped", "opacity-50"),
|
|
16479
|
+
cnd(
|
|
16480
|
+
hooks?.play && hooks?.pause,
|
|
16481
|
+
`
|
|
16482
|
+
cursor-pointer
|
|
16483
|
+
hover:opacity-100
|
|
16484
|
+
`
|
|
16485
|
+
)
|
|
16486
|
+
),
|
|
16487
|
+
children: /* @__PURE__ */ jsx26("span", { className: cn("font-mono text-timecode-adaptive"), children: state.state === "none" ? "--:--:--:---" : state.state === "stopped" ? displayMillis(state.positionMillis) : /* @__PURE__ */ jsx26(
|
|
16488
|
+
ActiveTimecodeText,
|
|
16489
|
+
{
|
|
16490
|
+
effectiveStartTimeMillis: state.effectiveStartTimeMillis,
|
|
16491
|
+
speed: state.speed
|
|
16492
|
+
}
|
|
16493
|
+
) })
|
|
16469
16494
|
}
|
|
16470
|
-
)
|
|
16495
|
+
)
|
|
16471
16496
|
}
|
|
16472
16497
|
),
|
|
16473
16498
|
hooks?.pause || hooks?.play ? /* @__PURE__ */ jsxs9("div", { className: "flex justify-center gap-px", children: [
|
|
@@ -16555,9 +16580,53 @@ var TimecodeDisplay = ({
|
|
|
16555
16580
|
metadata.artist && /* @__PURE__ */ jsx26("div", { className: "grow truncate bg-sigil-bg-light p-0.5", children: metadata.artist })
|
|
16556
16581
|
] })
|
|
16557
16582
|
}
|
|
16558
|
-
) : null
|
|
16583
|
+
) : null,
|
|
16584
|
+
rootState.errors.length > 0 && /* @__PURE__ */ jsx26("div", { className: "flex gap-px", children: rootState.errors.map((error, index2) => /* @__PURE__ */ jsx26(
|
|
16585
|
+
"div",
|
|
16586
|
+
{
|
|
16587
|
+
className: "\n grow truncate bg-sigil-usage-red-background p-0.5\n text-sigil-usage-red-text\n ",
|
|
16588
|
+
children: error
|
|
16589
|
+
},
|
|
16590
|
+
index2
|
|
16591
|
+
)) }),
|
|
16592
|
+
rootState.warnings.length > 0 && /* @__PURE__ */ jsx26("div", { className: "flex gap-px", children: rootState.warnings.map((warning, index2) => /* @__PURE__ */ jsx26(
|
|
16593
|
+
"div",
|
|
16594
|
+
{
|
|
16595
|
+
className: "\n grow truncate bg-sigil-usage-orange-background p-0.5\n text-sigil-usage-orange-text\n ",
|
|
16596
|
+
children: warning
|
|
16597
|
+
},
|
|
16598
|
+
index2
|
|
16599
|
+
)) })
|
|
16559
16600
|
] });
|
|
16560
16601
|
};
|
|
16602
|
+
var getLinkedSourceInfo = (link, config) => {
|
|
16603
|
+
if (!link) {
|
|
16604
|
+
return void 0;
|
|
16605
|
+
}
|
|
16606
|
+
let info = void 0;
|
|
16607
|
+
if (link[0] === "input") {
|
|
16608
|
+
const input = config.inputs?.[link[1]];
|
|
16609
|
+
if (input) {
|
|
16610
|
+
info = {
|
|
16611
|
+
color: input.color,
|
|
16612
|
+
type: STRINGS.protocols[input.definition.type].short,
|
|
16613
|
+
name: input.name ? [input.name] : [],
|
|
16614
|
+
namePlaceholder: STRINGS.inputs.unnamed
|
|
16615
|
+
};
|
|
16616
|
+
}
|
|
16617
|
+
} else if (link[0] === "generator") {
|
|
16618
|
+
const generator = config.generators?.[link[1]];
|
|
16619
|
+
if (generator) {
|
|
16620
|
+
info = {
|
|
16621
|
+
color: generator.color,
|
|
16622
|
+
type: STRINGS.generators.type[generator.definition.type],
|
|
16623
|
+
name: generator.name ? [generator.name] : [],
|
|
16624
|
+
namePlaceholder: STRINGS.generators.unnamed
|
|
16625
|
+
};
|
|
16626
|
+
}
|
|
16627
|
+
}
|
|
16628
|
+
return info;
|
|
16629
|
+
};
|
|
16561
16630
|
var EMPTY_TIMECODE = {
|
|
16562
16631
|
name: null,
|
|
16563
16632
|
state: {
|
|
@@ -16576,8 +16645,10 @@ var TimecodeTreeDisplay = ({
|
|
|
16576
16645
|
id,
|
|
16577
16646
|
type,
|
|
16578
16647
|
name,
|
|
16648
|
+
link,
|
|
16579
16649
|
color,
|
|
16580
16650
|
timecode,
|
|
16651
|
+
rootState,
|
|
16581
16652
|
namePlaceholder,
|
|
16582
16653
|
buttons,
|
|
16583
16654
|
assignToOutput
|
|
@@ -16591,8 +16662,8 @@ var TimecodeTreeDisplay = ({
|
|
|
16591
16662
|
});
|
|
16592
16663
|
}
|
|
16593
16664
|
}, [id, openNewWidow]);
|
|
16594
|
-
name = timecode?.name ? [...name, timecode.name] : name;
|
|
16595
|
-
if (isTimecodeGroup(timecode) && Object.values(timecode.timecodes).length) {
|
|
16665
|
+
name = timecode !== "disabled" && timecode?.name ? [...name, timecode.name] : name;
|
|
16666
|
+
if (timecode !== "disabled" && isTimecodeGroup(timecode) && Object.values(timecode.timecodes).length) {
|
|
16596
16667
|
return Object.entries(timecode.timecodes).map(([key, child]) => /* @__PURE__ */ jsx26(
|
|
16597
16668
|
TimecodeTreeDisplay,
|
|
16598
16669
|
{
|
|
@@ -16602,6 +16673,7 @@ var TimecodeTreeDisplay = ({
|
|
|
16602
16673
|
name,
|
|
16603
16674
|
color: timecode.color ?? color,
|
|
16604
16675
|
timecode: child,
|
|
16676
|
+
rootState,
|
|
16605
16677
|
namePlaceholder,
|
|
16606
16678
|
buttons,
|
|
16607
16679
|
assignToOutput
|
|
@@ -16619,28 +16691,67 @@ var TimecodeTreeDisplay = ({
|
|
|
16619
16691
|
TimecodeDisplay,
|
|
16620
16692
|
{
|
|
16621
16693
|
id,
|
|
16622
|
-
timecode: isTimecodeInstance(timecode) ? timecode : EMPTY_TIMECODE,
|
|
16694
|
+
timecode: timecode !== "disabled" && isTimecodeInstance(timecode) ? timecode : EMPTY_TIMECODE,
|
|
16695
|
+
rootState,
|
|
16696
|
+
disabled: timecode === "disabled",
|
|
16623
16697
|
config,
|
|
16624
16698
|
headerComponents: /* @__PURE__ */ jsxs9(Fragment8, { children: [
|
|
16625
|
-
/* @__PURE__ */
|
|
16626
|
-
/* @__PURE__ */
|
|
16627
|
-
|
|
16628
|
-
|
|
16629
|
-
|
|
16630
|
-
|
|
16631
|
-
|
|
16632
|
-
|
|
16633
|
-
|
|
16699
|
+
/* @__PURE__ */ jsx26("div", { className: "flex grow basis-0 items-start gap-0.25", children: /* @__PURE__ */ jsxs9("div", { className: "grow", children: [
|
|
16700
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-0.25", children: [
|
|
16701
|
+
/* @__PURE__ */ jsx26(
|
|
16702
|
+
"div",
|
|
16703
|
+
{
|
|
16704
|
+
className: "\n m-0.25 rounded-md border border-sigil-bg-light\n bg-timecode-usage-foreground px-1 py-0.25\n text-sigil-control text-timecode-usage-text\n ",
|
|
16705
|
+
children: type
|
|
16706
|
+
}
|
|
16707
|
+
),
|
|
16708
|
+
/* @__PURE__ */ jsx26(
|
|
16709
|
+
"div",
|
|
16710
|
+
{
|
|
16711
|
+
className: cn(
|
|
16712
|
+
"w-0 grow truncate p-0.5",
|
|
16713
|
+
cnd(name.length, "font-bold", "italic opacity-50")
|
|
16714
|
+
),
|
|
16715
|
+
children: name.length ? name.join(" / ") : namePlaceholder
|
|
16716
|
+
}
|
|
16717
|
+
)
|
|
16718
|
+
] }),
|
|
16719
|
+
link && /* @__PURE__ */ jsxs9(
|
|
16634
16720
|
"div",
|
|
16635
16721
|
{
|
|
16636
|
-
className:
|
|
16637
|
-
|
|
16638
|
-
|
|
16722
|
+
className: "\n flex items-center gap-0.25 text-timecode-usage-foreground\n ",
|
|
16723
|
+
style: cssSigilColorUsageVariables(
|
|
16724
|
+
"timecode-usage",
|
|
16725
|
+
// Override timecode color with the user hint preferences
|
|
16726
|
+
// when no color is specified
|
|
16727
|
+
// as that will be what's used by the linked input/generator
|
|
16728
|
+
sigilColorUsage(link.color ?? "hint")
|
|
16639
16729
|
),
|
|
16640
|
-
children:
|
|
16730
|
+
children: [
|
|
16731
|
+
/* @__PURE__ */ jsxs9(
|
|
16732
|
+
"div",
|
|
16733
|
+
{
|
|
16734
|
+
className: "\n m-0.25 flex items-center gap-0.25 rounded-md border\n border-sigil-bg-light bg-timecode-usage-foreground px-1\n py-0.25 text-sigil-control text-timecode-usage-text\n ",
|
|
16735
|
+
children: [
|
|
16736
|
+
/* @__PURE__ */ jsx26(Icon2, { icon: "link", className: "text-[120%]" }),
|
|
16737
|
+
/* @__PURE__ */ jsx26("span", { children: link.type })
|
|
16738
|
+
]
|
|
16739
|
+
}
|
|
16740
|
+
),
|
|
16741
|
+
/* @__PURE__ */ jsx26(
|
|
16742
|
+
"div",
|
|
16743
|
+
{
|
|
16744
|
+
className: cn(
|
|
16745
|
+
"w-0 grow truncate p-0.5",
|
|
16746
|
+
cnd(link.name.length, "font-bold", "italic opacity-50")
|
|
16747
|
+
),
|
|
16748
|
+
children: link.name.length ? link.name.join(" / ") : link.namePlaceholder
|
|
16749
|
+
}
|
|
16750
|
+
)
|
|
16751
|
+
]
|
|
16641
16752
|
}
|
|
16642
16753
|
)
|
|
16643
|
-
] }),
|
|
16754
|
+
] }) }),
|
|
16644
16755
|
/* @__PURE__ */ jsxs9(ControlButtonGroup, { className: "rounded-md bg-sigil-bg-light", children: [
|
|
16645
16756
|
/* @__PURE__ */ jsx26(
|
|
16646
16757
|
ControlButton,
|
|
@@ -16678,7 +16789,7 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16678
16789
|
return getTimecodeInstance(applicationState, id);
|
|
16679
16790
|
} else {
|
|
16680
16791
|
const c = config.outputs[id[1]];
|
|
16681
|
-
if (!c) {
|
|
16792
|
+
if (!c || !c.enabled) {
|
|
16682
16793
|
return null;
|
|
16683
16794
|
}
|
|
16684
16795
|
return augmentUpstreamTimecodeWithOutputMetadata(
|
|
@@ -16687,6 +16798,15 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16687
16798
|
);
|
|
16688
16799
|
}
|
|
16689
16800
|
}, [applicationState, id, config.outputs]);
|
|
16801
|
+
const linkedSourceInfo = useMemo13(() => {
|
|
16802
|
+
if (isOutputInstanceId(id)) {
|
|
16803
|
+
const c = config.outputs[id[1]];
|
|
16804
|
+
if (c?.link) {
|
|
16805
|
+
return getLinkedSourceInfo(c.link, config);
|
|
16806
|
+
}
|
|
16807
|
+
}
|
|
16808
|
+
return void 0;
|
|
16809
|
+
}, [id, config]);
|
|
16690
16810
|
const instanceConfig = useMemo13(() => {
|
|
16691
16811
|
if (isInputInstanceId(id)) {
|
|
16692
16812
|
const c = config.inputs[id[1]];
|
|
@@ -16698,7 +16818,8 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16698
16818
|
type: STRINGS.protocols[c.definition.type].short,
|
|
16699
16819
|
name: c.name ? [c.name] : [],
|
|
16700
16820
|
color: c.color,
|
|
16701
|
-
namePlaceholder:
|
|
16821
|
+
namePlaceholder: STRINGS.inputs.unnamed,
|
|
16822
|
+
disabled: !c.enabled
|
|
16702
16823
|
};
|
|
16703
16824
|
} else if (isGeneratorInstanceId(id)) {
|
|
16704
16825
|
const c = config.generators[id[1]];
|
|
@@ -16710,7 +16831,8 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16710
16831
|
type: STRINGS.generators.type[c.definition.type],
|
|
16711
16832
|
name: c.name ? [c.name] : [],
|
|
16712
16833
|
color: c.color,
|
|
16713
|
-
namePlaceholder:
|
|
16834
|
+
namePlaceholder: STRINGS.generators.unnamed,
|
|
16835
|
+
disabled: false
|
|
16714
16836
|
};
|
|
16715
16837
|
} else {
|
|
16716
16838
|
const c = config.outputs[id[1]];
|
|
@@ -16722,10 +16844,29 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16722
16844
|
type: STRINGS.protocols[c.definition.type].short,
|
|
16723
16845
|
name: c.name ? [c.name] : [],
|
|
16724
16846
|
color: c.color,
|
|
16725
|
-
namePlaceholder:
|
|
16847
|
+
namePlaceholder: STRINGS.outputs.unnamed,
|
|
16848
|
+
disabled: !c.enabled
|
|
16726
16849
|
};
|
|
16727
16850
|
}
|
|
16728
16851
|
}, [id, config]);
|
|
16852
|
+
const rootState = useMemo13(() => {
|
|
16853
|
+
if (isInputInstanceId(id)) {
|
|
16854
|
+
return {
|
|
16855
|
+
errors: applicationState.inputs?.[id[1]]?.errors ?? [],
|
|
16856
|
+
warnings: applicationState.inputs?.[id[1]]?.warnings ?? []
|
|
16857
|
+
};
|
|
16858
|
+
} else if (isGeneratorInstanceId(id)) {
|
|
16859
|
+
return {
|
|
16860
|
+
errors: [],
|
|
16861
|
+
warnings: []
|
|
16862
|
+
};
|
|
16863
|
+
} else {
|
|
16864
|
+
return {
|
|
16865
|
+
errors: applicationState.outputs?.[id[1]]?.errors ?? [],
|
|
16866
|
+
warnings: applicationState.outputs?.[id[1]]?.warnings ?? []
|
|
16867
|
+
};
|
|
16868
|
+
}
|
|
16869
|
+
}, [id, applicationState]);
|
|
16729
16870
|
if (!instanceConfig) {
|
|
16730
16871
|
return /* @__PURE__ */ jsxs9(
|
|
16731
16872
|
SizeAwareDiv,
|
|
@@ -16746,9 +16887,11 @@ var FullscreenTimecodeDisplay = ({
|
|
|
16746
16887
|
TimecodeTreeDisplay,
|
|
16747
16888
|
{
|
|
16748
16889
|
id,
|
|
16749
|
-
timecode,
|
|
16890
|
+
timecode: instanceConfig.disabled ? "disabled" : timecode,
|
|
16891
|
+
rootState,
|
|
16750
16892
|
assignToOutput: null,
|
|
16751
16893
|
buttons: null,
|
|
16894
|
+
link: linkedSourceInfo,
|
|
16752
16895
|
...instanceConfig
|
|
16753
16896
|
}
|
|
16754
16897
|
)
|
|
@@ -17186,7 +17329,7 @@ var OutputDisplay = ({
|
|
|
17186
17329
|
setAssignToOutput
|
|
17187
17330
|
}) => {
|
|
17188
17331
|
const applicationState = useApplicationState();
|
|
17189
|
-
const { updateConfig } = useContext10(ConfigContext);
|
|
17332
|
+
const { config: allConfig, updateConfig } = useContext10(ConfigContext);
|
|
17190
17333
|
const clearLink = useCallback14(() => {
|
|
17191
17334
|
updateConfig((current) => {
|
|
17192
17335
|
const currentOutput = current.outputs?.[uuid];
|
|
@@ -17214,6 +17357,10 @@ var OutputDisplay = ({
|
|
|
17214
17357
|
const tc = config.link && getTimecodeInstance(applicationState, config.link);
|
|
17215
17358
|
return augmentUpstreamTimecodeWithOutputMetadata(tc, config);
|
|
17216
17359
|
}, [applicationState, config]);
|
|
17360
|
+
const link = useMemo14(
|
|
17361
|
+
() => getLinkedSourceInfo(config.link, allConfig),
|
|
17362
|
+
[config.link, allConfig]
|
|
17363
|
+
);
|
|
17217
17364
|
const toggleEnabled = useCallback14(() => {
|
|
17218
17365
|
updateConfig((current) => {
|
|
17219
17366
|
const existing = current.outputs?.[uuid];
|
|
@@ -17232,6 +17379,13 @@ var OutputDisplay = ({
|
|
|
17232
17379
|
};
|
|
17233
17380
|
});
|
|
17234
17381
|
}, [uuid, updateConfig]);
|
|
17382
|
+
const rootState = useMemo14(
|
|
17383
|
+
() => ({
|
|
17384
|
+
errors: applicationState.outputs[uuid]?.errors ?? [],
|
|
17385
|
+
warnings: applicationState.outputs[uuid]?.warnings ?? []
|
|
17386
|
+
}),
|
|
17387
|
+
[applicationState.outputs, uuid]
|
|
17388
|
+
);
|
|
17235
17389
|
return /* @__PURE__ */ jsxs11(
|
|
17236
17390
|
"div",
|
|
17237
17391
|
{
|
|
@@ -17250,23 +17404,25 @@ var OutputDisplay = ({
|
|
|
17250
17404
|
type: STRINGS.protocols[config.definition.type].short,
|
|
17251
17405
|
name: config.name ? [config.name] : [],
|
|
17252
17406
|
color: config.color,
|
|
17253
|
-
timecode: config.enabled ? timecode :
|
|
17254
|
-
|
|
17407
|
+
timecode: config.enabled ? timecode : "disabled",
|
|
17408
|
+
rootState,
|
|
17409
|
+
namePlaceholder: STRINGS.outputs.unnamed,
|
|
17410
|
+
link,
|
|
17255
17411
|
buttons: /* @__PURE__ */ jsxs11(Fragment9, { children: [
|
|
17256
17412
|
/* @__PURE__ */ jsx28(
|
|
17257
17413
|
ControlButton,
|
|
17258
17414
|
{
|
|
17259
17415
|
variant: "large",
|
|
17260
|
-
title: config.enabled ?
|
|
17416
|
+
title: config.enabled ? STRINGS.outputs.disable : STRINGS.outputs.enable,
|
|
17261
17417
|
onClick: toggleEnabled,
|
|
17262
|
-
icon: config.enabled ? "
|
|
17418
|
+
icon: config.enabled ? "pause" : "play_arrow"
|
|
17263
17419
|
}
|
|
17264
17420
|
),
|
|
17265
17421
|
/* @__PURE__ */ jsx28(
|
|
17266
17422
|
ControlButton,
|
|
17267
17423
|
{
|
|
17268
17424
|
variant: "large",
|
|
17269
|
-
title:
|
|
17425
|
+
title: STRINGS.outputs.link,
|
|
17270
17426
|
active: assignToOutput === uuid,
|
|
17271
17427
|
onClick: linkCallback,
|
|
17272
17428
|
icon: config.link ? "link" : "link_off"
|
|
@@ -17276,7 +17432,7 @@ var OutputDisplay = ({
|
|
|
17276
17432
|
ControlButton,
|
|
17277
17433
|
{
|
|
17278
17434
|
variant: "large",
|
|
17279
|
-
title:
|
|
17435
|
+
title: STRINGS.outputs.edit,
|
|
17280
17436
|
onClick: () => setDialogMode({
|
|
17281
17437
|
section: { type: "outputs", output: config.definition.type },
|
|
17282
17438
|
target: { type: "edit", uuid }
|
|
@@ -17346,7 +17502,7 @@ var OutputsSection = ({
|
|
|
17346
17502
|
};
|
|
17347
17503
|
|
|
17348
17504
|
// src/components/frontend/toolbox/generators.tsx
|
|
17349
|
-
import { useCallback as useCallback15, useContext as useContext11, useState as useState26 } from "react";
|
|
17505
|
+
import { useCallback as useCallback15, useContext as useContext11, useMemo as useMemo15, useState as useState26 } from "react";
|
|
17350
17506
|
import { Fragment as Fragment10, jsx as jsx29, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
17351
17507
|
var ClockSpecificSettings = ({
|
|
17352
17508
|
data,
|
|
@@ -17534,6 +17690,7 @@ var GeneratorDisplay = ({
|
|
|
17534
17690
|
}) => {
|
|
17535
17691
|
const { generators } = useApplicationState();
|
|
17536
17692
|
const state = generators[uuid];
|
|
17693
|
+
const rootState = useMemo15(() => ({ errors: [], warnings: [] }), []);
|
|
17537
17694
|
return /* @__PURE__ */ jsx29(
|
|
17538
17695
|
TimecodeTreeDisplay,
|
|
17539
17696
|
{
|
|
@@ -17543,12 +17700,13 @@ var GeneratorDisplay = ({
|
|
|
17543
17700
|
name: config.name ? [config.name] : [],
|
|
17544
17701
|
color: config.color,
|
|
17545
17702
|
timecode: state?.timecode ?? null,
|
|
17546
|
-
|
|
17703
|
+
rootState,
|
|
17704
|
+
namePlaceholder: STRINGS.generators.unnamed,
|
|
17547
17705
|
buttons: /* @__PURE__ */ jsx29(Fragment10, { children: /* @__PURE__ */ jsx29(
|
|
17548
17706
|
ControlButton,
|
|
17549
17707
|
{
|
|
17550
17708
|
variant: "large",
|
|
17551
|
-
title:
|
|
17709
|
+
title: STRINGS.generators.edit,
|
|
17552
17710
|
onClick: () => setDialogMode({
|
|
17553
17711
|
section: {
|
|
17554
17712
|
type: "generators",
|
|
@@ -17606,7 +17764,13 @@ var GeneratorsSection = ({
|
|
|
17606
17764
|
};
|
|
17607
17765
|
|
|
17608
17766
|
// src/components/frontend/toolbox/inputs.tsx
|
|
17609
|
-
import {
|
|
17767
|
+
import {
|
|
17768
|
+
useCallback as useCallback16,
|
|
17769
|
+
useContext as useContext12,
|
|
17770
|
+
useEffect as useEffect27,
|
|
17771
|
+
useMemo as useMemo16,
|
|
17772
|
+
useState as useState27
|
|
17773
|
+
} from "react";
|
|
17610
17774
|
import { Fragment as Fragment11, jsx as jsx30, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
17611
17775
|
var DmxConnectionSettings2 = ({
|
|
17612
17776
|
data,
|
|
@@ -17937,6 +18101,10 @@ var InputDisplay = ({
|
|
|
17937
18101
|
};
|
|
17938
18102
|
});
|
|
17939
18103
|
}, [uuid, updateConfig]);
|
|
18104
|
+
const rootState = useMemo16(
|
|
18105
|
+
() => ({ errors: state?.errors ?? [], warnings: state?.warnings ?? [] }),
|
|
18106
|
+
[state?.errors, state?.warnings]
|
|
18107
|
+
);
|
|
17940
18108
|
return /* @__PURE__ */ jsx30(
|
|
17941
18109
|
TimecodeTreeDisplay,
|
|
17942
18110
|
{
|
|
@@ -17945,23 +18113,24 @@ var InputDisplay = ({
|
|
|
17945
18113
|
type: STRINGS.protocols[config.definition.type].short,
|
|
17946
18114
|
name: config.name ? [config.name] : [],
|
|
17947
18115
|
color: config.color,
|
|
17948
|
-
timecode: state?.timecode ?? null,
|
|
17949
|
-
|
|
18116
|
+
timecode: config.enabled ? state?.timecode ?? null : "disabled",
|
|
18117
|
+
rootState,
|
|
18118
|
+
namePlaceholder: STRINGS.inputs.unnamed,
|
|
17950
18119
|
buttons: /* @__PURE__ */ jsxs13(Fragment11, { children: [
|
|
17951
18120
|
/* @__PURE__ */ jsx30(
|
|
17952
18121
|
ControlButton,
|
|
17953
18122
|
{
|
|
17954
18123
|
variant: "large",
|
|
17955
|
-
title: config.enabled ?
|
|
18124
|
+
title: config.enabled ? STRINGS.inputs.disable : STRINGS.inputs.enable,
|
|
17956
18125
|
onClick: toggleEnabled,
|
|
17957
|
-
icon: config.enabled ? "
|
|
18126
|
+
icon: config.enabled ? "pause" : "play_arrow"
|
|
17958
18127
|
}
|
|
17959
18128
|
),
|
|
17960
18129
|
/* @__PURE__ */ jsx30(
|
|
17961
18130
|
ControlButton,
|
|
17962
18131
|
{
|
|
17963
18132
|
variant: "large",
|
|
17964
|
-
title:
|
|
18133
|
+
title: STRINGS.inputs.edit,
|
|
17965
18134
|
onClick: () => setDialogMode({
|
|
17966
18135
|
section: { type: "inputs", input: config.definition.type },
|
|
17967
18136
|
target: { type: "edit", uuid }
|
|
@@ -18104,7 +18273,7 @@ import {
|
|
|
18104
18273
|
useCallback as useCallback18,
|
|
18105
18274
|
useContext as useContext13,
|
|
18106
18275
|
useEffect as useEffect29,
|
|
18107
|
-
useMemo as
|
|
18276
|
+
useMemo as useMemo17,
|
|
18108
18277
|
useRef as useRef17,
|
|
18109
18278
|
useState as useState29
|
|
18110
18279
|
} from "react";
|
|
@@ -18281,7 +18450,7 @@ var AppPortConfig = () => {
|
|
|
18281
18450
|
const currentPortString = !port ? "" : typeof port === "string" ? port : portString(port);
|
|
18282
18451
|
const hasNetworkChanges = nextPort !== null || nextInterface !== null;
|
|
18283
18452
|
const nextUrlRef = useRef17(null);
|
|
18284
|
-
const validatedPort =
|
|
18453
|
+
const validatedPort = useMemo17(() => {
|
|
18285
18454
|
if (nextPort === null) {
|
|
18286
18455
|
return { type: "unchanged" };
|
|
18287
18456
|
}
|
|
@@ -19157,7 +19326,7 @@ var TooltipWrapper2 = ({
|
|
|
19157
19326
|
};
|
|
19158
19327
|
|
|
19159
19328
|
// ../../packages/sigil/src/frontend/input.ts
|
|
19160
|
-
import { useMemo as
|
|
19329
|
+
import { useMemo as useMemo18, useState as useState34 } from "react";
|
|
19161
19330
|
var usePressable3 = (click) => {
|
|
19162
19331
|
const [touching, setTouching] = useState34(false);
|
|
19163
19332
|
return {
|
|
@@ -19185,7 +19354,7 @@ var useLongPressable3 = ({
|
|
|
19185
19354
|
onRelease
|
|
19186
19355
|
}) => {
|
|
19187
19356
|
const [touching, setTouching] = useState34(false);
|
|
19188
|
-
return
|
|
19357
|
+
return useMemo18(
|
|
19189
19358
|
() => ({
|
|
19190
19359
|
touching,
|
|
19191
19360
|
handlers: {
|
|
@@ -19703,7 +19872,7 @@ var ToolboxRoot = ({ info }) => {
|
|
|
19703
19872
|
},
|
|
19704
19873
|
[sendMessage, info.key, config]
|
|
19705
19874
|
);
|
|
19706
|
-
const configContext =
|
|
19875
|
+
const configContext = useMemo19(
|
|
19707
19876
|
() => ({
|
|
19708
19877
|
config,
|
|
19709
19878
|
network: info.network,
|
|
@@ -19722,12 +19891,12 @@ var ToolboxRoot = ({ info }) => {
|
|
|
19722
19891
|
action: "toolbox-root-get-network-interfaces"
|
|
19723
19892
|
});
|
|
19724
19893
|
}, [call, info.key]);
|
|
19725
|
-
const networkContextValue =
|
|
19894
|
+
const networkContextValue = useMemo19(() => {
|
|
19726
19895
|
return {
|
|
19727
19896
|
getNetworkInterfaces
|
|
19728
19897
|
};
|
|
19729
19898
|
}, [getNetworkInterfaces]);
|
|
19730
|
-
const assignToOutputCallback =
|
|
19899
|
+
const assignToOutputCallback = useMemo19(() => {
|
|
19731
19900
|
if (!assignToOutput) {
|
|
19732
19901
|
return null;
|
|
19733
19902
|
}
|
|
@@ -19769,18 +19938,18 @@ var ToolboxRoot = ({ info }) => {
|
|
|
19769
19938
|
},
|
|
19770
19939
|
[call, info.key]
|
|
19771
19940
|
);
|
|
19772
|
-
const handlers =
|
|
19941
|
+
const handlers = useMemo19(
|
|
19773
19942
|
() => ({
|
|
19774
19943
|
handlers: info.handlers,
|
|
19775
19944
|
callHandler
|
|
19776
19945
|
}),
|
|
19777
19946
|
[info.handlers, callHandler]
|
|
19778
19947
|
);
|
|
19779
|
-
const windowedTimecodeId =
|
|
19948
|
+
const windowedTimecodeId = useMemo19(
|
|
19780
19949
|
() => getFragmentValue("tc", TIMECODE_INSTANCE_ID),
|
|
19781
19950
|
[]
|
|
19782
19951
|
);
|
|
19783
|
-
const root =
|
|
19952
|
+
const root = useMemo19(
|
|
19784
19953
|
() => windowedTimecodeId ? /* @__PURE__ */ jsx51(Layout, { modes: null, children: /* @__PURE__ */ jsx51(FullscreenTimecodeDisplay, { id: windowedTimecodeId }) }) : /* @__PURE__ */ jsxs27(Fragment18, { children: [
|
|
19785
19954
|
/* @__PURE__ */ jsx51(
|
|
19786
19955
|
Layout,
|
package/dist/entrypoint.css
CHANGED
|
@@ -823,6 +823,9 @@ body.touch-mode * {
|
|
|
823
823
|
);
|
|
824
824
|
}
|
|
825
825
|
}
|
|
826
|
+
.pointer-events-none {
|
|
827
|
+
pointer-events: none;
|
|
828
|
+
}
|
|
826
829
|
.visible {
|
|
827
830
|
visibility: visible;
|
|
828
831
|
}
|
|
@@ -891,6 +894,9 @@ body.touch-mode * {
|
|
|
891
894
|
.min-h-timecode-min-height {
|
|
892
895
|
min-height: var(--timecode-min-height);
|
|
893
896
|
}
|
|
897
|
+
.w-0 {
|
|
898
|
+
width: 0px;
|
|
899
|
+
}
|
|
894
900
|
.w-full {
|
|
895
901
|
width: 100%;
|
|
896
902
|
}
|
|
@@ -1052,6 +1058,9 @@ body.touch-mode * {
|
|
|
1052
1058
|
.text-\[80\%\] {
|
|
1053
1059
|
font-size: 80%;
|
|
1054
1060
|
}
|
|
1061
|
+
.text-\[120\%\] {
|
|
1062
|
+
font-size: 120%;
|
|
1063
|
+
}
|
|
1055
1064
|
.text-arcane-normal {
|
|
1056
1065
|
font-size: 1em;
|
|
1057
1066
|
}
|