UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 5.33 kB
{ "version": 3, "sources": ["../../../src/components/block-alignment-control/ui.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport useAvailableAlignments from './use-available-alignments';\nimport { BLOCK_ALIGNMENTS_CONTROLS, DEFAULT_CONTROL } from './constants';\n\nfunction BlockAlignmentUI( {\n\tvalue,\n\tonChange,\n\tcontrols,\n\tisToolbar,\n\tisCollapsed = true,\n} ) {\n\tconst enabledControls = useAvailableAlignments( controls );\n\tconst hasEnabledControls = !! enabledControls.length;\n\n\tif ( ! hasEnabledControls ) {\n\t\treturn null;\n\t}\n\n\tfunction onChangeAlignment( align ) {\n\t\tonChange( [ value, 'none' ].includes( align ) ? undefined : align );\n\t}\n\n\tconst activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[ value ];\n\tconst defaultAlignmentControl =\n\t\tBLOCK_ALIGNMENTS_CONTROLS[ DEFAULT_CONTROL ];\n\n\tconst UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;\n\tconst commonProps = {\n\t\ticon: activeAlignmentControl\n\t\t\t? activeAlignmentControl.icon\n\t\t\t: defaultAlignmentControl.icon,\n\t\tlabel: __( 'Align' ),\n\t};\n\tconst extraProps = isToolbar\n\t\t? {\n\t\t\t\tisCollapsed,\n\t\t\t\tcontrols: enabledControls.map( ( { name: controlName } ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...BLOCK_ALIGNMENTS_CONTROLS[ controlName ],\n\t\t\t\t\t\tisActive:\n\t\t\t\t\t\t\tvalue === controlName ||\n\t\t\t\t\t\t\t( ! value && controlName === 'none' ),\n\t\t\t\t\t\trole: isCollapsed ? 'menuitemradio' : undefined,\n\t\t\t\t\t\tonClick: () => onChangeAlignment( controlName ),\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t }\n\t\t: {\n\t\t\t\ttoggleProps: { description: __( 'Change alignment' ) },\n\t\t\t\tchildren: ( { onClose } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup className=\"block-editor-block-alignment-control__menu-group\">\n\t\t\t\t\t\t\t\t{ enabledControls.map(\n\t\t\t\t\t\t\t\t\t( { name: controlName, info } ) => {\n\t\t\t\t\t\t\t\t\t\tconst { icon, title } =\n\t\t\t\t\t\t\t\t\t\t\tBLOCK_ALIGNMENTS_CONTROLS[\n\t\t\t\t\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t// If no value is provided, mark as selected the `none` option.\n\t\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\t\tcontrolName === value ||\n\t\t\t\t\t\t\t\t\t\t\t( ! value &&\n\t\t\t\t\t\t\t\t\t\t\t\tcontrolName === 'none' );\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ controlName }\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'components-dropdown-menu__menu-item',\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'is-active': isSelected,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeAlignment(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\t\tinfo={ info }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t };\n\n\treturn <UIComponent { ...commonProps } { ...extraProps } />;\n}\n\nexport default BlockAlignmentUI;\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,kBAAmB;AACnB,wBAKO;AAKP,sCAAmC;AACnC,uBAA2D;AAiDrD;AA/CN,SAAS,iBAAkB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AACf,GAAI;AACH,QAAM,sBAAkB,gCAAAA,SAAwB,QAAS;AACzD,QAAM,qBAAqB,CAAC,CAAE,gBAAgB;AAE9C,MAAK,CAAE,oBAAqB;AAC3B,WAAO;AAAA,EACR;AAEA,WAAS,kBAAmB,OAAQ;AACnC,aAAU,CAAE,OAAO,MAAO,EAAE,SAAU,KAAM,IAAI,SAAY,KAAM;AAAA,EACnE;AAEA,QAAM,yBAAyB,2CAA2B,KAAM;AAChE,QAAM,0BACL,2CAA2B,gCAAgB;AAE5C,QAAM,cAAc,YAAY,iCAAe;AAC/C,QAAM,cAAc;AAAA,IACnB,MAAM,yBACH,uBAAuB,OACvB,wBAAwB;AAAA,IAC3B,WAAO,gBAAI,OAAQ;AAAA,EACpB;AACA,QAAM,aAAa,YAChB;AAAA,IACA;AAAA,IACA,UAAU,gBAAgB,IAAK,CAAE,EAAE,MAAM,YAAY,MAAO;AAC3D,aAAO;AAAA,QACN,GAAG,2CAA2B,WAAY;AAAA,QAC1C,UACC,UAAU,eACR,CAAE,SAAS,gBAAgB;AAAA,QAC9B,MAAM,cAAc,kBAAkB;AAAA,QACtC,SAAS,MAAM,kBAAmB,WAAY;AAAA,MAC/C;AAAA,IACD,CAAE;AAAA,EACF,IACA;AAAA,IACA,aAAa,EAAE,iBAAa,gBAAI,kBAAmB,EAAE;AAAA,IACrD,UAAU,CAAE,EAAE,QAAQ,MAAO;AAC5B,aACC,2EACC,sDAAC,+BAAU,WAAU,oDAClB,0BAAgB;AAAA,QACjB,CAAE,EAAE,MAAM,aAAa,KAAK,MAAO;AAClC,gBAAM,EAAE,MAAM,MAAM,IACnB,2CACC,WACD;AAED,gBAAM,aACL,gBAAgB,SACd,CAAE,SACH,gBAAgB;AAClB,iBACC;AAAA,YAAC;AAAA;AAAA,cAEA;AAAA,cACA,cAAa;AAAA,cACb,eAAY,YAAAC;AAAA,gBACX;AAAA,gBACA;AAAA,kBACC,aAAa;AAAA,gBACd;AAAA,cACD;AAAA,cACA;AAAA,cACA,SAAU,MAAM;AACf;AAAA,kBACC;AAAA,gBACD;AACA,wBAAQ;AAAA,cACT;AAAA,cACA,MAAK;AAAA,cACL;AAAA,cAEE;AAAA;AAAA,YAnBI;AAAA,UAoBP;AAAA,QAEF;AAAA,MACD,GACD,GACD;AAAA,IAEF;AAAA,EACA;AAEH,SAAO,4CAAC,eAAc,GAAG,aAAgB,GAAG,YAAa;AAC1D;AAEA,IAAO,aAAQ;", "names": ["useAvailableAlignments", "clsx"] }