@reactuses/core 2.2.9 → 3.0.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.cjs CHANGED
@@ -2974,18 +2974,19 @@ function getTargetElement(target, defaultElement) {
2974
2974
  return targetElement;
2975
2975
  }
2976
2976
  function useLatestElement(target, defaultElement) {
2977
- const ref = React.useRef(getTargetElement(target, defaultElement));
2977
+ const [latestElement, setLatestElement] = React.useState(
2978
+ getTargetElement(target, defaultElement)
2979
+ );
2978
2980
  React.useEffect(() => {
2979
- ref.current = getTargetElement(target, defaultElement);
2980
- });
2981
- return ref;
2981
+ setLatestElement(getTargetElement(target, defaultElement));
2982
+ }, [target, defaultElement]);
2983
+ return latestElement;
2982
2984
  }
2983
2985
 
2984
2986
  function useEventListener(eventName, handler, element, options) {
2985
2987
  const savedHandler = useLatest(handler);
2986
- const targetElementRef = useLatestElement(element, defaultWindow);
2988
+ const targetElement = useLatestElement(element, defaultWindow);
2987
2989
  useDeepCompareEffect(() => {
2988
- const targetElement = targetElementRef.current;
2989
2990
  if (!(targetElement && targetElement.addEventListener)) {
2990
2991
  return;
2991
2992
  }
@@ -2997,7 +2998,7 @@ function useEventListener(eventName, handler, element, options) {
2997
2998
  }
2998
2999
  off(targetElement, eventName, eventListener);
2999
3000
  };
3000
- }, [eventName, targetElementRef.current, options, savedHandler]);
3001
+ }, [eventName, targetElement, options, savedHandler]);
3001
3002
  }
3002
3003
 
3003
3004
  function useCounter(initialValue = 0, max = null, min = null) {
@@ -3149,13 +3150,13 @@ function useMutationObserver(callback, target, options = {}) {
3149
3150
  }
3150
3151
  }, []);
3151
3152
  useDeepCompareEffect(() => {
3152
- if (!element.current) {
3153
+ if (!element) {
3153
3154
  return;
3154
3155
  }
3155
3156
  observerRef.current = new MutationObserver(callbackRef.current);
3156
- observerRef.current.observe(element.current, options);
3157
+ observerRef.current.observe(element, options);
3157
3158
  return stop;
3158
- }, [options, element.current]);
3159
+ }, [options, element]);
3159
3160
  return stop;
3160
3161
  }
3161
3162
 
@@ -3939,16 +3940,16 @@ function useIntersectionObserver(target, callback, options = {}) {
3939
3940
  }
3940
3941
  }, []);
3941
3942
  useDeepCompareEffect(() => {
3942
- if (!element.current) {
3943
+ if (!element) {
3943
3944
  return;
3944
3945
  }
3945
3946
  observerRef.current = new IntersectionObserver(
3946
3947
  savedCallback.current,
3947
3948
  options
3948
3949
  );
3949
- observerRef.current.observe(element.current);
3950
+ observerRef.current.observe(element);
3950
3951
  return stop;
3951
- }, [options, element.current]);
3952
+ }, [options, element]);
3952
3953
  return stop;
3953
3954
  }
3954
3955
 
@@ -3995,13 +3996,13 @@ function useResizeObserver(target, callback, options = {}) {
3995
3996
  }
3996
3997
  }, []);
3997
3998
  useDeepCompareEffect(() => {
3998
- if (!element.current) {
3999
+ if (!element) {
3999
4000
  return;
4000
4001
  }
4001
4002
  observerRef.current = new ResizeObserver(savedCallback.current);
4002
- observerRef.current.observe(element.current, options);
4003
+ observerRef.current.observe(element, options);
4003
4004
  return stop;
4004
- }, [options, element.current]);
4005
+ }, [options, element]);
4005
4006
  return stop;
4006
4007
  }
4007
4008
 
@@ -4231,16 +4232,16 @@ function useInfiniteScroll(target, onLoadMore, options = {}) {
4231
4232
  useUpdateEffect(() => {
4232
4233
  const opts = latestOptions.current;
4233
4234
  const fn = () => __async$3(this, null, function* () {
4234
- var _a2, _b2, _c, _d;
4235
+ var _a2, _b2;
4235
4236
  const previous = {
4236
- height: (_b2 = (_a2 = element.current) == null ? void 0 : _a2.scrollHeight) != null ? _b2 : 0,
4237
- width: (_d = (_c = element.current) == null ? void 0 : _c.scrollWidth) != null ? _d : 0
4237
+ height: (_a2 = element == null ? void 0 : element.scrollHeight) != null ? _a2 : 0,
4238
+ width: (_b2 = element == null ? void 0 : element.scrollWidth) != null ? _b2 : 0
4238
4239
  };
4239
4240
  yield savedLoadMore.current(state);
4240
- if (opts.preserveScrollPosition && element.current) {
4241
- element.current.scrollTo({
4242
- top: element.current.scrollHeight - previous.height,
4243
- left: element.current.scrollWidth - previous.width
4241
+ if (opts.preserveScrollPosition && element) {
4242
+ element.scrollTo({
4243
+ top: element.scrollHeight - previous.height,
4244
+ left: element.scrollWidth - previous.width
4244
4245
  });
4245
4246
  }
4246
4247
  });
@@ -4282,7 +4283,7 @@ function useMousePressed(target, options = {}) {
4282
4283
  const { touch = true, drag = true, initialValue = false } = options;
4283
4284
  const [pressed, setPressed] = React.useState(initialValue);
4284
4285
  const [sourceType, setSourceType] = React.useState(null);
4285
- const elementRef = useLatestElement(target);
4286
+ const element = useLatestElement(target);
4286
4287
  const onPressed = React.useCallback(
4287
4288
  (srcType) => () => {
4288
4289
  setPressed(true);
@@ -4298,7 +4299,6 @@ function useMousePressed(target, options = {}) {
4298
4299
  useEventListener("mouseleave", onReleased, () => window, { passive: true });
4299
4300
  useEventListener("mouseup", onReleased, () => window, { passive: true });
4300
4301
  React.useEffect(() => {
4301
- const element = elementRef.current;
4302
4302
  if (drag) {
4303
4303
  element == null ? void 0 : element.addEventListener("dragstart", onPressed("mouse"), {
4304
4304
  passive: true
@@ -4333,7 +4333,7 @@ function useMousePressed(target, options = {}) {
4333
4333
  element == null ? void 0 : element.removeEventListener("touchcancel", onReleased);
4334
4334
  }
4335
4335
  };
4336
- }, [drag, onPressed, onReleased, touch, elementRef.current]);
4336
+ }, [drag, onPressed, onReleased, touch, element]);
4337
4337
  return [pressed, sourceType];
4338
4338
  }
4339
4339
 
@@ -4352,32 +4352,32 @@ function useScrollLock(target, initialState = false) {
4352
4352
  const initialOverflowRef = React.useRef("scroll");
4353
4353
  const element = useLatestElement(target);
4354
4354
  React.useEffect(() => {
4355
- if (element.current) {
4356
- initialOverflowRef.current = element.current.style.overflow;
4355
+ if (element) {
4356
+ initialOverflowRef.current = element.style.overflow;
4357
4357
  if (locked) {
4358
- element.current.style.overflow = "hidden";
4358
+ element.style.overflow = "hidden";
4359
4359
  }
4360
4360
  }
4361
- }, [locked, element.current]);
4361
+ }, [locked, element]);
4362
4362
  const lock = useEvent(() => {
4363
- if (!element.current || locked) {
4363
+ if (!element || locked) {
4364
4364
  return;
4365
4365
  }
4366
4366
  if (isIOS) {
4367
- element.current.addEventListener("touchmove", preventDefault, {
4367
+ element.addEventListener("touchmove", preventDefault, {
4368
4368
  passive: false
4369
4369
  });
4370
4370
  }
4371
4371
  setLocked(true);
4372
4372
  });
4373
4373
  const unlock = useEvent(() => {
4374
- if (!element.current || !locked) {
4374
+ if (!element || !locked) {
4375
4375
  return;
4376
4376
  }
4377
4377
  if (isIOS) {
4378
- element.current.removeEventListener("touchmove", preventDefault);
4378
+ element.removeEventListener("touchmove", preventDefault);
4379
4379
  }
4380
- element.current.style.overflow = initialOverflowRef.current;
4380
+ element.style.overflow = initialOverflowRef.current;
4381
4381
  setLocked(false);
4382
4382
  });
4383
4383
  const set = useEvent((flag) => {
@@ -4817,11 +4817,11 @@ function useClickOutSide(target, handler) {
4817
4817
  const savedHandler = useLatest(handler);
4818
4818
  const element = useLatestElement(target);
4819
4819
  const listener = (event) => {
4820
- if (!element.current) {
4820
+ if (!element) {
4821
4821
  return;
4822
4822
  }
4823
4823
  const elements = event.composedPath();
4824
- if (element.current === event.target || elements.includes(element.current)) {
4824
+ if (element === event.target || elements.includes(element)) {
4825
4825
  return;
4826
4826
  }
4827
4827
  savedHandler.current(event);
@@ -5066,7 +5066,7 @@ function useScrollIntoView({
5066
5066
  const scrollIntoView = useEvent(
5067
5067
  ({ alignment = "start" } = {}) => {
5068
5068
  var _a;
5069
- const parent = getTargetElement(scrollElement) || getScrollParent(axis, element.current);
5069
+ const parent = getTargetElement(scrollElement) || getScrollParent(axis, element);
5070
5070
  shouldStop.current = false;
5071
5071
  if (frameID.current) {
5072
5072
  cancel();
@@ -5074,7 +5074,7 @@ function useScrollIntoView({
5074
5074
  const start = (_a = getScrollStart({ parent, axis })) != null ? _a : 0;
5075
5075
  const change = getRelativePosition({
5076
5076
  parent,
5077
- target: element.current,
5077
+ target: element,
5078
5078
  axis,
5079
5079
  alignment,
5080
5080
  offset,
@@ -5128,10 +5128,10 @@ const useSticky = ({
5128
5128
  const [isSticky, setSticky] = React.useState(false);
5129
5129
  const element = useLatestElement(targetElement);
5130
5130
  const { run: scrollHandler } = useThrottleFn(() => {
5131
- if (!element.current) {
5131
+ if (!element) {
5132
5132
  return;
5133
5133
  }
5134
- const rect = element.current.getBoundingClientRect();
5134
+ const rect = element.getBoundingClientRect();
5135
5135
  if (axis === "y") {
5136
5136
  setSticky((rect == null ? void 0 : rect.top) <= nav);
5137
5137
  } else {
@@ -5139,8 +5139,8 @@ const useSticky = ({
5139
5139
  }
5140
5140
  }, 50);
5141
5141
  React.useEffect(() => {
5142
- const scrollParent = getTargetElement(scrollElement) || getScrollParent(axis, element.current);
5143
- if (!element.current || !scrollParent) {
5142
+ const scrollParent = getTargetElement(scrollElement) || getScrollParent(axis, element);
5143
+ if (!element || !scrollParent) {
5144
5144
  return;
5145
5145
  }
5146
5146
  scrollParent.addEventListener("scroll", scrollHandler);
package/dist/index.mjs CHANGED
@@ -2966,18 +2966,19 @@ function getTargetElement(target, defaultElement) {
2966
2966
  return targetElement;
2967
2967
  }
2968
2968
  function useLatestElement(target, defaultElement) {
2969
- const ref = useRef(getTargetElement(target, defaultElement));
2969
+ const [latestElement, setLatestElement] = useState(
2970
+ getTargetElement(target, defaultElement)
2971
+ );
2970
2972
  useEffect(() => {
2971
- ref.current = getTargetElement(target, defaultElement);
2972
- });
2973
- return ref;
2973
+ setLatestElement(getTargetElement(target, defaultElement));
2974
+ }, [target, defaultElement]);
2975
+ return latestElement;
2974
2976
  }
2975
2977
 
2976
2978
  function useEventListener(eventName, handler, element, options) {
2977
2979
  const savedHandler = useLatest(handler);
2978
- const targetElementRef = useLatestElement(element, defaultWindow);
2980
+ const targetElement = useLatestElement(element, defaultWindow);
2979
2981
  useDeepCompareEffect(() => {
2980
- const targetElement = targetElementRef.current;
2981
2982
  if (!(targetElement && targetElement.addEventListener)) {
2982
2983
  return;
2983
2984
  }
@@ -2989,7 +2990,7 @@ function useEventListener(eventName, handler, element, options) {
2989
2990
  }
2990
2991
  off(targetElement, eventName, eventListener);
2991
2992
  };
2992
- }, [eventName, targetElementRef.current, options, savedHandler]);
2993
+ }, [eventName, targetElement, options, savedHandler]);
2993
2994
  }
2994
2995
 
2995
2996
  function useCounter(initialValue = 0, max = null, min = null) {
@@ -3141,13 +3142,13 @@ function useMutationObserver(callback, target, options = {}) {
3141
3142
  }
3142
3143
  }, []);
3143
3144
  useDeepCompareEffect(() => {
3144
- if (!element.current) {
3145
+ if (!element) {
3145
3146
  return;
3146
3147
  }
3147
3148
  observerRef.current = new MutationObserver(callbackRef.current);
3148
- observerRef.current.observe(element.current, options);
3149
+ observerRef.current.observe(element, options);
3149
3150
  return stop;
3150
- }, [options, element.current]);
3151
+ }, [options, element]);
3151
3152
  return stop;
3152
3153
  }
3153
3154
 
@@ -3931,16 +3932,16 @@ function useIntersectionObserver(target, callback, options = {}) {
3931
3932
  }
3932
3933
  }, []);
3933
3934
  useDeepCompareEffect(() => {
3934
- if (!element.current) {
3935
+ if (!element) {
3935
3936
  return;
3936
3937
  }
3937
3938
  observerRef.current = new IntersectionObserver(
3938
3939
  savedCallback.current,
3939
3940
  options
3940
3941
  );
3941
- observerRef.current.observe(element.current);
3942
+ observerRef.current.observe(element);
3942
3943
  return stop;
3943
- }, [options, element.current]);
3944
+ }, [options, element]);
3944
3945
  return stop;
3945
3946
  }
3946
3947
 
@@ -3987,13 +3988,13 @@ function useResizeObserver(target, callback, options = {}) {
3987
3988
  }
3988
3989
  }, []);
3989
3990
  useDeepCompareEffect(() => {
3990
- if (!element.current) {
3991
+ if (!element) {
3991
3992
  return;
3992
3993
  }
3993
3994
  observerRef.current = new ResizeObserver(savedCallback.current);
3994
- observerRef.current.observe(element.current, options);
3995
+ observerRef.current.observe(element, options);
3995
3996
  return stop;
3996
- }, [options, element.current]);
3997
+ }, [options, element]);
3997
3998
  return stop;
3998
3999
  }
3999
4000
 
@@ -4223,16 +4224,16 @@ function useInfiniteScroll(target, onLoadMore, options = {}) {
4223
4224
  useUpdateEffect(() => {
4224
4225
  const opts = latestOptions.current;
4225
4226
  const fn = () => __async$3(this, null, function* () {
4226
- var _a2, _b2, _c, _d;
4227
+ var _a2, _b2;
4227
4228
  const previous = {
4228
- height: (_b2 = (_a2 = element.current) == null ? void 0 : _a2.scrollHeight) != null ? _b2 : 0,
4229
- width: (_d = (_c = element.current) == null ? void 0 : _c.scrollWidth) != null ? _d : 0
4229
+ height: (_a2 = element == null ? void 0 : element.scrollHeight) != null ? _a2 : 0,
4230
+ width: (_b2 = element == null ? void 0 : element.scrollWidth) != null ? _b2 : 0
4230
4231
  };
4231
4232
  yield savedLoadMore.current(state);
4232
- if (opts.preserveScrollPosition && element.current) {
4233
- element.current.scrollTo({
4234
- top: element.current.scrollHeight - previous.height,
4235
- left: element.current.scrollWidth - previous.width
4233
+ if (opts.preserveScrollPosition && element) {
4234
+ element.scrollTo({
4235
+ top: element.scrollHeight - previous.height,
4236
+ left: element.scrollWidth - previous.width
4236
4237
  });
4237
4238
  }
4238
4239
  });
@@ -4274,7 +4275,7 @@ function useMousePressed(target, options = {}) {
4274
4275
  const { touch = true, drag = true, initialValue = false } = options;
4275
4276
  const [pressed, setPressed] = useState(initialValue);
4276
4277
  const [sourceType, setSourceType] = useState(null);
4277
- const elementRef = useLatestElement(target);
4278
+ const element = useLatestElement(target);
4278
4279
  const onPressed = useCallback(
4279
4280
  (srcType) => () => {
4280
4281
  setPressed(true);
@@ -4290,7 +4291,6 @@ function useMousePressed(target, options = {}) {
4290
4291
  useEventListener("mouseleave", onReleased, () => window, { passive: true });
4291
4292
  useEventListener("mouseup", onReleased, () => window, { passive: true });
4292
4293
  useEffect(() => {
4293
- const element = elementRef.current;
4294
4294
  if (drag) {
4295
4295
  element == null ? void 0 : element.addEventListener("dragstart", onPressed("mouse"), {
4296
4296
  passive: true
@@ -4325,7 +4325,7 @@ function useMousePressed(target, options = {}) {
4325
4325
  element == null ? void 0 : element.removeEventListener("touchcancel", onReleased);
4326
4326
  }
4327
4327
  };
4328
- }, [drag, onPressed, onReleased, touch, elementRef.current]);
4328
+ }, [drag, onPressed, onReleased, touch, element]);
4329
4329
  return [pressed, sourceType];
4330
4330
  }
4331
4331
 
@@ -4344,32 +4344,32 @@ function useScrollLock(target, initialState = false) {
4344
4344
  const initialOverflowRef = useRef("scroll");
4345
4345
  const element = useLatestElement(target);
4346
4346
  useEffect(() => {
4347
- if (element.current) {
4348
- initialOverflowRef.current = element.current.style.overflow;
4347
+ if (element) {
4348
+ initialOverflowRef.current = element.style.overflow;
4349
4349
  if (locked) {
4350
- element.current.style.overflow = "hidden";
4350
+ element.style.overflow = "hidden";
4351
4351
  }
4352
4352
  }
4353
- }, [locked, element.current]);
4353
+ }, [locked, element]);
4354
4354
  const lock = useEvent(() => {
4355
- if (!element.current || locked) {
4355
+ if (!element || locked) {
4356
4356
  return;
4357
4357
  }
4358
4358
  if (isIOS) {
4359
- element.current.addEventListener("touchmove", preventDefault, {
4359
+ element.addEventListener("touchmove", preventDefault, {
4360
4360
  passive: false
4361
4361
  });
4362
4362
  }
4363
4363
  setLocked(true);
4364
4364
  });
4365
4365
  const unlock = useEvent(() => {
4366
- if (!element.current || !locked) {
4366
+ if (!element || !locked) {
4367
4367
  return;
4368
4368
  }
4369
4369
  if (isIOS) {
4370
- element.current.removeEventListener("touchmove", preventDefault);
4370
+ element.removeEventListener("touchmove", preventDefault);
4371
4371
  }
4372
- element.current.style.overflow = initialOverflowRef.current;
4372
+ element.style.overflow = initialOverflowRef.current;
4373
4373
  setLocked(false);
4374
4374
  });
4375
4375
  const set = useEvent((flag) => {
@@ -4809,11 +4809,11 @@ function useClickOutSide(target, handler) {
4809
4809
  const savedHandler = useLatest(handler);
4810
4810
  const element = useLatestElement(target);
4811
4811
  const listener = (event) => {
4812
- if (!element.current) {
4812
+ if (!element) {
4813
4813
  return;
4814
4814
  }
4815
4815
  const elements = event.composedPath();
4816
- if (element.current === event.target || elements.includes(element.current)) {
4816
+ if (element === event.target || elements.includes(element)) {
4817
4817
  return;
4818
4818
  }
4819
4819
  savedHandler.current(event);
@@ -5058,7 +5058,7 @@ function useScrollIntoView({
5058
5058
  const scrollIntoView = useEvent(
5059
5059
  ({ alignment = "start" } = {}) => {
5060
5060
  var _a;
5061
- const parent = getTargetElement(scrollElement) || getScrollParent(axis, element.current);
5061
+ const parent = getTargetElement(scrollElement) || getScrollParent(axis, element);
5062
5062
  shouldStop.current = false;
5063
5063
  if (frameID.current) {
5064
5064
  cancel();
@@ -5066,7 +5066,7 @@ function useScrollIntoView({
5066
5066
  const start = (_a = getScrollStart({ parent, axis })) != null ? _a : 0;
5067
5067
  const change = getRelativePosition({
5068
5068
  parent,
5069
- target: element.current,
5069
+ target: element,
5070
5070
  axis,
5071
5071
  alignment,
5072
5072
  offset,
@@ -5120,10 +5120,10 @@ const useSticky = ({
5120
5120
  const [isSticky, setSticky] = useState(false);
5121
5121
  const element = useLatestElement(targetElement);
5122
5122
  const { run: scrollHandler } = useThrottleFn(() => {
5123
- if (!element.current) {
5123
+ if (!element) {
5124
5124
  return;
5125
5125
  }
5126
- const rect = element.current.getBoundingClientRect();
5126
+ const rect = element.getBoundingClientRect();
5127
5127
  if (axis === "y") {
5128
5128
  setSticky((rect == null ? void 0 : rect.top) <= nav);
5129
5129
  } else {
@@ -5131,8 +5131,8 @@ const useSticky = ({
5131
5131
  }
5132
5132
  }, 50);
5133
5133
  useEffect(() => {
5134
- const scrollParent = getTargetElement(scrollElement) || getScrollParent(axis, element.current);
5135
- if (!element.current || !scrollParent) {
5134
+ const scrollParent = getTargetElement(scrollElement) || getScrollParent(axis, element);
5135
+ if (!element || !scrollParent) {
5136
5136
  return;
5137
5137
  }
5138
5138
  scrollParent.addEventListener("scroll", scrollHandler);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reactuses/core",
3
- "version": "2.2.9",
3
+ "version": "3.0.0",
4
4
  "license": "Unlicense",
5
5
  "homepage": "https://www.reactuse.com/",
6
6
  "repository": {