@linzjs/lui 21.23.0 → 21.23.1
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/CHANGELOG.md +7 -0
- package/dist/components/Splitter/helpers/useValueSeparator.d.ts +2 -0
- package/dist/components/Splitter/helpers/useValueSeparatorEffects.d.ts +5 -0
- package/dist/index.js +50 -17
- package/dist/index.js.map +1 -1
- package/dist/lui.esm.js +50 -17
- package/dist/lui.esm.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [21.23.1](https://github.com/linz/lui/compare/v21.23.0...v21.23.1) (2024-02-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **Splitter:** stop flashing behavior ([#1074](https://github.com/linz/lui/issues/1074)) ([3ebae79](https://github.com/linz/lui/commit/3ebae794183327d144d0d6c8d8985f3bb3326fdf))
|
|
7
|
+
|
|
1
8
|
# [21.23.0](https://github.com/linz/lui/compare/v21.22.0...v21.23.0) (2024-02-21)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -2,6 +2,8 @@ import { RefObject } from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Ensures valueNow is set to a valid value within its allowed boundaries.
|
|
4
4
|
* If boundaries and/or initialRatio are not specified, they will be defaulted.
|
|
5
|
+
* It's possible that multiple events trigger setValueNow simultaneosly with the same value.
|
|
6
|
+
* This multiple calls are expected, and setValueNow will resize only once.
|
|
5
7
|
*/
|
|
6
8
|
export declare const useValueSeparator: ({ separator, ratio, onResized, boundaries: { min, max }, }: {
|
|
7
9
|
ratio?: number | undefined;
|
package/dist/index.js
CHANGED
|
@@ -58680,25 +58680,23 @@ var animateSeparator = function (separatorRef, animate) {
|
|
|
58680
58680
|
};
|
|
58681
58681
|
|
|
58682
58682
|
/**
|
|
58683
|
-
*
|
|
58684
|
-
* If boundaries and/or initialRatio are not specified, they will be defaulted.
|
|
58683
|
+
* Moves separator as per ratio changes. Centers on first render if ratio is undefined.
|
|
58685
58684
|
*/
|
|
58686
|
-
var
|
|
58687
|
-
var
|
|
58688
|
-
var prev = React.useRef();
|
|
58689
|
-
var setValueNow = React.useCallback(function (val) {
|
|
58690
|
-
var valueNow = getSeparatorAttributes({ ref: separator }).valueNow;
|
|
58691
|
-
var value = val !== null && val !== void 0 ? val : (valueNow || min + (max - min) / 2);
|
|
58692
|
-
var newValue = clampSeparator({ value: value, max: max, min: min });
|
|
58693
|
-
resize(separator, newValue);
|
|
58694
|
-
if (prev.current !== newValue) {
|
|
58695
|
-
prev.current = newValue;
|
|
58696
|
-
onResized === null || onResized === void 0 ? void 0 : onResized(newValue);
|
|
58697
|
-
}
|
|
58698
|
-
}, [onResized, min, max, prev]);
|
|
58685
|
+
var useRatioEffect = function (setValueNow, ratio) {
|
|
58686
|
+
var firstRun = React.useRef(true);
|
|
58699
58687
|
React.useEffect(function () {
|
|
58700
|
-
|
|
58701
|
-
|
|
58688
|
+
if (firstRun.current || ratio !== undefined) {
|
|
58689
|
+
firstRun.current = false;
|
|
58690
|
+
// If ratio is undefined, setValueNow will place the separator in the middle as a starting point.
|
|
58691
|
+
// Whatever value is `the middle` will be determined by setValueNow
|
|
58692
|
+
setValueNow(ratio);
|
|
58693
|
+
}
|
|
58694
|
+
}, [setValueNow, ratio, firstRun]);
|
|
58695
|
+
};
|
|
58696
|
+
/**
|
|
58697
|
+
* Re-arranges the splitter if the limits or orientation change.
|
|
58698
|
+
*/
|
|
58699
|
+
var useConfigEffect = function (setValueNow, separator) {
|
|
58702
58700
|
React.useEffect(function () {
|
|
58703
58701
|
var callback = function () {
|
|
58704
58702
|
var value = getSeparatorAttributes({ ref: separator }).valueNow;
|
|
@@ -58711,6 +58709,11 @@ var useValueSeparator = function (_a) {
|
|
|
58711
58709
|
});
|
|
58712
58710
|
return function () { return observer.disconnect(); };
|
|
58713
58711
|
}, [separator, setValueNow]);
|
|
58712
|
+
};
|
|
58713
|
+
/**
|
|
58714
|
+
* Broadcasts changes if separator aria-valuenow was altered.
|
|
58715
|
+
*/
|
|
58716
|
+
var useValueNowEffect = function (setValueNow, separator) {
|
|
58714
58717
|
React.useEffect(function () {
|
|
58715
58718
|
var observer = new MutationObserver(function (_a) {
|
|
58716
58719
|
var target = _a[0].target;
|
|
@@ -58725,6 +58728,36 @@ var useValueSeparator = function (_a) {
|
|
|
58725
58728
|
observer.observe(separator.current, { attributeFilter: attributeFilter });
|
|
58726
58729
|
return function () { return observer.disconnect(); };
|
|
58727
58730
|
}, [separator, setValueNow]);
|
|
58731
|
+
};
|
|
58732
|
+
/**
|
|
58733
|
+
* Calls setValueNow when the separator attributes change.
|
|
58734
|
+
*/
|
|
58735
|
+
var useValueSeparatorEffects = function (setValueNow, separator, ratio) {
|
|
58736
|
+
useRatioEffect(setValueNow, ratio);
|
|
58737
|
+
useConfigEffect(setValueNow, separator);
|
|
58738
|
+
useValueNowEffect(setValueNow, separator);
|
|
58739
|
+
};
|
|
58740
|
+
|
|
58741
|
+
/**
|
|
58742
|
+
* Ensures valueNow is set to a valid value within its allowed boundaries.
|
|
58743
|
+
* If boundaries and/or initialRatio are not specified, they will be defaulted.
|
|
58744
|
+
* It's possible that multiple events trigger setValueNow simultaneosly with the same value.
|
|
58745
|
+
* This multiple calls are expected, and setValueNow will resize only once.
|
|
58746
|
+
*/
|
|
58747
|
+
var useValueSeparator = function (_a) {
|
|
58748
|
+
var separator = _a.separator, ratio = _a.ratio, onResized = _a.onResized, _b = _a.boundaries, min = _b.min, max = _b.max;
|
|
58749
|
+
var prev = React.useRef(null);
|
|
58750
|
+
var setValueNow = React.useCallback(function (val) {
|
|
58751
|
+
var valueNow = getSeparatorAttributes({ ref: separator }).valueNow;
|
|
58752
|
+
var value = val !== null && val !== void 0 ? val : (valueNow || min + (max - min) / 2);
|
|
58753
|
+
var newValue = clampSeparator({ value: value, max: max, min: min });
|
|
58754
|
+
resize(separator, newValue);
|
|
58755
|
+
if (prev.current !== newValue) {
|
|
58756
|
+
prev.current = newValue;
|
|
58757
|
+
onResized === null || onResized === void 0 ? void 0 : onResized(newValue);
|
|
58758
|
+
}
|
|
58759
|
+
}, [onResized, min, max, prev]);
|
|
58760
|
+
useValueSeparatorEffects(setValueNow, separator, ratio);
|
|
58728
58761
|
return { setValueNow: setValueNow };
|
|
58729
58762
|
};
|
|
58730
58763
|
var resize = function (separator, value) {
|