Move useResizeObserver into features/preview (#5188)
GitOrigin-RevId: c12dfc30b07e4a214990b7e80ce11364edb6137a
This commit is contained in:
@@ -4,7 +4,7 @@ import classNames from 'classnames'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { OverlayTrigger, Tooltip } from 'react-bootstrap'
|
||||
import useExpandCollapse from '../../../shared/hooks/use-expand-collapse'
|
||||
import useResizeObserver from '../../../shared/hooks/use-resize-observer'
|
||||
import useResizeObserver from '../hooks/use-resize-observer'
|
||||
import Icon from '../../../shared/components/icon'
|
||||
|
||||
function PreviewLogsPaneEntry({
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'
|
||||
import PreviewDownloadButton from './preview-download-button'
|
||||
import PreviewRecompileButton from './preview-recompile-button'
|
||||
import PreviewLogsToggleButton from './preview-logs-toggle-button'
|
||||
import useResizeObserver from '../../../shared/hooks/use-resize-observer'
|
||||
import useResizeObserver from '../hooks/use-resize-observer'
|
||||
import Icon from '../../../shared/components/icon'
|
||||
|
||||
function _getElementWidth(element) {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { useLayoutEffect, useRef, useCallback } from 'react'
|
||||
|
||||
function useResizeObserver(observedElement, observedData, callback) {
|
||||
const resizeObserver = useRef()
|
||||
|
||||
const observe = useCallback(() => {
|
||||
resizeObserver.current = new ResizeObserver(function (elementsObserved) {
|
||||
callback(elementsObserved[0])
|
||||
})
|
||||
}, [callback])
|
||||
|
||||
function unobserve(observedCurrent) {
|
||||
resizeObserver.current.unobserve(observedCurrent)
|
||||
}
|
||||
|
||||
useLayoutEffect(() => {
|
||||
if ('ResizeObserver' in window) {
|
||||
const observedCurrent = observedElement && observedElement.current
|
||||
if (observedCurrent) {
|
||||
observe(observedElement.current)
|
||||
}
|
||||
|
||||
if (resizeObserver.current && observedCurrent) {
|
||||
resizeObserver.current.observe(observedCurrent)
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (observedCurrent) {
|
||||
unobserve(observedCurrent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [observedElement, observedData, observe])
|
||||
}
|
||||
|
||||
export default useResizeObserver
|
||||
Reference in New Issue
Block a user