@wordpress/block-editor 13.0.1 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/block-actions/index.js +4 -6
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-draggable/index.js +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-list/block.js +2 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -2
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +3 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +2 -4
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mover/index.js +1 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/block-variation-transformations.js +1 -3
- package/build/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build/components/block-switcher/index.js +13 -6
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +6 -10
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +14 -1
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/list-view/block.js +7 -6
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +3 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/use-clipboard-handler.js +1 -1
- package/build/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build/components/use-block-commands/index.js +3 -3
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/hooks/block-bindings.js +19 -16
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-style-variation.js +22 -4
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +7 -2
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/utils.js +3 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +3 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +20 -4
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +1 -2
- package/build/store/private-actions.js.map +1 -1
- package/build/store/selectors.js +17 -19
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-actions/index.js +4 -6
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-list/block.js +2 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -2
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +3 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +2 -4
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +1 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
- package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build-module/components/block-switcher/index.js +15 -8
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +7 -10
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +14 -1
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/list-view/block.js +7 -6
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +3 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +3 -3
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/hooks/block-bindings.js +20 -17
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +21 -4
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +7 -2
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/utils.js +3 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +20 -4
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -2
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/selectors.js +17 -19
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +8 -17
- package/build-style/style.css +8 -17
- package/package.json +12 -12
- package/src/components/block-actions/index.js +3 -7
- package/src/components/block-draggable/index.js +1 -1
- package/src/components/block-list/block.js +2 -2
- package/src/components/block-list/block.native.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +3 -1
- package/src/components/block-lock/use-block-lock.js +2 -4
- package/src/components/block-mover/index.js +1 -1
- package/src/components/block-mover/index.native.js +1 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/src/components/block-switcher/block-variation-transformations.js +4 -9
- package/src/components/block-switcher/index.js +27 -12
- package/src/components/block-switcher/style.scss +5 -0
- package/src/components/block-toolbar/index.js +7 -9
- package/src/components/block-toolbar/style.scss +9 -6
- package/src/components/block-tools/block-selection-button.js +2 -2
- package/src/components/global-styles/hooks.js +1 -4
- package/src/components/global-styles/use-global-styles-output.js +24 -4
- package/src/components/list-view/block.js +7 -7
- package/src/components/list-view/branch.js +5 -1
- package/src/components/list-view/use-clipboard-handler.js +1 -6
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +2 -9
- package/src/components/use-block-commands/index.js +3 -4
- package/src/hooks/block-bindings.js +28 -22
- package/src/hooks/block-style-variation.js +21 -4
- package/src/hooks/use-bindings-attributes.js +11 -1
- package/src/hooks/utils.js +3 -1
- package/src/lock-unlock.js +1 -1
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +24 -10
- package/src/store/private-actions.js +1 -5
- package/src/store/selectors.js +19 -26
- package/src/style.scss +0 -1
- package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
- package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
- package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/src/components/block-bindings-toolbar-indicator/index.js +0 -137
- package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useId","__","sprintf","_x","DropdownMenu","ToolbarGroup","ToolbarItem","__experimentalText","Text","store","blocksStore","useSelect","copy","blockEditorStore","BlockIcon","useBlockDisplayTitle","jsx","_jsx","Fragment","_Fragment","BlockBindingsToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","isConnectedToPatternOverrides","select","getBlockAttributes","getBlockNamesByClientId","getBlocksByClientId","getBlockType","getActiveBlockVariation","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","metadata","name","some","block","Object","values","attributes","bindings","binding","source","firstBlockTitle","clientId","maximumLength","blockDescription","toLowerCase","descriptionId","children","toggleProps","className","label","popoverProps","placement","showColors","describedBy","menuProps","orientation","id"],"sources":["@wordpress/block-editor/src/components/block-bindings-toolbar-indicator/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport default function BlockBindingsToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName, isConnectedToPatternOverrides } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t\tisConnectedToPatternOverrides: getBlocksByClientId(\n\t\t\t\t\tclientIds\n\t\t\t\t).some( ( block ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tblock?.attributes?.metadata?.bindings || {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding.source === 'core/pattern-overrides'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tlet blockDescription = isSingleBlockSelected\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\tif ( isConnectedToPatternOverrides && firstBlockName ) {\n\t\tblockDescription = isSingleBlockSelected\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */\n\t\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\t\tfirstBlockName\n\t\t\t )\n\t\t\t: __( 'These blocks are editable using overrides.' );\n\t}\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator\"\n\t\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t'block-editor-block-bindings-toolbar-indicator__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-bindings-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<Text id={ descriptionId }>\n\t\t\t\t\t\t\t\t{ blockDescription }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,oBAAoB;AAC1C,SAASC,EAAE,EAAEC,OAAO,EAAEC,EAAE,QAAQ,iBAAiB;AACjD,SACCC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,kBAAkB,IAAIC,IAAI,QACpB,uBAAuB;AAC9B,SAASC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,IAAI,QAAQ,kBAAkB;;AAEvC;AACA;AACA;AACA,SAASH,KAAK,IAAII,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,oBAAoB,MAAM,wCAAwC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAE1E,eAAe,SAASC,6BAA6BA,CAAE;EAAEC;AAAU,CAAC,EAAG;EACtE,MAAMC,qBAAqB,GAAGD,SAAS,CAACE,MAAM,KAAK,CAAC;EACpD,MAAM;IAAEC,IAAI;IAAEC,cAAc;IAAEC;EAA8B,CAAC,GAAGf,SAAS,CACtEgB,MAAM,IAAM;IACb,MAAM;MACLC,kBAAkB;MAClBC,uBAAuB;MACvBC;IACD,CAAC,GAAGH,MAAM,CAAEd,gBAAiB,CAAC;IAC9B,MAAM;MAAEkB,YAAY;MAAEC;IAAwB,CAAC,GAC9CL,MAAM,CAAEjB,WAAY,CAAC;IACtB,MAAMuB,cAAc,GAAGJ,uBAAuB,CAAER,SAAU,CAAC;IAC3D,MAAMa,mBAAmB,GAAGD,cAAc,CAAE,CAAC,CAAE;IAC/C,MAAME,cAAc,GAAGJ,YAAY,CAAEG,mBAAoB,CAAC;IAC1D,IAAIE,KAAK;IACT,IAAKd,qBAAqB,EAAG;MAC5B,MAAMe,KAAK,GAAGL,uBAAuB,CACpCE,mBAAmB,EACnBN,kBAAkB,CAAEP,SAAS,CAAE,CAAC,CAAG,CACpC,CAAC;MACD;MACAe,KAAK,GAAGC,KAAK,EAAEb,IAAI,IAAIW,cAAc,CAACX,IAAI;IAC3C,CAAC,MAAM;MACN,MAAMc,qBAAqB,GAC1B,IAAIC,GAAG,CAAEN,cAAe,CAAC,CAACO,IAAI,KAAK,CAAC;MACrC;MACA;MACAJ,KAAK,GAAGE,qBAAqB,GAAGH,cAAc,CAACX,IAAI,GAAGZ,IAAI;IAC3D;IAEA,OAAO;MACNY,IAAI,EAAEY,KAAK;MACXX,cAAc,EAAEG,kBAAkB,CAAEP,SAAS,CAAE,CAAC,CAAG,CAAC,CAACoB,QAAQ,CAC3DC,IAAI;MACNhB,6BAA6B,EAAEI,mBAAmB,CACjDT,SACD,CAAC,CAACsB,IAAI,CAAIC,KAAK,IACdC,MAAM,CAACC,MAAM,CACZF,KAAK,EAAEG,UAAU,EAAEN,QAAQ,EAAEO,QAAQ,IAAI,CAAC,CAC3C,CAAC,CAACL,IAAI,CACHM,OAAO,IACRA,OAAO,CAACC,MAAM,KAAK,wBACrB,CACD;IACD,CAAC;EACF,CAAC,EACD,CAAE7B,SAAS,EAAEC,qBAAqB,CACnC,CAAC;EACD,MAAM6B,eAAe,GAAGpC,oBAAoB,CAAE;IAC7CqC,QAAQ,EAAE/B,SAAS,CAAE,CAAC,CAAE;IACxBgC,aAAa,EAAE;EAChB,CAAE,CAAC;EAEH,IAAIC,gBAAgB,GAAGhC,qBAAqB,GACzCnB,EAAE,CACF,0BAA0B,EAC1B,4CACA,CAAC,GACDA,EAAE,CACF,6BAA6B,EAC7B,4CACA,CAAC;EACJ,IAAKuB,6BAA6B,IAAID,cAAc,EAAG;IACtD6B,gBAAgB,GAAGhC,qBAAqB,GACrCpB,OAAO,EACP;IACAD,EAAE,CAAE,kDAAmD,CAAC,EACxDkD,eAAe,CAACI,WAAW,CAAC,CAAC,EAC7B9B,cACA,CAAC,GACDxB,EAAE,CAAE,4CAA6C,CAAC;EACtD;EACA,MAAMuD,aAAa,GAAGxD,KAAK,CAAC,CAAC;EAE7B,oBACCiB,IAAA,CAACZ,YAAY;IAAAoD,QAAA,eACZxC,IAAA,CAACX,WAAW;MAAAmD,QAAA,EACPC,WAAW,iBACdzC,IAAA,CAACb,YAAY;QACZuD,SAAS,EAAC,+CAA+C;QACzDC,KAAK,EAAGT,eAAiB;QACzBU,YAAY,EAAG;UACdC,SAAS,EAAE,cAAc;UACzBH,SAAS,EACR;QACF,CAAG;QACHnC,IAAI,eACHP,IAAA,CAAAE,SAAA;UAAAsC,QAAA,eACCxC,IAAA,CAACH,SAAS;YACTU,IAAI,EAAGA,IAAM;YACbmC,SAAS,EAAC,oDAAoD;YAC9DI,UAAU;UAAA,CACV;QAAC,CACD,CACF;QACDL,WAAW,EAAG;UACbM,WAAW,EAAEV,gBAAgB;UAC7B,GAAGI;QACJ,CAAG;QACHO,SAAS,EAAG;UACXC,WAAW,EAAE,MAAM;UACnB,kBAAkB,EAAEV;QACrB,CAAG;QAAAC,QAAA,EAEDA,CAAA,kBACDxC,IAAA,CAACT,IAAI;UAAC2D,EAAE,EAAGX,aAAe;UAAAC,QAAA,EACvBH;QAAgB,CACb;MACN,CACY;IACd,CACW;EAAC,CACD,CAAC;AAEjB","ignoreList":[]}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useId } from '@wordpress/element';
|
|
5
|
-
import { __, sprintf, _x } from '@wordpress/i18n';
|
|
6
|
-
import {
|
|
7
|
-
DropdownMenu,
|
|
8
|
-
ToolbarGroup,
|
|
9
|
-
ToolbarItem,
|
|
10
|
-
__experimentalText as Text,
|
|
11
|
-
} from '@wordpress/components';
|
|
12
|
-
import { store as blocksStore } from '@wordpress/blocks';
|
|
13
|
-
import { useSelect } from '@wordpress/data';
|
|
14
|
-
import { copy } from '@wordpress/icons';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Internal dependencies
|
|
18
|
-
*/
|
|
19
|
-
import { store as blockEditorStore } from '../../store';
|
|
20
|
-
import BlockIcon from '../block-icon';
|
|
21
|
-
import useBlockDisplayTitle from '../block-title/use-block-display-title';
|
|
22
|
-
|
|
23
|
-
export default function BlockBindingsToolbarIndicator( { clientIds } ) {
|
|
24
|
-
const isSingleBlockSelected = clientIds.length === 1;
|
|
25
|
-
const { icon, firstBlockName, isConnectedToPatternOverrides } = useSelect(
|
|
26
|
-
( select ) => {
|
|
27
|
-
const {
|
|
28
|
-
getBlockAttributes,
|
|
29
|
-
getBlockNamesByClientId,
|
|
30
|
-
getBlocksByClientId,
|
|
31
|
-
} = select( blockEditorStore );
|
|
32
|
-
const { getBlockType, getActiveBlockVariation } =
|
|
33
|
-
select( blocksStore );
|
|
34
|
-
const blockTypeNames = getBlockNamesByClientId( clientIds );
|
|
35
|
-
const _firstBlockTypeName = blockTypeNames[ 0 ];
|
|
36
|
-
const firstBlockType = getBlockType( _firstBlockTypeName );
|
|
37
|
-
let _icon;
|
|
38
|
-
if ( isSingleBlockSelected ) {
|
|
39
|
-
const match = getActiveBlockVariation(
|
|
40
|
-
_firstBlockTypeName,
|
|
41
|
-
getBlockAttributes( clientIds[ 0 ] )
|
|
42
|
-
);
|
|
43
|
-
// Take into account active block variations.
|
|
44
|
-
_icon = match?.icon || firstBlockType.icon;
|
|
45
|
-
} else {
|
|
46
|
-
const isSelectionOfSameType =
|
|
47
|
-
new Set( blockTypeNames ).size === 1;
|
|
48
|
-
// When selection consists of blocks of multiple types, display an
|
|
49
|
-
// appropriate icon to communicate the non-uniformity.
|
|
50
|
-
_icon = isSelectionOfSameType ? firstBlockType.icon : copy;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
icon: _icon,
|
|
55
|
-
firstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata
|
|
56
|
-
.name,
|
|
57
|
-
isConnectedToPatternOverrides: getBlocksByClientId(
|
|
58
|
-
clientIds
|
|
59
|
-
).some( ( block ) =>
|
|
60
|
-
Object.values(
|
|
61
|
-
block?.attributes?.metadata?.bindings || {}
|
|
62
|
-
).some(
|
|
63
|
-
( binding ) =>
|
|
64
|
-
binding.source === 'core/pattern-overrides'
|
|
65
|
-
)
|
|
66
|
-
),
|
|
67
|
-
};
|
|
68
|
-
},
|
|
69
|
-
[ clientIds, isSingleBlockSelected ]
|
|
70
|
-
);
|
|
71
|
-
const firstBlockTitle = useBlockDisplayTitle( {
|
|
72
|
-
clientId: clientIds[ 0 ],
|
|
73
|
-
maximumLength: 35,
|
|
74
|
-
} );
|
|
75
|
-
|
|
76
|
-
let blockDescription = isSingleBlockSelected
|
|
77
|
-
? _x(
|
|
78
|
-
'This block is connected.',
|
|
79
|
-
'block toolbar button label and description'
|
|
80
|
-
)
|
|
81
|
-
: _x(
|
|
82
|
-
'These blocks are connected.',
|
|
83
|
-
'block toolbar button label and description'
|
|
84
|
-
);
|
|
85
|
-
if ( isConnectedToPatternOverrides && firstBlockName ) {
|
|
86
|
-
blockDescription = isSingleBlockSelected
|
|
87
|
-
? sprintf(
|
|
88
|
-
/* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
|
|
89
|
-
__( 'This %1$s is editable using the "%2$s" override.' ),
|
|
90
|
-
firstBlockTitle.toLowerCase(),
|
|
91
|
-
firstBlockName
|
|
92
|
-
)
|
|
93
|
-
: __( 'These blocks are editable using overrides.' );
|
|
94
|
-
}
|
|
95
|
-
const descriptionId = useId();
|
|
96
|
-
|
|
97
|
-
return (
|
|
98
|
-
<ToolbarGroup>
|
|
99
|
-
<ToolbarItem>
|
|
100
|
-
{ ( toggleProps ) => (
|
|
101
|
-
<DropdownMenu
|
|
102
|
-
className="block-editor-block-bindings-toolbar-indicator"
|
|
103
|
-
label={ firstBlockTitle }
|
|
104
|
-
popoverProps={ {
|
|
105
|
-
placement: 'bottom-start',
|
|
106
|
-
className:
|
|
107
|
-
'block-editor-block-bindings-toolbar-indicator__popover',
|
|
108
|
-
} }
|
|
109
|
-
icon={
|
|
110
|
-
<>
|
|
111
|
-
<BlockIcon
|
|
112
|
-
icon={ icon }
|
|
113
|
-
className="block-editor-block-bindings-toolbar-indicator-icon"
|
|
114
|
-
showColors
|
|
115
|
-
/>
|
|
116
|
-
</>
|
|
117
|
-
}
|
|
118
|
-
toggleProps={ {
|
|
119
|
-
describedBy: blockDescription,
|
|
120
|
-
...toggleProps,
|
|
121
|
-
} }
|
|
122
|
-
menuProps={ {
|
|
123
|
-
orientation: 'both',
|
|
124
|
-
'aria-describedby': descriptionId,
|
|
125
|
-
} }
|
|
126
|
-
>
|
|
127
|
-
{ () => (
|
|
128
|
-
<Text id={ descriptionId }>
|
|
129
|
-
{ blockDescription }
|
|
130
|
-
</Text>
|
|
131
|
-
) }
|
|
132
|
-
</DropdownMenu>
|
|
133
|
-
) }
|
|
134
|
-
</ToolbarItem>
|
|
135
|
-
</ToolbarGroup>
|
|
136
|
-
);
|
|
137
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
.block-editor-block-bindings-toolbar-indicator__popover .components-popover__content {
|
|
2
|
-
min-width: 260px;
|
|
3
|
-
padding: $grid-unit-20;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.block-editor-block-bindings-toolbar-indicator .block-editor-block-bindings-toolbar-indicator-icon.has-colors svg {
|
|
7
|
-
fill: var(--wp-block-synced-color);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.editor-collapsible-block-toolbar .block-editor-block-bindings-toolbar-indicator {
|
|
11
|
-
height: 32px;
|
|
12
|
-
}
|