@antimatter-audio/antimatter-ui 16.7.0 → 16.9.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.
- package/dist/index.js +169 -105
- package/dist/index.js.map +1 -1
- package/dist/types/advanced/BevelContainer/BevelContainer.d.ts +2 -2
- package/dist/types/advanced/BevelContainer/BevelContainer.d.ts.map +1 -1
- package/dist/types/advanced/CircularDiagramStyleVisualization/CircularDiagramStyleVisualization.d.ts +1 -1
- package/dist/types/advanced/CircularDiagramStyleVisualization/CircularDiagramStyleVisualization.d.ts.map +1 -1
- package/dist/types/advanced/CircularDiagramStyleVisualization/CircularDiagramStyleVisualizationSVG.d.ts +1 -1
- package/dist/types/advanced/CircularDiagramStyleVisualization/CircularDiagramStyleVisualizationSVG.d.ts.map +1 -1
- package/dist/types/advanced/ControlGroupWrapper/ControlGroupWrapper.d.ts +5 -3
- package/dist/types/advanced/ControlGroupWrapper/ControlGroupWrapper.d.ts.map +1 -1
- package/dist/types/advanced/IconButton/IconButton.d.ts +1 -1
- package/dist/types/advanced/IconButton/IconButton.d.ts.map +1 -1
- package/dist/types/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts +1 -1
- package/dist/types/advanced/KeyValueDisplayScreen/KeyValueDisplayScreen.d.ts.map +1 -1
- package/dist/types/advanced/LFOIntensityMeter/LFOIntensityMeter.d.ts +1 -1
- package/dist/types/advanced/LFOIntensityMeter/LFOIntensityMeter.d.ts.map +1 -1
- package/dist/types/advanced/LFOVisualizer/LFOVisualizer.d.ts +1 -1
- package/dist/types/advanced/LFOVisualizer/LFOVisualizer.d.ts.map +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrix.d.ts +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrix.d.ts.map +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixCell.d.ts +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixCell.d.ts.map +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixComboboxCell.d.ts +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixComboboxCell.d.ts.map +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixRow.d.ts +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixRow.d.ts.map +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixToggleCell.d.ts +1 -1
- package/dist/types/advanced/ModMatrix/ModMatrixToggleCell.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/InputModTab.d.ts +1 -1
- package/dist/types/advanced/ModuleFooter/InputModTab.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/LFOBox.d.ts +1 -1
- package/dist/types/advanced/ModuleFooter/LFOBox.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/LFOTab.d.ts +1 -1
- package/dist/types/advanced/ModuleFooter/LFOTab.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/ModuleFooter.d.ts +4 -4
- package/dist/types/advanced/ModuleFooter/ModuleFooter.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/SeqPanel.d.ts +1 -1
- package/dist/types/advanced/ModuleFooter/SeqPanel.d.ts.map +1 -1
- package/dist/types/advanced/ModuleFooter/SeqTab.d.ts +1 -1
- package/dist/types/advanced/ModuleFooter/SeqTab.d.ts.map +1 -1
- package/dist/types/advanced/ModuleHeader/ModuleHeader.d.ts +1 -1
- package/dist/types/advanced/ModuleHeader/ModuleHeader.d.ts.map +1 -1
- package/dist/types/advanced/Oscilloscope/LinePlot.d.ts +1 -1
- package/dist/types/advanced/Oscilloscope/LinePlot.d.ts.map +1 -1
- package/dist/types/advanced/Oscilloscope/Oscilloscope.d.ts +1 -1
- package/dist/types/advanced/Oscilloscope/Oscilloscope.d.ts.map +1 -1
- package/dist/types/advanced/OuterGlowFilter.d.ts +1 -1
- package/dist/types/advanced/OuterGlowFilter.d.ts.map +1 -1
- package/dist/types/advanced/PresetManager/PresetManager.d.ts +1 -1
- package/dist/types/advanced/PresetManager/PresetManager.d.ts.map +1 -1
- package/dist/types/advanced/StepSequencer/StepSequencer.d.ts +1 -1
- package/dist/types/advanced/StepSequencer/StepSequencer.d.ts.map +1 -1
- package/dist/types/advanced/ThemeWrapper/ThemeWrapper.d.ts +1 -1
- package/dist/types/advanced/ThemeWrapper/ThemeWrapper.d.ts.map +1 -1
- package/dist/types/advanced/VUMeter/VUMeter.d.ts +1 -1
- package/dist/types/advanced/VUMeter/VUMeter.d.ts.map +1 -1
- package/dist/types/common/utils.d.ts +61 -9
- package/dist/types/common/utils.d.ts.map +1 -1
- package/dist/types/common/utils.test.d.ts +2 -0
- package/dist/types/common/utils.test.d.ts.map +1 -0
- package/dist/types/context/GlobalContextProvider.d.ts +1 -1
- package/dist/types/context/GlobalContextProvider.d.ts.map +1 -1
- package/dist/types/core/Box/Box.d.ts +1 -1
- package/dist/types/core/Box/Box.d.ts.map +1 -1
- package/dist/types/core/Button/Button.d.ts +1 -1
- package/dist/types/core/Button/Button.d.ts.map +1 -1
- package/dist/types/core/Chart/AnimationDataWrapper.d.ts +1 -1
- package/dist/types/core/Chart/AnimationDataWrapper.d.ts.map +1 -1
- package/dist/types/core/Chart/Area.d.ts +1 -1
- package/dist/types/core/Chart/Area.d.ts.map +1 -1
- package/dist/types/core/Chart/Bar.d.ts +1 -1
- package/dist/types/core/Chart/Bar.d.ts.map +1 -1
- package/dist/types/core/Chart/Chart.d.ts +1 -1
- package/dist/types/core/Chart/Chart.d.ts.map +1 -1
- package/dist/types/core/Chart/Line.d.ts +1 -1
- package/dist/types/core/Chart/Line.d.ts.map +1 -1
- package/dist/types/core/Chart/LineChart/LineChart.d.ts +1 -1
- package/dist/types/core/Chart/LineChart/LineChart.d.ts.map +1 -1
- package/dist/types/core/Chart/LineChart/LineChartCanvas.d.ts +1 -1
- package/dist/types/core/Chart/LineChart/LineChartCanvas.d.ts.map +1 -1
- package/dist/types/core/Chart/LineChart/LineChartSvg.d.ts +1 -1
- package/dist/types/core/Chart/LineChart/LineChartSvg.d.ts.map +1 -1
- package/dist/types/core/Chart/StackedChart.d.ts +1 -1
- package/dist/types/core/Chart/StackedChart.d.ts.map +1 -1
- package/dist/types/core/Chart/Ticks.d.ts +1 -1
- package/dist/types/core/Chart/Ticks.d.ts.map +1 -1
- package/dist/types/core/Combobox/Combobox.d.ts +1 -1
- package/dist/types/core/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/core/Combobox/ComboboxComponent.d.ts +1 -1
- package/dist/types/core/Combobox/ComboboxComponent.d.ts.map +1 -1
- package/dist/types/core/Combobox/ListboxComponent.d.ts +1 -1
- package/dist/types/core/Combobox/ListboxComponent.d.ts.map +1 -1
- package/dist/types/core/DataViz/SingleBarViz.d.ts +1 -1
- package/dist/types/core/DataViz/SingleBarViz.d.ts.map +1 -1
- package/dist/types/core/Heading/Heading.d.ts +1 -1
- package/dist/types/core/Heading/Heading.d.ts.map +1 -1
- package/dist/types/core/Icon/Icon.d.ts +29 -29
- package/dist/types/core/Icon/Icon.d.ts.map +1 -1
- package/dist/types/core/Indicators/IndicatorLight.d.ts +1 -1
- package/dist/types/core/Indicators/IndicatorLight.d.ts.map +1 -1
- package/dist/types/core/Input/Input.d.ts +1 -1
- package/dist/types/core/Input/Input.d.ts.map +1 -1
- package/dist/types/core/Label/Label.d.ts +1 -1
- package/dist/types/core/Label/Label.d.ts.map +1 -1
- package/dist/types/core/PositioningWrapper/PositioningWrapper.d.ts +1 -1
- package/dist/types/core/PositioningWrapper/PositioningWrapper.d.ts.map +1 -1
- package/dist/types/core/Slider/BarSlider.d.ts +1 -1
- package/dist/types/core/Slider/BarSlider.d.ts.map +1 -1
- package/dist/types/core/Slider/RotaryCircle.d.ts +1 -1
- package/dist/types/core/Slider/RotaryCircle.d.ts.map +1 -1
- package/dist/types/core/Slider/RotaryCombobox.d.ts +1 -1
- package/dist/types/core/Slider/RotaryCombobox.d.ts.map +1 -1
- package/dist/types/core/Slider/RotarySlider.d.ts +1 -1
- package/dist/types/core/Slider/RotarySlider.d.ts.map +1 -1
- package/dist/types/core/Slider/Slider.d.ts +1 -1
- package/dist/types/core/Slider/Slider.d.ts.map +1 -1
- package/dist/types/core/Slider/Slider.test.d.ts +2 -0
- package/dist/types/core/Slider/Slider.test.d.ts.map +1 -0
- package/dist/types/core/Slider/SliderSVG.d.ts +3 -3
- package/dist/types/core/Slider/SliderSVG.d.ts.map +1 -1
- package/dist/types/core/Tabs/Tabs.d.ts +1 -1
- package/dist/types/core/Tabs/Tabs.d.ts.map +1 -1
- package/dist/types/core/Toggle/Toggle.d.ts +2 -1
- package/dist/types/core/Toggle/Toggle.d.ts.map +1 -1
- package/dist/types/hooks/useCombobox.d.ts.map +1 -1
- package/dist/types/hooks/useGroupFocus.d.ts.map +1 -1
- package/dist/types/hooks/useSlider.d.ts.map +1 -1
- package/package.json +10 -3
package/dist/index.js
CHANGED
|
@@ -267,14 +267,14 @@ const decimalToPercent = (decimal)=>Math.round(100 * (typeof decimal === 'string
|
|
|
267
267
|
const percentToDecimal = (percent)=>Math.round(0.01 * (typeof percent === 'string' ? parseFloat(percent) : percent));
|
|
268
268
|
const inputCharacterIsValid = (char)=>{
|
|
269
269
|
const validCharacter = /^[\d.-]$/;
|
|
270
|
+
if (char === null || char === undefined) return false;
|
|
270
271
|
return validCharacter.test(char.toString());
|
|
271
272
|
};
|
|
272
273
|
const clamp = (val, min = 0, max = 1)=>{
|
|
273
274
|
return Math.max(min, Math.min(max, val));
|
|
274
275
|
};
|
|
275
|
-
function snapToLegalValue({ value,
|
|
276
|
-
|
|
277
|
-
if (interval == 0) return value;
|
|
276
|
+
function snapToLegalValue({ value, interval, start, end }) {
|
|
277
|
+
if (interval === 0) return value;
|
|
278
278
|
const roundedInterval = parseFloat(interval?.toFixed(2));
|
|
279
279
|
const formattedValue = start + roundedInterval * Math.floor((value - start) / roundedInterval + 0.5);
|
|
280
280
|
return parseFloat(clamp(formattedValue, start, end)?.toFixed(2));
|
|
@@ -301,7 +301,9 @@ const getValidValueForInput = ({ value, oldValue, properties })=>{
|
|
|
301
301
|
} else {
|
|
302
302
|
return parseFloat(snapToLegalValue({
|
|
303
303
|
value: parseFloat(validValue),
|
|
304
|
-
properties
|
|
304
|
+
interval: properties.interval,
|
|
305
|
+
start: properties.start,
|
|
306
|
+
end: properties.end
|
|
305
307
|
})?.toFixed(2));
|
|
306
308
|
}
|
|
307
309
|
} else {
|
|
@@ -383,19 +385,59 @@ const randomizeValue = (min, max)=>{
|
|
|
383
385
|
// min?: number;
|
|
384
386
|
// max?: number;
|
|
385
387
|
// }
|
|
386
|
-
const
|
|
388
|
+
const getTotalNumStepsMultiplier = (incrementType, numSteps)=>{
|
|
389
|
+
return incrementType === IncrementType.standard || incrementType === IncrementType.button ? Math.max(Math.abs(numSteps * 0.01), 1) : 1;
|
|
390
|
+
};
|
|
391
|
+
const incrementValue = ({ incrementType, sliderNumSteps, comboboxNumChoices, delta, startingValue, buttonIncrement, buttonDirection = StepDirection.up, sliderInterval, sliderMin, sliderMax })=>{
|
|
387
392
|
const hasButtonIncrementType = incrementType === IncrementType.button || incrementType === IncrementType.indexButton;
|
|
388
|
-
|
|
389
|
-
// incrementType === IncrementType.standard ||
|
|
390
|
-
// incrementType === IncrementType.index;
|
|
393
|
+
const hasVelocity = incrementType === IncrementType.standard || incrementType === IncrementType.index;
|
|
391
394
|
const isFloatValue = incrementType === IncrementType.standard || incrementType === IncrementType.fine || incrementType === IncrementType.button;
|
|
392
395
|
// const velocityMultiplier: number = 1;
|
|
393
|
-
const buttonIncrementMultiplier =
|
|
394
|
-
const totalNumStepsMultiplier = incrementType
|
|
395
|
-
const
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
return isFloatValue ? parseFloat(returnVal?.toFixed(2)) : Math.round(returnVal);
|
|
396
|
+
const buttonIncrementMultiplier = hasButtonIncrementType && buttonIncrement ? Math.abs(buttonIncrement) : 1;
|
|
397
|
+
const totalNumStepsMultiplier = getTotalNumStepsMultiplier(incrementType, (isFloatValue ? sliderNumSteps : comboboxNumChoices) ?? 0);
|
|
398
|
+
const deltaMultiplier = hasVelocity ? Math.abs(delta ?? 1) : 1;
|
|
399
|
+
const signMultiplier = hasButtonIncrementType ? Math.sign(buttonDirection === StepDirection.down ? -1 : 1) : Math.sign(delta ?? 1);
|
|
400
|
+
const returnVal = (startingValue ?? 0) + (incrementType === IncrementType.indexButton || incrementType === IncrementType.index ? 1 : sliderInterval ?? 0) * signMultiplier * deltaMultiplier * buttonIncrementMultiplier * totalNumStepsMultiplier;
|
|
401
|
+
return isFloatValue ? Math.max(sliderMin, Math.min(parseFloat(returnVal?.toFixed(2)), sliderMax)) : Math.max(0, Math.min((comboboxNumChoices ?? 0) - 1, Math.round(returnVal)));
|
|
402
|
+
};
|
|
403
|
+
const incrementSlider = ({ delta, incrementType, startingValue, sliderInterval, sliderNumSteps, sliderMin, sliderMax })=>{
|
|
404
|
+
return incrementValue({
|
|
405
|
+
delta,
|
|
406
|
+
incrementType,
|
|
407
|
+
startingValue,
|
|
408
|
+
sliderInterval,
|
|
409
|
+
sliderNumSteps,
|
|
410
|
+
sliderMin,
|
|
411
|
+
sliderMax
|
|
412
|
+
});
|
|
413
|
+
};
|
|
414
|
+
const incrementSliderButton = ({ startingValue, buttonIncrement, buttonDirection, sliderInterval, sliderNumSteps, sliderMin, sliderMax })=>{
|
|
415
|
+
return incrementValue({
|
|
416
|
+
incrementType: IncrementType.button,
|
|
417
|
+
startingValue,
|
|
418
|
+
buttonIncrement,
|
|
419
|
+
buttonDirection,
|
|
420
|
+
sliderInterval,
|
|
421
|
+
sliderNumSteps,
|
|
422
|
+
sliderMin,
|
|
423
|
+
sliderMax
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
const incrementIndex = ({ delta, startingValue, comboboxNumChoices })=>{
|
|
427
|
+
return incrementValue({
|
|
428
|
+
delta,
|
|
429
|
+
incrementType: IncrementType.index,
|
|
430
|
+
startingValue,
|
|
431
|
+
comboboxNumChoices
|
|
432
|
+
});
|
|
433
|
+
};
|
|
434
|
+
const incrementIndexButton = ({ startingValue, comboboxNumChoices, buttonDirection })=>{
|
|
435
|
+
return incrementValue({
|
|
436
|
+
incrementType: IncrementType.indexButton,
|
|
437
|
+
startingValue,
|
|
438
|
+
comboboxNumChoices,
|
|
439
|
+
buttonDirection
|
|
440
|
+
});
|
|
399
441
|
};
|
|
400
442
|
const generateDropShadowFilterString = (colors, radius)=>{
|
|
401
443
|
let output = [];
|
|
@@ -469,6 +511,11 @@ const animateRotaryCircle = ({ animationFrameRef, elementRef, prevValRef, active
|
|
|
469
511
|
animationFrameRef.current = requestAnimationFrame(()=>{
|
|
470
512
|
if (elementRef.current) {
|
|
471
513
|
elementRef.current.style.strokeDashoffset = `${polarity === Polarity.unipolar ? unipolarOffset : bipolarOffset}`;
|
|
514
|
+
// console.log(
|
|
515
|
+
// value,
|
|
516
|
+
// elementRef.current.style.strokeDashoffset,
|
|
517
|
+
// 'strokeDashoffsetstrokeDashoffsetstrokeDashoffset',
|
|
518
|
+
// );
|
|
472
519
|
}
|
|
473
520
|
});
|
|
474
521
|
prevValRef.current = value;
|
|
@@ -713,6 +760,7 @@ function Button({ disabled, text, id, className, style, onClick, children, outer
|
|
|
713
760
|
borderColor: componentIsHovered && highlightBorderColor ? highlightBorderColor : borderColor,
|
|
714
761
|
children: jsx("button", {
|
|
715
762
|
id: id,
|
|
763
|
+
"data-testid": "button-component",
|
|
716
764
|
onMouseDown: handleMouseDown,
|
|
717
765
|
disabled: disabled,
|
|
718
766
|
onClick: onClick && onClick,
|
|
@@ -1224,6 +1272,7 @@ function Icon({ icon, onClick, disabled = false, color = 'var(--color-text)', pa
|
|
|
1224
1272
|
...style
|
|
1225
1273
|
},
|
|
1226
1274
|
children: jsx(Icon, {
|
|
1275
|
+
"data-testid": "icon-component",
|
|
1227
1276
|
width: numberWidth,
|
|
1228
1277
|
color: disabled ? 'var(--color-gray-400)' : color
|
|
1229
1278
|
})
|
|
@@ -1238,6 +1287,7 @@ function Label({ value, id, className, style, color = 'var(--color-text)', highl
|
|
|
1238
1287
|
], uppercase, outerGlowRadius, outerGlowColor, blur, children, htmlFor, fontSize = FontSizes.medium, ...rest }) {
|
|
1239
1288
|
const [componentIsHovered, setComponentIsHovered] = useState(false);
|
|
1240
1289
|
return jsx("label", {
|
|
1290
|
+
"data-testid": "label-component",
|
|
1241
1291
|
id: id,
|
|
1242
1292
|
htmlFor: htmlFor,
|
|
1243
1293
|
onMouseEnter: ()=>setComponentIsHovered(true),
|
|
@@ -1348,11 +1398,17 @@ function Tabs({ items, initialSelectedIndex = undefined, id = '', className, pad
|
|
|
1348
1398
|
useEffect(()=>{
|
|
1349
1399
|
if (dataSource === DataSource.JuceCombobox) {
|
|
1350
1400
|
setTimeout(()=>{
|
|
1351
|
-
|
|
1352
|
-
|
|
1401
|
+
if (comboBoxState.properties.choices.length > 0) {
|
|
1402
|
+
setChoices(comboBoxState.properties.choices);
|
|
1403
|
+
setSelectedIndex(comboBoxState.getChoiceIndex());
|
|
1404
|
+
}
|
|
1353
1405
|
});
|
|
1354
1406
|
} else {
|
|
1355
|
-
|
|
1407
|
+
setTimeout(()=>{
|
|
1408
|
+
if (items?.length) {
|
|
1409
|
+
setChoices(items);
|
|
1410
|
+
}
|
|
1411
|
+
});
|
|
1356
1412
|
}
|
|
1357
1413
|
}, []);
|
|
1358
1414
|
useEffect(()=>{
|
|
@@ -1991,16 +2047,12 @@ const useCombobox = ({ id, label, items = [], filter, onChange, displayValInHead
|
|
|
1991
2047
|
saveToBackend: false
|
|
1992
2048
|
});
|
|
1993
2049
|
}
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
numSteps: properties?.numSteps ?? 0
|
|
2001
|
-
});
|
|
2002
|
-
comboBoxState?.setChoiceIndex(newValue);
|
|
2003
|
-
}
|
|
2050
|
+
const newValue = incrementIndex({
|
|
2051
|
+
delta: delta[1] * -1,
|
|
2052
|
+
startingValue: selectedIndex,
|
|
2053
|
+
comboboxNumChoices: properties?.choices?.length ?? 0
|
|
2054
|
+
});
|
|
2055
|
+
comboBoxState?.setChoiceIndex(newValue);
|
|
2004
2056
|
}
|
|
2005
2057
|
}, {
|
|
2006
2058
|
enabled: !isDisabled,
|
|
@@ -2042,22 +2094,21 @@ const useCombobox = ({ id, label, items = [], filter, onChange, displayValInHead
|
|
|
2042
2094
|
}
|
|
2043
2095
|
};
|
|
2044
2096
|
const incrementComboboxButton = ()=>{
|
|
2045
|
-
if (selectedIndex
|
|
2046
|
-
const newIndex =
|
|
2047
|
-
interval: properties?.interval,
|
|
2097
|
+
if (selectedIndex <= properties.choices.length - 1) {
|
|
2098
|
+
const newIndex = incrementIndexButton({
|
|
2048
2099
|
startingValue: selectedIndex,
|
|
2049
|
-
|
|
2050
|
-
|
|
2100
|
+
comboboxNumChoices: properties?.choices?.length,
|
|
2101
|
+
buttonDirection: StepDirection.up
|
|
2051
2102
|
});
|
|
2052
2103
|
handleChange(newIndex);
|
|
2053
2104
|
}
|
|
2054
2105
|
};
|
|
2055
2106
|
const decrementComboboxButton = ()=>{
|
|
2056
2107
|
if (selectedIndex > 0) {
|
|
2057
|
-
const newIndex =
|
|
2108
|
+
const newIndex = incrementIndexButton({
|
|
2058
2109
|
startingValue: selectedIndex,
|
|
2059
|
-
|
|
2060
|
-
|
|
2110
|
+
comboboxNumChoices: properties?.choices?.length,
|
|
2111
|
+
buttonDirection: StepDirection.down
|
|
2061
2112
|
});
|
|
2062
2113
|
handleChange(newIndex);
|
|
2063
2114
|
}
|
|
@@ -2137,7 +2188,7 @@ function ComboboxComponent({ id, anchorTo, excludeItems = [], items, onChange, c
|
|
|
2137
2188
|
}) : null,
|
|
2138
2189
|
jsxs(Combobox$2, {
|
|
2139
2190
|
value: selectedIndexLabel,
|
|
2140
|
-
onChange: (selectedIndexLabel)=>handleChange(selectedIndexLabel),
|
|
2191
|
+
onChange: (selectedIndexLabel)=>selectedIndexLabel && handleChange(selectedIndexLabel),
|
|
2141
2192
|
onClose: ()=>{
|
|
2142
2193
|
setIncludeFilterString('');
|
|
2143
2194
|
},
|
|
@@ -2283,6 +2334,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2283
2334
|
flexDirection: Box.flexDirection.column,
|
|
2284
2335
|
className: `${className ?? ''} ComboboxComponent`,
|
|
2285
2336
|
width: getStringSizeValue(width) || 'auto',
|
|
2337
|
+
"data-testid": "combobox-component",
|
|
2286
2338
|
style: {
|
|
2287
2339
|
color: componentIsHovered && buttonHighlightColor ? buttonHighlightColor : color,
|
|
2288
2340
|
// position: 'relative',
|
|
@@ -2322,6 +2374,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2322
2374
|
},
|
|
2323
2375
|
children: [
|
|
2324
2376
|
jsx(ListboxButton, {
|
|
2377
|
+
"data-testid": "combobox-button",
|
|
2325
2378
|
className: "Combobox-button-element",
|
|
2326
2379
|
// onMouseEnter={() => setComponentIsHovered(true)}
|
|
2327
2380
|
// onMouseLeave={() => setComponentIsHovered(false)}
|
|
@@ -2360,6 +2413,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2360
2413
|
id: "Combobox-up-arrow",
|
|
2361
2414
|
className: "Combobox-arrow",
|
|
2362
2415
|
backgroundColor: "transparent",
|
|
2416
|
+
"data-testid": "combobox-up-arrow",
|
|
2363
2417
|
highlightIconColor: buttonHighlightColor,
|
|
2364
2418
|
highlightColor: buttonHighlightColor,
|
|
2365
2419
|
disabledIconColor: labelColor,
|
|
@@ -2379,6 +2433,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2379
2433
|
jsx(IconButton, {
|
|
2380
2434
|
id: "Combobox-down-arrow",
|
|
2381
2435
|
className: "Combobox-arrow",
|
|
2436
|
+
"data-testid": "combobox-down-arrow",
|
|
2382
2437
|
backgroundColor: "transparent",
|
|
2383
2438
|
disabledIconColor: labelColor,
|
|
2384
2439
|
highlightIconColor: buttonHighlightColor,
|
|
@@ -2401,6 +2456,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2401
2456
|
]
|
|
2402
2457
|
}),
|
|
2403
2458
|
jsx(ListboxOptions, {
|
|
2459
|
+
"data-testid": "combobox-options",
|
|
2404
2460
|
anchor: anchorTo,
|
|
2405
2461
|
portal: false,
|
|
2406
2462
|
className: "Combobox-items z-10",
|
|
@@ -2410,6 +2466,7 @@ function Combobox$1({ label, showLabel, color = 'var(--color-text)', labelColor,
|
|
|
2410
2466
|
width
|
|
2411
2467
|
},
|
|
2412
2468
|
children: choices?.map((item, i)=>jsx(ListboxOption, {
|
|
2469
|
+
"data-testid": "combobox-option",
|
|
2413
2470
|
className: classnames('Combobox-item'),
|
|
2414
2471
|
value: item,
|
|
2415
2472
|
// onMouseEnter={() => setHoveredDropdownItem(item)}
|
|
@@ -2528,7 +2585,6 @@ function Input({ onComplete, value, min, max, fontSize = FontSizes.xSmall, style
|
|
|
2528
2585
|
// const [isHighlighted, setIsHighlighted] = useState<boolean>(false);
|
|
2529
2586
|
const valueRef = useRef(null);
|
|
2530
2587
|
const inputRef = useRef(null);
|
|
2531
|
-
const isLocalhost = window.location.hostname === 'localhost';
|
|
2532
2588
|
const inputId = `${id}-input`;
|
|
2533
2589
|
// Sets up listeners to handle changes on the backend
|
|
2534
2590
|
// const currentOuterGlowColor = !isHighlighted
|
|
@@ -2539,7 +2595,9 @@ function Input({ onComplete, value, min, max, fontSize = FontSizes.xSmall, style
|
|
|
2539
2595
|
const sliderState = Juce.getSliderState(id);
|
|
2540
2596
|
const legalVal = snapToLegalValue({
|
|
2541
2597
|
value: sliderState?.scaledValue,
|
|
2542
|
-
|
|
2598
|
+
interval: sliderState.properties.interval,
|
|
2599
|
+
start: sliderState.properties.start,
|
|
2600
|
+
end: sliderState.properties.end
|
|
2543
2601
|
});
|
|
2544
2602
|
setInternalValue(legalVal);
|
|
2545
2603
|
valueRef.current = legalVal;
|
|
@@ -2557,24 +2615,23 @@ function Input({ onComplete, value, min, max, fontSize = FontSizes.xSmall, style
|
|
|
2557
2615
|
}
|
|
2558
2616
|
}
|
|
2559
2617
|
useEffect(()=>{
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
const
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
valueRef.current = legalVal;
|
|
2570
|
-
setInternalValue(legalVal);
|
|
2618
|
+
document.addEventListener('keyup', handleKeyUp);
|
|
2619
|
+
//TODO: don't get slider state if value is passed as a prop?
|
|
2620
|
+
const sliderState = Juce.getSliderState(id);
|
|
2621
|
+
const valueListenerId = sliderState?.valueChangedEvent.addListener((e)=>{
|
|
2622
|
+
const legalVal = snapToLegalValue({
|
|
2623
|
+
value: sliderState?.scaledValue,
|
|
2624
|
+
interval: sliderState.properties.interval,
|
|
2625
|
+
start: sliderState.properties.start,
|
|
2626
|
+
end: sliderState.properties.end
|
|
2571
2627
|
});
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2628
|
+
valueRef.current = legalVal;
|
|
2629
|
+
setInternalValue(legalVal);
|
|
2630
|
+
});
|
|
2631
|
+
return ()=>{
|
|
2632
|
+
document.removeEventListener('keyup', handleKeyUp);
|
|
2633
|
+
sliderState?.valueChangedEvent.removeListener(valueListenerId);
|
|
2634
|
+
};
|
|
2578
2635
|
}, [
|
|
2579
2636
|
window
|
|
2580
2637
|
]);
|
|
@@ -2611,6 +2668,7 @@ function Input({ onComplete, value, min, max, fontSize = FontSizes.xSmall, style
|
|
|
2611
2668
|
return jsx("input", {
|
|
2612
2669
|
id: inputId,
|
|
2613
2670
|
ref: inputRef,
|
|
2671
|
+
"data-testid": "input-component",
|
|
2614
2672
|
className: classnames('TextInput', className),
|
|
2615
2673
|
// onFocus={() => setIsHighlighted(true)}
|
|
2616
2674
|
onBlur: (e)=>{
|
|
@@ -2693,7 +2751,7 @@ const useSlider = ({ id, rowId, label, displayValInHeader = true, mockProperties
|
|
|
2693
2751
|
const sliderState = Juce.getSliderState(id);
|
|
2694
2752
|
// const numSteps = sliderState?.getNumSteps();
|
|
2695
2753
|
const [scaledValue, setScaledValue] = useState(0);
|
|
2696
|
-
const [normalisedValue, setNormalisedValue] = useState(sliderState?.
|
|
2754
|
+
const [normalisedValue, setNormalisedValue] = useState(sliderState?.getNormalisedValue());
|
|
2697
2755
|
const dragInProgress = useRef(false);
|
|
2698
2756
|
const { highlightedItemChanged, setDefaultParameter, updateModSlotRowTarget, getModSlotPreview, mainPanelrandomizerObject } = useGlobalContext();
|
|
2699
2757
|
const randomizerObjectToUse = randomizerObject && Object.keys(randomizerObject).length > 0 ? randomizerObject : mainPanelrandomizerObject;
|
|
@@ -2734,7 +2792,7 @@ const useSlider = ({ id, rowId, label, displayValInHeader = true, mockProperties
|
|
|
2734
2792
|
// Update JUCE state
|
|
2735
2793
|
const setJuceScaledValue = (newValue)=>{
|
|
2736
2794
|
if (previousScaledValueRef?.current !== newValue) {
|
|
2737
|
-
|
|
2795
|
+
sliderState.setScaledValue(clamp(newValue, sliderState?.properties?.start, sliderState?.properties?.end));
|
|
2738
2796
|
rowId && changeHandler(newValue, rowId);
|
|
2739
2797
|
previousScaledValueRef.current = newValue;
|
|
2740
2798
|
}
|
|
@@ -2756,31 +2814,28 @@ const useSlider = ({ id, rowId, label, displayValInHeader = true, mockProperties
|
|
|
2756
2814
|
id
|
|
2757
2815
|
]);
|
|
2758
2816
|
// Sets up listeners to handle changes on the backend
|
|
2759
|
-
//@ts-expect-error
|
|
2760
2817
|
useEffect(()=>{
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
const
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
};
|
|
2783
|
-
}
|
|
2818
|
+
document.addEventListener('keydown', keyDownListener);
|
|
2819
|
+
document.addEventListener('keyup', keyUpListener);
|
|
2820
|
+
const valueListenerId = sliderState?.valueChangedEvent.addListener((e)=>{
|
|
2821
|
+
const sliderState = Juce.getSliderState(id);
|
|
2822
|
+
setNormalisedValue(sliderState.getNormalisedValue());
|
|
2823
|
+
setScaledValue(parseFloat(sliderState?.scaledValue?.toFixed(2)));
|
|
2824
|
+
if (displayValInHeader && (label || properties?.name)) {
|
|
2825
|
+
highlightedItemChanged({
|
|
2826
|
+
label: label || properties?.name || '',
|
|
2827
|
+
value: parseFloat(sliderState?.scaledValue?.toFixed(2))
|
|
2828
|
+
});
|
|
2829
|
+
}
|
|
2830
|
+
});
|
|
2831
|
+
const propertiesListenerId = sliderState?.propertiesChangedEvent.addListener(()=>setProperties(sliderState?.properties));
|
|
2832
|
+
previousScaledValueRef.current = sliderState.scaledValue;
|
|
2833
|
+
return ()=>{
|
|
2834
|
+
document.removeEventListener('keydown', keyDownListener);
|
|
2835
|
+
document.removeEventListener('keyup', keyUpListener);
|
|
2836
|
+
sliderState?.valueChangedEvent.removeListener(valueListenerId);
|
|
2837
|
+
sliderState?.propertiesChangedEvent.removeListener(propertiesListenerId);
|
|
2838
|
+
};
|
|
2784
2839
|
}, [
|
|
2785
2840
|
window,
|
|
2786
2841
|
changeHandler
|
|
@@ -2807,12 +2862,14 @@ const useSlider = ({ id, rowId, label, displayValInHeader = true, mockProperties
|
|
|
2807
2862
|
}
|
|
2808
2863
|
if (dragOrientation !== DragOrientation.followCursor) {
|
|
2809
2864
|
const deltaVal = dragOrientation === DragOrientation.vertical ? delta[1] * -1 : delta[0];
|
|
2810
|
-
const newValue =
|
|
2865
|
+
const newValue = incrementSlider({
|
|
2811
2866
|
delta: deltaVal,
|
|
2812
2867
|
incrementType: optionIsDown ? IncrementType.fine : IncrementType.standard,
|
|
2813
2868
|
startingValue: previousScaledValueRef.current || 0,
|
|
2814
|
-
|
|
2815
|
-
|
|
2869
|
+
sliderInterval: properties?.interval ?? 0,
|
|
2870
|
+
sliderNumSteps: properties?.numSteps ?? 0,
|
|
2871
|
+
sliderMin: properties?.start ?? 0,
|
|
2872
|
+
sliderMax: properties?.end ?? 0
|
|
2816
2873
|
});
|
|
2817
2874
|
setJuceScaledValue(newValue);
|
|
2818
2875
|
}
|
|
@@ -2887,7 +2944,7 @@ styleInject(css_248z$c);
|
|
|
2887
2944
|
var css_248z$b = ".ControlGroup.isFocused {\n --b: 1px; /* thickness of the border */\n --c: var(--slider-highlight-color); /* color of the border */\n --w: 5px; /* width of border */\n\n border: var(--b) solid #0000; /* space for the border */\n --_g: #0000 90deg, var(--c) 0;\n --_p: var(--w) var(--w) border-box no-repeat;\n background:\n conic-gradient(from 90deg at top var(--b) left var(--b), var(--_g)) 0 0 /\n var(--_p),\n conic-gradient(from 180deg at top var(--b) right var(--b), var(--_g)) 100% 0 /\n var(--_p),\n conic-gradient(from 0deg at bottom var(--b) left var(--b), var(--_g)) 0 100% /\n var(--_p),\n conic-gradient(from -90deg at bottom var(--b) right var(--b), var(--_g))\n 100% 100% / var(--_p);\n}\n";
|
|
2888
2945
|
styleInject(css_248z$b);
|
|
2889
2946
|
|
|
2890
|
-
function ControlGroupWrapper({ id, isDisabled = false, isFocused, className, children, width = 'auto', height = 'auto', borderHighlightColor = 'var(--color-brand)', flexDirection = FlexDirection$1.column, style }) {
|
|
2947
|
+
function ControlGroupWrapper({ id, isDisabled = false, isFocused, className, children, width = 'auto', height = 'auto', gap = Spacing.none, borderHighlightColor = 'var(--color-brand)', flexDirection = FlexDirection$1.column, style }) {
|
|
2891
2948
|
// EXPECTED CONTROL GROUP STRUCTURE
|
|
2892
2949
|
// <ControlGroup id={id-control-group}>
|
|
2893
2950
|
// <Slider id={id}></Slider>
|
|
@@ -2897,6 +2954,7 @@ function ControlGroupWrapper({ id, isDisabled = false, isFocused, className, chi
|
|
|
2897
2954
|
return jsx(Box, {
|
|
2898
2955
|
id: groupId,
|
|
2899
2956
|
width: width,
|
|
2957
|
+
gap: Box.gap.none,
|
|
2900
2958
|
className: `ControlGroup ${isFocused ? 'isFocused' : ''} ${isDisabled ? 'isDisabled' : ''} ${className ? className : ''}`,
|
|
2901
2959
|
style: {
|
|
2902
2960
|
//@ts-expect-error
|
|
@@ -2910,6 +2968,7 @@ function ControlGroupWrapper({ id, isDisabled = false, isFocused, className, chi
|
|
|
2910
2968
|
});
|
|
2911
2969
|
}
|
|
2912
2970
|
ControlGroupWrapper.FlexDirection = FlexDirection$1;
|
|
2971
|
+
ControlGroupWrapper.gap = Spacing;
|
|
2913
2972
|
|
|
2914
2973
|
const ProgressCircle = ({ width, height, polarity = Polarity.unipolar, strokeWidth = 5, // trackOffset = 0,
|
|
2915
2974
|
indicatorLineColor, indicatorLineGradient, outerGlowRadius, outerGlowColors = [], blur, indicatorLineRange, trackColor, radius, circ, activeZone, normalisedValue })=>{
|
|
@@ -2967,6 +3026,7 @@ indicatorLineColor, indicatorLineGradient, outerGlowRadius, outerGlowColors = []
|
|
|
2967
3026
|
ref: sliderElementRef,
|
|
2968
3027
|
id: "circle2",
|
|
2969
3028
|
className: "ProgressCircle-fg",
|
|
3029
|
+
"data-testid": "progress-circle-component",
|
|
2970
3030
|
cx: cx,
|
|
2971
3031
|
cy: cy,
|
|
2972
3032
|
r: radius,
|
|
@@ -3288,6 +3348,7 @@ function RotaryCircle({ polarity = Polarity.unipolar, className, id, trackWidth
|
|
|
3288
3348
|
id: id,
|
|
3289
3349
|
tabIndex: 0,
|
|
3290
3350
|
className: classnames('Slider', 'RotarySlider', polarity === Polarity.unipolar ? 'Slider-polarity-unipolar' : 'Slider-polarity-bipolar', className),
|
|
3351
|
+
"data-testid": "slider-component",
|
|
3291
3352
|
...bindDrag(),
|
|
3292
3353
|
onDoubleClick: ()=>{
|
|
3293
3354
|
onDoubleClick && onDoubleClick();
|
|
@@ -3558,12 +3619,14 @@ function useGroupFocus({ isDisabled, id, inputRef, incrementBy }) {
|
|
|
3558
3619
|
const increment = ()=>{
|
|
3559
3620
|
if (!isMainSliderACombobox) {
|
|
3560
3621
|
const scaledVal = sliderState?.scaledValue;
|
|
3561
|
-
const newValue =
|
|
3562
|
-
|
|
3563
|
-
numSteps: sliderState?.properties?.numSteps,
|
|
3622
|
+
const newValue = incrementSliderButton({
|
|
3623
|
+
sliderNumSteps: sliderState?.properties?.numSteps,
|
|
3564
3624
|
startingValue: scaledVal,
|
|
3565
3625
|
buttonDirection: StepDirection.up,
|
|
3566
|
-
|
|
3626
|
+
sliderInterval: sliderState?.properties?.interval,
|
|
3627
|
+
sliderMin: sliderState?.properties?.start,
|
|
3628
|
+
sliderMax: sliderState?.properties?.end,
|
|
3629
|
+
buttonIncrement: 1
|
|
3567
3630
|
});
|
|
3568
3631
|
sliderState.setScaledValue(newValue);
|
|
3569
3632
|
} else {
|
|
@@ -3574,12 +3637,14 @@ function useGroupFocus({ isDisabled, id, inputRef, incrementBy }) {
|
|
|
3574
3637
|
const decrement = ()=>{
|
|
3575
3638
|
if (!isMainSliderACombobox) {
|
|
3576
3639
|
const scaledVal = sliderState?.scaledValue;
|
|
3577
|
-
const newValue =
|
|
3578
|
-
|
|
3579
|
-
numSteps: sliderState?.properties?.numSteps,
|
|
3640
|
+
const newValue = incrementSliderButton({
|
|
3641
|
+
sliderNumSteps: sliderState?.properties?.numSteps,
|
|
3580
3642
|
startingValue: scaledVal,
|
|
3581
3643
|
buttonDirection: StepDirection.down,
|
|
3582
|
-
|
|
3644
|
+
sliderInterval: sliderState?.properties?.interval,
|
|
3645
|
+
sliderMin: sliderState?.properties?.start,
|
|
3646
|
+
sliderMax: sliderState?.properties?.end,
|
|
3647
|
+
buttonIncrement: 1
|
|
3583
3648
|
});
|
|
3584
3649
|
sliderState?.setScaledValue(newValue);
|
|
3585
3650
|
} else {
|
|
@@ -3695,7 +3760,6 @@ indicatorId, indicatorLineColor, indicatorLineGradient = GradientStyles.unicolor
|
|
|
3695
3760
|
id,
|
|
3696
3761
|
inputRef
|
|
3697
3762
|
});
|
|
3698
|
-
// console.l
|
|
3699
3763
|
// const defaultTrackWidth = size === RotarySliderSizes.large ? 5 : 3;
|
|
3700
3764
|
const defaultHandleShape = size === RotarySliderSizes.large ? RotarySliderHandleShapes.circle : RotarySliderHandleShapes.rectangle;
|
|
3701
3765
|
return jsx(Box, {
|
|
@@ -3797,7 +3861,7 @@ RotarySlider.handleShape = RotarySliderHandleShapes;
|
|
|
3797
3861
|
RotarySlider.gradient = GradientStyles;
|
|
3798
3862
|
RotarySlider.trackWidth = TrackWidths;
|
|
3799
3863
|
|
|
3800
|
-
var css_248z$9 = ".BarSlider-innerWrapper:hover {\n cursor: pointer;\n}\n\n.BarSlider-Track {\n touch-action: none;\n position: relative;\n width: 100%;\n height: 100%;\n max-height: 100%;\n max-width: 100%;\n background-color: var(--bg-lv5);\n}\n\n.BarSlider-Track.isHighlighted {\n background-color: var(--bg-lv6);\n}\n.Barslider-IndicatorLineWrapper,\n.BarSlider-HandleWrapper {\n position: absolute;\n pointer-events: none;\n}\n\n.BarSlider-IndicatorLine {\n position: absolute;\n top: 0;\n /* left: 0; */\n right: 0;\n bottom: 0;\n pointer-events: none;\n}\n.BarSlider-Handle {\n position: absolute;\n pointer-events: none;\n}\n\n.BarSliderHandle {\n pointer-events: auto;\n}\n.Barslider-IndicatorLineWrapper {\n /* border-radius: var(--trackBorderRadius); */\n overflow: hidden;\n}\n\n.BarSlider-Input {\n font-weight: bold;\n width: 100%;\n}\n\n.BarSlider-Input.includeValueInHeightIsFalse {\n position: absolute;\n bottom: -1.7em;\n left: 0;\n right: 0;\n z-index: 10;\n}\n";
|
|
3864
|
+
var css_248z$9 = ".BarSlider-innerWrapper:hover,\n.BarSlider-dragWrapper:hover {\n cursor: pointer;\n}\n\n.BarSlider-Track {\n touch-action: none;\n position: relative;\n width: 100%;\n height: 100%;\n max-height: 100%;\n max-width: 100%;\n background-color: var(--bg-lv5);\n}\n\n.BarSlider-Track.isHighlighted {\n background-color: var(--bg-lv6);\n}\n.Barslider-IndicatorLineWrapper,\n.BarSlider-HandleWrapper {\n position: absolute;\n pointer-events: none;\n}\n\n.BarSlider-IndicatorLine {\n position: absolute;\n top: 0;\n /* left: 0; */\n right: 0;\n bottom: 0;\n pointer-events: none;\n}\n.BarSlider-Handle {\n position: absolute;\n pointer-events: none;\n}\n\n.BarSliderHandle {\n pointer-events: auto;\n}\n.Barslider-IndicatorLineWrapper {\n /* border-radius: var(--trackBorderRadius); */\n overflow: hidden;\n}\n\n.BarSlider-Input {\n font-weight: bold;\n width: 100%;\n}\n\n.BarSlider-Input.includeValueInHeightIsFalse {\n position: absolute;\n bottom: -1.7em;\n left: 0;\n right: 0;\n z-index: 10;\n}\n";
|
|
3801
3865
|
styleInject(css_248z$9);
|
|
3802
3866
|
|
|
3803
3867
|
function Slider$1({ polarity = Polarity.unipolar, orientation = Orientation.vertical, dragOrientation = DragOrientation.followCursor, isRandomizable = false, randomizerObject, isStandalone = true, isHighlighted = false, showValue = true, showHandle = true, showLabel = true, showInsetBoxShadow = true, resetterObject, className, id, width, height = Height.full, onChange, outerGlowRadius, outerGlowColors, trackBorderRadius = 20, blur, style, indicatorLineColor = 'var(--color-brand)', indicatorLineGradient, trackColor = 'var(--bg-lv3)', markColor = 'var(--bg-lv7)', markHighlightColor = 'var(--color-text)', trackStrokeColor, handleFillColor, handleStrokeColor, cornerBorderHighlightColor, trackWidth = TrackWidths.small, label, labelColor, marks = [], inputHighlightColor = 'var(--color-brand)', includeValueInHeight = true, // Mocks the initial scaled value of the slider for web veiws outside of JUCE
|
|
@@ -3865,7 +3929,7 @@ mockInitialNormalisedValue = 0, mockProperties = {
|
|
|
3865
3929
|
normalisedValue
|
|
3866
3930
|
]);
|
|
3867
3931
|
const trackWidthMap = {
|
|
3868
|
-
small:
|
|
3932
|
+
small: 8,
|
|
3869
3933
|
large: 10
|
|
3870
3934
|
};
|
|
3871
3935
|
const trackStringWidth = typeof trackWidth === 'string' ? trackWidth !== TrackWidths.full ? `${trackWidthMap[trackWidth]}px` : '100%' : `${trackWidth}px`;
|
|
@@ -3882,10 +3946,6 @@ mockInitialNormalisedValue = 0, mockProperties = {
|
|
|
3882
3946
|
[GradientStyles.unicolor]: singleColorGradient
|
|
3883
3947
|
};
|
|
3884
3948
|
const marginSize = Spacing.mediumSmall;
|
|
3885
|
-
// const handleRef = useRef(null);
|
|
3886
|
-
// useEffect(() => {
|
|
3887
|
-
// console.log(normalisedValue, 'NORMALIZEDVAL');
|
|
3888
|
-
// }, [normalisedValue]);
|
|
3889
3949
|
return jsxs(Box, {
|
|
3890
3950
|
flexDirection: Box.flexDirection.column,
|
|
3891
3951
|
justifyContent: Box.justifyContent.center,
|
|
@@ -3893,7 +3953,7 @@ mockInitialNormalisedValue = 0, mockProperties = {
|
|
|
3893
3953
|
className: classnames('BarSlider', isVertical && 'BarSlider--isVertical', isHorizontal && 'BarSlider--isHorizontal', className),
|
|
3894
3954
|
id: id,
|
|
3895
3955
|
ref: sliderElementRef,
|
|
3896
|
-
gap:
|
|
3956
|
+
gap: isVertical ? ControlGroupWrapper.gap.small : ControlGroupWrapper.gap.none,
|
|
3897
3957
|
height: isVertical ? height : 'auto',
|
|
3898
3958
|
width: isHorizontal ? width : width ?? '100%',
|
|
3899
3959
|
style: {
|
|
@@ -3915,22 +3975,25 @@ mockInitialNormalisedValue = 0, mockProperties = {
|
|
|
3915
3975
|
jsxs(ControlGroupWrapper, {
|
|
3916
3976
|
id: id,
|
|
3917
3977
|
width: '100%',
|
|
3978
|
+
gap: isVertical ? ControlGroupWrapper.gap.small : ControlGroupWrapper.gap.none,
|
|
3918
3979
|
height: '100%',
|
|
3919
3980
|
isFocused: isFocused,
|
|
3920
|
-
className: `
|
|
3981
|
+
className: `BarSlider-HighlightWrapper`,
|
|
3921
3982
|
borderHighlightColor: cornerBorderHighlightColor,
|
|
3922
3983
|
children: [
|
|
3923
3984
|
jsxs(Box, {
|
|
3924
3985
|
style: {
|
|
3925
3986
|
position: 'relative'
|
|
3926
3987
|
},
|
|
3988
|
+
className: "BarSlider-dragWrapper",
|
|
3927
3989
|
fullHeight: true,
|
|
3990
|
+
...drag(),
|
|
3928
3991
|
padding: isStandalone ? isVertical ? [
|
|
3929
3992
|
Box.padding.none
|
|
3930
3993
|
] : [
|
|
3931
|
-
|
|
3994
|
+
Box.padding.mediumSmall,
|
|
3932
3995
|
Box.padding.small,
|
|
3933
|
-
|
|
3996
|
+
marginSize,
|
|
3934
3997
|
Box.padding.small
|
|
3935
3998
|
] : [
|
|
3936
3999
|
Box.padding.none
|
|
@@ -3994,7 +4057,7 @@ mockInitialNormalisedValue = 0, mockProperties = {
|
|
|
3994
4057
|
touchAction: 'none'
|
|
3995
4058
|
},
|
|
3996
4059
|
"data-sliderElement": "true",
|
|
3997
|
-
|
|
4060
|
+
"data-testid": "slider-component",
|
|
3998
4061
|
children: jsxs("div", {
|
|
3999
4062
|
className: classnames('BarSlider-Track', isHighlighted && 'isHighlighted'),
|
|
4000
4063
|
// onMouseEnter={onMouseEnter}
|
|
@@ -4329,6 +4392,7 @@ function Heading({ value, id, className, style, removeLineHeight = false, color
|
|
|
4329
4392
|
], fontSize = FontSizes.large, children }) {
|
|
4330
4393
|
const Tag = tag;
|
|
4331
4394
|
return jsx(Tag, {
|
|
4395
|
+
"data-testid": "heading-component",
|
|
4332
4396
|
id: id,
|
|
4333
4397
|
style: {
|
|
4334
4398
|
fontSize: `var(--text-${fontSize}`,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":";;;;;;;;;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":";;;;;;;;;AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
|