UNPKG

@wordpress/block-editor

Version:
57 lines (47 loc) 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useIsHovered = useIsHovered; var _data = require("@wordpress/data"); var _compose = require("@wordpress/compose"); var _store = require("../../../store"); /** * WordPress dependencies */ /** * Internal dependencies */ function listener(event) { if (event.defaultPrevented) { return; } const action = event.type === 'mouseover' ? 'add' : 'remove'; event.preventDefault(); event.currentTarget.classList[action]('is-hovered'); } /** * Adds `is-hovered` class when the block is hovered and in navigation or * outline mode. */ function useIsHovered() { const isEnabled = (0, _data.useSelect)(select => { const { isNavigationMode, getSettings } = select(_store.store); return isNavigationMode() || getSettings().outlineMode; }, []); return (0, _compose.useRefEffect)(node => { if (isEnabled) { node.addEventListener('mouseout', listener); node.addEventListener('mouseover', listener); return () => { node.removeEventListener('mouseout', listener); node.removeEventListener('mouseover', listener); // Remove class in case it lingers. node.classList.remove('is-hovered'); }; } }, [isEnabled]); } //# sourceMappingURL=use-is-hovered.js.map