@wordpress/block-editor
Version:
8 lines (7 loc) • 2.77 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/use-flash-editable-blocks/index.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function useFlashEditableBlocks( {\n\tclientId = '',\n\tisEnabled = true,\n} = {} ) {\n\tconst { getEnabledClientIdsTree } = unlock( useSelect( blockEditorStore ) );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst flashEditableBlocks = () => {\n\t\t\t\tgetEnabledClientIdsTree( clientId ).forEach(\n\t\t\t\t\t( { clientId: id } ) => {\n\t\t\t\t\t\tconst block = element.querySelector(\n\t\t\t\t\t\t\t`[data-block=\"${ id }\"]`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( ! block ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock.classList.remove( 'has-editable-outline' );\n\t\t\t\t\t\t// Force reflow to trigger the animation.\n\t\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\t\tblock.offsetWidth;\n\t\t\t\t\t\tblock.classList.add( 'has-editable-outline' );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst handleClick = ( event ) => {\n\t\t\t\tconst shouldFlash =\n\t\t\t\t\tevent.target === element ||\n\t\t\t\t\tevent.target.classList.contains( 'is-root-container' );\n\t\t\t\tif ( ! shouldFlash ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tflashEditableBlocks();\n\t\t\t};\n\n\t\t\telement.addEventListener( 'click', handleClick );\n\t\t\treturn () => element.removeEventListener( 'click', handleClick );\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA6B;AAC7B,kBAA0B;AAK1B,mBAA0C;AAC1C,yBAAuB;AAEhB,SAAS,uBAAwB;AAAA,EACvC,WAAW;AAAA,EACX,YAAY;AACb,IAAI,CAAC,GAAI;AACR,QAAM,EAAE,wBAAwB,QAAI,+BAAQ,uBAAW,aAAAA,KAAiB,CAAE;AAE1E,aAAO;AAAA,IACN,CAAE,YAAa;AACd,UAAK,CAAE,WAAY;AAClB;AAAA,MACD;AAEA,YAAM,sBAAsB,MAAM;AACjC,gCAAyB,QAAS,EAAE;AAAA,UACnC,CAAE,EAAE,UAAU,GAAG,MAAO;AACvB,kBAAM,QAAQ,QAAQ;AAAA,cACrB,gBAAiB,EAAG;AAAA,YACrB;AACA,gBAAK,CAAE,OAAQ;AACd;AAAA,YACD;AACA,kBAAM,UAAU,OAAQ,sBAAuB;AAG/C,kBAAM;AACN,kBAAM,UAAU,IAAK,sBAAuB;AAAA,UAC7C;AAAA,QACD;AAAA,MACD;AAEA,YAAM,cAAc,CAAE,UAAW;AAChC,cAAM,cACL,MAAM,WAAW,WACjB,MAAM,OAAO,UAAU,SAAU,mBAAoB;AACtD,YAAK,CAAE,aAAc;AACpB;AAAA,QACD;AACA,YAAK,MAAM,kBAAmB;AAC7B;AAAA,QACD;AACA,cAAM,eAAe;AACrB,4BAAoB;AAAA,MACrB;AAEA,cAAQ,iBAAkB,SAAS,WAAY;AAC/C,aAAO,MAAM,QAAQ,oBAAqB,SAAS,WAAY;AAAA,IAChE;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACD;",
"names": ["blockEditorStore"]
}