UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 3.8 kB
{ "version": 3, "sources": ["../../../src/components/convert-to-group-buttons/index.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { _x } from '@wordpress/i18n';\nimport { switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useConvertToGroupButtonProps from './use-convert-to-group-button-props';\nimport BlockGroupToolbar from './toolbar';\n\nfunction ConvertToGroupButton( {\n\tclientIds,\n\tisGroupable,\n\tisUngroupable,\n\tonUngroup,\n\tblocksSelection,\n\tgroupingBlockName,\n\tonClose = () => {},\n} ) {\n\tconst { getSelectedBlockClientIds } = useSelect( blockEditorStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst onConvertToGroup = () => {\n\t\t// Activate the `transform` on the Grouping Block which does the conversion.\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\t\tif ( newBlocks ) {\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertFromGroup = () => {\n\t\tlet innerBlocks = blocksSelection[ 0 ].innerBlocks;\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( onUngroup ) {\n\t\t\tinnerBlocks = onUngroup(\n\t\t\t\tblocksSelection[ 0 ].attributes,\n\t\t\t\tblocksSelection[ 0 ].innerBlocks\n\t\t\t);\n\t\t}\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! isGroupable && ! isUngroupable ) {\n\t\treturn null;\n\t}\n\n\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\treturn (\n\t\t<>\n\t\t\t{ isGroupable && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tshortcut={\n\t\t\t\t\t\tselectedBlockClientIds.length > 1\n\t\t\t\t\t\t\t? displayShortcut.primary( 'g' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tonConvertToGroup();\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ _x( 'Group', 'verb' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t{ isUngroupable && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tonConvertFromGroup();\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ _x(\n\t\t\t\t\t\t'Ungroup',\n\t\t\t\t\t\t'Ungrouping blocks from within a grouping block back into individual blocks within the Editor'\n\t\t\t\t\t) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport {\n\tBlockGroupToolbar,\n\tConvertToGroupButton,\n\tuseConvertToGroupButtonProps,\n};\n"], "mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAClC,SAAS,WAAW,mBAAmB;AACvC,SAAS,uBAAuB;AAKhC,SAAS,SAAS,wBAAwB;AAC1C,OAAO,kCAAkC;AACzC,OAAO,uBAAuB;AA6C5B,mBAEE,KAFF;AA3CF,SAAS,qBAAsB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,MAAM;AAAA,EAAC;AAClB,GAAI;AACH,QAAM,EAAE,0BAA0B,IAAI,UAAW,gBAAiB;AAClE,QAAM,EAAE,cAAc,IAAI,YAAa,gBAAiB;AACxD,QAAM,mBAAmB,MAAM;AAE9B,UAAM,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,IACD;AACA,QAAK,WAAY;AAChB,oBAAe,WAAW,SAAU;AAAA,IACrC;AAAA,EACD;AAEA,QAAM,qBAAqB,MAAM;AAChC,QAAI,cAAc,gBAAiB,CAAE,EAAE;AACvC,QAAK,CAAE,YAAY,QAAS;AAC3B;AAAA,IACD;AACA,QAAK,WAAY;AAChB,oBAAc;AAAA,QACb,gBAAiB,CAAE,EAAE;AAAA,QACrB,gBAAiB,CAAE,EAAE;AAAA,MACtB;AAAA,IACD;AACA,kBAAe,WAAW,WAAY;AAAA,EACvC;AAEA,MAAK,CAAE,eAAe,CAAE,eAAgB;AACvC,WAAO;AAAA,EACR;AAEA,QAAM,yBAAyB,0BAA0B;AAEzD,SACC,iCACG;AAAA,mBACD;AAAA,MAAC;AAAA;AAAA,QACA,UACC,uBAAuB,SAAS,IAC7B,gBAAgB,QAAS,GAAI,IAC7B;AAAA,QAEJ,SAAU,MAAM;AACf,2BAAiB;AACjB,kBAAQ;AAAA,QACT;AAAA,QAEE,aAAI,SAAS,MAAO;AAAA;AAAA,IACvB;AAAA,IAEC,iBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,MAAM;AACf,6BAAmB;AACnB,kBAAQ;AAAA,QACT;AAAA,QAEE;AAAA,UACD;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;", "names": [] }