UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 2.82 kB
{ "version": 3, "sources": ["../../../src/components/block-lock/toolbar.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useReducer, useRef, useEffect } from '@wordpress/element';\nimport { lock, unlock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockLock from './use-block-lock';\n\nexport default function BlockLockToolbar( { clientId } ) {\n\tconst { canLock, isLocked } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tconst hasLockButtonShownRef = useRef( false );\n\n\t// If the block lock button has been shown, we don't want to remove it\n\t// from the toolbar until the toolbar is rendered again without it.\n\t// Removing it beforehand can cause focus loss issues, such as when\n\t// unlocking the block from the modal. It needs to return focus from\n\t// whence it came, and to do that, we need to leave the button in the toolbar.\n\tuseEffect( () => {\n\t\tif ( isLocked ) {\n\t\t\thasLockButtonShownRef.current = true;\n\t\t}\n\t}, [ isLocked ] );\n\n\tif ( ! isLocked && ! hasLockButtonShownRef.current ) {\n\t\treturn null;\n\t}\n\n\tlet label = isLocked ? __( 'Unlock' ) : __( 'Lock' );\n\n\tif ( ! canLock && isLocked ) {\n\t\tlabel = __( 'Locked' );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled={ ! canLock }\n\t\t\t\t\ticon={ isLocked ? lock : unlock }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"], "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,eAAe,oBAAoB;AAC5C,SAAS,YAAY,QAAQ,iBAAiB;AAC9C,SAAS,MAAM,cAAc;AAK7B,OAAO,oBAAoB;AAC3B,OAAO,kBAAkB;AAkCvB,mBAEE,KAFF;AAhCa,SAAR,iBAAmC,EAAE,SAAS,GAAI;AACxD,QAAM,EAAE,SAAS,SAAS,IAAI,aAAc,QAAS;AAErD,QAAM,CAAE,aAAa,WAAY,IAAI;AAAA,IACpC,CAAE,aAAc,CAAE;AAAA,IAClB;AAAA,EACD;AAEA,QAAM,wBAAwB,OAAQ,KAAM;AAO5C,YAAW,MAAM;AAChB,QAAK,UAAW;AACf,4BAAsB,UAAU;AAAA,IACjC;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAEhB,MAAK,CAAE,YAAY,CAAE,sBAAsB,SAAU;AACpD,WAAO;AAAA,EACR;AAEA,MAAI,QAAQ,WAAW,GAAI,QAAS,IAAI,GAAI,MAAO;AAEnD,MAAK,CAAE,WAAW,UAAW;AAC5B,YAAQ,GAAI,QAAS;AAAA,EACtB;AAEA,SACC,iCACC;AAAA,wBAAC,gBAAa,WAAU,mCACvB;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,CAAE;AAAA,QACb,MAAO,WAAW,OAAO;AAAA,QACzB;AAAA,QACA,SAAU;AAAA,QACV,iBAAgB;AAAA,QAChB,iBAAc;AAAA;AAAA,IACf,GACD;AAAA,IACE,eACD,oBAAC,kBAAe,UAAsB,SAAU,aAAc;AAAA,KAEhE;AAEF;", "names": [] }