UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.39 kB
{ "version": 3, "sources": ["../../../src/components/block-visibility/menu-item.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { seen, unseen } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockVisibilityMenuItem( { clientIds } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst blocks = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).getBlocksByClientId( clientIds );\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\n\tconst hasHiddenBlock = blocks.some(\n\t\t( block ) => block.attributes.metadata?.blockVisibility === false\n\t);\n\n\tconst toggleBlockVisibility = () => {\n\t\tconst isHiding = ! hasHiddenBlock;\n\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tblocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\tblockVisibility: isHiding ? false : undefined,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\n\n\t\tif ( isHiding ) {\n\t\t\tif ( blocks.length > 1 ) {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'block-visibility-hidden',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'block-visibility-hidden',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ hasHiddenBlock ? seen : unseen }\n\t\t\tonClick={ toggleBlockVisibility }\n\t\t>\n\t\t\t{ hasHiddenBlock ? __( 'Show' ) : __( 'Hide' ) }\n\t\t</MenuItem>\n\t);\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA4B;AAC5B,wBAAyB;AACzB,mBAA6B;AAC7B,kBAAuC;AACvC,qBAAsC;AACtC,gCAAgD;AAKhD,mBAAiC;AACjC,mBAA0C;AA0ExC;AAxEa,SAAR,wBAA0C,EAAE,UAAU,GAAI;AAChE,QAAM,EAAE,sBAAsB,QAAI,yBAAa,aAAAA,KAAiB;AAChE,QAAM,EAAE,oBAAoB,QAAI,yBAAa,eAAAC,KAAa;AAC1D,QAAM,aAAS;AAAA,IACd,CAAE,WAAY;AACb,aAAO,OAAQ,aAAAD,KAAiB,EAAE,oBAAqB,SAAU;AAAA,IAClE;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,uBAAmB,uBAAW,CAAE,WAAY;AACjD,WAAO,OAAQ,0BAAAE,KAAuB,EAAE;AAAA,MACvC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,iBAAiB,OAAO;AAAA,IAC7B,CAAE,UAAW,MAAM,WAAW,UAAU,oBAAoB;AAAA,EAC7D;AAEA,QAAM,wBAAwB,MAAM;AACnC,UAAM,WAAW,CAAE;AAEnB,UAAM,uBAAuB,OAAO;AAAA,MACnC,QAAQ,IAAK,CAAE,EAAE,UAAU,WAAW,MAAO;AAAA,QAC5C;AAAA,QACA;AAAA,UACC,cAAU,+BAAkB;AAAA,YAC3B,GAAG,YAAY;AAAA,YACf,iBAAiB,WAAW,QAAQ;AAAA,UACrC,CAAE;AAAA,QACH;AAAA,MACD,CAAE;AAAA,IACH;AACA,0BAAuB,WAAW,sBAAsB;AAAA,MACvD,eAAe;AAAA,IAChB,CAAE;AAEF,QAAK,UAAW;AACf,UAAK,OAAO,SAAS,GAAI;AACxB;AAAA,cACC;AAAA;AAAA,gBAEC;AAAA,cACC;AAAA,YACD;AAAA,YACA;AAAA,UACD;AAAA,UACA;AAAA,YACC,IAAI;AAAA,YACJ,MAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD,OAAO;AACN;AAAA,cACC;AAAA;AAAA,gBAEC;AAAA,cACC;AAAA,YACD;AAAA,YACA;AAAA,UACD;AAAA,UACA;AAAA,YACC,IAAI;AAAA,YACJ,MAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,iBAAiB,oBAAO;AAAA,MAC/B,SAAU;AAAA,MAER,+BAAiB,gBAAI,MAAO,QAAI,gBAAI,MAAO;AAAA;AAAA,EAC9C;AAEF;", "names": ["blockEditorStore", "noticesStore", "keyboardShortcutsStore"] }