@antimatter-audio/antimatter-ui 10.15.1 → 10.16.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 (49) hide show
  1. package/dist/advanced/IconButton/IconButton.d.ts.map +1 -1
  2. package/dist/advanced/ModMatrix/ModMatrix.d.ts.map +1 -1
  3. package/dist/advanced/ModMatrix/ModMatrixCell.d.ts +3 -2
  4. package/dist/advanced/ModMatrix/ModMatrixCell.d.ts.map +1 -1
  5. package/dist/advanced/ModMatrix/ModMatrixRow.d.ts +2 -4
  6. package/dist/advanced/ModMatrix/ModMatrixRow.d.ts.map +1 -1
  7. package/dist/advanced/ModMatrix/ModMatrixToggleCell.d.ts +4 -2
  8. package/dist/advanced/ModMatrix/ModMatrixToggleCell.d.ts.map +1 -1
  9. package/dist/advanced/ModMatrix/utils.d.ts +16 -0
  10. package/dist/advanced/ModMatrix/utils.d.ts.map +1 -0
  11. package/dist/advanced/Oscilloscope/Oscilloscope.d.ts.map +1 -1
  12. package/dist/context/GlobalContextProvider.d.ts +21 -4
  13. package/dist/context/GlobalContextProvider.d.ts.map +1 -1
  14. package/dist/core/Button/Button.d.ts.map +1 -1
  15. package/dist/core/Dropdown/Dropdown.d.ts.map +1 -1
  16. package/dist/core/Icon/Icon.d.ts +21 -55
  17. package/dist/core/Icon/Icon.d.ts.map +1 -1
  18. package/dist/hooks/useCombobox.d.ts +1 -0
  19. package/dist/hooks/useCombobox.d.ts.map +1 -1
  20. package/dist/hooks/useDropdown.d.ts +3 -1
  21. package/dist/hooks/useDropdown.d.ts.map +1 -1
  22. package/dist/hooks/useSlider.d.ts +3 -2
  23. package/dist/hooks/useSlider.d.ts.map +1 -1
  24. package/dist/index.js +722 -352
  25. package/dist/index.js.map +1 -1
  26. package/dist/src/advanced/IconButton/IconButton.d.ts.map +1 -1
  27. package/dist/src/advanced/ModMatrix/ModMatrix.d.ts.map +1 -1
  28. package/dist/src/advanced/ModMatrix/ModMatrixCell.d.ts +3 -2
  29. package/dist/src/advanced/ModMatrix/ModMatrixCell.d.ts.map +1 -1
  30. package/dist/src/advanced/ModMatrix/ModMatrixRow.d.ts +2 -4
  31. package/dist/src/advanced/ModMatrix/ModMatrixRow.d.ts.map +1 -1
  32. package/dist/src/advanced/ModMatrix/ModMatrixToggleCell.d.ts +4 -2
  33. package/dist/src/advanced/ModMatrix/ModMatrixToggleCell.d.ts.map +1 -1
  34. package/dist/src/advanced/ModMatrix/utils.d.ts +16 -0
  35. package/dist/src/advanced/ModMatrix/utils.d.ts.map +1 -0
  36. package/dist/src/advanced/Oscilloscope/Oscilloscope.d.ts.map +1 -1
  37. package/dist/src/context/GlobalContextProvider.d.ts +21 -4
  38. package/dist/src/context/GlobalContextProvider.d.ts.map +1 -1
  39. package/dist/src/core/Button/Button.d.ts.map +1 -1
  40. package/dist/src/core/Dropdown/Dropdown.d.ts.map +1 -1
  41. package/dist/src/core/Icon/Icon.d.ts +21 -55
  42. package/dist/src/core/Icon/Icon.d.ts.map +1 -1
  43. package/dist/src/hooks/useCombobox.d.ts +1 -0
  44. package/dist/src/hooks/useCombobox.d.ts.map +1 -1
  45. package/dist/src/hooks/useDropdown.d.ts +3 -1
  46. package/dist/src/hooks/useDropdown.d.ts.map +1 -1
  47. package/dist/src/hooks/useSlider.d.ts +3 -2
  48. package/dist/src/hooks/useSlider.d.ts.map +1 -1
  49. 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, { useEffect, useRef, useReducer, useCallback, createContext, useContext, useState } from 'react';
2
+ import React__default, { useRef, useReducer, useCallback, createContext, useContext, useEffect, useState } from 'react';
3
3
  import classnames from 'classnames';
4
4
  import { TabGroup, TabList, Tab, Listbox, ListboxButton, ListboxOptions, ListboxOption, Combobox, ComboboxInput, ComboboxButton, ComboboxOptions, ComboboxOption } from '@headlessui/react';
5
5
  import * as Juce from 'juce-framework-frontend';
@@ -159,164 +159,6 @@ var ButtonType = /*#__PURE__*/ function(ButtonType) {
159
159
  return ButtonType;
160
160
  }({});
161
161
 
162
- function _array_like_to_array$h(arr, len) {
163
- if (len == null || len > arr.length) len = arr.length;
164
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
165
- return arr2;
166
- }
167
- function _array_with_holes$g(arr) {
168
- if (Array.isArray(arr)) return arr;
169
- }
170
- function _define_property$k(obj, key, value) {
171
- if (key in obj) {
172
- Object.defineProperty(obj, key, {
173
- value: value,
174
- enumerable: true,
175
- configurable: true,
176
- writable: true
177
- });
178
- } else {
179
- obj[key] = value;
180
- }
181
- return obj;
182
- }
183
- function _iterable_to_array_limit$g(arr, i) {
184
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
185
- if (_i == null) return;
186
- var _arr = [];
187
- var _n = true;
188
- var _d = false;
189
- var _s, _e;
190
- try {
191
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
192
- _arr.push(_s.value);
193
- if (i && _arr.length === i) break;
194
- }
195
- } catch (err) {
196
- _d = true;
197
- _e = err;
198
- } finally{
199
- try {
200
- if (!_n && _i["return"] != null) _i["return"]();
201
- } finally{
202
- if (_d) throw _e;
203
- }
204
- }
205
- return _arr;
206
- }
207
- function _non_iterable_rest$g() {
208
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
209
- }
210
- function _object_spread$k(target) {
211
- for(var i = 1; i < arguments.length; i++){
212
- var source = arguments[i] != null ? arguments[i] : {};
213
- var ownKeys = Object.keys(source);
214
- if (typeof Object.getOwnPropertySymbols === "function") {
215
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
216
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
217
- }));
218
- }
219
- ownKeys.forEach(function(key) {
220
- _define_property$k(target, key, source[key]);
221
- });
222
- }
223
- return target;
224
- }
225
- function _sliced_to_array$g(arr, i) {
226
- return _array_with_holes$g(arr) || _iterable_to_array_limit$g(arr, i) || _unsupported_iterable_to_array$h(arr, i) || _non_iterable_rest$g();
227
- }
228
- function _unsupported_iterable_to_array$h(o, minLen) {
229
- if (!o) return;
230
- if (typeof o === "string") return _array_like_to_array$h(o, minLen);
231
- var n = Object.prototype.toString.call(o).slice(8, -1);
232
- if (n === "Object" && o.constructor) n = o.constructor.name;
233
- if (n === "Map" || n === "Set") return Array.from(n);
234
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$h(o, minLen);
235
- }
236
- function Button(param) {
237
- 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 ? [
238
- Spacing.small
239
- ] : _param_padding, _param_margin = param.margin, margin = _param_margin === void 0 ? [
240
- Spacing.none
241
- ] : _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;
242
- var _React_useState = _sliced_to_array$g(React__default.useState(false), 2), isSelected = _React_useState[0], setIsSelected = _React_useState[1];
243
- var buttonState = Juce.getToggleState(id);
244
- var isLocalhost = window.location.hostname === 'localhost';
245
- // Update the local state when the ID changes
246
- useEffect(function() {
247
- setIsSelected(buttonState === null || buttonState === void 0 ? void 0 : buttonState.value);
248
- }, [
249
- id
250
- ]);
251
- // Sets up listeners to handle changes on the backend
252
- useEffect(function() {
253
- if (!isLocalhost && !onClick) {
254
- var valueListenerId = buttonState === null || buttonState === void 0 ? void 0 : buttonState.valueChangedEvent.addListener(function() {
255
- setIsSelected(buttonState === null || buttonState === void 0 ? void 0 : buttonState.value);
256
- });
257
- return function cleanup() {
258
- buttonState === null || buttonState === void 0 ? void 0 : buttonState.valueChangedEvent.removeListener(valueListenerId);
259
- };
260
- } else {
261
- return;
262
- }
263
- });
264
- var handleMouseDown = function(e) {
265
- if (!onClick) {
266
- e.preventDefault();
267
- if (type === ButtonType.momentary) {
268
- setIsSelected(true);
269
- buttonState.setValue(true);
270
- } else {
271
- setIsSelected(!isSelected);
272
- buttonState.setValue(!isSelected);
273
- }
274
- }
275
- };
276
- var handleMouseUp = function() {
277
- if (!onClick) {
278
- setIsSelected(false);
279
- buttonState.setValue(false);
280
- }
281
- };
282
- React__default.useEffect(function() {
283
- if (type === ButtonType.momentary && !onClick) {
284
- window.addEventListener('mouseup', handleMouseUp);
285
- return function() {
286
- window.removeEventListener('mouseup', handleMouseUp);
287
- };
288
- }
289
- return;
290
- }, [
291
- isSelected
292
- ]);
293
- var _padding_, _padding_1, _padding_2, _ref, _margin_, _margin_1, _margin_2, _ref1;
294
- return /*#__PURE__*/ React__default.createElement("button", {
295
- id: id,
296
- onMouseDown: handleMouseDown,
297
- disabled: disabled,
298
- onClick: onClick && onClick,
299
- style: _object_spread$k({
300
- paddingTop: "var(--p-".concat(padding[0], ")"),
301
- paddingRight: "var(--p-".concat((_padding_ = padding[1]) !== null && _padding_ !== void 0 ? _padding_ : padding[0], ")"),
302
- paddingBottom: "var(--p-".concat((_padding_1 = padding[2]) !== null && _padding_1 !== void 0 ? _padding_1 : padding[0], ")"),
303
- 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], ")"),
304
- marginTop: "var(--p-".concat(margin[0], ")"),
305
- marginRight: "var(--p-".concat((_margin_ = margin[1]) !== null && _margin_ !== void 0 ? _margin_ : margin[0], ")"),
306
- marginBottom: "var(--p-".concat((_margin_1 = margin[2]) !== null && _margin_1 !== void 0 ? _margin_1 : margin[0], ")"),
307
- 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], ")")
308
- }, style),
309
- className: classnames('Button', isSelected && 'selected', "".concat(size), className)
310
- }, size !== ButtonSize.xSmall && (text ? text : children));
311
- }
312
- Button.padding = Spacing;
313
- Button.margin = Spacing;
314
- Button.type = ButtonType;
315
- Button.size = ButtonSize;
316
-
317
- var css_248z$8 = ".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-radius: var(--radius-sm);\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n height: var(--spacing-xl);\n background: var(--color-gray-800);\n color: var(--color-text);\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-items {\n border: 2px solid;\n}\n\n.Dropdown-item {\n background-color: var(--bg-page);\n font-size: var(--text-sm);\n padding: var(--spacing-md) var(--spacing-xl);\n min-width: 100px;\n color: var(--color-text);\n cursor: pointer;\n text-align: center;\n text-transform: uppercase;\n font-weight: bold;\n}\n\n.Dropdown-item[data-selected] {\n background-color: var(--bg-popover);\n color: var(--color-text);\n}\n\n.Dropdown-item[data-active] {\n background-color: var(--bg-popover);\n color: var(--color-text);\n}\n";
318
- styleInject(css_248z$8);
319
-
320
162
  function useObservable(param) {
321
163
  var onFire = param.onFire;
322
164
  var observers = useRef([]);
@@ -357,30 +199,30 @@ function useObservable(param) {
357
199
  };
358
200
  }
359
201
 
360
- function _array_like_to_array$g(arr, len) {
202
+ function _array_like_to_array$h(arr, len) {
361
203
  if (len == null || len > arr.length) len = arr.length;
362
204
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
363
205
  return arr2;
364
206
  }
365
- function _array_without_holes$1(arr) {
366
- if (Array.isArray(arr)) return _array_like_to_array$g(arr);
207
+ function _array_without_holes$2(arr) {
208
+ if (Array.isArray(arr)) return _array_like_to_array$h(arr);
367
209
  }
368
- function _iterable_to_array$1(iter) {
210
+ function _iterable_to_array$2(iter) {
369
211
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
370
212
  }
371
- function _non_iterable_spread$1() {
213
+ function _non_iterable_spread$2() {
372
214
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
373
215
  }
374
- function _to_consumable_array$1(arr) {
375
- return _array_without_holes$1(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$g(arr) || _non_iterable_spread$1();
216
+ function _to_consumable_array$2(arr) {
217
+ return _array_without_holes$2(arr) || _iterable_to_array$2(arr) || _unsupported_iterable_to_array$h(arr) || _non_iterable_spread$2();
376
218
  }
377
- function _unsupported_iterable_to_array$g(o, minLen) {
219
+ function _unsupported_iterable_to_array$h(o, minLen) {
378
220
  if (!o) return;
379
- if (typeof o === "string") return _array_like_to_array$g(o, minLen);
221
+ if (typeof o === "string") return _array_like_to_array$h(o, minLen);
380
222
  var n = Object.prototype.toString.call(o).slice(8, -1);
381
223
  if (n === "Object" && o.constructor) n = o.constructor.name;
382
224
  if (n === "Map" || n === "Set") return Array.from(n);
383
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$g(o, minLen);
225
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$h(o, minLen);
384
226
  }
385
227
  // export const roundUpToTwoDecimals = (val: number) => Math.ceil(val * 100) / 100;
386
228
  // mocks the `normalisedToScaledValue` internal method from JUCE
@@ -430,7 +272,7 @@ var getValidValueForInput = function(param) {
430
272
  // TODO: Clean up
431
273
  var matchCriteria = /^-?(?:\d+\.\d+|\d+|\.\d+)$/g;
432
274
  var splitValue = value.toString().matchAll(matchCriteria);
433
- var splitValueArray = _to_consumable_array$1(splitValue);
275
+ var splitValueArray = _to_consumable_array$2(splitValue);
434
276
  var validValue = splitValueArray === null || splitValueArray === void 0 ? void 0 : (_splitValueArray_ = splitValueArray[0]) === null || _splitValueArray_ === void 0 ? void 0 : _splitValueArray_[0];
435
277
  var start = properties.start, end = properties.end;
436
278
  if (validValue !== null && validValue !== undefined) {
@@ -495,15 +337,47 @@ var randomizeValue = function(min, max) {
495
337
  return Math.random() * (max - min) + min;
496
338
  };
497
339
 
498
- function _array_like_to_array$f(arr, len) {
340
+ function _array_like_to_array$g(arr, len) {
499
341
  if (len == null || len > arr.length) len = arr.length;
500
342
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
501
343
  return arr2;
502
344
  }
503
- function _array_with_holes$f(arr) {
345
+ function _array_with_holes$g(arr) {
504
346
  if (Array.isArray(arr)) return arr;
505
347
  }
506
- function _define_property$j(obj, key, value) {
348
+ function _array_without_holes$1(arr) {
349
+ if (Array.isArray(arr)) return _array_like_to_array$g(arr);
350
+ }
351
+ function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
352
+ try {
353
+ var info = gen[key](arg);
354
+ var value = info.value;
355
+ } catch (error) {
356
+ reject(error);
357
+ return;
358
+ }
359
+ if (info.done) {
360
+ resolve(value);
361
+ } else {
362
+ Promise.resolve(value).then(_next, _throw);
363
+ }
364
+ }
365
+ function _async_to_generator$4(fn) {
366
+ return function() {
367
+ var self = this, args = arguments;
368
+ return new Promise(function(resolve, reject) {
369
+ var gen = fn.apply(self, args);
370
+ function _next(value) {
371
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value);
372
+ }
373
+ function _throw(err) {
374
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err);
375
+ }
376
+ _next(undefined);
377
+ });
378
+ };
379
+ }
380
+ function _define_property$k(obj, key, value) {
507
381
  if (key in obj) {
508
382
  Object.defineProperty(obj, key, {
509
383
  value: value,
@@ -516,7 +390,10 @@ function _define_property$j(obj, key, value) {
516
390
  }
517
391
  return obj;
518
392
  }
519
- function _iterable_to_array_limit$f(arr, i) {
393
+ function _iterable_to_array$1(iter) {
394
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
395
+ }
396
+ function _iterable_to_array_limit$g(arr, i) {
520
397
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
521
398
  if (_i == null) return;
522
399
  var _arr = [];
@@ -540,10 +417,13 @@ function _iterable_to_array_limit$f(arr, i) {
540
417
  }
541
418
  return _arr;
542
419
  }
543
- function _non_iterable_rest$f() {
420
+ function _non_iterable_rest$g() {
544
421
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
545
422
  }
546
- function _object_spread$j(target) {
423
+ function _non_iterable_spread$1() {
424
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
425
+ }
426
+ function _object_spread$k(target) {
547
427
  for(var i = 1; i < arguments.length; i++){
548
428
  var source = arguments[i] != null ? arguments[i] : {};
549
429
  var ownKeys = Object.keys(source);
@@ -553,7 +433,7 @@ function _object_spread$j(target) {
553
433
  }));
554
434
  }
555
435
  ownKeys.forEach(function(key) {
556
- _define_property$j(target, key, source[key]);
436
+ _define_property$k(target, key, source[key]);
557
437
  });
558
438
  }
559
439
  return target;
@@ -577,16 +457,110 @@ function _object_spread_props$4(target, source) {
577
457
  }
578
458
  return target;
579
459
  }
580
- function _sliced_to_array$f(arr, i) {
581
- return _array_with_holes$f(arr) || _iterable_to_array_limit$f(arr, i) || _unsupported_iterable_to_array$f(arr, i) || _non_iterable_rest$f();
460
+ function _sliced_to_array$g(arr, i) {
461
+ return _array_with_holes$g(arr) || _iterable_to_array_limit$g(arr, i) || _unsupported_iterable_to_array$g(arr, i) || _non_iterable_rest$g();
582
462
  }
583
- function _unsupported_iterable_to_array$f(o, minLen) {
463
+ function _to_consumable_array$1(arr) {
464
+ return _array_without_holes$1(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$g(arr) || _non_iterable_spread$1();
465
+ }
466
+ function _unsupported_iterable_to_array$g(o, minLen) {
584
467
  if (!o) return;
585
- if (typeof o === "string") return _array_like_to_array$f(o, minLen);
468
+ if (typeof o === "string") return _array_like_to_array$g(o, minLen);
586
469
  var n = Object.prototype.toString.call(o).slice(8, -1);
587
470
  if (n === "Object" && o.constructor) n = o.constructor.name;
588
471
  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$f(o, minLen);
472
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$g(o, minLen);
473
+ }
474
+ function _ts_generator$4(thisArg, body) {
475
+ var f, y, t, _ = {
476
+ label: 0,
477
+ sent: function() {
478
+ if (t[0] & 1) throw t[1];
479
+ return t[1];
480
+ },
481
+ trys: [],
482
+ ops: []
483
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
484
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
485
+ return this;
486
+ }), g;
487
+ function verb(n) {
488
+ return function(v) {
489
+ return step([
490
+ n,
491
+ v
492
+ ]);
493
+ };
494
+ }
495
+ function step(op) {
496
+ if (f) throw new TypeError("Generator is already executing.");
497
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
498
+ 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;
499
+ if (y = 0, t) op = [
500
+ op[0] & 2,
501
+ t.value
502
+ ];
503
+ switch(op[0]){
504
+ case 0:
505
+ case 1:
506
+ t = op;
507
+ break;
508
+ case 4:
509
+ _.label++;
510
+ return {
511
+ value: op[1],
512
+ done: false
513
+ };
514
+ case 5:
515
+ _.label++;
516
+ y = op[1];
517
+ op = [
518
+ 0
519
+ ];
520
+ continue;
521
+ case 7:
522
+ op = _.ops.pop();
523
+ _.trys.pop();
524
+ continue;
525
+ default:
526
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
527
+ _ = 0;
528
+ continue;
529
+ }
530
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
531
+ _.label = op[1];
532
+ break;
533
+ }
534
+ if (op[0] === 6 && _.label < t[1]) {
535
+ _.label = t[1];
536
+ t = op;
537
+ break;
538
+ }
539
+ if (t && _.label < t[2]) {
540
+ _.label = t[2];
541
+ _.ops.push(op);
542
+ break;
543
+ }
544
+ if (t[2]) _.ops.pop();
545
+ _.trys.pop();
546
+ continue;
547
+ }
548
+ op = body.call(thisArg, _);
549
+ } catch (e) {
550
+ op = [
551
+ 6,
552
+ e
553
+ ];
554
+ y = 0;
555
+ } finally{
556
+ f = t = 0;
557
+ }
558
+ if (op[0] & 5) throw op[1];
559
+ return {
560
+ value: op[0] ? op[1] : void 0,
561
+ done: true
562
+ };
563
+ }
590
564
  }
591
565
  // Initial state
592
566
  var defaultGlobalStateValue = {
@@ -594,11 +568,18 @@ var defaultGlobalStateValue = {
594
568
  label: 'Antimatter Audio',
595
569
  value: 0
596
570
  },
571
+ // focusedItem: '',
597
572
  allParameters: [],
598
573
  automatableParamsList: [],
599
574
  automatableParamLabels: [],
600
575
  parameterTypes: [],
601
- modSlots: {},
576
+ modSlotTargets: {},
577
+ modSlotIds: [],
578
+ modSlotPreview: {
579
+ slotId: '',
580
+ targetIndex: 0,
581
+ isEditable: false
582
+ },
602
583
  modSlotParams: [],
603
584
  modSlotParamLabels: [],
604
585
  defaultParamValues: [],
@@ -608,51 +589,107 @@ var defaultGlobalStateValue = {
608
589
  var reducer = function(state, action) {
609
590
  switch(action.type){
610
591
  case 'HIGHLIGHTED_ITEM_CHANGED':
611
- return _object_spread_props$4(_object_spread$j({}, state), {
592
+ return _object_spread_props$4(_object_spread$k({}, state), {
612
593
  highlightedItem: action.payload
613
594
  });
595
+ // case 'FOCUSED_ITEM_CHANGED':
596
+ // return { ...state, focusedItem: action.payload };
614
597
  case 'ADVANCED_VIEW_TOGGLED':
615
- return _object_spread_props$4(_object_spread$j({}, state), {
598
+ return _object_spread_props$4(_object_spread$k({}, state), {
616
599
  advancedView: action.payload
617
600
  });
618
601
  case 'AUTOMATABLE_PARAMS_LIST_RECEIVED':
619
- return _object_spread_props$4(_object_spread$j({}, state), {
602
+ return _object_spread_props$4(_object_spread$k({}, state), {
620
603
  automatableParamsList: action.payload
621
604
  });
622
605
  case 'AUTOMATABLE_PARAM_LABELS_RECEIVED':
623
- return _object_spread_props$4(_object_spread$j({}, state), {
606
+ return _object_spread_props$4(_object_spread$k({}, state), {
624
607
  automatableParamLabels: action.payload
625
608
  });
626
609
  case 'PARAMETER_TYPES_RECEIVED':
627
- return _object_spread_props$4(_object_spread$j({}, state), {
610
+ return _object_spread_props$4(_object_spread$k({}, state), {
628
611
  parameterTypes: action.payload
629
612
  });
630
613
  case 'ALL_PARAMETERS_RECEIVED':
631
- return _object_spread_props$4(_object_spread$j({}, state), {
614
+ return _object_spread_props$4(_object_spread$k({}, state), {
632
615
  allParameters: action.payload
633
616
  });
634
617
  case 'MOD_SLOTS_RECEIVED':
635
618
  var _action_payload;
636
- return _object_spread_props$4(_object_spread$j({}, state), {
637
- modSlots: action === null || action === void 0 ? void 0 : (_action_payload = action.payload) === null || _action_payload === void 0 ? void 0 : _action_payload.reduce(function(acc, val) {
638
- return _object_spread_props$4(_object_spread$j({}, acc), _define_property$j({}, val[0], val[1]));
619
+ return _object_spread_props$4(_object_spread$k({}, state), {
620
+ modSlotIds: action.payload.map(function(val) {
621
+ return val[0];
622
+ }),
623
+ modSlotTargets: action === null || action === void 0 ? void 0 : (_action_payload = action.payload) === null || _action_payload === void 0 ? void 0 : _action_payload.reduce(function(acc, val) {
624
+ return _object_spread_props$4(_object_spread$k({}, acc), _define_property$k({}, val[0], val[1]));
639
625
  }, {})
640
626
  });
641
- case 'MOD_SLOT_UPDATED':
627
+ case 'MOD_SLOT_TARGETS_UPDATED':
642
628
  var _action_payload1, _action_payload2;
643
- return _object_spread_props$4(_object_spread$j({}, state), {
644
- modSlots: _object_spread_props$4(_object_spread$j({}, state === null || state === void 0 ? void 0 : state.modSlots), _define_property$j({}, (_action_payload1 = action.payload) === null || _action_payload1 === void 0 ? void 0 : _action_payload1[0], action === null || action === void 0 ? void 0 : (_action_payload2 = action.payload) === null || _action_payload2 === void 0 ? void 0 : _action_payload2[1]))
629
+ return _object_spread_props$4(_object_spread$k({}, state), {
630
+ modSlotTargets: _object_spread_props$4(_object_spread$k({}, state === null || state === void 0 ? void 0 : state.modSlotTargets), _define_property$k({}, (_action_payload1 = action.payload) === null || _action_payload1 === void 0 ? void 0 : _action_payload1[0], action === null || action === void 0 ? void 0 : (_action_payload2 = action.payload) === null || _action_payload2 === void 0 ? void 0 : _action_payload2[1]))
645
631
  });
632
+ case 'MOD_SLOT_PREVIEW_TARGET_INDEX_UPDATED':
633
+ {
634
+ return _object_spread_props$4(_object_spread$k({}, state), {
635
+ modSlotPreview: _object_spread_props$4(_object_spread$k({}, state.modSlotPreview), {
636
+ targetIndex: action.payload
637
+ })
638
+ });
639
+ }
640
+ case 'MOD_SLOT_PREVIEW_SLOT_ID_UPDATED':
641
+ {
642
+ return _object_spread_props$4(_object_spread$k({}, state), {
643
+ modSlotPreview: _object_spread_props$4(_object_spread$k({}, state.modSlotPreview), {
644
+ slotId: action === null || action === void 0 ? void 0 : action.payload
645
+ })
646
+ });
647
+ }
648
+ case 'SET_NEW_MOD_SLOT_PREVIEW':
649
+ {
650
+ var _state_modSlotIds_find;
651
+ return _object_spread_props$4(_object_spread$k({}, state), {
652
+ modSlotPreview: {
653
+ slotId: (_state_modSlotIds_find = state.modSlotIds.find(function(item) {
654
+ return state.modSlotTargets[item] <= 0;
655
+ })) !== null && _state_modSlotIds_find !== void 0 ? _state_modSlotIds_find : '',
656
+ isEditable: false,
657
+ targetIndex: 0
658
+ }
659
+ });
660
+ }
661
+ case 'CLEAR_MOD_SLOT_PREVIEW':
662
+ {
663
+ return _object_spread_props$4(_object_spread$k({}, state), {
664
+ modSlotPreview: {
665
+ slotId: '',
666
+ isEditable: false,
667
+ targetIndex: 0
668
+ }
669
+ });
670
+ }
671
+ case 'MOD_SLOT_PREVIEW_IS_EDITABLE_UPDATED':
672
+ {
673
+ return _object_spread_props$4(_object_spread$k({}, state), {
674
+ modSlotPreview: _object_spread_props$4(_object_spread$k({}, state.modSlotPreview), {
675
+ isEditable: action === null || action === void 0 ? void 0 : action.payload
676
+ })
677
+ });
678
+ }
646
679
  case 'MOD_SLOT_PARAMS_LIST_RECEIVED':
647
- return _object_spread_props$4(_object_spread$j({}, state), {
648
- modSlotParams: action === null || action === void 0 ? void 0 : action.payload
680
+ var modSlotNames = Object.keys(state.modSlotTargets);
681
+ return _object_spread_props$4(_object_spread$k({}, state), {
682
+ modSlotParams: action === null || action === void 0 ? void 0 : action.payload.reduce(function(acc, item, i) {
683
+ acc[modSlotNames[i]] = item;
684
+ return acc;
685
+ }, {})
649
686
  });
650
687
  case 'DEFAULT_PARAM_VALUES_RECEIVED':
651
- return _object_spread_props$4(_object_spread$j({}, state), {
688
+ return _object_spread_props$4(_object_spread$k({}, state), {
652
689
  defaultParamValues: action === null || action === void 0 ? void 0 : action.payload
653
690
  });
654
691
  case 'MOD_SLOT_PARAM_LABELS_RECIEVED':
655
- return _object_spread_props$4(_object_spread$j({}, state), {
692
+ return _object_spread_props$4(_object_spread$k({}, state), {
656
693
  modSlotParamLabels: action === null || action === void 0 ? void 0 : action.payload
657
694
  });
658
695
  default:
@@ -671,13 +708,16 @@ function useGlobalContext(selector) {
671
708
  // Context provider
672
709
  function GlobalContextProvider(param) {
673
710
  var children = param.children;
674
- var _useReducer = _sliced_to_array$f(useReducer(reducer, defaultGlobalStateValue), 2), state = _useReducer[0], dispatch = _useReducer[1];
711
+ var _useReducer = _sliced_to_array$g(useReducer(reducer, defaultGlobalStateValue), 2), state = _useReducer[0], dispatch = _useReducer[1];
675
712
  var highlightedItemChanged = useCallback(function(highlightedItem) {
676
713
  dispatch({
677
714
  type: 'HIGHLIGHTED_ITEM_CHANGED',
678
715
  payload: highlightedItem
679
716
  });
680
717
  }, []);
718
+ // const focusedItemChanged = useCallback((focusedItem: string) => {
719
+ // dispatch({ type: 'FOCUSED_ITEM_CHANGED', payload: focusedItem });
720
+ // }, []);
681
721
  var advancedViewToggled = useCallback(function(advancedView) {
682
722
  dispatch({
683
723
  type: 'ADVANCED_VIEW_TOGGLED',
@@ -687,7 +727,9 @@ function GlobalContextProvider(param) {
687
727
  var automatableParamsListReceived = useCallback(function(automatableParamsList) {
688
728
  dispatch({
689
729
  type: 'AUTOMATABLE_PARAMS_LIST_RECEIVED',
690
- payload: automatableParamsList
730
+ payload: [
731
+ 'none'
732
+ ].concat(_to_consumable_array$1(automatableParamsList))
691
733
  });
692
734
  }, []);
693
735
  var allParametersReceived = useCallback(function(allParameters) {
@@ -720,9 +762,39 @@ function GlobalContextProvider(param) {
720
762
  payload: modSlots
721
763
  });
722
764
  }, []);
723
- var modSlotUpdated = useCallback(function(modSlot) {
765
+ var modSlotPreviewTargetIndexUpdated = useCallback(function(targetIndex) {
766
+ dispatch({
767
+ type: 'MOD_SLOT_PREVIEW_TARGET_INDEX_UPDATED',
768
+ payload: targetIndex
769
+ });
770
+ }, []);
771
+ var modSlotPreviewIsEditableUpdated = useCallback(function(isEditable) {
772
+ dispatch({
773
+ type: 'MOD_SLOT_PREVIEW_IS_EDITABLE_UPDATED',
774
+ payload: isEditable
775
+ });
776
+ }, []);
777
+ var modSlotPreviewSlotIdUpdated = useCallback(function(slotId) {
724
778
  dispatch({
725
- type: 'MOD_SLOT_UPDATED',
779
+ type: 'MOD_SLOT_PREVIEW_SLOT_ID_UPDATED',
780
+ payload: slotId
781
+ });
782
+ }, []);
783
+ var setNewModSlotPreview = useCallback(function() {
784
+ dispatch({
785
+ type: 'SET_NEW_MOD_SLOT_PREVIEW',
786
+ payload: null
787
+ });
788
+ }, []);
789
+ var clearModSlotPreview = useCallback(function() {
790
+ dispatch({
791
+ type: 'CLEAR_MOD_SLOT_PREVIEW',
792
+ payload: null
793
+ });
794
+ }, []);
795
+ var modSlotTargetUpdated = useCallback(function(modSlot) {
796
+ dispatch({
797
+ type: 'MOD_SLOT_TARGETS_UPDATED',
726
798
  payload: modSlot
727
799
  });
728
800
  }, []);
@@ -752,6 +824,74 @@ function GlobalContextProvider(param) {
752
824
  skew: sliderState === null || sliderState === void 0 ? void 0 : (_sliderState_properties2 = sliderState.properties) === null || _sliderState_properties2 === void 0 ? void 0 : _sliderState_properties2.skew
753
825
  });
754
826
  sliderState.setNormalisedValue(normalisedDefaultValue);
827
+ // if(state?.modSlots)
828
+ }
829
+ };
830
+ var getDefaultParameter = function(id) {
831
+ var paramIndex = state === null || state === void 0 ? void 0 : state.allParameters.indexOf(id);
832
+ return state === null || state === void 0 ? void 0 : state.defaultParamValues[paramIndex];
833
+ };
834
+ var addModSlotRowTargetAndMakeRowEditable = function(id) {
835
+ var _Object_values;
836
+ var parameterIndex = state.automatableParamsList.indexOf(id);
837
+ if (!((_Object_values = Object.values(state.modSlotTargets)) === null || _Object_values === void 0 ? void 0 : _Object_values.includes(parameterIndex))) {
838
+ modSlotPreviewTargetIndexUpdated(parameterIndex);
839
+ modSlotPreviewIsEditableUpdated(true);
840
+ }
841
+ };
842
+ var updateModSlotTargetAndResetPreview = function(value, id) {
843
+ var _state_modSlotPreview, _state_modSlotPreview1, _state_modSlotPreview2;
844
+ var rowState = Juce.getComboBoxState((_state_modSlotPreview = state.modSlotPreview) === null || _state_modSlotPreview === void 0 ? void 0 : _state_modSlotPreview.slotId);
845
+ var defaultParameter = getDefaultParameter(id);
846
+ var refetchModSlots = function() {
847
+ return _async_to_generator$4(function() {
848
+ var getAllModSlotsFunc, modSlotsData, e;
849
+ return _ts_generator$4(this, function(_state) {
850
+ switch(_state.label){
851
+ case 0:
852
+ _state.trys.push([
853
+ 0,
854
+ 2,
855
+ ,
856
+ 3
857
+ ]);
858
+ getAllModSlotsFunc = Juce.getNativeFunction('getAllModSlots');
859
+ return [
860
+ 4,
861
+ getAllModSlotsFunc()
862
+ ];
863
+ case 1:
864
+ modSlotsData = _state.sent();
865
+ modSlotsReceived(modSlotsData || []);
866
+ return [
867
+ 3,
868
+ 3
869
+ ];
870
+ case 2:
871
+ e = _state.sent();
872
+ console.log(e);
873
+ return [
874
+ 3,
875
+ 3
876
+ ];
877
+ case 3:
878
+ return [
879
+ 2
880
+ ];
881
+ }
882
+ });
883
+ })();
884
+ };
885
+ if (defaultParameter !== null && defaultParameter !== undefined && value !== defaultParameter && ((_state_modSlotPreview1 = state.modSlotPreview) === null || _state_modSlotPreview1 === void 0 ? void 0 : _state_modSlotPreview1.slotId) && ((_state_modSlotPreview2 = state.modSlotPreview) === null || _state_modSlotPreview2 === void 0 ? void 0 : _state_modSlotPreview2.targetIndex)) {
886
+ var _state_modSlotPreview3;
887
+ modSlotTargetUpdated([
888
+ state.modSlotPreview.slotId,
889
+ state.modSlotPreview.targetIndex
890
+ ]);
891
+ rowState === null || rowState === void 0 ? void 0 : rowState.setChoiceIndex((_state_modSlotPreview3 = state.modSlotPreview) === null || _state_modSlotPreview3 === void 0 ? void 0 : _state_modSlotPreview3.targetIndex);
892
+ clearModSlotPreview();
893
+ setNewModSlotPreview();
894
+ refetchModSlots();
755
895
  }
756
896
  };
757
897
  var onFire = function() {
@@ -764,6 +904,12 @@ function GlobalContextProvider(param) {
764
904
  var value = {
765
905
  globalState: state,
766
906
  highlightedItemChanged: highlightedItemChanged,
907
+ // focusedItemChanged,
908
+ clearModSlotPreview: clearModSlotPreview,
909
+ setNewModSlotPreview: setNewModSlotPreview,
910
+ modSlotPreviewSlotIdUpdated: modSlotPreviewSlotIdUpdated,
911
+ modSlotPreviewTargetIndexUpdated: modSlotPreviewTargetIndexUpdated,
912
+ modSlotPreviewIsEditableUpdated: modSlotPreviewIsEditableUpdated,
767
913
  advancedViewToggled: advancedViewToggled,
768
914
  automatableParamsListReceived: automatableParamsListReceived,
769
915
  automatableParamLabelsReceived: automatableParamLabelsReceived,
@@ -771,10 +917,13 @@ function GlobalContextProvider(param) {
771
917
  allParametersReceived: allParametersReceived,
772
918
  defaultParamValuesReceived: defaultParamValuesReceived,
773
919
  setDefaultParameter: setDefaultParameter,
920
+ getDefaultParameter: getDefaultParameter,
774
921
  modSlotsReceived: modSlotsReceived,
775
- modSlotUpdated: modSlotUpdated,
922
+ modSlotTargetUpdated: modSlotTargetUpdated,
776
923
  modSlotParamsListReceived: modSlotParamsListReceived,
777
924
  modSlotParamLabelsReceived: modSlotParamLabelsReceived,
925
+ addModSlotRowTargetAndMakeRowEditable: addModSlotRowTargetAndMakeRowEditable,
926
+ updateModSlotTargetAndResetPreview: updateModSlotTargetAndResetPreview,
778
927
  useRandom: useRandom
779
928
  };
780
929
  return /*#__PURE__*/ React__default.createElement(GlobalContext.Provider, {
@@ -782,6 +931,166 @@ function GlobalContextProvider(param) {
782
931
  }, children);
783
932
  }
784
933
 
934
+ function _array_like_to_array$f(arr, len) {
935
+ if (len == null || len > arr.length) len = arr.length;
936
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
937
+ return arr2;
938
+ }
939
+ function _array_with_holes$f(arr) {
940
+ if (Array.isArray(arr)) return arr;
941
+ }
942
+ function _define_property$j(obj, key, value) {
943
+ if (key in obj) {
944
+ Object.defineProperty(obj, key, {
945
+ value: value,
946
+ enumerable: true,
947
+ configurable: true,
948
+ writable: true
949
+ });
950
+ } else {
951
+ obj[key] = value;
952
+ }
953
+ return obj;
954
+ }
955
+ function _iterable_to_array_limit$f(arr, i) {
956
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
957
+ if (_i == null) return;
958
+ var _arr = [];
959
+ var _n = true;
960
+ var _d = false;
961
+ var _s, _e;
962
+ try {
963
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
964
+ _arr.push(_s.value);
965
+ if (i && _arr.length === i) break;
966
+ }
967
+ } catch (err) {
968
+ _d = true;
969
+ _e = err;
970
+ } finally{
971
+ try {
972
+ if (!_n && _i["return"] != null) _i["return"]();
973
+ } finally{
974
+ if (_d) throw _e;
975
+ }
976
+ }
977
+ return _arr;
978
+ }
979
+ function _non_iterable_rest$f() {
980
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
981
+ }
982
+ function _object_spread$j(target) {
983
+ for(var i = 1; i < arguments.length; i++){
984
+ var source = arguments[i] != null ? arguments[i] : {};
985
+ var ownKeys = Object.keys(source);
986
+ if (typeof Object.getOwnPropertySymbols === "function") {
987
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
988
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
989
+ }));
990
+ }
991
+ ownKeys.forEach(function(key) {
992
+ _define_property$j(target, key, source[key]);
993
+ });
994
+ }
995
+ return target;
996
+ }
997
+ function _sliced_to_array$f(arr, i) {
998
+ return _array_with_holes$f(arr) || _iterable_to_array_limit$f(arr, i) || _unsupported_iterable_to_array$f(arr, i) || _non_iterable_rest$f();
999
+ }
1000
+ function _unsupported_iterable_to_array$f(o, minLen) {
1001
+ if (!o) return;
1002
+ if (typeof o === "string") return _array_like_to_array$f(o, minLen);
1003
+ var n = Object.prototype.toString.call(o).slice(8, -1);
1004
+ if (n === "Object" && o.constructor) n = o.constructor.name;
1005
+ if (n === "Map" || n === "Set") return Array.from(n);
1006
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$f(o, minLen);
1007
+ }
1008
+ function Button(param) {
1009
+ 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 ? [
1010
+ Spacing.small
1011
+ ] : _param_padding, _param_margin = param.margin, margin = _param_margin === void 0 ? [
1012
+ Spacing.none
1013
+ ] : _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;
1014
+ var _React_useState = _sliced_to_array$f(React__default.useState(false), 2), isSelected = _React_useState[0], setIsSelected = _React_useState[1];
1015
+ var buttonState = Juce.getToggleState(id);
1016
+ var isLocalhost = window.location.hostname === 'localhost';
1017
+ var addModSlotRowTargetAndMakeRowEditable = useGlobalContext().addModSlotRowTargetAndMakeRowEditable;
1018
+ // Update the local state when the ID changes
1019
+ useEffect(function() {
1020
+ setIsSelected(buttonState === null || buttonState === void 0 ? void 0 : buttonState.value);
1021
+ }, [
1022
+ id
1023
+ ]);
1024
+ // Sets up listeners to handle changes on the backend
1025
+ useEffect(function() {
1026
+ if (!isLocalhost && !onClick) {
1027
+ var valueListenerId = buttonState === null || buttonState === void 0 ? void 0 : buttonState.valueChangedEvent.addListener(function() {
1028
+ setIsSelected(buttonState === null || buttonState === void 0 ? void 0 : buttonState.value);
1029
+ });
1030
+ return function cleanup() {
1031
+ buttonState === null || buttonState === void 0 ? void 0 : buttonState.valueChangedEvent.removeListener(valueListenerId);
1032
+ };
1033
+ } else {
1034
+ return;
1035
+ }
1036
+ });
1037
+ var handleMouseDown = function(e) {
1038
+ addModSlotRowTargetAndMakeRowEditable(id);
1039
+ if (!onClick) {
1040
+ e.preventDefault();
1041
+ if (type === ButtonType.momentary) {
1042
+ setIsSelected(true);
1043
+ buttonState.setValue(true);
1044
+ } else {
1045
+ setIsSelected(!isSelected);
1046
+ buttonState.setValue(!isSelected);
1047
+ }
1048
+ }
1049
+ };
1050
+ var handleMouseUp = function() {
1051
+ if (!onClick) {
1052
+ setIsSelected(false);
1053
+ buttonState.setValue(false);
1054
+ }
1055
+ };
1056
+ React__default.useEffect(function() {
1057
+ if (type === ButtonType.momentary && !onClick) {
1058
+ window.addEventListener('mouseup', handleMouseUp);
1059
+ return function() {
1060
+ window.removeEventListener('mouseup', handleMouseUp);
1061
+ };
1062
+ }
1063
+ return;
1064
+ }, [
1065
+ isSelected
1066
+ ]);
1067
+ var _padding_, _padding_1, _padding_2, _ref, _margin_, _margin_1, _margin_2, _ref1;
1068
+ return /*#__PURE__*/ React__default.createElement("button", {
1069
+ id: id,
1070
+ onMouseDown: handleMouseDown,
1071
+ disabled: disabled,
1072
+ onClick: onClick && onClick,
1073
+ style: _object_spread$j({
1074
+ paddingTop: "var(--p-".concat(padding[0], ")"),
1075
+ paddingRight: "var(--p-".concat((_padding_ = padding[1]) !== null && _padding_ !== void 0 ? _padding_ : padding[0], ")"),
1076
+ paddingBottom: "var(--p-".concat((_padding_1 = padding[2]) !== null && _padding_1 !== void 0 ? _padding_1 : padding[0], ")"),
1077
+ 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], ")"),
1078
+ marginTop: "var(--p-".concat(margin[0], ")"),
1079
+ marginRight: "var(--p-".concat((_margin_ = margin[1]) !== null && _margin_ !== void 0 ? _margin_ : margin[0], ")"),
1080
+ marginBottom: "var(--p-".concat((_margin_1 = margin[2]) !== null && _margin_1 !== void 0 ? _margin_1 : margin[0], ")"),
1081
+ 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], ")")
1082
+ }, style),
1083
+ className: classnames('Button', isSelected && 'selected', "".concat(size), className)
1084
+ }, size !== ButtonSize.xSmall && (text ? text : children));
1085
+ }
1086
+ Button.padding = Spacing;
1087
+ Button.margin = Spacing;
1088
+ Button.type = ButtonType;
1089
+ Button.size = ButtonSize;
1090
+
1091
+ var css_248z$8 = ".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-radius: var(--radius-sm);\n appearance: none;\n user-select: none;\n -webkit-user-select: none;\n height: var(--spacing-xl);\n background: var(--color-gray-800);\n color: var(--color-text);\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-items {\n border: 2px solid;\n}\n\n.Dropdown-item {\n background-color: var(--bg-page);\n font-size: var(--text-sm);\n padding: var(--spacing-md) var(--spacing-xl);\n min-width: 100px;\n color: var(--color-text);\n cursor: pointer;\n text-align: center;\n text-transform: uppercase;\n font-weight: bold;\n}\n\n.Dropdown-item[data-selected] {\n background-color: var(--bg-popover);\n color: var(--color-text);\n}\n\n.Dropdown-item[data-active] {\n background-color: var(--bg-popover);\n color: var(--color-text);\n}\n";
1092
+ styleInject(css_248z$8);
1093
+
785
1094
  function _array_like_to_array$e(arr, len) {
786
1095
  if (len == null || len > arr.length) len = arr.length;
787
1096
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -829,12 +1138,12 @@ function _unsupported_iterable_to_array$e(o, minLen) {
829
1138
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$e(o, minLen);
830
1139
  }
831
1140
  var useDropdown = function(param) {
832
- var id = param.id, label = param.label, _param_items = param.items, items = _param_items === void 0 ? [] : _param_items, filter = param.filter, onChange = param.onChange, _param_displayValInHeader = param.displayValInHeader, displayValInHeader = _param_displayValInHeader === void 0 ? true : _param_displayValInHeader;
1141
+ var id = param.id, label = param.label, _param_items = param.items, items = _param_items === void 0 ? [] : _param_items, _param_isDisabled = param.isDisabled, isDisabled = _param_isDisabled === void 0 ? false : _param_isDisabled, filter = param.filter, onChange = param.onChange, _param_displayValInHeader = param.displayValInHeader, displayValInHeader = _param_displayValInHeader === void 0 ? true : _param_displayValInHeader;
833
1142
  var _properties_choices;
834
1143
  var comboBoxState = Juce.getComboBoxState(id);
835
1144
  var _useState = _sliced_to_array$e(useState(comboBoxState.getChoiceIndex()), 2), index = _useState[0], setIndex = _useState[1];
836
1145
  var _useState1 = _sliced_to_array$e(useState(comboBoxState.properties), 2), properties = _useState1[0], setProperties = _useState1[1];
837
- var setHighlightedItem = useGlobalContext().setHighlightedItem;
1146
+ var _useGlobalContext = useGlobalContext(), highlightedItemChanged = _useGlobalContext.highlightedItemChanged, addModSlotRowTargetAndMakeRowEditable = _useGlobalContext.addModSlotRowTargetAndMakeRowEditable;
838
1147
  var choices = items.length ? items : (properties === null || properties === void 0 ? void 0 : (_properties_choices = properties.choices) === null || _properties_choices === void 0 ? void 0 : _properties_choices.length) ? properties === null || properties === void 0 ? void 0 : properties.choices : [];
839
1148
  var filteredChoices = filter ? choices === null || choices === void 0 ? void 0 : choices.filter(function(item) {
840
1149
  var _item_;
@@ -842,22 +1151,24 @@ var useDropdown = function(param) {
842
1151
  }) : choices;
843
1152
  var prevIndex = useRef(null);
844
1153
  var handleChange = function(value) {
845
- var choiceIndex = choices.indexOf(value);
846
- if (choiceIndex !== prevIndex.current) {
847
- comboBoxState.setChoiceIndex(choiceIndex);
848
- setIndex(choiceIndex);
849
- onChange && onChange(choiceIndex);
850
- // //@ts-expect-error
851
- // window.__JUCE__.backend.emitEvent('undoableActionOccurred', {});
852
- if (displayValInHeader) {
853
- setHighlightedItem && setHighlightedItem({
854
- label: label,
855
- value: value
856
- });
1154
+ if (!isDisabled) {
1155
+ var choiceIndex = choices.indexOf(value);
1156
+ if (choiceIndex !== prevIndex.current) {
1157
+ comboBoxState.setChoiceIndex(choiceIndex);
1158
+ setIndex(choiceIndex);
1159
+ onChange && onChange(choiceIndex);
1160
+ // //@ts-expect-error
1161
+ // window.__JUCE__.backend.emitEvent('undoableActionOccurred', {});
1162
+ if (displayValInHeader) {
1163
+ highlightedItemChanged && highlightedItemChanged({
1164
+ label: label,
1165
+ value: value
1166
+ });
1167
+ }
1168
+ prevIndex.current = choiceIndex;
857
1169
  }
858
- prevIndex.current = choiceIndex;
1170
+ return choices[choiceIndex];
859
1171
  }
860
- return choices[choiceIndex];
861
1172
  };
862
1173
  useEffect(function() {
863
1174
  var comboBoxState = Juce.getComboBoxState(id);
@@ -868,7 +1179,6 @@ var useDropdown = function(param) {
868
1179
  useEffect(function() {
869
1180
  var valueListenerId = comboBoxState.valueChangedEvent.addListener(function() {
870
1181
  setIndex(comboBoxState.getChoiceIndex());
871
- console.log(id, comboBoxState.getChoiceIndex(), 'IDDDIDIDIDIDIDIin dropdown');
872
1182
  });
873
1183
  var propertiesListenerId = comboBoxState.propertiesChangedEvent.addListener(function() {
874
1184
  setProperties(comboBoxState.properties);
@@ -881,13 +1191,16 @@ var useDropdown = function(param) {
881
1191
  window
882
1192
  ]);
883
1193
  var onMouseEnter = function() {
884
- if (displayValInHeader) {
885
- setHighlightedItem && (setHighlightedItem === null || setHighlightedItem === void 0 ? void 0 : setHighlightedItem({
1194
+ if (displayValInHeader && !isDisabled) {
1195
+ highlightedItemChanged && (highlightedItemChanged === null || highlightedItemChanged === void 0 ? void 0 : highlightedItemChanged({
886
1196
  label: label,
887
1197
  value: choices === null || choices === void 0 ? void 0 : choices[index]
888
1198
  }));
889
1199
  }
890
1200
  };
1201
+ var onClick = function() {
1202
+ addModSlotRowTargetAndMakeRowEditable(id);
1203
+ };
891
1204
  return {
892
1205
  value: choices[index],
893
1206
  index: index,
@@ -895,6 +1208,7 @@ var useDropdown = function(param) {
895
1208
  choices: choices,
896
1209
  filteredChoices: filteredChoices,
897
1210
  onMouseEnter: onMouseEnter,
1211
+ onClick: onClick,
898
1212
  handleChange: handleChange
899
1213
  };
900
1214
  };
@@ -1156,7 +1470,7 @@ function Dropdown(param) {
1156
1470
  id: id,
1157
1471
  label: label,
1158
1472
  onChange: onChange
1159
- }), value = _useDropdown.value, choices = _useDropdown.choices, onMouseEnter = _useDropdown.onMouseEnter, handleChange = _useDropdown.handleChange;
1473
+ }), value = _useDropdown.value, choices = _useDropdown.choices, onMouseEnter = _useDropdown.onMouseEnter, handleChange = _useDropdown.handleChange, onClick = _useDropdown.onClick;
1160
1474
  return /*#__PURE__*/ React__default.createElement(Box, {
1161
1475
  flexDirection: Box.flexDirection.column,
1162
1476
  onMouseEnter: onMouseEnter,
@@ -1166,10 +1480,12 @@ function Dropdown(param) {
1166
1480
  value: value,
1167
1481
  onChange: handleChange
1168
1482
  }, /*#__PURE__*/ React__default.createElement(ListboxButton, {
1169
- className: classnames('Dropdown-button', className),
1483
+ className: classnames('Combobox Dropdown-button', className),
1170
1484
  style: _object_spread$g({
1171
1485
  color: "".concat(color ? color : 'initial')
1172
1486
  }, style),
1487
+ id: id,
1488
+ onClick: onClick,
1173
1489
  "aria-label": "Assignee",
1174
1490
  onChange: function(value) {
1175
1491
  return console.log(value);
@@ -1492,12 +1808,15 @@ var useSlider = function(param) {
1492
1808
  end: 15000,
1493
1809
  interval: 0.1,
1494
1810
  skew: 0.7
1495
- } : _param_mockProperties, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, _param_orientation = param.orientation, orientation = _param_orientation === void 0 ? Orientation.vertical : _param_orientation, _param_dragOrientation = param.dragOrientation, dragOrientation = _param_dragOrientation === void 0 ? Orientation.vertical : _param_dragOrientation, _param_mockInitialNormalisedValue = param.mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0.0 : _param_mockInitialNormalisedValue, onChange = param.onChange; param.sliderElementRef;
1811
+ } : _param_mockProperties, _param_isRandomizable = param.isRandomizable, isRandomizable = _param_isRandomizable === void 0 ? false : _param_isRandomizable, _param_orientation = param.orientation, orientation = _param_orientation === void 0 ? Orientation.vertical : _param_orientation, _param_dragOrientation = param.dragOrientation, dragOrientation = _param_dragOrientation === void 0 ? Orientation.vertical : _param_dragOrientation, _param_mockInitialNormalisedValue = param.mockInitialNormalisedValue, mockInitialNormalisedValue = _param_mockInitialNormalisedValue === void 0 ? 0.0 : _param_mockInitialNormalisedValue, onChange = param.onChange; param.sliderElementRef; var _param_isDisabled = param.isDisabled, isDisabled = _param_isDisabled === void 0 ? false : _param_isDisabled;
1496
1812
  var clickListener = function clickListener(event) {
1497
1813
  var _event_target_closest;
1498
1814
  if (((_event_target_closest = event.target.closest('.Slider')) === null || _event_target_closest === void 0 ? void 0 : _event_target_closest.id) === id) {
1499
1815
  var _document_getElementById;
1500
1816
  setIsActive(true);
1817
+ // Update the preview mod slot target selection in the mod matrix.
1818
+ // This selection will be saved to the back end when a modifier is set for the target.
1819
+ addModSlotRowTargetAndMakeRowEditable(id);
1501
1820
  (_document_getElementById = document.getElementById(id)) === null || _document_getElementById === void 0 ? void 0 : _document_getElementById.focus();
1502
1821
  event.stopPropagation();
1503
1822
  } else {
@@ -1538,7 +1857,7 @@ var useSlider = function(param) {
1538
1857
  var normalisedValueRef = useRef(null);
1539
1858
  var sliderState = Juce.getSliderState(id);
1540
1859
  // const randomValueSetCounter = useRef<number>(null);
1541
- var _useGlobalContext = useGlobalContext(), useRandom = _useGlobalContext.useRandom, highlightedItemChanged = _useGlobalContext.highlightedItemChanged, setDefaultParameter = _useGlobalContext.setDefaultParameter;
1860
+ var _useGlobalContext = useGlobalContext(), useRandom = _useGlobalContext.useRandom, highlightedItemChanged = _useGlobalContext.highlightedItemChanged, setDefaultParameter = _useGlobalContext.setDefaultParameter, addModSlotRowTargetAndMakeRowEditable = _useGlobalContext.addModSlotRowTargetAndMakeRowEditable, _useGlobalContext_globalState = _useGlobalContext.globalState, automatableParamsList = _useGlobalContext_globalState.automatableParamsList, modSlotTargets = _useGlobalContext_globalState.modSlotTargets;
1542
1861
  var _useState2 = _sliced_to_array$c(useState(false), 2), isActive = _useState2[0], setIsActive = _useState2[1];
1543
1862
  useEffect(function() {
1544
1863
  document.addEventListener('click', clickListener);
@@ -1549,7 +1868,9 @@ var useSlider = function(param) {
1549
1868
  };
1550
1869
  }, [
1551
1870
  window,
1552
- isActive
1871
+ isActive,
1872
+ automatableParamsList,
1873
+ modSlotTargets
1553
1874
  ]);
1554
1875
  // Set the initial state
1555
1876
  //@ts-expect-error
@@ -1579,6 +1900,11 @@ var useSlider = function(param) {
1579
1900
  normalisedValueRef.current = mockInitialNormalisedValue;
1580
1901
  }
1581
1902
  }, []);
1903
+ var changeHandler = useCallback(function(scaledValueFromState, sliderId) {
1904
+ onChange && onChange(parseFloat(scaledValueFromState.toFixed(2)), sliderId);
1905
+ }, [
1906
+ onChange
1907
+ ]);
1582
1908
  // Update the local state from JUCE
1583
1909
  var updateLocalState = function(sliderState) {
1584
1910
  var normalisedValueFromState = sliderState === null || sliderState === void 0 ? void 0 : sliderState.getNormalisedValue();
@@ -1586,7 +1912,7 @@ var useSlider = function(param) {
1586
1912
  var scaledValue = parseFloat(scaledValueFromState.toFixed(2));
1587
1913
  normalisedValueRef.current = parseFloat(normalisedValueFromState.toFixed(2));
1588
1914
  setScaledValue(scaledValue);
1589
- onChange && onChange(parseFloat(scaledValueFromState.toFixed(2)));
1915
+ changeHandler(scaledValueFromState, id);
1590
1916
  if (displayValInHeader && (scaledValueRef === null || scaledValueRef === void 0 ? void 0 : scaledValueRef.current) !== scaledValue) {
1591
1917
  highlightedItemChanged({
1592
1918
  label: label,
@@ -1616,7 +1942,8 @@ var useSlider = function(param) {
1616
1942
  };
1617
1943
  }
1618
1944
  }, [
1619
- window
1945
+ window,
1946
+ changeHandler
1620
1947
  ]);
1621
1948
  // Update JUCE state
1622
1949
  var setNormalisedState = function(newValue) {
@@ -1684,6 +2011,8 @@ var useSlider = function(param) {
1684
2011
  param.event;
1685
2012
  sliderState.sliderDragEnded();
1686
2013
  }
2014
+ }, {
2015
+ enabled: !isDisabled
1687
2016
  });
1688
2017
  var bindBarSliderDrag = function() {
1689
2018
  var drag = useDrag(function(param) {
@@ -1712,7 +2041,8 @@ var useSlider = function(param) {
1712
2041
  sliderState.sliderDragEnded();
1713
2042
  }
1714
2043
  }, {
1715
- preventDefault: false
2044
+ preventDefault: false,
2045
+ enabled: !isDisabled
1716
2046
  });
1717
2047
  return drag();
1718
2048
  };
@@ -1763,6 +2093,8 @@ var useSlider = function(param) {
1763
2093
  sliderState.sliderDragEnded();
1764
2094
  }
1765
2095
  }
2096
+ }, {
2097
+ enabled: !isDisabled
1766
2098
  });
1767
2099
  var setToDefaultState = function() {
1768
2100
  return setDefaultParameter(id);
@@ -2047,7 +2379,7 @@ function Slider(param) {
2047
2379
  }, polarity === Polarity.bipolar && /*#__PURE__*/ React__default.createElement("div", {
2048
2380
  className: 'Slider-center-marker'
2049
2381
  }), /*#__PURE__*/ React__default.createElement("div", _object_spread_props$1(_object_spread$d({
2050
- className: classnames('Slider-bar', 'relative')
2382
+ className: classnames('Slider', 'Slider-bar', 'relative')
2051
2383
  }, drag()), {
2052
2384
  // onMouseEnter={onMouseEnter}
2053
2385
  id: id,
@@ -2321,13 +2653,15 @@ var Icons = /*#__PURE__*/ function(Icons) {
2321
2653
  return Icons;
2322
2654
  }({});
2323
2655
  var Undo = function(param) {
2324
- var color = param.color;
2656
+ var color = param.color, height = param.height;
2325
2657
  return /*#__PURE__*/ React__default.createElement("svg", {
2326
2658
  viewBox: "0 0 25 25",
2327
2659
  "stroke-width": "1.5",
2328
2660
  fill: "none",
2329
2661
  xmlns: "http://www.w3.org/2000/svg",
2330
- color: color
2662
+ color: color,
2663
+ height: height,
2664
+ width: height
2331
2665
  }, /*#__PURE__*/ React__default.createElement("path", {
2332
2666
  d: "M4.5 8C8.5 8 11 8 15 8C15 8 15 8 15 8C15 8 20 8 20 12.7059C20 18 15 18 15 18C11.5714 18 9.71429 18 6.28571 18",
2333
2667
  stroke: color,
@@ -2343,13 +2677,15 @@ var Undo = function(param) {
2343
2677
  }));
2344
2678
  };
2345
2679
  var Redo = function(param) {
2346
- var color = param.color;
2680
+ var color = param.color, height = param.height;
2347
2681
  return /*#__PURE__*/ React__default.createElement("svg", {
2348
2682
  viewBox: "0 0 25 25",
2349
2683
  "stroke-width": "1.5",
2350
2684
  fill: "none",
2351
2685
  xmlns: "http://www.w3.org/2000/svg",
2352
- color: color
2686
+ color: color,
2687
+ height: height,
2688
+ width: height
2353
2689
  }, /*#__PURE__*/ React__default.createElement("path", {
2354
2690
  d: "M19.5 8C15.5 8 13 8 9 8C9 8 9 8 9 8C9 8 4 8 4 12.7059C4 18 9 18 9 18C12.4286 18 14.2857 18 17.7143 18",
2355
2691
  stroke: color,
@@ -2365,13 +2701,15 @@ var Redo = function(param) {
2365
2701
  }));
2366
2702
  };
2367
2703
  var Favorite = function(param) {
2368
- var color = param.color;
2704
+ var color = param.color, height = param.height;
2369
2705
  return /*#__PURE__*/ React__default.createElement("svg", {
2370
2706
  "stroke-width": "1.5",
2371
2707
  viewBox: "-7 -7 40 40",
2372
2708
  fill: "none",
2373
2709
  xmlns: "http://www.w3.org/2000/svg",
2374
- color: color
2710
+ color: color,
2711
+ height: height,
2712
+ width: height
2375
2713
  }, /*#__PURE__*/ React__default.createElement("path", {
2376
2714
  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",
2377
2715
  stroke: color,
@@ -2380,13 +2718,15 @@ var Favorite = function(param) {
2380
2718
  }));
2381
2719
  };
2382
2720
  var Up = function(param) {
2383
- var color = param.color;
2721
+ var color = param.color, height = param.height;
2384
2722
  return /*#__PURE__*/ React__default.createElement("svg", {
2385
2723
  viewBox: "0 0 25 25",
2386
2724
  "stroke-width": "1.5",
2387
2725
  fill: "none",
2388
2726
  xmlns: "http://www.w3.org/2000/svg",
2389
- color: color
2727
+ color: color,
2728
+ height: height,
2729
+ width: height
2390
2730
  }, /*#__PURE__*/ React__default.createElement("path", {
2391
2731
  "fill-rule": "evenodd",
2392
2732
  "clip-rule": "evenodd",
@@ -2395,13 +2735,15 @@ var Up = function(param) {
2395
2735
  }));
2396
2736
  };
2397
2737
  var Down = function(param) {
2398
- var color = param.color;
2738
+ var color = param.color, height = param.height;
2399
2739
  return /*#__PURE__*/ React__default.createElement("svg", {
2400
2740
  viewBox: "0 0 25 25",
2401
2741
  "stroke-width": "1.5",
2402
2742
  fill: "none",
2403
2743
  xmlns: "http://www.w3.org/2000/svg",
2404
- color: color
2744
+ color: color,
2745
+ height: height,
2746
+ width: height
2405
2747
  }, /*#__PURE__*/ React__default.createElement("path", {
2406
2748
  "fill-rule": "evenodd",
2407
2749
  "clip-rule": "evenodd",
@@ -2410,13 +2752,15 @@ var Down = function(param) {
2410
2752
  }));
2411
2753
  };
2412
2754
  var Save = function(param) {
2413
- var color = param.color;
2755
+ var color = param.color, height = param.height;
2414
2756
  return /*#__PURE__*/ React__default.createElement("svg", {
2415
2757
  "stroke-width": "1.5",
2416
2758
  viewBox: "-7 -7 40 40",
2417
2759
  fill: "none",
2418
2760
  xmlns: "http://www.w3.org/2000/svg",
2419
- color: color
2761
+ color: color,
2762
+ height: height,
2763
+ width: height
2420
2764
  }, /*#__PURE__*/ React__default.createElement("path", {
2421
2765
  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",
2422
2766
  stroke: color,
@@ -2432,13 +2776,15 @@ var Save = function(param) {
2432
2776
  }));
2433
2777
  };
2434
2778
  var Random = function(param) {
2435
- var color = param.color;
2779
+ var color = param.color, height = param.height;
2436
2780
  return /*#__PURE__*/ React__default.createElement("svg", {
2437
2781
  viewBox: "0 0 25 25",
2438
2782
  "stroke-width": "1.5",
2439
2783
  fill: "none",
2440
2784
  xmlns: "http://www.w3.org/2000/svg",
2441
- color: color
2785
+ color: color,
2786
+ height: height,
2787
+ width: height
2442
2788
  }, /*#__PURE__*/ React__default.createElement("path", {
2443
2789
  d: "M11.7 1.1732C11.8856 1.06603 12.1144 1.06603 12.3 1.17321L21.2263 6.3268C21.4119 6.43397 21.5263 6.63205 21.5263 6.84641V17.1536C21.5263 17.3679 21.4119 17.566 21.2263 17.6732L12.3 22.8268C12.1144 22.934 11.8856 22.934 11.7 22.8268L2.77372 17.6732C2.58808 17.566 2.47372 17.3679 2.47372 17.1536V6.84641C2.47372 6.63205 2.58808 6.43397 2.77372 6.32679L11.7 1.1732Z",
2444
2790
  stroke: color,
@@ -2489,15 +2835,15 @@ var Random = function(param) {
2489
2835
  }));
2490
2836
  };
2491
2837
  var Add = function(param) {
2492
- var color = param.color;
2838
+ var color = param.color, height = param.height;
2493
2839
  return /*#__PURE__*/ React__default.createElement("svg", {
2494
- width: "24px",
2495
- height: "24px",
2496
2840
  "stroke-width": "1.5",
2497
2841
  viewBox: "0 0 24 24",
2498
2842
  fill: "none",
2499
2843
  xmlns: "http://www.w3.org/2000/svg",
2500
- color: color
2844
+ color: color,
2845
+ height: height,
2846
+ width: height
2501
2847
  }, /*#__PURE__*/ React__default.createElement("path", {
2502
2848
  d: "M6 12H12M18 12H12M12 12V6M12 12V18",
2503
2849
  stroke: color,
@@ -2507,15 +2853,15 @@ var Add = function(param) {
2507
2853
  }));
2508
2854
  };
2509
2855
  var Delete = function(param) {
2510
- var color = param.color;
2856
+ var color = param.color, height = param.height;
2511
2857
  return /*#__PURE__*/ React__default.createElement("svg", {
2512
- width: "24px",
2513
- height: "24px",
2514
2858
  viewBox: "0 0 24 24",
2515
2859
  fill: "none",
2516
2860
  xmlns: "http://www.w3.org/2000/svg",
2517
2861
  color: color,
2518
- "stroke-width": "1.5"
2862
+ "stroke-width": "1.5",
2863
+ height: height,
2864
+ width: height
2519
2865
  }, /*#__PURE__*/ React__default.createElement("path", {
2520
2866
  "fill-rule": "evenodd",
2521
2867
  "clip-rule": "evenodd",
@@ -2552,7 +2898,7 @@ function Icon(param) {
2552
2898
  height: height
2553
2899
  }, style)
2554
2900
  }, /*#__PURE__*/ React__default.createElement(_$Icon, {
2555
- width: width,
2901
+ height: width,
2556
2902
  color: disabled ? 'var(--color-gray-400)' : color
2557
2903
  }));
2558
2904
  }
@@ -2608,7 +2954,7 @@ function IconButton(param) {
2608
2954
  height: height
2609
2955
  }, style)
2610
2956
  }, /*#__PURE__*/ React__default.createElement(Icon, {
2611
- width: width,
2957
+ height: height,
2612
2958
  color: disabled ? 'var(--color-gray-400)' : color
2613
2959
  }));
2614
2960
  }
@@ -2839,19 +3185,28 @@ function _unsupported_iterable_to_array$a(o, minLen) {
2839
3185
  function Oscilloscope(param) {
2840
3186
  var width = param.width, height = param.height, className = param.className, style = param.style, id = param.id;
2841
3187
  var _useState = _sliced_to_array$a(useState([]), 2), viewData = _useState[0], setViewData = _useState[1];
3188
+ var cycleLength = useRef(0);
2842
3189
  useEffect(function() {
2843
3190
  //@ts-expect-error
2844
- var removalToken = window.__JUCE__.backend.addEventListener('oscData', function() {
3191
+ var getOscData = window.__JUCE__.backend.addEventListener('oscData', function() {
2845
3192
  fetch(Juce.getBackendResourceAddress('oscOutput.json')).then(function(response) {
2846
3193
  return response.text();
2847
3194
  }).then(function(oscOutput) {
2848
3195
  var _JSON_parse;
2849
- setViewData((_JSON_parse = JSON.parse(oscOutput)) === null || _JSON_parse === void 0 ? void 0 : _JSON_parse.oscData);
3196
+ setViewData((_JSON_parse = JSON.parse(oscOutput)) === null || _JSON_parse === void 0 ? void 0 : _JSON_parse.oscData.slice(0, cycleLength.current));
2850
3197
  });
2851
3198
  });
3199
+ //@ts-expect-error
3200
+ var updateCycleLength = window.__JUCE__.backend.addEventListener('oscWaveLengthChanged', function(value) {
3201
+ if (cycleLength && value !== cycleLength.current) {
3202
+ cycleLength.current = value;
3203
+ }
3204
+ });
2852
3205
  return function() {
2853
3206
  //@ts-expect-error
2854
- window.__JUCE__.backend.removeEventListener(removalToken);
3207
+ window.__JUCE__.backend.removeEventListener(getOscData);
3208
+ //@ts-expect-error
3209
+ window.__JUCE__.backend.removeEventListener(updateCycleLength);
2855
3210
  };
2856
3211
  }, []);
2857
3212
  return /*#__PURE__*/ React__default.createElement("div", {
@@ -3853,7 +4208,7 @@ function ModuleHeader(param) {
3853
4208
  }, "Advanced")))));
3854
4209
  }
3855
4210
 
3856
- var css_248z$1 = ".ModMatrix {\n color: var(--color-text);\n font-size: var(--text-ms);\n}\n\n.ModMatrixCell {\n background: #252429;\n position: relative;\n}\n\n.ModMatrixToggleCell {\n cursor: pointer;\n}\n\n.ModMatrixComboboxCell {\n background: #252429;\n cursor: pointer;\n}\n\n.ModMatrixComboboxItems {\n position: absolute;\n z-index: 50;\n bottom: -151px;\n left: 0px;\n height: 150px;\n width: 100%;\n background: var(--color-gray-500);\n color: var(--color-text);\n font-family: var(--font-leagueSpartan);\n overflow-y: auto;\n overflow-x: hidden;\n cursor: pointer;\n}\n\n.ModMatrixComboboxItem:hover,\n.ModMatrixComboboxItem:active,\n.ModMatrixComboboxItem[data-selected] {\n background: var(--color-gray-600);\n}\n\n.ModMatrixComboboxItem {\n padding: var(--spacing-md) var(--spacing-lg);\n width: 100%;\n}\n.ModMatrixComboboxButton {\n cursor: pointer;\n}\n";
4211
+ var css_248z$1 = ".ModMatrix {\n color: var(--color-text);\n font-size: var(--text-ms);\n}\n\n.ModMatrixCell {\n background: #252429;\n position: relative;\n}\n\n.ModMatrixCell.isDisabled {\n /* background: var(--bg-muted);\n color: var(--color-gray-400); */\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ModMatrixToggleCell {\n cursor: pointer;\n}\n\n.ModMatrixComboboxCell {\n background: #252429;\n cursor: pointer;\n}\n\n.ModMatrixComboboxItems {\n position: absolute;\n z-index: 50;\n bottom: -151px;\n left: 0px;\n height: 150px;\n width: 100%;\n background: var(--color-gray-500);\n color: var(--color-text);\n font-family: var(--font-leagueSpartan);\n overflow-y: auto;\n overflow-x: hidden;\n cursor: pointer;\n}\n\n.ModMatrixComboboxItem:hover,\n.ModMatrixComboboxItem:active,\n.ModMatrixComboboxItem[data-selected] {\n background: var(--color-gray-600);\n}\n\n.ModMatrixComboboxItem {\n padding: var(--spacing-md) var(--spacing-lg);\n width: 100%;\n}\n.ModMatrixComboboxButton {\n cursor: pointer;\n}\n";
3857
4212
  styleInject(css_248z$1);
3858
4213
 
3859
4214
  var targetColors = [
@@ -3971,7 +4326,7 @@ var useCombobox = function(param) {
3971
4326
  var comboBoxState = Juce.getComboBoxState(id);
3972
4327
  var _useState = _sliced_to_array$7(useState(0), 2), value = _useState[0], setValue = _useState[1];
3973
4328
  var _useState1 = _sliced_to_array$7(useState(comboBoxState === null || comboBoxState === void 0 ? void 0 : comboBoxState.properties), 2), properties = _useState1[0], setProperties = _useState1[1];
3974
- var _useGlobalContext = useGlobalContext(); _useGlobalContext.highlightedItemChanged; var _useGlobalContext_globalState = _useGlobalContext.globalState, automatableParamLabels = _useGlobalContext_globalState.automatableParamLabels, modSlots = _useGlobalContext_globalState.modSlots;
4329
+ var _useGlobalContext = useGlobalContext(); _useGlobalContext.highlightedItemChanged; var addModSlotRowTargetAndMakeRowEditable = _useGlobalContext.addModSlotRowTargetAndMakeRowEditable, _useGlobalContext_globalState = _useGlobalContext.globalState, automatableParamLabels = _useGlobalContext_globalState.automatableParamLabels, modSlotTargets = _useGlobalContext_globalState.modSlotTargets, modSlotPreview = _useGlobalContext_globalState.modSlotPreview;
3975
4330
  //TODO: Filter choices for subsequent rows
3976
4331
  // const availableChoices = properties?.choices;
3977
4332
  useEffect(function() {
@@ -3982,6 +4337,14 @@ var useCombobox = function(param) {
3982
4337
  useEffect(function() {
3983
4338
  setProperties(comboBoxState === null || comboBoxState === void 0 ? void 0 : comboBoxState.properties);
3984
4339
  });
4340
+ useEffect(function() {
4341
+ if (modSlotPreview.slotId === id && modSlotPreview.targetIndex > 0) {
4342
+ setValue(modSlotPreview.targetIndex);
4343
+ }
4344
+ }, [
4345
+ modSlotTargets,
4346
+ modSlotPreview
4347
+ ]);
3985
4348
  useEffect(function() {
3986
4349
  var _comboBoxState_valueChangedEvent, _comboBoxState_propertiesChangedEvent;
3987
4350
  var valueListenerId = comboBoxState === null || comboBoxState === void 0 ? void 0 : (_comboBoxState_valueChangedEvent = comboBoxState.valueChangedEvent) === null || _comboBoxState_valueChangedEvent === void 0 ? void 0 : _comboBoxState_valueChangedEvent.addListener(function() {
@@ -3998,7 +4361,7 @@ var useCombobox = function(param) {
3998
4361
  }, [
3999
4362
  window
4000
4363
  ]);
4001
- var selectedChoices = (_Object_values = Object.values(modSlots)) === null || _Object_values === void 0 ? void 0 : _Object_values.filter(function(item) {
4364
+ var selectedChoices = (_Object_values = Object.values(modSlotTargets)) === null || _Object_values === void 0 ? void 0 : _Object_values.filter(function(item) {
4002
4365
  return item > 0;
4003
4366
  });
4004
4367
  var selectedLabels = automatableParamLabels === null || automatableParamLabels === void 0 ? void 0 : automatableParamLabels.filter(function(item, i) {
@@ -4023,6 +4386,9 @@ var useCombobox = function(param) {
4023
4386
  };
4024
4387
  var onMouseEnter = function() {
4025
4388
  };
4389
+ var onClick = function() {
4390
+ addModSlotRowTargetAndMakeRowEditable(id);
4391
+ };
4026
4392
  return {
4027
4393
  value: value,
4028
4394
  valueString: automatableParamLabels === null || automatableParamLabels === void 0 ? void 0 : automatableParamLabels[value],
@@ -4030,6 +4396,7 @@ var useCombobox = function(param) {
4030
4396
  choices: properties === null || properties === void 0 ? void 0 : properties.choices,
4031
4397
  filteredChoices: filteredChoices,
4032
4398
  onMouseEnter: onMouseEnter,
4399
+ onClick: onClick,
4033
4400
  handleChange: handleChange
4034
4401
  };
4035
4402
  };
@@ -4122,8 +4489,8 @@ function ModMatrixComboboxCell(param) {
4122
4489
  useEffect(function() {
4123
4490
  if (target) {
4124
4491
  var sliderState = Juce.getSliderState(target);
4125
- var normalisedValue = sliderState.getNormalisedValue();
4126
- setTargetValue(normalisedValue);
4492
+ var scaledValue = sliderState.scaledValue;
4493
+ setTargetValue(scaledValue);
4127
4494
  }
4128
4495
  }, [
4129
4496
  target
@@ -4156,14 +4523,15 @@ function ModMatrixComboboxCell(param) {
4156
4523
  },
4157
4524
  autoFocus: true
4158
4525
  }), /*#__PURE__*/ React__default.createElement(ComboboxButton, {
4159
- className: "ModMatrixComboboxButton"
4526
+ className: "ModMatrixComboboxButton",
4527
+ id: rowId
4160
4528
  }, /*#__PURE__*/ React__default.createElement(Icon, {
4161
4529
  icon: Icon.icon.down,
4162
4530
  backgroundColor: "transparent",
4163
4531
  onClick: function(e) {
4164
4532
  return e.preventDefault();
4165
4533
  },
4166
- color: color,
4534
+ color: 'var(--color-text)',
4167
4535
  width: "20px",
4168
4536
  height: "20px"
4169
4537
  }))), /*#__PURE__*/ React__default.createElement(ComboboxOptions, {
@@ -4215,12 +4583,16 @@ function _object_spread$3(target) {
4215
4583
  return target;
4216
4584
  }
4217
4585
  function ModMatrixToggleCell(param) {
4218
- var modifier = param.modifier, color = param.color, style = param.style;
4586
+ var modifier = param.modifier, _param_isDisabled = param.isDisabled, isDisabled = _param_isDisabled === void 0 ? false : _param_isDisabled, rowId = param.rowId, color = param.color, style = param.style;
4587
+ var _useGlobalContext = useGlobalContext(), getDefaultParameter = _useGlobalContext.getDefaultParameter, updateModSlotTargetAndResetPreview = _useGlobalContext.updateModSlotTargetAndResetPreview, modSlotPreview = _useGlobalContext.globalState.modSlotPreview;
4588
+ var rowState = Juce.getComboBoxState(rowId);
4219
4589
  var _useDropdown = useDropdown({
4220
- id: modifier
4590
+ id: modifier,
4591
+ isDisabled: isDisabled,
4592
+ onChange: updateModSlotTargetAndResetPreview
4221
4593
  }), index = _useDropdown.index, choices = _useDropdown.choices, handleChange = _useDropdown.handleChange;
4222
4594
  return /*#__PURE__*/ React__default.createElement(Box, {
4223
- className: "ModMatrixCell ModMatrixToggleCell",
4595
+ className: "ModMatrixCell ModMatrixToggleCell ".concat(isDisabled ? 'isDisabled' : ''),
4224
4596
  justifyContent: Box.justifyContent.flexEnd,
4225
4597
  alignItems: Box.alignItems.flexStart,
4226
4598
  flexDirection: Box.flexDirection.column,
@@ -4229,9 +4601,16 @@ function ModMatrixToggleCell(param) {
4229
4601
  pointerEvents: 'all'
4230
4602
  }, style),
4231
4603
  height: '2.5rem',
4232
- onClick: function() {
4604
+ onClick: function(val) {
4605
+ // Update the toggle state
4233
4606
  var newIndex = Math.abs(index - 1);
4234
4607
  handleChange(choices[newIndex]);
4608
+ // Save the selected row target to JUCE
4609
+ var defaultParameter = getDefaultParameter(modifier);
4610
+ var isRowSet = rowState === null || rowState === void 0 ? void 0 : rowState.getChoiceIndex();
4611
+ if (!isRowSet && newIndex !== defaultParameter && modSlotPreview.slotId === rowId) {
4612
+ rowState === null || rowState === void 0 ? void 0 : rowState.setChoiceIndex(modSlotPreview.targetIndex);
4613
+ }
4235
4614
  }
4236
4615
  }, /*#__PURE__*/ React__default.createElement(Box, {
4237
4616
  flex: "1",
@@ -4293,17 +4672,19 @@ function _object_spread_props(target, source) {
4293
4672
  return target;
4294
4673
  }
4295
4674
  function ModMatrixCell(param) {
4296
- var modifier = param.modifier, color = param.color, style = param.style;
4675
+ var modifier = param.modifier, isDisabled = param.isDisabled, color = param.color, style = param.style;
4297
4676
  var _SingleBarViz_polarity;
4677
+ var _useGlobalContext = useGlobalContext(), setDefaultParameter = _useGlobalContext.setDefaultParameter, updateModSlotTargetAndResetPreview = _useGlobalContext.updateModSlotTargetAndResetPreview;
4298
4678
  var _useSlider = useSlider({
4299
4679
  id: modifier,
4300
4680
  displayValInHeader: false,
4301
4681
  orientation: Orientation.horizontal,
4302
- dragOrientation: Orientation.vertical
4682
+ dragOrientation: Orientation.vertical,
4683
+ onChange: updateModSlotTargetAndResetPreview,
4684
+ isDisabled: isDisabled
4303
4685
  }), bindBarSliderDrag = _useSlider.bindBarSliderDrag, normalisedValue = _useSlider.normalisedValue, scaledValue = _useSlider.scaledValue;
4304
- var setDefaultParameter = useGlobalContext().setDefaultParameter;
4305
4686
  return /*#__PURE__*/ React__default.createElement(Box, _object_spread_props(_object_spread$2({
4306
- className: "ModMatrixCell",
4687
+ className: "ModMatrixCell ".concat(isDisabled ? 'isDisabled' : ''),
4307
4688
  justifyContent: Box.justifyContent.flexEnd,
4308
4689
  alignItems: Box.alignItems.flexStart,
4309
4690
  flexDirection: Box.flexDirection.column,
@@ -4342,31 +4723,30 @@ function ModMatrixCell(param) {
4342
4723
  }
4343
4724
 
4344
4725
  function ModMatrixRow(param) {
4345
- var rowId = param.rowId, key = param.key, _param_isPreview = param.// rowIndex,
4346
- isPreview, isPreview = _param_isPreview === void 0 ? false : _param_isPreview, setIsPreview = param.setIsPreview;
4347
- var _Object_keys, _modSlotParams_modSlotIndex;
4348
- // const [rowTarget, setRowTarget] = useState<number>();
4726
+ var rowId = param.rowId, key = param.key;
4727
+ var _modSlotParams_rowId;
4349
4728
  // const getModSlotsFunc = Juce.getNativeFunction('getModSlots');
4350
- var _useGlobalContext = useGlobalContext(), modSlotUpdated = _useGlobalContext.modSlotUpdated, setDefaultParameter = _useGlobalContext.setDefaultParameter, _useGlobalContext_globalState = _useGlobalContext.globalState, modSlotParams = _useGlobalContext_globalState.modSlotParams, modSlots = _useGlobalContext_globalState.modSlots;
4351
- var modSlotIndex = (_Object_keys = Object.keys(modSlots)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.indexOf(rowId);
4729
+ var _useGlobalContext = useGlobalContext(), // modSlotTargetUpdated,
4730
+ setDefaultParameter = _useGlobalContext.setDefaultParameter, modSlotPreviewIsEditableUpdated = _useGlobalContext.modSlotPreviewIsEditableUpdated, modSlotPreviewTargetIndexUpdated = _useGlobalContext.modSlotPreviewTargetIndexUpdated, setNewModSlotPreview = _useGlobalContext.setNewModSlotPreview, modSlotTargetUpdated = _useGlobalContext.modSlotTargetUpdated, _useGlobalContext_globalState = _useGlobalContext.globalState, modSlotParams = _useGlobalContext_globalState.modSlotParams, modSlotTargets = _useGlobalContext_globalState.modSlotTargets, modSlotPreview = _useGlobalContext_globalState.modSlotPreview;
4352
4731
  var handleTargetChange = function(newTarget) {
4353
4732
  if (newTarget > 0) {
4354
- modSlotUpdated([
4355
- rowId,
4356
- newTarget
4357
- ]);
4733
+ // modSlotTargetUpdated([rowId, newTarget]);
4734
+ if (rowId === modSlotPreview.slotId) {
4735
+ modSlotPreviewTargetIndexUpdated(newTarget);
4736
+ modSlotPreviewIsEditableUpdated(true);
4737
+ }
4358
4738
  } else {
4359
- var _modSlotParams_modSlotIndex;
4360
- modSlotUpdated([
4739
+ var _modSlotParams_rowId;
4740
+ modSlotTargetUpdated([
4361
4741
  rowId,
4362
4742
  0
4363
4743
  ]);
4364
- modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_modSlotIndex = modSlotParams[modSlotIndex]) === null || _modSlotParams_modSlotIndex === void 0 ? void 0 : _modSlotParams_modSlotIndex.forEach(function(item) {
4744
+ modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_rowId = modSlotParams[rowId]) === null || _modSlotParams_rowId === void 0 ? void 0 : _modSlotParams_rowId.forEach(function(item) {
4365
4745
  setDefaultParameter(item);
4366
4746
  });
4367
- }
4368
- if (isPreview && newTarget) {
4369
- setIsPreview(false);
4747
+ if (!modSlotPreview.slotId) {
4748
+ setNewModSlotPreview();
4749
+ }
4370
4750
  }
4371
4751
  };
4372
4752
  return /*#__PURE__*/ React__default.createElement(Box, {
@@ -4381,7 +4761,7 @@ function ModMatrixRow(param) {
4381
4761
  color: targetColors[0]
4382
4762
  }
4383
4763
  }, /*#__PURE__*/ React__default.createElement(ModMatrixComboboxCell, {
4384
- target: modSlots[rowId],
4764
+ target: modSlotTargets[rowId],
4385
4765
  handleTargetChange: handleTargetChange,
4386
4766
  rowId: rowId,
4387
4767
  color: targetColors[0],
@@ -4389,8 +4769,8 @@ function ModMatrixRow(param) {
4389
4769
  width: ComboboxCellWidth
4390
4770
  },
4391
4771
  key: rowId
4392
- })), modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_modSlotIndex = modSlotParams[modSlotIndex]) === null || _modSlotParams_modSlotIndex === void 0 ? void 0 : _modSlotParams_modSlotIndex.map(function(item, i, arr) {
4393
- var _modSlotParams_modSlotIndex, _modSlotParams_modSlotIndex1;
4772
+ })), modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_rowId = modSlotParams[rowId]) === null || _modSlotParams_rowId === void 0 ? void 0 : _modSlotParams_rowId.map(function(item, i, arr) {
4773
+ var _modSlotParams_rowId, _modSlotParams_rowId1;
4394
4774
  return /*#__PURE__*/ React__default.createElement(Box, {
4395
4775
  className: "ModMatrixBodyCell",
4396
4776
  flexDirection: Box.flexDirection.column,
@@ -4399,11 +4779,15 @@ function ModMatrixRow(param) {
4399
4779
  },
4400
4780
  key: item
4401
4781
  }, i !== arr.length - 1 ? /*#__PURE__*/ React__default.createElement(ModMatrixCell, {
4402
- modifier: modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_modSlotIndex = modSlotParams[modSlotIndex]) === null || _modSlotParams_modSlotIndex === void 0 ? void 0 : _modSlotParams_modSlotIndex[i],
4403
- color: targetColors[i + 1]
4782
+ // rowId={rowId}
4783
+ modifier: modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_rowId = modSlotParams[rowId]) === null || _modSlotParams_rowId === void 0 ? void 0 : _modSlotParams_rowId[i],
4784
+ color: targetColors[i + 1],
4785
+ isDisabled: modSlotPreview.slotId === rowId && !modSlotPreview.targetIndex
4404
4786
  }) : /*#__PURE__*/ React__default.createElement(ModMatrixToggleCell, {
4405
- modifier: modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_modSlotIndex1 = modSlotParams[modSlotIndex]) === null || _modSlotParams_modSlotIndex1 === void 0 ? void 0 : _modSlotParams_modSlotIndex1[i],
4406
- color: targetColors[i + 1]
4787
+ rowId: rowId,
4788
+ modifier: modSlotParams === null || modSlotParams === void 0 ? void 0 : (_modSlotParams_rowId1 = modSlotParams[rowId]) === null || _modSlotParams_rowId1 === void 0 ? void 0 : _modSlotParams_rowId1[i],
4789
+ color: targetColors[i + 1],
4790
+ isDisabled: modSlotPreview.slotId === rowId && !modSlotPreview.targetIndex
4407
4791
  }));
4408
4792
  }));
4409
4793
  }
@@ -4617,12 +5001,48 @@ function _ts_generator$1(thisArg, body) {
4617
5001
  //
4618
5002
  function ModMatrix(param) {
4619
5003
  var className = param.className, style = param.style;
4620
- var _Object_keys, _Object_keys1, _Object_keys2;
4621
- var _useState = _sliced_to_array$5(useState(), 2), previewRowIsActive = _useState[0], setPreviewRowIsActive = _useState[1];
4622
5004
  var getAutomatableParamsListFunc = Juce.getNativeFunction('getAutomatableParamsList');
4623
5005
  var getAllModSlotsFunc = Juce.getNativeFunction('getAllModSlots');
4624
5006
  var getModSlotParamsFunc = Juce.getNativeFunction('getModSlotParams');
4625
- var _useGlobalContext = useGlobalContext(), automatableParamsListReceived = _useGlobalContext.automatableParamsListReceived, automatableParamLabelsReceived = _useGlobalContext.automatableParamLabelsReceived, modSlotsReceived = _useGlobalContext.modSlotsReceived, modSlotParamsListReceived = _useGlobalContext.modSlotParamsListReceived, modSlotParamLabelsReceived = _useGlobalContext.modSlotParamLabelsReceived, _useGlobalContext_globalState = _useGlobalContext.globalState, modSlotParamLabels = _useGlobalContext_globalState.modSlotParamLabels, modSlots = _useGlobalContext_globalState.modSlots;
5007
+ var _useState = _sliced_to_array$5(useState([]), 2), displayedModSlots = _useState[0], setDisplayedModSlots = _useState[1];
5008
+ var _useGlobalContext = useGlobalContext(), automatableParamsListReceived = _useGlobalContext.automatableParamsListReceived, automatableParamLabelsReceived = _useGlobalContext.automatableParamLabelsReceived, modSlotsReceived = _useGlobalContext.modSlotsReceived, setNewModSlotPreview = _useGlobalContext.setNewModSlotPreview, modSlotParamsListReceived = _useGlobalContext.modSlotParamsListReceived, modSlotParamLabelsReceived = _useGlobalContext.modSlotParamLabelsReceived, _useGlobalContext_globalState = _useGlobalContext.globalState, modSlotParamLabels = _useGlobalContext_globalState.modSlotParamLabels, modSlotTargets = _useGlobalContext_globalState.modSlotTargets, modSlotIds = _useGlobalContext_globalState.modSlotIds, modSlotPreview = _useGlobalContext_globalState.modSlotPreview;
5009
+ // Empty state preview row
5010
+ useEffect(function() {
5011
+ var unassignedModSlots = modSlotIds === null || modSlotIds === void 0 ? void 0 : modSlotIds.filter(function(item) {
5012
+ return modSlotTargets[item] <= 0;
5013
+ });
5014
+ if ((unassignedModSlots === null || unassignedModSlots === void 0 ? void 0 : unassignedModSlots.length) > 0 && modSlotPreview.slotId.length === 0) {
5015
+ setNewModSlotPreview();
5016
+ }
5017
+ }, [
5018
+ window,
5019
+ modSlotIds,
5020
+ modSlotPreview
5021
+ ]);
5022
+ useEffect(function() {
5023
+ var _Object_keys;
5024
+ var displayedSlots = (_Object_keys = Object.keys(modSlotTargets)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.reduce(function(acc, item) {
5025
+ if ((modSlotTargets === null || modSlotTargets === void 0 ? void 0 : modSlotTargets[item]) > 0) {
5026
+ acc === null || acc === void 0 ? void 0 : acc.push(item);
5027
+ }
5028
+ return acc;
5029
+ }, []).sort();
5030
+ var unassignedModSlots = modSlotIds === null || modSlotIds === void 0 ? void 0 : modSlotIds.filter(function(item) {
5031
+ return modSlotTargets[item] <= 0;
5032
+ });
5033
+ if (unassignedModSlots.length > 0) {
5034
+ setDisplayedModSlots(_to_consumable_array(displayedSlots).concat([
5035
+ modSlotPreview.slotId
5036
+ ]));
5037
+ } else {
5038
+ setDisplayedModSlots(displayedSlots);
5039
+ }
5040
+ }, [
5041
+ window,
5042
+ modSlotTargets,
5043
+ modSlotIds,
5044
+ modSlotPreview
5045
+ ]);
4626
5046
  var getAPVTSParams = function() {
4627
5047
  return _async_to_generator$1(function() {
4628
5048
  var automatableParamsList, modSlotsData, modSlotParams, e;
@@ -4683,37 +5103,9 @@ function ModMatrix(param) {
4683
5103
  }, [
4684
5104
  window
4685
5105
  ]);
4686
- useEffect(function() {
4687
- var _Object_keys;
4688
- var assignedModSlots = (_Object_keys = Object.keys(modSlots)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.filter(function(item) {
4689
- return (modSlots === null || modSlots === void 0 ? void 0 : modSlots[item]) > 0;
4690
- });
4691
- if (!assignedModSlots.length) {
4692
- setPreviewRowIsActive(true);
4693
- }
4694
- }, [
4695
- modSlots
4696
- ]);
4697
5106
  var headers = [
4698
5107
  'Target'
4699
5108
  ].concat(_to_consumable_array(modSlotParamLabels));
4700
- // [slot2, slot3] unassigned
4701
- // [slot1] assigned
4702
- var assignedModSlots = (_Object_keys = Object.keys(modSlots)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.filter(function(item) {
4703
- return (modSlots === null || modSlots === void 0 ? void 0 : modSlots[item]) > 0;
4704
- });
4705
- var unassignedModSlots = (_Object_keys1 = Object.keys(modSlots)) === null || _Object_keys1 === void 0 ? void 0 : _Object_keys1.filter(function(item) {
4706
- return (modSlots === null || modSlots === void 0 ? void 0 : modSlots[item]) === 0;
4707
- });
4708
- var displayedModSlots = (_Object_keys2 = Object.keys(modSlots)) === null || _Object_keys2 === void 0 ? void 0 : _Object_keys2.reduce(function(acc, item) {
4709
- if ((modSlots === null || modSlots === void 0 ? void 0 : modSlots[item]) > 0 || previewRowIsActive && item === (unassignedModSlots === null || unassignedModSlots === void 0 ? void 0 : unassignedModSlots[0])) {
4710
- return _to_consumable_array(acc).concat([
4711
- item
4712
- ]);
4713
- } else {
4714
- return _to_consumable_array(acc);
4715
- }
4716
- }, []);
4717
5109
  return /*#__PURE__*/ React__default.createElement(Box, {
4718
5110
  gap: Box.gap.medium,
4719
5111
  padding: [
@@ -4748,31 +5140,9 @@ function ModMatrix(param) {
4748
5140
  }, (displayedModSlots === null || displayedModSlots === void 0 ? void 0 : displayedModSlots.length) ? displayedModSlots === null || displayedModSlots === void 0 ? void 0 : displayedModSlots.map(function(item, i) {
4749
5141
  return /*#__PURE__*/ React__default.createElement(ModMatrixRow, {
4750
5142
  rowId: item,
4751
- key: item,
4752
- // rowIndex={i}
4753
- setIsPreview: setPreviewRowIsActive,
4754
- isPreview: previewRowIsActive && (unassignedModSlots === null || unassignedModSlots === void 0 ? void 0 : unassignedModSlots.indexOf(item)) === 0
5143
+ key: item
4755
5144
  });
4756
- }) : null), /*#__PURE__*/ React__default.createElement(Box, {
4757
- justifyContent: Box.justifyContent.flexStart
4758
- }, /*#__PURE__*/ React__default.createElement(IconButton, {
4759
- id: "addModMatrixRow",
4760
- icon: IconButton.icon.add,
4761
- margin: [
4762
- IconButton.margin.small
4763
- ],
4764
- padding: [
4765
- IconButton.padding.small
4766
- ],
4767
- disabled: (assignedModSlots === null || assignedModSlots === void 0 ? void 0 : assignedModSlots.length) === 0 || (unassignedModSlots === null || unassignedModSlots === void 0 ? void 0 : unassignedModSlots.length) === 0,
4768
- // color="var(--color-gray-500)"
4769
- // backgroundColor="transparent"
4770
- onClick: function(e) {
4771
- if ((unassignedModSlots === null || unassignedModSlots === void 0 ? void 0 : unassignedModSlots.length) > 0) {
4772
- setPreviewRowIsActive(true);
4773
- }
4774
- }
4775
- })));
5145
+ }) : null));
4776
5146
  }
4777
5147
 
4778
5148
  var svgInnerMargin = 5;