UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 5.59 kB
{ "version": 3, "sources": ["../../../src/components/convert-to-group-buttons/toolbar.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { group, row, stack, grid } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToGroupButtonProps } from '../convert-to-group-buttons';\nimport { store as blockEditorStore } from '../../store';\n\nconst layouts = {\n\tgroup: { type: 'constrained' },\n\trow: { type: 'flex', flexWrap: 'nowrap' },\n\tstack: { type: 'flex', orientation: 'vertical' },\n\tgrid: { type: 'grid' },\n};\n\nfunction BlockGroupToolbar() {\n\tconst { blocksSelection, clientIds, groupingBlockName, isGroupable } =\n\t\tuseConvertToGroupButtonProps();\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst { canRemove, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tvariations: getBlockVariations(\n\t\t\t\t\tgroupingBlockName,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, groupingBlockName ]\n\t);\n\n\tconst onConvertToGroup = ( layout ) => {\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\n\t\tif ( typeof layout !== 'string' ) {\n\t\t\tlayout = 'group';\n\t\t}\n\n\t\tif ( newBlocks && newBlocks.length > 0 ) {\n\t\t\t// Because the block is not in the store yet we can't use\n\t\t\t// updateBlockAttributes so need to manually update attributes.\n\t\t\tnewBlocks[ 0 ].attributes.layout = layouts[ layout ];\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertToRow = () => onConvertToGroup( 'row' );\n\tconst onConvertToStack = () => onConvertToGroup( 'stack' );\n\tconst onConvertToGrid = () => onConvertToGroup( 'grid' );\n\n\t// Don't render the button if the current selection cannot be grouped.\n\t// A good example is selecting multiple button blocks within a Buttons block:\n\t// The group block is not a valid child of Buttons, so we should not show the button.\n\t// Any blocks that are locked against removal also cannot be grouped.\n\tif ( ! isGroupable || ! canRemove ) {\n\t\treturn null;\n\t}\n\n\tconst canInsertRow = !! variations.find(\n\t\t( { name } ) => name === 'group-row'\n\t);\n\tconst canInsertStack = !! variations.find(\n\t\t( { name } ) => name === 'group-stack'\n\t);\n\tconst canInsertGrid = !! variations.find(\n\t\t( { name } ) => name === 'group-grid'\n\t);\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ group }\n\t\t\t\tlabel={ _x( 'Group', 'action: convert blocks to group' ) }\n\t\t\t\tonClick={ onConvertToGroup }\n\t\t\t/>\n\t\t\t{ canInsertRow && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ row }\n\t\t\t\t\tlabel={ _x( 'Row', 'action: convert blocks to row' ) }\n\t\t\t\t\tonClick={ onConvertToRow }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertStack && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ stack }\n\t\t\t\t\tlabel={ _x( 'Stack', 'action: convert blocks to stack' ) }\n\t\t\t\t\tonClick={ onConvertToStack }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertGrid && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ grid }\n\t\t\t\t\tlabel={ _x( 'Grid', 'action: convert blocks to grid' ) }\n\t\t\t\t\tonClick={ onConvertToGrid }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockGroupToolbar;\n"], "mappings": ";AAGA,SAAS,aAAa,iBAAiB;AACvC,SAAS,mBAAmB,SAAS,mBAAmB;AACxD,SAAS,eAAe,oBAAoB;AAC5C,SAAS,OAAO,KAAK,OAAO,YAAY;AACxC,SAAS,UAAU;AAKnB,SAAS,oCAAoC;AAC7C,SAAS,SAAS,wBAAwB;AAuExC,SACC,KADD;AArEF,IAAM,UAAU;AAAA,EACf,OAAO,EAAE,MAAM,cAAc;AAAA,EAC7B,KAAK,EAAE,MAAM,QAAQ,UAAU,SAAS;AAAA,EACxC,OAAO,EAAE,MAAM,QAAQ,aAAa,WAAW;AAAA,EAC/C,MAAM,EAAE,MAAM,OAAO;AACtB;AAEA,SAAS,oBAAoB;AAC5B,QAAM,EAAE,iBAAiB,WAAW,mBAAmB,YAAY,IAClE,6BAA6B;AAC9B,QAAM,EAAE,cAAc,IAAI,YAAa,gBAAiB;AAExD,QAAM,EAAE,WAAW,WAAW,IAAI;AAAA,IACjC,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,IAAI,OAAQ,gBAAiB;AACrD,YAAM,EAAE,mBAAmB,IAAI,OAAQ,WAAY;AAEnD,aAAO;AAAA,QACN,WAAW,gBAAiB,SAAU;AAAA,QACtC,YAAY;AAAA,UACX;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,WAAW,iBAAkB;AAAA,EAChC;AAEA,QAAM,mBAAmB,CAAE,WAAY;AACtC,UAAM,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,IACD;AAEA,QAAK,OAAO,WAAW,UAAW;AACjC,eAAS;AAAA,IACV;AAEA,QAAK,aAAa,UAAU,SAAS,GAAI;AAGxC,gBAAW,CAAE,EAAE,WAAW,SAAS,QAAS,MAAO;AACnD,oBAAe,WAAW,SAAU;AAAA,IACrC;AAAA,EACD;AAEA,QAAM,iBAAiB,MAAM,iBAAkB,KAAM;AACrD,QAAM,mBAAmB,MAAM,iBAAkB,OAAQ;AACzD,QAAM,kBAAkB,MAAM,iBAAkB,MAAO;AAMvD,MAAK,CAAE,eAAe,CAAE,WAAY;AACnC,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,CAAC,CAAE,WAAW;AAAA,IAClC,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,EAC1B;AACA,QAAM,iBAAiB,CAAC,CAAE,WAAW;AAAA,IACpC,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,EAC1B;AACA,QAAM,gBAAgB,CAAC,CAAE,WAAW;AAAA,IACnC,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,EAC1B;AAEA,SACC,qBAAC,gBACA;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,OAAQ,GAAI,SAAS,iCAAkC;AAAA,QACvD,SAAU;AAAA;AAAA,IACX;AAAA,IACE,gBACD;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,OAAQ,GAAI,OAAO,+BAAgC;AAAA,QACnD,SAAU;AAAA;AAAA,IACX;AAAA,IAEC,kBACD;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,OAAQ,GAAI,SAAS,iCAAkC;AAAA,QACvD,SAAU;AAAA;AAAA,IACX;AAAA,IAEC,iBACD;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,OAAQ,GAAI,QAAQ,gCAAiC;AAAA,QACrD,SAAU;AAAA;AAAA,IACX;AAAA,KAEF;AAEF;AAEA,IAAO,kBAAQ;", "names": [] }