UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 2.88 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAA4C;AAC5C,qBAA8C;AAC9C,mBAA6B;AAK7B,mBAA2B;AAC3B,4BAAyB;AAkCvB;AAhCa,SAAR,iBAAmC,EAAE,SAAS,GAAI;AACxD,QAAM,EAAE,SAAS,SAAS,QAAI,sBAAAA,SAAc,QAAS;AAErD,QAAM,CAAE,aAAa,WAAY,QAAI;AAAA,IACpC,CAAE,aAAc,CAAE;AAAA,IAClB;AAAA,EACD;AAEA,QAAM,4BAAwB,uBAAQ,KAAM;AAO5C,gCAAW,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,eAAW,gBAAI,QAAS,QAAI,gBAAI,MAAO;AAEnD,MAAK,CAAE,WAAW,UAAW;AAC5B,gBAAQ,gBAAI,QAAS;AAAA,EACtB;AAEA,SACC,4EACC;AAAA,gDAAC,kCAAa,WAAU,mCACvB;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,CAAE;AAAA,QACb,MAAO,WAAW,oBAAO;AAAA,QACzB;AAAA,QACA,SAAU;AAAA,QACV,iBAAgB;AAAA,QAChB,iBAAc;AAAA;AAAA,IACf,GACD;AAAA,IACE,eACD,4CAAC,aAAAC,SAAA,EAAe,UAAsB,SAAU,aAAc;AAAA,KAEhE;AAEF;", "names": ["useBlockLock", "BlockLockModal"] }