@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.
- package/dist/development/hooks/useAutoHeightTextArea.js +41 -0
- package/dist/development/hooks/useAutoHeightTextArea.js.map +1 -0
- package/dist/development/hooks/useExpectSameValueReference.js +1 -1
- package/dist/development/hooks/useExpectSameValueReference.js.map +1 -1
- package/dist/development/hooks/useId.js +2 -2
- package/dist/development/hooks/useId.js.map +1 -1
- package/dist/development/hooks/useOnElementClickOutsideCallback.js +20 -0
- package/dist/development/hooks/useOnElementClickOutsideCallback.js.map +1 -0
- package/dist/development/hooks/useOnElementMouseEnterDelayedCallback.js +33 -0
- package/dist/development/hooks/useOnElementMouseEnterDelayedCallback.js.map +1 -0
- package/dist/development/hooks/useOnElementMutation.js +1 -1
- package/dist/development/hooks/useOnElementMutation.js.map +1 -1
- package/dist/development/hooks/useOnElementResize.js +28 -26
- package/dist/development/hooks/useOnElementResize.js.map +1 -1
- package/dist/development/hooks/useOnScrollWithin.js +33 -31
- package/dist/development/hooks/useOnScrollWithin.js.map +1 -1
- package/dist/development/index.js +6 -0
- package/dist/development/index.js.map +1 -1
- package/dist/production/hooks/useAutoHeightTextArea.js +41 -0
- package/dist/production/hooks/useAutoHeightTextArea.js.map +1 -0
- package/dist/production/hooks/useExpectSameValueReference.js +1 -1
- package/dist/production/hooks/useExpectSameValueReference.js.map +1 -1
- package/dist/production/hooks/useId.js +2 -2
- package/dist/production/hooks/useId.js.map +1 -1
- package/dist/production/hooks/useOnElementClickOutsideCallback.js +20 -0
- package/dist/production/hooks/useOnElementClickOutsideCallback.js.map +1 -0
- package/dist/production/hooks/useOnElementMouseEnterDelayedCallback.js +33 -0
- package/dist/production/hooks/useOnElementMouseEnterDelayedCallback.js.map +1 -0
- package/dist/production/hooks/useOnElementMutation.js +1 -1
- package/dist/production/hooks/useOnElementMutation.js.map +1 -1
- package/dist/production/hooks/useOnElementResize.js +28 -26
- package/dist/production/hooks/useOnElementResize.js.map +1 -1
- package/dist/production/hooks/useOnScrollWithin.js +33 -31
- package/dist/production/hooks/useOnScrollWithin.js.map +1 -1
- package/dist/production/index.js +6 -0
- package/dist/production/index.js.map +1 -1
- package/dist/types/hooks/index.d.ts +3 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useAutoHeightTextArea.d.ts +3 -0
- package/dist/types/hooks/useAutoHeightTextArea.d.ts.map +1 -0
- package/dist/types/hooks/useOnElementClickOutsideCallback.d.ts +3 -0
- package/dist/types/hooks/useOnElementClickOutsideCallback.d.ts.map +1 -0
- package/dist/types/hooks/useOnElementMouseEnterDelayedCallback.d.ts +14 -0
- package/dist/types/hooks/useOnElementMouseEnterDelayedCallback.d.ts.map +1 -0
- package/dist/types/hooks/useOnElementResize.d.ts.map +1 -1
- package/dist/types/hooks/useOnScrollWithin.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useAutoHeightTextArea.ts +51 -0
- package/src/hooks/useExpectSameValueReference.ts +1 -1
- package/src/hooks/useId.ts +2 -2
- package/src/hooks/useOnElementClickOutsideCallback.ts +23 -0
- package/src/hooks/useOnElementMouseEnterDelayedCallback.ts +54 -0
- package/src/hooks/useOnElementMutation.ts +1 -1
- package/src/hooks/useOnElementResize.ts +34 -31
- 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
|
-
|
|
28
|
-
|
|
27
|
+
if (element) {
|
|
28
|
+
function debouncedHandler(event: Event) {
|
|
29
|
+
clearTimeout(timeoutID)
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const delta = event.timeStamp - lastTimeStamp.current
|
|
32
|
+
scopedConsoleRef.current.logged('event:element.scroll:delta', delta)
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
59
|
-
|
|
59
|
+
return () => {
|
|
60
|
+
element.removeEventListener('scroll', debouncedHandler)
|
|
61
|
+
}
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
} else
|
|
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
|
}
|