@wordpress/block-editor
Version:
8 lines (7 loc) • 1.8 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../src/components/block-list/use-block-props/use-is-hovered.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nfunction listener( event ) {\n\tif ( event.defaultPrevented ) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\tevent.currentTarget.classList.toggle(\n\t\t'is-hovered',\n\t\tevent.type === 'mouseover'\n\t);\n}\n\n/**\n * Adds `is-hovered` class when the block is hovered and in navigation or\n * outline mode.\n *\n * @param {Object} options Options object.\n * @param {boolean} [options.isEnabled=true] Whether to enable hover detection.\n *\n * @return {Function} Ref callback.\n */\nexport function useIsHovered( { isEnabled = true } = {} ) {\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'mouseout', listener );\n\t\t\tnode.addEventListener( 'mouseover', listener );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'mouseout', listener );\n\t\t\t\tnode.removeEventListener( 'mouseover', listener );\n\n\t\t\t\t// Remove class in case it lingers.\n\t\t\t\tnode.classList.remove( 'is-hovered' );\n\t\t\t};\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],
"mappings": ";AAGA,SAAS,oBAAoB;AAE7B,SAAS,SAAU,OAAQ;AAC1B,MAAK,MAAM,kBAAmB;AAC7B;AAAA,EACD;AAEA,QAAM,eAAe;AACrB,QAAM,cAAc,UAAU;AAAA,IAC7B;AAAA,IACA,MAAM,SAAS;AAAA,EAChB;AACD;AAWO,SAAS,aAAc,EAAE,YAAY,KAAK,IAAI,CAAC,GAAI;AACzD,SAAO;AAAA,IACN,CAAE,SAAU;AACX,UAAK,CAAE,WAAY;AAClB;AAAA,MACD;AAEA,WAAK,iBAAkB,YAAY,QAAS;AAC5C,WAAK,iBAAkB,aAAa,QAAS;AAE7C,aAAO,MAAM;AACZ,aAAK,oBAAqB,YAAY,QAAS;AAC/C,aAAK,oBAAqB,aAAa,QAAS;AAGhD,aAAK,UAAU,OAAQ,YAAa;AAAA,MACrC;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACD;",
"names": []
}