@vessel-dsp/control-ui 0.6.4 → 0.6.6
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/dist/ControlSurface.d.ts +2 -2
- package/dist/ControlSurface.d.ts.map +1 -1
- package/dist/ControlSurface.js +62 -31
- package/dist/ControlSurface.js.map +1 -1
- package/dist/appearance.d.ts +1 -1
- package/dist/appearance.d.ts.map +1 -1
- package/dist/appearance.js +20 -14
- package/dist/appearance.js.map +1 -1
- package/dist/components/ConcentricKnob.d.ts +22 -0
- package/dist/components/ConcentricKnob.d.ts.map +1 -0
- package/dist/components/ConcentricKnob.js +15 -0
- package/dist/components/ConcentricKnob.js.map +1 -0
- package/dist/components/ControlFrame.d.ts +3 -3
- package/dist/components/ControlFrame.d.ts.map +1 -1
- package/dist/components/ControlFrame.js +3 -3
- package/dist/components/ControlFrame.js.map +1 -1
- package/dist/components/DetentedRotarySelect.d.ts +2 -2
- package/dist/components/DetentedRotarySelect.d.ts.map +1 -1
- package/dist/components/DetentedRotarySelect.js +6 -6
- package/dist/components/DetentedRotarySelect.js.map +1 -1
- package/dist/components/FootswitchButton.d.ts +2 -2
- package/dist/components/FootswitchButton.d.ts.map +1 -1
- package/dist/components/FootswitchButton.js +7 -7
- package/dist/components/FootswitchButton.js.map +1 -1
- package/dist/components/JackIndicator.d.ts +15 -0
- package/dist/components/JackIndicator.d.ts.map +1 -0
- package/dist/components/JackIndicator.js +11 -0
- package/dist/components/JackIndicator.js.map +1 -0
- package/dist/components/KnobControl.d.ts +2 -2
- package/dist/components/KnobControl.d.ts.map +1 -1
- package/dist/components/KnobControl.js +42 -31
- package/dist/components/KnobControl.js.map +1 -1
- package/dist/components/LedIndicator.d.ts +2 -2
- package/dist/components/LedIndicator.d.ts.map +1 -1
- package/dist/components/LedIndicator.js +4 -4
- package/dist/components/LedIndicator.js.map +1 -1
- package/dist/components/SwitchSelectControl.d.ts +2 -2
- package/dist/components/SwitchSelectControl.d.ts.map +1 -1
- package/dist/components/SwitchSelectControl.js +3 -3
- package/dist/components/SwitchSelectControl.js.map +1 -1
- package/dist/components/ToggleSwitchControl.d.ts +2 -2
- package/dist/components/ToggleSwitchControl.d.ts.map +1 -1
- package/dist/components/ToggleSwitchControl.js +3 -3
- package/dist/components/ToggleSwitchControl.js.map +1 -1
- package/dist/controls.d.ts +2 -2
- package/dist/controls.d.ts.map +1 -1
- package/dist/controls.js +55 -37
- package/dist/controls.js.map +1 -1
- package/dist/index.d.ts +32 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -15
- package/dist/index.js.map +1 -1
- package/dist/render-plan.d.ts +2 -2
- package/dist/render-plan.d.ts.map +1 -1
- package/dist/render-plan.js +67 -10
- package/dist/render-plan.js.map +1 -1
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +7 -4
- package/dist/state.js.map +1 -1
- package/dist/styles.css +250 -203
- package/dist/theme.d.ts +3 -3
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +21 -11
- package/dist/theme.js.map +1 -1
- package/dist/types.d.ts +15 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/useControlState.d.ts +1 -1
- package/dist/useControlState.d.ts.map +1 -1
- package/dist/useControlState.js +2 -2
- package/dist/useControlState.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -1
- package/dist/utils.js.map +1 -1
- package/package.json +70 -70
package/dist/ControlSurface.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ControlState, Panel, PanelMessage } from
|
|
2
|
-
import type { ControlAppearanceMap, ControlSurfaceClassNames } from
|
|
1
|
+
import type { ControlState, Panel, PanelMessage } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlAppearanceMap, ControlSurfaceClassNames } from "./types";
|
|
3
3
|
export type ControlSurfaceProps = Readonly<{
|
|
4
4
|
panel: Panel;
|
|
5
5
|
state: ControlState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlSurface.d.ts","sourceRoot":"","sources":["../src/ControlSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ControlSurface.d.ts","sourceRoot":"","sources":["../src/ControlSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EAEZ,KAAK,EACL,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAO1B,OAAO,KAAK,EACX,oBAAoB,EAEpB,wBAAwB,EACxB,MAAM,SAAS,CAAC;AAYjB,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,aAAa,CAAC,EACX,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC,GACtD,SAAS,CAAC;CACb,CAAC,CAAC;AAEH,wBAAgB,cAAc,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAgB,EAChB,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,GACb,EAAE,mBAAmB,+BA6CrB"}
|
package/dist/ControlSurface.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { controlValueForId } from
|
|
3
|
-
import { createControlSurfaceRenderPlan } from
|
|
4
|
-
import { applyControlUiMessage, controlMessageForValue } from
|
|
5
|
-
import { cx } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
2
|
+
import { controlValueForId } from "./controls.js";
|
|
3
|
+
import { createControlSurfaceRenderPlan, } from "./render-plan.js";
|
|
4
|
+
import { applyControlUiMessage, controlMessageForValue } from "./state.js";
|
|
5
|
+
import { cx } from "./utils.js";
|
|
6
|
+
import { ConcentricKnob } from "./components/ConcentricKnob.js";
|
|
7
|
+
import { DetentedRotarySelect } from "./components/DetentedRotarySelect.js";
|
|
8
|
+
import { FootswitchButton } from "./components/FootswitchButton.js";
|
|
9
|
+
import { GraphicEqSlider } from "./components/GraphicEqSlider.js";
|
|
10
|
+
import { JackIndicator } from "./components/JackIndicator.js";
|
|
11
|
+
import { KnobControl } from "./components/KnobControl.js";
|
|
12
|
+
import { LedIndicator } from "./components/LedIndicator.js";
|
|
13
|
+
import { SwitchSelectControl } from "./components/SwitchSelectControl.js";
|
|
14
|
+
import { ToggleSwitchControl } from "./components/ToggleSwitchControl.js";
|
|
13
15
|
export function ControlSurface({ panel, state, disabled = false, appearance, className, classNames, onMessage, onStateChange, }) {
|
|
14
16
|
const plan = createControlSurfaceRenderPlan(panel, { appearance });
|
|
15
17
|
function emitControlValue(controlId, value) {
|
|
@@ -22,31 +24,56 @@ export function ControlSurface({ panel, state, disabled = false, appearance, cla
|
|
|
22
24
|
onStateChange(applyControlUiMessage(panel, state, message), message);
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
|
-
return (_jsx("div", { className: cx(
|
|
27
|
+
return (_jsx("div", { className: cx("vdsp-control-ui-surface", disabled && "is-disabled", classNames?.root, className), "data-vdsp-control-surface": true, children: plan.map((item) => (_jsx("div", { className: cx("vdsp-control-ui-surface__item", classNames?.item), "data-vdsp-control-item": item.controlId, "data-vdsp-face-id": item.faceId, children: renderControlItem(item, state, disabled, classNames, emitControlValue) }, item.id))) }));
|
|
26
28
|
}
|
|
27
29
|
function renderControlItem(item, state, disabled, classNames, emitControlValue) {
|
|
28
30
|
const value = controlValueForId(state, item.controlId);
|
|
29
31
|
const frameClassNames = frameClassNamesFor(item, classNames);
|
|
30
|
-
if (item.control.kind ===
|
|
31
|
-
if (item.appearance ===
|
|
32
|
-
return (_jsx(DetentedRotarySelect, { control: item.control.control, position: value?.kind ===
|
|
32
|
+
if (item.control.kind === "knob") {
|
|
33
|
+
if (item.appearance === "detented-rotary-select") {
|
|
34
|
+
return (_jsx(DetentedRotarySelect, { control: item.control.control, position: value?.kind === "knob"
|
|
35
|
+
? value.position
|
|
36
|
+
: item.control.control.defaultPosition, disabled: disabled, label: item.label, classNames: frameClassNames, onPositionChange: (position) => emitControlValue(item.controlId, position) }));
|
|
33
37
|
}
|
|
34
|
-
return (_jsx(KnobControl, { control: item.control.control, position: value?.kind ===
|
|
38
|
+
return (_jsx(KnobControl, { control: item.control.control, position: value?.kind === "knob"
|
|
39
|
+
? value.position
|
|
40
|
+
: item.control.control.defaultPosition, disabled: disabled, label: item.label, classNames: frameClassNames, onPositionChange: (position) => emitControlValue(item.controlId, position) }));
|
|
35
41
|
}
|
|
36
|
-
if (item.control.kind ===
|
|
37
|
-
return (_jsx(GraphicEqSlider, { control: item.control.control, position: value?.kind ===
|
|
42
|
+
if (item.control.kind === "slider") {
|
|
43
|
+
return (_jsx(GraphicEqSlider, { control: item.control.control, position: value?.kind === "slider"
|
|
44
|
+
? value.position
|
|
45
|
+
: item.control.control.defaultPosition, disabled: disabled, label: item.label, classNames: frameClassNames, onPositionChange: (position) => emitControlValue(item.controlId, position) }));
|
|
38
46
|
}
|
|
39
|
-
if (item.control.kind ===
|
|
40
|
-
const position = value?.kind ===
|
|
41
|
-
|
|
47
|
+
if (item.control.kind === "switch") {
|
|
48
|
+
const position = value?.kind === "switch"
|
|
49
|
+
? value.position
|
|
50
|
+
: item.control.control.defaultPosition;
|
|
51
|
+
if (item.appearance === "footswitch") {
|
|
42
52
|
return (_jsx(FootswitchButton, { control: item.control.control, pressed: position > 0, disabled: disabled, label: item.label, classNames: frameClassNames, onPressedChange: (pressed) => emitControlValue(item.controlId, pressed ? 1 : 0) }));
|
|
43
53
|
}
|
|
44
|
-
if (item.appearance ===
|
|
54
|
+
if (item.appearance === "toggle") {
|
|
45
55
|
return (_jsx(ToggleSwitchControl, { control: item.control.control, position: position, disabled: disabled, label: item.label, classNames: frameClassNames, onPositionChange: (nextPosition) => emitControlValue(item.controlId, nextPosition) }));
|
|
46
56
|
}
|
|
47
57
|
return (_jsx(SwitchSelectControl, { control: item.control.control, position: position, disabled: disabled, label: item.label, classNames: frameClassNames, onPositionChange: (nextPosition) => emitControlValue(item.controlId, nextPosition) }));
|
|
48
58
|
}
|
|
49
|
-
|
|
59
|
+
if (item.control.kind === "concentric-knob") {
|
|
60
|
+
const tiers = item.control.tiers.map((knob) => {
|
|
61
|
+
const tierValue = controlValueForId(state, knob.id);
|
|
62
|
+
return {
|
|
63
|
+
control: knob,
|
|
64
|
+
position: tierValue?.kind === "knob"
|
|
65
|
+
? tierValue.position
|
|
66
|
+
: knob.defaultPosition,
|
|
67
|
+
label: knob.name,
|
|
68
|
+
onPositionChange: (position) => emitControlValue(knob.id, position),
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
return (_jsx(ConcentricKnob, { tiers: tiers, disabled: disabled, classNames: frameClassNames }));
|
|
72
|
+
}
|
|
73
|
+
if (item.control.kind === "jack") {
|
|
74
|
+
return (_jsx(JackIndicator, { control: item.control.control, disabled: disabled, label: item.label, classNames: frameClassNames }));
|
|
75
|
+
}
|
|
76
|
+
return (_jsx(LedIndicator, { control: item.control.control, value: value?.kind === "led" ? value : { kind: "led", on: false }, disabled: disabled, label: item.label, classNames: frameClassNames }));
|
|
50
77
|
}
|
|
51
78
|
function frameClassNamesFor(item, classNames) {
|
|
52
79
|
if (classNames === undefined) {
|
|
@@ -61,20 +88,24 @@ function frameClassNamesFor(item, classNames) {
|
|
|
61
88
|
}
|
|
62
89
|
function controlSpecificClassName(item, classNames) {
|
|
63
90
|
switch (item.appearance) {
|
|
64
|
-
case
|
|
91
|
+
case "knob":
|
|
65
92
|
return classNames.knob;
|
|
66
|
-
case
|
|
93
|
+
case "detented-rotary-select":
|
|
67
94
|
return classNames.select;
|
|
68
|
-
case
|
|
95
|
+
case "concentric-knob":
|
|
96
|
+
return cx(classNames.knob, classNames.concentric);
|
|
97
|
+
case "footswitch":
|
|
69
98
|
return classNames.footswitch;
|
|
70
|
-
case
|
|
99
|
+
case "toggle":
|
|
71
100
|
return classNames.toggle;
|
|
72
|
-
case
|
|
73
|
-
case
|
|
101
|
+
case "graphic-eq-slider":
|
|
102
|
+
case "slider":
|
|
74
103
|
return classNames.slider;
|
|
75
|
-
case
|
|
104
|
+
case "led":
|
|
76
105
|
return classNames.led;
|
|
77
|
-
case
|
|
106
|
+
case "jack":
|
|
107
|
+
return classNames.jack;
|
|
108
|
+
case "hidden":
|
|
78
109
|
return undefined;
|
|
79
110
|
}
|
|
80
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlSurface.js","sourceRoot":"","sources":["../src/ControlSurface.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ControlSurface.js","sourceRoot":"","sources":["../src/ControlSurface.tsx"],"names":[],"mappings":"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"}
|
package/dist/appearance.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ControlAppearance, ControlUiControlRef } from
|
|
1
|
+
import type { ControlAppearance, ControlUiControlRef } from "./types";
|
|
2
2
|
export declare function resolveControlAppearance(control: ControlUiControlRef, override?: ControlAppearance): ControlAppearance;
|
|
3
3
|
//# sourceMappingURL=appearance.d.ts.map
|
package/dist/appearance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.d.ts","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,wBAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"appearance.d.ts","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEtE,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,CAAC,EAAE,iBAAiB,GAC1B,iBAAiB,CAgCnB"}
|
package/dist/appearance.js
CHANGED
|
@@ -3,23 +3,29 @@ export function resolveControlAppearance(control, override) {
|
|
|
3
3
|
return override;
|
|
4
4
|
}
|
|
5
5
|
switch (control.kind) {
|
|
6
|
-
case
|
|
7
|
-
return (control.control.steps?.length ?? 0) > 0
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
case
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
case "knob":
|
|
7
|
+
return (control.control.steps?.length ?? 0) > 0
|
|
8
|
+
? "detented-rotary-select"
|
|
9
|
+
: "knob";
|
|
10
|
+
case "slider":
|
|
11
|
+
return "graphic-eq-slider";
|
|
12
|
+
case "switch":
|
|
13
|
+
if (control.control.switchKind === "3pdt") {
|
|
14
|
+
return "footswitch";
|
|
13
15
|
}
|
|
14
16
|
if (control.control.positions === 2 &&
|
|
15
|
-
(control.control.switchKind ===
|
|
16
|
-
control.control.switchKind ===
|
|
17
|
-
control.control.switchKind ===
|
|
18
|
-
return
|
|
17
|
+
(control.control.switchKind === "spdt" ||
|
|
18
|
+
control.control.switchKind === "spst" ||
|
|
19
|
+
control.control.switchKind === "toggle")) {
|
|
20
|
+
return "toggle";
|
|
19
21
|
}
|
|
20
|
-
return
|
|
21
|
-
case
|
|
22
|
-
return
|
|
22
|
+
return "detented-rotary-select";
|
|
23
|
+
case "led":
|
|
24
|
+
return "led";
|
|
25
|
+
case "jack":
|
|
26
|
+
return "jack";
|
|
27
|
+
case "concentric-knob":
|
|
28
|
+
return "concentric-knob";
|
|
23
29
|
}
|
|
24
30
|
}
|
|
25
31
|
//# sourceMappingURL=appearance.js.map
|
package/dist/appearance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,
|
|
1
|
+
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../src/appearance.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACvC,OAA4B,EAC5B,QAA4B;IAE5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;gBAC9C,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,MAAM,CAAC;QACX,KAAK,QAAQ;YACZ,OAAO,mBAAmB,CAAC;QAC5B,KAAK,QAAQ;YACZ,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC;YACrB,CAAC;YACD,IACC,OAAO,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC;gBAC/B,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM;oBACrC,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,MAAM;oBACrC,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,EACxC,CAAC;gBACF,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,OAAO,wBAAwB,CAAC;QACjC,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,iBAAiB;YACrB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Knob } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
|
+
export type ConcentricKnobTier = Readonly<{
|
|
4
|
+
control: Knob;
|
|
5
|
+
position: number;
|
|
6
|
+
label?: string;
|
|
7
|
+
onPositionChange?: ((position: number) => void) | undefined;
|
|
8
|
+
}>;
|
|
9
|
+
export type ConcentricKnobProps = Readonly<{
|
|
10
|
+
tiers: readonly ConcentricKnobTier[];
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
className?: string | undefined;
|
|
13
|
+
classNames?: ControlFrameClassNames | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* A stacked concentric potentiometer with N independent dials sharing one
|
|
17
|
+
* shaft. Each dial is a full {@link KnobControl} wired to its own tier control,
|
|
18
|
+
* so every section emits and snaps independently. Tiers are ordered bottom to
|
|
19
|
+
* top; rendered bottom (largest) first.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ConcentricKnob({ tiers, disabled, className, classNames, }: ConcentricKnobProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=ConcentricKnob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcentricKnob.d.ts","sourceRoot":"","sources":["../../src/components/ConcentricKnob.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5D,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAChD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC9B,KAAK,EACL,QAAgB,EAChB,SAAS,EACT,UAAU,GACV,EAAE,mBAAmB,+BA8BrB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "../utils.js";
|
|
3
|
+
import { KnobControl } from "./KnobControl.js";
|
|
4
|
+
/**
|
|
5
|
+
* A stacked concentric potentiometer with N independent dials sharing one
|
|
6
|
+
* shaft. Each dial is a full {@link KnobControl} wired to its own tier control,
|
|
7
|
+
* so every section emits and snaps independently. Tiers are ordered bottom to
|
|
8
|
+
* top; rendered bottom (largest) first.
|
|
9
|
+
*/
|
|
10
|
+
export function ConcentricKnob({ tiers, disabled = false, className, classNames, }) {
|
|
11
|
+
return (_jsx("div", { className: cx("vdsp-control-ui-concentric", className, classNames?.control), "data-vdsp-concentric": true, "data-vdsp-concentric-tiers": tiers.length, children: tiers.map((tier, index) => (_jsx(KnobControl, { control: tier.control, position: tier.position, disabled: disabled, label: tier.label ?? tier.control.name, className: cx("vdsp-control-ui-concentric__tier", index === 0
|
|
12
|
+
? "vdsp-control-ui-concentric__base"
|
|
13
|
+
: "vdsp-control-ui-concentric__stacked"), classNames: classNames, onPositionChange: tier.onPositionChange }, tier.control.id))) }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ConcentricKnob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcentricKnob.js","sourceRoot":"","sources":["../../src/components/ConcentricKnob.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgB5C;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAC9B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,UAAU,GACW;IACrB,OAAO,CACN,cACC,SAAS,EAAE,EAAE,CACZ,4BAA4B,EAC5B,SAAS,EACT,UAAU,EAAE,OAAO,CACnB,0BACqB,IAAI,gCACE,KAAK,CAAC,MAAM,YAEvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,KAAC,WAAW,IAEX,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EACtC,SAAS,EAAE,EAAE,CACZ,kCAAkC,EAClC,KAAK,KAAK,CAAC;gBACV,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,qCAAqC,CACxC,EACD,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAZlC,IAAI,CAAC,OAAO,CAAC,EAAE,CAanB,CACF,CAAC,GACG,CACN,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ReactNode } from
|
|
2
|
-
import type { ControlFrameClassNames } from
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
3
|
export type ControlFrameProps = Readonly<{
|
|
4
4
|
label?: ReactNode;
|
|
5
5
|
readout?: ReactNode;
|
|
@@ -8,5 +8,5 @@ export type ControlFrameProps = Readonly<{
|
|
|
8
8
|
classNames?: ControlFrameClassNames | undefined;
|
|
9
9
|
children?: ReactNode;
|
|
10
10
|
}>;
|
|
11
|
-
export declare function ControlFrame({ label, readout, disabled, className, classNames, children }: ControlFrameProps): import("react").JSX.Element;
|
|
11
|
+
export declare function ControlFrame({ label, readout, disabled, className, classNames, children, }: ControlFrameProps): import("react").JSX.Element;
|
|
12
12
|
//# sourceMappingURL=ControlFrame.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlFrame.d.ts","sourceRoot":"","sources":["../../src/components/ControlFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"ControlFrame.d.ts","sourceRoot":"","sources":["../../src/components/ControlFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAEH,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,UAAU,EACV,QAAQ,GACR,EAAE,iBAAiB,+BAuBnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { cx } from
|
|
3
|
-
export function ControlFrame({ label, readout, disabled = false, className, classNames, children }) {
|
|
4
|
-
return (_jsxs("div", { className: cx(
|
|
2
|
+
import { cx } from "../utils.js";
|
|
3
|
+
export function ControlFrame({ label, readout, disabled = false, className, classNames, children, }) {
|
|
4
|
+
return (_jsxs("div", { className: cx("vdsp-control-ui-frame", disabled && "is-disabled", classNames?.frame, className), children: [label === undefined ? null : (_jsx("span", { className: cx("vdsp-control-ui-label", classNames?.label), children: label })), children, readout === undefined ? null : (_jsx("span", { className: cx("vdsp-control-ui-readout", classNames?.readout), children: readout }))] }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=ControlFrame.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlFrame.js","sourceRoot":"","sources":["../../src/components/ControlFrame.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAW9B,MAAM,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"ControlFrame.js","sourceRoot":"","sources":["../../src/components/ControlFrame.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAW9B,MAAM,UAAU,YAAY,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,UAAU,EACV,QAAQ,GACW;IACnB,OAAO,CACN,eACC,SAAS,EAAE,EAAE,CACZ,uBAAuB,EACvB,QAAQ,IAAI,aAAa,EACzB,UAAU,EAAE,KAAK,EACjB,SAAS,CACT,aAEA,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,eAAM,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,CAAC,YAC7D,KAAK,GACA,CACP,EACA,QAAQ,EACR,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,eAAM,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,UAAU,EAAE,OAAO,CAAC,YACjE,OAAO,GACF,CACP,IACI,CACN,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Knob } from
|
|
2
|
-
import type { ControlFrameClassNames } from
|
|
1
|
+
import type { Knob } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
3
|
export type DetentedRotarySelectProps = Readonly<{
|
|
4
4
|
control: Knob;
|
|
5
5
|
position: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetentedRotarySelect.d.ts","sourceRoot":"","sources":["../../src/components/DetentedRotarySelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"DetentedRotarySelect.d.ts","sourceRoot":"","sources":["../../src/components/DetentedRotarySelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAChD,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5D,CAAC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,EACpC,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,KAAoB,EACpB,SAAS,EACT,UAAU,EACV,gBAAgB,GAChB,EAAE,yBAAyB,+BAoC3B"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { nearestKnobStep } from
|
|
3
|
-
import { cx } from
|
|
4
|
-
import { ControlFrame } from
|
|
2
|
+
import { nearestKnobStep } from "@vessel-dsp/core";
|
|
3
|
+
import { cx } from "../utils.js";
|
|
4
|
+
import { ControlFrame } from "./ControlFrame.js";
|
|
5
5
|
export function DetentedRotarySelect({ control, position, disabled = false, label = control.name, className, classNames, onPositionChange, }) {
|
|
6
6
|
const steps = control.steps ?? [
|
|
7
|
-
{ index: 0, position: 0, label:
|
|
8
|
-
{ index: 1, position: 1, label:
|
|
7
|
+
{ index: 0, position: 0, label: "Position 1" },
|
|
8
|
+
{ index: 1, position: 1, label: "Position 2" },
|
|
9
9
|
];
|
|
10
10
|
const selected = nearestKnobStep(steps, position)?.position ?? position;
|
|
11
|
-
return (_jsx(ControlFrame, { label: label, disabled: disabled, className: className, classNames: classNames, children: _jsx("select", { className: cx(
|
|
11
|
+
return (_jsx(ControlFrame, { label: label, disabled: disabled, className: className, classNames: classNames, children: _jsx("select", { className: cx("vdsp-control-ui-control", "vdsp-control-ui-select", classNames?.control), value: String(selected), "aria-label": control.name, disabled: disabled, "data-vdsp-control-id": control.id, onChange: (event) => onPositionChange?.(Number(event.currentTarget.value)), children: steps.map((step) => (_jsx("option", { value: String(step.position), children: step.label ?? `Position ${step.index + 1}` }, step.index))) }) }));
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=DetentedRotarySelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetentedRotarySelect.js","sourceRoot":"","sources":["../../src/components/DetentedRotarySelect.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9C,MAAM,UAAU,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"DetentedRotarySelect.js","sourceRoot":"","sources":["../../src/components/DetentedRotarySelect.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9C,MAAM,UAAU,oBAAoB,CAAC,EACpC,OAAO,EACP,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,OAAO,CAAC,IAAI,EACpB,SAAS,EACT,UAAU,EACV,gBAAgB,GACW;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI;QAC9B,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE;QAC9C,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE;KAC9C,CAAC;IACF,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,IAAI,QAAQ,CAAC;IAExE,OAAO,CACN,KAAC,YAAY,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,YAEtB,iBACC,SAAS,EAAE,EAAE,CACZ,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EAAE,OAAO,CACnB,EACD,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,gBACX,OAAO,CAAC,IAAI,EACxB,QAAQ,EAAE,QAAQ,0BACI,OAAO,CAAC,EAAE,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,gBAAgB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,YAGrD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,iBAAyB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YACnD,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAD/B,IAAI,CAAC,KAAK,CAEd,CACT,CAAC,GACM,GACK,CACf,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SwitchControl } from
|
|
2
|
-
import type { ControlFrameClassNames } from
|
|
1
|
+
import type { SwitchControl } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
3
|
export type FootswitchButtonProps = Readonly<{
|
|
4
4
|
control?: SwitchControl;
|
|
5
5
|
label?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FootswitchButton.d.ts","sourceRoot":"","sources":["../../src/components/FootswitchButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"FootswitchButton.d.ts","sourceRoot":"","sources":["../../src/components/FootswitchButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,KAAqC,EACrC,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,OAAO,EACP,SAAS,GACT,EAAE,qBAAqB,+BA+DvB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from
|
|
3
|
-
import { cx } from
|
|
4
|
-
import { ControlFrame } from
|
|
5
|
-
export function FootswitchButton({ control, label = control?.name ??
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { cx } from "../utils.js";
|
|
4
|
+
import { ControlFrame } from "./ControlFrame.js";
|
|
5
|
+
export function FootswitchButton({ control, label = control?.name ?? "Footswitch", pressed, disabled = false, className, classNames, onPressedChange, onPress, onRelease, }) {
|
|
6
6
|
const [isPressing, setIsPressing] = useState(false);
|
|
7
7
|
function handleClick() {
|
|
8
8
|
if (!disabled) {
|
|
@@ -21,13 +21,13 @@ export function FootswitchButton({ control, label = control?.name ?? 'Footswitch
|
|
|
21
21
|
onRelease?.();
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
return (_jsx(ControlFrame, { label: label, disabled: disabled, className: className, classNames: classNames, children: _jsx("button", { type: "button", className: cx(
|
|
25
|
-
if (event.key ===
|
|
24
|
+
return (_jsx(ControlFrame, { label: label, disabled: disabled, className: className, classNames: classNames, children: _jsx("button", { type: "button", className: cx("vdsp-control-ui-control", "vdsp-control-ui-footswitch", isPressing && "is-pressing", classNames?.control), "aria-label": label, "aria-pressed": pressed, disabled: disabled, "data-vdsp-control-id": control?.id, onClick: handleClick, onPointerDown: handlePress, onPointerUp: handleRelease, onPointerCancel: handleRelease, onKeyDown: (event) => {
|
|
25
|
+
if (event.key === " " || event.key === "Enter") {
|
|
26
26
|
event.preventDefault();
|
|
27
27
|
handlePress();
|
|
28
28
|
}
|
|
29
29
|
}, onKeyUp: (event) => {
|
|
30
|
-
if (event.key ===
|
|
30
|
+
if (event.key === " " || event.key === "Enter") {
|
|
31
31
|
event.preventDefault();
|
|
32
32
|
handleRelease();
|
|
33
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FootswitchButton.js","sourceRoot":"","sources":["../../src/components/FootswitchButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAc9C,MAAM,UAAU,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"FootswitchButton.js","sourceRoot":"","sources":["../../src/components/FootswitchButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAc9C,MAAM,UAAU,gBAAgB,CAAC,EAChC,OAAO,EACP,KAAK,GAAG,OAAO,EAAE,IAAI,IAAI,YAAY,EACrC,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,OAAO,EACP,SAAS,GACc;IACvB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,WAAW;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAED,SAAS,WAAW;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,EAAE,EAAE,CAAC;QACb,CAAC;IACF,CAAC;IAED,SAAS,aAAa;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAED,OAAO,CACN,KAAC,YAAY,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,YAEtB,iBACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACZ,yBAAyB,EACzB,4BAA4B,EAC5B,UAAU,IAAI,aAAa,EAC3B,UAAU,EAAE,OAAO,CACnB,gBACW,KAAK,kBACH,OAAO,EACrB,QAAQ,EAAE,QAAQ,0BACI,OAAO,EAAE,EAAE,EACjC,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,WAAW,EAC1B,WAAW,EAAE,aAAa,EAC1B,eAAe,EAAE,aAAa,EAC9B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpB,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAChD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,WAAW,EAAE,CAAC;gBACf,CAAC;YACF,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAChD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,aAAa,EAAE,CAAC;gBACjB,CAAC;YACF,CAAC,YAED,eAAM,SAAS,EAAC,iCAAiC,GAAG,GAC5C,GACK,CACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JackPort } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
|
+
export type JackIndicatorProps = Readonly<{
|
|
4
|
+
control: JackPort;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
label?: string;
|
|
7
|
+
className?: string | undefined;
|
|
8
|
+
classNames?: ControlFrameClassNames | undefined;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Read-only panel port. Jacks carry no settable value; they appear on the
|
|
12
|
+
* control surface for orientation only and never emit control messages.
|
|
13
|
+
*/
|
|
14
|
+
export declare function JackIndicator({ control, disabled, label, className, classNames, }: JackIndicatorProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=JackIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JackIndicator.d.ts","sourceRoot":"","sources":["../../src/components/JackIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAIvD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAChD,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,QAAgB,EAChB,KAAoB,EACpB,SAAS,EACT,UAAU,GACV,EAAE,kBAAkB,+BAqBpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from "../utils.js";
|
|
3
|
+
import { ControlFrame } from "./ControlFrame.js";
|
|
4
|
+
/**
|
|
5
|
+
* Read-only panel port. Jacks carry no settable value; they appear on the
|
|
6
|
+
* control surface for orientation only and never emit control messages.
|
|
7
|
+
*/
|
|
8
|
+
export function JackIndicator({ control, disabled = false, label = control.name, className, classNames, }) {
|
|
9
|
+
return (_jsx(ControlFrame, { label: label, readout: control.role, disabled: disabled, className: className, classNames: classNames, children: _jsx("span", { className: cx("vdsp-control-ui-control", "vdsp-control-ui-jack", classNames?.control), role: "img", "aria-label": `${control.name} ${control.role} jack`, "data-vdsp-control-id": control.id }) }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=JackIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JackIndicator.js","sourceRoot":"","sources":["../../src/components/JackIndicator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAC7B,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,OAAO,CAAC,IAAI,EACpB,SAAS,EACT,UAAU,GACU;IACpB,OAAO,CACN,KAAC,YAAY,IACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,EACrB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,YAEtB,eACC,SAAS,EAAE,EAAE,CACZ,yBAAyB,EACzB,sBAAsB,EACtB,UAAU,EAAE,OAAO,CACnB,EACD,IAAI,EAAC,KAAK,gBACE,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,OAAO,0BAC5B,OAAO,CAAC,EAAE,GAC/B,GACY,CACf,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Knob } from
|
|
2
|
-
import type { ControlFrameClassNames } from
|
|
1
|
+
import type { Knob } from "@vessel-dsp/core";
|
|
2
|
+
import type { ControlFrameClassNames } from "../types";
|
|
3
3
|
export type KnobControlProps = Readonly<{
|
|
4
4
|
control: Knob;
|
|
5
5
|
position: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnobControl.d.ts","sourceRoot":"","sources":["../../src/components/KnobControl.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAmBvD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"KnobControl.d.ts","sourceRoot":"","sources":["../../src/components/KnobControl.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAmBvD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACvC,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC5D,CAAC,CAAC;AAEH,wBAAgB,WAAW,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,KAAoB,EACpB,SAAS,EACT,UAAU,EACV,gBAAgB,GAChB,EAAE,gBAAgB,+BA+NlB"}
|