UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.99 kB
{ "version": 3, "sources": ["../../../src/components/block-switcher/block-variation-transformations.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tcloneBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\nconst EMPTY_OBJECT = {};\n\nexport function useBlockVariationTransforms( { clientIds, blocks } ) {\n\tconst { activeBlockVariation, blockVariationTransformations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, canRemoveBlocks } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst canRemove = canRemoveBlocks( clientIds );\n\t\t\t// Only handle single selected blocks for now.\n\t\t\tif ( blocks.length !== 1 || ! canRemove ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst [ firstBlock ] = blocks;\n\t\t\treturn {\n\t\t\t\tblockVariationTransformations: getBlockVariations(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\tgetBlockAttributes( firstBlock.clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\tconst transformations = useMemo( () => {\n\t\treturn blockVariationTransformations?.filter(\n\t\t\t( { name } ) => name !== activeBlockVariation?.name\n\t\t);\n\t}, [ blockVariationTransformations, activeBlockVariation ] );\n\treturn transformations;\n}\n\nconst BlockVariationTransformations = ( {\n\ttransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\treturn (\n\t\t<>\n\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={ cloneBlock(\n\t\t\t\t\t\tblocks[ 0 ],\n\t\t\t\t\t\ttransformations.find(\n\t\t\t\t\t\t\t( { name } ) => name === hoveredTransformItemName\n\t\t\t\t\t\t).attributes\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ transformations?.map( ( item ) => (\n\t\t\t\t<BlockVariationTransformationItem\n\t\t\t\t\tkey={ item.name }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</>\n\t);\n};\n\nfunction BlockVariationTransformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockVariationTransformations;\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,oBAIO;AACP,kBAA0B;AAC1B,qBAAkC;AAKlC,mBAA0C;AAC1C,wBAAsB;AACtB,mCAAgC;AA+C9B;AA7CF,IAAM,eAAe,CAAC;AAEf,SAAS,4BAA6B,EAAE,WAAW,OAAO,GAAI;AACpE,QAAM,EAAE,sBAAsB,8BAA8B,QAAI;AAAA,IAC/D,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,gBAAgB,IAC3C,OAAQ,aAAAA,KAAiB;AAC1B,YAAM,EAAE,yBAAyB,mBAAmB,IACnD,OAAQ,cAAAC,KAAY;AAErB,YAAM,YAAY,gBAAiB,SAAU;AAE7C,UAAK,OAAO,WAAW,KAAK,CAAE,WAAY;AACzC,eAAO;AAAA,MACR;AACA,YAAM,CAAE,UAAW,IAAI;AACvB,aAAO;AAAA,QACN,+BAA+B;AAAA,UAC9B,WAAW;AAAA,UACX;AAAA,QACD;AAAA,QACA,sBAAsB;AAAA,UACrB,WAAW;AAAA,UACX,mBAAoB,WAAW,QAAS;AAAA,QACzC;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,WAAW,MAAO;AAAA,EACrB;AACA,QAAM,sBAAkB,wBAAS,MAAM;AACtC,WAAO,+BAA+B;AAAA,MACrC,CAAE,EAAE,KAAK,MAAO,SAAS,sBAAsB;AAAA,IAChD;AAAA,EACD,GAAG,CAAE,+BAA+B,oBAAqB,CAAE;AAC3D,SAAO;AACR;AAEA,IAAM,gCAAgC,CAAE;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,CAAE,0BAA0B,2BAA4B,QAC7D,yBAAS;AACV,SACC,4EACG;AAAA,gCACD;AAAA,MAAC,6BAAAC;AAAA,MAAA;AAAA,QACA,YAAS;AAAA,UACR,OAAQ,CAAE;AAAA,UACV,gBAAgB;AAAA,YACf,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,UAC1B,EAAE;AAAA,QACH;AAAA;AAAA,IACD;AAAA,IAEC,iBAAiB,IAAK,CAAE,SACzB;AAAA,MAAC;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MAHM,KAAK;AAAA,IAIZ,CACC;AAAA,KACH;AAEF;AAEA,SAAS,iCAAkC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAC9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAY,4CAA8B,IAAK;AAAA,MAC/C,SAAU,CAAE,UAAW;AACtB,cAAM,eAAe;AACrB,iBAAU,IAAK;AAAA,MAChB;AAAA,MACA,cAAe,MAAM,4BAA6B,IAAK;AAAA,MACvD,cAAe,MAAM,4BAA6B,IAAK;AAAA,MAEvD;AAAA,oDAAC,kBAAAC,SAAA,EAAU,MAAc,YAAU,MAAC;AAAA,QAClC;AAAA;AAAA;AAAA,EACH;AAEF;AAEA,IAAO,0CAAQ;", "names": ["blockEditorStore", "blocksStore", "PreviewBlockPopover", "BlockIcon"] }