@wordpress/block-editor
Version:
44 lines (42 loc) • 1.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useScrollIntoView = useScrollIntoView;
var _compose = require("@wordpress/compose");
/**
* WordPress dependencies
*/
function useScrollIntoView({
isSelected
}) {
const prefersReducedMotion = (0, _compose.useReducedMotion)();
return (0, _compose.useRefEffect)(node => {
if (isSelected) {
const {
ownerDocument
} = node;
const {
defaultView
} = ownerDocument;
if (!defaultView.IntersectionObserver) {
return;
}
const observer = new defaultView.IntersectionObserver(entries => {
// Once observing starts, we always get an initial
// entry with the intersecting state.
if (!entries[0].isIntersecting) {
node.scrollIntoView({
behavior: prefersReducedMotion ? 'instant' : 'smooth'
});
}
observer.disconnect();
});
observer.observe(node);
return () => {
observer.disconnect();
};
}
}, [isSelected]);
}
//# sourceMappingURL=use-scroll-into-view.js.map
;