@antimatter-audio/antimatter-ui 9.6.0 → 10.1.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.
Files changed (119) hide show
  1. package/dist/advanced/IconButton/IconButton.d.ts +55 -0
  2. package/dist/advanced/IconButton/IconButton.d.ts.map +1 -0
  3. package/dist/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts +12 -0
  4. package/dist/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts.map +1 -0
  5. package/dist/advanced/ModuleFooter/ModuleFooter.d.ts +7 -0
  6. package/dist/advanced/ModuleFooter/ModuleFooter.d.ts.map +1 -0
  7. package/dist/advanced/ModuleHeader/ModuleHeader.d.ts +11 -0
  8. package/dist/advanced/ModuleHeader/ModuleHeader.d.ts.map +1 -0
  9. package/dist/advanced/Oscilloscope/Oscilloscope.d.ts +12 -0
  10. package/dist/advanced/Oscilloscope/Oscilloscope.d.ts.map +1 -0
  11. package/dist/advanced/PresetManager/PresetManager.d.ts +5 -0
  12. package/dist/advanced/PresetManager/PresetManager.d.ts.map +1 -0
  13. package/dist/context/GlobalContextProvider.d.ts +20 -0
  14. package/dist/context/GlobalContextProvider.d.ts.map +1 -0
  15. package/dist/core/Box/Box.d.ts +52 -0
  16. package/dist/core/Box/Box.d.ts.map +1 -0
  17. package/dist/core/Box/types.d.ts +29 -0
  18. package/dist/core/Box/types.d.ts.map +1 -0
  19. package/dist/core/Button/Button.d.ts +26 -0
  20. package/dist/core/Button/Button.d.ts.map +1 -0
  21. package/dist/core/Dropdown/Dropdown.d.ts +14 -0
  22. package/dist/core/Dropdown/Dropdown.d.ts.map +1 -0
  23. package/dist/core/Indicators/IndicatorLight.d.ts +12 -0
  24. package/dist/core/Indicators/IndicatorLight.d.ts.map +1 -0
  25. package/dist/core/Indicators/hooks/useIndicator.d.ts +8 -0
  26. package/dist/core/Indicators/hooks/useIndicator.d.ts.map +1 -0
  27. package/dist/core/Matrix/Matrix.d.ts +13 -0
  28. package/dist/core/Matrix/Matrix.d.ts.map +1 -0
  29. package/dist/core/Slider/BarSlider.d.ts +30 -0
  30. package/dist/core/Slider/BarSlider.d.ts.map +1 -0
  31. package/dist/core/Slider/RotarySlider.d.ts +29 -0
  32. package/dist/core/Slider/RotarySlider.d.ts.map +1 -0
  33. package/dist/core/Tabs/Tabs.d.ts +19 -0
  34. package/dist/core/Tabs/Tabs.d.ts.map +1 -0
  35. package/dist/hooks/useCombobox.d.ts +15 -0
  36. package/dist/hooks/useCombobox.d.ts.map +1 -0
  37. package/dist/hooks/useObservable.d.ts +9 -0
  38. package/dist/hooks/useObservable.d.ts.map +1 -0
  39. package/dist/hooks/useRandom.d.ts +1 -0
  40. package/dist/hooks/useRandom.d.ts.map +1 -0
  41. package/dist/hooks/useSlider.d.ts +21 -0
  42. package/dist/hooks/useSlider.d.ts.map +1 -0
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +1497 -502
  46. package/dist/index.js.map +1 -1
  47. package/dist/src/advanced/IconButton/IconButton.d.ts +55 -0
  48. package/dist/src/advanced/IconButton/IconButton.d.ts.map +1 -0
  49. package/dist/src/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts +12 -0
  50. package/dist/src/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts.map +1 -0
  51. package/dist/src/advanced/ModuleFooter/ModuleFooter.d.ts +7 -0
  52. package/dist/src/advanced/ModuleFooter/ModuleFooter.d.ts.map +1 -0
  53. package/dist/src/advanced/ModuleHeader/ModuleHeader.d.ts +11 -0
  54. package/dist/src/advanced/ModuleHeader/ModuleHeader.d.ts.map +1 -0
  55. package/dist/src/advanced/Oscilloscope/LinePlot.d.ts +12 -0
  56. package/dist/src/advanced/Oscilloscope/LinePlot.d.ts.map +1 -0
  57. package/dist/src/advanced/Oscilloscope/Oscilloscope.d.ts +12 -0
  58. package/dist/src/advanced/Oscilloscope/Oscilloscope.d.ts.map +1 -0
  59. package/dist/src/advanced/PresetManager/PresetManager.d.ts +5 -0
  60. package/dist/src/advanced/PresetManager/PresetManager.d.ts.map +1 -0
  61. package/dist/src/common/types.d.ts +53 -0
  62. package/dist/src/common/types.d.ts.map +1 -0
  63. package/dist/src/common/utils.d.ts +16 -0
  64. package/dist/src/common/utils.d.ts.map +1 -0
  65. package/dist/src/context/GlobalContextProvider.d.ts +20 -0
  66. package/dist/src/context/GlobalContextProvider.d.ts.map +1 -0
  67. package/dist/src/core/Box/Box.d.ts +52 -0
  68. package/dist/src/core/Box/Box.d.ts.map +1 -0
  69. package/dist/src/core/Box/types.d.ts +29 -0
  70. package/dist/src/core/Box/types.d.ts.map +1 -0
  71. package/dist/src/core/Button/Button.d.ts +26 -0
  72. package/dist/src/core/Button/Button.d.ts.map +1 -0
  73. package/dist/src/core/Button/types.d.ts +10 -0
  74. package/dist/src/core/Button/types.d.ts.map +1 -0
  75. package/dist/src/core/Dropdown/Dropdown.d.ts +14 -0
  76. package/dist/src/core/Dropdown/Dropdown.d.ts.map +1 -0
  77. package/dist/src/core/Heading/Heading.d.ts +20 -0
  78. package/dist/src/core/Heading/Heading.d.ts.map +1 -0
  79. package/dist/src/core/Heading/types.d.ts +7 -0
  80. package/dist/src/core/Heading/types.d.ts.map +1 -0
  81. package/dist/src/core/Indicators/IndicatorLight.d.ts +12 -0
  82. package/dist/src/core/Indicators/IndicatorLight.d.ts.map +1 -0
  83. package/dist/src/core/Indicators/hooks/useIndicator.d.ts +8 -0
  84. package/dist/src/core/Indicators/hooks/useIndicator.d.ts.map +1 -0
  85. package/dist/src/core/Input/Input.d.ts +26 -0
  86. package/dist/src/core/Input/Input.d.ts.map +1 -0
  87. package/dist/src/core/Label/Label.d.ts +18 -0
  88. package/dist/src/core/Label/Label.d.ts.map +1 -0
  89. package/dist/src/core/Matrix/Matrix.d.ts +13 -0
  90. package/dist/src/core/Matrix/Matrix.d.ts.map +1 -0
  91. package/dist/src/core/Slider/BarSlider.d.ts +30 -0
  92. package/dist/src/core/Slider/BarSlider.d.ts.map +1 -0
  93. package/dist/src/core/Slider/RotarySlider.d.ts +29 -0
  94. package/dist/src/core/Slider/RotarySlider.d.ts.map +1 -0
  95. package/dist/src/core/Slider/SliderValue.d.ts +14 -0
  96. package/dist/src/core/Slider/SliderValue.d.ts.map +1 -0
  97. package/dist/src/core/Slider/types.d.ts +41 -0
  98. package/dist/src/core/Slider/types.d.ts.map +1 -0
  99. package/dist/src/core/Slider/utils.d.ts +50 -0
  100. package/dist/src/core/Slider/utils.d.ts.map +1 -0
  101. package/dist/src/core/Spinner.d.ts +4 -0
  102. package/dist/src/core/Spinner.d.ts.map +1 -0
  103. package/dist/src/core/Tabs/Tabs.d.ts +19 -0
  104. package/dist/src/core/Tabs/Tabs.d.ts.map +1 -0
  105. package/dist/src/hooks/useCombobox.d.ts +15 -0
  106. package/dist/src/hooks/useCombobox.d.ts.map +1 -0
  107. package/dist/src/hooks/useObservable.d.ts +9 -0
  108. package/dist/src/hooks/useObservable.d.ts.map +1 -0
  109. package/dist/src/hooks/useRandom.d.ts +1 -0
  110. package/dist/src/hooks/useRandom.d.ts.map +1 -0
  111. package/dist/src/hooks/useRandomise.d.ts +3 -0
  112. package/dist/src/hooks/useRandomise.d.ts.map +1 -0
  113. package/dist/src/hooks/useSlider.d.ts +21 -0
  114. package/dist/src/hooks/useSlider.d.ts.map +1 -0
  115. package/dist/src/hooks/useTabs.d.ts +15 -0
  116. package/dist/src/hooks/useTabs.d.ts.map +1 -0
  117. package/dist/src/index.d.ts +27 -0
  118. package/dist/src/index.d.ts.map +1 -0
  119. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import React__default, { useState, useEffect, useRef, useCallback } from 'react';
2
+ import React__default, { useState, useEffect, useRef, useReducer, useCallback, createContext, useContext } from 'react';
3
3
  import classnames from 'classnames';
4
4
  import { TabGroup, TabList, Tab, Listbox, ListboxButton, ListboxOptions, ListboxOption } from '@headlessui/react';
5
5
  import * as Juce from 'juce-framework-frontend';
@@ -34,8 +34,8 @@ function styleInject(css, ref) {
34
34
  }
35
35
  }
36
36
 
37
- var css_248z$8 = "@import 'tailwindcss';\n@import 'tailwindcss/base';\n@import 'tailwindcss/utilities';\n\n@theme static {\n --color-brand: #bb68d9;\n --color-alert: #8a0101;\n --color-text: #bab6cf;\n --color-gray-100: #c7c3de;\n --color-gray-200: #9a96ab;\n --color-gray-300: #838091;\n --color-gray-400: #595763;\n --color-gray-500: #4c4a54;\n --color-gray-600: #2e2c33;\n --color-gray-700: #1e1d21;\n --color-gray-800: #101012;\n\n --color-VFDBlue-100: #0d3814;\n --color-VFDBlue-200: #234e4a;\n --color-VFDBlue-300: #128073;\n --color-VFDBlue-400: #138c6e;\n --color-VFDBlue-500: #1abe95;\n --color-VFDBlue-600: #23d8a4;\n --color-VFDBlue-700: #4aeea4;\n --color-VFDBlue-1000: #35edb4;\n --spacing-none: 0px;\n --spacing-xs: 2px;\n --spacing-sm: 4px;\n --spacing-ms: 6px;\n --spacing-md: 8px;\n --spacing-ml: 12px;\n --spacing-lg: 16px;\n --spacing-xl: 20px;\n --m-none: 0px;\n --m-xs: 2px;\n --m-sm: 4px;\n --m-ms: 6px;\n --m-md: 8px;\n --m-ml: 12px;\n --m-lg: 16px;\n --m-xl: 20px;\n --mt-none: 0px;\n --mt-xs: 2px;\n --mt-sm: 4px;\n --mt-ms: 6px;\n --mt-md: 8px;\n --mt-ml: 12px;\n --mt-lg: 16px;\n --mt-xl: 20px;\n --mr-none: 0px;\n --mr-xs: 2px;\n --mr-sm: 4px;\n --mr-ms: 6px;\n --mr-md: 8px;\n --mr-ml: 12px;\n --mr-lg: 16px;\n --mr-xl: 20px;\n --mb-none: 0px;\n --mb-xs: 2px;\n --mb-sm: 4px;\n --mb-ms: 6px;\n --mb-md: 8px;\n --mb-ml: 12px;\n --mb-lg: 16px;\n --mb-xl: 20px;\n --ml-none: 0px;\n --ml-xs: 2px;\n --ml-sm: 4px;\n --ml-ms: 6px;\n --ml-md: 8px;\n --ml-ml: 12px;\n --ml-lg: 16px;\n --ml-xl: 20px;\n --p-none: 0px;\n --p-xs: 2px;\n --p-sm: 4px;\n --p-ms: 6px;\n --p-md: 8px;\n --p-ml: 12px;\n --p-lg: 16px;\n --p-xl: 20px;\n --pt-none: 0px;\n --pt-xs: 2px;\n --pt-sm: 4px;\n --pt-ms: 6px;\n --pt-md: 8px;\n --pt-ml: 12px;\n --pt-lg: 16px;\n --pt-xl: 20px;\n --pr-none: 0px;\n --pr-xs: 2px;\n --pr-sm: 4px;\n --pr-ms: 6px;\n --pr-md: 8px;\n --pr-ml: 12px;\n --pr-lg: 16px;\n --pr-xl: 20px;\n --pb-none: 0px;\n --pb-xs: 2px;\n --pb-sm: 4px;\n --pb-ms: 6px;\n --pb-md: 8px;\n --pb-ml: 12px;\n --pb-lg: 16px;\n --pb-xl: 20px;\n --pl-none: 0px;\n --pl-xs: 2px;\n --pl-sm: 4px;\n --pl-ms: 6px;\n --pl-md: 8px;\n --pl-ml: 12px;\n --pl-lg: 16px;\n --pl-xl: 20px;\n --bg-page: #1e1d21;\n --bg-section: #1e1d21;\n --bg-popover: #1e1d21;\n --bg-highlighted: #838091;\n --bg-muted: #595763;\n --bg-selected: #999999;\n --bg-input: #1e1d21;\n --font-leagueSpartan: 'LeagueSpartan';\n --text-xs: 0.625rem;\n --text-sm: 0.75rem;\n --text-md: 0.875rem;\n --text-lg: 1rem;\n --text-xl: 1.25rem;\n --text-title: 1.75rem;\n --gap-none: 0px;\n --gap-xs: 2px;\n --gap-sm: 4px;\n --gap-ms: 6px;\n --gap-md: 8px;\n --gap-ml: 12px;\n --gap-lg: 16px;\n --gap-xl: 20px;\n}\n\ninput,\ninput:hover,\ninput:focus,\ninput:focus-visible {\n background: transparent;\n border: none;\n outline: none;\n appearance: textfield;\n}\n\nbutton,\nbutton:hover,\nbutton:focus,\nbutton:focus-visible {\n border: none;\n outline: none;\n}\n\nbutton:disabled,\ninput:disabled {\n cursor: not-allowed;\n}\n\n@font-face {\n font-family: LeagueSpartan;\n src: url('./common/assets/fonts/LeagueSpartan-Regular.ttf');\n}\n\n@font-face {\n font-family: LeagueSpartan;\n src: url('./common/assets/fonts/LeagueSpartan-Thin.ttf');\n font-weight: lighter;\n}\n";
38
- styleInject(css_248z$8);
37
+ var css_248z$9 = "@import 'tailwindcss';\n@import 'tailwindcss/base';\n@import 'tailwindcss/utilities';\n\n@theme static {\n --color-brand: #bb68d9;\n --color-alert: #8a0101;\n --color-text: #bab6cf;\n --color-gray-100: #c7c3de;\n --color-gray-200: #9a96ab;\n --color-gray-300: #838091;\n --color-gray-400: #595763;\n --color-gray-500: #4c4a54;\n --color-gray-600: #2e2c33;\n --color-gray-700: #1e1d21;\n --color-gray-800: #101012;\n --color-gray-900: #09090a;\n\n --color-VFDBlue-100: #0d3814;\n --color-VFDBlue-200: #234e4a;\n --color-VFDBlue-300: #128073;\n --color-VFDBlue-400: #138c6e;\n --color-VFDBlue-500: #1abe95;\n --color-VFDBlue-600: #23d8a4;\n --color-VFDBlue-700: #4aeea4;\n --color-VFDBlue-1000: #35edb4;\n --spacing-none: 0px;\n --spacing-xs: 2px;\n --spacing-sm: 4px;\n --spacing-ms: 6px;\n --spacing-md: 8px;\n --spacing-ml: 12px;\n --spacing-lg: 16px;\n --spacing-xl: 20px;\n --m-none: 0px;\n --m-xs: 2px;\n --m-sm: 4px;\n --m-ms: 6px;\n --m-md: 8px;\n --m-ml: 12px;\n --m-lg: 16px;\n --m-xl: 20px;\n --mt-none: 0px;\n --mt-xs: 2px;\n --mt-sm: 4px;\n --mt-ms: 6px;\n --mt-md: 8px;\n --mt-ml: 12px;\n --mt-lg: 16px;\n --mt-xl: 20px;\n --mr-none: 0px;\n --mr-xs: 2px;\n --mr-sm: 4px;\n --mr-ms: 6px;\n --mr-md: 8px;\n --mr-ml: 12px;\n --mr-lg: 16px;\n --mr-xl: 20px;\n --mb-none: 0px;\n --mb-xs: 2px;\n --mb-sm: 4px;\n --mb-ms: 6px;\n --mb-md: 8px;\n --mb-ml: 12px;\n --mb-lg: 16px;\n --mb-xl: 20px;\n --ml-none: 0px;\n --ml-xs: 2px;\n --ml-sm: 4px;\n --ml-ms: 6px;\n --ml-md: 8px;\n --ml-ml: 12px;\n --ml-lg: 16px;\n --ml-xl: 20px;\n --p-none: 0px;\n --p-xs: 2px;\n --p-sm: 4px;\n --p-ms: 6px;\n --p-md: 8px;\n --p-ml: 12px;\n --p-lg: 16px;\n --p-xl: 20px;\n --pt-none: 0px;\n --pt-xs: 2px;\n --pt-sm: 4px;\n --pt-ms: 6px;\n --pt-md: 8px;\n --pt-ml: 12px;\n --pt-lg: 16px;\n --pt-xl: 20px;\n --pr-none: 0px;\n --pr-xs: 2px;\n --pr-sm: 4px;\n --pr-ms: 6px;\n --pr-md: 8px;\n --pr-ml: 12px;\n --pr-lg: 16px;\n --pr-xl: 20px;\n --pb-none: 0px;\n --pb-xs: 2px;\n --pb-sm: 4px;\n --pb-ms: 6px;\n --pb-md: 8px;\n --pb-ml: 12px;\n --pb-lg: 16px;\n --pb-xl: 20px;\n --pl-none: 0px;\n --pl-xs: 2px;\n --pl-sm: 4px;\n --pl-ms: 6px;\n --pl-md: 8px;\n --pl-ml: 12px;\n --pl-lg: 16px;\n --pl-xl: 20px;\n --bg-page: #1e1d21;\n --bg-section: #1e1d21;\n --bg-popover: #09090a;\n --bg-highlighted: #838091;\n --bg-muted: #595763;\n --bg-selected: #2e2c33;\n --bg-input: #1e1d21;\n --font-leagueSpartan: 'LeagueSpartan';\n --text-xs: 0.625rem;\n --text-sm: 0.75rem;\n --text-md: 0.875rem;\n --text-lg: 1rem;\n --text-xl: 1.25rem;\n --text-title: 1.75rem;\n --gap-none: 0px;\n --gap-xs: 2px;\n --gap-sm: 4px;\n --gap-ms: 6px;\n --gap-md: 8px;\n --gap-ml: 12px;\n --gap-lg: 16px;\n --gap-xl: 20px;\n}\n\ninput,\ninput:hover,\ninput:focus,\ninput:focus-visible {\n background: transparent;\n border: none;\n outline: none;\n appearance: textfield;\n}\n\nbutton,\nbutton:hover,\nbutton:focus,\nbutton:focus-visible {\n border: none;\n outline: none;\n}\n\nbutton:disabled,\ninput:disabled {\n cursor: not-allowed;\n}\n\n@font-face {\n font-family: LeagueSpartan;\n /* ascent-override: 70%; */\n src: url('./common/assets/fonts/LeagueSpartan-Regular.ttf');\n}\n\n@font-face {\n font-family: LeagueSpartan;\n /* ascent-override: 70%; */\n src: url('./common/assets/fonts/LeagueSpartan-Thin.ttf');\n font-weight: lighter;\n}\n";
38
+ styleInject(css_248z$9);
39
39
 
40
40
  var Spacing = /*#__PURE__*/ function(Spacing) {
41
41
  Spacing["none"] = "none";
@@ -84,18 +84,18 @@ var FontSizes = /*#__PURE__*/ function(FontSizes) {
84
84
  return FontSizes;
85
85
  }({});
86
86
 
87
- var css_248z$7 = ".Tabs {\n display: flex;\n font-size: 1rem;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-transform: uppercase;\n text-align: center;\n border: 0;\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n.Tabs-Item {\n font-size: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 1px;\n cursor: pointer;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-transform: uppercase;\n text-align: center;\n border: 0;\n appearance: none;\n &:hover,\n &:focus-visible {\n outline: none;\n }\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.Tabs-Item::-moz-selection {\n background: transparent;\n}\n.Tabs-Item::selection {\n background: transparent;\n}\n";
88
- styleInject(css_248z$7);
87
+ var css_248z$8 = ".Tabs {\n display: flex;\n font-size: 1rem;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-transform: uppercase;\n text-align: center;\n border: 0;\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n}\n\n.Tabs-item {\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.Tabs-item::-moz-selection {\n background: transparent;\n}\n.Tabs-item::selection {\n background: transparent;\n}\n";
88
+ styleInject(css_248z$8);
89
89
 
90
- function _array_like_to_array$7(arr, len) {
90
+ function _array_like_to_array$9(arr, len) {
91
91
  if (len == null || len > arr.length) len = arr.length;
92
92
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
93
93
  return arr2;
94
94
  }
95
- function _array_with_holes$7(arr) {
95
+ function _array_with_holes$9(arr) {
96
96
  if (Array.isArray(arr)) return arr;
97
97
  }
98
- function _iterable_to_array_limit$7(arr, i) {
98
+ function _iterable_to_array_limit$9(arr, i) {
99
99
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
100
100
  if (_i == null) return;
101
101
  var _arr = [];
@@ -119,27 +119,27 @@ function _iterable_to_array_limit$7(arr, i) {
119
119
  }
120
120
  return _arr;
121
121
  }
122
- function _non_iterable_rest$7() {
122
+ function _non_iterable_rest$9() {
123
123
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
124
124
  }
125
- function _sliced_to_array$7(arr, i) {
126
- return _array_with_holes$7(arr) || _iterable_to_array_limit$7(arr, i) || _unsupported_iterable_to_array$7(arr, i) || _non_iterable_rest$7();
125
+ function _sliced_to_array$9(arr, i) {
126
+ return _array_with_holes$9(arr) || _iterable_to_array_limit$9(arr, i) || _unsupported_iterable_to_array$9(arr, i) || _non_iterable_rest$9();
127
127
  }
128
- function _unsupported_iterable_to_array$7(o, minLen) {
128
+ function _unsupported_iterable_to_array$9(o, minLen) {
129
129
  if (!o) return;
130
- if (typeof o === "string") return _array_like_to_array$7(o, minLen);
130
+ if (typeof o === "string") return _array_like_to_array$9(o, minLen);
131
131
  var n = Object.prototype.toString.call(o).slice(8, -1);
132
132
  if (n === "Object" && o.constructor) n = o.constructor.name;
133
133
  if (n === "Map" || n === "Set") return Array.from(n);
134
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$7(o, minLen);
134
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$9(o, minLen);
135
135
  }
136
136
  function Tabs(param) {
137
137
  var items = param.items, className = param.className, _param_padding = param.padding, padding = _param_padding === void 0 ? [
138
138
  Spacing.mediumSmall
139
139
  ] : _param_padding, _param_margin = param.margin, margin = _param_margin === void 0 ? [
140
140
  Spacing.none
141
- ] : _param_margin, onChange = param.onChange;
142
- var _useState = _sliced_to_array$7(useState(0), 2), selectedItem = _useState[0], setSelectedItem = _useState[1];
141
+ ] : _param_margin, onChange = param.onChange, selectedIndex = param.selectedIndex;
142
+ var _useState = _sliced_to_array$9(useState(0), 2), selectedItem = _useState[0], setSelectedItem = _useState[1];
143
143
  var handleChange = function(index) {
144
144
  setSelectedItem(index);
145
145
  onChange(index);
@@ -155,6 +155,7 @@ function Tabs(param) {
155
155
  marginBottom: "var(--mb-".concat((_margin_1 = margin[2]) !== null && _margin_1 !== void 0 ? _margin_1 : margin[0], ")"),
156
156
  marginLeft: "var(--ml-".concat((_ref = (_margin_2 = margin[3]) !== null && _margin_2 !== void 0 ? _margin_2 : margin[1]) !== null && _ref !== void 0 ? _ref : margin[0], ")")
157
157
  },
158
+ selectedIndex: selectedIndex,
158
159
  onChange: function(index) {
159
160
  return handleChange(index);
160
161
  }
@@ -181,8 +182,8 @@ function Tabs(param) {
181
182
  Tabs.padding = Spacing;
182
183
  Tabs.margin = Spacing;
183
184
 
184
- var css_248z$6 = ".Button {\n font-size: var(--text-xs);\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: var(--spacing-ms);\n padding-left: var(--spacing-ms);\n cursor: pointer;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-align: enter;\n border: 0;\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n &.xSmall {\n width: var(--spacing-ml);\n height: var(--spacing-ml);\n }\n &.small {\n font-size: var(--text-xs);\n min-width: 1rem;\n min-height: var(--spacing-sm);\n }\n &.large {\n border-radius: var(--radius-sm);\n min-width: 1rem;\n min-height: var(--spacing-xl);\n }\n}\n";
185
- styleInject(css_248z$6);
185
+ var css_248z$7 = ".Button {\n font-size: var(--text-xs);\n display: flex;\n align-items: center;\n justify-content: center;\n padding-right: var(--spacing-ms);\n padding-left: var(--spacing-ms);\n cursor: pointer;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-align: enter;\n border: 0;\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n &.xSmall {\n width: var(--spacing-ml);\n height: var(--spacing-ml);\n }\n &.small {\n font-size: var(--text-xs);\n min-width: 1rem;\n min-height: var(--spacing-sm);\n }\n &.large {\n border-radius: var(--radius-sm);\n min-width: 1rem;\n min-height: var(--spacing-xl);\n }\n}\n";
186
+ styleInject(css_248z$7);
186
187
 
187
188
  var ButtonSize = /*#__PURE__*/ function(ButtonSize) {
188
189
  ButtonSize["xSmall"] = "xSmall";
@@ -196,15 +197,15 @@ var ButtonType = /*#__PURE__*/ function(ButtonType) {
196
197
  return ButtonType;
197
198
  }({});
198
199
 
199
- function _array_like_to_array$6(arr, len) {
200
+ function _array_like_to_array$8(arr, len) {
200
201
  if (len == null || len > arr.length) len = arr.length;
201
202
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
202
203
  return arr2;
203
204
  }
204
- function _array_with_holes$6(arr) {
205
+ function _array_with_holes$8(arr) {
205
206
  if (Array.isArray(arr)) return arr;
206
207
  }
207
- function _define_property$c(obj, key, value) {
208
+ function _define_property$d(obj, key, value) {
208
209
  if (key in obj) {
209
210
  Object.defineProperty(obj, key, {
210
211
  value: value,
@@ -217,7 +218,7 @@ function _define_property$c(obj, key, value) {
217
218
  }
218
219
  return obj;
219
220
  }
220
- function _iterable_to_array_limit$6(arr, i) {
221
+ function _iterable_to_array_limit$8(arr, i) {
221
222
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
222
223
  if (_i == null) return;
223
224
  var _arr = [];
@@ -241,10 +242,10 @@ function _iterable_to_array_limit$6(arr, i) {
241
242
  }
242
243
  return _arr;
243
244
  }
244
- function _non_iterable_rest$6() {
245
+ function _non_iterable_rest$8() {
245
246
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
246
247
  }
247
- function _object_spread$c(target) {
248
+ function _object_spread$d(target) {
248
249
  for(var i = 1; i < arguments.length; i++){
249
250
  var source = arguments[i] != null ? arguments[i] : {};
250
251
  var ownKeys = Object.keys(source);
@@ -254,27 +255,29 @@ function _object_spread$c(target) {
254
255
  }));
255
256
  }
256
257
  ownKeys.forEach(function(key) {
257
- _define_property$c(target, key, source[key]);
258
+ _define_property$d(target, key, source[key]);
258
259
  });
259
260
  }
260
261
  return target;
261
262
  }
262
- function _sliced_to_array$6(arr, i) {
263
- return _array_with_holes$6(arr) || _iterable_to_array_limit$6(arr, i) || _unsupported_iterable_to_array$6(arr, i) || _non_iterable_rest$6();
263
+ function _sliced_to_array$8(arr, i) {
264
+ return _array_with_holes$8(arr) || _iterable_to_array_limit$8(arr, i) || _unsupported_iterable_to_array$8(arr, i) || _non_iterable_rest$8();
264
265
  }
265
- function _unsupported_iterable_to_array$6(o, minLen) {
266
+ function _unsupported_iterable_to_array$8(o, minLen) {
266
267
  if (!o) return;
267
- if (typeof o === "string") return _array_like_to_array$6(o, minLen);
268
+ if (typeof o === "string") return _array_like_to_array$8(o, minLen);
268
269
  var n = Object.prototype.toString.call(o).slice(8, -1);
269
270
  if (n === "Object" && o.constructor) n = o.constructor.name;
270
271
  if (n === "Map" || n === "Set") return Array.from(n);
271
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$6(o, minLen);
272
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$8(o, minLen);
272
273
  }
273
274
  function Button(param) {
274
275
  var disabled = param.disabled, text = param.text, id = param.id, className = param.className, style = param.style, onClick = param.onClick, children = param.children, _param_padding = param.padding, padding = _param_padding === void 0 ? [
275
276
  Spacing.small
276
- ] : _param_padding, _param_type = param.type, type = _param_type === void 0 ? ButtonType.latch : _param_type, _param_size = param.size, size = _param_size === void 0 ? ButtonSize.large : _param_size;
277
- var _React_useState = _sliced_to_array$6(React__default.useState(false), 2), isSelected = _React_useState[0], setIsSelected = _React_useState[1];
277
+ ] : _param_padding, _param_margin = param.margin, margin = _param_margin === void 0 ? [
278
+ Spacing.none
279
+ ] : _param_margin, _param_type = param.type, type = _param_type === void 0 ? ButtonType.latch : _param_type, _param_size = param.size, size = _param_size === void 0 ? ButtonSize.large : _param_size;
280
+ var _React_useState = _sliced_to_array$8(React__default.useState(false), 2), isSelected = _React_useState[0], setIsSelected = _React_useState[1];
278
281
  var buttonState = Juce.getToggleState(id);
279
282
  var isLocalhost = window.location.hostname === 'localhost';
280
283
  // Update the local state when the ID changes
@@ -325,37 +328,95 @@ function Button(param) {
325
328
  }, [
326
329
  isSelected
327
330
  ]);
328
- var _padding_, _padding_1, _padding_2, _ref;
331
+ var _padding_, _padding_1, _padding_2, _ref, _margin_, _margin_1, _margin_2, _ref1;
329
332
  return /*#__PURE__*/ React__default.createElement("button", {
330
333
  id: id,
331
334
  onMouseDown: handleMouseDown,
332
335
  disabled: disabled,
333
336
  onClick: onClick && onClick,
334
- style: _object_spread$c({
337
+ style: _object_spread$d({
335
338
  paddingTop: "var(--p-".concat(padding[0], ")"),
336
339
  paddingRight: "var(--p-".concat((_padding_ = padding[1]) !== null && _padding_ !== void 0 ? _padding_ : padding[0], ")"),
337
340
  paddingBottom: "var(--p-".concat((_padding_1 = padding[2]) !== null && _padding_1 !== void 0 ? _padding_1 : padding[0], ")"),
338
- paddingLeft: "var(--p-".concat((_ref = (_padding_2 = padding[3]) !== null && _padding_2 !== void 0 ? _padding_2 : padding[1]) !== null && _ref !== void 0 ? _ref : padding[0], ")")
341
+ paddingLeft: "var(--p-".concat((_ref = (_padding_2 = padding[3]) !== null && _padding_2 !== void 0 ? _padding_2 : padding[1]) !== null && _ref !== void 0 ? _ref : padding[0], ")"),
342
+ marginTop: "var(--p-".concat(margin[0], ")"),
343
+ marginRight: "var(--p-".concat((_margin_ = margin[1]) !== null && _margin_ !== void 0 ? _margin_ : margin[0], ")"),
344
+ marginBottom: "var(--p-".concat((_margin_1 = margin[2]) !== null && _margin_1 !== void 0 ? _margin_1 : margin[0], ")"),
345
+ marginLeft: "var(--p-".concat((_ref1 = (_margin_2 = margin[3]) !== null && _margin_2 !== void 0 ? _margin_2 : margin[1]) !== null && _ref1 !== void 0 ? _ref1 : margin[0], ")")
339
346
  }, style),
340
347
  className: classnames('Button', isSelected && 'selected', "".concat(size), className)
341
348
  }, size !== ButtonSize.xSmall && (text ? text : children));
342
349
  }
343
350
  Button.padding = Spacing;
351
+ Button.margin = Spacing;
344
352
  Button.type = ButtonType;
345
353
  Button.size = ButtonSize;
346
354
 
347
- var css_248z$5 = ".Dropdown-button {\n font-size: var(--text-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-lg);\n cursor: pointer;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-transform: uppercase;\n text-align: center;\n border: 0;\n border-radius: var(--radius-sm);\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n height: var(--spacing-xl);\n background: var(--bg-input);\n &:hover,\n &:focus,\n &:active {\n outline: none;\n background-color: var(--bg-highlighted);\n }\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.Dropdown-item {\n background-color: var(--bg-popover);\n padding: var(--spacing-l);\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n &:hover {\n background-color: var(--bg-highlighted);\n }\n &[data-selected] {\n background-color: var(--bg-selected);\n }\n}\n";
348
- styleInject(css_248z$5);
355
+ var css_248z$6 = ".Dropdown-button {\n font-size: var(--text-sm);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-lg);\n cursor: pointer;\n vertical-align: middle;\n white-space: nowrap;\n text-decoration: none;\n text-transform: uppercase;\n text-align: center;\n border: 0;\n border-radius: var(--radius-sm);\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n height: var(--spacing-xl);\n background: var(--bg-input);\n &:hover,\n &:focus,\n &:active {\n outline: none;\n background-color: var(--bg-highlighted);\n }\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.Dropdown-item {\n background-color: var(--bg-popover);\n padding: var(--spacing-l);\n cursor: pointer;\n user-select: none;\n -webkit-user-select: none;\n &:hover {\n background-color: var(--bg-highlighted);\n }\n &[data-selected] {\n background-color: var(--bg-selected);\n }\n}\n";
356
+ styleInject(css_248z$6);
349
357
 
350
- function _array_like_to_array$5(arr, len) {
358
+ function useObservable(param) {
359
+ var onFire = param.onFire;
360
+ var observers = useRef([]);
361
+ var subscribe = function(observer, id) {
362
+ var _observers_current;
363
+ if (((_observers_current = observers.current) === null || _observers_current === void 0 ? void 0 : _observers_current.find(function(item) {
364
+ return item[1] === id;
365
+ })) === undefined) {
366
+ observers.current.push([
367
+ observer,
368
+ id
369
+ ]);
370
+ }
371
+ };
372
+ var unsubscribe = function(observer, id) {
373
+ var _observers_current;
374
+ if (((_observers_current = observers.current) === null || _observers_current === void 0 ? void 0 : _observers_current.find(function(item) {
375
+ return item[1] === id;
376
+ })) !== undefined) {
377
+ var _observers_current1;
378
+ var index = (_observers_current1 = observers.current) === null || _observers_current1 === void 0 ? void 0 : _observers_current1.findIndex(function(item) {
379
+ return item[1] === id;
380
+ });
381
+ observers.current.splice(index, 1);
382
+ }
383
+ };
384
+ var fire = function() {
385
+ var _observers_current;
386
+ onFire();
387
+ (_observers_current = observers.current) === null || _observers_current === void 0 ? void 0 : _observers_current.forEach(function(observer) {
388
+ return observer[0]();
389
+ });
390
+ };
391
+ return {
392
+ subscribe: subscribe,
393
+ unsubscribe: unsubscribe,
394
+ fire: fire
395
+ };
396
+ }
397
+
398
+ function _array_like_to_array$7(arr, len) {
351
399
  if (len == null || len > arr.length) len = arr.length;
352
400
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
353
401
  return arr2;
354
402
  }
355
- function _array_with_holes$5(arr) {
403
+ function _array_with_holes$7(arr) {
356
404
  if (Array.isArray(arr)) return arr;
357
405
  }
358
- function _iterable_to_array_limit$5(arr, i) {
406
+ function _define_property$c(obj, key, value) {
407
+ if (key in obj) {
408
+ Object.defineProperty(obj, key, {
409
+ value: value,
410
+ enumerable: true,
411
+ configurable: true,
412
+ writable: true
413
+ });
414
+ } else {
415
+ obj[key] = value;
416
+ }
417
+ return obj;
418
+ }
419
+ function _iterable_to_array_limit$7(arr, i) {
359
420
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
360
421
  if (_i == null) return;
361
422
  var _arr = [];
@@ -379,42 +440,187 @@ function _iterable_to_array_limit$5(arr, i) {
379
440
  }
380
441
  return _arr;
381
442
  }
382
- function _non_iterable_rest$5() {
443
+ function _non_iterable_rest$7() {
383
444
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
384
445
  }
385
- function _sliced_to_array$5(arr, i) {
386
- return _array_with_holes$5(arr) || _iterable_to_array_limit$5(arr, i) || _unsupported_iterable_to_array$5(arr, i) || _non_iterable_rest$5();
446
+ function _object_spread$c(target) {
447
+ for(var i = 1; i < arguments.length; i++){
448
+ var source = arguments[i] != null ? arguments[i] : {};
449
+ var ownKeys = Object.keys(source);
450
+ if (typeof Object.getOwnPropertySymbols === "function") {
451
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
452
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
453
+ }));
454
+ }
455
+ ownKeys.forEach(function(key) {
456
+ _define_property$c(target, key, source[key]);
457
+ });
458
+ }
459
+ return target;
387
460
  }
388
- function _unsupported_iterable_to_array$5(o, minLen) {
461
+ function ownKeys$2(object, enumerableOnly) {
462
+ var keys = Object.keys(object);
463
+ if (Object.getOwnPropertySymbols) {
464
+ var symbols = Object.getOwnPropertySymbols(object);
465
+ keys.push.apply(keys, symbols);
466
+ }
467
+ return keys;
468
+ }
469
+ function _object_spread_props$2(target, source) {
470
+ source = source != null ? source : {};
471
+ if (Object.getOwnPropertyDescriptors) {
472
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
473
+ } else {
474
+ ownKeys$2(Object(source)).forEach(function(key) {
475
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
476
+ });
477
+ }
478
+ return target;
479
+ }
480
+ function _sliced_to_array$7(arr, i) {
481
+ return _array_with_holes$7(arr) || _iterable_to_array_limit$7(arr, i) || _unsupported_iterable_to_array$7(arr, i) || _non_iterable_rest$7();
482
+ }
483
+ function _unsupported_iterable_to_array$7(o, minLen) {
389
484
  if (!o) return;
390
- if (typeof o === "string") return _array_like_to_array$5(o, minLen);
485
+ if (typeof o === "string") return _array_like_to_array$7(o, minLen);
391
486
  var n = Object.prototype.toString.call(o).slice(8, -1);
392
487
  if (n === "Object" && o.constructor) n = o.constructor.name;
393
488
  if (n === "Map" || n === "Set") return Array.from(n);
394
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$5(o, minLen);
489
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$7(o, minLen);
395
490
  }
396
- function Dropdown(param) {
397
- var _param_items = param.items, items = _param_items === void 0 ? [
398
- 'Mock Item 1',
399
- 'Mock Item 2',
400
- 'Mock Item 3'
401
- ] : _param_items, className = param.className, id = param.id, style = param.style;
491
+ // Initial state
492
+ var defaultGlobalStateValue = {
493
+ highlightedItem: {
494
+ label: 'Antimatter Audio',
495
+ value: undefined
496
+ }
497
+ };
498
+ // Reducer function to handle state updates
499
+ var reducer = function(state, action) {
500
+ switch(action.type){
501
+ case 'SET_HIGHLIGHTED_ITEM':
502
+ return _object_spread_props$2(_object_spread$c({}, state), {
503
+ highlightedItem: action.payload
504
+ });
505
+ default:
506
+ return state;
507
+ }
508
+ };
509
+ // Create the context
510
+ var GlobalContext = /*#__PURE__*/ createContext({
511
+ globalState: defaultGlobalStateValue
512
+ });
513
+ // Custom hook for consuming context with a selector
514
+ function useGlobalContext(selector) {
515
+ var localContext = useContext(GlobalContext);
516
+ return selector ? selector(localContext) : localContext;
517
+ }
518
+ // Context provider
519
+ function GlobalContextProvider(param) {
520
+ var children = param.children;
521
+ var _useReducer = _sliced_to_array$7(useReducer(reducer, defaultGlobalStateValue), 2), state = _useReducer[0], dispatch = _useReducer[1];
522
+ var setHighlightedItem = useCallback(function(highlightedItem) {
523
+ dispatch({
524
+ type: 'SET_HIGHLIGHTED_ITEM',
525
+ payload: highlightedItem
526
+ });
527
+ }, []);
528
+ var onFire = function() {
529
+ //@ts-expect-error
530
+ window.__JUCE__.backend.emitEvent('setRandom', {});
531
+ };
532
+ var useRandom = useObservable({
533
+ onFire: onFire
534
+ });
535
+ var value = {
536
+ globalState: state,
537
+ setHighlightedItem: setHighlightedItem,
538
+ useRandom: useRandom
539
+ };
540
+ return /*#__PURE__*/ React__default.createElement(GlobalContext.Provider, {
541
+ value: value
542
+ }, children);
543
+ }
544
+
545
+ function _array_like_to_array$6(arr, len) {
546
+ if (len == null || len > arr.length) len = arr.length;
547
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
548
+ return arr2;
549
+ }
550
+ function _array_with_holes$6(arr) {
551
+ if (Array.isArray(arr)) return arr;
552
+ }
553
+ function _iterable_to_array_limit$6(arr, i) {
554
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
555
+ if (_i == null) return;
556
+ var _arr = [];
557
+ var _n = true;
558
+ var _d = false;
559
+ var _s, _e;
560
+ try {
561
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
562
+ _arr.push(_s.value);
563
+ if (i && _arr.length === i) break;
564
+ }
565
+ } catch (err) {
566
+ _d = true;
567
+ _e = err;
568
+ } finally{
569
+ try {
570
+ if (!_n && _i["return"] != null) _i["return"]();
571
+ } finally{
572
+ if (_d) throw _e;
573
+ }
574
+ }
575
+ return _arr;
576
+ }
577
+ function _non_iterable_rest$6() {
578
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
579
+ }
580
+ function _sliced_to_array$6(arr, i) {
581
+ return _array_with_holes$6(arr) || _iterable_to_array_limit$6(arr, i) || _unsupported_iterable_to_array$6(arr, i) || _non_iterable_rest$6();
582
+ }
583
+ function _unsupported_iterable_to_array$6(o, minLen) {
584
+ if (!o) return;
585
+ if (typeof o === "string") return _array_like_to_array$6(o, minLen);
586
+ var n = Object.prototype.toString.call(o).slice(8, -1);
587
+ if (n === "Object" && o.constructor) n = o.constructor.name;
588
+ if (n === "Map" || n === "Set") return Array.from(n);
589
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$6(o, minLen);
590
+ }
591
+ var useCombobox = function(param) {
592
+ var id = param.id, label = param.label, _param_items = param.items, items = _param_items === void 0 ? [] : _param_items, onChange = param.onChange, _param_displayValInHeader = param.displayValInHeader, displayValInHeader = _param_displayValInHeader === void 0 ? true : _param_displayValInHeader;
402
593
  var comboBoxState = Juce.getComboBoxState(id);
403
- var _useState = _sliced_to_array$5(useState(comboBoxState.getChoiceIndex()), 2), value = _useState[0], setValue = _useState[1];
404
- var _useState1 = _sliced_to_array$5(useState(comboBoxState.properties), 2), properties = _useState1[0], setProperties = _useState1[1];
405
- var handleChange = function(event) {
406
- comboBoxState.setChoiceIndex(event);
407
- setValue(event);
594
+ var _useState = _sliced_to_array$6(useState(comboBoxState.getChoiceIndex()), 2), value = _useState[0], setValue = _useState[1];
595
+ var _useState1 = _sliced_to_array$6(useState(comboBoxState.properties), 2), properties = _useState1[0], setProperties = _useState1[1];
596
+ var setHighlightedItem = useGlobalContext().setHighlightedItem;
597
+ var choices = properties.choices.length ? properties.choices : items;
598
+ var prevIndex = useRef(null);
599
+ var handleChange = function(index) {
600
+ if (index !== prevIndex.current) {
601
+ comboBoxState.setChoiceIndex(index);
602
+ setValue(index);
603
+ onChange && onChange(index);
604
+ // //@ts-expect-error
605
+ // window.__JUCE__.backend.emitEvent('undoableActionOccurred', {});
606
+ if (displayValInHeader) {
607
+ setHighlightedItem({
608
+ label: label,
609
+ value: choices === null || choices === void 0 ? void 0 : choices[index]
610
+ });
611
+ }
612
+ prevIndex.current = index;
613
+ }
408
614
  };
409
615
  useEffect(function() {
410
616
  var comboBoxState = Juce.getComboBoxState(id);
411
- setValue(comboBoxState.getChoiceIndex());
617
+ handleChange(comboBoxState.getChoiceIndex());
412
618
  }, [
413
619
  id
414
620
  ]);
415
621
  useEffect(function() {
416
622
  var valueListenerId = comboBoxState.valueChangedEvent.addListener(function() {
417
- setValue(comboBoxState.getChoiceIndex());
623
+ handleChange(comboBoxState.getChoiceIndex());
418
624
  });
419
625
  var propertiesListenerId = comboBoxState.propertiesChangedEvent.addListener(function() {
420
626
  setProperties(comboBoxState.properties);
@@ -424,8 +630,38 @@ function Dropdown(param) {
424
630
  comboBoxState.propertiesChangedEvent.removeListener(propertiesListenerId);
425
631
  };
426
632
  });
427
- var displayedItems = properties.choices.length ? properties.choices : items;
428
- return /*#__PURE__*/ React__default.createElement(Listbox, {
633
+ var onMouseEnter = function() {
634
+ if (displayValInHeader) {
635
+ setHighlightedItem({
636
+ label: label,
637
+ value: choices === null || choices === void 0 ? void 0 : choices[value]
638
+ });
639
+ }
640
+ };
641
+ return {
642
+ value: value,
643
+ setValue: setValue,
644
+ choices: choices,
645
+ onMouseEnter: onMouseEnter,
646
+ handleChange: handleChange
647
+ };
648
+ };
649
+
650
+ function Dropdown(param) {
651
+ var _param_items = param.items, items = _param_items === void 0 ? [
652
+ 'Mock Item 1',
653
+ 'Mock Item 2',
654
+ 'Mock Item 3'
655
+ ] : _param_items, label = param.label, className = param.className, onChange = param.onChange, id = param.id, style = param.style;
656
+ var _useCombobox = useCombobox({
657
+ id: id,
658
+ label: label,
659
+ items: items,
660
+ onChange: onChange
661
+ }), value = _useCombobox.value, choices = _useCombobox.choices, onMouseEnter = _useCombobox.onMouseEnter, handleChange = _useCombobox.handleChange;
662
+ return /*#__PURE__*/ React__default.createElement("div", {
663
+ onMouseEnter: onMouseEnter
664
+ }, /*#__PURE__*/ React__default.createElement(Listbox, {
429
665
  value: value,
430
666
  onChange: handleChange
431
667
  }, /*#__PURE__*/ React__default.createElement(ListboxButton, {
@@ -435,17 +671,17 @@ function Dropdown(param) {
435
671
  onChange: function(value) {
436
672
  return console.log(value);
437
673
  }
438
- }, displayedItems[value]), /*#__PURE__*/ React__default.createElement(ListboxOptions, {
674
+ }, choices[value]), /*#__PURE__*/ React__default.createElement(ListboxOptions, {
439
675
  anchor: "bottom",
440
676
  portal: false,
441
677
  className: "Dropdown-items z-10"
442
- }, displayedItems.map(function(item, i) {
678
+ }, choices.map(function(item, i) {
443
679
  return /*#__PURE__*/ React__default.createElement(ListboxOption, {
444
680
  className: classnames('Dropdown-item'),
445
681
  key: item,
446
682
  value: i
447
- }, displayedItems[i]);
448
- })));
683
+ }, item);
684
+ }))));
449
685
  }
450
686
 
451
687
  var validate = function(param) {
@@ -480,15 +716,15 @@ var randomizeValue = function(min, max) {
480
716
  return Math.random() * (max - min) + min;
481
717
  };
482
718
 
483
- var css_248z$4 = ".TextInput {\n user-select: none;\n -webkit-user-select: none;\n}\n\n.TextInput::-moz-selection {\n background: transparent;\n}\n.TextInput::selection {\n background: transparent;\n}\n";
484
- styleInject(css_248z$4);
719
+ var css_248z$5 = ".TextInput {\n user-select: none;\n -webkit-user-select: none;\n}\n\n.TextInput::-moz-selection {\n background: transparent;\n}\n.TextInput::selection {\n background: transparent;\n}\n";
720
+ styleInject(css_248z$5);
485
721
 
486
- function _array_like_to_array$4(arr, len) {
722
+ function _array_like_to_array$5(arr, len) {
487
723
  if (len == null || len > arr.length) len = arr.length;
488
724
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
489
725
  return arr2;
490
726
  }
491
- function _array_with_holes$4(arr) {
727
+ function _array_with_holes$5(arr) {
492
728
  if (Array.isArray(arr)) return arr;
493
729
  }
494
730
  function _define_property$b(obj, key, value) {
@@ -504,7 +740,7 @@ function _define_property$b(obj, key, value) {
504
740
  }
505
741
  return obj;
506
742
  }
507
- function _iterable_to_array_limit$4(arr, i) {
743
+ function _iterable_to_array_limit$5(arr, i) {
508
744
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
509
745
  if (_i == null) return;
510
746
  var _arr = [];
@@ -528,7 +764,7 @@ function _iterable_to_array_limit$4(arr, i) {
528
764
  }
529
765
  return _arr;
530
766
  }
531
- function _non_iterable_rest$4() {
767
+ function _non_iterable_rest$5() {
532
768
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
533
769
  }
534
770
  function _object_spread$b(target) {
@@ -546,16 +782,16 @@ function _object_spread$b(target) {
546
782
  }
547
783
  return target;
548
784
  }
549
- function _sliced_to_array$4(arr, i) {
550
- return _array_with_holes$4(arr) || _iterable_to_array_limit$4(arr, i) || _unsupported_iterable_to_array$4(arr, i) || _non_iterable_rest$4();
785
+ function _sliced_to_array$5(arr, i) {
786
+ return _array_with_holes$5(arr) || _iterable_to_array_limit$5(arr, i) || _unsupported_iterable_to_array$5(arr, i) || _non_iterable_rest$5();
551
787
  }
552
- function _unsupported_iterable_to_array$4(o, minLen) {
788
+ function _unsupported_iterable_to_array$5(o, minLen) {
553
789
  if (!o) return;
554
- if (typeof o === "string") return _array_like_to_array$4(o, minLen);
790
+ if (typeof o === "string") return _array_like_to_array$5(o, minLen);
555
791
  var n = Object.prototype.toString.call(o).slice(8, -1);
556
792
  if (n === "Object" && o.constructor) n = o.constructor.name;
557
793
  if (n === "Map" || n === "Set") return Array.from(n);
558
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$4(o, minLen);
794
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$5(o, minLen);
559
795
  }
560
796
  // import { decimalToPercent, percentToDecimal } from '../../common/utils';
561
797
  // import debounce from 'lodash.debounce';
@@ -567,9 +803,9 @@ var InputTypes = /*#__PURE__*/ function(InputTypes) {
567
803
  function Input(param) {
568
804
  var onComplete = param.onComplete, value = param.value, min = param.min, max = param.max, _param_type = param.type, type = _param_type === void 0 ? "text" : _param_type, _param_minLength = param.minLength, minLength = _param_minLength === void 0 ? 1 : _param_minLength, _param_maxLength = param.maxLength, maxLength = _param_maxLength === void 0 ? 20 : _param_maxLength, fontSize = param.fontSize, style = param.style, className = param.className, id = param.id, _param_textColor = param.textColor, textColor = _param_textColor === void 0 ? '#999' : _param_textColor;
569
805
  var _inputRef_current;
570
- var _useState = _sliced_to_array$4(useState(value), 2), internalValue = _useState[0], setInternalValue = _useState[1];
571
- var _useState1 = _sliced_to_array$4(useState(false), 2), hasError = _useState1[0], setHasError = _useState1[1];
572
- var _useState2 = _sliced_to_array$4(useState(false), 2), hasIncompleteValue = _useState2[0], setHasIncompleteValue = _useState2[1];
806
+ var _useState = _sliced_to_array$5(useState(value), 2), internalValue = _useState[0], setInternalValue = _useState[1];
807
+ var _useState1 = _sliced_to_array$5(useState(false), 2), hasError = _useState1[0], setHasError = _useState1[1];
808
+ var _useState2 = _sliced_to_array$5(useState(false), 2), hasIncompleteValue = _useState2[0], setHasIncompleteValue = _useState2[1];
573
809
  var valueRef = useRef(null);
574
810
  var timer, timeoutVal = 2000;
575
811
  // (inputValue === '' || /^-?\d+$/.test(inputValue)
@@ -628,7 +864,6 @@ function Input(param) {
628
864
  // triggers a check to see if the user is actually done typing
629
865
  inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) && (inputRef === null || inputRef === void 0 ? void 0 : (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.addEventListener('keyup', handleKeyUp));
630
866
  var handleChange = useCallback(function(e) {
631
- // console.log(e, e.target.value);
632
867
  var newValue = e.target.value;
633
868
  setHasError(false);
634
869
  var _validate = validate({
@@ -655,7 +890,6 @@ function Input(param) {
655
890
  ]);
656
891
  useEffect(function() {
657
892
  setInternalValue(value);
658
- // console.log(value, 'VALUUUUUU');
659
893
  var isValid = validate({
660
894
  value: value,
661
895
  type: type,
@@ -805,15 +1039,15 @@ var getPosition = function(param) {
805
1039
  }
806
1040
  };
807
1041
 
808
- function _array_like_to_array$3(arr, len) {
1042
+ function _array_like_to_array$4(arr, len) {
809
1043
  if (len == null || len > arr.length) len = arr.length;
810
1044
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
811
1045
  return arr2;
812
1046
  }
813
- function _array_with_holes$3(arr) {
1047
+ function _array_with_holes$4(arr) {
814
1048
  if (Array.isArray(arr)) return arr;
815
1049
  }
816
- function _iterable_to_array_limit$3(arr, i) {
1050
+ function _iterable_to_array_limit$4(arr, i) {
817
1051
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
818
1052
  if (_i == null) return;
819
1053
  var _arr = [];
@@ -837,24 +1071,24 @@ function _iterable_to_array_limit$3(arr, i) {
837
1071
  }
838
1072
  return _arr;
839
1073
  }
840
- function _non_iterable_rest$3() {
1074
+ function _non_iterable_rest$4() {
841
1075
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
842
1076
  }
843
- function _sliced_to_array$3(arr, i) {
844
- return _array_with_holes$3(arr) || _iterable_to_array_limit$3(arr, i) || _unsupported_iterable_to_array$3(arr, i) || _non_iterable_rest$3();
1077
+ function _sliced_to_array$4(arr, i) {
1078
+ return _array_with_holes$4(arr) || _iterable_to_array_limit$4(arr, i) || _unsupported_iterable_to_array$4(arr, i) || _non_iterable_rest$4();
845
1079
  }
846
- function _unsupported_iterable_to_array$3(o, minLen) {
1080
+ function _unsupported_iterable_to_array$4(o, minLen) {
847
1081
  if (!o) return;
848
- if (typeof o === "string") return _array_like_to_array$3(o, minLen);
1082
+ if (typeof o === "string") return _array_like_to_array$4(o, minLen);
849
1083
  var n = Object.prototype.toString.call(o).slice(8, -1);
850
1084
  if (n === "Object" && o.constructor) n = o.constructor.name;
851
1085
  if (n === "Map" || n === "Set") return Array.from(n);
852
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$3(o, minLen);
1086
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$4(o, minLen);
853
1087
  }
854
1088
  // 20.0f, 15000.0f, 0.1f, 0.7f),800.0f
855
1089
  // ValueType rangeStart, ValueType rangeEnd, ValueType intervalValue, ValueType skewFactor, bool useSymmetricSkew=false)
856
1090
  var useSlider = function(param) {
857
- var id = param.id, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
1091
+ var id = param.id, label = param.label, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
858
1092
  start: 20,
859
1093
  end: 15000,
860
1094
  interval: 0.1,
@@ -872,22 +1106,39 @@ var useSlider = function(param) {
872
1106
  * AudioProcessorParameter::getValue() (C++).
873
1107
  */ // See https://github.com/juce-framework/JUCE/blob/51d11a2be6d5c97ccf12b4e5e827006e19f0555a/modules/juce_gui_extra/native/javascript/index.js#L230C1-L238C6
874
1108
  // NOTE: We can think of this as a percentage value, in 0 to 1 format
875
- var _useState = _sliced_to_array$3(useState(0), 2), scaledValue = _useState[0], setScaledValue = _useState[1];
876
- var _useState1 = _sliced_to_array$3(useState(0), 2), normalisedValue = _useState1[0], setNormalisedValue = _useState1[1];
877
- var _useState2 = _sliced_to_array$3(useState(), 2), properties = _useState2[0], setProperties = _useState2[1];
1109
+ var _useState = _sliced_to_array$4(useState(0), 2), scaledValue = _useState[0], setScaledValue = _useState[1];
1110
+ var _useState1 = _sliced_to_array$4(useState(0), 2), normalisedValue = _useState1[0], setNormalisedValue = _useState1[1];
1111
+ var _useState2 = _sliced_to_array$4(useState(), 2), properties = _useState2[0], setProperties = _useState2[1];
878
1112
  var scaledValueRef = useRef(null);
879
1113
  var normalisedValueRef = useRef(null);
880
- var randomValueSetCounter = useRef(null);
1114
+ // const randomValueSetCounter = useRef<number>(null);
1115
+ var _useGlobalContext = useGlobalContext(), useRandom = _useGlobalContext.useRandom, setHighlightedItem = _useGlobalContext.setHighlightedItem;
881
1116
  // Set the initial state
1117
+ //@ts-expect-error
882
1118
  useEffect(function() {
883
1119
  var sliderState = Juce.getSliderState(id);
884
- if (isLocalhost) {
1120
+ var setRandom = function() {
1121
+ var _sliderState_properties, _sliderState_properties1, _sliderState_properties2, _sliderState_properties3;
1122
+ var randomValue = randomizeValue(sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties = sliderState.properties) === null || _sliderState_properties === void 0 ? void 0 : _sliderState_properties.start, sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties1 = sliderState.properties) === null || _sliderState_properties1 === void 0 ? void 0 : _sliderState_properties1.end);
1123
+ var newValue = (sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties2 = sliderState.properties) === null || _sliderState_properties2 === void 0 ? void 0 : _sliderState_properties2.start) === 0 && (sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties3 = sliderState.properties) === null || _sliderState_properties3 === void 0 ? void 0 : _sliderState_properties3.end) === 1 ? randomValue : scaledToNormalised({
1124
+ scaledValue: randomValue,
1125
+ properties: sliderState === null || sliderState === void 0 ? void 0 : sliderState.properties
1126
+ });
1127
+ setNormalisedState(newValue);
1128
+ };
1129
+ if (!isLocalhost) {
1130
+ setNormalisedValue(normalisedValue);
1131
+ setProperties(sliderState === null || sliderState === void 0 ? void 0 : sliderState.properties);
1132
+ if (isRandomizable) {
1133
+ useRandom === null || useRandom === void 0 ? void 0 : useRandom.subscribe(setRandom, id);
1134
+ }
1135
+ return function() {
1136
+ useRandom === null || useRandom === void 0 ? void 0 : useRandom.unsubscribe(setRandom, id);
1137
+ };
1138
+ } else {
885
1139
  // This sets 'mockProperties' as the value for 'properties' if the app is running in a browser.
886
1140
  setProperties(mockProperties);
887
1141
  setNormalisedValue(mockInitialNormalisedValue);
888
- } else {
889
- setNormalisedValue(normalisedValue);
890
- setProperties(sliderState === null || sliderState === void 0 ? void 0 : sliderState.properties);
891
1142
  }
892
1143
  }, []);
893
1144
  // Update the local state when the ID changes
@@ -898,6 +1149,7 @@ var useSlider = function(param) {
898
1149
  id
899
1150
  ]);
900
1151
  // Sets up listeners to handle changes on the backend
1152
+ //@ts-expect-error
901
1153
  useEffect(function() {
902
1154
  if (!isLocalhost) {
903
1155
  var sliderState = Juce.getSliderState(id);
@@ -907,31 +1159,10 @@ var useSlider = function(param) {
907
1159
  var propertiesListenerId = sliderState === null || sliderState === void 0 ? void 0 : sliderState.propertiesChangedEvent.addListener(function() {
908
1160
  return setProperties(sliderState === null || sliderState === void 0 ? void 0 : sliderState.properties);
909
1161
  });
910
- //@ts-expect-error
911
- var randomizeListenerId = window.__JUCE__.backend.addEventListener('triggerRandom', function(event) {
912
- var lastCharInIdAsNumber = parseInt(id.slice(-1), 10);
913
- var selectedBand = event[1] + 1;
914
- var idIsNotBandProperty = isNaN(lastCharInIdAsNumber);
915
- var idBelongsToSelectedBand = isNaN(lastCharInIdAsNumber) === false && lastCharInIdAsNumber === selectedBand;
916
- if (isRandomizable && event[0] !== randomValueSetCounter.current && (idIsNotBandProperty ? true : idBelongsToSelectedBand)) {
917
- var _sliderState_properties, _sliderState_properties1, _sliderState_properties2, _sliderState_properties3;
918
- var randomValue = randomizeValue(sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties = sliderState.properties) === null || _sliderState_properties === void 0 ? void 0 : _sliderState_properties.start, sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties1 = sliderState.properties) === null || _sliderState_properties1 === void 0 ? void 0 : _sliderState_properties1.end);
919
- var newValue = (sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties2 = sliderState.properties) === null || _sliderState_properties2 === void 0 ? void 0 : _sliderState_properties2.start) === 0 && (sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties3 = sliderState.properties) === null || _sliderState_properties3 === void 0 ? void 0 : _sliderState_properties3.end) === 1 ? randomValue : scaledToNormalised({
920
- scaledValue: randomValue,
921
- properties: sliderState === null || sliderState === void 0 ? void 0 : sliderState.properties
922
- });
923
- setNormalisedState(newValue);
924
- randomValueSetCounter.current = event;
925
- }
926
- });
927
- return function cleanup() {
1162
+ return function() {
928
1163
  sliderState === null || sliderState === void 0 ? void 0 : sliderState.valueChangedEvent.removeListener(valueListenerId);
929
1164
  sliderState === null || sliderState === void 0 ? void 0 : sliderState.propertiesChangedEvent.removeListener(propertiesListenerId);
930
- //@ts-expect-error
931
- window.__JUCE__.backend.removeEventListener(randomizeListenerId, id);
932
1165
  };
933
- } else {
934
- return;
935
1166
  }
936
1167
  }, [
937
1168
  window
@@ -940,9 +1171,16 @@ var useSlider = function(param) {
940
1171
  var updateLocalState = function(sliderState) {
941
1172
  var normalisedValueFromState = sliderState === null || sliderState === void 0 ? void 0 : sliderState.getNormalisedValue();
942
1173
  var scaledValueFromState = sliderState === null || sliderState === void 0 ? void 0 : sliderState.getScaledValue();
1174
+ var scaledValue = parseFloat(scaledValueFromState.toFixed(2));
943
1175
  setNormalisedValue(parseFloat(normalisedValueFromState.toFixed(2)));
944
- setScaledValue(parseFloat(scaledValueFromState.toFixed(2)));
1176
+ setScaledValue(scaledValue);
945
1177
  onChange && onChange(parseFloat(scaledValueFromState.toFixed(2)));
1178
+ if ((scaledValueRef === null || scaledValueRef === void 0 ? void 0 : scaledValueRef.current) !== scaledValue) {
1179
+ setHighlightedItem({
1180
+ label: label,
1181
+ value: scaledValue
1182
+ });
1183
+ }
946
1184
  };
947
1185
  // Update JUCE state
948
1186
  var setNormalisedState = function(newValue) {
@@ -963,8 +1201,14 @@ var useSlider = function(param) {
963
1201
  }
964
1202
  };
965
1203
  var bindDrag = useDrag(function(param) {
966
- var down = param.down, delta = param.delta;
967
- if (down) {
1204
+ var down = param.down, delta = param.delta, first = param.first, last = param.last;
1205
+ if (first) {
1206
+ //@ts-expect-error
1207
+ window.__JUCE__.backend.emitEvent('jsDragStarted', {
1208
+ i: "".concat(0)
1209
+ });
1210
+ }
1211
+ if (down) {
968
1212
  var deltaVal = delta[1] * -1;
969
1213
  var newValue = (normalisedValue !== null && normalisedValue !== void 0 ? normalisedValue : 0) + deltaVal * // (properties?.interval && properties?.interval.toString().length > 4
970
1214
  // ? 4
@@ -972,22 +1216,48 @@ var useSlider = function(param) {
972
1216
  ((properties === null || properties === void 0 ? void 0 : properties.interval) || 0.01);
973
1217
  setNormalisedState(newValue);
974
1218
  }
1219
+ if (last) {
1220
+ //@ts-expect-error
1221
+ window.__JUCE__.backend.emitEvent('jsDragEnded', {
1222
+ i: "".concat(0)
1223
+ });
1224
+ }
975
1225
  }, {
976
1226
  preventDefault: true
977
1227
  });
978
1228
  var bindBarSliderDrag = useDrag(function(param) {
979
- var down = param.down, event = param.event;
1229
+ var down = param.down, event = param.event, first = param.first, last = param.last;
980
1230
  var _event_target;
981
1231
  var rect = event === null || event === void 0 ? void 0 : (_event_target = event.target) === null || _event_target === void 0 ? void 0 : _event_target.getBoundingClientRect();
982
1232
  var y = (event === null || event === void 0 ? void 0 : event.clientY) - rect.top;
1233
+ if (first) {
1234
+ //@ts-expect-error
1235
+ window.__JUCE__.backend.emitEvent('jsDragStarted', {
1236
+ i: "".concat(0)
1237
+ });
1238
+ }
983
1239
  if (down) {
984
1240
  // TODO: Increments?
985
1241
  var newValue = 1 - y / rect.height;
986
1242
  setNormalisedState(newValue);
987
1243
  }
1244
+ if (last) {
1245
+ //@ts-expect-error
1246
+ window.__JUCE__.backend.emitEvent('jsDragEnded', {
1247
+ i: "".concat(0)
1248
+ });
1249
+ }
988
1250
  }, {
989
1251
  preventDefault: true
990
1252
  });
1253
+ var onMouseEnter = function() {
1254
+ if ((scaledValueRef === null || scaledValueRef === void 0 ? void 0 : scaledValueRef.current) !== scaledValue) {
1255
+ setHighlightedItem({
1256
+ label: label,
1257
+ value: scaledValue
1258
+ });
1259
+ }
1260
+ };
991
1261
  // TODO: Refactor
992
1262
  // const onChangeStarted = () => sliderState.sliderDragStarted();
993
1263
  // const onChangeCommitted = () => sliderState.sliderDragEnded();
@@ -996,6 +1266,7 @@ var useSlider = function(param) {
996
1266
  setScaledState: setScaledState,
997
1267
  // onChangeStarted,
998
1268
  // onChangeCommitted,
1269
+ onMouseEnter: onMouseEnter,
999
1270
  bindBarSliderDrag: bindBarSliderDrag,
1000
1271
  bindDrag: bindDrag,
1001
1272
  normalisedValue: normalisedValue,
@@ -1004,162 +1275,6 @@ var useSlider = function(param) {
1004
1275
  };
1005
1276
  };
1006
1277
 
1007
- var css_248z$3 = ".RotarySlider {\n position: relative;\n height: 50px;\n width: 50px;\n border-radius: 50%;\n aspect-ratio: 1 / 1;\n}\n\n.RotarySlider-Inner {\n height: 100%;\n width: 100%;\n right: 0;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: var(--bg-popover);\n border-radius: 50%;\n}\n\n.RotarySlider-Indicator {\n position: absolute;\n top: 0;\n right: 0;\n left: 50%;\n width: var(--spacing-xs);\n height: 50%;\n transform: translate(-50%, 0) rotate(0) skewX(0) skewY(0) scaleX(1) scaleY(1);\n}\n\n.RotarySlider-center-marker {\n border-color: var(--bg-popover) transparent var(--bg-popover) transparent;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 7px 10px 7px;\n transform: rotate(180deg);\n padding-bottom: var(--spacing-sm);\n}\n";
1008
- styleInject(css_248z$3);
1009
-
1010
- function _define_property$a(obj, key, value) {
1011
- if (key in obj) {
1012
- Object.defineProperty(obj, key, {
1013
- value: value,
1014
- enumerable: true,
1015
- configurable: true,
1016
- writable: true
1017
- });
1018
- } else {
1019
- obj[key] = value;
1020
- }
1021
- return obj;
1022
- }
1023
- function _object_spread$a(target) {
1024
- for(var i = 1; i < arguments.length; i++){
1025
- var source = arguments[i] != null ? arguments[i] : {};
1026
- var ownKeys = Object.keys(source);
1027
- if (typeof Object.getOwnPropertySymbols === "function") {
1028
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1029
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1030
- }));
1031
- }
1032
- ownKeys.forEach(function(key) {
1033
- _define_property$a(target, key, source[key]);
1034
- });
1035
- }
1036
- return target;
1037
- }
1038
- function ownKeys$1(object, enumerableOnly) {
1039
- var keys = Object.keys(object);
1040
- if (Object.getOwnPropertySymbols) {
1041
- var symbols = Object.getOwnPropertySymbols(object);
1042
- keys.push.apply(keys, symbols);
1043
- }
1044
- return keys;
1045
- }
1046
- function _object_spread_props$1(target, source) {
1047
- source = source != null ? source : {};
1048
- if (Object.getOwnPropertyDescriptors) {
1049
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1050
- } else {
1051
- ownKeys$1(Object(source)).forEach(function(key) {
1052
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1053
- });
1054
- }
1055
- return target;
1056
- }
1057
- function RotarySlider(param) {
1058
- var _param_polarity = param.polarity, polarity = _param_polarity === void 0 ? SliderPolarity.linear : _param_polarity, className = param.className, id = param.id, onMouseEnter = param.onMouseEnter, onChange = param.onChange, _param_rotationBehavior = param.rotationBehavior, rotationBehavior = _param_rotationBehavior === void 0 ? SliderRotationBehavior.rotateIndicator : _param_rotationBehavior, _param_mockInitialNormalisedValue = param.// Mocks the initial scaled value of the slider for web veiws outside of JUCE
1059
- mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0 : _param_mockInitialNormalisedValue, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
1060
- start: 20.0,
1061
- end: 15000.0,
1062
- interval: 0.1,
1063
- skew: 0.7
1064
- } : _param_mockProperties, _param_color = param.color, color = _param_color === void 0 ? 'var(--color-gray-400)' : _param_color, style = param.style;
1065
- var _useSlider = useSlider({
1066
- id: id,
1067
- mockProperties: mockProperties,
1068
- mockInitialNormalisedValue: mockInitialNormalisedValue,
1069
- onChange: onChange,
1070
- isRandomizable: isRandomizable
1071
- }), bindDrag = _useSlider.bindDrag, normalisedValue = _useSlider.normalisedValue, scaledValue = _useSlider.scaledValue;
1072
- return /*#__PURE__*/ React__default.createElement("div", {
1073
- style: {
1074
- display: 'flex',
1075
- flexDirection: 'column',
1076
- alignItems: 'center',
1077
- justifyContent: 'center'
1078
- }
1079
- }, polarity === SliderPolarity.bipolar && /*#__PURE__*/ React__default.createElement("div", {
1080
- className: classnames('RotarySlider-center-marker')
1081
- }), /*#__PURE__*/ React__default.createElement("div", _object_spread_props$1(_object_spread$a({
1082
- className: classnames('RotarySlider', polarity === SliderPolarity.linear ? 'Slider-polarity-linear' : 'Slider-polarity-bipolar', className)
1083
- }, bindDrag()), {
1084
- onMouseEnter: function() {
1085
- return onMouseEnter && onMouseEnter(id, scaledValue);
1086
- },
1087
- style: _object_spread$a({
1088
- touchAction: 'none'
1089
- }, style)
1090
- }), normalisedValue !== null ? /*#__PURE__*/ React__default.createElement("div", {
1091
- className: classnames('RotarySlider-Inner'),
1092
- style: _object_spread$a({
1093
- rotate: rotationBehavior === SliderRotationBehavior.rotateIndicator ? "".concat(polarity === SliderPolarity.linear ? normalisedValue : normalisedValue + 0.5, "turn") : ''
1094
- }, getTransformString({
1095
- sliderType: SliderType.rotary,
1096
- polarity: polarity,
1097
- normalisedValue: normalisedValue,
1098
- scaledValue: scaledValue
1099
- }), getPosition({
1100
- sliderType: SliderType.rotary,
1101
- polarity: polarity
1102
- }))
1103
- }, /*#__PURE__*/ React__default.createElement("div", {
1104
- className: classnames('RotarySlider-Indicator'),
1105
- style: _object_spread$a({
1106
- backgroundColor: color
1107
- }, style)
1108
- })) : ''));
1109
- }
1110
- RotarySlider.sliderPolarity = SliderPolarity;
1111
-
1112
- function _define_property$9(obj, key, value) {
1113
- if (key in obj) {
1114
- Object.defineProperty(obj, key, {
1115
- value: value,
1116
- enumerable: true,
1117
- configurable: true,
1118
- writable: true
1119
- });
1120
- } else {
1121
- obj[key] = value;
1122
- }
1123
- return obj;
1124
- }
1125
- function _object_spread$9(target) {
1126
- for(var i = 1; i < arguments.length; i++){
1127
- var source = arguments[i] != null ? arguments[i] : {};
1128
- var ownKeys = Object.keys(source);
1129
- if (typeof Object.getOwnPropertySymbols === "function") {
1130
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1131
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1132
- }));
1133
- }
1134
- ownKeys.forEach(function(key) {
1135
- _define_property$9(target, key, source[key]);
1136
- });
1137
- }
1138
- return target;
1139
- }
1140
- function Label(param) {
1141
- var value = param.value, id = param.id, className = param.className, style = param.style, _param_padding = param.padding, padding = _param_padding === void 0 ? [
1142
- Spacing.none
1143
- ] : _param_padding, children = param.children, htmlFor = param.htmlFor, _param_fontSize = param.fontSize, fontSize = _param_fontSize === void 0 ? FontSizes.medium : _param_fontSize;
1144
- var _padding_, _padding_1, _padding_2, _ref;
1145
- return /*#__PURE__*/ React.createElement("label", {
1146
- id: id,
1147
- htmlFor: htmlFor,
1148
- style: _object_spread$9({
1149
- fontSize: "var(--text-".concat(fontSize),
1150
- paddingTop: "var(--p-".concat(padding[0], ")"),
1151
- paddingRight: "var(--p-".concat((_padding_ = padding[1]) !== null && _padding_ !== void 0 ? _padding_ : padding[0], ")"),
1152
- paddingBottom: "var(--p-".concat((_padding_1 = padding[2]) !== null && _padding_1 !== void 0 ? _padding_1 : padding[0], ")"),
1153
- paddingLeft: "var(--p-".concat((_ref = (_padding_2 = padding[3]) !== null && _padding_2 !== void 0 ? _padding_2 : padding[1]) !== null && _ref !== void 0 ? _ref : padding[0], ")"),
1154
- WebkitUserSelect: 'none',
1155
- userSelect: 'none'
1156
- }, style),
1157
- className: classnames('Label', 'select-none', className)
1158
- }, value ? value : children);
1159
- }
1160
- Label.padding = Spacing;
1161
- Label.fontSize = FontSizes;
1162
-
1163
1278
  var JustifyContent = /*#__PURE__*/ function(JustifyContent) {
1164
1279
  JustifyContent["flexStart"] = "flex-start";
1165
1280
  JustifyContent["flexEnd"] = "flex-end";
@@ -1183,10 +1298,12 @@ var LayoutTags = /*#__PURE__*/ function(LayoutTags) {
1183
1298
  LayoutTags["section"] = "section";
1184
1299
  LayoutTags["div"] = "div";
1185
1300
  LayoutTags["footer"] = "footer";
1301
+ LayoutTags["ul"] = "ul";
1302
+ LayoutTags["li"] = "li";
1186
1303
  return LayoutTags;
1187
1304
  }({});
1188
1305
 
1189
- function _define_property$8(obj, key, value) {
1306
+ function _define_property$a(obj, key, value) {
1190
1307
  if (key in obj) {
1191
1308
  Object.defineProperty(obj, key, {
1192
1309
  value: value,
@@ -1199,7 +1316,7 @@ function _define_property$8(obj, key, value) {
1199
1316
  }
1200
1317
  return obj;
1201
1318
  }
1202
- function _object_spread$8(target) {
1319
+ function _object_spread$a(target) {
1203
1320
  for(var i = 1; i < arguments.length; i++){
1204
1321
  var source = arguments[i] != null ? arguments[i] : {};
1205
1322
  var ownKeys = Object.keys(source);
@@ -1209,7 +1326,7 @@ function _object_spread$8(target) {
1209
1326
  }));
1210
1327
  }
1211
1328
  ownKeys.forEach(function(key) {
1212
- _define_property$8(target, key, source[key]);
1329
+ _define_property$a(target, key, source[key]);
1213
1330
  });
1214
1331
  }
1215
1332
  return target;
@@ -1220,7 +1337,7 @@ var BoxDisplay = /*#__PURE__*/ function(BoxDisplay) {
1220
1337
  return BoxDisplay;
1221
1338
  }(BoxDisplay || {});
1222
1339
  function Box(param) {
1223
- var className = param.className, style = param.style, children = param.children, flex = param.flex, key = param.key, _param_alignItems = param.alignItems, alignItems = _param_alignItems === void 0 ? AlignItems.center : _param_alignItems, _param_justifyContent = param.justifyContent, justifyContent = _param_justifyContent === void 0 ? JustifyContent.center : _param_justifyContent, _param_display = param.display, display = _param_display === void 0 ? "flex" : _param_display, _param_width = param.width, width = _param_width === void 0 ? Width.auto : _param_width, _param_flexWrap = param.flexWrap, flexWrap = _param_flexWrap === void 0 ? FlexWrap.noWrap : _param_flexWrap, _param_height = param.height, height = _param_height === void 0 ? Height.auto : _param_height, _param_border = param.border, border = _param_border === void 0 ? false : _param_border, _param_flexDirection = param.flexDirection, flexDirection = _param_flexDirection === void 0 ? FlexDirection.row : _param_flexDirection, _param_padding = param.padding, padding = _param_padding === void 0 ? [
1340
+ var className = param.className, style = param.style, children = param.children, flex = param.flex, key = param.key, onClick = param.onClick, _param_alignItems = param.alignItems, alignItems = _param_alignItems === void 0 ? AlignItems.center : _param_alignItems, _param_justifyContent = param.justifyContent, justifyContent = _param_justifyContent === void 0 ? JustifyContent.center : _param_justifyContent, _param_display = param.display, display = _param_display === void 0 ? "flex" : _param_display, _param_width = param.width, width = _param_width === void 0 ? Width.auto : _param_width, _param_flexWrap = param.flexWrap, flexWrap = _param_flexWrap === void 0 ? FlexWrap.noWrap : _param_flexWrap, _param_height = param.height, height = _param_height === void 0 ? Height.auto : _param_height, _param_border = param.border, border = _param_border === void 0 ? false : _param_border, _param_flexDirection = param.flexDirection, flexDirection = _param_flexDirection === void 0 ? FlexDirection.row : _param_flexDirection, _param_padding = param.padding, padding = _param_padding === void 0 ? [
1224
1341
  Spacing.none,
1225
1342
  Spacing.none,
1226
1343
  Spacing.none,
@@ -1232,7 +1349,8 @@ function Box(param) {
1232
1349
  // id="globalValues"
1233
1350
  key: key,
1234
1351
  className: className,
1235
- style: _object_spread$8({
1352
+ onClick: onClick,
1353
+ style: _object_spread$a({
1236
1354
  flexWrap: flexWrap,
1237
1355
  display: display,
1238
1356
  gap: "var(--gap-".concat(gap, ")"),
@@ -1263,7 +1381,7 @@ Box.padding = Spacing;
1263
1381
  Box.flexWrap = FlexWrap;
1264
1382
  Box.tag = LayoutTags;
1265
1383
 
1266
- function _define_property$7(obj, key, value) {
1384
+ function _define_property$9(obj, key, value) {
1267
1385
  if (key in obj) {
1268
1386
  Object.defineProperty(obj, key, {
1269
1387
  value: value,
@@ -1276,7 +1394,7 @@ function _define_property$7(obj, key, value) {
1276
1394
  }
1277
1395
  return obj;
1278
1396
  }
1279
- function _object_spread$7(target) {
1397
+ function _object_spread$9(target) {
1280
1398
  for(var i = 1; i < arguments.length; i++){
1281
1399
  var source = arguments[i] != null ? arguments[i] : {};
1282
1400
  var ownKeys = Object.keys(source);
@@ -1286,12 +1404,66 @@ function _object_spread$7(target) {
1286
1404
  }));
1287
1405
  }
1288
1406
  ownKeys.forEach(function(key) {
1289
- _define_property$7(target, key, source[key]);
1407
+ _define_property$9(target, key, source[key]);
1290
1408
  });
1291
1409
  }
1292
1410
  return target;
1293
1411
  }
1294
- function ownKeys(object, enumerableOnly) {
1412
+ function Label(param) {
1413
+ var value = param.value, id = param.id, className = param.className, style = param.style, _param_padding = param.padding, padding = _param_padding === void 0 ? [
1414
+ Spacing.none
1415
+ ] : _param_padding, children = param.children, htmlFor = param.htmlFor, _param_fontSize = param.fontSize, fontSize = _param_fontSize === void 0 ? FontSizes.medium : _param_fontSize;
1416
+ var _padding_, _padding_1, _padding_2, _ref;
1417
+ return /*#__PURE__*/ React.createElement("label", {
1418
+ id: id,
1419
+ htmlFor: htmlFor,
1420
+ style: _object_spread$9({
1421
+ fontSize: "var(--text-".concat(fontSize),
1422
+ paddingTop: "var(--p-".concat(padding[0], ")"),
1423
+ paddingRight: "var(--p-".concat((_padding_ = padding[1]) !== null && _padding_ !== void 0 ? _padding_ : padding[0], ")"),
1424
+ paddingBottom: "var(--p-".concat((_padding_1 = padding[2]) !== null && _padding_1 !== void 0 ? _padding_1 : padding[0], ")"),
1425
+ paddingLeft: "var(--p-".concat((_ref = (_padding_2 = padding[3]) !== null && _padding_2 !== void 0 ? _padding_2 : padding[1]) !== null && _ref !== void 0 ? _ref : padding[0], ")"),
1426
+ WebkitUserSelect: 'none',
1427
+ userSelect: 'none'
1428
+ }, style),
1429
+ className: classnames('Label', 'select-none', className)
1430
+ }, value ? value : children);
1431
+ }
1432
+ Label.padding = Spacing;
1433
+ Label.fontSize = FontSizes;
1434
+
1435
+ var css_248z$4 = ".RotarySlider {\n position: relative;\n height: 50px;\n width: 50px;\n border-radius: 50%;\n aspect-ratio: 1 / 1;\n}\n\n.RotarySlider-Inner {\n height: 100%;\n width: 100%;\n right: 0;\n top: 0;\n bottom: 0;\n left: 0;\n background-color: var(--bg-popover);\n border-radius: 50%;\n}\n\n.RotarySlider-Indicator {\n position: absolute;\n top: 0;\n right: 0;\n left: 50%;\n width: var(--spacing-xs);\n height: 50%;\n transform: translate(-50%, 0) rotate(0) skewX(0) skewY(0) scaleX(1) scaleY(1);\n}\n\n.RotarySlider-center-marker {\n border-color: var(--bg-popover) transparent var(--bg-popover) transparent;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 7px 10px 7px;\n transform: rotate(180deg);\n padding-bottom: var(--spacing-sm);\n}\n";
1436
+ styleInject(css_248z$4);
1437
+
1438
+ function _define_property$8(obj, key, value) {
1439
+ if (key in obj) {
1440
+ Object.defineProperty(obj, key, {
1441
+ value: value,
1442
+ enumerable: true,
1443
+ configurable: true,
1444
+ writable: true
1445
+ });
1446
+ } else {
1447
+ obj[key] = value;
1448
+ }
1449
+ return obj;
1450
+ }
1451
+ function _object_spread$8(target) {
1452
+ for(var i = 1; i < arguments.length; i++){
1453
+ var source = arguments[i] != null ? arguments[i] : {};
1454
+ var ownKeys = Object.keys(source);
1455
+ if (typeof Object.getOwnPropertySymbols === "function") {
1456
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1457
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1458
+ }));
1459
+ }
1460
+ ownKeys.forEach(function(key) {
1461
+ _define_property$8(target, key, source[key]);
1462
+ });
1463
+ }
1464
+ return target;
1465
+ }
1466
+ function ownKeys$1(object, enumerableOnly) {
1295
1467
  var keys = Object.keys(object);
1296
1468
  if (Object.getOwnPropertySymbols) {
1297
1469
  var symbols = Object.getOwnPropertySymbols(object);
@@ -1299,51 +1471,152 @@ function ownKeys(object, enumerableOnly) {
1299
1471
  }
1300
1472
  return keys;
1301
1473
  }
1302
- function _object_spread_props(target, source) {
1474
+ function _object_spread_props$1(target, source) {
1303
1475
  source = source != null ? source : {};
1304
1476
  if (Object.getOwnPropertyDescriptors) {
1305
1477
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1306
1478
  } else {
1307
- ownKeys(Object(source)).forEach(function(key) {
1479
+ ownKeys$1(Object(source)).forEach(function(key) {
1308
1480
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1309
1481
  });
1310
1482
  }
1311
1483
  return target;
1312
1484
  }
1313
- function Slider(param) {
1314
- var _param_polarity = param.polarity, polarity = _param_polarity === void 0 ? SliderPolarity.linear : _param_polarity, _param_sliderOrientation = param.sliderOrientation, sliderOrientation = _param_sliderOrientation === void 0 ? SliderOrientation.vertical : _param_sliderOrientation, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, className = param.className, id = param.id, onMouseEnter = param.onMouseEnter, onChange = param.onChange, style = param.style, color = param.color, label = param.label, _param_mockInitialNormalisedValue = param.// Mocks the initial scaled value of the slider for web veiws outside of JUCE
1315
- mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0 : _param_mockInitialNormalisedValue, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
1485
+ function RotarySlider(param) {
1486
+ var _param_polarity = param.polarity, polarity = _param_polarity === void 0 ? SliderPolarity.linear : _param_polarity, label = param.label, className = param.className, id = param.id, onChange = param.onChange, _param_rotationBehavior = param.rotationBehavior, rotationBehavior = _param_rotationBehavior === void 0 ? SliderRotationBehavior.rotateIndicator : _param_rotationBehavior, _param_mockInitialNormalisedValue = param.// Mocks the initial scaled value of the slider for web veiws outside of JUCE
1487
+ mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0 : _param_mockInitialNormalisedValue, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
1316
1488
  start: 20.0,
1317
1489
  end: 15000.0,
1318
1490
  interval: 0.1,
1319
1491
  skew: 0.7
1320
- } : _param_mockProperties;
1492
+ } : _param_mockProperties, _param_color = param.color, color = _param_color === void 0 ? 'var(--color-gray-400)' : _param_color, style = param.style;
1321
1493
  var _useSlider = useSlider({
1322
1494
  id: id,
1495
+ label: label,
1323
1496
  mockProperties: mockProperties,
1324
1497
  mockInitialNormalisedValue: mockInitialNormalisedValue,
1325
- sliderOrientation: sliderOrientation,
1326
1498
  onChange: onChange,
1327
1499
  isRandomizable: isRandomizable
1328
- }), bindBarSliderDrag = _useSlider.bindBarSliderDrag, normalisedValue = _useSlider.normalisedValue, scaledValue = _useSlider.scaledValue;
1500
+ }), bindDrag = _useSlider.bindDrag, normalisedValue = _useSlider.normalisedValue, scaledValue = _useSlider.scaledValue, onMouseEnter = _useSlider.onMouseEnter;
1329
1501
  return /*#__PURE__*/ React__default.createElement(Box, {
1330
- flexDirection: Box.flexDirection.column,
1331
- justifyContent: Box.justifyContent.center,
1332
- className: classnames(className)
1502
+ flexDirection: Box.flexDirection.column
1333
1503
  }, polarity === SliderPolarity.bipolar && /*#__PURE__*/ React__default.createElement("div", {
1334
- className: 'Slider-center-marker'
1335
- }), /*#__PURE__*/ React__default.createElement("div", _object_spread_props(_object_spread$7({
1336
- className: classnames('Slider-bar', 'relative')
1337
- }, bindBarSliderDrag()), {
1338
- onMouseEnter: function() {
1339
- return onMouseEnter && label && onMouseEnter(label, scaledValue);
1340
- },
1341
- style: _object_spread$7({
1342
- touchAction: 'none',
1343
- backgroundColor: 'var(--bg-input)',
1344
- minWidth: sliderOrientation === SliderOrientation.horizontal ? '100px' : '20px',
1345
- minHeight: sliderOrientation === SliderOrientation.horizontal ? '20px' : '75px'
1346
- }, style)
1504
+ className: classnames('RotarySlider-center-marker')
1505
+ }), /*#__PURE__*/ React__default.createElement("div", _object_spread_props$1(_object_spread$8({
1506
+ className: classnames('RotarySlider', polarity === SliderPolarity.linear ? 'Slider-polarity-linear' : 'Slider-polarity-bipolar', className)
1507
+ }, bindDrag()), {
1508
+ onMouseEnter: onMouseEnter,
1509
+ style: _object_spread$8({
1510
+ touchAction: 'none'
1511
+ }, style)
1512
+ }), normalisedValue !== null ? /*#__PURE__*/ React__default.createElement("div", {
1513
+ className: classnames('RotarySlider-Inner'),
1514
+ style: _object_spread$8({
1515
+ rotate: rotationBehavior === SliderRotationBehavior.rotateIndicator ? "".concat(polarity === SliderPolarity.linear ? normalisedValue : normalisedValue + 0.5, "turn") : ''
1516
+ }, getTransformString({
1517
+ sliderType: SliderType.rotary,
1518
+ polarity: polarity,
1519
+ normalisedValue: normalisedValue,
1520
+ scaledValue: scaledValue
1521
+ }), getPosition({
1522
+ sliderType: SliderType.rotary,
1523
+ polarity: polarity
1524
+ }))
1525
+ }, /*#__PURE__*/ React__default.createElement("div", {
1526
+ className: classnames('RotarySlider-Indicator'),
1527
+ style: _object_spread$8({
1528
+ backgroundColor: color
1529
+ }, style)
1530
+ })) : ''), /*#__PURE__*/ React__default.createElement(Label, {
1531
+ padding: [
1532
+ Label.padding.mediumSmall
1533
+ ],
1534
+ fontSize: Label.fontSize.small,
1535
+ value: label
1536
+ }));
1537
+ }
1538
+ RotarySlider.sliderPolarity = SliderPolarity;
1539
+
1540
+ function _define_property$7(obj, key, value) {
1541
+ if (key in obj) {
1542
+ Object.defineProperty(obj, key, {
1543
+ value: value,
1544
+ enumerable: true,
1545
+ configurable: true,
1546
+ writable: true
1547
+ });
1548
+ } else {
1549
+ obj[key] = value;
1550
+ }
1551
+ return obj;
1552
+ }
1553
+ function _object_spread$7(target) {
1554
+ for(var i = 1; i < arguments.length; i++){
1555
+ var source = arguments[i] != null ? arguments[i] : {};
1556
+ var ownKeys = Object.keys(source);
1557
+ if (typeof Object.getOwnPropertySymbols === "function") {
1558
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1559
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1560
+ }));
1561
+ }
1562
+ ownKeys.forEach(function(key) {
1563
+ _define_property$7(target, key, source[key]);
1564
+ });
1565
+ }
1566
+ return target;
1567
+ }
1568
+ function ownKeys(object, enumerableOnly) {
1569
+ var keys = Object.keys(object);
1570
+ if (Object.getOwnPropertySymbols) {
1571
+ var symbols = Object.getOwnPropertySymbols(object);
1572
+ keys.push.apply(keys, symbols);
1573
+ }
1574
+ return keys;
1575
+ }
1576
+ function _object_spread_props(target, source) {
1577
+ source = source != null ? source : {};
1578
+ if (Object.getOwnPropertyDescriptors) {
1579
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1580
+ } else {
1581
+ ownKeys(Object(source)).forEach(function(key) {
1582
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1583
+ });
1584
+ }
1585
+ return target;
1586
+ }
1587
+ function Slider(param) {
1588
+ var _param_polarity = param.polarity, polarity = _param_polarity === void 0 ? SliderPolarity.linear : _param_polarity, _param_sliderOrientation = param.sliderOrientation, sliderOrientation = _param_sliderOrientation === void 0 ? SliderOrientation.vertical : _param_sliderOrientation, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, className = param.className, id = param.id, onChange = param.onChange, style = param.style, color = param.color, label = param.label, _param_mockInitialNormalisedValue = param.// Mocks the initial scaled value of the slider for web veiws outside of JUCE
1589
+ mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0 : _param_mockInitialNormalisedValue, _param_mockProperties = param.mockProperties, mockProperties = _param_mockProperties === void 0 ? {
1590
+ start: 20.0,
1591
+ end: 15000.0,
1592
+ interval: 0.1,
1593
+ skew: 0.7
1594
+ } : _param_mockProperties;
1595
+ var _useSlider = useSlider({
1596
+ id: id,
1597
+ label: label,
1598
+ mockProperties: mockProperties,
1599
+ mockInitialNormalisedValue: mockInitialNormalisedValue,
1600
+ sliderOrientation: sliderOrientation,
1601
+ onChange: onChange,
1602
+ isRandomizable: isRandomizable
1603
+ }), bindBarSliderDrag = _useSlider.bindBarSliderDrag, normalisedValue = _useSlider.normalisedValue, scaledValue = _useSlider.scaledValue, onMouseEnter = _useSlider.onMouseEnter;
1604
+ return /*#__PURE__*/ React__default.createElement(Box, {
1605
+ flexDirection: Box.flexDirection.column,
1606
+ justifyContent: Box.justifyContent.center,
1607
+ className: classnames(className)
1608
+ }, polarity === SliderPolarity.bipolar && /*#__PURE__*/ React__default.createElement("div", {
1609
+ className: 'Slider-center-marker'
1610
+ }), /*#__PURE__*/ React__default.createElement("div", _object_spread_props(_object_spread$7({
1611
+ className: classnames('Slider-bar', 'relative')
1612
+ }, bindBarSliderDrag()), {
1613
+ onMouseEnter: onMouseEnter,
1614
+ style: _object_spread$7({
1615
+ touchAction: 'none',
1616
+ backgroundColor: 'var(--bg-input)',
1617
+ minWidth: sliderOrientation === SliderOrientation.horizontal ? '100px' : '20px',
1618
+ minHeight: sliderOrientation === SliderOrientation.horizontal ? '20px' : '75px'
1619
+ }, style)
1347
1620
  }), normalisedValue ? /*#__PURE__*/ React__default.createElement("div", {
1348
1621
  // TODO: Why aren't the Tailwind classes working?
1349
1622
  // className={classnames('h-full', 'w-full', 'absolute', 'bg-input')}
@@ -1491,15 +1764,15 @@ var Matrix = function(param) {
1491
1764
  }));
1492
1765
  };
1493
1766
 
1494
- function _array_like_to_array$2(arr, len) {
1767
+ function _array_like_to_array$3(arr, len) {
1495
1768
  if (len == null || len > arr.length) len = arr.length;
1496
1769
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
1497
1770
  return arr2;
1498
1771
  }
1499
- function _array_with_holes$2(arr) {
1772
+ function _array_with_holes$3(arr) {
1500
1773
  if (Array.isArray(arr)) return arr;
1501
1774
  }
1502
- function _iterable_to_array_limit$2(arr, i) {
1775
+ function _iterable_to_array_limit$3(arr, i) {
1503
1776
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
1504
1777
  if (_i == null) return;
1505
1778
  var _arr = [];
@@ -1523,26 +1796,26 @@ function _iterable_to_array_limit$2(arr, i) {
1523
1796
  }
1524
1797
  return _arr;
1525
1798
  }
1526
- function _non_iterable_rest$2() {
1799
+ function _non_iterable_rest$3() {
1527
1800
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1528
1801
  }
1529
- function _sliced_to_array$2(arr, i) {
1530
- return _array_with_holes$2(arr) || _iterable_to_array_limit$2(arr, i) || _unsupported_iterable_to_array$2(arr, i) || _non_iterable_rest$2();
1802
+ function _sliced_to_array$3(arr, i) {
1803
+ return _array_with_holes$3(arr) || _iterable_to_array_limit$3(arr, i) || _unsupported_iterable_to_array$3(arr, i) || _non_iterable_rest$3();
1531
1804
  }
1532
- function _unsupported_iterable_to_array$2(o, minLen) {
1805
+ function _unsupported_iterable_to_array$3(o, minLen) {
1533
1806
  if (!o) return;
1534
- if (typeof o === "string") return _array_like_to_array$2(o, minLen);
1807
+ if (typeof o === "string") return _array_like_to_array$3(o, minLen);
1535
1808
  var n = Object.prototype.toString.call(o).slice(8, -1);
1536
1809
  if (n === "Object" && o.constructor) n = o.constructor.name;
1537
1810
  if (n === "Map" || n === "Set") return Array.from(n);
1538
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
1811
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$3(o, minLen);
1539
1812
  }
1540
1813
  // 20.0f, 15000.0f, 0.1f, 0.7f),800.0f
1541
1814
  // ValueType rangeStart, ValueType rangeEnd, ValueType intervalValue, ValueType skewFactor, bool useSymmetricSkew=false)
1542
1815
  var useIndicator = function(param) {
1543
1816
  var id = param.id;
1544
1817
  var isLocalhost = window.location.hostname === 'localhost';
1545
- var _useState = _sliced_to_array$2(useState(0), 2), isActive = _useState[0], setIsActive = _useState[1];
1818
+ var _useState = _sliced_to_array$3(useState(0), 2), isActive = _useState[0], setIsActive = _useState[1];
1546
1819
  // Set the initial state
1547
1820
  useEffect(function() {
1548
1821
  if (!isLocalhost) {
@@ -1626,8 +1899,8 @@ function IndicatorLight(param) {
1626
1899
  }) : null);
1627
1900
  }
1628
1901
 
1629
- var css_248z$2 = ".IconButton {\n height: 28px;\n}\n\n.IconButton:hover {\n filter: brightness(80%);\n}\n";
1630
- styleInject(css_248z$2);
1902
+ var css_248z$3 = ".IconButton:hover:not(:disabled) {\n filter: brightness(80%);\n}\n\nsvg {\n height: 100%;\n width: 100%;\n}\n";
1903
+ styleInject(css_248z$3);
1631
1904
 
1632
1905
  function _define_property$4(obj, key, value) {
1633
1906
  if (key in obj) {
@@ -1658,17 +1931,19 @@ function _object_spread$4(target) {
1658
1931
  return target;
1659
1932
  }
1660
1933
  var ButtonIcon = /*#__PURE__*/ function(ButtonIcon) {
1661
- ButtonIcon["undo"] = "UndoIcon";
1662
- ButtonIcon["redo"] = "RedoIcon";
1663
- ButtonIcon["random"] = "RandomIcon";
1934
+ ButtonIcon["undo"] = "Undo";
1935
+ ButtonIcon["redo"] = "Redo";
1936
+ ButtonIcon["random"] = "Random";
1937
+ ButtonIcon["favorite"] = "Favorite";
1938
+ ButtonIcon["up"] = "Up";
1939
+ ButtonIcon["down"] = "Down";
1940
+ ButtonIcon["save"] = "Save";
1664
1941
  return ButtonIcon;
1665
1942
  }(ButtonIcon || {});
1666
- var UndoIcon = function(param) {
1943
+ var Undo = function(param) {
1667
1944
  var color = param.color;
1668
1945
  return /*#__PURE__*/ React__default.createElement("svg", {
1669
- width: "24px",
1670
- height: "24px",
1671
- viewBox: "0 0 24 24",
1946
+ viewBox: "0 0 25 25",
1672
1947
  "stroke-width": "1.5",
1673
1948
  fill: "none",
1674
1949
  xmlns: "http://www.w3.org/2000/svg",
@@ -1687,12 +1962,10 @@ var UndoIcon = function(param) {
1687
1962
  "stroke-linejoin": "round"
1688
1963
  }));
1689
1964
  };
1690
- var RedoIcon = function(param) {
1965
+ var Redo = function(param) {
1691
1966
  var color = param.color;
1692
1967
  return /*#__PURE__*/ React__default.createElement("svg", {
1693
- width: "24px",
1694
- height: "24px",
1695
- viewBox: "0 0 24 24",
1968
+ viewBox: "0 0 25 25",
1696
1969
  "stroke-width": "1.5",
1697
1970
  fill: "none",
1698
1971
  xmlns: "http://www.w3.org/2000/svg",
@@ -1711,12 +1984,77 @@ var RedoIcon = function(param) {
1711
1984
  "stroke-linejoin": "round"
1712
1985
  }));
1713
1986
  };
1714
- var RandomIcon = function(param) {
1987
+ var Favorite = function(param) {
1988
+ var color = param.color;
1989
+ return /*#__PURE__*/ React__default.createElement("svg", {
1990
+ "stroke-width": "1.5",
1991
+ viewBox: "-7 -7 40 40",
1992
+ fill: "none",
1993
+ xmlns: "http://www.w3.org/2000/svg",
1994
+ color: color
1995
+ }, /*#__PURE__*/ React__default.createElement("path", {
1996
+ d: "M22 8.86222C22 10.4087 21.4062 11.8941 20.3458 12.9929C17.9049 15.523 15.5374 18.1613 13.0053 20.5997C12.4249 21.1505 11.5042 21.1304 10.9488 20.5547L3.65376 12.9929C1.44875 10.7072 1.44875 7.01723 3.65376 4.73157C5.88044 2.42345 9.50794 2.42345 11.7346 4.73157L11.9998 5.00642L12.2648 4.73173C13.3324 3.6245 14.7864 3 16.3053 3C17.8242 3 19.2781 3.62444 20.3458 4.73157C21.4063 5.83045 22 7.31577 22 8.86222Z",
1997
+ stroke: color,
1998
+ "stroke-width": "1.5",
1999
+ "stroke-linejoin": "round"
2000
+ }));
2001
+ };
2002
+ var Up = function(param) {
2003
+ var color = param.color;
2004
+ return /*#__PURE__*/ React__default.createElement("svg", {
2005
+ viewBox: "0 0 25 25",
2006
+ "stroke-width": "1.5",
2007
+ fill: "none",
2008
+ xmlns: "http://www.w3.org/2000/svg",
2009
+ color: color
2010
+ }, /*#__PURE__*/ React__default.createElement("path", {
2011
+ "fill-rule": "evenodd",
2012
+ "clip-rule": "evenodd",
2013
+ d: "M5.30711 15.287C5.4232 15.5673 5.69668 15.75 6.00002 15.75H18C18.3034 15.75 18.5768 15.5673 18.6929 15.287C18.809 15.0068 18.7449 14.6842 18.5304 14.4697L12.5304 8.46967C12.2375 8.17678 11.7626 8.17678 11.4697 8.46967L5.46969 14.4697C5.25519 14.6842 5.19103 15.0068 5.30711 15.287Z",
2014
+ fill: color
2015
+ }));
2016
+ };
2017
+ var Down = function(param) {
2018
+ var color = param.color;
2019
+ return /*#__PURE__*/ React__default.createElement("svg", {
2020
+ viewBox: "0 0 25 25",
2021
+ "stroke-width": "1.5",
2022
+ fill: "none",
2023
+ xmlns: "http://www.w3.org/2000/svg",
2024
+ color: color
2025
+ }, /*#__PURE__*/ React__default.createElement("path", {
2026
+ "fill-rule": "evenodd",
2027
+ "clip-rule": "evenodd",
2028
+ d: "M5.30711 8.71299C5.4232 8.43273 5.69668 8.25 6.00002 8.25H18C18.3034 8.25 18.5768 8.43273 18.6929 8.71299C18.809 8.99324 18.7449 9.31583 18.5304 9.53033L12.5304 15.5303C12.2375 15.8232 11.7626 15.8232 11.4697 15.5303L5.46969 9.53033C5.25519 9.31583 5.19103 8.99324 5.30711 8.71299Z",
2029
+ fill: color
2030
+ }));
2031
+ };
2032
+ var Save = function(param) {
2033
+ var color = param.color;
2034
+ return /*#__PURE__*/ React__default.createElement("svg", {
2035
+ "stroke-width": "1.5",
2036
+ viewBox: "-7 -7 40 40",
2037
+ fill: "none",
2038
+ xmlns: "http://www.w3.org/2000/svg",
2039
+ color: color
2040
+ }, /*#__PURE__*/ React__default.createElement("path", {
2041
+ d: "M3 19V5C3 3.89543 3.89543 3 5 3H16.1716C16.702 3 17.2107 3.21071 17.5858 3.58579L20.4142 6.41421C20.7893 6.78929 21 7.29799 21 7.82843V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19Z",
2042
+ stroke: color,
2043
+ "stroke-width": "1.5"
2044
+ }), /*#__PURE__*/ React__default.createElement("path", {
2045
+ d: "M8.6 9H15.4C15.7314 9 16 8.73137 16 8.4V3.6C16 3.26863 15.7314 3 15.4 3H8.6C8.26863 3 8 3.26863 8 3.6V8.4C8 8.73137 8.26863 9 8.6 9Z",
2046
+ stroke: color,
2047
+ "stroke-width": "1.5"
2048
+ }), /*#__PURE__*/ React__default.createElement("path", {
2049
+ d: "M6 13.6V21H18V13.6C18 13.2686 17.7314 13 17.4 13H6.6C6.26863 13 6 13.2686 6 13.6Z",
2050
+ stroke: color,
2051
+ "stroke-width": "1.5"
2052
+ }));
2053
+ };
2054
+ var Random = function(param) {
1715
2055
  var color = param.color;
1716
2056
  return /*#__PURE__*/ React__default.createElement("svg", {
1717
- width: "24px",
1718
- height: "24px",
1719
- viewBox: "0 0 24 24",
2057
+ viewBox: "0 0 25 25",
1720
2058
  "stroke-width": "1.5",
1721
2059
  fill: "none",
1722
2060
  xmlns: "http://www.w3.org/2000/svg",
@@ -1771,28 +2109,45 @@ var RandomIcon = function(param) {
1771
2109
  }));
1772
2110
  };
1773
2111
  var icons = {
1774
- UndoIcon: UndoIcon,
1775
- RedoIcon: RedoIcon,
1776
- RandomIcon: RandomIcon
2112
+ Undo: Undo,
2113
+ Redo: Redo,
2114
+ Random: Random,
2115
+ Favorite: Favorite,
2116
+ Up: Up,
2117
+ Down: Down,
2118
+ Save: Save
1777
2119
  };
2120
+ // const getViewBoxWidth = (width: string) => {
2121
+ // const numericWidth = width.match(/\d+/)?.[0];
2122
+ // return numericWidth !== undefined ? parseInt(numericWidth) : 24;
2123
+ // };
1778
2124
  function IconButton(param) {
1779
- var id = param.id, icon = param.icon, onClick = param.onClick, _param_color = param.color, color = _param_color === void 0 ? 'var(--color-text)' : _param_color, _param_backgroundColor = param.backgroundColor, backgroundColor = _param_backgroundColor === void 0 ? 'var(--bg-page)' : _param_backgroundColor, className = param.className, style = param.style;
2125
+ var id = param.id, icon = param.icon, onClick = param.onClick, _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, _param_color = param.color, color = _param_color === void 0 ? 'var(--color-text)' : _param_color, _param_backgroundColor = param.backgroundColor, backgroundColor = _param_backgroundColor === void 0 ? 'var(--bg-page)' : _param_backgroundColor, _param_padding = param.padding, padding = _param_padding === void 0 ? [
2126
+ Button.padding.none
2127
+ ] : _param_padding, _param_margin = param.margin, margin = _param_margin === void 0 ? [
2128
+ Button.margin.none
2129
+ ] : _param_margin, _param_width = param.width, width = _param_width === void 0 ? '24px' : _param_width, _param_height = param.height, height = _param_height === void 0 ? '24px' : _param_height, className = param.className, style = param.style;
1780
2130
  var Icon = icons[icon];
1781
2131
  return /*#__PURE__*/ React__default.createElement(Button, {
1782
2132
  id: id,
1783
2133
  className: "IconButton ".concat(className),
1784
2134
  onClick: onClick,
1785
- padding: [
1786
- Button.padding.medium
1787
- ],
2135
+ padding: padding,
2136
+ margin: margin,
2137
+ disabled: disabled,
1788
2138
  style: _object_spread$4({
1789
- backgroundColor: backgroundColor
2139
+ backgroundColor: backgroundColor,
2140
+ width: width,
2141
+ height: height
1790
2142
  }, style)
1791
2143
  }, /*#__PURE__*/ React__default.createElement(Icon, {
1792
- color: color
2144
+ width: width,
2145
+ color: disabled ? 'var(--color-gray-400)' : color
1793
2146
  }));
1794
2147
  }
1795
2148
  IconButton.icon = ButtonIcon;
2149
+ IconButton.padding = Spacing;
2150
+ IconButton.margin = Spacing;
1796
2151
 
1797
2152
  function _define_property$3(obj, key, value) {
1798
2153
  if (key in obj) {
@@ -1837,9 +2192,9 @@ function KeyValueDisplayScreen(param) {
1837
2192
  }, data ? /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(Box, {
1838
2193
  justifyContent: Box.justifyContent.flexStart,
1839
2194
  padding: [
1840
- Box.padding.xSmall,
2195
+ Box.padding.small,
1841
2196
  Box.padding.medium,
1842
- Box.padding.none,
2197
+ Box.padding.xSmall,
1843
2198
  Box.padding.medium
1844
2199
  ],
1845
2200
  className: classnames('KeyValueDisplayScreen', 'uppercase', 'bg-popover', 'rounded-sm'),
@@ -1849,22 +2204,16 @@ function KeyValueDisplayScreen(param) {
1849
2204
  color: "var(--color-text)"
1850
2205
  }
1851
2206
  }, /*#__PURE__*/ React__default.createElement(Label, {
1852
- className: 'KeyValueDisplayScreen-Item',
1853
- padding: [
1854
- Label.padding.xSmall,
1855
- Label.padding.mediumLarge,
1856
- Label.padding.none,
1857
- Label.padding.medium
1858
- ]
1859
- }, data === null || data === void 0 ? void 0 : data.key), /*#__PURE__*/ React__default.createElement(Label, {
1860
- padding: [
1861
- Label.padding.xSmall,
1862
- Label.padding.mediumLarge,
1863
- Label.padding.none,
1864
- Label.padding.none
1865
- ],
1866
2207
  className: 'KeyValueDisplayScreen-Item'
1867
- }, data === null || data === void 0 ? void 0 : data.value))) : /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(Box, null, /*#__PURE__*/ React__default.createElement(Label, null, "Sparkler v1.8.2")), /*#__PURE__*/ React__default.createElement(Box, null, /*#__PURE__*/ React__default.createElement(Label, null, "Antimatter audio"))));
2208
+ }, "".concat(data === null || data === void 0 ? void 0 : data.key, ":")), /*#__PURE__*/ React__default.createElement(Label, {
2209
+ // padding={[
2210
+ // Label.padding.xSmall,
2211
+ // Label.padding.mediumLarge,
2212
+ // Label.padding.none,
2213
+ // Label.padding.none,
2214
+ // ]}
2215
+ className: 'KeyValueDisplayScreen-Item'
2216
+ }, data === null || data === void 0 ? void 0 : data.value))) : /*#__PURE__*/ React__default.createElement(React__default.Fragment, null, /*#__PURE__*/ React__default.createElement(Box, null, /*#__PURE__*/ React__default.createElement(Label, null, "Antimatter Audio")), /*#__PURE__*/ React__default.createElement(Box, null, /*#__PURE__*/ React__default.createElement(Label, null))));
1868
2217
  }
1869
2218
 
1870
2219
  function LinePlot(param) {
@@ -1934,15 +2283,15 @@ function LinePlot(param) {
1934
2283
  })));
1935
2284
  }
1936
2285
 
1937
- var css_248z$1 = ".Oscilloscope {\n background: #0EAC8B;\n box-shadow: inset 0 0 20px #086350;\n height: 200px;\n };";
1938
- styleInject(css_248z$1);
2286
+ var css_248z$2 = ".Oscilloscope {\n background: #0EAC8B;\n box-shadow: inset 0 0 20px #086350;\n height: 200px;\n };";
2287
+ styleInject(css_248z$2);
1939
2288
 
1940
- function _array_like_to_array$1(arr, len) {
2289
+ function _array_like_to_array$2(arr, len) {
1941
2290
  if (len == null || len > arr.length) len = arr.length;
1942
2291
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
1943
2292
  return arr2;
1944
2293
  }
1945
- function _array_with_holes$1(arr) {
2294
+ function _array_with_holes$2(arr) {
1946
2295
  if (Array.isArray(arr)) return arr;
1947
2296
  }
1948
2297
  function _define_property$2(obj, key, value) {
@@ -1958,7 +2307,7 @@ function _define_property$2(obj, key, value) {
1958
2307
  }
1959
2308
  return obj;
1960
2309
  }
1961
- function _iterable_to_array_limit$1(arr, i) {
2310
+ function _iterable_to_array_limit$2(arr, i) {
1962
2311
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
1963
2312
  if (_i == null) return;
1964
2313
  var _arr = [];
@@ -1982,7 +2331,7 @@ function _iterable_to_array_limit$1(arr, i) {
1982
2331
  }
1983
2332
  return _arr;
1984
2333
  }
1985
- function _non_iterable_rest$1() {
2334
+ function _non_iterable_rest$2() {
1986
2335
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1987
2336
  }
1988
2337
  function _object_spread$2(target) {
@@ -2000,20 +2349,20 @@ function _object_spread$2(target) {
2000
2349
  }
2001
2350
  return target;
2002
2351
  }
2003
- function _sliced_to_array$1(arr, i) {
2004
- return _array_with_holes$1(arr) || _iterable_to_array_limit$1(arr, i) || _unsupported_iterable_to_array$1(arr, i) || _non_iterable_rest$1();
2352
+ function _sliced_to_array$2(arr, i) {
2353
+ return _array_with_holes$2(arr) || _iterable_to_array_limit$2(arr, i) || _unsupported_iterable_to_array$2(arr, i) || _non_iterable_rest$2();
2005
2354
  }
2006
- function _unsupported_iterable_to_array$1(o, minLen) {
2355
+ function _unsupported_iterable_to_array$2(o, minLen) {
2007
2356
  if (!o) return;
2008
- if (typeof o === "string") return _array_like_to_array$1(o, minLen);
2357
+ if (typeof o === "string") return _array_like_to_array$2(o, minLen);
2009
2358
  var n = Object.prototype.toString.call(o).slice(8, -1);
2010
2359
  if (n === "Object" && o.constructor) n = o.constructor.name;
2011
2360
  if (n === "Map" || n === "Set") return Array.from(n);
2012
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
2361
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
2013
2362
  }
2014
2363
  function Oscilloscope(param) {
2015
2364
  var width = param.width, height = param.height, className = param.className, style = param.style, id = param.id;
2016
- var _useState = _sliced_to_array$1(useState([]), 2), viewData = _useState[0], setViewData = _useState[1];
2365
+ var _useState = _sliced_to_array$2(useState([]), 2), viewData = _useState[0], setViewData = _useState[1];
2017
2366
  useEffect(function() {
2018
2367
  //@ts-expect-error
2019
2368
  var removalToken = window.__JUCE__.backend.addEventListener('oscData', function() {
@@ -2042,47 +2391,760 @@ function Oscilloscope(param) {
2042
2391
  }));
2043
2392
  }
2044
2393
 
2045
- var css_248z = "@import '../../styles.css';\n.ModuleHeader {\n background-color: var(--bg-section);\n font-weight: normal;\n}\n\n.ModuleHeader-Name {\n font-size: var(--text-lg);\n letter-spacing: 4px;\n text-transform: uppercase;\n font-weight: lighter;\n height: 1.75rem;\n color: var(--color-brand);\n}\n\n.ModuleHeader-Subheading {\n font-size: var(--text-xs);\n font-weight: lighter;\n letter-spacing: 2.25px;\n text-transform: uppercase;\n color: var(--color-brand);\n}\n";
2394
+ var css_248z$1 = "@import '../../styles.css';\n.ModuleHeader {\n background-color: var(--bg-section);\n font-weight: normal;\n}\n\n.ModuleHeader-Name {\n font-size: var(--text-lg);\n letter-spacing: 4px;\n text-transform: uppercase;\n font-weight: lighter;\n height: 1.75rem;\n color: var(--color-brand);\n}\n\n.ModuleHeader-Subheading {\n font-size: var(--text-xs);\n font-weight: lighter;\n letter-spacing: 2.25px;\n text-transform: uppercase;\n color: var(--color-brand);\n}\n";
2395
+ styleInject(css_248z$1);
2396
+
2397
+ var css_248z = ".PresetManagerContainer {\n width: 100%;\n height: 100%;\n background-color: var(--bg-page);\n color: var(--color-text);\n}\n\n.PresetManagerButton {\n width: 100%;\n height: 100%;\n max-width: 300px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n cursor: pointer;\n font-family: var(--font-leagueSpartan);\n}\n.PresetManagerButtonLabel {\n cursor: pointer;\n text-align: center;\n font-family: var(--font-leagueSpartan);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 225px;\n display: inline-block;\n vertical-align: middle;\n height: 1rem;\n line-height: 1.25;\n /* position: relative; */\n &:hover,\n &:active {\n background: var(--color-gray-900);\n }\n /* &.isDirty {\n &::after {\n content: '*';\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n }\n } */\n}\n\n.PresetManagerButtonLabelContainer.isDirty::after {\n content: '*';\n position: absolute;\n height: 1rem;\n width: 1rem;\n right: -0.75rem;\n top: 0;\n}\n\n.PresetManagerButtonLabelOuterContainer {\n position: relative;\n width: auto;\n}\n\n[data-headlessui-state='open active'] .PresetManagerButtonLabel {\n background: var(--color-gray-900);\n}\n.PresetManagerPanel {\n position: absolute;\n font-family: var(--font-leagueSpartan);\n right: 0px;\n left: 0px;\n width: 100%;\n max-width: 400px !important;\n color: var(--color-text);\n background: var(--bg-popover);\n}\n\n.PresetManagerPanel:focus,\n.PresetManagerPanel:focus-visible {\n outline: none;\n}\n\n/* .PresetManagerCategoryItem {\n font-family: var(--font-leagueSpartan);\n cursor: pointer;\n background: var(--color-gray-800);\n text-transform: uppercase;\n &:hover,\n &.isSelected {\n background: var(--bg-selected);\n }\n} */\n\n.PresetManagerListItem {\n cursor: pointer;\n background: var(--color-gray-800);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n}\n\n.PresetManagerListItem:hover,\n.PresetManagerListItem.isSelected {\n background: var(--bg-selected);\n}\n\n.PresetManagerListItemText {\n display: inline-block;\n vertical-align: middle;\n height: 1.5rem;\n line-height: 1.75;\n}\n";
2046
2398
  styleInject(css_248z);
2047
2399
 
2048
- function _define_property$1(obj, key, value) {
2049
- if (key in obj) {
2050
- Object.defineProperty(obj, key, {
2051
- value: value,
2052
- enumerable: true,
2053
- configurable: true,
2054
- writable: true
2055
- });
2400
+ function _array_like_to_array$1(arr, len) {
2401
+ if (len == null || len > arr.length) len = arr.length;
2402
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
2403
+ return arr2;
2404
+ }
2405
+ function _array_with_holes$1(arr) {
2406
+ if (Array.isArray(arr)) return arr;
2407
+ }
2408
+ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
2409
+ try {
2410
+ var info = gen[key](arg);
2411
+ var value = info.value;
2412
+ } catch (error) {
2413
+ reject(error);
2414
+ return;
2415
+ }
2416
+ if (info.done) {
2417
+ resolve(value);
2056
2418
  } else {
2057
- obj[key] = value;
2419
+ Promise.resolve(value).then(_next, _throw);
2058
2420
  }
2059
- return obj;
2060
2421
  }
2061
- function _object_spread$1(target) {
2062
- for(var i = 1; i < arguments.length; i++){
2063
- var source = arguments[i] != null ? arguments[i] : {};
2064
- var ownKeys = Object.keys(source);
2065
- if (typeof Object.getOwnPropertySymbols === "function") {
2066
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
2067
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
2068
- }));
2069
- }
2070
- ownKeys.forEach(function(key) {
2071
- _define_property$1(target, key, source[key]);
2422
+ function _async_to_generator$1(fn) {
2423
+ return function() {
2424
+ var self = this, args = arguments;
2425
+ return new Promise(function(resolve, reject) {
2426
+ var gen = fn.apply(self, args);
2427
+ function _next(value) {
2428
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
2429
+ }
2430
+ function _throw(err) {
2431
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
2432
+ }
2433
+ _next(undefined);
2072
2434
  });
2073
- }
2074
- return target;
2435
+ };
2075
2436
  }
2076
- function ModuleHeader(param) {
2077
- var title = param.title, subtitle = param.subtitle, activeItem = param.activeItem, className = param.className, style = param.style;
2078
- var undo = Juce.getNativeFunction('undo');
2079
- var redo = Juce.getNativeFunction('redo');
2080
- return /*#__PURE__*/ React__default.createElement(Box, {
2081
- gap: Box.gap.medium,
2082
- tag: Box.tag.header,
2083
- padding: [
2084
- Box.padding.medium,
2085
- Box.padding.large
2437
+ function _iterable_to_array_limit$1(arr, i) {
2438
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
2439
+ if (_i == null) return;
2440
+ var _arr = [];
2441
+ var _n = true;
2442
+ var _d = false;
2443
+ var _s, _e;
2444
+ try {
2445
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
2446
+ _arr.push(_s.value);
2447
+ if (i && _arr.length === i) break;
2448
+ }
2449
+ } catch (err) {
2450
+ _d = true;
2451
+ _e = err;
2452
+ } finally{
2453
+ try {
2454
+ if (!_n && _i["return"] != null) _i["return"]();
2455
+ } finally{
2456
+ if (_d) throw _e;
2457
+ }
2458
+ }
2459
+ return _arr;
2460
+ }
2461
+ function _non_iterable_rest$1() {
2462
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2463
+ }
2464
+ function _object_destructuring_empty(o) {
2465
+ if (o === null || o === void 0) throw new TypeError("Cannot destructure " + o);
2466
+ return o;
2467
+ }
2468
+ function _sliced_to_array$1(arr, i) {
2469
+ return _array_with_holes$1(arr) || _iterable_to_array_limit$1(arr, i) || _unsupported_iterable_to_array$1(arr, i) || _non_iterable_rest$1();
2470
+ }
2471
+ function _unsupported_iterable_to_array$1(o, minLen) {
2472
+ if (!o) return;
2473
+ if (typeof o === "string") return _array_like_to_array$1(o, minLen);
2474
+ var n = Object.prototype.toString.call(o).slice(8, -1);
2475
+ if (n === "Object" && o.constructor) n = o.constructor.name;
2476
+ if (n === "Map" || n === "Set") return Array.from(n);
2477
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
2478
+ }
2479
+ function _ts_generator$1(thisArg, body) {
2480
+ var f, y, t, g, _ = {
2481
+ label: 0,
2482
+ sent: function() {
2483
+ if (t[0] & 1) throw t[1];
2484
+ return t[1];
2485
+ },
2486
+ trys: [],
2487
+ ops: []
2488
+ };
2489
+ return g = {
2490
+ next: verb(0),
2491
+ "throw": verb(1),
2492
+ "return": verb(2)
2493
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
2494
+ return this;
2495
+ }), g;
2496
+ function verb(n) {
2497
+ return function(v) {
2498
+ return step([
2499
+ n,
2500
+ v
2501
+ ]);
2502
+ };
2503
+ }
2504
+ function step(op) {
2505
+ if (f) throw new TypeError("Generator is already executing.");
2506
+ while(_)try {
2507
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
2508
+ if (y = 0, t) op = [
2509
+ op[0] & 2,
2510
+ t.value
2511
+ ];
2512
+ switch(op[0]){
2513
+ case 0:
2514
+ case 1:
2515
+ t = op;
2516
+ break;
2517
+ case 4:
2518
+ _.label++;
2519
+ return {
2520
+ value: op[1],
2521
+ done: false
2522
+ };
2523
+ case 5:
2524
+ _.label++;
2525
+ y = op[1];
2526
+ op = [
2527
+ 0
2528
+ ];
2529
+ continue;
2530
+ case 7:
2531
+ op = _.ops.pop();
2532
+ _.trys.pop();
2533
+ continue;
2534
+ default:
2535
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
2536
+ _ = 0;
2537
+ continue;
2538
+ }
2539
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
2540
+ _.label = op[1];
2541
+ break;
2542
+ }
2543
+ if (op[0] === 6 && _.label < t[1]) {
2544
+ _.label = t[1];
2545
+ t = op;
2546
+ break;
2547
+ }
2548
+ if (t && _.label < t[2]) {
2549
+ _.label = t[2];
2550
+ _.ops.push(op);
2551
+ break;
2552
+ }
2553
+ if (t[2]) _.ops.pop();
2554
+ _.trys.pop();
2555
+ continue;
2556
+ }
2557
+ op = body.call(thisArg, _);
2558
+ } catch (e) {
2559
+ op = [
2560
+ 6,
2561
+ e
2562
+ ];
2563
+ y = 0;
2564
+ } finally{
2565
+ f = t = 0;
2566
+ }
2567
+ if (op[0] & 5) throw op[1];
2568
+ return {
2569
+ value: op[0] ? op[1] : void 0,
2570
+ done: true
2571
+ };
2572
+ }
2573
+ }
2574
+ function PresetManager(param) {
2575
+ _object_destructuring_empty(param);
2576
+ var _useState = _sliced_to_array$1(useState([]), 2), presetList = _useState[0], setPresetList = _useState[1];
2577
+ var _useState1 = _sliced_to_array$1(useState(false), 2); _useState1[0]; var setIsSaving = _useState1[1];
2578
+ var savePresetFunc = Juce.getNativeFunction('savePreset');
2579
+ var loadPresetFunc = Juce.getNativeFunction('loadPreset');
2580
+ var getAllPresetsFunc = Juce.getNativeFunction('getAllPresets');
2581
+ var isDirtyFunc = Juce.getNativeFunction('canUndo');
2582
+ var _useState2 = _sliced_to_array$1(useState(), 2), selectedPreset = _useState2[0], setSelectedPreset = _useState2[1];
2583
+ var isLocalhost = window.location.hostname === 'localhost';
2584
+ var _useState3 = _sliced_to_array$1(useState(false), 2), isDirty = _useState3[0], setIsDirty = _useState3[1];
2585
+ useEffect(function() {
2586
+ if (!isLocalhost) {
2587
+ var isDirtyListenerId = //@ts-expect-error
2588
+ window.__JUCE__.backend.addEventListener('updateUndoButton', function(event) {
2589
+ setIsDirty(event);
2590
+ });
2591
+ return function cleanup() {
2592
+ //@ts-expect-error
2593
+ window.__JUCE__.backend.removeEventListener(isDirtyListenerId);
2594
+ };
2595
+ } else {
2596
+ return;
2597
+ }
2598
+ }, [
2599
+ window
2600
+ ]);
2601
+ useEffect(function() {
2602
+ var getUndoRedoState = /*#__PURE__*/ function() {
2603
+ var _ref = _async_to_generator$1(function() {
2604
+ var isDirtyState, error;
2605
+ return _ts_generator$1(this, function(_state) {
2606
+ switch(_state.label){
2607
+ case 0:
2608
+ _state.trys.push([
2609
+ 0,
2610
+ 2,
2611
+ ,
2612
+ 3
2613
+ ]);
2614
+ return [
2615
+ 4,
2616
+ isDirtyFunc()
2617
+ ];
2618
+ case 1:
2619
+ isDirtyState = _state.sent();
2620
+ setIsDirty(isDirtyState);
2621
+ return [
2622
+ 3,
2623
+ 3
2624
+ ];
2625
+ case 2:
2626
+ error = _state.sent();
2627
+ console.log(error);
2628
+ return [
2629
+ 3,
2630
+ 3
2631
+ ];
2632
+ case 3:
2633
+ return [
2634
+ 2
2635
+ ];
2636
+ }
2637
+ });
2638
+ });
2639
+ return function getUndoRedoState() {
2640
+ return _ref.apply(this, arguments);
2641
+ };
2642
+ }();
2643
+ getUndoRedoState();
2644
+ });
2645
+ var loadAllPresets = /*#__PURE__*/ function() {
2646
+ var _ref = _async_to_generator$1(function(selectedPreset) {
2647
+ var allPresets, error;
2648
+ return _ts_generator$1(this, function(_state) {
2649
+ switch(_state.label){
2650
+ case 0:
2651
+ _state.trys.push([
2652
+ 0,
2653
+ 2,
2654
+ ,
2655
+ 3
2656
+ ]);
2657
+ return [
2658
+ 4,
2659
+ getAllPresetsFunc()
2660
+ ];
2661
+ case 1:
2662
+ allPresets = _state.sent();
2663
+ setPresetList(allPresets);
2664
+ loadPresetFunc(selectedPreset !== null && selectedPreset !== void 0 ? selectedPreset : allPresets[0]);
2665
+ setSelectedPreset(selectedPreset !== null && selectedPreset !== void 0 ? selectedPreset : allPresets[0]);
2666
+ return [
2667
+ 3,
2668
+ 3
2669
+ ];
2670
+ case 2:
2671
+ error = _state.sent();
2672
+ console.log(error);
2673
+ return [
2674
+ 3,
2675
+ 3
2676
+ ];
2677
+ case 3:
2678
+ return [
2679
+ 2
2680
+ ];
2681
+ }
2682
+ });
2683
+ });
2684
+ return function loadAllPresets(selectedPreset) {
2685
+ return _ref.apply(this, arguments);
2686
+ };
2687
+ }();
2688
+ var loadPreset = function(value) {
2689
+ setSelectedPreset(value);
2690
+ loadPresetFunc(value);
2691
+ };
2692
+ var loadNextPreset = function(currentValue) {
2693
+ var nextIndex = presetList.indexOf(currentValue) + 1;
2694
+ if (nextIndex < presetList.length) {
2695
+ loadPreset(presetList[nextIndex]);
2696
+ } else {
2697
+ loadPreset(presetList[0]);
2698
+ }
2699
+ };
2700
+ var loadPreviousPreset = function(currentValue) {
2701
+ var prevIndex = presetList.indexOf(currentValue) - 1;
2702
+ if (prevIndex >= 0) {
2703
+ loadPreset(presetList[prevIndex]);
2704
+ } else {
2705
+ loadPreset(presetList[presetList.length - 1]);
2706
+ }
2707
+ };
2708
+ var savePreset = function(name) {
2709
+ var callSavePreset = /*#__PURE__*/ function() {
2710
+ var _ref = _async_to_generator$1(function(name) {
2711
+ var preset, error;
2712
+ return _ts_generator$1(this, function(_state) {
2713
+ switch(_state.label){
2714
+ case 0:
2715
+ setIsSaving(true);
2716
+ _state.label = 1;
2717
+ case 1:
2718
+ _state.trys.push([
2719
+ 1,
2720
+ 3,
2721
+ ,
2722
+ 4
2723
+ ]);
2724
+ return [
2725
+ 4,
2726
+ savePresetFunc(name)
2727
+ ];
2728
+ case 2:
2729
+ preset = _state.sent();
2730
+ setIsSaving(false);
2731
+ loadAllPresets(preset);
2732
+ return [
2733
+ 3,
2734
+ 4
2735
+ ];
2736
+ case 3:
2737
+ error = _state.sent();
2738
+ console.log(error);
2739
+ return [
2740
+ 3,
2741
+ 4
2742
+ ];
2743
+ case 4:
2744
+ return [
2745
+ 2
2746
+ ];
2747
+ }
2748
+ });
2749
+ });
2750
+ return function callSavePreset(name) {
2751
+ return _ref.apply(this, arguments);
2752
+ };
2753
+ }();
2754
+ callSavePreset(name);
2755
+ };
2756
+ useEffect(function() {
2757
+ loadAllPresets(presetList && presetList[0]);
2758
+ }, []);
2759
+ return /*#__PURE__*/ React__default.createElement(Box, {
2760
+ justifyContent: Box.justifyContent.flexStart,
2761
+ padding: [
2762
+ Box.padding.none,
2763
+ Box.padding.medium
2764
+ ],
2765
+ height: "30px",
2766
+ className: "uppercase bg-popover rounded-sm PresetManagerContainer",
2767
+ style: {
2768
+ maxWidth: '325px',
2769
+ backgroundColor: "var(--bg-page)",
2770
+ color: "var(--color-text)"
2771
+ }
2772
+ }, /*#__PURE__*/ React__default.createElement(Listbox, null, /*#__PURE__*/ React__default.createElement(Listbox.Button, {
2773
+ className: "PresetManagerButton"
2774
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2775
+ flex: "0 0 24px",
2776
+ width: "24px"
2777
+ }, /*#__PURE__*/ React__default.createElement(IconButton, {
2778
+ id: "savePreset",
2779
+ onClick: function(e) {
2780
+ e.preventDefault();
2781
+ selectedPreset && savePreset(selectedPreset);
2782
+ },
2783
+ icon: IconButton.icon.save
2784
+ })), /*#__PURE__*/ React__default.createElement(Box, {
2785
+ flex: "10",
2786
+ height: "100%",
2787
+ padding: [
2788
+ Box.padding.none,
2789
+ Box.padding.medium,
2790
+ Box.padding.none,
2791
+ Box.padding.small
2792
+ ]
2793
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2794
+ className: "PresetManagerButtonLabelOuterContainer",
2795
+ style: {
2796
+ width: 'auto'
2797
+ }
2798
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2799
+ className: "PresetManagerButtonLabelContainer ".concat(isDirty ? 'isDirty' : '')
2800
+ }, /*#__PURE__*/ React__default.createElement(Label, {
2801
+ className: 'PresetManagerButtonLabel'
2802
+ }, selectedPreset !== null && selectedPreset !== void 0 ? selectedPreset : 'New preset')))), /*#__PURE__*/ React__default.createElement(Box, {
2803
+ flex: "0"
2804
+ }, /*#__PURE__*/ React__default.createElement(IconButton, {
2805
+ id: "previousPreset",
2806
+ width: "20px",
2807
+ icon: IconButton.icon.up,
2808
+ onClick: function(e) {
2809
+ e.preventDefault();
2810
+ selectedPreset && loadPreviousPreset(selectedPreset);
2811
+ }
2812
+ }), /*#__PURE__*/ React__default.createElement(IconButton, {
2813
+ id: "nextPreset",
2814
+ width: "20px",
2815
+ icon: IconButton.icon.down,
2816
+ onClick: function(e) {
2817
+ e.preventDefault();
2818
+ selectedPreset && loadNextPreset(selectedPreset);
2819
+ }
2820
+ }))), /*#__PURE__*/ React__default.createElement(Listbox.Options, {
2821
+ anchor: "bottom start",
2822
+ className: 'PresetManagerPanel'
2823
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2824
+ height: "100%",
2825
+ justifyContent: Box.justifyContent.flexStart,
2826
+ alignItems: Box.alignItems.flexStart
2827
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2828
+ tag: Box.tag.ul,
2829
+ height: "100%",
2830
+ alignItems: Box.alignItems.flexStart,
2831
+ justifyContent: Box.justifyContent.flexStart,
2832
+ flexDirection: Box.flexDirection.column
2833
+ }, presetList.map(function(item) {
2834
+ return /*#__PURE__*/ React__default.createElement(Listbox.Option, {
2835
+ value: item,
2836
+ onClick: function() {
2837
+ loadPreset(item);
2838
+ },
2839
+ className: "PresetManagerListItem ".concat(item === selectedPreset ? 'isSelected' : '')
2840
+ }, /*#__PURE__*/ React__default.createElement(Box, {
2841
+ alignItems: Box.alignItems.flexStart,
2842
+ justifyContent: Box.justifyContent.flexStart,
2843
+ flexDirection: Box.flexDirection.column,
2844
+ padding: [
2845
+ Box.padding.mediumSmall,
2846
+ Box.padding.large
2847
+ ]
2848
+ }, /*#__PURE__*/ React__default.createElement("span", {
2849
+ className: "PresetManagerListItemText"
2850
+ }, item)));
2851
+ }))))));
2852
+ }
2853
+
2854
+ function _array_like_to_array(arr, len) {
2855
+ if (len == null || len > arr.length) len = arr.length;
2856
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
2857
+ return arr2;
2858
+ }
2859
+ function _array_with_holes(arr) {
2860
+ if (Array.isArray(arr)) return arr;
2861
+ }
2862
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2863
+ try {
2864
+ var info = gen[key](arg);
2865
+ var value = info.value;
2866
+ } catch (error) {
2867
+ reject(error);
2868
+ return;
2869
+ }
2870
+ if (info.done) {
2871
+ resolve(value);
2872
+ } else {
2873
+ Promise.resolve(value).then(_next, _throw);
2874
+ }
2875
+ }
2876
+ function _async_to_generator(fn) {
2877
+ return function() {
2878
+ var self = this, args = arguments;
2879
+ return new Promise(function(resolve, reject) {
2880
+ var gen = fn.apply(self, args);
2881
+ function _next(value) {
2882
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
2883
+ }
2884
+ function _throw(err) {
2885
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
2886
+ }
2887
+ _next(undefined);
2888
+ });
2889
+ };
2890
+ }
2891
+ function _define_property$1(obj, key, value) {
2892
+ if (key in obj) {
2893
+ Object.defineProperty(obj, key, {
2894
+ value: value,
2895
+ enumerable: true,
2896
+ configurable: true,
2897
+ writable: true
2898
+ });
2899
+ } else {
2900
+ obj[key] = value;
2901
+ }
2902
+ return obj;
2903
+ }
2904
+ function _iterable_to_array_limit(arr, i) {
2905
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
2906
+ if (_i == null) return;
2907
+ var _arr = [];
2908
+ var _n = true;
2909
+ var _d = false;
2910
+ var _s, _e;
2911
+ try {
2912
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
2913
+ _arr.push(_s.value);
2914
+ if (i && _arr.length === i) break;
2915
+ }
2916
+ } catch (err) {
2917
+ _d = true;
2918
+ _e = err;
2919
+ } finally{
2920
+ try {
2921
+ if (!_n && _i["return"] != null) _i["return"]();
2922
+ } finally{
2923
+ if (_d) throw _e;
2924
+ }
2925
+ }
2926
+ return _arr;
2927
+ }
2928
+ function _non_iterable_rest() {
2929
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2930
+ }
2931
+ function _object_spread$1(target) {
2932
+ for(var i = 1; i < arguments.length; i++){
2933
+ var source = arguments[i] != null ? arguments[i] : {};
2934
+ var ownKeys = Object.keys(source);
2935
+ if (typeof Object.getOwnPropertySymbols === "function") {
2936
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
2937
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
2938
+ }));
2939
+ }
2940
+ ownKeys.forEach(function(key) {
2941
+ _define_property$1(target, key, source[key]);
2942
+ });
2943
+ }
2944
+ return target;
2945
+ }
2946
+ function _sliced_to_array(arr, i) {
2947
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
2948
+ }
2949
+ function _unsupported_iterable_to_array(o, minLen) {
2950
+ if (!o) return;
2951
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
2952
+ var n = Object.prototype.toString.call(o).slice(8, -1);
2953
+ if (n === "Object" && o.constructor) n = o.constructor.name;
2954
+ if (n === "Map" || n === "Set") return Array.from(n);
2955
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2956
+ }
2957
+ function _ts_generator(thisArg, body) {
2958
+ var f, y, t, g, _ = {
2959
+ label: 0,
2960
+ sent: function() {
2961
+ if (t[0] & 1) throw t[1];
2962
+ return t[1];
2963
+ },
2964
+ trys: [],
2965
+ ops: []
2966
+ };
2967
+ return g = {
2968
+ next: verb(0),
2969
+ "throw": verb(1),
2970
+ "return": verb(2)
2971
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
2972
+ return this;
2973
+ }), g;
2974
+ function verb(n) {
2975
+ return function(v) {
2976
+ return step([
2977
+ n,
2978
+ v
2979
+ ]);
2980
+ };
2981
+ }
2982
+ function step(op) {
2983
+ if (f) throw new TypeError("Generator is already executing.");
2984
+ while(_)try {
2985
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
2986
+ if (y = 0, t) op = [
2987
+ op[0] & 2,
2988
+ t.value
2989
+ ];
2990
+ switch(op[0]){
2991
+ case 0:
2992
+ case 1:
2993
+ t = op;
2994
+ break;
2995
+ case 4:
2996
+ _.label++;
2997
+ return {
2998
+ value: op[1],
2999
+ done: false
3000
+ };
3001
+ case 5:
3002
+ _.label++;
3003
+ y = op[1];
3004
+ op = [
3005
+ 0
3006
+ ];
3007
+ continue;
3008
+ case 7:
3009
+ op = _.ops.pop();
3010
+ _.trys.pop();
3011
+ continue;
3012
+ default:
3013
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
3014
+ _ = 0;
3015
+ continue;
3016
+ }
3017
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
3018
+ _.label = op[1];
3019
+ break;
3020
+ }
3021
+ if (op[0] === 6 && _.label < t[1]) {
3022
+ _.label = t[1];
3023
+ t = op;
3024
+ break;
3025
+ }
3026
+ if (t && _.label < t[2]) {
3027
+ _.label = t[2];
3028
+ _.ops.push(op);
3029
+ break;
3030
+ }
3031
+ if (t[2]) _.ops.pop();
3032
+ _.trys.pop();
3033
+ continue;
3034
+ }
3035
+ op = body.call(thisArg, _);
3036
+ } catch (e) {
3037
+ op = [
3038
+ 6,
3039
+ e
3040
+ ];
3041
+ y = 0;
3042
+ } finally{
3043
+ f = t = 0;
3044
+ }
3045
+ if (op[0] & 5) throw op[1];
3046
+ return {
3047
+ value: op[0] ? op[1] : void 0,
3048
+ done: true
3049
+ };
3050
+ }
3051
+ }
3052
+ function ModuleHeader(param) {
3053
+ var title = param.title, subtitle = param.subtitle, className = param.className, style = param.style;
3054
+ var _globalState_highlightedItem, _globalState_highlightedItem1;
3055
+ var canUndoFunc = Juce.getNativeFunction('canUndo');
3056
+ var canRedoFunc = Juce.getNativeFunction('canRedo');
3057
+ var undo = Juce.getNativeFunction('undo');
3058
+ var redo = Juce.getNativeFunction('redo');
3059
+ var isLocalhost = window.location.hostname === 'localhost';
3060
+ var _useState = _sliced_to_array(useState(false), 2), canUndo = _useState[0], setCanUndo = _useState[1];
3061
+ var _useState1 = _sliced_to_array(useState(false), 2), canRedo = _useState1[0], setCanRedo = _useState1[1];
3062
+ var globalState = useGlobalContext().globalState;
3063
+ var handleUndo = function() {
3064
+ undo();
3065
+ };
3066
+ var handleRedo = function() {
3067
+ redo();
3068
+ };
3069
+ useEffect(function() {
3070
+ if (!isLocalhost) {
3071
+ var undoButtonListenerId = //@ts-expect-error
3072
+ window.__JUCE__.backend.addEventListener('updateUndoButton', function(event) {
3073
+ setCanUndo(event);
3074
+ });
3075
+ var redoButtonListenerId = //@ts-expect-error
3076
+ window.__JUCE__.backend.addEventListener('updateRedoButton', function(event) {
3077
+ setCanRedo(event);
3078
+ });
3079
+ return function cleanup() {
3080
+ //@ts-expect-error
3081
+ window.__JUCE__.backend.removeEventListener(undoButtonListenerId);
3082
+ //@ts-expect-error
3083
+ window.__JUCE__.backend.removeEventListener(redoButtonListenerId);
3084
+ };
3085
+ } else {
3086
+ return;
3087
+ }
3088
+ }, [
3089
+ window
3090
+ ]);
3091
+ useEffect(function() {
3092
+ var getUndoRedoState = /*#__PURE__*/ function() {
3093
+ var _ref = _async_to_generator(function() {
3094
+ var canUndoState, canRedoState, error;
3095
+ return _ts_generator(this, function(_state) {
3096
+ switch(_state.label){
3097
+ case 0:
3098
+ _state.trys.push([
3099
+ 0,
3100
+ 3,
3101
+ ,
3102
+ 4
3103
+ ]);
3104
+ return [
3105
+ 4,
3106
+ canUndoFunc()
3107
+ ];
3108
+ case 1:
3109
+ canUndoState = _state.sent();
3110
+ return [
3111
+ 4,
3112
+ canRedoFunc()
3113
+ ];
3114
+ case 2:
3115
+ canRedoState = _state.sent();
3116
+ setCanUndo(canUndoState);
3117
+ setCanRedo(canRedoState);
3118
+ return [
3119
+ 3,
3120
+ 4
3121
+ ];
3122
+ case 3:
3123
+ error = _state.sent();
3124
+ console.log(error);
3125
+ return [
3126
+ 3,
3127
+ 4
3128
+ ];
3129
+ case 4:
3130
+ return [
3131
+ 2
3132
+ ];
3133
+ }
3134
+ });
3135
+ });
3136
+ return function getUndoRedoState() {
3137
+ return _ref.apply(this, arguments);
3138
+ };
3139
+ }();
3140
+ getUndoRedoState();
3141
+ });
3142
+ return /*#__PURE__*/ React__default.createElement(Box, {
3143
+ gap: Box.gap.medium,
3144
+ tag: Box.tag.header,
3145
+ padding: [
3146
+ Box.padding.medium,
3147
+ Box.padding.large
2086
3148
  ],
2087
3149
  className: classnames('ModuleHeader', className),
2088
3150
  style: _object_spread$1({}, style)
@@ -2107,21 +3169,38 @@ function ModuleHeader(param) {
2107
3169
  flex: "0 0 250px"
2108
3170
  }, /*#__PURE__*/ React__default.createElement(KeyValueDisplayScreen, {
2109
3171
  data: {
2110
- key: activeItem === null || activeItem === void 0 ? void 0 : activeItem.key,
2111
- value: activeItem === null || activeItem === void 0 ? void 0 : activeItem.value
3172
+ key: globalState === null || globalState === void 0 ? void 0 : (_globalState_highlightedItem = globalState.highlightedItem) === null || _globalState_highlightedItem === void 0 ? void 0 : _globalState_highlightedItem.label,
3173
+ value: globalState === null || globalState === void 0 ? void 0 : (_globalState_highlightedItem1 = globalState.highlightedItem) === null || _globalState_highlightedItem1 === void 0 ? void 0 : _globalState_highlightedItem1.value
2112
3174
  }
2113
3175
  })), /*#__PURE__*/ React__default.createElement(Box, {
3176
+ alignItems: Box.alignItems.flexStart,
3177
+ flex: "0 0 325px"
3178
+ }, /*#__PURE__*/ React__default.createElement(PresetManager, null)), /*#__PURE__*/ React__default.createElement(Box, {
2114
3179
  flex: "0"
2115
3180
  }, /*#__PURE__*/ React__default.createElement(IconButton, {
2116
3181
  id: "undo",
3182
+ width: "30px",
3183
+ height: "30px",
2117
3184
  icon: IconButton.icon.undo,
3185
+ padding: [
3186
+ IconButton.padding.none,
3187
+ IconButton.padding.small
3188
+ ],
3189
+ disabled: !canUndo,
2118
3190
  onClick: function() {
2119
- undo();
3191
+ handleUndo();
2120
3192
  }
2121
3193
  }), /*#__PURE__*/ React__default.createElement(IconButton, {
2122
3194
  id: "redo",
3195
+ width: "30px",
3196
+ height: "30px",
3197
+ padding: [
3198
+ IconButton.padding.none,
3199
+ IconButton.padding.small
3200
+ ],
3201
+ disabled: !canRedo,
2123
3202
  onClick: function() {
2124
- redo();
3203
+ handleRedo();
2125
3204
  },
2126
3205
  icon: IconButton.icon.redo
2127
3206
  }))));
@@ -2171,89 +3250,5 @@ function ModuleFooter(param) {
2171
3250
  });
2172
3251
  }
2173
3252
 
2174
- function _array_like_to_array(arr, len) {
2175
- if (len == null || len > arr.length) len = arr.length;
2176
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
2177
- return arr2;
2178
- }
2179
- function _array_with_holes(arr) {
2180
- if (Array.isArray(arr)) return arr;
2181
- }
2182
- function _array_without_holes(arr) {
2183
- if (Array.isArray(arr)) return _array_like_to_array(arr);
2184
- }
2185
- function _iterable_to_array(iter) {
2186
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
2187
- }
2188
- function _iterable_to_array_limit(arr, i) {
2189
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
2190
- if (_i == null) return;
2191
- var _arr = [];
2192
- var _n = true;
2193
- var _d = false;
2194
- var _s, _e;
2195
- try {
2196
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
2197
- _arr.push(_s.value);
2198
- if (i && _arr.length === i) break;
2199
- }
2200
- } catch (err) {
2201
- _d = true;
2202
- _e = err;
2203
- } finally{
2204
- try {
2205
- if (!_n && _i["return"] != null) _i["return"]();
2206
- } finally{
2207
- if (_d) throw _e;
2208
- }
2209
- }
2210
- return _arr;
2211
- }
2212
- function _non_iterable_rest() {
2213
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2214
- }
2215
- function _non_iterable_spread() {
2216
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2217
- }
2218
- function _sliced_to_array(arr, i) {
2219
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
2220
- }
2221
- function _to_consumable_array(arr) {
2222
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
2223
- }
2224
- function _unsupported_iterable_to_array(o, minLen) {
2225
- if (!o) return;
2226
- if (typeof o === "string") return _array_like_to_array(o, minLen);
2227
- var n = Object.prototype.toString.call(o).slice(8, -1);
2228
- if (n === "Object" && o.constructor) n = o.constructor.name;
2229
- if (n === "Map" || n === "Set") return Array.from(n);
2230
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2231
- }
2232
- function useObservable() {
2233
- var _useState = _sliced_to_array(useState([]), 2), observers = _useState[0], setObservers = _useState[1];
2234
- var subscribe = function(observer) {
2235
- if (!observers.includes(observer)) {
2236
- setObservers(_to_consumable_array(observers).concat([
2237
- observer
2238
- ]));
2239
- }
2240
- };
2241
- var unsubscribe = function(observer) {
2242
- setObservers(observers.filter(function(item) {
2243
- return item !== observer;
2244
- }));
2245
- };
2246
- var fire = function(action) {
2247
- observers.forEach(function() {
2248
- return action();
2249
- });
2250
- };
2251
- return {
2252
- subscribe: subscribe,
2253
- unsubscribe: unsubscribe,
2254
- fire: fire
2255
- };
2256
- }
2257
-
2258
- export { Slider as BarSlider, Box, Button, Dropdown, FontSizes, Heading, IconButton, IndicatorLight, Input, KeyValueDisplayScreen, Label, Matrix, ModuleFooter, ModuleHeader, Oscilloscope, RotarySlider, SliderValue, Spacing, Tabs, clamp, decimalToPercent, getPosition, getTransformString, normalisedToScaled, percentToDecimal, randomizeValue, scaledToNormalised as scaledTonormalised, useObservable, useSlider };
3253
+ export { Slider as BarSlider, Box, Button, Dropdown, FontSizes, GlobalContextProvider, Heading, IconButton, IndicatorLight, Input, KeyValueDisplayScreen, Label, Matrix, ModuleFooter, ModuleHeader, Oscilloscope, RotarySlider, SliderValue, Spacing, Tabs, clamp, decimalToPercent, defaultGlobalStateValue as defaultValue, getPosition, getTransformString, normalisedToScaled, percentToDecimal, randomizeValue, scaledToNormalised as scaledTonormalised, useGlobalContext, useObservable, useSlider };
2259
3254
  //# sourceMappingURL=index.js.map