@gorilla-engine-sdk/ge-labeled-components 0.7.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.
@@ -0,0 +1,79 @@
1
+ import { LabeledComponentProps } from './LabeledComponent';
2
+ /**
3
+ * Props accepted by the useLabelValue hook.
4
+ * @see LabeledComponentProps
5
+ */
6
+ export type UseLabelValueProps = LabeledComponentProps;
7
+ /**
8
+ * Return value from the useLabelValue hook.
9
+ */
10
+ export type UseLabelValueReturnProps = {
11
+ /** Current text for the name/text label. */
12
+ labelText: string;
13
+ /** Whether the text label should be visible. */
14
+ labelVisible: boolean;
15
+ /** Current text for the value label. */
16
+ valueText: string;
17
+ /** Whether the value label should be visible. */
18
+ valueVisible: boolean;
19
+ /** Update the text label content. */
20
+ setLabelText(t: string): void;
21
+ /** Update the value label content. */
22
+ setValueText(t: string): void;
23
+ /** Call when mouse enters the control. */
24
+ onMouseEnter(): void;
25
+ /** Call when mouse exits the control. */
26
+ onMouseExit(): void;
27
+ /** Call when mouse button is pressed on the control. */
28
+ onMouseDown(): void;
29
+ /** Call when mouse button is released. */
30
+ onMouseUp(): void;
31
+ /** Call when the parameter value changes. */
32
+ onValueChange(): void;
33
+ };
34
+ /**
35
+ * Hook for managing label and value display state in labeled components.
36
+ *
37
+ * @remarks
38
+ * This hook handles:
39
+ * - Subscribing to instrument parameter changes
40
+ * - Managing label/value visibility based on interaction
41
+ * - Formatting values using custom ranges
42
+ * - Providing event handlers for mouse interaction
43
+ *
44
+ * Use this hook when building custom labeled components that need the same
45
+ * label/value behavior as the built-in components.
46
+ *
47
+ * @param props - Configuration including instrument, property binding, and visibility settings
48
+ * @returns Object containing label state, setters, and event handlers
49
+ *
50
+ * @example
51
+ * ```tsx
52
+ * function CustomLabeledControl(props: LabeledComponentProps) {
53
+ * const {
54
+ * labelText,
55
+ * labelVisible,
56
+ * valueText,
57
+ * valueVisible,
58
+ * onMouseEnter,
59
+ * onMouseExit,
60
+ * } = useLabelValue(props);
61
+ *
62
+ * return (
63
+ * <LabeledComponent
64
+ * {...props}
65
+ * labelText={labelText}
66
+ * labelVisible={labelVisible}
67
+ * valueText={valueText}
68
+ * valueVisible={valueVisible}
69
+ * >
70
+ * <MyCustomControl
71
+ * onMouseEnter={onMouseEnter}
72
+ * onMouseExit={onMouseExit}
73
+ * />
74
+ * </LabeledComponent>
75
+ * );
76
+ * }
77
+ * ```
78
+ */
79
+ export declare function useLabelValue(props: UseLabelValueProps): UseLabelValueReturnProps;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLabelValue = useLabelValue;
4
+ const react_1 = require("react");
5
+ const LabeledComponent_1 = require("./LabeledComponent");
6
+ /**
7
+ * Hook for managing label and value display state in labeled components.
8
+ *
9
+ * @remarks
10
+ * This hook handles:
11
+ * - Subscribing to instrument parameter changes
12
+ * - Managing label/value visibility based on interaction
13
+ * - Formatting values using custom ranges
14
+ * - Providing event handlers for mouse interaction
15
+ *
16
+ * Use this hook when building custom labeled components that need the same
17
+ * label/value behavior as the built-in components.
18
+ *
19
+ * @param props - Configuration including instrument, property binding, and visibility settings
20
+ * @returns Object containing label state, setters, and event handlers
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * function CustomLabeledControl(props: LabeledComponentProps) {
25
+ * const {
26
+ * labelText,
27
+ * labelVisible,
28
+ * valueText,
29
+ * valueVisible,
30
+ * onMouseEnter,
31
+ * onMouseExit,
32
+ * } = useLabelValue(props);
33
+ *
34
+ * return (
35
+ * <LabeledComponent
36
+ * {...props}
37
+ * labelText={labelText}
38
+ * labelVisible={labelVisible}
39
+ * valueText={valueText}
40
+ * valueVisible={valueVisible}
41
+ * >
42
+ * <MyCustomControl
43
+ * onMouseEnter={onMouseEnter}
44
+ * onMouseExit={onMouseExit}
45
+ * />
46
+ * </LabeledComponent>
47
+ * );
48
+ * }
49
+ * ```
50
+ */
51
+ function useLabelValue(props) {
52
+ const propsRef = (0, react_1.useRef)(props);
53
+ propsRef.current = props;
54
+ const [labelText, setLabelText] = (0, react_1.useState)('');
55
+ const [labelVisible, setLabelVisible] = (0, react_1.useState)(true);
56
+ const [valueText, setValueText] = (0, react_1.useState)('');
57
+ const [valueVisible, setValueVisible] = (0, react_1.useState)(props.hideValueLabel ? false : true);
58
+ (0, react_1.useEffect)(() => {
59
+ const property = (0, LabeledComponent_1.resolveInstrumentProperty)(props.instrument, props.instrumentProp);
60
+ const propertyKey = (0, LabeledComponent_1.getInstrumentPropertyKey)(props.instrumentProp);
61
+ if (!property)
62
+ return;
63
+ setLabelText(String(props.textLabel?.text || property.name));
64
+ setValueText(property.text);
65
+ if (!propertyKey || !props.instrument)
66
+ return;
67
+ const instrumentPropertyChangeHandler = () => {
68
+ const currentProperty = (0, LabeledComponent_1.resolveInstrumentProperty)(propsRef.current.instrument, propsRef.current.instrumentProp);
69
+ if (currentProperty)
70
+ setValueText(currentProperty.text);
71
+ };
72
+ props.instrument.on(propertyKey, instrumentPropertyChangeHandler);
73
+ return () => {
74
+ props.instrument.off(propertyKey, instrumentPropertyChangeHandler);
75
+ };
76
+ }, [props.instrument, props.instrumentProp, props.textLabel?.text]);
77
+ const toggleTextValueLabels = (0, react_1.useCallback)((showValue) => {
78
+ if (propsRef.current.hideTextValue)
79
+ setLabelVisible(!showValue);
80
+ if (propsRef.current.hideValueLabel)
81
+ setValueVisible(showValue);
82
+ }, []);
83
+ const onMouseEnter = (0, react_1.useCallback)(() => {
84
+ if (propsRef.current.toggleVisibilityOnHover) {
85
+ toggleTextValueLabels(true);
86
+ const property = (0, LabeledComponent_1.resolveInstrumentProperty)(propsRef.current.instrument, propsRef.current.instrumentProp);
87
+ if (property)
88
+ setValueText(property.text);
89
+ }
90
+ }, []);
91
+ const onMouseExit = (0, react_1.useCallback)(() => {
92
+ if (propsRef.current.toggleVisibilityOnHover) {
93
+ toggleTextValueLabels(false);
94
+ }
95
+ }, []);
96
+ const onMouseDown = (0, react_1.useCallback)(() => {
97
+ if (!propsRef.current.toggleVisibilityOnHover) {
98
+ toggleTextValueLabels(true);
99
+ const property = (0, LabeledComponent_1.resolveInstrumentProperty)(propsRef.current.instrument, propsRef.current.instrumentProp);
100
+ if (property)
101
+ setValueText(property.text);
102
+ }
103
+ }, []);
104
+ const onMouseUp = (0, react_1.useCallback)(() => {
105
+ if (!propsRef.current.toggleVisibilityOnHover) {
106
+ toggleTextValueLabels(false);
107
+ }
108
+ }, []);
109
+ const onValueChange = (0, react_1.useCallback)(() => {
110
+ const property = (0, LabeledComponent_1.resolveInstrumentProperty)(propsRef.current.instrument, propsRef.current.instrumentProp);
111
+ if (!property)
112
+ return;
113
+ if (propsRef.current.ranges)
114
+ setValueText(formatValueRange(propsRef.current.ranges, property.value));
115
+ else
116
+ setValueText(property.text);
117
+ }, []);
118
+ function formatValueRange(ranges, value) {
119
+ let isRange = false;
120
+ for (let range of ranges) {
121
+ if (range.from !== undefined &&
122
+ range.to !== undefined &&
123
+ value >= range.from &&
124
+ value <= range.to) {
125
+ isRange = true;
126
+ return formatText(range.text, value);
127
+ }
128
+ else if (range.from !== undefined && range.to === undefined && value >= range.from) {
129
+ isRange = true;
130
+ return formatText(range.text, value);
131
+ }
132
+ else if (range.from === undefined && range.to && value <= range.to) {
133
+ isRange = true;
134
+ return formatText(range.text, value);
135
+ }
136
+ }
137
+ }
138
+ function formatText(text, value) {
139
+ text = text.replace(/\$value(\((\d+)\))?/g, (match, _, decimalPlaces) => {
140
+ let number = value;
141
+ if (isNaN(number)) {
142
+ return 'Invalid number';
143
+ }
144
+ let formatted;
145
+ if (decimalPlaces !== undefined) {
146
+ formatted = number.toFixed(decimalPlaces);
147
+ }
148
+ else {
149
+ formatted = number.toFixed(0);
150
+ }
151
+ return formatted ?? number.toString();
152
+ });
153
+ return text.replace(/\$text_value(\((\d+)\))?/g, (match, _, decimalPlaces) => {
154
+ return ((0, LabeledComponent_1.resolveInstrumentProperty)(propsRef.current.instrument, propsRef.current.instrumentProp)
155
+ ?.text ?? '');
156
+ });
157
+ }
158
+ return {
159
+ labelText,
160
+ labelVisible,
161
+ valueText,
162
+ valueVisible,
163
+ setLabelText,
164
+ setValueText,
165
+ onMouseEnter,
166
+ onMouseExit,
167
+ onMouseDown,
168
+ onMouseUp,
169
+ onValueChange,
170
+ };
171
+ }
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTGFiZWxWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3VzZUxhYmVsVmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1RkEsc0NBK0lDO0FBdE9ELGlDQUFpRTtBQUNqRSx5REFLNEI7QUFvQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUF5QjtJQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFBLGNBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUV6QixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXRGLElBQUEsaUJBQVMsRUFBQyxHQUFHLEVBQUU7UUFDYixNQUFNLFFBQVEsR0FBRyxJQUFBLDRDQUF5QixFQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sV0FBVyxHQUFHLElBQUEsMkNBQXdCLEVBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUV0QixZQUFZLENBQUMsTUFB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
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @gorilla-engine-sdk/ge-labeled-components
3
+ *
4
+ * A library of labeled UI components for Gorilla Engine React audio plugins.
5
+ * Each component combines a control (knob, slider, toggle, etc.) with
6
+ * configurable text and value labels that can show/hide on interaction.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { LabeledComboBox, LabeledComboBoxProps } from './components/LabeledComboBox';
11
+ import { LabeledKnob, LabeledKnobProps } from './components/LabeledKnob';
12
+ import { LabeledMeterSlider, LabeledMeterSlidertProps } from './components/LabeledMeterSlider';
13
+ import { LabeledRTToggle, LabeledRTToggleProps } from './components/LabeledRTToggle';
14
+ import { LabeledSlider, LabeledSliderProps } from './components/LabeledSlider';
15
+ import { LabeledToggle, LabeleddToggleProps } from './components/LabeledToggle';
16
+ import { LabeledComponent, LabeledComponentContainerProps, LabeledComponentProps } from './core/LabeledComponent';
17
+ import { useLabelValue } from './core/useLabelValue';
18
+ export { useLabelValue, LabeledComponent, LabeledComponentContainerProps, LabeledComponentProps, LabeledComboBox, LabeledComboBoxProps, LabeledKnob, LabeledKnobProps, LabeledMeterSlider, LabeledMeterSlidertProps, LabeledSlider, LabeledSliderProps, LabeledToggle, LabeleddToggleProps, LabeledRTToggle, LabeledRTToggleProps, };
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * @gorilla-engine-sdk/ge-labeled-components
4
+ *
5
+ * A library of labeled UI components for Gorilla Engine React audio plugins.
6
+ * Each component combines a control (knob, slider, toggle, etc.) with
7
+ * configurable text and value labels that can show/hide on interaction.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LabeledRTToggle = exports.LabeledToggle = exports.LabeledSlider = exports.LabeledMeterSlider = exports.LabeledKnob = exports.LabeledComboBox = exports.LabeledComponent = exports.useLabelValue = void 0;
13
+ const LabeledComboBox_1 = require("./components/LabeledComboBox");
14
+ Object.defineProperty(exports, "LabeledComboBox", { enumerable: true, get: function () { return LabeledComboBox_1.LabeledComboBox; } });
15
+ const LabeledKnob_1 = require("./components/LabeledKnob");
16
+ Object.defineProperty(exports, "LabeledKnob", { enumerable: true, get: function () { return LabeledKnob_1.LabeledKnob; } });
17
+ const LabeledMeterSlider_1 = require("./components/LabeledMeterSlider");
18
+ Object.defineProperty(exports, "LabeledMeterSlider", { enumerable: true, get: function () { return LabeledMeterSlider_1.LabeledMeterSlider; } });
19
+ const LabeledRTToggle_1 = require("./components/LabeledRTToggle");
20
+ Object.defineProperty(exports, "LabeledRTToggle", { enumerable: true, get: function () { return LabeledRTToggle_1.LabeledRTToggle; } });
21
+ const LabeledSlider_1 = require("./components/LabeledSlider");
22
+ Object.defineProperty(exports, "LabeledSlider", { enumerable: true, get: function () { return LabeledSlider_1.LabeledSlider; } });
23
+ const LabeledToggle_1 = require("./components/LabeledToggle");
24
+ Object.defineProperty(exports, "LabeledToggle", { enumerable: true, get: function () { return LabeledToggle_1.LabeledToggle; } });
25
+ const LabeledComponent_1 = require("./core/LabeledComponent");
26
+ Object.defineProperty(exports, "LabeledComponent", { enumerable: true, get: function () { return LabeledComponent_1.LabeledComponent; } });
27
+ const useLabelValue_1 = require("./core/useLabelValue");
28
+ Object.defineProperty(exports, "useLabelValue", { enumerable: true, get: function () { return useLabelValue_1.useLabelValue; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFFSCxrRUFBcUY7QUFrQm5GLGdHQWxCTyxpQ0FBZSxPQWtCUDtBQWpCakIsMERBQXlFO0FBbUJ2RSw0RkFuQk8seUJBQVcsT0FtQlA7QUFsQmIsd0VBQStGO0FBb0I3RixtR0FwQk8sdUNBQWtCLE9Bb0JQO0FBbkJwQixrRUFBcUY7QUF5Qm5GLGdHQXpCTyxpQ0FBZSxPQXlCUDtBQXhCakIsOERBQStFO0FBb0I3RSw4RkFwQk8sNkJBQWEsT0FvQlA7QUFuQmYsOERBQWdGO0FBcUI5RSw4RkFyQk8sNkJBQWEsT0FxQlA7QUFwQmYsOERBSWlDO0FBSy9CLGlHQVJBLG1DQUFnQixPQVFBO0FBSmxCLHdEQUFxRDtBQUduRCw4RkFITyw2QkFBYSxPQUdQIn0=
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@gorilla-engine-sdk/ge-labeled-components",
3
+ "version": "0.7.0",
4
+ "description": "This package provides components that can be used to create labeled UI elements in Gorilla Engine plugins.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "LICENSE.md"
11
+ ],
12
+ "scripts": {
13
+ "test": "echo \"No tests specified for ge-labeled-components\"",
14
+ "prepack": "npm run build",
15
+ "start": "tsc -w",
16
+ "build": "npx tsc --declaration",
17
+ "ci:publish": "node ../../scripts/ci-publish.js"
18
+ },
19
+ "author": "UJAM Inc.",
20
+ "license": "SEE LICENSE IN LICENSE.md",
21
+ "peerDependencies": {
22
+ "@gorilla-engine-sdk/gorilla-engine-react": "^1.6.1",
23
+ "react": "^19.0.0"
24
+ },
25
+ "devDependencies": {
26
+ "@gorilla-engine-sdk/gorilla-engine-react": "^1.6.1",
27
+ "@types/gorilla-engine": "^1.1.11",
28
+ "@types/node": "^18.11.9",
29
+ "@types/react": "^19.2.16",
30
+ "@types/react-reconciler": "^0.33.0",
31
+ "react": "^19.0.0",
32
+ "typescript": "^6.0.3"
33
+ },
34
+ "homepage": "https://www.gorilla-engine.com/",
35
+ "keywords": [
36
+ "gorilla-engine",
37
+ "UJAM"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public",
41
+ "registry": "https://registry.npmjs.org/"
42
+ }
43
+ }