UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.37 kB
{ "version": 3, "sources": ["../../../src/components/block-manager/category.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { CheckboxControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesChecklist from './checklist';\n\nfunction BlockManagerCategory( {\n\ttitle,\n\tblockTypes,\n\tselectedBlockTypes,\n\tonChange,\n} ) {\n\tconst instanceId = useInstanceId( BlockManagerCategory );\n\n\tconst toggleVisible = useCallback(\n\t\t( blockType, nextIsChecked ) => {\n\t\t\tif ( nextIsChecked ) {\n\t\t\t\tonChange( [ ...selectedBlockTypes, blockType ] );\n\t\t\t} else {\n\t\t\t\tonChange(\n\t\t\t\t\tselectedBlockTypes.filter(\n\t\t\t\t\t\t( { name } ) => name !== blockType.name\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectedBlockTypes, onChange ]\n\t);\n\n\tconst toggleAllVisible = useCallback(\n\t\t( nextIsChecked ) => {\n\t\t\tif ( nextIsChecked ) {\n\t\t\t\tonChange( [\n\t\t\t\t\t...selectedBlockTypes,\n\t\t\t\t\t...blockTypes.filter(\n\t\t\t\t\t\t( blockType ) =>\n\t\t\t\t\t\t\t! selectedBlockTypes.find(\n\t\t\t\t\t\t\t\t( { name } ) => name === blockType.name\n\t\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t] );\n\t\t\t} else {\n\t\t\t\tonChange(\n\t\t\t\t\tselectedBlockTypes.filter(\n\t\t\t\t\t\t( selectedBlockType ) =>\n\t\t\t\t\t\t\t! blockTypes.find(\n\t\t\t\t\t\t\t\t( { name } ) => name === selectedBlockType.name\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ blockTypes, selectedBlockTypes, onChange ]\n\t);\n\n\tif ( ! blockTypes.length ) {\n\t\treturn null;\n\t}\n\n\tconst checkedBlockNames = blockTypes\n\t\t.map( ( { name } ) => name )\n\t\t.filter( ( type ) =>\n\t\t\t( selectedBlockTypes ?? [] ).some(\n\t\t\t\t( selectedBlockType ) => selectedBlockType.name === type\n\t\t\t)\n\t\t);\n\n\tconst titleId = 'block-editor-block-manager__category-title-' + instanceId;\n\n\tconst isAllChecked = checkedBlockNames.length === blockTypes.length;\n\tconst isIndeterminate = ! isAllChecked && checkedBlockNames.length > 0;\n\n\treturn (\n\t\t<div\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ titleId }\n\t\t\tclassName=\"block-editor-block-manager__category\"\n\t\t>\n\t\t\t<CheckboxControl\n\t\t\t\tchecked={ isAllChecked }\n\t\t\t\tonChange={ toggleAllVisible }\n\t\t\t\tclassName=\"block-editor-block-manager__category-title\"\n\t\t\t\tindeterminate={ isIndeterminate }\n\t\t\t\tlabel={ <span id={ titleId }>{ title }</span> }\n\t\t\t/>\n\t\t\t<BlockTypesChecklist\n\t\t\t\tblockTypes={ blockTypes }\n\t\t\t\tvalue={ checkedBlockNames }\n\t\t\t\tonItemChange={ toggleVisible }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default BlockManagerCategory;\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA4B;AAC5B,qBAA8B;AAC9B,wBAAgC;AAKhC,uBAAgC;AAqE9B;AAnEF,SAAS,qBAAsB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,iBAAa,8BAAe,oBAAqB;AAEvD,QAAM,oBAAgB;AAAA,IACrB,CAAE,WAAW,kBAAmB;AAC/B,UAAK,eAAgB;AACpB,iBAAU,CAAE,GAAG,oBAAoB,SAAU,CAAE;AAAA,MAChD,OAAO;AACN;AAAA,UACC,mBAAmB;AAAA,YAClB,CAAE,EAAE,KAAK,MAAO,SAAS,UAAU;AAAA,UACpC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,oBAAoB,QAAS;AAAA,EAChC;AAEA,QAAM,uBAAmB;AAAA,IACxB,CAAE,kBAAmB;AACpB,UAAK,eAAgB;AACpB,iBAAU;AAAA,UACT,GAAG;AAAA,UACH,GAAG,WAAW;AAAA,YACb,CAAE,cACD,CAAE,mBAAmB;AAAA,cACpB,CAAE,EAAE,KAAK,MAAO,SAAS,UAAU;AAAA,YACpC;AAAA,UACF;AAAA,QACD,CAAE;AAAA,MACH,OAAO;AACN;AAAA,UACC,mBAAmB;AAAA,YAClB,CAAE,sBACD,CAAE,WAAW;AAAA,cACZ,CAAE,EAAE,KAAK,MAAO,SAAS,kBAAkB;AAAA,YAC5C;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,YAAY,oBAAoB,QAAS;AAAA,EAC5C;AAEA,MAAK,CAAE,WAAW,QAAS;AAC1B,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,WACxB,IAAK,CAAE,EAAE,KAAK,MAAO,IAAK,EAC1B;AAAA,IAAQ,CAAE,UACR,sBAAsB,CAAC,GAAI;AAAA,MAC5B,CAAE,sBAAuB,kBAAkB,SAAS;AAAA,IACrD;AAAA,EACD;AAED,QAAM,UAAU,gDAAgD;AAEhE,QAAM,eAAe,kBAAkB,WAAW,WAAW;AAC7D,QAAM,kBAAkB,CAAE,gBAAgB,kBAAkB,SAAS;AAErE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,mBAAkB;AAAA,MAClB,WAAU;AAAA,MAEV;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,SAAU;AAAA,YACV,UAAW;AAAA,YACX,WAAU;AAAA,YACV,eAAgB;AAAA,YAChB,OAAQ,4CAAC,UAAK,IAAK,SAAY,iBAAO;AAAA;AAAA,QACvC;AAAA,QACA;AAAA,UAAC,iBAAAA;AAAA,UAAA;AAAA,YACA;AAAA,YACA,OAAQ;AAAA,YACR,cAAe;AAAA;AAAA,QAChB;AAAA;AAAA;AAAA,EACD;AAEF;AAEA,IAAO,mBAAQ;", "names": ["BlockTypesChecklist"] }