@contember/react-utils 1.2.0-rc.16 → 1.2.0-rc.18

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 (57) hide show
  1. package/dist/development/hooks/useAutoHeightTextArea.js +41 -0
  2. package/dist/development/hooks/useAutoHeightTextArea.js.map +1 -0
  3. package/dist/development/hooks/useExpectSameValueReference.js +1 -1
  4. package/dist/development/hooks/useExpectSameValueReference.js.map +1 -1
  5. package/dist/development/hooks/useId.js +2 -2
  6. package/dist/development/hooks/useId.js.map +1 -1
  7. package/dist/development/hooks/useOnElementClickOutsideCallback.js +20 -0
  8. package/dist/development/hooks/useOnElementClickOutsideCallback.js.map +1 -0
  9. package/dist/development/hooks/useOnElementMouseEnterDelayedCallback.js +33 -0
  10. package/dist/development/hooks/useOnElementMouseEnterDelayedCallback.js.map +1 -0
  11. package/dist/development/hooks/useOnElementMutation.js +1 -1
  12. package/dist/development/hooks/useOnElementMutation.js.map +1 -1
  13. package/dist/development/hooks/useOnElementResize.js +28 -26
  14. package/dist/development/hooks/useOnElementResize.js.map +1 -1
  15. package/dist/development/hooks/useOnScrollWithin.js +33 -31
  16. package/dist/development/hooks/useOnScrollWithin.js.map +1 -1
  17. package/dist/development/index.js +6 -0
  18. package/dist/development/index.js.map +1 -1
  19. package/dist/production/hooks/useAutoHeightTextArea.js +41 -0
  20. package/dist/production/hooks/useAutoHeightTextArea.js.map +1 -0
  21. package/dist/production/hooks/useExpectSameValueReference.js +1 -1
  22. package/dist/production/hooks/useExpectSameValueReference.js.map +1 -1
  23. package/dist/production/hooks/useId.js +2 -2
  24. package/dist/production/hooks/useId.js.map +1 -1
  25. package/dist/production/hooks/useOnElementClickOutsideCallback.js +20 -0
  26. package/dist/production/hooks/useOnElementClickOutsideCallback.js.map +1 -0
  27. package/dist/production/hooks/useOnElementMouseEnterDelayedCallback.js +33 -0
  28. package/dist/production/hooks/useOnElementMouseEnterDelayedCallback.js.map +1 -0
  29. package/dist/production/hooks/useOnElementMutation.js +1 -1
  30. package/dist/production/hooks/useOnElementMutation.js.map +1 -1
  31. package/dist/production/hooks/useOnElementResize.js +28 -26
  32. package/dist/production/hooks/useOnElementResize.js.map +1 -1
  33. package/dist/production/hooks/useOnScrollWithin.js +33 -31
  34. package/dist/production/hooks/useOnScrollWithin.js.map +1 -1
  35. package/dist/production/index.js +6 -0
  36. package/dist/production/index.js.map +1 -1
  37. package/dist/types/hooks/index.d.ts +3 -0
  38. package/dist/types/hooks/index.d.ts.map +1 -1
  39. package/dist/types/hooks/useAutoHeightTextArea.d.ts +3 -0
  40. package/dist/types/hooks/useAutoHeightTextArea.d.ts.map +1 -0
  41. package/dist/types/hooks/useOnElementClickOutsideCallback.d.ts +3 -0
  42. package/dist/types/hooks/useOnElementClickOutsideCallback.d.ts.map +1 -0
  43. package/dist/types/hooks/useOnElementMouseEnterDelayedCallback.d.ts +14 -0
  44. package/dist/types/hooks/useOnElementMouseEnterDelayedCallback.d.ts.map +1 -0
  45. package/dist/types/hooks/useOnElementResize.d.ts.map +1 -1
  46. package/dist/types/hooks/useOnScrollWithin.d.ts.map +1 -1
  47. package/dist/types/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +3 -3
  49. package/src/hooks/index.ts +3 -0
  50. package/src/hooks/useAutoHeightTextArea.ts +51 -0
  51. package/src/hooks/useExpectSameValueReference.ts +1 -1
  52. package/src/hooks/useId.ts +2 -2
  53. package/src/hooks/useOnElementClickOutsideCallback.ts +23 -0
  54. package/src/hooks/useOnElementMouseEnterDelayedCallback.ts +54 -0
  55. package/src/hooks/useOnElementMutation.ts +1 -1
  56. package/src/hooks/useOnElementResize.ts +34 -31
  57. package/src/hooks/useOnScrollWithin.ts +32 -31
@@ -19,49 +19,50 @@ export function useOnScrollWithin(
19
19
  const callbackRef = useRef(callback); callbackRef.current = callback
20
20
  const lastTimeStamp = useRef<number>(0)
21
21
 
22
- const element = unwrapRefValue(refOrElement)
23
-
24
22
  useLayoutEffect(() => {
23
+ const element = unwrapRefValue(refOrElement)
24
+
25
25
  let timeoutID: number | undefined = undefined
26
26
 
27
- function debouncedHandler(event: Event) {
28
- clearTimeout(timeoutID)
27
+ if (element) {
28
+ function debouncedHandler(event: Event) {
29
+ clearTimeout(timeoutID)
29
30
 
30
- const delta = event.timeStamp - lastTimeStamp.current
31
- scopedConsoleRef.current.logged('event:element.scroll:delta', delta)
31
+ const delta = event.timeStamp - lastTimeStamp.current
32
+ scopedConsoleRef.current.logged('event:element.scroll:delta', delta)
32
33
 
33
- if (delta > interval) {
34
- scopedConsoleRef.current.warned('event:element.scroll:immediately', event)
35
- callbackRef.current(event)
36
- lastTimeStamp.current = event.timeStamp
37
- } else {
38
- timeoutID = setTimeout(() => {
39
- scopedConsoleRef.current.warned('event:element.scroll:debounced', event)
40
- lastTimeStamp.current = event.timeStamp
34
+ if (delta > interval) {
35
+ scopedConsoleRef.current.warned('event:element.scroll:immediately', event)
41
36
  callbackRef.current(event)
42
- }, interval)
37
+ lastTimeStamp.current = event.timeStamp
38
+ } else {
39
+ timeoutID = setTimeout(() => {
40
+ scopedConsoleRef.current.warned('event:element.scroll:debounced', event)
41
+ lastTimeStamp.current = event.timeStamp
42
+ callbackRef.current(event)
43
+ }, interval)
44
+ }
43
45
  }
44
- }
45
46
 
46
- if (element && element instanceof HTMLElement) {
47
- if (element instanceof HTMLBodyElement || element instanceof HTMLHtmlElement) {
48
- window.addEventListener('scroll', debouncedHandler, { capture: true, passive: true })
49
- window.addEventListener('resize', debouncedHandler)
47
+ if (element instanceof HTMLElement) {
48
+ if (element instanceof HTMLBodyElement || element instanceof HTMLHtmlElement) {
49
+ window.addEventListener('scroll', debouncedHandler, { capture: true, passive: true })
50
+ window.addEventListener('resize', debouncedHandler)
50
51
 
51
- return () => {
52
- window.removeEventListener('scroll', debouncedHandler)
53
- window.removeEventListener('resize', debouncedHandler)
54
- }
55
- } else {
56
- element.addEventListener('scroll', debouncedHandler, { passive: true, capture: true })
52
+ return () => {
53
+ window.removeEventListener('scroll', debouncedHandler)
54
+ window.removeEventListener('resize', debouncedHandler)
55
+ }
56
+ } else {
57
+ element.addEventListener('scroll', debouncedHandler, { passive: true, capture: true })
57
58
 
58
- return () => {
59
- element.removeEventListener('scroll', debouncedHandler)
59
+ return () => {
60
+ element.removeEventListener('scroll', debouncedHandler)
61
+ }
60
62
  }
61
63
  }
62
- } else if (element) {
64
+ } else {
63
65
  throw new Error('Exhaustive error: Expecting element to be instance of HTMLElement')
64
66
  }
65
-
66
- }, [element, interval, scopedConsoleRef])
67
+ }, [interval, refOrElement, scopedConsoleRef])
67
68
  }