@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/dist/lui.esm.js CHANGED
@@ -58651,25 +58651,23 @@ var animateSeparator = function (separatorRef, animate) {
58651
58651
  };
58652
58652
 
58653
58653
  /**
58654
- * Ensures valueNow is set to a valid value within its allowed boundaries.
58655
- * If boundaries and/or initialRatio are not specified, they will be defaulted.
58654
+ * Moves separator as per ratio changes. Centers on first render if ratio is undefined.
58656
58655
  */
58657
- var useValueSeparator = function (_a) {
58658
- var separator = _a.separator, ratio = _a.ratio, onResized = _a.onResized, _b = _a.boundaries, min = _b.min, max = _b.max;
58659
- var prev = useRef();
58660
- var setValueNow = useCallback(function (val) {
58661
- var valueNow = getSeparatorAttributes({ ref: separator }).valueNow;
58662
- var value = val !== null && val !== void 0 ? val : (valueNow || min + (max - min) / 2);
58663
- var newValue = clampSeparator({ value: value, max: max, min: min });
58664
- resize(separator, newValue);
58665
- if (prev.current !== newValue) {
58666
- prev.current = newValue;
58667
- onResized === null || onResized === void 0 ? void 0 : onResized(newValue);
58668
- }
58669
- }, [onResized, min, max, prev]);
58656
+ var useRatioEffect = function (setValueNow, ratio) {
58657
+ var firstRun = useRef(true);
58670
58658
  useEffect(function () {
58671
- setValueNow(ratio);
58672
- }, [setValueNow, ratio]);
58659
+ if (firstRun.current || ratio !== undefined) {
58660
+ firstRun.current = false;
58661
+ // If ratio is undefined, setValueNow will place the separator in the middle as a starting point.
58662
+ // Whatever value is `the middle` will be determined by setValueNow
58663
+ setValueNow(ratio);
58664
+ }
58665
+ }, [setValueNow, ratio, firstRun]);
58666
+ };
58667
+ /**
58668
+ * Re-arranges the splitter if the limits or orientation change.
58669
+ */
58670
+ var useConfigEffect = function (setValueNow, separator) {
58673
58671
  useEffect(function () {
58674
58672
  var callback = function () {
58675
58673
  var value = getSeparatorAttributes({ ref: separator }).valueNow;
@@ -58682,6 +58680,11 @@ var useValueSeparator = function (_a) {
58682
58680
  });
58683
58681
  return function () { return observer.disconnect(); };
58684
58682
  }, [separator, setValueNow]);
58683
+ };
58684
+ /**
58685
+ * Broadcasts changes if separator aria-valuenow was altered.
58686
+ */
58687
+ var useValueNowEffect = function (setValueNow, separator) {
58685
58688
  useEffect(function () {
58686
58689
  var observer = new MutationObserver(function (_a) {
58687
58690
  var target = _a[0].target;
@@ -58696,6 +58699,36 @@ var useValueSeparator = function (_a) {
58696
58699
  observer.observe(separator.current, { attributeFilter: attributeFilter });
58697
58700
  return function () { return observer.disconnect(); };
58698
58701
  }, [separator, setValueNow]);
58702
+ };
58703
+ /**
58704
+ * Calls setValueNow when the separator attributes change.
58705
+ */
58706
+ var useValueSeparatorEffects = function (setValueNow, separator, ratio) {
58707
+ useRatioEffect(setValueNow, ratio);
58708
+ useConfigEffect(setValueNow, separator);
58709
+ useValueNowEffect(setValueNow, separator);
58710
+ };
58711
+
58712
+ /**
58713
+ * Ensures valueNow is set to a valid value within its allowed boundaries.
58714
+ * If boundaries and/or initialRatio are not specified, they will be defaulted.
58715
+ * It's possible that multiple events trigger setValueNow simultaneosly with the same value.
58716
+ * This multiple calls are expected, and setValueNow will resize only once.
58717
+ */
58718
+ var useValueSeparator = function (_a) {
58719
+ var separator = _a.separator, ratio = _a.ratio, onResized = _a.onResized, _b = _a.boundaries, min = _b.min, max = _b.max;
58720
+ var prev = useRef(null);
58721
+ var setValueNow = useCallback(function (val) {
58722
+ var valueNow = getSeparatorAttributes({ ref: separator }).valueNow;
58723
+ var value = val !== null && val !== void 0 ? val : (valueNow || min + (max - min) / 2);
58724
+ var newValue = clampSeparator({ value: value, max: max, min: min });
58725
+ resize(separator, newValue);
58726
+ if (prev.current !== newValue) {
58727
+ prev.current = newValue;
58728
+ onResized === null || onResized === void 0 ? void 0 : onResized(newValue);
58729
+ }
58730
+ }, [onResized, min, max, prev]);
58731
+ useValueSeparatorEffects(setValueNow, separator, ratio);
58699
58732
  return { setValueNow: setValueNow };
58700
58733
  };
58701
58734
  var resize = function (separator, value) {