UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.94 kB
{ "version": 3, "sources": ["../../../src/components/block-toolbar/switch-section-style.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tToolbarButton,\n\tToolbarGroup,\n\tIcon,\n\tPath,\n\tSVG,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useStylesForBlocks from '../block-styles/use-styles-for-block';\nimport { replaceActiveStyle } from '../block-styles/utils';\nimport { store as blockEditorStore } from '../../store';\nimport { globalStylesDataKey } from '../../store/private-keys';\nimport { getVariationStylesWithRefValues } from '../../hooks/block-style-variation';\n\nconst styleIcon = (\n\t<SVG\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\taria-hidden=\"true\"\n\t\tfocusable=\"false\"\n\t>\n\t\t<Path d=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\" />\n\t\t<Path\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\td=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\"\n\t\t/>\n\t</SVG>\n);\n\nfunction SwitchSectionStyle( { clientId } ) {\n\tconst { stylesToRender, activeStyle, className } = useStylesForBlocks( {\n\t\tclientId,\n\t} );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Get global styles data\n\tconst { globalSettings, globalStyles, blockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\treturn {\n\t\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t\t\tblockName: select( blockEditorStore ).getBlockName( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the background color for the active style\n\tconst activeStyleBackground = activeStyle?.name\n\t\t? getVariationStylesWithRefValues(\n\t\t\t\t{\n\t\t\t\t\tsettings: globalSettings,\n\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t},\n\t\t\t\tblockName,\n\t\t\t\tactiveStyle.name\n\t\t )?.color?.background\n\t\t: undefined;\n\n\tif ( ! stylesToRender || stylesToRender.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst handleStyleSwitch = () => {\n\t\tconst currentIndex = stylesToRender.findIndex(\n\t\t\t( style ) => style.name === activeStyle.name\n\t\t);\n\n\t\tconst nextIndex = ( currentIndex + 1 ) % stylesToRender.length;\n\t\tconst nextStyle = stylesToRender[ nextIndex ];\n\n\t\tconst styleClassName = replaceActiveStyle(\n\t\t\tclassName,\n\t\t\tactiveStyle,\n\t\t\tnextStyle\n\t\t);\n\n\t\tupdateBlockAttributes( clientId, {\n\t\t\tclassName: styleClassName,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tonClick={ handleStyleSwitch }\n\t\t\t\tlabel={ __( 'Shuffle styles' ) }\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticon={ styleIcon }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tfill: activeStyleBackground || 'transparent',\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ToolbarButton>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default SwitchSectionStyle;\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAMO;AACP,kBAAmB;AACnB,kBAAuC;AAKvC,kCAA+B;AAC/B,mBAAmC;AACnC,mBAA0C;AAC1C,0BAAoC;AACpC,mCAAgD;AAG/C;AADD,IAAM,YACL;AAAA,EAAC;AAAA;AAAA,IACA,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,eAAY;AAAA,IACZ,WAAU;AAAA,IAEV;AAAA,kDAAC,0BAAK,GAAE,uLAAsL;AAAA,MAC9L;AAAA,QAAC;AAAA;AAAA,UACA,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,GAAE;AAAA;AAAA,MACH;AAAA;AAAA;AACD;AAGD,SAAS,mBAAoB,EAAE,SAAS,GAAI;AAC3C,QAAM,EAAE,gBAAgB,aAAa,UAAU,QAAI,4BAAAA,SAAoB;AAAA,IACtE;AAAA,EACD,CAAE;AACF,QAAM,EAAE,sBAAsB,QAAI,yBAAa,aAAAC,KAAiB;AAGhE,QAAM,EAAE,gBAAgB,cAAc,UAAU,QAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,WAAW,OAAQ,aAAAA,KAAiB,EAAE,YAAY;AACxD,aAAO;AAAA,QACN,gBAAgB,SAAS;AAAA,QACzB,cAAc,SAAU,uCAAoB;AAAA,QAC5C,WAAW,OAAQ,aAAAA,KAAiB,EAAE,aAAc,QAAS;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAGA,QAAM,wBAAwB,aAAa,WACxC;AAAA,IACA;AAAA,MACC,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACZ,GAAG,OAAO,aACV;AAEH,MAAK,CAAE,kBAAkB,eAAe,WAAW,GAAI;AACtD,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,MAAM;AAC/B,UAAM,eAAe,eAAe;AAAA,MACnC,CAAE,UAAW,MAAM,SAAS,YAAY;AAAA,IACzC;AAEA,UAAM,aAAc,eAAe,KAAM,eAAe;AACxD,UAAM,YAAY,eAAgB,SAAU;AAE5C,UAAM,qBAAiB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,0BAAuB,UAAU;AAAA,MAChC,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,SACC,4CAAC,kCACA;AAAA,IAAC;AAAA;AAAA,MACA,SAAU;AAAA,MACV,WAAQ,gBAAI,gBAAiB;AAAA,MAE7B;AAAA,QAAC;AAAA;AAAA,UACA,MAAO;AAAA,UACP,OAAQ;AAAA,YACP,MAAM,yBAAyB;AAAA,UAChC;AAAA;AAAA,MACD;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,+BAAQ;", "names": ["useStylesForBlocks", "blockEditorStore"] }