@wordpress/block-editor 12.18.0 → 12.18.1
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/dimensions-tool/aspect-ratio-tool.js +2 -1
- package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +30 -5
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +9 -7
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +6 -0
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/hooks/dimensions.js +71 -1
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/index.js +2 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/style.js +3 -0
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +3 -2
- package/build/hooks/utils.js.map +1 -1
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js +2 -1
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +30 -5
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +9 -7
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +6 -0
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/hooks/dimensions.js +70 -2
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/style.js +3 -0
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +3 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/package.json +4 -4
- package/src/components/dimensions-tool/aspect-ratio-tool.js +4 -1
- package/src/components/global-styles/dimensions-panel.js +50 -1
- package/src/components/global-styles/hooks.js +9 -6
- package/src/components/global-styles/use-global-styles-output.js +6 -0
- package/src/hooks/dimensions.js +74 -3
- package/src/hooks/index.js +2 -0
- package/src/hooks/style.js +4 -0
- package/src/hooks/utils.js +4 -0
package/build/hooks/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_hooks","_blocks","_compose","_styleEngine","_background","_border","_color","_typography","_dimensions","_effects","_utils","_utils2","_blockEditingMode","styleSupportKeys","TYPOGRAPHY_SUPPORT_KEYS","EFFECTS_SUPPORT_KEYS","BORDER_SUPPORT_KEY","COLOR_SUPPORT_KEY","DIMENSIONS_SUPPORT_KEY","BACKGROUND_SUPPORT_KEY","SPACING_SUPPORT_KEY","hasStyleSupport","nameOrType","some","key","hasBlockSupport","getInlineStyles","styles","output","getCSSRules","forEach","rule","value","addAttribute","settings","attributes","style","Object","assign","type","skipSerializationPathsEdit","TYPOGRAPHY_SUPPORT_KEY","SHADOW_SUPPORT_KEY","skipSerializationPathsSave","skipSerializationPathsSaveChecks","renamedFeatures","gradients","omitStyle","paths","preserveReference","newStyle","JSON","parse","stringify","Array","isArray","path","split","length","firstSubpath","restPath","addSaveProps","props","blockNameOrType","skipPaths","entries","indicator","skipSerialization","getBlockSupport","featureName","feature","BlockStyleControls","clientId","name","setAttributes","__unstableParentLayout","useBlockSettings","blockEditingMode","useBlockEditingMode","passedProps","_react","createElement","Fragment","ColorEdit","BackgroundImagePanel","TypographyPanel","BorderPanel","DimensionsPanel","EffectsPanel","_default","edit","hasSupport","attributeKeys","useBlockProps","exports","default","elementTypes","elementType","pseudo","elements","blockElementsContainerIdentifier","useInstanceId","baseElementSelector","blockElementStyles","useMemo","elementCSSRules","shouldSkipSerialization","elementStyles","selector","scopeSelector","ELEMENTS","push","compileCSS","pseudoSelector","element","join","undefined","useStyleOverride","css","className","addFilter"],"sources":["@wordpress/block-editor/src/hooks/style.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { getCSSRules, compileCSS } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from './background';\nimport { BORDER_SUPPORT_KEY, BorderPanel } from './border';\nimport { COLOR_SUPPORT_KEY, ColorEdit } from './color';\nimport {\n\tTypographyPanel,\n\tTYPOGRAPHY_SUPPORT_KEY,\n\tTYPOGRAPHY_SUPPORT_KEYS,\n} from './typography';\nimport {\n\tDIMENSIONS_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n\tDimensionsPanel,\n} from './dimensions';\nimport {\n\tEFFECTS_SUPPORT_KEYS,\n\tSHADOW_SUPPORT_KEY,\n\tEffectsPanel,\n} from './effects';\nimport {\n\tshouldSkipSerialization,\n\tuseStyleOverride,\n\tuseBlockSettings,\n} from './utils';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst styleSupportKeys = [\n\t...TYPOGRAPHY_SUPPORT_KEYS,\n\t...EFFECTS_SUPPORT_KEYS,\n\tBORDER_SUPPORT_KEY,\n\tCOLOR_SUPPORT_KEY,\n\tDIMENSIONS_SUPPORT_KEY,\n\tBACKGROUND_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n];\n\nconst hasStyleSupport = ( nameOrType ) =>\n\tstyleSupportKeys.some( ( key ) => hasBlockSupport( nameOrType, key ) );\n\n/**\n * Returns the inline styles to add depending on the style object\n *\n * @param {Object} styles Styles configuration.\n *\n * @return {Object} Flattened CSS variables declaration.\n */\nexport function getInlineStyles( styles = {} ) {\n\tconst output = {};\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tgetCSSRules( styles ).forEach( ( rule ) => {\n\t\toutput[ rule.key ] = rule.value;\n\t} );\n\n\treturn output;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `style` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttribute( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsEdit = {\n\t[ `${ BORDER_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [ 'border' ],\n\t[ `${ COLOR_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tCOLOR_SUPPORT_KEY,\n\t],\n\t[ `${ TYPOGRAPHY_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t],\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tDIMENSIONS_SUPPORT_KEY,\n\t],\n\t[ `${ SPACING_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tSPACING_SUPPORT_KEY,\n\t],\n\t[ `${ SHADOW_SUPPORT_KEY }` ]: [ SHADOW_SUPPORT_KEY ],\n};\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * Extends the Edit skip paths to enable skipping additional paths in just\n * the Save component. This allows a block support to be serialized within the\n * editor, while using an alternate approach, such as server-side rendering, when\n * the support is saved.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsSave = {\n\t...skipSerializationPathsEdit,\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: [ BACKGROUND_SUPPORT_KEY ], // Skip serialization of background support in save mode.\n};\n\nconst skipSerializationPathsSaveChecks = {\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: true,\n};\n\n/**\n * A dictionary used to normalize feature names between support flags, style\n * object properties and __experimentSkipSerialization configuration arrays.\n *\n * This allows not having to provide a migration for a support flag and possible\n * backwards compatibility bridges, while still achieving consistency between\n * the support flag and the skip serialization array.\n *\n * @constant\n * @type {Record<string, string>}\n */\nconst renamedFeatures = { gradients: 'gradient' };\n\n/**\n * A utility function used to remove one or more paths from a style object.\n * Works in a way similar to Lodash's `omit()`. See unit tests and examples below.\n *\n * It supports a single string path:\n *\n * ```\n * omitStyle( { color: 'red' }, 'color' ); // {}\n * ```\n *\n * or an array of paths:\n *\n * ```\n * omitStyle( { color: 'red', background: '#fff' }, [ 'color', 'background' ] ); // {}\n * ```\n *\n * It also allows you to specify paths at multiple levels in a string.\n *\n * ```\n * omitStyle( { typography: { textDecoration: 'underline' } }, 'typography.textDecoration' ); // {}\n * ```\n *\n * You can remove multiple paths at the same time:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t'typography.textDecoration',\n * \t\t\t'typography.textTransform',\n *\t\t]\n * );\n * // {}\n * ```\n *\n * You can also specify nested paths as arrays:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'typography', 'textDecoration' ],\n * \t\t\t[ 'typography', 'textTransform' ],\n *\t\t]\n * );\n * // {}\n * ```\n *\n * With regards to nesting of styles, infinite depth is supported:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\tborder: {\n * \t\t\t\tradius: {\n * \t\t\t\t\ttopLeft: '10px',\n * \t\t\t\t\ttopRight: '0.5rem',\n * \t\t\t\t}\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'border', 'radius', 'topRight' ],\n *\t\t]\n * );\n * // { border: { radius: { topLeft: '10px' } } }\n * ```\n *\n * The third argument, `preserveReference`, defines how to treat the input style object.\n * It is mostly necessary to properly handle mutation when recursively handling the style object.\n * Defaulting to `false`, this will always create a new object, avoiding to mutate `style`.\n * However, when recursing, we change that value to `true` in order to work with a single copy\n * of the original style object.\n *\n * @see https://lodash.com/docs/4.17.15#omit\n *\n * @param {Object} style Styles object.\n * @param {Array|string} paths Paths to remove.\n * @param {boolean} preserveReference True to mutate the `style` object, false otherwise.\n * @return {Object} Styles object with the specified paths removed.\n */\nexport function omitStyle( style, paths, preserveReference = false ) {\n\tif ( ! style ) {\n\t\treturn style;\n\t}\n\n\tlet newStyle = style;\n\tif ( ! preserveReference ) {\n\t\tnewStyle = JSON.parse( JSON.stringify( style ) );\n\t}\n\n\tif ( ! Array.isArray( paths ) ) {\n\t\tpaths = [ paths ];\n\t}\n\n\tpaths.forEach( ( path ) => {\n\t\tif ( ! Array.isArray( path ) ) {\n\t\t\tpath = path.split( '.' );\n\t\t}\n\n\t\tif ( path.length > 1 ) {\n\t\t\tconst [ firstSubpath, ...restPath ] = path;\n\t\t\tomitStyle( newStyle[ firstSubpath ], [ restPath ], true );\n\t\t} else if ( path.length === 1 ) {\n\t\t\tdelete newStyle[ path[ 0 ] ];\n\t\t}\n\t} );\n\n\treturn newStyle;\n}\n\n/**\n * Override props assigned to save component to inject the CSS variables definition.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object|string} blockNameOrType Block type.\n * @param {Object} attributes Block attributes.\n * @param {?Record<string, string[]>} skipPaths An object of keys and paths to skip serialization.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps(\n\tprops,\n\tblockNameOrType,\n\tattributes,\n\tskipPaths = skipSerializationPathsSave\n) {\n\tif ( ! hasStyleSupport( blockNameOrType ) ) {\n\t\treturn props;\n\t}\n\n\tlet { style } = attributes;\n\tObject.entries( skipPaths ).forEach( ( [ indicator, path ] ) => {\n\t\tconst skipSerialization =\n\t\t\tskipSerializationPathsSaveChecks[ indicator ] ||\n\t\t\tgetBlockSupport( blockNameOrType, indicator );\n\n\t\tif ( skipSerialization === true ) {\n\t\t\tstyle = omitStyle( style, path );\n\t\t}\n\n\t\tif ( Array.isArray( skipSerialization ) ) {\n\t\t\tskipSerialization.forEach( ( featureName ) => {\n\t\t\t\tconst feature = renamedFeatures[ featureName ] || featureName;\n\t\t\t\tstyle = omitStyle( style, [ [ ...path, feature ] ] );\n\t\t\t} );\n\t\t}\n\t} );\n\n\tprops.style = {\n\t\t...getInlineStyles( style ),\n\t\t...props.style,\n\t};\n\n\treturn props;\n}\n\nfunction BlockStyleControls( {\n\tclientId,\n\tname,\n\tsetAttributes,\n\t__unstableParentLayout,\n} ) {\n\tconst settings = useBlockSettings( name, __unstableParentLayout );\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst passedProps = {\n\t\tclientId,\n\t\tname,\n\t\tsetAttributes,\n\t\tsettings,\n\t};\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<ColorEdit { ...passedProps } />\n\t\t\t<BackgroundImagePanel { ...passedProps } />\n\t\t\t<TypographyPanel { ...passedProps } />\n\t\t\t<BorderPanel { ...passedProps } />\n\t\t\t<DimensionsPanel { ...passedProps } />\n\t\t\t<EffectsPanel { ...passedProps } />\n\t\t</>\n\t);\n}\n\nexport default {\n\tedit: BlockStyleControls,\n\thasSupport: hasStyleSupport,\n\taddSaveProps,\n\tattributeKeys: [ 'style' ],\n\tuseBlockProps,\n};\n\n// Defines which element types are supported, including their hover styles or\n// any other elements that have been included under a single element type\n// e.g. heading and h1-h6.\nconst elementTypes = [\n\t{ elementType: 'button' },\n\t{ elementType: 'link', pseudo: [ ':hover' ] },\n\t{\n\t\telementType: 'heading',\n\t\telements: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n\t},\n];\n\nfunction useBlockProps( { name, style } ) {\n\tconst blockElementsContainerIdentifier = `wp-elements-${ useInstanceId(\n\t\tuseBlockProps\n\t) }`;\n\n\t// The .editor-styles-wrapper selector is required on elements styles. As it is\n\t// added to all other editor styles, not providing it causes reset and global\n\t// styles to override element styles because of higher specificity.\n\tconst baseElementSelector = `.editor-styles-wrapper .${ blockElementsContainerIdentifier }`;\n\tconst blockElementStyles = style?.elements;\n\n\tconst styles = useMemo( () => {\n\t\tif ( ! blockElementStyles ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementCSSRules = [];\n\n\t\telementTypes.forEach( ( { elementType, pseudo, elements } ) => {\n\t\t\tconst skipSerialization = shouldSkipSerialization(\n\t\t\t\tname,\n\t\t\t\tCOLOR_SUPPORT_KEY,\n\t\t\t\telementType\n\t\t\t);\n\n\t\t\tif ( skipSerialization ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst elementStyles = blockElementStyles?.[ elementType ];\n\n\t\t\t// Process primary element type styles.\n\t\t\tif ( elementStyles ) {\n\t\t\t\tconst selector = scopeSelector(\n\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\tELEMENTS[ elementType ]\n\t\t\t\t);\n\n\t\t\t\telementCSSRules.push(\n\t\t\t\t\tcompileCSS( elementStyles, { selector } )\n\t\t\t\t);\n\n\t\t\t\t// Process any interactive states for the element type.\n\t\t\t\tif ( pseudo ) {\n\t\t\t\t\tpseudo.forEach( ( pseudoSelector ) => {\n\t\t\t\t\t\tif ( elementStyles[ pseudoSelector ] ) {\n\t\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\t\tcompileCSS( elementStyles[ pseudoSelector ], {\n\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\t\t`${ ELEMENTS[ elementType ] }${ pseudoSelector }`\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);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process related elements e.g. h1-h6 for headings\n\t\t\tif ( elements ) {\n\t\t\t\telements.forEach( ( element ) => {\n\t\t\t\t\tif ( blockElementStyles[ element ] ) {\n\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\tcompileCSS( blockElementStyles[ element ], {\n\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\tELEMENTS[ element ]\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}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\treturn elementCSSRules.length > 0\n\t\t\t? elementCSSRules.join( '' )\n\t\t\t: undefined;\n\t}, [ baseElementSelector, blockElementStyles, name ] );\n\n\tuseStyleOverride( { css: styles } );\n\n\treturn addSaveProps(\n\t\t{ className: blockElementsContainerIdentifier },\n\t\tname,\n\t\t{ style },\n\t\tskipSerializationPathsEdit\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addAttribute',\n\taddAttribute\n);\n"],"mappings":";;;;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAKA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAKA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAKA,IAAAS,WAAA,GAAAT,OAAA;AAKA,IAAAU,QAAA,GAAAV,OAAA;AAKA,IAAAW,MAAA,GAAAX,OAAA;AAKA,IAAAY,OAAA,GAAAZ,OAAA;AACA,IAAAa,iBAAA,GAAAb,OAAA;AAxCA;AACA;AACA;;AAWA;AACA;AACA;;AA2BA,MAAMc,gBAAgB,GAAG,CACxB,GAAGC,mCAAuB,EAC1B,GAAGC,6BAAoB,EACvBC,0BAAkB,EAClBC,wBAAiB,EACjBC,kCAAsB,EACtBC,kCAAsB,EACtBC,+BAAmB,CACnB;AAED,MAAMC,eAAe,GAAKC,UAAU,IACnCT,gBAAgB,CAACU,IAAI,CAAIC,GAAG,IAAM,IAAAC,uBAAe,EAAEH,UAAU,EAAEE,GAAI,CAAE,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,eAAeA,CAAEC,MAAM,GAAG,CAAC,CAAC,EAAG;EAC9C,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjB;EACA;EACA,IAAAC,wBAAW,EAAEF,MAAO,CAAC,CAACG,OAAO,CAAIC,IAAI,IAAM;IAC1CH,MAAM,CAAEG,IAAI,CAACP,GAAG,CAAE,GAAGO,IAAI,CAACC,KAAK;EAChC,CAAE,CAAC;EAEH,OAAOJ,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,YAAYA,CAAEC,QAAQ,EAAG;EACjC,IAAK,CAAEb,eAAe,CAAEa,QAAS,CAAC,EAAG;IACpC,OAAOA,QAAQ;EAChB;;EAEA;EACA,IAAK,CAAEA,QAAQ,CAACC,UAAU,CAACC,KAAK,EAAG;IAClCC,MAAM,CAACC,MAAM,CAAEJ,QAAQ,CAACC,UAAU,EAAE;MACnCC,KAAK,EAAE;QACNG,IAAI,EAAE;MACP;IACD,CAAE,CAAC;EACJ;EAEA,OAAOL,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,0BAA0B,GAAG;EAClC,CAAG,GAAGxB,0BAAoB,kCAAiC,GAAI,CAAE,QAAQ,CAAE;EAC3E,CAAG,GAAGC,wBAAmB,kCAAiC,GAAI,CAC7DA,wBAAiB,CACjB;EACD,CAAG,GAAGwB,kCAAwB,kCAAiC,GAAI,CAClEA,kCAAsB,CACtB;EACD,CAAG,GAAGvB,kCAAwB,kCAAiC,GAAI,CAClEA,kCAAsB,CACtB;EACD,CAAG,GAAGE,+BAAqB,kCAAiC,GAAI,CAC/DA,+BAAmB,CACnB;EACD,CAAG,GAAGsB,2BAAoB,EAAC,GAAI,CAAEA,2BAAkB;AACpD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAAG;EAClC,GAAGH,0BAA0B;EAC7B,CAAG,GAAGrB,kCAAwB,EAAC,GAAI,CAAEA,kCAAsB,CAAE,CAAE;AAChE,CAAC;;AAED,MAAMyB,gCAAgC,GAAG;EACxC,CAAG,GAAGzB,kCAAwB,EAAC,GAAI;AACpC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,eAAe,GAAG;EAAEC,SAAS,EAAE;AAAW,CAAC;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_hooks","_blocks","_compose","_styleEngine","_background","_border","_color","_typography","_dimensions","_effects","_utils","_utils2","_blockEditingMode","styleSupportKeys","TYPOGRAPHY_SUPPORT_KEYS","EFFECTS_SUPPORT_KEYS","BORDER_SUPPORT_KEY","COLOR_SUPPORT_KEY","DIMENSIONS_SUPPORT_KEY","BACKGROUND_SUPPORT_KEY","SPACING_SUPPORT_KEY","hasStyleSupport","nameOrType","some","key","hasBlockSupport","getInlineStyles","styles","output","getCSSRules","forEach","rule","value","addAttribute","settings","attributes","style","Object","assign","type","skipSerializationPathsEdit","TYPOGRAPHY_SUPPORT_KEY","SHADOW_SUPPORT_KEY","skipSerializationPathsSave","skipSerializationPathsSaveChecks","renamedFeatures","gradients","omitStyle","paths","preserveReference","newStyle","JSON","parse","stringify","Array","isArray","path","split","length","firstSubpath","restPath","addSaveProps","props","blockNameOrType","skipPaths","entries","indicator","skipSerialization","getBlockSupport","featureName","feature","BlockStyleControls","clientId","name","setAttributes","__unstableParentLayout","useBlockSettings","blockEditingMode","useBlockEditingMode","passedProps","_react","createElement","Fragment","ColorEdit","BackgroundImagePanel","TypographyPanel","BorderPanel","DimensionsPanel","EffectsPanel","_default","edit","hasSupport","attributeKeys","useBlockProps","exports","default","elementTypes","elementType","pseudo","elements","blockElementsContainerIdentifier","useInstanceId","baseElementSelector","blockElementStyles","useMemo","elementCSSRules","shouldSkipSerialization","elementStyles","selector","scopeSelector","ELEMENTS","push","compileCSS","pseudoSelector","element","join","undefined","useStyleOverride","css","className","addFilter"],"sources":["@wordpress/block-editor/src/hooks/style.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { getCSSRules, compileCSS } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from './background';\nimport { BORDER_SUPPORT_KEY, BorderPanel } from './border';\nimport { COLOR_SUPPORT_KEY, ColorEdit } from './color';\nimport {\n\tTypographyPanel,\n\tTYPOGRAPHY_SUPPORT_KEY,\n\tTYPOGRAPHY_SUPPORT_KEYS,\n} from './typography';\nimport {\n\tDIMENSIONS_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n\tDimensionsPanel,\n} from './dimensions';\nimport {\n\tEFFECTS_SUPPORT_KEYS,\n\tSHADOW_SUPPORT_KEY,\n\tEffectsPanel,\n} from './effects';\nimport {\n\tshouldSkipSerialization,\n\tuseStyleOverride,\n\tuseBlockSettings,\n} from './utils';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst styleSupportKeys = [\n\t...TYPOGRAPHY_SUPPORT_KEYS,\n\t...EFFECTS_SUPPORT_KEYS,\n\tBORDER_SUPPORT_KEY,\n\tCOLOR_SUPPORT_KEY,\n\tDIMENSIONS_SUPPORT_KEY,\n\tBACKGROUND_SUPPORT_KEY,\n\tSPACING_SUPPORT_KEY,\n];\n\nconst hasStyleSupport = ( nameOrType ) =>\n\tstyleSupportKeys.some( ( key ) => hasBlockSupport( nameOrType, key ) );\n\n/**\n * Returns the inline styles to add depending on the style object\n *\n * @param {Object} styles Styles configuration.\n *\n * @return {Object} Flattened CSS variables declaration.\n */\nexport function getInlineStyles( styles = {} ) {\n\tconst output = {};\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tgetCSSRules( styles ).forEach( ( rule ) => {\n\t\toutput[ rule.key ] = rule.value;\n\t} );\n\n\treturn output;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `style` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttribute( settings ) {\n\tif ( ! hasStyleSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsEdit = {\n\t[ `${ BORDER_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [ 'border' ],\n\t[ `${ COLOR_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tCOLOR_SUPPORT_KEY,\n\t],\n\t[ `${ TYPOGRAPHY_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t],\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tDIMENSIONS_SUPPORT_KEY,\n\t],\n\t[ `${ SPACING_SUPPORT_KEY }.__experimentalSkipSerialization` ]: [\n\t\tSPACING_SUPPORT_KEY,\n\t],\n\t[ `${ SHADOW_SUPPORT_KEY }` ]: [ SHADOW_SUPPORT_KEY ],\n};\n\n/**\n * A dictionary of paths to flag skipping block support serialization as the key,\n * with values providing the style paths to be omitted from serialization.\n *\n * Extends the Edit skip paths to enable skipping additional paths in just\n * the Save component. This allows a block support to be serialized within the\n * editor, while using an alternate approach, such as server-side rendering, when\n * the support is saved.\n *\n * @constant\n * @type {Record<string, string[]>}\n */\nconst skipSerializationPathsSave = {\n\t...skipSerializationPathsEdit,\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.aspectRatio` ]: [\n\t\t`${ DIMENSIONS_SUPPORT_KEY }.aspectRatio`,\n\t], // Skip serialization of aspect ratio in save mode.\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: [ BACKGROUND_SUPPORT_KEY ], // Skip serialization of background support in save mode.\n};\n\nconst skipSerializationPathsSaveChecks = {\n\t[ `${ DIMENSIONS_SUPPORT_KEY }.aspectRatio` ]: true,\n\t[ `${ BACKGROUND_SUPPORT_KEY }` ]: true,\n};\n\n/**\n * A dictionary used to normalize feature names between support flags, style\n * object properties and __experimentSkipSerialization configuration arrays.\n *\n * This allows not having to provide a migration for a support flag and possible\n * backwards compatibility bridges, while still achieving consistency between\n * the support flag and the skip serialization array.\n *\n * @constant\n * @type {Record<string, string>}\n */\nconst renamedFeatures = { gradients: 'gradient' };\n\n/**\n * A utility function used to remove one or more paths from a style object.\n * Works in a way similar to Lodash's `omit()`. See unit tests and examples below.\n *\n * It supports a single string path:\n *\n * ```\n * omitStyle( { color: 'red' }, 'color' ); // {}\n * ```\n *\n * or an array of paths:\n *\n * ```\n * omitStyle( { color: 'red', background: '#fff' }, [ 'color', 'background' ] ); // {}\n * ```\n *\n * It also allows you to specify paths at multiple levels in a string.\n *\n * ```\n * omitStyle( { typography: { textDecoration: 'underline' } }, 'typography.textDecoration' ); // {}\n * ```\n *\n * You can remove multiple paths at the same time:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t'typography.textDecoration',\n * \t\t\t'typography.textTransform',\n *\t\t]\n * );\n * // {}\n * ```\n *\n * You can also specify nested paths as arrays:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\ttypography: {\n * \t\t\t\ttextDecoration: 'underline',\n * \t\t\t\ttextTransform: 'uppercase',\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'typography', 'textDecoration' ],\n * \t\t\t[ 'typography', 'textTransform' ],\n *\t\t]\n * );\n * // {}\n * ```\n *\n * With regards to nesting of styles, infinite depth is supported:\n *\n * ```\n * omitStyle(\n * \t\t{\n * \t\t\tborder: {\n * \t\t\t\tradius: {\n * \t\t\t\t\ttopLeft: '10px',\n * \t\t\t\t\ttopRight: '0.5rem',\n * \t\t\t\t}\n * \t\t\t}\n *\t\t},\n *\t\t[\n * \t\t\t[ 'border', 'radius', 'topRight' ],\n *\t\t]\n * );\n * // { border: { radius: { topLeft: '10px' } } }\n * ```\n *\n * The third argument, `preserveReference`, defines how to treat the input style object.\n * It is mostly necessary to properly handle mutation when recursively handling the style object.\n * Defaulting to `false`, this will always create a new object, avoiding to mutate `style`.\n * However, when recursing, we change that value to `true` in order to work with a single copy\n * of the original style object.\n *\n * @see https://lodash.com/docs/4.17.15#omit\n *\n * @param {Object} style Styles object.\n * @param {Array|string} paths Paths to remove.\n * @param {boolean} preserveReference True to mutate the `style` object, false otherwise.\n * @return {Object} Styles object with the specified paths removed.\n */\nexport function omitStyle( style, paths, preserveReference = false ) {\n\tif ( ! style ) {\n\t\treturn style;\n\t}\n\n\tlet newStyle = style;\n\tif ( ! preserveReference ) {\n\t\tnewStyle = JSON.parse( JSON.stringify( style ) );\n\t}\n\n\tif ( ! Array.isArray( paths ) ) {\n\t\tpaths = [ paths ];\n\t}\n\n\tpaths.forEach( ( path ) => {\n\t\tif ( ! Array.isArray( path ) ) {\n\t\t\tpath = path.split( '.' );\n\t\t}\n\n\t\tif ( path.length > 1 ) {\n\t\t\tconst [ firstSubpath, ...restPath ] = path;\n\t\t\tomitStyle( newStyle[ firstSubpath ], [ restPath ], true );\n\t\t} else if ( path.length === 1 ) {\n\t\t\tdelete newStyle[ path[ 0 ] ];\n\t\t}\n\t} );\n\n\treturn newStyle;\n}\n\n/**\n * Override props assigned to save component to inject the CSS variables definition.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object|string} blockNameOrType Block type.\n * @param {Object} attributes Block attributes.\n * @param {?Record<string, string[]>} skipPaths An object of keys and paths to skip serialization.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps(\n\tprops,\n\tblockNameOrType,\n\tattributes,\n\tskipPaths = skipSerializationPathsSave\n) {\n\tif ( ! hasStyleSupport( blockNameOrType ) ) {\n\t\treturn props;\n\t}\n\n\tlet { style } = attributes;\n\tObject.entries( skipPaths ).forEach( ( [ indicator, path ] ) => {\n\t\tconst skipSerialization =\n\t\t\tskipSerializationPathsSaveChecks[ indicator ] ||\n\t\t\tgetBlockSupport( blockNameOrType, indicator );\n\n\t\tif ( skipSerialization === true ) {\n\t\t\tstyle = omitStyle( style, path );\n\t\t}\n\n\t\tif ( Array.isArray( skipSerialization ) ) {\n\t\t\tskipSerialization.forEach( ( featureName ) => {\n\t\t\t\tconst feature = renamedFeatures[ featureName ] || featureName;\n\t\t\t\tstyle = omitStyle( style, [ [ ...path, feature ] ] );\n\t\t\t} );\n\t\t}\n\t} );\n\n\tprops.style = {\n\t\t...getInlineStyles( style ),\n\t\t...props.style,\n\t};\n\n\treturn props;\n}\n\nfunction BlockStyleControls( {\n\tclientId,\n\tname,\n\tsetAttributes,\n\t__unstableParentLayout,\n} ) {\n\tconst settings = useBlockSettings( name, __unstableParentLayout );\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst passedProps = {\n\t\tclientId,\n\t\tname,\n\t\tsetAttributes,\n\t\tsettings,\n\t};\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<ColorEdit { ...passedProps } />\n\t\t\t<BackgroundImagePanel { ...passedProps } />\n\t\t\t<TypographyPanel { ...passedProps } />\n\t\t\t<BorderPanel { ...passedProps } />\n\t\t\t<DimensionsPanel { ...passedProps } />\n\t\t\t<EffectsPanel { ...passedProps } />\n\t\t</>\n\t);\n}\n\nexport default {\n\tedit: BlockStyleControls,\n\thasSupport: hasStyleSupport,\n\taddSaveProps,\n\tattributeKeys: [ 'style' ],\n\tuseBlockProps,\n};\n\n// Defines which element types are supported, including their hover styles or\n// any other elements that have been included under a single element type\n// e.g. heading and h1-h6.\nconst elementTypes = [\n\t{ elementType: 'button' },\n\t{ elementType: 'link', pseudo: [ ':hover' ] },\n\t{\n\t\telementType: 'heading',\n\t\telements: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n\t},\n];\n\nfunction useBlockProps( { name, style } ) {\n\tconst blockElementsContainerIdentifier = `wp-elements-${ useInstanceId(\n\t\tuseBlockProps\n\t) }`;\n\n\t// The .editor-styles-wrapper selector is required on elements styles. As it is\n\t// added to all other editor styles, not providing it causes reset and global\n\t// styles to override element styles because of higher specificity.\n\tconst baseElementSelector = `.editor-styles-wrapper .${ blockElementsContainerIdentifier }`;\n\tconst blockElementStyles = style?.elements;\n\n\tconst styles = useMemo( () => {\n\t\tif ( ! blockElementStyles ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementCSSRules = [];\n\n\t\telementTypes.forEach( ( { elementType, pseudo, elements } ) => {\n\t\t\tconst skipSerialization = shouldSkipSerialization(\n\t\t\t\tname,\n\t\t\t\tCOLOR_SUPPORT_KEY,\n\t\t\t\telementType\n\t\t\t);\n\n\t\t\tif ( skipSerialization ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst elementStyles = blockElementStyles?.[ elementType ];\n\n\t\t\t// Process primary element type styles.\n\t\t\tif ( elementStyles ) {\n\t\t\t\tconst selector = scopeSelector(\n\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\tELEMENTS[ elementType ]\n\t\t\t\t);\n\n\t\t\t\telementCSSRules.push(\n\t\t\t\t\tcompileCSS( elementStyles, { selector } )\n\t\t\t\t);\n\n\t\t\t\t// Process any interactive states for the element type.\n\t\t\t\tif ( pseudo ) {\n\t\t\t\t\tpseudo.forEach( ( pseudoSelector ) => {\n\t\t\t\t\t\tif ( elementStyles[ pseudoSelector ] ) {\n\t\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\t\tcompileCSS( elementStyles[ pseudoSelector ], {\n\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\t\t`${ ELEMENTS[ elementType ] }${ pseudoSelector }`\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);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process related elements e.g. h1-h6 for headings\n\t\t\tif ( elements ) {\n\t\t\t\telements.forEach( ( element ) => {\n\t\t\t\t\tif ( blockElementStyles[ element ] ) {\n\t\t\t\t\t\telementCSSRules.push(\n\t\t\t\t\t\t\tcompileCSS( blockElementStyles[ element ], {\n\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\tbaseElementSelector,\n\t\t\t\t\t\t\t\t\tELEMENTS[ element ]\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}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\treturn elementCSSRules.length > 0\n\t\t\t? elementCSSRules.join( '' )\n\t\t\t: undefined;\n\t}, [ baseElementSelector, blockElementStyles, name ] );\n\n\tuseStyleOverride( { css: styles } );\n\n\treturn addSaveProps(\n\t\t{ className: blockElementsContainerIdentifier },\n\t\tname,\n\t\t{ style },\n\t\tskipSerializationPathsEdit\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/style/addAttribute',\n\taddAttribute\n);\n"],"mappings":"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"}
|
package/build/hooks/utils.js
CHANGED
|
@@ -149,7 +149,7 @@ function useStyleOverride({
|
|
|
149
149
|
* @return {Object} Settings object.
|
|
150
150
|
*/
|
|
151
151
|
function useBlockSettings(name, parentLayout) {
|
|
152
|
-
const [backgroundImage, backgroundSize, fontFamilies, userFontSizes, themeFontSizes, defaultFontSizes, defaultFontSizesEnabled, customFontSize, fontStyle, fontWeight, lineHeight, textColumns, textDecoration, writingMode, textTransform, letterSpacing, padding, margin, blockGap, spacingSizes, units, minHeight, layout, borderColor, borderRadius, borderStyle, borderWidth, customColorsEnabled, customColors, customDuotone, themeColors, defaultColors, defaultPalette, defaultDuotone, userDuotonePalette, themeDuotonePalette, defaultDuotonePalette, userGradientPalette, themeGradientPalette, defaultGradientPalette, defaultGradients, areCustomGradientsEnabled, isBackgroundEnabled, isLinkEnabled, isTextEnabled, isHeadingEnabled, isButtonEnabled, shadow] = (0, _components.useSettings)('background.backgroundImage', 'background.backgroundSize', 'typography.fontFamilies', 'typography.fontSizes.custom', 'typography.fontSizes.theme', 'typography.fontSizes.default', 'typography.defaultFontSizes', 'typography.customFontSize', 'typography.fontStyle', 'typography.fontWeight', 'typography.lineHeight', 'typography.textColumns', 'typography.textDecoration', 'typography.writingMode', 'typography.textTransform', 'typography.letterSpacing', 'spacing.padding', 'spacing.margin', 'spacing.blockGap', 'spacing.spacingSizes', 'spacing.units', 'dimensions.minHeight', 'layout', 'border.color', 'border.radius', 'border.style', 'border.width', 'color.custom', 'color.palette.custom', 'color.customDuotone', 'color.palette.theme', 'color.palette.default', 'color.defaultPalette', 'color.defaultDuotone', 'color.duotone.custom', 'color.duotone.theme', 'color.duotone.default', 'color.gradients.custom', 'color.gradients.theme', 'color.gradients.default', 'color.defaultGradients', 'color.customGradient', 'color.background', 'color.link', 'color.text', 'color.heading', 'color.button', 'shadow');
|
|
152
|
+
const [backgroundImage, backgroundSize, fontFamilies, userFontSizes, themeFontSizes, defaultFontSizes, defaultFontSizesEnabled, customFontSize, fontStyle, fontWeight, lineHeight, textColumns, textDecoration, writingMode, textTransform, letterSpacing, padding, margin, blockGap, spacingSizes, units, aspectRatio, minHeight, layout, borderColor, borderRadius, borderStyle, borderWidth, customColorsEnabled, customColors, customDuotone, themeColors, defaultColors, defaultPalette, defaultDuotone, userDuotonePalette, themeDuotonePalette, defaultDuotonePalette, userGradientPalette, themeGradientPalette, defaultGradientPalette, defaultGradients, areCustomGradientsEnabled, isBackgroundEnabled, isLinkEnabled, isTextEnabled, isHeadingEnabled, isButtonEnabled, shadow] = (0, _components.useSettings)('background.backgroundImage', 'background.backgroundSize', 'typography.fontFamilies', 'typography.fontSizes.custom', 'typography.fontSizes.theme', 'typography.fontSizes.default', 'typography.defaultFontSizes', 'typography.customFontSize', 'typography.fontStyle', 'typography.fontWeight', 'typography.lineHeight', 'typography.textColumns', 'typography.textDecoration', 'typography.writingMode', 'typography.textTransform', 'typography.letterSpacing', 'spacing.padding', 'spacing.margin', 'spacing.blockGap', 'spacing.spacingSizes', 'spacing.units', 'dimensions.aspectRatio', 'dimensions.minHeight', 'layout', 'border.color', 'border.radius', 'border.style', 'border.width', 'color.custom', 'color.palette.custom', 'color.customDuotone', 'color.palette.theme', 'color.palette.default', 'color.defaultPalette', 'color.defaultDuotone', 'color.duotone.custom', 'color.duotone.theme', 'color.duotone.default', 'color.gradients.custom', 'color.gradients.theme', 'color.gradients.default', 'color.defaultGradients', 'color.customGradient', 'color.background', 'color.link', 'color.text', 'color.heading', 'color.button', 'shadow');
|
|
153
153
|
const rawSettings = (0, _element.useMemo)(() => {
|
|
154
154
|
return {
|
|
155
155
|
background: {
|
|
@@ -220,13 +220,14 @@ function useBlockSettings(name, parentLayout) {
|
|
|
220
220
|
width: borderWidth
|
|
221
221
|
},
|
|
222
222
|
dimensions: {
|
|
223
|
+
aspectRatio,
|
|
223
224
|
minHeight
|
|
224
225
|
},
|
|
225
226
|
layout,
|
|
226
227
|
parentLayout,
|
|
227
228
|
shadow
|
|
228
229
|
};
|
|
229
|
-
}, [backgroundImage, backgroundSize, fontFamilies, userFontSizes, themeFontSizes, defaultFontSizes, defaultFontSizesEnabled, customFontSize, fontStyle, fontWeight, lineHeight, textColumns, textDecoration, textTransform, letterSpacing, writingMode, padding, margin, blockGap, spacingSizes, units, minHeight, layout, parentLayout, borderColor, borderRadius, borderStyle, borderWidth, customColorsEnabled, customColors, customDuotone, themeColors, defaultColors, defaultPalette, defaultDuotone, userDuotonePalette, themeDuotonePalette, defaultDuotonePalette, userGradientPalette, themeGradientPalette, defaultGradientPalette, defaultGradients, areCustomGradientsEnabled, isBackgroundEnabled, isLinkEnabled, isTextEnabled, isHeadingEnabled, isButtonEnabled, shadow]);
|
|
230
|
+
}, [backgroundImage, backgroundSize, fontFamilies, userFontSizes, themeFontSizes, defaultFontSizes, defaultFontSizesEnabled, customFontSize, fontStyle, fontWeight, lineHeight, textColumns, textDecoration, textTransform, letterSpacing, writingMode, padding, margin, blockGap, spacingSizes, units, aspectRatio, minHeight, layout, parentLayout, borderColor, borderRadius, borderStyle, borderWidth, customColorsEnabled, customColors, customDuotone, themeColors, defaultColors, defaultPalette, defaultDuotone, userDuotonePalette, themeDuotonePalette, defaultDuotonePalette, userGradientPalette, themeGradientPalette, defaultGradientPalette, defaultGradients, areCustomGradientsEnabled, isBackgroundEnabled, isLinkEnabled, isTextEnabled, isHeadingEnabled, isButtonEnabled, shadow]);
|
|
230
231
|
return (0, _hooks2.useSettingsForBlockElement)(rawSettings, name);
|
|
231
232
|
}
|
|
232
233
|
function createBlockEditFilter(features) {
|
package/build/hooks/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","_element","_data","_compose","_hooks","_context","_components","_hooks2","_object","_store","_lockUnlock","_classnames","_interopRequireDefault","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","Object","entries","map","key","value","filter","undefined","length","fromEntries","exports","transformStyles","activeSupports","migrationPaths","result","source","index","results","values","every","isActive","innerBlocks","referenceBlockAttributes","attributes","returnBlock","forEach","support","path","styleValue","getValueFromObjectPath","setImmutably","shouldSkipSerialization","blockNameOrType","featureSet","feature","getBlockSupport","skipSerialization","__experimentalSkipSerialization","includes","useStyleOverride","id","css","assets","__unstableType","setStyleOverride","deleteStyleOverride","unlock","useDispatch","blockEditorStore","fallbackId","useId","useEffect","_id","useBlockSettings","name","parentLayout","backgroundImage","backgroundSize","fontFamilies","userFontSizes","themeFontSizes","defaultFontSizes","defaultFontSizesEnabled","customFontSize","fontStyle","fontWeight","lineHeight","textColumns","textDecoration","writingMode","textTransform","letterSpacing","padding","margin","blockGap","spacingSizes","units","minHeight","layout","borderColor","borderRadius","borderStyle","borderWidth","customColorsEnabled","customColors","customDuotone","themeColors","defaultColors","defaultPalette","defaultDuotone","userDuotonePalette","themeDuotonePalette","defaultDuotonePalette","userGradientPalette","themeGradientPalette","defaultGradientPalette","defaultGradients","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","isHeadingEnabled","isButtonEnabled","shadow","useSettings","rawSettings","useMemo","background","color","palette","custom","theme","default","gradients","duotone","customGradient","link","heading","button","text","typography","fontSizes","spacing","border","radius","style","width","dimensions","useSettingsForBlockElement","createBlockEditFilter","features","settings","Edit","memo","edit","withBlockEditHooks","createHigherOrderComponent","OriginalBlockEdit","props","context","useBlockEditContext","i","hasSupport","attributeKeys","shareWithChildBlocks","shouldDisplayControls","mayDisplayControlsKey","mayDisplayParentControlsKey","neededProps","_react","createElement","isSelected","clientId","setAttributes","__unstableParentLayout","addFilter","BlockProps","useBlockProps","setAllWrapperProps","wrapperProps","setWrapperProps","next","prev","nextAll","BlockPropsPure","createBlockListBlockFilter","withBlockListBlockHooks","BlockListBlock","allWrapperProps","useState","fill","keys","Boolean","reduce","acc","className","classnames","createBlockSaveFilter","extraPropsFromHooks","accu","addSaveProps","neededAttributes","hasOwnProperty"],"sources":["@wordpress/block-editor/src/hooks/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { memo, useMemo, useEffect, useId, useState } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseBlockEditContext,\n\tmayDisplayControlsKey,\n\tmayDisplayParentControlsKey,\n} from '../components/block-edit/context';\nimport { useSettings } from '../components';\nimport { useSettingsForBlockElement } from '../components/global-styles/hooks';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\n\tconst cleanedNestedObjects = Object.entries( object )\n\t\t.map( ( [ key, value ] ) => [ key, cleanEmptyObject( value ) ] )\n\t\t.filter( ( [ , value ] ) => value !== undefined );\n\treturn ! cleanedNestedObjects.length\n\t\t? undefined\n\t\t: Object.fromEntries( cleanedNestedObjects );\n};\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif (\n\t\tObject.values( activeSupports ?? {} ).every(\n\t\t\t( isActive ) => ! isActive\n\t\t)\n\t) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tObject.entries( activeSupports ).forEach( ( [ support, isActive ] ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = getValueFromObjectPath(\n\t\t\t\t\treferenceBlockAttributes,\n\t\t\t\t\tpath\n\t\t\t\t);\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: setImmutably(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockNameOrType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization(\n\tblockNameOrType,\n\tfeatureSet,\n\tfeature\n) {\n\tconst support = getBlockSupport( blockNameOrType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n\nexport function useStyleOverride( { id, css, assets, __unstableType } = {} ) {\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst fallbackId = useId();\n\tuseEffect( () => {\n\t\t// Unmount if there is CSS and assets are empty.\n\t\tif ( ! css && ! assets ) return;\n\t\tconst _id = id || fallbackId;\n\t\tsetStyleOverride( _id, {\n\t\t\tid,\n\t\t\tcss,\n\t\t\tassets,\n\t\t\t__unstableType,\n\t\t} );\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( _id );\n\t\t};\n\t}, [\n\t\tid,\n\t\tcss,\n\t\tassets,\n\t\t__unstableType,\n\t\tfallbackId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n}\n\n/**\n * Based on the block and its context, returns an object of all the block settings.\n * This object can be passed as a prop to all the Styles UI components\n * (TypographyPanel, DimensionsPanel...).\n *\n * @param {string} name Block name.\n * @param {*} parentLayout Parent layout.\n *\n * @return {Object} Settings object.\n */\nexport function useBlockSettings( name, parentLayout ) {\n\tconst [\n\t\tbackgroundImage,\n\t\tbackgroundSize,\n\t\tfontFamilies,\n\t\tuserFontSizes,\n\t\tthemeFontSizes,\n\t\tdefaultFontSizes,\n\t\tdefaultFontSizesEnabled,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\twritingMode,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\tminHeight,\n\t\tlayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t\tisHeadingEnabled,\n\t\tisButtonEnabled,\n\t\tshadow,\n\t] = useSettings(\n\t\t'background.backgroundImage',\n\t\t'background.backgroundSize',\n\t\t'typography.fontFamilies',\n\t\t'typography.fontSizes.custom',\n\t\t'typography.fontSizes.theme',\n\t\t'typography.fontSizes.default',\n\t\t'typography.defaultFontSizes',\n\t\t'typography.customFontSize',\n\t\t'typography.fontStyle',\n\t\t'typography.fontWeight',\n\t\t'typography.lineHeight',\n\t\t'typography.textColumns',\n\t\t'typography.textDecoration',\n\t\t'typography.writingMode',\n\t\t'typography.textTransform',\n\t\t'typography.letterSpacing',\n\t\t'spacing.padding',\n\t\t'spacing.margin',\n\t\t'spacing.blockGap',\n\t\t'spacing.spacingSizes',\n\t\t'spacing.units',\n\t\t'dimensions.minHeight',\n\t\t'layout',\n\t\t'border.color',\n\t\t'border.radius',\n\t\t'border.style',\n\t\t'border.width',\n\t\t'color.custom',\n\t\t'color.palette.custom',\n\t\t'color.customDuotone',\n\t\t'color.palette.theme',\n\t\t'color.palette.default',\n\t\t'color.defaultPalette',\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default',\n\t\t'color.gradients.custom',\n\t\t'color.gradients.theme',\n\t\t'color.gradients.default',\n\t\t'color.defaultGradients',\n\t\t'color.customGradient',\n\t\t'color.background',\n\t\t'color.link',\n\t\t'color.text',\n\t\t'color.heading',\n\t\t'color.button',\n\t\t'shadow'\n\t);\n\n\tconst rawSettings = useMemo( () => {\n\t\treturn {\n\t\t\tbackground: {\n\t\t\t\tbackgroundImage,\n\t\t\t\tbackgroundSize,\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\tpalette: {\n\t\t\t\t\tcustom: customColors,\n\t\t\t\t\ttheme: themeColors,\n\t\t\t\t\tdefault: defaultColors,\n\t\t\t\t},\n\t\t\t\tgradients: {\n\t\t\t\t\tcustom: userGradientPalette,\n\t\t\t\t\ttheme: themeGradientPalette,\n\t\t\t\t\tdefault: defaultGradientPalette,\n\t\t\t\t},\n\t\t\t\tduotone: {\n\t\t\t\t\tcustom: userDuotonePalette,\n\t\t\t\t\ttheme: themeDuotonePalette,\n\t\t\t\t\tdefault: defaultDuotonePalette,\n\t\t\t\t},\n\t\t\t\tdefaultGradients,\n\t\t\t\tdefaultPalette,\n\t\t\t\tdefaultDuotone,\n\t\t\t\tcustom: customColorsEnabled,\n\t\t\t\tcustomGradient: areCustomGradientsEnabled,\n\t\t\t\tcustomDuotone,\n\t\t\t\tbackground: isBackgroundEnabled,\n\t\t\t\tlink: isLinkEnabled,\n\t\t\t\theading: isHeadingEnabled,\n\t\t\t\tbutton: isButtonEnabled,\n\t\t\t\ttext: isTextEnabled,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontFamilies: {\n\t\t\t\t\tcustom: fontFamilies,\n\t\t\t\t},\n\t\t\t\tfontSizes: {\n\t\t\t\t\tcustom: userFontSizes,\n\t\t\t\t\ttheme: themeFontSizes,\n\t\t\t\t\tdefault: defaultFontSizes,\n\t\t\t\t},\n\t\t\t\tcustomFontSize,\n\t\t\t\tdefaultFontSizes: defaultFontSizesEnabled,\n\t\t\t\tfontStyle,\n\t\t\t\tfontWeight,\n\t\t\t\tlineHeight,\n\t\t\t\ttextColumns,\n\t\t\t\ttextDecoration,\n\t\t\t\ttextTransform,\n\t\t\t\tletterSpacing,\n\t\t\t\twritingMode,\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tspacingSizes: {\n\t\t\t\t\tcustom: spacingSizes,\n\t\t\t\t},\n\t\t\t\tpadding,\n\t\t\t\tmargin,\n\t\t\t\tblockGap,\n\t\t\t\tunits,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tcolor: borderColor,\n\t\t\t\tradius: borderRadius,\n\t\t\t\tstyle: borderStyle,\n\t\t\t\twidth: borderWidth,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\tminHeight,\n\t\t\t},\n\t\t\tlayout,\n\t\t\tparentLayout,\n\t\t\tshadow,\n\t\t};\n\t}, [\n\t\tbackgroundImage,\n\t\tbackgroundSize,\n\t\tfontFamilies,\n\t\tuserFontSizes,\n\t\tthemeFontSizes,\n\t\tdefaultFontSizes,\n\t\tdefaultFontSizesEnabled,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\twritingMode,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\tminHeight,\n\t\tlayout,\n\t\tparentLayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t\tisHeadingEnabled,\n\t\tisButtonEnabled,\n\t\tshadow,\n\t] );\n\n\treturn useSettingsForBlockElement( rawSettings, name );\n}\n\nexport function createBlockEditFilter( features ) {\n\t// We don't want block controls to re-render when typing inside a block.\n\t// `memo` will prevent re-renders unless props change, so only pass the\n\t// needed props and not the whole attributes object.\n\tfeatures = features.map( ( settings ) => {\n\t\treturn { ...settings, Edit: memo( settings.edit ) };\n\t} );\n\tconst withBlockEditHooks = createHigherOrderComponent(\n\t\t( OriginalBlockEdit ) => ( props ) => {\n\t\t\tconst context = useBlockEditContext();\n\t\t\t// CAUTION: code added before this line will be executed for all\n\t\t\t// blocks, not just those that support the feature! Code added\n\t\t\t// above this line should be carefully evaluated for its impact on\n\t\t\t// performance.\n\t\t\treturn [\n\t\t\t\t...features.map( ( feature, i ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tEdit,\n\t\t\t\t\t\thasSupport,\n\t\t\t\t\t\tattributeKeys = [],\n\t\t\t\t\t\tshareWithChildBlocks,\n\t\t\t\t\t} = feature;\n\t\t\t\t\tconst shouldDisplayControls =\n\t\t\t\t\t\tcontext[ mayDisplayControlsKey ] ||\n\t\t\t\t\t\t( context[ mayDisplayParentControlsKey ] &&\n\t\t\t\t\t\t\tshareWithChildBlocks );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! shouldDisplayControls ||\n\t\t\t\t\t\t! hasSupport( props.name )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst neededProps = {};\n\t\t\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\t\t\tif ( props.attributes[ key ] ) {\n\t\t\t\t\t\t\tneededProps[ key ] = props.attributes[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Edit\n\t\t\t\t\t\t\t// We can use the index because the array length\n\t\t\t\t\t\t\t// is fixed per page load right now.\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tname={ props.name }\n\t\t\t\t\t\t\tisSelected={ props.isSelected }\n\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\tsetAttributes={ props.setAttributes }\n\t\t\t\t\t\t\t__unstableParentLayout={\n\t\t\t\t\t\t\t\tprops.__unstableParentLayout\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// This component is pure, so only pass needed\n\t\t\t\t\t\t\t// props!!!\n\t\t\t\t\t\t\t{ ...neededProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\t<OriginalBlockEdit key=\"edit\" { ...props } />,\n\t\t\t];\n\t\t},\n\t\t'withBlockEditHooks'\n\t);\n\taddFilter( 'editor.BlockEdit', 'core/editor/hooks', withBlockEditHooks );\n}\n\nfunction BlockProps( { index, useBlockProps, setAllWrapperProps, ...props } ) {\n\tconst wrapperProps = useBlockProps( props );\n\tconst setWrapperProps = ( next ) =>\n\t\tsetAllWrapperProps( ( prev ) => {\n\t\t\tconst nextAll = [ ...prev ];\n\t\t\tnextAll[ index ] = next;\n\t\t\treturn nextAll;\n\t\t} );\n\t// Setting state after every render is fine because this component is\n\t// pure and will only re-render when needed props change.\n\tuseEffect( () => {\n\t\t// We could shallow compare the props, but since this component only\n\t\t// changes when needed attributes change, the benefit is probably small.\n\t\tsetWrapperProps( wrapperProps );\n\t\treturn () => {\n\t\t\tsetWrapperProps( undefined );\n\t\t};\n\t} );\n\treturn null;\n}\n\nconst BlockPropsPure = memo( BlockProps );\n\nexport function createBlockListBlockFilter( features ) {\n\tconst withBlockListBlockHooks = createHigherOrderComponent(\n\t\t( BlockListBlock ) => ( props ) => {\n\t\t\tconst [ allWrapperProps, setAllWrapperProps ] = useState(\n\t\t\t\tArray( features.length ).fill( undefined )\n\t\t\t);\n\t\t\treturn [\n\t\t\t\t...features.map( ( feature, i ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\thasSupport,\n\t\t\t\t\t\tattributeKeys = [],\n\t\t\t\t\t\tuseBlockProps,\n\t\t\t\t\t} = feature;\n\n\t\t\t\t\tconst neededProps = {};\n\t\t\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\t\t\tif ( props.attributes[ key ] ) {\n\t\t\t\t\t\t\tneededProps[ key ] = props.attributes[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip rendering if none of the needed attributes are\n\t\t\t\t\t\t// set.\n\t\t\t\t\t\t! Object.keys( neededProps ).length ||\n\t\t\t\t\t\t! hasSupport( props.name )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<BlockPropsPure\n\t\t\t\t\t\t\t// We can use the index because the array length\n\t\t\t\t\t\t\t// is fixed per page load right now.\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tindex={ i }\n\t\t\t\t\t\t\tuseBlockProps={ useBlockProps }\n\t\t\t\t\t\t\t// This component is pure, so we must pass a stable\n\t\t\t\t\t\t\t// function reference.\n\t\t\t\t\t\t\tsetAllWrapperProps={ setAllWrapperProps }\n\t\t\t\t\t\t\tname={ props.name }\n\t\t\t\t\t\t\t// This component is pure, so only pass needed\n\t\t\t\t\t\t\t// props!!!\n\t\t\t\t\t\t\t{ ...neededProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\t<BlockListBlock\n\t\t\t\t\tkey=\"edit\"\n\t\t\t\t\t{ ...props }\n\t\t\t\t\twrapperProps={ allWrapperProps\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t\t.reduce( ( acc, wrapperProps ) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t...wrapperProps,\n\t\t\t\t\t\t\t\tclassName: classnames(\n\t\t\t\t\t\t\t\t\tacc.className,\n\t\t\t\t\t\t\t\t\twrapperProps.className\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t...acc.style,\n\t\t\t\t\t\t\t\t\t...wrapperProps.style,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}, props.wrapperProps || {} ) }\n\t\t\t\t/>,\n\t\t\t];\n\t\t},\n\t\t'withBlockListBlockHooks'\n\t);\n\taddFilter(\n\t\t'editor.BlockListBlock',\n\t\t'core/editor/hooks',\n\t\twithBlockListBlockHooks\n\t);\n}\n\nexport function createBlockSaveFilter( features ) {\n\tfunction extraPropsFromHooks( props, name, attributes ) {\n\t\treturn features.reduce( ( accu, feature ) => {\n\t\t\tconst { hasSupport, attributeKeys = [], addSaveProps } = feature;\n\n\t\t\tconst neededAttributes = {};\n\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\tif ( attributes[ key ] ) {\n\t\t\t\t\tneededAttributes[ key ] = attributes[ key ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// Skip rendering if none of the needed attributes are\n\t\t\t\t// set.\n\t\t\t\t! Object.keys( neededAttributes ).length ||\n\t\t\t\t! hasSupport( name )\n\t\t\t) {\n\t\t\t\treturn accu;\n\t\t\t}\n\n\t\t\treturn addSaveProps( accu, name, neededAttributes );\n\t\t}, props );\n\t}\n\taddFilter(\n\t\t'blocks.getSaveContent.extraProps',\n\t\t'core/editor/hooks',\n\t\textraPropsFromHooks,\n\t\t0\n\t);\n\taddFilter(\n\t\t'blocks.getSaveContent.extraProps',\n\t\t'core/editor/hooks',\n\t\t( props ) => {\n\t\t\t// Previously we had a filter deleting the className if it was an empty\n\t\t\t// string. That filter is no longer running, so now we need to delete it\n\t\t\t// here.\n\t\t\tif ( props.hasOwnProperty( 'className' ) && ! props.className ) {\n\t\t\t\tdelete props.className;\n\t\t\t}\n\n\t\t\treturn props;\n\t\t}\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_blocks","require","_element","_data","_compose","_hooks","_context","_components","_hooks2","_object","_store","_lockUnlock","_classnames","_interopRequireDefault","cleanEmptyObject","object","Array","isArray","cleanedNestedObjects","Object","entries","map","key","value","filter","undefined","length","fromEntries","exports","transformStyles","activeSupports","migrationPaths","result","source","index","results","values","every","isActive","innerBlocks","referenceBlockAttributes","attributes","returnBlock","forEach","support","path","styleValue","getValueFromObjectPath","setImmutably","shouldSkipSerialization","blockNameOrType","featureSet","feature","getBlockSupport","skipSerialization","__experimentalSkipSerialization","includes","useStyleOverride","id","css","assets","__unstableType","setStyleOverride","deleteStyleOverride","unlock","useDispatch","blockEditorStore","fallbackId","useId","useEffect","_id","useBlockSettings","name","parentLayout","backgroundImage","backgroundSize","fontFamilies","userFontSizes","themeFontSizes","defaultFontSizes","defaultFontSizesEnabled","customFontSize","fontStyle","fontWeight","lineHeight","textColumns","textDecoration","writingMode","textTransform","letterSpacing","padding","margin","blockGap","spacingSizes","units","aspectRatio","minHeight","layout","borderColor","borderRadius","borderStyle","borderWidth","customColorsEnabled","customColors","customDuotone","themeColors","defaultColors","defaultPalette","defaultDuotone","userDuotonePalette","themeDuotonePalette","defaultDuotonePalette","userGradientPalette","themeGradientPalette","defaultGradientPalette","defaultGradients","areCustomGradientsEnabled","isBackgroundEnabled","isLinkEnabled","isTextEnabled","isHeadingEnabled","isButtonEnabled","shadow","useSettings","rawSettings","useMemo","background","color","palette","custom","theme","default","gradients","duotone","customGradient","link","heading","button","text","typography","fontSizes","spacing","border","radius","style","width","dimensions","useSettingsForBlockElement","createBlockEditFilter","features","settings","Edit","memo","edit","withBlockEditHooks","createHigherOrderComponent","OriginalBlockEdit","props","context","useBlockEditContext","i","hasSupport","attributeKeys","shareWithChildBlocks","shouldDisplayControls","mayDisplayControlsKey","mayDisplayParentControlsKey","neededProps","_react","createElement","isSelected","clientId","setAttributes","__unstableParentLayout","addFilter","BlockProps","useBlockProps","setAllWrapperProps","wrapperProps","setWrapperProps","next","prev","nextAll","BlockPropsPure","createBlockListBlockFilter","withBlockListBlockHooks","BlockListBlock","allWrapperProps","useState","fill","keys","Boolean","reduce","acc","className","classnames","createBlockSaveFilter","extraPropsFromHooks","accu","addSaveProps","neededAttributes","hasOwnProperty"],"sources":["@wordpress/block-editor/src/hooks/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { memo, useMemo, useEffect, useId, useState } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseBlockEditContext,\n\tmayDisplayControlsKey,\n\tmayDisplayParentControlsKey,\n} from '../components/block-edit/context';\nimport { useSettings } from '../components';\nimport { useSettingsForBlockElement } from '../components/global-styles/hooks';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Removed falsy values from nested object.\n *\n * @param {*} object\n * @return {*} Object cleaned from falsy values\n */\nexport const cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\n\tconst cleanedNestedObjects = Object.entries( object )\n\t\t.map( ( [ key, value ] ) => [ key, cleanEmptyObject( value ) ] )\n\t\t.filter( ( [ , value ] ) => value !== undefined );\n\treturn ! cleanedNestedObjects.length\n\t\t? undefined\n\t\t: Object.fromEntries( cleanedNestedObjects );\n};\n\nexport function transformStyles(\n\tactiveSupports,\n\tmigrationPaths,\n\tresult,\n\tsource,\n\tindex,\n\tresults\n) {\n\t// If there are no active supports return early.\n\tif (\n\t\tObject.values( activeSupports ?? {} ).every(\n\t\t\t( isActive ) => ! isActive\n\t\t)\n\t) {\n\t\treturn result;\n\t}\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the styles should not be transformed.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\t// For cases where we have a transform from one block to multiple blocks\n\t// or multiple blocks to one block we apply the styles of the first source block\n\t// to the result(s).\n\tlet referenceBlockAttributes = source[ 0 ]?.attributes;\n\t// If we are in presence of transform between more than one block in the source\n\t// that has more than one block in the result\n\t// we apply the styles on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( results.length > 1 && source.length > 1 ) {\n\t\tif ( source[ index ] ) {\n\t\t\treferenceBlockAttributes = source[ index ]?.attributes;\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\tlet returnBlock = result;\n\tObject.entries( activeSupports ).forEach( ( [ support, isActive ] ) => {\n\t\tif ( isActive ) {\n\t\t\tmigrationPaths[ support ].forEach( ( path ) => {\n\t\t\t\tconst styleValue = getValueFromObjectPath(\n\t\t\t\t\treferenceBlockAttributes,\n\t\t\t\t\tpath\n\t\t\t\t);\n\t\t\t\tif ( styleValue ) {\n\t\t\t\t\treturnBlock = {\n\t\t\t\t\t\t...returnBlock,\n\t\t\t\t\t\tattributes: setImmutably(\n\t\t\t\t\t\t\treturnBlock.attributes,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tstyleValue\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\treturn returnBlock;\n}\n\n/**\n * Check whether serialization of specific block support feature or set should\n * be skipped.\n *\n * @param {string|Object} blockNameOrType Block name or block type object.\n * @param {string} featureSet Name of block support feature set.\n * @param {string} feature Name of the individual feature to check.\n *\n * @return {boolean} Whether serialization should occur.\n */\nexport function shouldSkipSerialization(\n\tblockNameOrType,\n\tfeatureSet,\n\tfeature\n) {\n\tconst support = getBlockSupport( blockNameOrType, featureSet );\n\tconst skipSerialization = support?.__experimentalSkipSerialization;\n\n\tif ( Array.isArray( skipSerialization ) ) {\n\t\treturn skipSerialization.includes( feature );\n\t}\n\n\treturn skipSerialization;\n}\n\nexport function useStyleOverride( { id, css, assets, __unstableType } = {} ) {\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst fallbackId = useId();\n\tuseEffect( () => {\n\t\t// Unmount if there is CSS and assets are empty.\n\t\tif ( ! css && ! assets ) return;\n\t\tconst _id = id || fallbackId;\n\t\tsetStyleOverride( _id, {\n\t\t\tid,\n\t\t\tcss,\n\t\t\tassets,\n\t\t\t__unstableType,\n\t\t} );\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( _id );\n\t\t};\n\t}, [\n\t\tid,\n\t\tcss,\n\t\tassets,\n\t\t__unstableType,\n\t\tfallbackId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n}\n\n/**\n * Based on the block and its context, returns an object of all the block settings.\n * This object can be passed as a prop to all the Styles UI components\n * (TypographyPanel, DimensionsPanel...).\n *\n * @param {string} name Block name.\n * @param {*} parentLayout Parent layout.\n *\n * @return {Object} Settings object.\n */\nexport function useBlockSettings( name, parentLayout ) {\n\tconst [\n\t\tbackgroundImage,\n\t\tbackgroundSize,\n\t\tfontFamilies,\n\t\tuserFontSizes,\n\t\tthemeFontSizes,\n\t\tdefaultFontSizes,\n\t\tdefaultFontSizesEnabled,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\twritingMode,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\taspectRatio,\n\t\tminHeight,\n\t\tlayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t\tisHeadingEnabled,\n\t\tisButtonEnabled,\n\t\tshadow,\n\t] = useSettings(\n\t\t'background.backgroundImage',\n\t\t'background.backgroundSize',\n\t\t'typography.fontFamilies',\n\t\t'typography.fontSizes.custom',\n\t\t'typography.fontSizes.theme',\n\t\t'typography.fontSizes.default',\n\t\t'typography.defaultFontSizes',\n\t\t'typography.customFontSize',\n\t\t'typography.fontStyle',\n\t\t'typography.fontWeight',\n\t\t'typography.lineHeight',\n\t\t'typography.textColumns',\n\t\t'typography.textDecoration',\n\t\t'typography.writingMode',\n\t\t'typography.textTransform',\n\t\t'typography.letterSpacing',\n\t\t'spacing.padding',\n\t\t'spacing.margin',\n\t\t'spacing.blockGap',\n\t\t'spacing.spacingSizes',\n\t\t'spacing.units',\n\t\t'dimensions.aspectRatio',\n\t\t'dimensions.minHeight',\n\t\t'layout',\n\t\t'border.color',\n\t\t'border.radius',\n\t\t'border.style',\n\t\t'border.width',\n\t\t'color.custom',\n\t\t'color.palette.custom',\n\t\t'color.customDuotone',\n\t\t'color.palette.theme',\n\t\t'color.palette.default',\n\t\t'color.defaultPalette',\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default',\n\t\t'color.gradients.custom',\n\t\t'color.gradients.theme',\n\t\t'color.gradients.default',\n\t\t'color.defaultGradients',\n\t\t'color.customGradient',\n\t\t'color.background',\n\t\t'color.link',\n\t\t'color.text',\n\t\t'color.heading',\n\t\t'color.button',\n\t\t'shadow'\n\t);\n\n\tconst rawSettings = useMemo( () => {\n\t\treturn {\n\t\t\tbackground: {\n\t\t\t\tbackgroundImage,\n\t\t\t\tbackgroundSize,\n\t\t\t},\n\t\t\tcolor: {\n\t\t\t\tpalette: {\n\t\t\t\t\tcustom: customColors,\n\t\t\t\t\ttheme: themeColors,\n\t\t\t\t\tdefault: defaultColors,\n\t\t\t\t},\n\t\t\t\tgradients: {\n\t\t\t\t\tcustom: userGradientPalette,\n\t\t\t\t\ttheme: themeGradientPalette,\n\t\t\t\t\tdefault: defaultGradientPalette,\n\t\t\t\t},\n\t\t\t\tduotone: {\n\t\t\t\t\tcustom: userDuotonePalette,\n\t\t\t\t\ttheme: themeDuotonePalette,\n\t\t\t\t\tdefault: defaultDuotonePalette,\n\t\t\t\t},\n\t\t\t\tdefaultGradients,\n\t\t\t\tdefaultPalette,\n\t\t\t\tdefaultDuotone,\n\t\t\t\tcustom: customColorsEnabled,\n\t\t\t\tcustomGradient: areCustomGradientsEnabled,\n\t\t\t\tcustomDuotone,\n\t\t\t\tbackground: isBackgroundEnabled,\n\t\t\t\tlink: isLinkEnabled,\n\t\t\t\theading: isHeadingEnabled,\n\t\t\t\tbutton: isButtonEnabled,\n\t\t\t\ttext: isTextEnabled,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontFamilies: {\n\t\t\t\t\tcustom: fontFamilies,\n\t\t\t\t},\n\t\t\t\tfontSizes: {\n\t\t\t\t\tcustom: userFontSizes,\n\t\t\t\t\ttheme: themeFontSizes,\n\t\t\t\t\tdefault: defaultFontSizes,\n\t\t\t\t},\n\t\t\t\tcustomFontSize,\n\t\t\t\tdefaultFontSizes: defaultFontSizesEnabled,\n\t\t\t\tfontStyle,\n\t\t\t\tfontWeight,\n\t\t\t\tlineHeight,\n\t\t\t\ttextColumns,\n\t\t\t\ttextDecoration,\n\t\t\t\ttextTransform,\n\t\t\t\tletterSpacing,\n\t\t\t\twritingMode,\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tspacingSizes: {\n\t\t\t\t\tcustom: spacingSizes,\n\t\t\t\t},\n\t\t\t\tpadding,\n\t\t\t\tmargin,\n\t\t\t\tblockGap,\n\t\t\t\tunits,\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tcolor: borderColor,\n\t\t\t\tradius: borderRadius,\n\t\t\t\tstyle: borderStyle,\n\t\t\t\twidth: borderWidth,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\taspectRatio,\n\t\t\t\tminHeight,\n\t\t\t},\n\t\t\tlayout,\n\t\t\tparentLayout,\n\t\t\tshadow,\n\t\t};\n\t}, [\n\t\tbackgroundImage,\n\t\tbackgroundSize,\n\t\tfontFamilies,\n\t\tuserFontSizes,\n\t\tthemeFontSizes,\n\t\tdefaultFontSizes,\n\t\tdefaultFontSizesEnabled,\n\t\tcustomFontSize,\n\t\tfontStyle,\n\t\tfontWeight,\n\t\tlineHeight,\n\t\ttextColumns,\n\t\ttextDecoration,\n\t\ttextTransform,\n\t\tletterSpacing,\n\t\twritingMode,\n\t\tpadding,\n\t\tmargin,\n\t\tblockGap,\n\t\tspacingSizes,\n\t\tunits,\n\t\taspectRatio,\n\t\tminHeight,\n\t\tlayout,\n\t\tparentLayout,\n\t\tborderColor,\n\t\tborderRadius,\n\t\tborderStyle,\n\t\tborderWidth,\n\t\tcustomColorsEnabled,\n\t\tcustomColors,\n\t\tcustomDuotone,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tdefaultPalette,\n\t\tdefaultDuotone,\n\t\tuserDuotonePalette,\n\t\tthemeDuotonePalette,\n\t\tdefaultDuotonePalette,\n\t\tuserGradientPalette,\n\t\tthemeGradientPalette,\n\t\tdefaultGradientPalette,\n\t\tdefaultGradients,\n\t\tareCustomGradientsEnabled,\n\t\tisBackgroundEnabled,\n\t\tisLinkEnabled,\n\t\tisTextEnabled,\n\t\tisHeadingEnabled,\n\t\tisButtonEnabled,\n\t\tshadow,\n\t] );\n\n\treturn useSettingsForBlockElement( rawSettings, name );\n}\n\nexport function createBlockEditFilter( features ) {\n\t// We don't want block controls to re-render when typing inside a block.\n\t// `memo` will prevent re-renders unless props change, so only pass the\n\t// needed props and not the whole attributes object.\n\tfeatures = features.map( ( settings ) => {\n\t\treturn { ...settings, Edit: memo( settings.edit ) };\n\t} );\n\tconst withBlockEditHooks = createHigherOrderComponent(\n\t\t( OriginalBlockEdit ) => ( props ) => {\n\t\t\tconst context = useBlockEditContext();\n\t\t\t// CAUTION: code added before this line will be executed for all\n\t\t\t// blocks, not just those that support the feature! Code added\n\t\t\t// above this line should be carefully evaluated for its impact on\n\t\t\t// performance.\n\t\t\treturn [\n\t\t\t\t...features.map( ( feature, i ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tEdit,\n\t\t\t\t\t\thasSupport,\n\t\t\t\t\t\tattributeKeys = [],\n\t\t\t\t\t\tshareWithChildBlocks,\n\t\t\t\t\t} = feature;\n\t\t\t\t\tconst shouldDisplayControls =\n\t\t\t\t\t\tcontext[ mayDisplayControlsKey ] ||\n\t\t\t\t\t\t( context[ mayDisplayParentControlsKey ] &&\n\t\t\t\t\t\t\tshareWithChildBlocks );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! shouldDisplayControls ||\n\t\t\t\t\t\t! hasSupport( props.name )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst neededProps = {};\n\t\t\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\t\t\tif ( props.attributes[ key ] ) {\n\t\t\t\t\t\t\tneededProps[ key ] = props.attributes[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Edit\n\t\t\t\t\t\t\t// We can use the index because the array length\n\t\t\t\t\t\t\t// is fixed per page load right now.\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tname={ props.name }\n\t\t\t\t\t\t\tisSelected={ props.isSelected }\n\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\tsetAttributes={ props.setAttributes }\n\t\t\t\t\t\t\t__unstableParentLayout={\n\t\t\t\t\t\t\t\tprops.__unstableParentLayout\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// This component is pure, so only pass needed\n\t\t\t\t\t\t\t// props!!!\n\t\t\t\t\t\t\t{ ...neededProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\t<OriginalBlockEdit key=\"edit\" { ...props } />,\n\t\t\t];\n\t\t},\n\t\t'withBlockEditHooks'\n\t);\n\taddFilter( 'editor.BlockEdit', 'core/editor/hooks', withBlockEditHooks );\n}\n\nfunction BlockProps( { index, useBlockProps, setAllWrapperProps, ...props } ) {\n\tconst wrapperProps = useBlockProps( props );\n\tconst setWrapperProps = ( next ) =>\n\t\tsetAllWrapperProps( ( prev ) => {\n\t\t\tconst nextAll = [ ...prev ];\n\t\t\tnextAll[ index ] = next;\n\t\t\treturn nextAll;\n\t\t} );\n\t// Setting state after every render is fine because this component is\n\t// pure and will only re-render when needed props change.\n\tuseEffect( () => {\n\t\t// We could shallow compare the props, but since this component only\n\t\t// changes when needed attributes change, the benefit is probably small.\n\t\tsetWrapperProps( wrapperProps );\n\t\treturn () => {\n\t\t\tsetWrapperProps( undefined );\n\t\t};\n\t} );\n\treturn null;\n}\n\nconst BlockPropsPure = memo( BlockProps );\n\nexport function createBlockListBlockFilter( features ) {\n\tconst withBlockListBlockHooks = createHigherOrderComponent(\n\t\t( BlockListBlock ) => ( props ) => {\n\t\t\tconst [ allWrapperProps, setAllWrapperProps ] = useState(\n\t\t\t\tArray( features.length ).fill( undefined )\n\t\t\t);\n\t\t\treturn [\n\t\t\t\t...features.map( ( feature, i ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\thasSupport,\n\t\t\t\t\t\tattributeKeys = [],\n\t\t\t\t\t\tuseBlockProps,\n\t\t\t\t\t} = feature;\n\n\t\t\t\t\tconst neededProps = {};\n\t\t\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\t\t\tif ( props.attributes[ key ] ) {\n\t\t\t\t\t\t\tneededProps[ key ] = props.attributes[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip rendering if none of the needed attributes are\n\t\t\t\t\t\t// set.\n\t\t\t\t\t\t! Object.keys( neededProps ).length ||\n\t\t\t\t\t\t! hasSupport( props.name )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<BlockPropsPure\n\t\t\t\t\t\t\t// We can use the index because the array length\n\t\t\t\t\t\t\t// is fixed per page load right now.\n\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\tindex={ i }\n\t\t\t\t\t\t\tuseBlockProps={ useBlockProps }\n\t\t\t\t\t\t\t// This component is pure, so we must pass a stable\n\t\t\t\t\t\t\t// function reference.\n\t\t\t\t\t\t\tsetAllWrapperProps={ setAllWrapperProps }\n\t\t\t\t\t\t\tname={ props.name }\n\t\t\t\t\t\t\t// This component is pure, so only pass needed\n\t\t\t\t\t\t\t// props!!!\n\t\t\t\t\t\t\t{ ...neededProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t\t\t<BlockListBlock\n\t\t\t\t\tkey=\"edit\"\n\t\t\t\t\t{ ...props }\n\t\t\t\t\twrapperProps={ allWrapperProps\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t\t.reduce( ( acc, wrapperProps ) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t...wrapperProps,\n\t\t\t\t\t\t\t\tclassName: classnames(\n\t\t\t\t\t\t\t\t\tacc.className,\n\t\t\t\t\t\t\t\t\twrapperProps.className\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t...acc.style,\n\t\t\t\t\t\t\t\t\t...wrapperProps.style,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}, props.wrapperProps || {} ) }\n\t\t\t\t/>,\n\t\t\t];\n\t\t},\n\t\t'withBlockListBlockHooks'\n\t);\n\taddFilter(\n\t\t'editor.BlockListBlock',\n\t\t'core/editor/hooks',\n\t\twithBlockListBlockHooks\n\t);\n}\n\nexport function createBlockSaveFilter( features ) {\n\tfunction extraPropsFromHooks( props, name, attributes ) {\n\t\treturn features.reduce( ( accu, feature ) => {\n\t\t\tconst { hasSupport, attributeKeys = [], addSaveProps } = feature;\n\n\t\t\tconst neededAttributes = {};\n\t\t\tfor ( const key of attributeKeys ) {\n\t\t\t\tif ( attributes[ key ] ) {\n\t\t\t\t\tneededAttributes[ key ] = attributes[ key ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// Skip rendering if none of the needed attributes are\n\t\t\t\t// set.\n\t\t\t\t! Object.keys( neededAttributes ).length ||\n\t\t\t\t! hasSupport( name )\n\t\t\t) {\n\t\t\t\treturn accu;\n\t\t\t}\n\n\t\t\treturn addSaveProps( accu, name, neededAttributes );\n\t\t}, props );\n\t}\n\taddFilter(\n\t\t'blocks.getSaveContent.extraProps',\n\t\t'core/editor/hooks',\n\t\textraPropsFromHooks,\n\t\t0\n\t);\n\taddFilter(\n\t\t'blocks.getSaveContent.extraProps',\n\t\t'core/editor/hooks',\n\t\t( props ) => {\n\t\t\t// Previously we had a filter deleting the className if it was an empty\n\t\t\t// string. That filter is no longer running, so now we need to delete it\n\t\t\t// here.\n\t\t\tif ( props.hasOwnProperty( 'className' ) && ! props.className ) {\n\t\t\t\tdelete props.className;\n\t\t\t}\n\n\t\t\treturn props;\n\t\t}\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAKA,IAAAK,QAAA,GAAAL,OAAA;AAKA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,WAAA,GAAAV,OAAA;AAIA,IAAAW,WAAA,GAAAC,sBAAA,CAAAZ,OAAA;AAzBA;AACA;AACA;;AAOA;AACA;AACA;;AAWA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMa,gBAAgB,GAAKC,MAAM,IAAM;EAC7C,IACCA,MAAM,KAAK,IAAI,IACf,OAAOA,MAAM,KAAK,QAAQ,IAC1BC,KAAK,CAACC,OAAO,CAAEF,MAAO,CAAC,EACtB;IACD,OAAOA,MAAM;EACd;EAEA,MAAMG,oBAAoB,GAAGC,MAAM,CAACC,OAAO,CAAEL,MAAO,CAAC,CACnDM,GAAG,CAAE,CAAE,CAAEC,GAAG,EAAEC,KAAK,CAAE,KAAM,CAAED,GAAG,EAAER,gBAAgB,CAAES,KAAM,CAAC,CAAG,CAAC,CAC/DC,MAAM,CAAE,CAAE,GAAID,KAAK,CAAE,KAAMA,KAAK,KAAKE,SAAU,CAAC;EAClD,OAAO,CAAEP,oBAAoB,CAACQ,MAAM,GACjCD,SAAS,GACTN,MAAM,CAACQ,WAAW,CAAET,oBAAqB,CAAC;AAC9C,CAAC;AAACU,OAAA,CAAAd,gBAAA,GAAAA,gBAAA;AAEK,SAASe,eAAeA,CAC9BC,cAAc,EACdC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,OAAO,EACN;EACD;EACA,IACChB,MAAM,CAACiB,MAAM,CAAEN,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,CAAC,CAAE,CAAC,CAACO,KAAK,CACxCC,QAAQ,IAAM,CAAEA,QACnB,CAAC,EACA;IACD,OAAON,MAAM;EACd;EACA;EACA;EACA,IAAKG,OAAO,CAACT,MAAM,KAAK,CAAC,IAAIM,MAAM,CAACO,WAAW,CAACb,MAAM,KAAKO,MAAM,CAACP,MAAM,EAAG;IAC1E,OAAOM,MAAM;EACd;EACA;EACA;EACA;EACA,IAAIQ,wBAAwB,GAAGP,MAAM,CAAE,CAAC,CAAE,EAAEQ,UAAU;EACtD;EACA;EACA;EACA;EACA,IAAKN,OAAO,CAACT,MAAM,GAAG,CAAC,IAAIO,MAAM,CAACP,MAAM,GAAG,CAAC,EAAG;IAC9C,IAAKO,MAAM,CAAEC,KAAK,CAAE,EAAG;MACtBM,wBAAwB,GAAGP,MAAM,CAAEC,KAAK,CAAE,EAAEO,UAAU;IACvD,CAAC,MAAM;MACN,OAAOT,MAAM;IACd;EACD;EACA,IAAIU,WAAW,GAAGV,MAAM;EACxBb,MAAM,CAACC,OAAO,CAAEU,cAAe,CAAC,CAACa,OAAO,CAAE,CAAE,CAAEC,OAAO,EAAEN,QAAQ,CAAE,KAAM;IACtE,IAAKA,QAAQ,EAAG;MACfP,cAAc,CAAEa,OAAO,CAAE,CAACD,OAAO,CAAIE,IAAI,IAAM;QAC9C,MAAMC,UAAU,GAAG,IAAAC,8BAAsB,EACxCP,wBAAwB,EACxBK,IACD,CAAC;QACD,IAAKC,UAAU,EAAG;UACjBJ,WAAW,GAAG;YACb,GAAGA,WAAW;YACdD,UAAU,EAAE,IAAAO,oBAAY,EACvBN,WAAW,CAACD,UAAU,EACtBI,IAAI,EACJC,UACD;UACD,CAAC;QACF;MACD,CAAE,CAAC;IACJ;EACD,CAAE,CAAC;EACH,OAAOJ,WAAW;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,uBAAuBA,CACtCC,eAAe,EACfC,UAAU,EACVC,OAAO,EACN;EACD,MAAMR,OAAO,GAAG,IAAAS,uBAAe,EAAEH,eAAe,EAAEC,UAAW,CAAC;EAC9D,MAAMG,iBAAiB,GAAGV,OAAO,EAAEW,+BAA+B;EAElE,IAAKvC,KAAK,CAACC,OAAO,CAAEqC,iBAAkB,CAAC,EAAG;IACzC,OAAOA,iBAAiB,CAACE,QAAQ,CAAEJ,OAAQ,CAAC;EAC7C;EAEA,OAAOE,iBAAiB;AACzB;AAEO,SAASG,gBAAgBA,CAAE;EAAEC,EAAE;EAAEC,GAAG;EAAEC,MAAM;EAAEC;AAAe,CAAC,GAAG,CAAC,CAAC,EAAG;EAC5E,MAAM;IAAEC,gBAAgB;IAAEC;EAAoB,CAAC,GAAG,IAAAC,kBAAM,EACvD,IAAAC,iBAAW,EAAEC,YAAiB,CAC/B,CAAC;EACD,MAAMC,UAAU,GAAG,IAAAC,cAAK,EAAC,CAAC;EAC1B,IAAAC,kBAAS,EAAE,MAAM;IAChB;IACA,IAAK,CAAEV,GAAG,IAAI,CAAEC,MAAM,EAAG;IACzB,MAAMU,GAAG,GAAGZ,EAAE,IAAIS,UAAU;IAC5BL,gBAAgB,CAAEQ,GAAG,EAAE;MACtBZ,EAAE;MACFC,GAAG;MACHC,MAAM;MACNC;IACD,CAAE,CAAC;IACH,OAAO,MAAM;MACZE,mBAAmB,CAAEO,GAAI,CAAC;IAC3B,CAAC;EACF,CAAC,EAAE,CACFZ,EAAE,EACFC,GAAG,EACHC,MAAM,EACNC,cAAc,EACdM,UAAU,EACVL,gBAAgB,EAChBC,mBAAmB,CAClB,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,gBAAgBA,CAAEC,IAAI,EAAEC,YAAY,EAAG;EACtD,MAAM,CACLC,eAAe,EACfC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,gBAAgB,EAChBC,uBAAuB,EACvBC,cAAc,EACdC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,YAAY,EACZC,KAAK,EACLC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,mBAAmB,EACnBC,YAAY,EACZC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,mBAAmB,EACnBC,qBAAqB,EACrBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,EACtBC,gBAAgB,EAChBC,yBAAyB,EACzBC,mBAAmB,EACnBC,aAAa,EACbC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,MAAM,CACN,GAAG,IAAAC,uBAAW,EACd,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QACD,CAAC;EAED,MAAMC,WAAW,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAClC,OAAO;MACNC,UAAU,EAAE;QACXpD,eAAe;QACfC;MACD,CAAC;MACDoD,KAAK,EAAE;QACNC,OAAO,EAAE;UACRC,MAAM,EAAE1B,YAAY;UACpB2B,KAAK,EAAEzB,WAAW;UAClB0B,OAAO,EAAEzB;QACV,CAAC;QACD0B,SAAS,EAAE;UACVH,MAAM,EAAEjB,mBAAmB;UAC3BkB,KAAK,EAAEjB,oBAAoB;UAC3BkB,OAAO,EAAEjB;QACV,CAAC;QACDmB,OAAO,EAAE;UACRJ,MAAM,EAAEpB,kBAAkB;UAC1BqB,KAAK,EAAEpB,mBAAmB;UAC1BqB,OAAO,EAAEpB;QACV,CAAC;QACDI,gBAAgB;QAChBR,cAAc;QACdC,cAAc;QACdqB,MAAM,EAAE3B,mBAAmB;QAC3BgC,cAAc,EAAElB,yBAAyB;QACzCZ,aAAa;QACbsB,UAAU,EAAET,mBAAmB;QAC/BkB,IAAI,EAAEjB,aAAa;QACnBkB,OAAO,EAAEhB,gBAAgB;QACzBiB,MAAM,EAAEhB,eAAe;QACvBiB,IAAI,EAAEnB;MACP,CAAC;MACDoB,UAAU,EAAE;QACX/D,YAAY,EAAE;UACbqD,MAAM,EAAErD;QACT,CAAC;QACDgE,SAAS,EAAE;UACVX,MAAM,EAAEpD,aAAa;UACrBqD,KAAK,EAAEpD,cAAc;UACrBqD,OAAO,EAAEpD;QACV,CAAC;QACDE,cAAc;QACdF,gBAAgB,EAAEC,uBAAuB;QACzCE,SAAS;QACTC,UAAU;QACVC,UAAU;QACVC,WAAW;QACXC,cAAc;QACdE,aAAa;QACbC,aAAa;QACbF;MACD,CAAC;MACDsD,OAAO,EAAE;QACRhD,YAAY,EAAE;UACboC,MAAM,EAAEpC;QACT,CAAC;QACDH,OAAO;QACPC,MAAM;QACNC,QAAQ;QACRE;MACD,CAAC;MACDgD,MAAM,EAAE;QACPf,KAAK,EAAE7B,WAAW;QAClB6C,MAAM,EAAE5C,YAAY;QACpB6C,KAAK,EAAE5C,WAAW;QAClB6C,KAAK,EAAE5C;MACR,CAAC;MACD6C,UAAU,EAAE;QACXnD,WAAW;QACXC;MACD,CAAC;MACDC,MAAM;MACNxB,YAAY;MACZiD;IACD,CAAC;EACF,CAAC,EAAE,CACFhD,eAAe,EACfC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,gBAAgB,EAChBC,uBAAuB,EACvBC,cAAc,EACdC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdE,aAAa,EACbC,aAAa,EACbF,WAAW,EACXG,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,YAAY,EACZC,KAAK,EACLC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNxB,YAAY,EACZyB,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,mBAAmB,EACnBC,YAAY,EACZC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,kBAAkB,EAClBC,mBAAmB,EACnBC,qBAAqB,EACrBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,EACtBC,gBAAgB,EAChBC,yBAAyB,EACzBC,mBAAmB,EACnBC,aAAa,EACbC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,MAAM,CACL,CAAC;EAEH,OAAO,IAAAyB,kCAA0B,EAAEvB,WAAW,EAAEpD,IAAK,CAAC;AACvD;AAEO,SAAS4E,qBAAqBA,CAAEC,QAAQ,EAAG;EACjD;EACA;EACA;EACAA,QAAQ,GAAGA,QAAQ,CAAChI,GAAG,CAAIiI,QAAQ,IAAM;IACxC,OAAO;MAAE,GAAGA,QAAQ;MAAEC,IAAI,EAAE,IAAAC,aAAI,EAAEF,QAAQ,CAACG,IAAK;IAAE,CAAC;EACpD,CAAE,CAAC;EACH,MAAMC,kBAAkB,GAAG,IAAAC,mCAA0B,EAClDC,iBAAiB,IAAQC,KAAK,IAAM;IACrC,MAAMC,OAAO,GAAG,IAAAC,4BAAmB,EAAC,CAAC;IACrC;IACA;IACA;IACA;IACA,OAAO,CACN,GAAGV,QAAQ,CAAChI,GAAG,CAAE,CAAE+B,OAAO,EAAE4G,CAAC,KAAM;MAClC,MAAM;QACLT,IAAI;QACJU,UAAU;QACVC,aAAa,GAAG,EAAE;QAClBC;MACD,CAAC,GAAG/G,OAAO;MACX,MAAMgH,qBAAqB,GAC1BN,OAAO,CAAEO,8BAAqB,CAAE,IAC9BP,OAAO,CAAEQ,oCAA2B,CAAE,IACvCH,oBAAsB;MAExB,IACC,CAAEC,qBAAqB,IACvB,CAAEH,UAAU,CAAEJ,KAAK,CAACrF,IAAK,CAAC,EACzB;QACD,OAAO,IAAI;MACZ;MAEA,MAAM+F,WAAW,GAAG,CAAC,CAAC;MACtB,KAAM,MAAMjJ,GAAG,IAAI4I,aAAa,EAAG;QAClC,IAAKL,KAAK,CAACpH,UAAU,CAAEnB,GAAG,CAAE,EAAG;UAC9BiJ,WAAW,CAAEjJ,GAAG,CAAE,GAAGuI,KAAK,CAACpH,UAAU,CAAEnB,GAAG,CAAE;QAC7C;MACD;MAEA,OACC,IAAAkJ,MAAA,CAAAC,aAAA,EAAClB;MACA;MACA;MAAA;QACAjI,GAAG,EAAG0I,CAAG;QACTxF,IAAI,EAAGqF,KAAK,CAACrF,IAAM;QACnBkG,UAAU,EAAGb,KAAK,CAACa,UAAY;QAC/BC,QAAQ,EAAGd,KAAK,CAACc,QAAU;QAC3BC,aAAa,EAAGf,KAAK,CAACe,aAAe;QACrCC,sBAAsB,EACrBhB,KAAK,CAACgB;QAEP;QACA;QAAA;QAAA,GACKN;MAAW,CAChB,CAAC;IAEJ,CAAE,CAAC,EACH,IAAAC,MAAA,CAAAC,aAAA,EAACb,iBAAiB;MAACtI,GAAG,EAAC,MAAM;MAAA,GAAMuI;IAAK,CAAI,CAAC,CAC7C;EACF,CAAC,EACD,oBACD,CAAC;EACD,IAAAiB,gBAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAEpB,kBAAmB,CAAC;AACzE;AAEA,SAASqB,UAAUA,CAAE;EAAE7I,KAAK;EAAE8I,aAAa;EAAEC,kBAAkB;EAAE,GAAGpB;AAAM,CAAC,EAAG;EAC7E,MAAMqB,YAAY,GAAGF,aAAa,CAAEnB,KAAM,CAAC;EAC3C,MAAMsB,eAAe,GAAKC,IAAI,IAC7BH,kBAAkB,CAAII,IAAI,IAAM;IAC/B,MAAMC,OAAO,GAAG,CAAE,GAAGD,IAAI,CAAE;IAC3BC,OAAO,CAAEpJ,KAAK,CAAE,GAAGkJ,IAAI;IACvB,OAAOE,OAAO;EACf,CAAE,CAAC;EACJ;EACA;EACA,IAAAjH,kBAAS,EAAE,MAAM;IAChB;IACA;IACA8G,eAAe,CAAED,YAAa,CAAC;IAC/B,OAAO,MAAM;MACZC,eAAe,CAAE1J,SAAU,CAAC;IAC7B,CAAC;EACF,CAAE,CAAC;EACH,OAAO,IAAI;AACZ;AAEA,MAAM8J,cAAc,GAAG,IAAA/B,aAAI,EAAEuB,UAAW,CAAC;AAElC,SAASS,0BAA0BA,CAAEnC,QAAQ,EAAG;EACtD,MAAMoC,uBAAuB,GAAG,IAAA9B,mCAA0B,EACvD+B,cAAc,IAAQ7B,KAAK,IAAM;IAClC,MAAM,CAAE8B,eAAe,EAAEV,kBAAkB,CAAE,GAAG,IAAAW,iBAAQ,EACvD5K,KAAK,CAAEqI,QAAQ,CAAC3H,MAAO,CAAC,CAACmK,IAAI,CAAEpK,SAAU,CAC1C,CAAC;IACD,OAAO,CACN,GAAG4H,QAAQ,CAAChI,GAAG,CAAE,CAAE+B,OAAO,EAAE4G,CAAC,KAAM;MAClC,MAAM;QACLC,UAAU;QACVC,aAAa,GAAG,EAAE;QAClBc;MACD,CAAC,GAAG5H,OAAO;MAEX,MAAMmH,WAAW,GAAG,CAAC,CAAC;MACtB,KAAM,MAAMjJ,GAAG,IAAI4I,aAAa,EAAG;QAClC,IAAKL,KAAK,CAACpH,UAAU,CAAEnB,GAAG,CAAE,EAAG;UAC9BiJ,WAAW,CAAEjJ,GAAG,CAAE,GAAGuI,KAAK,CAACpH,UAAU,CAAEnB,GAAG,CAAE;QAC7C;MACD;MAEA;MACC;MACA;MACA,CAAEH,MAAM,CAAC2K,IAAI,CAAEvB,WAAY,CAAC,CAAC7I,MAAM,IACnC,CAAEuI,UAAU,CAAEJ,KAAK,CAACrF,IAAK,CAAC,EACzB;QACD,OAAO,IAAI;MACZ;MAEA,OACC,IAAAgG,MAAA,CAAAC,aAAA,EAACc;MACA;MACA;MAAA;QACAjK,GAAG,EAAG0I,CAAG;QACT9H,KAAK,EAAG8H,CAAG;QACXgB,aAAa,EAAGA;QAChB;QACA;QAAA;QACAC,kBAAkB,EAAGA,kBAAoB;QACzCzG,IAAI,EAAGqF,KAAK,CAACrF;QACb;QACA;QAAA;QAAA,GACK+F;MAAW,CAChB,CAAC;IAEJ,CAAE,CAAC,EACH,IAAAC,MAAA,CAAAC,aAAA,EAACiB,cAAc;MACdpK,GAAG,EAAC,MAAM;MAAA,GACLuI,KAAK;MACVqB,YAAY,EAAGS,eAAe,CAC5BnK,MAAM,CAAEuK,OAAQ,CAAC,CACjBC,MAAM,CAAE,CAAEC,GAAG,EAAEf,YAAY,KAAM;QACjC,OAAO;UACN,GAAGe,GAAG;UACN,GAAGf,YAAY;UACfgB,SAAS,EAAE,IAAAC,mBAAU,EACpBF,GAAG,CAACC,SAAS,EACbhB,YAAY,CAACgB,SACd,CAAC;UACDlD,KAAK,EAAE;YACN,GAAGiD,GAAG,CAACjD,KAAK;YACZ,GAAGkC,YAAY,CAAClC;UACjB;QACD,CAAC;MACF,CAAC,EAAEa,KAAK,CAACqB,YAAY,IAAI,CAAC,CAAE;IAAG,CAChC,CAAC,CACF;EACF,CAAC,EACD,yBACD,CAAC;EACD,IAAAJ,gBAAS,EACR,uBAAuB,EACvB,mBAAmB,EACnBW,uBACD,CAAC;AACF;AAEO,SAASW,qBAAqBA,CAAE/C,QAAQ,EAAG;EACjD,SAASgD,mBAAmBA,CAAExC,KAAK,EAAErF,IAAI,EAAE/B,UAAU,EAAG;IACvD,OAAO4G,QAAQ,CAAC2C,MAAM,CAAE,CAAEM,IAAI,EAAElJ,OAAO,KAAM;MAC5C,MAAM;QAAE6G,UAAU;QAAEC,aAAa,GAAG,EAAE;QAAEqC;MAAa,CAAC,GAAGnJ,OAAO;MAEhE,MAAMoJ,gBAAgB,GAAG,CAAC,CAAC;MAC3B,KAAM,MAAMlL,GAAG,IAAI4I,aAAa,EAAG;QAClC,IAAKzH,UAAU,CAAEnB,GAAG,CAAE,EAAG;UACxBkL,gBAAgB,CAAElL,GAAG,CAAE,GAAGmB,UAAU,CAAEnB,GAAG,CAAE;QAC5C;MACD;MAEA;MACC;MACA;MACA,CAAEH,MAAM,CAAC2K,IAAI,CAAEU,gBAAiB,CAAC,CAAC9K,MAAM,IACxC,CAAEuI,UAAU,CAAEzF,IAAK,CAAC,EACnB;QACD,OAAO8H,IAAI;MACZ;MAEA,OAAOC,YAAY,CAAED,IAAI,EAAE9H,IAAI,EAAEgI,gBAAiB,CAAC;IACpD,CAAC,EAAE3C,KAAM,CAAC;EACX;EACA,IAAAiB,gBAAS,EACR,kCAAkC,EAClC,mBAAmB,EACnBuB,mBAAmB,EACnB,CACD,CAAC;EACD,IAAAvB,gBAAS,EACR,kCAAkC,EAClC,mBAAmB,EACjBjB,KAAK,IAAM;IACZ;IACA;IACA;IACA,IAAKA,KAAK,CAAC4C,cAAc,CAAE,WAAY,CAAC,IAAI,CAAE5C,KAAK,CAACqC,SAAS,EAAG;MAC/D,OAAOrC,KAAK,CAACqC,SAAS;IACvB;IAEA,OAAOrC,KAAK;EACb,CACD,CAAC;AACF"}
|
|
@@ -65,12 +65,13 @@ export default function AspectRatioTool({
|
|
|
65
65
|
onChange = () => {},
|
|
66
66
|
options = DEFAULT_ASPECT_RATIO_OPTIONS,
|
|
67
67
|
defaultValue = DEFAULT_ASPECT_RATIO_OPTIONS[0].value,
|
|
68
|
+
hasValue,
|
|
68
69
|
isShownByDefault = true
|
|
69
70
|
}) {
|
|
70
71
|
// Match the CSS default so if the value is used directly in CSS it will look correct in the control.
|
|
71
72
|
const displayValue = value !== null && value !== void 0 ? value : 'auto';
|
|
72
73
|
return createElement(ToolsPanelItem, {
|
|
73
|
-
hasValue: () => displayValue !== defaultValue,
|
|
74
|
+
hasValue: hasValue ? hasValue : () => displayValue !== defaultValue,
|
|
74
75
|
label: __('Aspect ratio'),
|
|
75
76
|
onDeselect: () => onChange(undefined),
|
|
76
77
|
isShownByDefault: isShownByDefault,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SelectControl","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","DEFAULT_ASPECT_RATIO_OPTIONS","label","value","disabled","hidden","AspectRatioTool","panelId","onChange","options","defaultValue","isShownByDefault","displayValue","createElement","
|
|
1
|
+
{"version":3,"names":["SelectControl","__experimentalToolsPanelItem","ToolsPanelItem","__","_x","DEFAULT_ASPECT_RATIO_OPTIONS","label","value","disabled","hidden","AspectRatioTool","panelId","onChange","options","defaultValue","hasValue","isShownByDefault","displayValue","createElement","onDeselect","undefined","size","__nextHasNoMarginBottom"],"sources":["@wordpress/block-editor/src/components/dimensions-tool/aspect-ratio-tool.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSelectControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * @typedef {import('@wordpress/components/build-types/select-control/types').SelectControlProps} SelectControlProps\n */\n\n/**\n * @type {SelectControlProps[]}\n */\nexport const DEFAULT_ASPECT_RATIO_OPTIONS = [\n\t{\n\t\tlabel: _x( 'Original', 'Aspect ratio option for dimensions control' ),\n\t\tvalue: 'auto',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Square - 1:1',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '1',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Standard - 4:3',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '4/3',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Portrait - 3:4',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '3/4',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Classic - 3:2',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '3/2',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Classic Portrait - 2:3',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '2/3',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Wide - 16:9',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '16/9',\n\t},\n\t{\n\t\tlabel: _x(\n\t\t\t'Tall - 9:16',\n\t\t\t'Aspect ratio option for dimensions control'\n\t\t),\n\t\tvalue: '9/16',\n\t},\n\t{\n\t\tlabel: _x( 'Custom', 'Aspect ratio option for dimensions control' ),\n\t\tvalue: 'custom',\n\t\tdisabled: true,\n\t\thidden: true,\n\t},\n];\n\n/**\n * @callback AspectRatioToolPropsOnChange\n * @param {string} [value] New aspect ratio value.\n * @return {void} No return.\n */\n\n/**\n * @typedef {Object} AspectRatioToolProps\n * @property {string} [panelId] ID of the panel this tool is associated with.\n * @property {string} [value] Current aspect ratio value.\n * @property {AspectRatioToolPropsOnChange} [onChange] Callback to update the aspect ratio value.\n * @property {SelectControlProps[]} [options] Aspect ratio options.\n * @property {string} [defaultValue] Default aspect ratio value.\n * @property {boolean} [isShownByDefault] Whether the tool is shown by default.\n */\n\nexport default function AspectRatioTool( {\n\tpanelId,\n\tvalue,\n\tonChange = () => {},\n\toptions = DEFAULT_ASPECT_RATIO_OPTIONS,\n\tdefaultValue = DEFAULT_ASPECT_RATIO_OPTIONS[ 0 ].value,\n\thasValue,\n\tisShownByDefault = true,\n} ) {\n\t// Match the CSS default so if the value is used directly in CSS it will look correct in the control.\n\tconst displayValue = value ?? 'auto';\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\thasValue={\n\t\t\t\thasValue ? hasValue : () => displayValue !== defaultValue\n\t\t\t}\n\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\tonDeselect={ () => onChange( undefined ) }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<SelectControl\n\t\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\t\tvalue={ displayValue }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t/>\n\t\t</ToolsPanelItem>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,aAAa,EACbC,4BAA4B,IAAIC,cAAc,QACxC,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,4BAA4B,GAAG,CAC3C;EACCC,KAAK,EAAEF,EAAE,CAAE,UAAU,EAAE,4CAA6C,CAAC;EACrEG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,cAAc,EACd,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,gBAAgB,EAChB,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,gBAAgB,EAChB,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,eAAe,EACf,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,wBAAwB,EACxB,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,aAAa,EACb,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CACR,aAAa,EACb,4CACD,CAAC;EACDG,KAAK,EAAE;AACR,CAAC,EACD;EACCD,KAAK,EAAEF,EAAE,CAAE,QAAQ,EAAE,4CAA6C,CAAC;EACnEG,KAAK,EAAE,QAAQ;EACfC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE;AACT,CAAC,CACD;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAASC,eAAeA,CAAE;EACxCC,OAAO;EACPJ,KAAK;EACLK,QAAQ,GAAGA,CAAA,KAAM,CAAC,CAAC;EACnBC,OAAO,GAAGR,4BAA4B;EACtCS,YAAY,GAAGT,4BAA4B,CAAE,CAAC,CAAE,CAACE,KAAK;EACtDQ,QAAQ;EACRC,gBAAgB,GAAG;AACpB,CAAC,EAAG;EACH;EACA,MAAMC,YAAY,GAAGV,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,MAAM;EAEpC,OACCW,aAAA,CAAChB,cAAc;IACda,QAAQ,EACPA,QAAQ,GAAGA,QAAQ,GAAG,MAAME,YAAY,KAAKH,YAC7C;IACDR,KAAK,EAAGH,EAAE,CAAE,cAAe,CAAG;IAC9BgB,UAAU,EAAGA,CAAA,KAAMP,QAAQ,CAAEQ,SAAU,CAAG;IAC1CJ,gBAAgB,EAAGA,gBAAkB;IACrCL,OAAO,EAAGA;EAAS,GAEnBO,aAAA,CAAClB,aAAa;IACbM,KAAK,EAAGH,EAAE,CAAE,cAAe,CAAG;IAC9BI,KAAK,EAAGU,YAAc;IACtBJ,OAAO,EAAGA,OAAS;IACnBD,QAAQ,EAAGA,QAAU;IACrBS,IAAI,EAAG,kBAAoB;IAC3BC,uBAAuB;EAAA,CACvB,CACc,CAAC;AAEnB"}
|
|
@@ -19,6 +19,7 @@ import { getValueFromVariable, TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';
|
|
|
19
19
|
import SpacingSizesControl from '../spacing-sizes-control';
|
|
20
20
|
import HeightControl from '../height-control';
|
|
21
21
|
import ChildLayoutControl from '../child-layout-control';
|
|
22
|
+
import AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';
|
|
22
23
|
import { cleanEmptyObject } from '../../hooks/utils';
|
|
23
24
|
import { setImmutably } from '../../utils/object';
|
|
24
25
|
const AXIAL_SIDES = ['horizontal', 'vertical'];
|
|
@@ -29,8 +30,9 @@ export function useHasDimensionsPanel(settings) {
|
|
|
29
30
|
const hasMargin = useHasMargin(settings);
|
|
30
31
|
const hasGap = useHasGap(settings);
|
|
31
32
|
const hasMinHeight = useHasMinHeight(settings);
|
|
33
|
+
const hasAspectRatio = useHasAspectRatio(settings);
|
|
32
34
|
const hasChildLayout = useHasChildLayout(settings);
|
|
33
|
-
return Platform.OS === 'web' && (hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap || hasMinHeight || hasChildLayout);
|
|
35
|
+
return Platform.OS === 'web' && (hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap || hasMinHeight || hasAspectRatio || hasChildLayout);
|
|
34
36
|
}
|
|
35
37
|
function useHasContentSize(settings) {
|
|
36
38
|
return settings?.layout?.contentSize;
|
|
@@ -50,6 +52,9 @@ function useHasGap(settings) {
|
|
|
50
52
|
function useHasMinHeight(settings) {
|
|
51
53
|
return settings?.dimensions?.minHeight;
|
|
52
54
|
}
|
|
55
|
+
function useHasAspectRatio(settings) {
|
|
56
|
+
return settings?.dimensions?.aspectRatio;
|
|
57
|
+
}
|
|
53
58
|
function useHasChildLayout(settings) {
|
|
54
59
|
var _settings$parentLayou;
|
|
55
60
|
const {
|
|
@@ -149,6 +154,7 @@ const DEFAULT_CONTROLS = {
|
|
|
149
154
|
margin: true,
|
|
150
155
|
blockGap: true,
|
|
151
156
|
minHeight: true,
|
|
157
|
+
aspectRatio: true,
|
|
152
158
|
childLayout: true
|
|
153
159
|
};
|
|
154
160
|
export default function DimensionsPanel({
|
|
@@ -164,7 +170,7 @@ export default function DimensionsPanel({
|
|
|
164
170
|
// in global styles but not in block inspector.
|
|
165
171
|
includeLayoutControls = false
|
|
166
172
|
}) {
|
|
167
|
-
var _settings$parentLayou2, _defaultControls$cont, _defaultControls$wide, _defaultControls$padd, _defaultControls$marg, _defaultControls$bloc, _defaultControls$minH, _defaultControls$chil;
|
|
173
|
+
var _settings$parentLayou2, _defaultControls$cont, _defaultControls$wide, _defaultControls$padd, _defaultControls$marg, _defaultControls$bloc, _defaultControls$minH, _defaultControls$aspe, _defaultControls$chil;
|
|
168
174
|
const {
|
|
169
175
|
dimensions,
|
|
170
176
|
spacing
|
|
@@ -269,13 +275,25 @@ export default function DimensionsPanel({
|
|
|
269
275
|
const showMinHeightControl = useHasMinHeight(settings);
|
|
270
276
|
const minHeightValue = decodeValue(inheritedValue?.dimensions?.minHeight);
|
|
271
277
|
const setMinHeightValue = newValue => {
|
|
272
|
-
|
|
278
|
+
const tempValue = setImmutably(value, ['dimensions', 'minHeight'], newValue);
|
|
279
|
+
// Apply min-height, while removing any applied aspect ratio.
|
|
280
|
+
onChange(setImmutably(tempValue, ['dimensions', 'aspectRatio'], undefined));
|
|
273
281
|
};
|
|
274
282
|
const resetMinHeightValue = () => {
|
|
275
283
|
setMinHeightValue(undefined);
|
|
276
284
|
};
|
|
277
285
|
const hasMinHeightValue = () => !!value?.dimensions?.minHeight;
|
|
278
286
|
|
|
287
|
+
// Aspect Ratio
|
|
288
|
+
const showAspectRatioControl = useHasAspectRatio(settings);
|
|
289
|
+
const aspectRatioValue = decodeValue(inheritedValue?.dimensions?.aspectRatio);
|
|
290
|
+
const setAspectRatioValue = newValue => {
|
|
291
|
+
const tempValue = setImmutably(value, ['dimensions', 'aspectRatio'], newValue);
|
|
292
|
+
// Apply aspect-ratio, while removing any applied min-height.
|
|
293
|
+
onChange(setImmutably(tempValue, ['dimensions', 'minHeight'], undefined));
|
|
294
|
+
};
|
|
295
|
+
const hasAspectRatioValue = () => !!value?.dimensions?.aspectRatio;
|
|
296
|
+
|
|
279
297
|
// Child Layout
|
|
280
298
|
const showChildLayoutControl = useHasChildLayout(settings);
|
|
281
299
|
const childLayout = inheritedValue?.layout;
|
|
@@ -317,7 +335,8 @@ export default function DimensionsPanel({
|
|
|
317
335
|
},
|
|
318
336
|
dimensions: {
|
|
319
337
|
...previousValue?.dimensions,
|
|
320
|
-
minHeight: undefined
|
|
338
|
+
minHeight: undefined,
|
|
339
|
+
aspectRatio: undefined
|
|
321
340
|
}
|
|
322
341
|
};
|
|
323
342
|
}, []);
|
|
@@ -471,7 +490,13 @@ export default function DimensionsPanel({
|
|
|
471
490
|
label: __('Minimum height'),
|
|
472
491
|
value: minHeightValue,
|
|
473
492
|
onChange: setMinHeightValue
|
|
474
|
-
})),
|
|
493
|
+
})), showAspectRatioControl && createElement(AspectRatioTool, {
|
|
494
|
+
hasValue: hasAspectRatioValue,
|
|
495
|
+
value: aspectRatioValue,
|
|
496
|
+
onChange: setAspectRatioValue,
|
|
497
|
+
panelId: panelId,
|
|
498
|
+
isShownByDefault: (_defaultControls$aspe = defaultControls.aspectRatio) !== null && _defaultControls$aspe !== void 0 ? _defaultControls$aspe : DEFAULT_CONTROLS.aspectRatio
|
|
499
|
+
}), showChildLayoutControl && createElement(VStack, {
|
|
475
500
|
as: ToolsPanelItem,
|
|
476
501
|
spacing: 2,
|
|
477
502
|
hasValue: hasChildLayoutValue,
|