UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 3.91 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0CAAAA;AAAA,EAAA;AAAA,+EAAAC;AAAA;AAAA;AAGA,wBAAyB;AACzB,kBAAmB;AACnB,oBAAkC;AAClC,kBAAuC;AACvC,sBAAgC;AAKhC,mBAA0C;AAC1C,+CAAyC;AACzC,qBAA8B;AA6C5B;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,QAAI,uBAAW,aAAAC,KAAiB;AAClE,QAAM,EAAE,cAAc,QAAI,yBAAa,aAAAA,KAAiB;AACxD,QAAM,mBAAmB,MAAM;AAE9B,UAAM,gBAAY;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,4EACG;AAAA,mBACD;AAAA,MAAC;AAAA;AAAA,QACA,UACC,uBAAuB,SAAS,IAC7B,gCAAgB,QAAS,GAAI,IAC7B;AAAA,QAEJ,SAAU,MAAM;AACf,2BAAiB;AACjB,kBAAQ;AAAA,QACT;AAAA,QAEE,8BAAI,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": ["BlockGroupToolbar", "useConvertToGroupButtonProps", "blockEditorStore"] }