@digitalmeadow/control-panel 1.0.19 → 1.0.20

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 CHANGED
@@ -1,100 +1,69 @@
1
1
  # @digitalmeadow/control-panel
2
2
 
3
- GUI control panel for creative coding.
3
+ Minimal GUI control panel for creative coding.
4
4
 
5
5
  ## Installation
6
+
6
7
  ```bash
7
8
  npm install @digitalmeadow/control-panel
8
9
  ```
9
10
 
10
11
  ## Features
11
12
 
12
- - Dependency free
13
+ - Dependency-free
13
14
  - Minimal API
14
15
  - Audio and MIDI input signals
15
16
 
16
- ## Controllers
17
-
18
- - Number
19
- - Range
20
- - Select
21
- - Boolean
22
- - Button
23
- - Radio
24
- - Color
25
- - Gradient
26
- - Array
27
-
28
17
  ## Usage
29
18
 
30
19
  ```typescript
31
20
  import { ControlPanel } from "@digitalmeadow/control-panel";
32
21
 
33
- const state = { number: 50, color: "#3498db", enabled: true };
34
- const controlPanel = new ControlPanel();
22
+ const state = {
23
+ number: 50,
24
+ range: 0.5,
25
+ select: "option-a",
26
+ enabled: true,
27
+ color: "#3498db",
28
+ gradient: [
29
+ { color: "#ff0000", position: 0 },
30
+ { color: "#0000ff", position: 1 },
31
+ ],
32
+ array: ["item-1", "item-2"],
33
+ radio: "option-a",
34
+ };
35
35
 
36
- controlPanel.addRange(state, "number", { min: 0, max: 100, step: 1 });
37
- controlPanel.addColor(state, "color");
38
- controlPanel.addBoolean(state, "enabled");
39
- controlPanel.addButton("Reset", () => controlPanel.reset());
36
+ const panel = new ControlPanel();
40
37
 
41
- controlPanel.saveDefaultPreset();
42
- ```
38
+ panel
39
+ .addNumber(state, "number", { min: 0, max: 100, step: 1, label: "Number" })
40
+ .onChange((value) => console.log("number changed:", value));
43
41
 
44
- ## Folders
42
+ panel.addRange(state, "range", { min: 0, max: 1, step: 0.01 });
45
43
 
46
- ```typescript
47
- const folder = controlPanel.addFolder("Settings");
48
- folder.addNumber(state, "value", { min: 0, max: 100 });
44
+ panel.addSelect(state, "select", {
45
+ label: "Dropdown",
46
+ options: ["option-a", "option-b", "option-c"],
47
+ });
49
48
 
50
- const nested = folder.addFolder("Advanced");
51
- nested.addNumber(state, "other", { min: 0, max: 100 });
52
- ```
49
+ panel.addBoolean(state, "enabled", { label: "Enabled" });
53
50
 
54
- ## Development
51
+ panel.addRadio(state, "radio", {
52
+ label: "Radio",
53
+ options: ["option-a", "option-b"],
54
+ });
55
55
 
56
- ```bash
57
- pnpm dev
58
- pnpm build
59
- ```
56
+ panel.addColor(state, "color", { label: "Color" });
60
57
 
61
- ## API
58
+ panel.addGradient(state, "gradient", { label: "Gradient" });
62
59
 
63
- ```typescript
64
- controlPanel.addNumber(object, property, options?)
65
- controlPanel.addRange(object, property, options?)
66
- controlPanel.addSelect(object, property, options?)
67
- controlPanel.addBoolean(object, property, options?)
68
- controlPanel.addButton(label, fn, options?)
69
- controlPanel.addRadio(object, property, options?)
70
- controlPanel.addColor(object, property, options?)
71
- controlPanel.addGradient(object, property, options?)
72
- controlPanel.addArray(object, property, options?)
73
- controlPanel.addFolder(title)
74
-
75
- controlPanel.save()
76
- controlPanel.load(state)
77
- controlPanel.reset()
78
- controlPanel.saveDefaultPreset()
79
- ```
80
-
81
- ## Options
82
-
83
- All controllers:
84
- - `label?: string`
85
- - `disabled?: boolean`
86
- - `id?: string`
60
+ panel.addArray(state, "array", {
61
+ label: "Array",
62
+ itemType: "string",
63
+ });
87
64
 
88
- Number:
89
- - `min?: number`
90
- - `max?: number`
91
- - `step?: number`
65
+ panel.addButton("Reset", () => panel.reset());
92
66
 
93
- Select/Radio:
94
- - `options?: T[]`
95
-
96
- Gradient:
97
- - `stops?: ColorStop[]`
98
-
99
- Array:
100
- - `itemType?: "color" | "number" | "string"`
67
+ const folder = panel.addFolder("Settings");
68
+ folder.addNumber(state, "number", { min: 0, max: 100 });
69
+ ```
@@ -8,7 +8,7 @@ import { RadioController, type RadioControllerOptions } from "./controllers/Radi
8
8
  import { ColorController, type ColorControllerOptions } from "./controllers/ColorController";
9
9
  import { GradientController, type GradientControllerOptions } from "./controllers/GradientController";
10
10
  import { ArrayController, type ArrayControllerOptions } from "./controllers/ArrayController";
11
- import { Stats } from "./stats";
11
+ import { Stats } from "./Stats";
12
12
  export interface ControlPanelOptions {
13
13
  title?: string;
14
14
  presetsPrefix?: string;
@@ -8,4 +8,4 @@ export declare class Stats {
8
8
  render: () => void;
9
9
  destroy(): void;
10
10
  }
11
- //# sourceMappingURL=stats.d.ts.map
11
+ //# sourceMappingURL=Stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../src/Stats.ts"],"names":[],"mappings":"AAEA,qBAAa,KAAK;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,SAAK;IACX,eAAe,SAAQ;IACvB,QAAQ,SAAqB;IAC7B,KAAK,EAAE,MAAM,CAAC;;IAOd,MAAM,aAoBJ;IAEF,OAAO;CAGR"}