@digitalmeadow/control-panel 1.0.18 → 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/dist/index.js CHANGED
@@ -1,4 +1,20 @@
1
- const W = `
1
+ const Y = new URL("data:font/woff2;base64,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", import.meta.url).href, Q = new URL("data:font/woff2;base64,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", import.meta.url).href, Z = `
2
+ @font-face {
3
+ font-family: "IosevkaTermNF";
4
+ src: url("${Y}") format("woff2");
5
+ font-weight: 400;
6
+ font-style: normal;
7
+ font-display: swap;
8
+ }
9
+
10
+ @font-face {
11
+ font-family: "IosevkaTermNF";
12
+ src: url("${Q}") format("woff2");
13
+ font-weight: 600;
14
+ font-style: normal;
15
+ font-display: swap;
16
+ }
17
+
2
18
  .cp-root {
3
19
  --cp-scale: 1;
4
20
 
@@ -148,6 +164,19 @@ const W = `
148
164
  border-radius: var(--cp-border-radius);
149
165
  font-family: inherit;
150
166
  font-size: inherit;
167
+ appearance: textfield;
168
+ -moz-appearance: textfield;
169
+ }
170
+
171
+ .cp-input-number::-webkit-outer-spin-button,
172
+ .cp-input-number::-webkit-inner-spin-button {
173
+ -webkit-appearance: none;
174
+ margin: 0;
175
+ }
176
+
177
+ .cp-input-number::-moz-number-spin-up,
178
+ .cp-input-number::-moz-number-spin-down {
179
+ display: none;
151
180
  }
152
181
 
153
182
  .cp-input-number:focus {
@@ -266,8 +295,11 @@ const W = `
266
295
  }
267
296
  .cp-input-range::-moz-range-thumb {
268
297
  width: calc(4px * var(--cp-scale));
269
- height: calc(16px * var(--cp-scale));
298
+ height: calc(8px * var(--cp-scale));
270
299
  background: #fff;
300
+ border: none;
301
+ border-radius: var(--cp-border-radius);
302
+ appearance: none;
271
303
  cursor: grab;
272
304
  }
273
305
 
@@ -362,16 +394,23 @@ const W = `
362
394
  .cp-input-color {
363
395
  width: var(--cp-swatch-size);
364
396
  height: var(--cp-swatch-size);
365
- border: var(--cp-border-width) solid var(--cp-color-1);
397
+ border: var(--cp-border-width) solid #BBB;
366
398
  border-radius: 50%;
399
+ appearance: none;
367
400
  -webkit-appearance: none;
401
+ background: none;
402
+ padding: 0;
368
403
  }
369
404
  .cp-input-color::-webkit-color-swatch-wrapper {
370
405
  padding: 0;
371
406
  }
372
407
  .cp-input-color::-webkit-color-swatch {
373
- border: none;
374
- border-radius: var(--cp-border-radius);
408
+ border: 1px solid var(--cp-color-1);
409
+ border-radius: 50%;
410
+ }
411
+ .cp-input-color::-moz-color-swatch {
412
+ border: 1px solid var(--cp-color-1);
413
+ border-radius: 50%;
375
414
  }
376
415
 
377
416
  .cp-color-swatch {
@@ -386,13 +425,13 @@ const W = `
386
425
  gap: var(--cp-space-2);
387
426
  }
388
427
  `;
389
- let B = !1;
390
- function _() {
391
- if (B) return;
428
+ let P = !1;
429
+ function K() {
430
+ if (P) return;
392
431
  const n = document.createElement("style");
393
- n.id = "control-panel-styles", n.textContent = W, document.head.appendChild(n), B = !0;
432
+ n.id = "control-panel-styles", n.textContent = Z, document.head.appendChild(n), P = !0;
394
433
  }
395
- function o(n, t = {}, e = []) {
434
+ function r(n, t = {}, e = []) {
396
435
  const s = document.createElement(n);
397
436
  for (const [i, a] of Object.entries(t))
398
437
  i === "className" ? s.className = String(a) : i === "style" && typeof a == "object" ? Object.assign(s.style, a) : i === "open" && typeof a == "boolean" ? a ? s.setAttribute("open", "") : s.removeAttribute("open") : typeof a != "object" && s.setAttribute(i, String(a));
@@ -400,8 +439,8 @@ function o(n, t = {}, e = []) {
400
439
  typeof i == "string" ? s.appendChild(document.createTextNode(i)) : s.appendChild(i);
401
440
  return s;
402
441
  }
403
- function j(n) {
404
- const t = o(
442
+ function X(n) {
443
+ const t = r(
405
444
  "button",
406
445
  {
407
446
  className: "cp-button cp-button-delete"
@@ -410,13 +449,13 @@ function j(n) {
410
449
  );
411
450
  return t.addEventListener("click", n), t;
412
451
  }
413
- function J(n) {
452
+ function U(n) {
414
453
  return n.replace(/([A-Z])/g, " $1").replace(/^./, (t) => t.toUpperCase()).trim();
415
454
  }
416
- function q(n, t, e) {
455
+ function R(n, t, e) {
417
456
  return Math.min(Math.max(n, t), e);
418
457
  }
419
- function Y(n, t, e) {
458
+ function H(n, t, e) {
420
459
  if (t.length !== e.length)
421
460
  throw new Error("Input and output ranges must have the same length");
422
461
  if (t.length < 2)
@@ -428,10 +467,10 @@ function Y(n, t, e) {
428
467
  return e[e.length - 1];
429
468
  if (s === 0 && n < t[0])
430
469
  return e[0];
431
- const i = t[s], a = t[s + 1], r = e[s], l = e[s + 1];
432
- return (n - i) / (a - i) * (l - r) + r;
470
+ const i = t[s], a = t[s + 1], o = e[s], l = e[s + 1];
471
+ return (n - i) / (a - i) * (l - o) + o;
433
472
  }
434
- class X {
473
+ class G {
435
474
  constructor() {
436
475
  this.source = null, this.stream = null, this.fftSize = 2048, this.smoothingTimeConstant = 0.82, this.spectrumBoost = 3, this.levels = {
437
476
  volume: 0,
@@ -471,16 +510,16 @@ class X {
471
510
  if (this.analyser.getByteFrequencyData(this.dataArray), this.analyser.getByteTimeDomainData(this.waveformArray), this.spectrumBoost !== 1) {
472
511
  const p = this.dataArray.length;
473
512
  for (let h = 0; h < p; h++) {
474
- const y = 1 + h / p * (this.spectrumBoost - 1);
475
- this.dataArray[h] = Math.min(255, this.dataArray[h] * y);
513
+ const b = 1 + h / p * (this.spectrumBoost - 1);
514
+ this.dataArray[h] = Math.min(255, this.dataArray[h] * b);
476
515
  }
477
516
  }
478
- const t = [2, 10], e = [10, 150], s = [150, 600], i = this.getAverage(t[0], t[1]), a = this.getAverage(e[0], e[1]), r = this.getAverage(s[0], s[1]), l = this.getAverage(0, s[1]);
479
- this.processLevel("bass", i), this.processLevel("mids", a), this.processLevel("highs", r), this.processLevel("volume", l);
517
+ const t = [2, 10], e = [10, 150], s = [150, 600], i = this.getAverage(t[0], t[1]), a = this.getAverage(e[0], e[1]), o = this.getAverage(s[0], s[1]), l = this.getAverage(0, s[1]);
518
+ this.processLevel("bass", i), this.processLevel("mids", a), this.processLevel("highs", o), this.processLevel("volume", l);
480
519
  }
481
520
  processLevel(t, e) {
482
- this.peaks[t] -= 5e-4, this.peaks[t] = q(this.peaks[t], 0.1, 1), e > this.peaks[t] && (this.peaks[t] = e), this.levels[t] = q(
483
- Y(e, [0, this.peaks[t]], [0, 1]),
521
+ this.peaks[t] -= 5e-4, this.peaks[t] = R(this.peaks[t], 0.1, 1), e > this.peaks[t] && (this.peaks[t] = e), this.levels[t] = R(
522
+ H(e, [0, this.peaks[t]], [0, 1]),
484
523
  0,
485
524
  1
486
525
  );
@@ -497,8 +536,8 @@ class X {
497
536
  return () => this.levels[t];
498
537
  }
499
538
  }
500
- const k = new X();
501
- class G {
539
+ const q = new G();
540
+ class $ {
502
541
  constructor() {
503
542
  this.midiAccess = null, this.values = /* @__PURE__ */ new Map(), this.isListening = !1, this.resolveListen = null, this.listeningCallback = null, this.init();
504
543
  }
@@ -521,11 +560,11 @@ class G {
521
560
  handleMessage(t) {
522
561
  const e = t.data, [s] = e;
523
562
  if ((s & 240) >= 240) return;
524
- const a = this.getIdFromMessage(t), r = this.normalizeValue(e);
525
- this.values.set(a, r), this.isListening && this.resolveListen && r > 0 && (this.resolveListen(a), this.isListening = !1, this.resolveListen = null, this.listeningCallback && this.listeningCallback());
563
+ const a = this.getIdFromMessage(t), o = this.normalizeValue(e);
564
+ this.values.set(a, o), this.isListening && this.resolveListen && o > 0 && (this.resolveListen(a), this.isListening = !1, this.resolveListen = null, this.listeningCallback && this.listeningCallback());
526
565
  }
527
566
  getIdFromMessage(t) {
528
- const e = t.data, [s, i] = e, a = s & 240, r = t.currentTarget.name || "unknown", l = a === 144 || a === 128 ? "note" : "ctrl", p = r.replace(/[^a-zA-Z0-9]/g, "");
567
+ const e = t.data, [s, i] = e, a = s & 240, o = t.currentTarget.name || "unknown", l = a === 144 || a === 128 ? "note" : "ctrl", p = o.replace(/[^a-zA-Z0-9]/g, "");
529
568
  return `${i}_${l}_${p}`;
530
569
  }
531
570
  normalizeValue(t) {
@@ -544,8 +583,8 @@ class G {
544
583
  return () => this.values.get(t) ?? 0;
545
584
  }
546
585
  }
547
- const Z = new G();
548
- class K {
586
+ const _ = new $();
587
+ class tt {
549
588
  constructor() {
550
589
  this.configs = /* @__PURE__ */ new Map(), this.lastRandomUpdateTime = 0, this.currentRandomValue = 0, this.startTime = performance.now(), this.configs.set("constant", {
551
590
  frequency: 0.1,
@@ -600,20 +639,20 @@ class K {
600
639
  return this.normalizeOutput(i, e);
601
640
  }
602
641
  sine(t) {
603
- const e = t ? { ...this.configs.get("sine"), ...t } : this.configs.get("sine"), s = this.getTime(), i = e.phase * Math.PI * 2, r = (Math.sin(s * e.frequency * Math.PI * 2 + i) + 1) / 2;
604
- return this.normalizeOutput(r, e);
642
+ const e = t ? { ...this.configs.get("sine"), ...t } : this.configs.get("sine"), s = this.getTime(), i = e.phase * Math.PI * 2, o = (Math.sin(s * e.frequency * Math.PI * 2 + i) + 1) / 2;
643
+ return this.normalizeOutput(o, e);
605
644
  }
606
645
  sawtooth(t) {
607
646
  const e = t ? { ...this.configs.get("sawtooth"), ...t } : this.configs.get("sawtooth"), s = this.getTime(), i = e.phase, a = (s * e.frequency + i) % 1 + i % 1;
608
647
  return this.normalizeOutput(a % 1, e);
609
648
  }
610
649
  triangle(t) {
611
- const e = t ? { ...this.configs.get("triangle"), ...t } : this.configs.get("triangle"), s = this.getTime(), i = e.phase, a = (s * e.frequency + i) % 1, r = a < 0.5 ? a * 2 : 2 - a * 2;
612
- return this.normalizeOutput(r, e);
650
+ const e = t ? { ...this.configs.get("triangle"), ...t } : this.configs.get("triangle"), s = this.getTime(), i = e.phase, a = (s * e.frequency + i) % 1, o = a < 0.5 ? a * 2 : 2 - a * 2;
651
+ return this.normalizeOutput(o, e);
613
652
  }
614
653
  square(t) {
615
- const e = t ? { ...this.configs.get("square"), ...t } : this.configs.get("square"), s = this.getTime(), i = e.phase, r = (s * e.frequency + i) % 1 < 0.5 ? 0 : 1;
616
- return this.normalizeOutput(r, e);
654
+ const e = t ? { ...this.configs.get("square"), ...t } : this.configs.get("square"), s = this.getTime(), i = e.phase, o = (s * e.frequency + i) % 1 < 0.5 ? 0 : 1;
655
+ return this.normalizeOutput(o, e);
617
656
  }
618
657
  random(t) {
619
658
  const e = t ? { ...this.configs.get("random"), ...t } : this.configs.get("random"), s = performance.now(), i = 1e3 / e.frequency;
@@ -639,10 +678,10 @@ class K {
639
678
  this.startTime = performance.now(), this.lastRandomUpdateTime = 0, this.currentRandomValue = 0;
640
679
  }
641
680
  }
642
- const Q = new K(), A = class A {
681
+ const et = new tt(), F = class F {
643
682
  constructor(t, e, s = {}) {
644
- this.changeFns = /* @__PURE__ */ new Set(), this.object = t, this.property = e, this.key = s.id ?? e, this.initialValue = this.object[this.property], this.domElement = o("div", { className: "cp-controller" });
645
- const i = s.label ?? J(e), a = o("label", { className: "cp-label" }, [
683
+ this.changeFns = /* @__PURE__ */ new Set(), this.object = t, this.property = e, this.key = s.id ?? e, this.initialValue = this.object[this.property], this.domElement = r("div", { className: "cp-controller" });
684
+ const i = s.label ?? U(e), a = r("label", { className: "cp-label" }, [
646
685
  String(i)
647
686
  ]);
648
687
  a.setAttribute("title", String(i)), this.domElement.appendChild(a), s.disabled && this.domElement.setAttribute("data-disabled", "true");
@@ -673,11 +712,11 @@ const Q = new K(), A = class A {
673
712
  this.domElement.appendChild(t);
674
713
  }
675
714
  };
676
- A.audio = k, A.midi = Z, A.math = Q;
677
- let u = A;
678
- class tt extends u {
715
+ F.audio = q, F.midi = _, F.math = et;
716
+ let u = F;
717
+ class st extends u {
679
718
  constructor(t, e, s = {}) {
680
- super(t, e, s), this.input = o("input", {
719
+ super(t, e, s), this.input = r("input", {
681
720
  type: "number",
682
721
  className: "cp-input-number",
683
722
  value: String(this.value)
@@ -693,7 +732,7 @@ class tt extends u {
693
732
  this.input.value = String(this.value);
694
733
  }
695
734
  }
696
- const R = {
735
+ const z = {
697
736
  linear: (n) => n,
698
737
  quadIn: (n) => n * n,
699
738
  quadOut: (n) => n * (2 - n),
@@ -708,7 +747,7 @@ const R = {
708
747
  sineOut: (n) => Math.sin(n * Math.PI / 2),
709
748
  sineInOut: (n) => -(Math.cos(Math.PI * n) - 1) / 2
710
749
  };
711
- class H {
750
+ class W {
712
751
  constructor(t) {
713
752
  this.rafId = null, this.currentSignalType = null, this.currentMidiId = null, this.currentEase = "linear", this.currentBehaviour = "forward", this.loop = () => {
714
753
  if (this.currentSignalType) {
@@ -725,7 +764,7 @@ class H {
725
764
  )() : ["volume", "bass", "mids", "highs"].includes(this.currentSignalType) && (e = u.audio.getSignal(
726
765
  this.currentSignalType
727
766
  )());
728
- const s = R[this.currentEase](e);
767
+ const s = z[this.currentEase](e);
729
768
  this.onChange(s, this.currentBehaviour), this.rafId = requestAnimationFrame(this.loop);
730
769
  }
731
770
  }, this.onChange = t.onChange, this.setupControllers(t.container);
@@ -749,16 +788,16 @@ class H {
749
788
  ],
750
789
  (l) => this.setSignalType(l)
751
790
  );
752
- this.signalSelect = e.select, t.appendChild(e.row), this.midiRow = o("div", {
791
+ this.signalSelect = e.select, t.appendChild(e.row), this.midiRow = r("div", {
753
792
  className: "cp-setting-row",
754
793
  style: "display: none;"
755
794
  });
756
- const s = o(
795
+ const s = r(
757
796
  "label",
758
797
  { className: "cp-setting-label" },
759
798
  ["Midi"]
760
799
  );
761
- this.midiBtn = o(
800
+ this.midiBtn = r(
762
801
  "button",
763
802
  { className: "cp-button cp-input-small" },
764
803
  ["Learn"]
@@ -770,7 +809,7 @@ class H {
770
809
  this.midiBtn.textContent = "Listening...";
771
810
  const l = await u.midi.listen();
772
811
  this.setMidiId(l);
773
- }), this.midiRow.appendChild(s), this.midiRow.appendChild(this.midiBtn), t.appendChild(this.midiRow), this.mathParamsContainer = o("div", {
812
+ }), this.midiRow.appendChild(s), this.midiRow.appendChild(this.midiBtn), t.appendChild(this.midiRow), this.mathParamsContainer = r("div", {
774
813
  className: "cp-number-settings"
775
814
  }), t.appendChild(this.mathParamsContainer);
776
815
  const i = this.createSettingSelect(
@@ -781,28 +820,28 @@ class H {
781
820
  this.behaviourRow = i.row, this.behaviourSelect = i.select, this.behaviourRow.style.display = "none", this.behaviourSelect.value = this.currentBehaviour, t.appendChild(this.behaviourRow);
782
821
  const a = this.createSettingSelect(
783
822
  "ease",
784
- Object.keys(R),
823
+ Object.keys(z),
785
824
  (l) => this.setEase(l)
786
825
  );
787
826
  this.easeRow = a.row, this.easeSelect = a.select, this.easeRow.style.display = "none", this.easeSelect.value = this.currentEase, t.appendChild(this.easeRow);
788
- const r = o("hr", { className: "cp-separator" });
789
- t.appendChild(r);
827
+ const o = r("hr", { className: "cp-separator" });
828
+ t.appendChild(o);
790
829
  }
791
830
  createSettingSelect(t, e, s) {
792
- const i = o("div", { className: "cp-setting-row" }), a = o("label", { className: "cp-setting-label" }, [
831
+ const i = r("div", { className: "cp-setting-row" }), a = r("label", { className: "cp-setting-label" }, [
793
832
  t
794
- ]), r = o("select", {
833
+ ]), o = r("select", {
795
834
  className: "cp-select cp-input-small"
796
835
  });
797
836
  return e.forEach((l) => {
798
- const p = o("option", { value: l }, [l]);
799
- r.appendChild(p);
800
- }), r.addEventListener("change", () => s(r.value)), i.appendChild(a), i.appendChild(r), { row: i, select: r };
837
+ const p = r("option", { value: l }, [l]);
838
+ o.appendChild(p);
839
+ }), o.addEventListener("change", () => s(o.value)), i.appendChild(a), i.appendChild(o), { row: i, select: o };
801
840
  }
802
- createNumberInput(t, e, s, i, a, r) {
803
- const l = o("div", { className: "cp-setting-row" }), p = o("label", { className: "cp-setting-label" }, [
841
+ createNumberInput(t, e, s, i, a, o) {
842
+ const l = r("div", { className: "cp-setting-row" }), p = r("label", { className: "cp-setting-label" }, [
804
843
  t
805
- ]), h = o("input", {
844
+ ]), h = r("input", {
806
845
  className: "cp-input-number cp-input-small",
807
846
  type: "number",
808
847
  value: String(e),
@@ -812,20 +851,20 @@ class H {
812
851
  });
813
852
  return h.addEventListener("input", () => {
814
853
  const d = parseFloat(h.value);
815
- isNaN(d) || r(d);
854
+ isNaN(d) || o(d);
816
855
  }), l.appendChild(p), l.appendChild(h), { row: l, input: h };
817
856
  }
818
857
  updateMathParams(t) {
819
858
  this.mathParamsContainer.innerHTML = "";
820
859
  const e = u.math.getConfig(t);
821
- let s = "Frequency", i = 0.1, a = 10, r = 0.1;
822
- t === "random" ? a = 30 : t === "constant" && (s = "Speed", i = 0.01, a = 2, r = 0.01);
860
+ let s = "Frequency", i = 0.1, a = 10, o = 0.1;
861
+ t === "random" ? a = 30 : t === "constant" && (s = "Speed", i = 0.01, a = 2, o = 0.01);
823
862
  const l = this.createNumberInput(
824
863
  s,
825
864
  e.frequency,
826
865
  i,
827
866
  a,
828
- r,
867
+ o,
829
868
  (d) => u.math.setConfig(t, { frequency: d })
830
869
  );
831
870
  this.mathParamsContainer.appendChild(l.row);
@@ -853,7 +892,7 @@ class H {
853
892
  0,
854
893
  1,
855
894
  0.01,
856
- (y) => u.math.setConfig(t, { phase: y })
895
+ (b) => u.math.setConfig(t, { phase: b })
857
896
  );
858
897
  this.mathParamsContainer.appendChild(d.row);
859
898
  }
@@ -904,19 +943,19 @@ class H {
904
943
  this.setSignalType("none"), this.setEase("linear"), this.setBehaviour("forward"), this.setMidiId(null);
905
944
  }
906
945
  }
907
- class et extends u {
946
+ class it extends u {
908
947
  constructor(t, e, s = {}) {
909
948
  super(t, e, s), this.pingPongDirection = 1, this.min = 0, this.max = 100, this.initialOptions = s, this.min = s.min ?? 0, this.max = s.max ?? 100;
910
- const i = o("details", {
949
+ const i = r("details", {
911
950
  className: "cp-controller-details"
912
- }), a = o("summary", {
951
+ }), a = r("summary", {
913
952
  className: "cp-controller-summary"
914
953
  });
915
- this.input = o("input", {
954
+ this.input = r("input", {
916
955
  type: "range",
917
956
  className: "cp-input-range",
918
957
  step: s.step ?? "any"
919
- }), s.min !== void 0 && (this.input.min = String(s.min)), s.max !== void 0 && (this.input.max = String(s.max)), this.input.value = String(this.value), this.display = o(
958
+ }), s.min !== void 0 && (this.input.min = String(s.min)), s.max !== void 0 && (this.input.max = String(s.max)), this.input.value = String(this.value), this.display = r(
920
959
  "span",
921
960
  {
922
961
  className: "cp-value-display"
@@ -928,11 +967,11 @@ class et extends u {
928
967
  }), this.input.addEventListener("click", (f) => {
929
968
  f.stopPropagation();
930
969
  });
931
- const r = o("div", {
970
+ const o = r("div", {
932
971
  className: "cp-controller-summary-content"
933
972
  });
934
- r.appendChild(this.input), r.appendChild(this.display), a.appendChild(r), i.appendChild(a);
935
- const l = o("div", { className: "cp-number-settings" }), p = this.createSetting(
973
+ o.appendChild(this.input), o.appendChild(this.display), a.appendChild(o), i.appendChild(a);
974
+ const l = r("div", { className: "cp-number-settings" }), p = this.createSetting(
936
975
  "min",
937
976
  s.min,
938
977
  (f) => this.setMin(f)
@@ -950,10 +989,10 @@ class et extends u {
950
989
  (f) => this.setStep(f)
951
990
  );
952
991
  this.stepInput = d.input, l.appendChild(d.row);
953
- const y = o("hr", { className: "cp-separator" });
954
- l.appendChild(y), this.signalHandler = new H({
992
+ const b = r("hr", { className: "cp-separator" });
993
+ l.appendChild(b), this.signalHandler = new W({
955
994
  container: l,
956
- onChange: (f, b) => this.applySignal(f, b)
995
+ onChange: (f, y) => this.applySignal(f, y)
957
996
  }), i.appendChild(l), this.appendWidget(i);
958
997
  }
959
998
  // Setters
@@ -987,14 +1026,14 @@ class et extends u {
987
1026
  return i + Math.round((t - i) / s) * s;
988
1027
  }
989
1028
  createSetting(t, e, s) {
990
- const i = o("div", { className: "cp-setting-row" }), a = o("label", { className: "cp-setting-label" }, [
1029
+ const i = r("div", { className: "cp-setting-row" }), a = r("label", { className: "cp-setting-label" }, [
991
1030
  t
992
- ]), r = o("input", {
1031
+ ]), o = r("input", {
993
1032
  type: "number",
994
1033
  className: "cp-input-number cp-input-small",
995
1034
  step: "any"
996
1035
  });
997
- return e !== void 0 && (r.value = String(e)), r.addEventListener("input", () => s(r.value)), i.appendChild(a), i.appendChild(r), { row: i, input: r };
1036
+ return e !== void 0 && (o.value = String(e)), o.addEventListener("input", () => s(o.value)), i.appendChild(a), i.appendChild(o), { row: i, input: o };
998
1037
  }
999
1038
  updateDisplay() {
1000
1039
  this.input.value = String(this.value), this.display.textContent = String(this.value.toFixed(1));
@@ -1035,13 +1074,13 @@ class et extends u {
1035
1074
  ), this.setStep(this.initialOptions.step), this.signalHandler?.reset();
1036
1075
  }
1037
1076
  }
1038
- class st extends u {
1077
+ class nt extends u {
1039
1078
  constructor(t, e, s) {
1040
- super(t, e, s), this.optionValues = [], this.select = o("select", { className: "cp-select" }), this.optionValues = s.options || [], this.optionValues.forEach((i, a) => {
1041
- const r = o("option", { value: String(a) }, [
1079
+ super(t, e, s), this.optionValues = [], this.select = r("select", { className: "cp-select" }), this.optionValues = s.options || [], this.optionValues.forEach((i, a) => {
1080
+ const o = r("option", { value: String(a) }, [
1042
1081
  String(i)
1043
1082
  ]);
1044
- this.select.appendChild(r);
1083
+ this.select.appendChild(o);
1045
1084
  }), this.updateDisplay(), this.select.addEventListener("change", () => {
1046
1085
  const i = parseInt(this.select.value), a = this.optionValues[i];
1047
1086
  this.setValue(a);
@@ -1049,7 +1088,7 @@ class st extends u {
1049
1088
  }
1050
1089
  setOptions(t) {
1051
1090
  this.select.innerHTML = "", this.optionValues = t, this.optionValues.forEach((e, s) => {
1052
- const i = o("option", { value: String(s) }, [
1091
+ const i = r("option", { value: String(s) }, [
1053
1092
  String(e)
1054
1093
  ]);
1055
1094
  this.select.appendChild(i);
@@ -1060,24 +1099,24 @@ class st extends u {
1060
1099
  t !== -1 && (this.select.value = String(t));
1061
1100
  }
1062
1101
  }
1063
- class it extends u {
1102
+ class at extends u {
1064
1103
  constructor(t, e, s = {}) {
1065
1104
  const i = { action: e };
1066
1105
  super(i, "action", s), this.domElement.querySelector(".cp-label")?.remove();
1067
1106
  const a = s.label ?? t;
1068
- this.button = o("button", { className: "cp-button" }, [
1107
+ this.button = r("button", { className: "cp-button" }, [
1069
1108
  String(a)
1070
1109
  ]), this.button.addEventListener("click", () => {
1071
- const r = this.value;
1072
- typeof r == "function" && r(), this.emitChange(r);
1110
+ const o = this.value;
1111
+ typeof o == "function" && o(), this.emitChange(o);
1073
1112
  }), this.appendWidget(this.button);
1074
1113
  }
1075
1114
  updateDisplay() {
1076
1115
  }
1077
1116
  }
1078
- class nt extends u {
1117
+ class ot extends u {
1079
1118
  constructor(t, e, s = {}) {
1080
- super(t, e, s), this.input = o("input", {
1119
+ super(t, e, s), this.input = r("input", {
1081
1120
  type: "checkbox",
1082
1121
  className: "cp-checkbox"
1083
1122
  }), this.input.checked = this.value, this.input.addEventListener("change", () => {
@@ -1088,10 +1127,10 @@ class nt extends u {
1088
1127
  this.input.checked = this.value;
1089
1128
  }
1090
1129
  }
1091
- class at extends u {
1130
+ class rt extends u {
1092
1131
  constructor(t, e, s) {
1093
- super(t, e, s), this.buttons = [], this.optionValues = [], this.container = o("div", { className: "cp-radios" }), this.optionValues = s.options || [], this.optionValues.forEach((i) => {
1094
- const a = o("button", { className: "cp-button cp-radio" }, [
1132
+ super(t, e, s), this.buttons = [], this.optionValues = [], this.container = r("div", { className: "cp-radios" }), this.optionValues = s.options || [], this.optionValues.forEach((i) => {
1133
+ const a = r("button", { className: "cp-button cp-radio" }, [
1095
1134
  String(i)
1096
1135
  ]);
1097
1136
  a.addEventListener("click", () => {
@@ -1106,9 +1145,9 @@ class at extends u {
1106
1145
  });
1107
1146
  }
1108
1147
  }
1109
- class rt extends u {
1148
+ class lt extends u {
1110
1149
  constructor(t, e, s = {}) {
1111
- super(t, e, s), this.input = o("input", {
1150
+ super(t, e, s), this.input = r("input", {
1112
1151
  type: "color",
1113
1152
  className: "cp-input-color",
1114
1153
  value: this.value || "#000000"
@@ -1121,9 +1160,9 @@ class rt extends u {
1121
1160
  this.input.value = this.value;
1122
1161
  }
1123
1162
  }
1124
- function $(n) {
1163
+ function V(n) {
1125
1164
  const t = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
1126
- n = n.replace(t, (s, i, a, r) => i + i + a + a + r + r);
1165
+ n = n.replace(t, (s, i, a, o) => i + i + a + a + o + o);
1127
1166
  const e = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);
1128
1167
  return e ? [
1129
1168
  parseInt(e[1], 16),
@@ -1131,43 +1170,43 @@ function $(n) {
1131
1170
  parseInt(e[3], 16)
1132
1171
  ] : [0, 0, 0];
1133
1172
  }
1134
- function ot(n, t, e) {
1173
+ function ct(n, t, e) {
1135
1174
  return "#" + ((1 << 24) + (Math.round(n) << 16) + (Math.round(t) << 8) + Math.round(e)).toString(16).slice(1);
1136
1175
  }
1137
- function T(n) {
1176
+ function I(n) {
1138
1177
  const t = n / 255;
1139
1178
  return t <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4);
1140
1179
  }
1141
- function F(n) {
1180
+ function B(n) {
1142
1181
  return n <= 31308e-7 ? n * 12.92 * 255 : (1.055 * Math.pow(n, 1 / 2.4) - 0.055) * 255;
1143
1182
  }
1144
- function lt(n, t, e) {
1145
- const [s, i, a] = $(n), [r, l, p] = $(t), h = T(s), d = T(i), y = T(a), f = T(r), b = T(l), E = T(p), g = h + e * (f - h), V = d + e * (b - d), S = y + e * (E - y), c = F(g), m = F(V), v = F(S);
1146
- return ot(c, m, v);
1183
+ function pt(n, t, e) {
1184
+ const [s, i, a] = V(n), [o, l, p] = V(t), h = I(s), d = I(i), b = I(a), f = I(o), y = I(l), x = I(p), g = h + e * (f - h), L = d + e * (y - d), w = b + e * (x - b), c = B(g), m = B(L), v = B(w);
1185
+ return ct(c, m, v);
1147
1186
  }
1148
- class ct extends u {
1187
+ class ht extends u {
1149
1188
  constructor(t, e, s = {}) {
1150
1189
  super(t, e, s), this.stops = [], this.pingPongDirection = 1, this.animationT = 0, this.manualPosition = 0, this.initialOptions = s, this.stops = s.stops || [
1151
1190
  { color: "#000000", position: 0 },
1152
1191
  { color: "#ffffff", position: 1 }
1153
1192
  ], this.sortStops();
1154
- const i = o("details", {
1193
+ const i = r("details", {
1155
1194
  className: "cp-controller-details"
1156
- }), a = o("summary", {
1195
+ }), a = r("summary", {
1157
1196
  className: "cp-controller-summary"
1158
- }), r = o("div", {
1197
+ }), o = r("div", {
1159
1198
  className: "cp-controller-summary-content"
1160
1199
  });
1161
- this.displayText = o(
1200
+ this.displayText = r(
1162
1201
  "span",
1163
1202
  { className: "cp-value-display" },
1164
1203
  [String(this.value)]
1165
- ), r.appendChild(this.displayText), a.appendChild(r), i.appendChild(a);
1166
- const l = o("div", { className: "cp-number-settings" });
1167
- this.stopsContainer = o("div", {
1204
+ ), o.appendChild(this.displayText), a.appendChild(o), i.appendChild(a);
1205
+ const l = r("div", { className: "cp-number-settings" });
1206
+ this.stopsContainer = r("div", {
1168
1207
  className: "cp-stops-container"
1169
1208
  }), this.renderStops(), l.appendChild(this.stopsContainer);
1170
- const p = o(
1209
+ const p = r(
1171
1210
  "button",
1172
1211
  {
1173
1212
  className: "cp-button"
@@ -1177,10 +1216,10 @@ class ct extends u {
1177
1216
  p.addEventListener("click", () => {
1178
1217
  this.stops.push({ color: "#ffffff", position: 0.5 }), this.sortStops(), this.renderStops(), this.updateOutput();
1179
1218
  }), l.appendChild(p);
1180
- const h = o("hr", { className: "cp-separator" });
1181
- l.appendChild(h), this.signalHandler = new H({
1219
+ const h = r("hr", { className: "cp-separator" });
1220
+ l.appendChild(h), this.signalHandler = new W({
1182
1221
  container: l,
1183
- onChange: (d, y) => this.applySignal(d, y)
1222
+ onChange: (d, b) => this.applySignal(d, b)
1184
1223
  }), i.appendChild(l), this.appendWidget(i), this.updateOutput(0);
1185
1224
  }
1186
1225
  sortStops() {
@@ -1188,7 +1227,7 @@ class ct extends u {
1188
1227
  }
1189
1228
  renderStops() {
1190
1229
  this.stopsContainer.innerHTML = "", this.stops.forEach((t, e) => {
1191
- const s = o("div", { className: "cp-gradient-stop-row" }), i = o("input", {
1230
+ const s = r("div", { className: "cp-gradient-stop-row" }), i = r("input", {
1192
1231
  type: "color",
1193
1232
  className: "cp-input-color",
1194
1233
  value: t.color
@@ -1196,7 +1235,7 @@ class ct extends u {
1196
1235
  i.addEventListener("input", (l) => {
1197
1236
  t.color = l.target.value, this.updateOutput();
1198
1237
  });
1199
- const a = o("input", {
1238
+ const a = r("input", {
1200
1239
  type: "number",
1201
1240
  className: "cp-input-number cp-input-small",
1202
1241
  min: "0",
@@ -1208,10 +1247,10 @@ class ct extends u {
1208
1247
  let p = parseFloat(l.target.value);
1209
1248
  isNaN(p) && (p = 0), t.position = Math.max(0, Math.min(1, p)), this.sortStops(), this.renderStops(), this.updateOutput();
1210
1249
  });
1211
- const r = j(() => {
1250
+ const o = X(() => {
1212
1251
  this.stops.splice(e, 1), this.renderStops(), this.updateOutput();
1213
1252
  });
1214
- s.appendChild(i), s.appendChild(a), s.appendChild(r), this.stopsContainer.appendChild(s);
1253
+ s.appendChild(i), s.appendChild(a), s.appendChild(o), this.stopsContainer.appendChild(s);
1215
1254
  });
1216
1255
  }
1217
1256
  // Calculate color at t (0-1) and update value
@@ -1230,8 +1269,8 @@ class ct extends u {
1230
1269
  for (let s = 0; s < this.stops.length - 1; s++) {
1231
1270
  const i = this.stops[s], a = this.stops[s + 1];
1232
1271
  if (t >= i.position && t <= a.position) {
1233
- const r = a.position - i.position, l = r === 0 ? 0 : (t - i.position) / r;
1234
- e = lt(i.color, a.color, l);
1272
+ const o = a.position - i.position, l = o === 0 ? 0 : (t - i.position) / o;
1273
+ e = pt(i.color, a.color, l);
1235
1274
  break;
1236
1275
  }
1237
1276
  }
@@ -1270,24 +1309,24 @@ class ct extends u {
1270
1309
  ], this.sortStops(), this.renderStops(), this.signalHandler?.reset(), this.updateOutput(0);
1271
1310
  }
1272
1311
  }
1273
- class pt extends u {
1312
+ class dt extends u {
1274
1313
  constructor(t, e, s = {}) {
1275
1314
  super(t, e, s), this.items = [], this.initialOptions = s, this.itemType = s.itemType || "string", this.items = this.parseValue(this.value);
1276
- const i = o("details", {
1315
+ const i = r("details", {
1277
1316
  className: "cp-controller-details"
1278
- }), a = o("summary", {
1317
+ }), a = r("summary", {
1279
1318
  className: "cp-controller-summary"
1280
- }), r = o("div", {
1319
+ }), o = r("div", {
1281
1320
  className: "cp-controller-summary-content"
1282
- }), l = o("span", { className: "cp-value-display" }, [
1321
+ }), l = r("span", { className: "cp-value-display" }, [
1283
1322
  `${this.items.length} items`
1284
1323
  ]);
1285
- r.appendChild(l), a.appendChild(r), i.appendChild(a);
1286
- const p = o("div", { className: "cp-number-settings" });
1287
- this.itemsContainer = o("div", {
1324
+ o.appendChild(l), a.appendChild(o), i.appendChild(a);
1325
+ const p = r("div", { className: "cp-number-settings" });
1326
+ this.itemsContainer = r("div", {
1288
1327
  className: "cp-stops-container"
1289
1328
  }), this.renderItems(), p.appendChild(this.itemsContainer);
1290
- const h = o(
1329
+ const h = r(
1291
1330
  "button",
1292
1331
  {
1293
1332
  className: "cp-button cp-input-small",
@@ -1329,25 +1368,25 @@ class pt extends u {
1329
1368
  }
1330
1369
  renderItems() {
1331
1370
  this.itemsContainer.innerHTML = "", this.items.forEach((t, e) => {
1332
- const s = o("div", { className: "cp-array-row" });
1371
+ const s = r("div", { className: "cp-array-row" });
1333
1372
  let i;
1334
- this.itemType === "color" ? i = o("input", {
1373
+ this.itemType === "color" ? i = r("input", {
1335
1374
  type: "color",
1336
1375
  className: "cp-input-color",
1337
1376
  value: t
1338
- }) : this.itemType === "number" ? i = o("input", {
1377
+ }) : this.itemType === "number" ? i = r("input", {
1339
1378
  type: "number",
1340
1379
  className: "cp-input-number cp-input-small",
1341
1380
  step: "any",
1342
1381
  value: t
1343
- }) : i = o("input", {
1382
+ }) : i = r("input", {
1344
1383
  type: "text",
1345
1384
  className: "cp-input-number cp-input-small",
1346
1385
  value: t
1347
- }), i.addEventListener("input", (r) => {
1348
- this.items[e] = r.target.value, this.updateValue();
1386
+ }), i.addEventListener("input", (o) => {
1387
+ this.items[e] = o.target.value, this.updateValue();
1349
1388
  });
1350
- const a = j(() => {
1389
+ const a = X(() => {
1351
1390
  this.items.splice(e, 1), this.renderItems(), this.updateValue();
1352
1391
  });
1353
1392
  s.appendChild(i), s.appendChild(a), this.itemsContainer.appendChild(s);
@@ -1366,7 +1405,7 @@ class pt extends u {
1366
1405
  this.items = this.parseValue(t), this.renderItems(), this.updateValue();
1367
1406
  }
1368
1407
  }
1369
- class ht {
1408
+ class ut {
1370
1409
  constructor() {
1371
1410
  this.frames = 0, this.pollingInterval = 1e3, this.prevTime = performance.now(), this.render = () => {
1372
1411
  this.frames++;
@@ -1378,58 +1417,58 @@ class ht {
1378
1417
  i && (s = ` / ${Math.round(i.usedJSHeapSize / 1048576)}MB`), this.domElement.textContent = `${e} FPS${s}`, this.prevTime = t, this.frames = 0;
1379
1418
  }
1380
1419
  this.rafId = requestAnimationFrame(this.render);
1381
- }, this.domElement = o("span", { className: "cp-stats" }), this.rafId = requestAnimationFrame(this.render);
1420
+ }, this.domElement = r("span", { className: "cp-stats" }), this.rafId = requestAnimationFrame(this.render);
1382
1421
  }
1383
1422
  destroy() {
1384
1423
  cancelAnimationFrame(this.rafId);
1385
1424
  }
1386
1425
  }
1387
- class U {
1426
+ class J {
1388
1427
  constructor() {
1389
1428
  this.controllers = [], this.folders = [];
1390
1429
  }
1391
1430
  addNumber(t, e, s = {}) {
1392
- const i = new tt(t, e, s);
1431
+ const i = new st(t, e, s);
1393
1432
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1394
1433
  }
1395
1434
  addRange(t, e, s = {}) {
1396
- const i = new et(t, e, s);
1435
+ const i = new it(t, e, s);
1397
1436
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1398
1437
  }
1399
1438
  addSelect(t, e, s = {}) {
1400
- const i = new st(t, e, s);
1439
+ const i = new nt(t, e, s);
1401
1440
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1402
1441
  }
1403
1442
  addBoolean(t, e, s = {}) {
1404
- const i = new nt(t, e, s);
1443
+ const i = new ot(t, e, s);
1405
1444
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1406
1445
  }
1407
1446
  addButton(t, e, s = {}) {
1408
- const i = new it(t, e, s);
1447
+ const i = new at(t, e, s);
1409
1448
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1410
1449
  }
1411
1450
  addRadio(t, e, s = {}) {
1412
- const i = new at(t, e, s);
1451
+ const i = new rt(t, e, s);
1413
1452
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1414
1453
  }
1415
1454
  addColor(t, e, s = {}) {
1416
- const i = new rt(t, e, s);
1455
+ const i = new lt(t, e, s);
1417
1456
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1418
1457
  }
1419
1458
  addGradient(t, e, s = {}) {
1420
- const i = new ct(t, e, s);
1459
+ const i = new ht(t, e, s);
1421
1460
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1422
1461
  }
1423
1462
  addArray(t, e, s = {}) {
1424
- const i = new pt(t, e, s);
1463
+ const i = new dt(t, e, s);
1425
1464
  return this.contentElement.appendChild(i.domElement), this.controllers.push(i), i;
1426
1465
  }
1427
1466
  addFolder(t) {
1428
- const e = new dt(t);
1467
+ const e = new mt(t);
1429
1468
  return this.addSeparator(), this.contentElement.appendChild(e.domElement), this.folders.push(e), e;
1430
1469
  }
1431
1470
  addSeparator() {
1432
- const t = o("hr", { className: "cp-separator" });
1471
+ const t = r("hr", { className: "cp-separator" });
1433
1472
  this.contentElement.appendChild(t);
1434
1473
  }
1435
1474
  save() {
@@ -1467,71 +1506,71 @@ class U {
1467
1506
  t.reset();
1468
1507
  }
1469
1508
  }
1470
- class dt extends U {
1509
+ class mt extends J {
1471
1510
  constructor(t) {
1472
- super(), this.title = t, this.domElement = o("details", {
1511
+ super(), this.title = t, this.domElement = r("details", {
1473
1512
  className: "cp-folder",
1474
1513
  open: !0
1475
- }), this.summaryElement = o(
1514
+ }), this.summaryElement = r(
1476
1515
  "summary",
1477
1516
  {
1478
1517
  className: "cp-summary"
1479
1518
  },
1480
1519
  [t]
1481
- ), this.domElement.appendChild(this.summaryElement), this.contentElement = o("div", {
1520
+ ), this.domElement.appendChild(this.summaryElement), this.contentElement = r("div", {
1482
1521
  className: "cp-content cp-folder-content"
1483
1522
  }), this.domElement.appendChild(this.contentElement);
1484
1523
  }
1485
1524
  }
1486
- class ut extends U {
1525
+ class gt extends J {
1487
1526
  constructor(t, e = {}) {
1488
- super(), _(), this.domElement = o("details", {
1527
+ super(), K(), this.domElement = r("details", {
1489
1528
  className: "cp-root",
1490
1529
  open: !0
1491
- }), this.summaryElement = o("summary", {
1530
+ }), this.summaryElement = r("summary", {
1492
1531
  className: "cp-summary cp-summary-root"
1493
1532
  }), this.domElement.appendChild(this.summaryElement);
1494
- const s = o("span", {}, [
1533
+ const s = r("span", {}, [
1495
1534
  e.title || "ControlPanel"
1496
1535
  ]);
1497
- this.summaryElement.appendChild(s), this.stats = new ht(), this.summaryElement.appendChild(this.stats.domElement);
1498
- let i = !1, a = 0, r = 0, l = 0, p = 0;
1536
+ this.summaryElement.appendChild(s), this.stats = new ut(), this.summaryElement.appendChild(this.stats.domElement);
1537
+ let i = !1, a = 0, o = 0, l = 0, p = 0;
1499
1538
  this.summaryElement.addEventListener("mousedown", (c) => {
1500
1539
  if (c.target !== this.summaryElement && c.target !== s) return;
1501
- i = !0, a = c.clientX, r = c.clientY;
1540
+ i = !0, a = c.clientX, o = c.clientY;
1502
1541
  const m = this.domElement.getBoundingClientRect();
1503
1542
  l = m.left, p = m.top, c.preventDefault();
1504
1543
  }), document.addEventListener("mousemove", (c) => {
1505
1544
  if (!i) return;
1506
- const m = c.clientX - a, v = c.clientY - r, w = l + m, M = p + v;
1507
- this.domElement.style.left = `${w}px`, this.domElement.style.top = `${M}px`, this.domElement.style.right = "auto", this.domElement.style.bottom = "auto";
1545
+ const m = c.clientX - a, v = c.clientY - o, A = l + m, N = p + v;
1546
+ this.domElement.style.left = `${A}px`, this.domElement.style.top = `${N}px`, this.domElement.style.right = "auto", this.domElement.style.bottom = "auto";
1508
1547
  }), document.addEventListener("mouseup", () => {
1509
1548
  i && (i = !1, this.savePositionAndSize());
1510
1549
  }), new ResizeObserver(() => {
1511
1550
  i || this.savePositionAndSize();
1512
- }).observe(this.domElement), this.restorePositionAndSize(), this.contentElement = o("div", { className: "cp-content" }), this.domElement.appendChild(this.contentElement);
1513
- const d = this.addFolder("_Signals"), y = {
1551
+ }).observe(this.domElement), this.restorePositionAndSize(), this.contentElement = r("div", { className: "cp-content" }), this.domElement.appendChild(this.contentElement);
1552
+ const d = this.addFolder("_Signals"), b = {
1514
1553
  audioInput: null,
1515
1554
  fftSize: 2048
1516
1555
  };
1517
- d.addRadio(y, "audioInput", {
1556
+ d.addRadio(b, "audioInput", {
1518
1557
  label: "Audio Signal",
1519
1558
  options: ["microphone", "browser"]
1520
1559
  }).onChange((c) => {
1521
- k.setInput(c);
1522
- }), d.addSelect(y, "fftSize", {
1560
+ q.setInput(c);
1561
+ }), d.addSelect(b, "fftSize", {
1523
1562
  label: "FFT Size",
1524
1563
  options: [256, 512, 1024, 2048]
1525
1564
  }).onChange((c) => {
1526
- k.setFFTSize(c);
1527
- }), d.addRange(k, "smoothingTimeConstant", {
1565
+ q.setFFTSize(c);
1566
+ }), d.addRange(q, "smoothingTimeConstant", {
1528
1567
  min: 0,
1529
1568
  max: 0.99,
1530
1569
  step: 0.01,
1531
1570
  label: "Smoothing"
1532
1571
  }).onChange((c) => {
1533
- k.analyser.smoothingTimeConstant = c;
1534
- }), d.addRange(k, "spectrumBoost", {
1572
+ q.analyser.smoothingTimeConstant = c;
1573
+ }), d.addRange(q, "spectrumBoost", {
1535
1574
  min: 1,
1536
1575
  max: 5,
1537
1576
  step: 0.1,
@@ -1539,14 +1578,14 @@ class ut extends U {
1539
1578
  }), t ? t.appendChild(this.domElement) : document.body.appendChild(this.domElement);
1540
1579
  const f = e.title || "ControlPanel";
1541
1580
  this.presetStoragePrefix = `cp-presets-${f}-`;
1542
- const b = this.addFolder("_User Presets"), E = () => {
1581
+ const y = this.addFolder("_User Presets"), x = () => {
1543
1582
  const c = ["Default"];
1544
1583
  if (typeof localStorage > "u") return c;
1545
1584
  for (let m = 0; m < localStorage.length; m++) {
1546
1585
  const v = localStorage.key(m);
1547
1586
  if (v && v.startsWith(this.presetStoragePrefix)) {
1548
- const w = v.substring(this.presetStoragePrefix.length);
1549
- w !== "Default" && !c.includes(w) && c.push(w);
1587
+ const A = v.substring(this.presetStoragePrefix.length);
1588
+ A !== "Default" && !c.includes(A) && c.push(A);
1550
1589
  }
1551
1590
  }
1552
1591
  return c.sort();
@@ -1561,13 +1600,13 @@ class ut extends U {
1561
1600
  }
1562
1601
  const m = this.presetStoragePrefix + c;
1563
1602
  this.saveToLocalStorage(m);
1564
- const v = E();
1565
- S.setOptions(v), g.selected = c, S.setValue(c);
1603
+ const v = x();
1604
+ w.setOptions(v), g.selected = c, w.setValue(c);
1566
1605
  }
1567
1606
  },
1568
1607
  load: () => {
1569
1608
  const c = g.selected, m = this.presetStoragePrefix + c;
1570
- this.loadFromLocalStorage(m), g.selected = c, S.setValue(c);
1609
+ this.loadFromLocalStorage(m), g.selected = c, w.setValue(c);
1571
1610
  },
1572
1611
  delete: () => {
1573
1612
  if (g.selected === "Default") {
@@ -1577,74 +1616,74 @@ class ut extends U {
1577
1616
  if (confirm(`Delete preset "${g.selected}"?`)) {
1578
1617
  const c = this.presetStoragePrefix + g.selected;
1579
1618
  localStorage.removeItem(c);
1580
- const m = E();
1581
- S.setOptions(m), g.selected = "Default", S.setValue("Default"), this.reset();
1619
+ const m = x();
1620
+ w.setOptions(m), g.selected = "Default", w.setValue("Default"), this.reset();
1582
1621
  }
1583
1622
  },
1584
1623
  export: () => {
1585
- const c = this.save(), m = (P) => {
1586
- const L = {
1624
+ const c = this.save(), m = (O) => {
1625
+ const M = {
1587
1626
  controllers: {},
1588
1627
  folders: {}
1589
1628
  };
1590
- for (const [z, O] of Object.entries(P.controllers))
1591
- z.startsWith("_") || (L.controllers[z] = O);
1592
- for (const [z, O] of Object.entries(
1593
- P.folders
1629
+ for (const [k, j] of Object.entries(O.controllers))
1630
+ k.startsWith("_") || (M.controllers[k] = j);
1631
+ for (const [k, j] of Object.entries(
1632
+ O.folders
1594
1633
  ))
1595
- z.startsWith("_") || (L.folders[z] = m(O));
1596
- return L;
1597
- }, v = m(c), w = {
1634
+ k.startsWith("_") || (M.folders[k] = m(j));
1635
+ return M;
1636
+ }, v = m(c), A = {
1598
1637
  _presetName: g.selected || "CustomPreset",
1599
1638
  _exportDate: (/* @__PURE__ */ new Date()).toISOString(),
1600
1639
  _instructions: "To add as factory preset: Copy 'controllers' and 'folders' fields into the presets.json file",
1601
1640
  ...v
1602
- }, M = JSON.stringify(w, null, 2), C = new Blob([M], { type: "application/json" }), I = URL.createObjectURL(C), x = document.createElement("a");
1603
- x.href = I;
1604
- const N = (/* @__PURE__ */ new Date()).toISOString().split("T")[0], D = g.selected.replace(/[^a-z0-9]/gi, "-").toLowerCase();
1605
- x.download = `${f.toLowerCase()}-preset-${D}-${N}.json`, document.body.appendChild(x), x.click(), document.body.removeChild(x), URL.revokeObjectURL(I);
1641
+ }, N = JSON.stringify(A, null, 2), C = new Blob([N], { type: "application/json" }), E = URL.createObjectURL(C), S = document.createElement("a");
1642
+ S.href = E;
1643
+ const T = (/* @__PURE__ */ new Date()).toISOString().split("T")[0], D = g.selected.replace(/[^a-z0-9]/gi, "-").toLowerCase();
1644
+ S.download = `${f.toLowerCase()}-preset-${D}-${T}.json`, document.body.appendChild(S), S.click(), document.body.removeChild(S), URL.revokeObjectURL(E);
1606
1645
  },
1607
1646
  import: () => {
1608
1647
  const c = document.createElement("input");
1609
1648
  c.type = "file", c.accept = ".json", c.onchange = (m) => {
1610
1649
  const v = m.target.files?.[0];
1611
1650
  if (!v) return;
1612
- const w = new FileReader();
1613
- w.onload = (M) => {
1651
+ const A = new FileReader();
1652
+ A.onload = (N) => {
1614
1653
  try {
1615
- const C = M.target?.result, I = JSON.parse(C), x = {
1616
- controllers: I.controllers || {},
1617
- folders: I.folders || {}
1654
+ const C = N.target?.result, E = JSON.parse(C), S = {
1655
+ controllers: E.controllers || {},
1656
+ folders: E.folders || {}
1618
1657
  };
1619
- if (!x.controllers || !x.folders) {
1658
+ if (!S.controllers || !S.folders) {
1620
1659
  alert(
1621
1660
  "Invalid preset file: missing 'controllers' or 'folders'"
1622
1661
  );
1623
1662
  return;
1624
1663
  }
1625
- this.load(x);
1626
- const N = I._presetName || "ImportedPreset";
1664
+ this.load(S);
1665
+ const T = E._presetName || "ImportedPreset";
1627
1666
  if (confirm(
1628
- `Preset loaded! Save as "${N}" to User Presets?`
1667
+ `Preset loaded! Save as "${T}" to User Presets?`
1629
1668
  )) {
1630
- const P = this.presetStoragePrefix + N;
1631
- this.saveToLocalStorage(P);
1632
- const L = E();
1633
- S.setOptions(L), g.selected = N, S.setValue(N);
1669
+ const O = this.presetStoragePrefix + T;
1670
+ this.saveToLocalStorage(O);
1671
+ const M = x();
1672
+ w.setOptions(M), g.selected = T, w.setValue(T);
1634
1673
  }
1635
1674
  } catch (C) {
1636
1675
  alert(
1637
1676
  `Failed to import preset: ${C instanceof Error ? C.message : "Invalid JSON"}`
1638
1677
  ), console.error("Import error:", C);
1639
1678
  }
1640
- }, w.readAsText(v);
1679
+ }, A.readAsText(v);
1641
1680
  }, c.click();
1642
1681
  }
1643
- }, V = E(), S = b.addSelect(g, "selected", {
1682
+ }, L = x(), w = y.addSelect(g, "selected", {
1644
1683
  label: "Preset",
1645
- options: V
1684
+ options: L
1646
1685
  });
1647
- b.addButton("Load", () => g.load()), b.addButton("Save", () => g.save()), b.addButton("Delete", () => g.delete()), b.addButton("Export", () => g.export()), b.addButton("Import", () => g.import());
1686
+ y.addButton("Load", () => g.load()), y.addButton("Save", () => g.save()), y.addButton("Delete", () => g.delete()), y.addButton("Export", () => g.export()), y.addButton("Import", () => g.import());
1648
1687
  }
1649
1688
  saveToLocalStorage(t) {
1650
1689
  const e = this.save();
@@ -1699,23 +1738,23 @@ class ut extends U {
1699
1738
  }
1700
1739
  }
1701
1740
  export {
1702
- pt as ArrayController,
1703
- X as AudioSignals,
1704
- nt as BooleanController,
1705
- it as ButtonController,
1706
- rt as ColorController,
1707
- ut as ControlPanel,
1708
- U as ControlPanelContainer,
1741
+ dt as ArrayController,
1742
+ G as AudioSignals,
1743
+ ot as BooleanController,
1744
+ at as ButtonController,
1745
+ lt as ColorController,
1746
+ gt as ControlPanel,
1747
+ J as ControlPanelContainer,
1709
1748
  u as Controller,
1710
- dt as Folder,
1711
- ct as GradientController,
1712
- K as MathSignals,
1713
- G as MidiSignals,
1714
- tt as NumberController,
1715
- at as RadioController,
1716
- et as RangeController,
1717
- st as SelectController,
1718
- k as audioSignals,
1719
- Q as mathSignals,
1720
- Z as midiSignals
1749
+ mt as Folder,
1750
+ ht as GradientController,
1751
+ tt as MathSignals,
1752
+ $ as MidiSignals,
1753
+ st as NumberController,
1754
+ rt as RadioController,
1755
+ it as RangeController,
1756
+ nt as SelectController,
1757
+ q as audioSignals,
1758
+ et as mathSignals,
1759
+ _ as midiSignals
1721
1760
  };