@wordpress/edit-site 4.3.2 → 4.4.0

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-editor/resizable-editor.js +2 -1
  3. package/build/components/block-editor/resizable-editor.js.map +1 -1
  4. package/build/components/editor/global-styles-renderer.js +2 -1
  5. package/build/components/editor/global-styles-renderer.js.map +1 -1
  6. package/build/components/global-styles/border-panel.js +100 -79
  7. package/build/components/global-styles/border-panel.js.map +1 -1
  8. package/build/components/global-styles/use-global-styles-output.js +91 -15
  9. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  10. package/build/components/global-styles/utils.js +12 -2
  11. package/build/components/global-styles/utils.js.map +1 -1
  12. package/build/components/sidebar/navigation-menu-sidebar/index.js +4 -2
  13. package/build/components/sidebar/navigation-menu-sidebar/index.js.map +1 -1
  14. package/build-module/components/block-editor/resizable-editor.js +2 -1
  15. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  16. package/build-module/components/editor/global-styles-renderer.js +2 -1
  17. package/build-module/components/editor/global-styles-renderer.js.map +1 -1
  18. package/build-module/components/global-styles/border-panel.js +103 -80
  19. package/build-module/components/global-styles/border-panel.js.map +1 -1
  20. package/build-module/components/global-styles/use-global-styles-output.js +87 -13
  21. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  22. package/build-module/components/global-styles/utils.js +12 -2
  23. package/build-module/components/global-styles/utils.js.map +1 -1
  24. package/build-module/components/sidebar/navigation-menu-sidebar/index.js +4 -2
  25. package/build-module/components/sidebar/navigation-menu-sidebar/index.js.map +1 -1
  26. package/build-style/style-rtl.css +39 -0
  27. package/build-style/style.css +39 -0
  28. package/package.json +29 -29
  29. package/src/components/block-editor/resizable-editor.js +6 -2
  30. package/src/components/editor/global-styles-renderer.js +2 -1
  31. package/src/components/global-styles/border-panel.js +112 -109
  32. package/src/components/global-styles/test/use-global-styles-output.js +4 -1
  33. package/src/components/global-styles/use-global-styles-output.js +112 -17
  34. package/src/components/global-styles/utils.js +6 -0
  35. package/src/components/sidebar/navigation-menu-sidebar/index.js +4 -1
  36. package/src/components/sidebar/style.scss +50 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","PRESET_METADATA","declarations","path","valueKey","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","output","STYLE_PROPERTY","properties","useEngine","pathToValue","styleValue","entries","entry","name","prop","cssProperty","startsWith","extraRules","rule","getNodesWithStyles","tree","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","includes","ROOT_BLOCK_SELECTOR","elements","ELEMENTS","blocks","node","blockName","elementName","sel","getNodesWithSettings","settings","pickPresets","presets","custom","blockCustom","toCustomProperties","ruleset","customProps","toStyles","nodesWithStyles","nodesWithSettings","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","useGlobalStylesOutput","stylesheets","setStylesheets","setSettings","merged","mergedConfig","GlobalStylesContext","customProperties","globalStyles","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tfirst,\n\tforEach,\n\tget,\n\tisEmpty,\n\tisString,\n\tkebabCase,\n\tpickBy,\n\treduce,\n\tset,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useEffect, useState, useContext } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR } from './utils';\nimport { GlobalStylesContext } from './context';\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\tif ( startsWith( uncompiledValue, VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n *\n * @return {Array} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\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\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\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\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @return {Array} An array of style declarations.\n */\nfunction getStylesDeclarations( blockStyles = {} ) {\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine }, key ) => {\n\t\t\tconst pathToValue = value;\n\t\t\tif ( first( pathToValue ) === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\tif ( !! properties && ! isString( styleValue ) ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\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\tconst extraRules = getCSSRules( blockStyles, { selector: 'self' } );\n\textraRules.forEach( ( rule ) => {\n\t\tif ( rule.selector !== 'self' ) {\n\t\t\tthrow \"This style can't be added as inline style\";\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\t\toutput.push( `${ cssProperty }: ${ compileStyleValue( rule.value ) }` );\n\t} );\n\n\treturn output;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[ 'border', 'color', 'spacing', 'typography' ].includes( key )\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\tforEach( tree.styles?.elements, ( value, key ) => {\n\t\tif ( !! value && !! ELEMENTS[ key ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: value,\n\t\t\t\tselector: ELEMENTS[ key ],\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tforEach( tree.styles?.blocks, ( node, blockName ) => {\n\t\tconst blockStyles = pickStyleKeys( node );\n\t\tif ( !! blockStyles && !! blockSelectors?.[ blockName ]?.selector ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: blockStyles,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t} );\n\t\t}\n\n\t\tforEach( node?.elements, ( value, elementName ) => {\n\t\t\tif (\n\t\t\t\t!! value &&\n\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tstyles: value,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t.map( ( sel ) => sel + ' ' + ELEMENTS[ elementName ] )\n\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tforEach( tree.settings?.blocks, ( node, blockName ) => {\n\t\tconst blockPresets = pickPresets( node );\n\t\tconst blockCustom = node.custom;\n\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\tnodes.push( {\n\t\t\t\tpresets: blockPresets,\n\t\t\t\tcustom: blockCustom,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = ( tree, blockSelectors ) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\n\tlet ruleset =\n\t\t'.wp-site-blocks > * { margin-top: 0; margin-bottom: 0; }.wp-site-blocks > * + * { margin-top: var( --wp--style--block-gap ); }';\n\tnodesWithStyles.forEach( ( { selector, styles } ) => {\n\t\tconst declarations = getStylesDeclarations( styles );\n\t\tif ( declarations.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t} );\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nconst getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tresult[ name ] = {\n\t\t\tname,\n\t\t\tselector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst [ stylesheets, setStylesheets ] = useState( [] );\n\tconst [ settings, setSettings ] = useState( {} );\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\n\tuseEffect( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles( mergedConfig, blockSelectors );\n\t\tsetStylesheets( [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t] );\n\t\tsetSettings( mergedConfig.settings );\n\t}, [ mergedConfig ] );\n\n\treturn [ stylesheets, settings ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","PRESET_METADATA","declarations","path","valueKey","valueFunc","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","getPresetsSvgFilters","filter","metadata","at","flatMap","preset","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","output","STYLE_PROPERTY","properties","useEngine","pathToValue","styleValue","entries","entry","name","prop","cssProperty","startsWith","extraRules","rule","getNodesWithStyles","tree","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","includes","ROOT_BLOCK_SELECTOR","elements","ELEMENTS","blocks","node","blockName","duotoneSelector","elementName","sel","getNodesWithSettings","settings","pickPresets","presets","custom","blockCustom","toCustomProperties","ruleset","customProps","toStyles","hasBlockGapSupport","nodesWithStyles","nodesWithSettings","duotoneStyles","duotoneDeclarations","toSvgFilters","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","color","__experimentalDuotone","useGlobalStylesOutput","stylesheets","setStylesheets","setSettings","svgFilters","setSvgFilters","merged","mergedConfig","GlobalStylesContext","blockGap","customProperties","globalStyles","filters","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tfirst,\n\tforEach,\n\tget,\n\tisEmpty,\n\tisString,\n\tkebabCase,\n\tpickBy,\n\treduce,\n\tset,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useEffect, useState, useContext } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\nimport { __unstablePresetDuotoneFilter as PresetDuotoneFilter } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { useSetting } from './hooks';\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\tif ( startsWith( uncompiledValue, VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n *\n * @return {Array} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, valueFunc, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tif ( valueKey ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value ) }`\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\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\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\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters( blockPresets = {} ) {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata ) => {\n\t\tconst presetByOrigin = get( blockPresets, metadata.path, {} );\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset ) => (\n\t\t\t\t\t<PresetDuotoneFilter\n\t\t\t\t\t\tpreset={ preset }\n\t\t\t\t\t\tkey={ preset.slug }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t);\n\t} );\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @return {Array} An array of style declarations.\n */\nfunction getStylesDeclarations( blockStyles = {} ) {\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine }, key ) => {\n\t\t\tconst pathToValue = value;\n\t\t\tif ( first( pathToValue ) === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\tif ( !! properties && ! isString( styleValue ) ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\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\tconst extraRules = getCSSRules( blockStyles, { selector: 'self' } );\n\textraRules.forEach( ( rule ) => {\n\t\tif ( rule.selector !== 'self' ) {\n\t\t\tthrow \"This style can't be added as inline style\";\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\t\toutput.push( `${ cssProperty }: ${ compileStyleValue( rule.value ) }` );\n\t} );\n\n\treturn output;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[ 'border', 'color', 'spacing', 'typography', 'filter' ].includes(\n\t\t\t\tkey\n\t\t\t)\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\tforEach( tree.styles?.elements, ( value, key ) => {\n\t\tif ( !! value && !! ELEMENTS[ key ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: value,\n\t\t\t\tselector: ELEMENTS[ key ],\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tforEach( tree.styles?.blocks, ( node, blockName ) => {\n\t\tconst blockStyles = pickStyleKeys( node );\n\t\tif ( !! blockStyles && !! blockSelectors?.[ blockName ]?.selector ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: blockStyles,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\tduotoneSelector: blockSelectors[ blockName ].duotoneSelector,\n\t\t\t} );\n\t\t}\n\n\t\tforEach( node?.elements, ( value, elementName ) => {\n\t\t\tif (\n\t\t\t\t!! value &&\n\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tstyles: value,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t.map( ( sel ) => sel + ' ' + ELEMENTS[ elementName ] )\n\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tforEach( tree.settings?.blocks, ( node, blockName ) => {\n\t\tconst blockPresets = pickPresets( node );\n\t\tconst blockCustom = node.custom;\n\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\tnodes.push( {\n\t\t\t\tpresets: blockPresets,\n\t\t\t\tcustom: blockCustom,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = ( tree, blockSelectors, hasBlockGapSupport ) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\n\t/*\n\t * Reset default browser margin on the root body element.\n\t * This is set on the root selector **before** generating the ruleset\n\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t * `margin` in its `spacing` declaration for the `body` element then these\n\t * user-generated values take precedence in the CSS cascade.\n\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t */\n\tlet ruleset = 'body {margin: 0;}';\n\tnodesWithStyles.forEach( ( { selector, duotoneSelector, styles } ) => {\n\t\tconst duotoneStyles = {};\n\t\tif ( styles?.filter ) {\n\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\tdelete styles.filter;\n\t\t}\n\n\t\t// Process duotone styles (they use color.__experimentalDuotone selector).\n\t\tif ( duotoneSelector ) {\n\t\t\tconst duotoneDeclarations = getStylesDeclarations( duotoneStyles );\n\t\t\tif ( duotoneDeclarations.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\truleset =\n\t\t\t\truleset +\n\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join( ';' ) };}`;\n\t\t}\n\n\t\t// Process the remaning block styles (they use either normal block class or __experimentalSelector).\n\t\tconst declarations = getStylesDeclarations( styles );\n\t\tif ( declarations.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t} );\n\n\t/* Add alignment / layout styles */\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\n\tif ( hasBlockGapSupport ) {\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * + * { margin-block-start: var( --wp--style--block-gap ); }';\n\t}\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport function toSvgFilters( tree, blockSelectors ) {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nconst getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst duotoneSelector =\n\t\t\tblockType?.supports?.color?.__experimentalDuotone ?? null;\n\t\tresult[ name ] = {\n\t\t\tname,\n\t\t\tselector,\n\t\t\tduotoneSelector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst [ stylesheets, setStylesheets ] = useState( [] );\n\tconst [ settings, setSettings ] = useState( {} );\n\tconst [ svgFilters, setSvgFilters ] = useState( {} );\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst [ blockGap ] = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGap !== null;\n\n\tuseEffect( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport\n\t\t);\n\t\tconst filters = toSvgFilters( mergedConfig, blockSelectors );\n\t\tsetStylesheets( [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t] );\n\t\tsetSettings( mergedConfig.settings );\n\t\tsetSvgFilters( filters );\n\t}, [ mergedConfig ] );\n\n\treturn [ stylesheets, settings, svgFilters, hasBlockGapSupport ];\n}\n"]}
@@ -42,6 +42,16 @@ const PRESET_METADATA = [{
42
42
  classSuffix: 'gradient-background',
43
43
  propertyName: 'background'
44
44
  }]
45
+ }, {
46
+ path: ['color', 'duotone'],
47
+ cssVarInfix: 'duotone',
48
+ valueFunc: _ref => {
49
+ let {
50
+ slug
51
+ } = _ref;
52
+ return `url( '#wp-duotone-${slug}' )`;
53
+ },
54
+ classes: []
45
55
  }, {
46
56
  path: ['typography', 'fontSizes'],
47
57
  valueKey: 'size',
@@ -133,8 +143,8 @@ function getPresetVariableFromValue(features, blockName, variableStylePath, pres
133
143
  return `var:preset|${cssVarInfix}|${presetObject.slug}`;
134
144
  }
135
145
 
136
- function getValueFromPresetVariable(features, blockName, variable, _ref) {
137
- let [presetType, slug] = _ref;
146
+ function getValueFromPresetVariable(features, blockName, variable, _ref2) {
147
+ let [presetType, slug] = _ref2;
138
148
  const metadata = (0, _lodash.find)(PRESET_METADATA, ['cssVarInfix', presetType]);
139
149
 
140
150
  if (!metadata) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/utils.js"],"names":["ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","STYLE_PATH_TO_CSS_VAR_INFIX","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","preset","highestPresetObjectWithSameSlug","slug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","split","endsWith","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, find, isString } from 'lodash';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n];\n\nconst STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'elements.link.color.text': 'color',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tget( features, [ 'blocks', blockName, ...presetPath ] ),\n\t\tget( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = find(\n\t\t\t\t\t\tpresets,\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', cssVarInfix ] );\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', presetType ] );\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tget( features, [ 'blocks', blockName, 'custom', ...path ] ) ??\n\t\tget( features, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || ! isString( variable ) ) {\n\t\treturn variable;\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/utils.js"],"names":["ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","STYLE_PATH_TO_CSS_VAR_INFIX","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","preset","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","split","endsWith","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, find, isString } from 'lodash';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n];\n\nconst STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'elements.link.color.text': 'color',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tget( features, [ 'blocks', blockName, ...presetPath ] ),\n\t\tget( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = find(\n\t\t\t\t\t\tpresets,\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', cssVarInfix ] );\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', presetType ] );\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tget( features, [ 'blocks', blockName, 'custom', ...path ] ) ??\n\t\tget( features, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || ! isString( variable ) ) {\n\t\treturn variable;\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n"]}
@@ -30,11 +30,13 @@ function NavigationMenuSidebar() {
30
30
  return (0, _element.createElement)(_defaultSidebar.default, {
31
31
  className: "edit-site-navigation-menu-sidebar",
32
32
  identifier: "edit-site/navigation-menu",
33
- title: (0, _i18n.__)('Navigation Menus'),
33
+ title: (0, _i18n.__)('Navigation'),
34
34
  icon: _icons.navigation,
35
35
  closeLabel: (0, _i18n.__)('Close navigation menu sidebar'),
36
36
  panelClassName: "edit-site-navigation-menu-sidebar__panel",
37
- header: (0, _element.createElement)(_components.Flex, null, (0, _element.createElement)(_components.FlexBlock, null, (0, _element.createElement)("strong", null, (0, _i18n.__)('Navigation Menus'))))
37
+ header: (0, _element.createElement)(_components.Flex, null, (0, _element.createElement)(_components.FlexBlock, null, (0, _element.createElement)("strong", null, (0, _i18n.__)('Navigation Menus')), (0, _element.createElement)("span", {
38
+ className: "edit-site-navigation-sidebar__beta"
39
+ }, (0, _i18n.__)('Beta'))))
38
40
  }, (0, _element.createElement)(_navigationInspector.default, null));
39
41
  }
40
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/sidebar/navigation-menu-sidebar/index.js"],"names":["NavigationMenuSidebar","navigation"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;AAIe,SAASA,qBAAT,GAAiC;AAC/C,SACC,4BAAC,uBAAD;AACC,IAAA,SAAS,EAAC,mCADX;AAEC,IAAA,UAAU,EAAC,2BAFZ;AAGC,IAAA,KAAK,EAAG,cAAI,kBAAJ,CAHT;AAIC,IAAA,IAAI,EAAGC,iBAJR;AAKC,IAAA,UAAU,EAAG,cAAI,+BAAJ,CALd;AAMC,IAAA,cAAc,EAAC,0CANhB;AAOC,IAAA,MAAM,EACL,4BAAC,gBAAD,QACC,4BAAC,qBAAD,QACC,4CAAU,cAAI,kBAAJ,CAAV,CADD,CADD;AARF,KAeC,4BAAC,4BAAD,OAfD,CADD;AAmBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { FlexBlock, Flex } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { navigation } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport DefaultSidebar from '../default-sidebar';\nimport NavigationInspector from './navigation-inspector';\n\nexport default function NavigationMenuSidebar() {\n\treturn (\n\t\t<DefaultSidebar\n\t\t\tclassName=\"edit-site-navigation-menu-sidebar\"\n\t\t\tidentifier=\"edit-site/navigation-menu\"\n\t\t\ttitle={ __( 'Navigation Menus' ) }\n\t\t\ticon={ navigation }\n\t\t\tcloseLabel={ __( 'Close navigation menu sidebar' ) }\n\t\t\tpanelClassName=\"edit-site-navigation-menu-sidebar__panel\"\n\t\t\theader={\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<strong>{ __( 'Navigation Menus' ) }</strong>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t</Flex>\n\t\t\t}\n\t\t>\n\t\t\t<NavigationInspector />\n\t\t</DefaultSidebar>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/sidebar/navigation-menu-sidebar/index.js"],"names":["NavigationMenuSidebar","navigation"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;AAIe,SAASA,qBAAT,GAAiC;AAC/C,SACC,4BAAC,uBAAD;AACC,IAAA,SAAS,EAAC,mCADX;AAEC,IAAA,UAAU,EAAC,2BAFZ;AAGC,IAAA,KAAK,EAAG,cAAI,YAAJ,CAHT;AAIC,IAAA,IAAI,EAAGC,iBAJR;AAKC,IAAA,UAAU,EAAG,cAAI,+BAAJ,CALd;AAMC,IAAA,cAAc,EAAC,0CANhB;AAOC,IAAA,MAAM,EACL,4BAAC,gBAAD,QACC,4BAAC,qBAAD,QACC,4CAAU,cAAI,kBAAJ,CAAV,CADD,EAEC;AAAM,MAAA,SAAS,EAAC;AAAhB,OACG,cAAI,MAAJ,CADH,CAFD,CADD;AARF,KAkBC,4BAAC,4BAAD,OAlBD,CADD;AAsBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { FlexBlock, Flex } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { navigation } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport DefaultSidebar from '../default-sidebar';\nimport NavigationInspector from './navigation-inspector';\n\nexport default function NavigationMenuSidebar() {\n\treturn (\n\t\t<DefaultSidebar\n\t\t\tclassName=\"edit-site-navigation-menu-sidebar\"\n\t\t\tidentifier=\"edit-site/navigation-menu\"\n\t\t\ttitle={ __( 'Navigation' ) }\n\t\t\ticon={ navigation }\n\t\t\tcloseLabel={ __( 'Close navigation menu sidebar' ) }\n\t\t\tpanelClassName=\"edit-site-navigation-menu-sidebar__panel\"\n\t\t\theader={\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<strong>{ __( 'Navigation Menus' ) }</strong>\n\t\t\t\t\t\t<span className=\"edit-site-navigation-sidebar__beta\">\n\t\t\t\t\t\t\t{ __( 'Beta' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t</Flex>\n\t\t\t}\n\t\t>\n\t\t\t<NavigationInspector />\n\t\t</DefaultSidebar>\n\t);\n}\n"]}
@@ -36,6 +36,7 @@ function ResizableEditor(_ref) {
36
36
  let {
37
37
  enableResizing,
38
38
  settings,
39
+ children,
39
40
  ...props
40
41
  } = _ref;
41
42
  const deviceType = useSelect(select => select(editSiteStore).__experimentalGetPreviewDeviceType(), []);
@@ -143,7 +144,7 @@ function ResizableEditor(_ref) {
143
144
  ref: ref,
144
145
  name: "editor-canvas",
145
146
  className: "edit-site-visual-editor__editor-canvas"
146
- }, props)));
147
+ }, props), settings.svgFilters, children));
147
148
  }
148
149
 
149
150
  export default ResizableEditor;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/resizable-editor.js"],"names":["useState","useEffect","useRef","useCallback","ResizableBox","__experimentalUseResizeCanvas","useResizeCanvas","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","useSelect","useMergeRefs","store","editSiteStore","ResizeHandle","DEFAULT_STYLES","width","height","HANDLE_STYLES_OVERRIDE","position","undefined","userSelect","cursor","top","right","bottom","left","ResizableEditor","enableResizing","settings","props","deviceType","select","__experimentalGetPreviewDeviceType","deviceStyles","setWidth","setHeight","iframeRef","mouseMoveTypingResetRef","ref","autoResizeIframeHeight","iframe","current","animationFrame","resizeHeight","contentWindow","requestAnimationFrame","contentDocument","documentElement","scrollHeight","resizeObserver","registerObserver","disconnect","ResizeObserver","observe","addEventListener","cancelAnimationFrame","removeEventListener","resizeWidthBy","deltaPixels","offsetWidth","event","direction","element","style","styles","__unstableResolvedAssets"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, useCallback } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\nimport {\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport ResizeHandle from './resize-handle';\n\nconst DEFAULT_STYLES = {\n\twidth: '100%',\n\theight: '100%',\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nfunction ResizableEditor( { enableResizing, settings, ...props } ) {\n\tconst deviceType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editSiteStore ).__experimentalGetPreviewDeviceType(),\n\t\t[]\n\t);\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ width, setWidth ] = useState( DEFAULT_STYLES.width );\n\tconst [ height, setHeight ] = useState( DEFAULT_STYLES.height );\n\tconst iframeRef = useRef();\n\tconst mouseMoveTypingResetRef = useMouseMoveTypingReset();\n\tconst ref = useMergeRefs( [ iframeRef, mouseMoveTypingResetRef ] );\n\n\tuseEffect(\n\t\tfunction autoResizeIframeHeight() {\n\t\t\tconst iframe = iframeRef.current;\n\n\t\t\tif ( ! iframe || ! enableResizing ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet animationFrame = null;\n\n\t\t\tfunction resizeHeight() {\n\t\t\t\tif ( ! animationFrame ) {\n\t\t\t\t\t// Throttle the updates on animation frame.\n\t\t\t\t\tanimationFrame = iframe.contentWindow.requestAnimationFrame(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tsetHeight(\n\t\t\t\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t\t\t\t\t\t.scrollHeight\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tanimationFrame = null;\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\tlet resizeObserver;\n\n\t\t\tfunction registerObserver() {\n\t\t\t\tresizeObserver?.disconnect();\n\n\t\t\t\tresizeObserver = new iframe.contentWindow.ResizeObserver(\n\t\t\t\t\tresizeHeight\n\t\t\t\t);\n\t\t\t\t// Observing the <html> rather than the <body> because the latter\n\t\t\t\t// gets destroyed and remounted after initialization in <Iframe>.\n\t\t\t\tresizeObserver.observe(\n\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t);\n\n\t\t\t\tresizeHeight();\n\t\t\t}\n\n\t\t\t// This is only required in Firefox for some unknown reasons.\n\t\t\tiframe.addEventListener( 'load', registerObserver );\n\t\t\t// This is required in Chrome and Safari.\n\t\t\tregisterObserver();\n\n\t\t\treturn () => {\n\t\t\t\tiframe.contentWindow?.cancelAnimationFrame( animationFrame );\n\t\t\t\tresizeObserver?.disconnect();\n\t\t\t\tiframe.removeEventListener( 'load', registerObserver );\n\t\t\t};\n\t\t},\n\t\t[ enableResizing ]\n\t);\n\n\tconst resizeWidthBy = useCallback( ( deltaPixels ) => {\n\t\tif ( iframeRef.current ) {\n\t\t\tsetWidth( iframeRef.current.offsetWidth + deltaPixels );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tsize={ {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t} }\n\t\t\tonResizeStop={ ( event, direction, element ) => {\n\t\t\t\tsetWidth( element.style.width );\n\t\t\t} }\n\t\t\tminWidth={ 300 }\n\t\t\tmaxWidth=\"100%\"\n\t\t\tmaxHeight=\"100%\"\n\t\t\tenable={ {\n\t\t\t\tright: enableResizing,\n\t\t\t\tleft: enableResizing,\n\t\t\t} }\n\t\t\tshowHandle={ enableResizing }\n\t\t\t// The editor is centered horizontally, resizing it only\n\t\t\t// moves half the distance. Hence double the ratio to correctly\n\t\t\t// align the cursor to the resizer handle.\n\t\t\tresizeRatio={ 2 }\n\t\t\thandleComponent={ {\n\t\t\t\tleft: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tright: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t} }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tstyle={ enableResizing ? undefined : deviceStyles }\n\t\t\t\thead={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t\t\t\t<style>{\n\t\t\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t\t\t`.is-root-container { display: flow-root; }`\n\t\t\t\t\t\t}</style>\n\t\t\t\t\t\t{ enableResizing && (\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// Force the <html> and <body>'s heights to fit the content.\n\t\t\t\t\t\t\t\t\t`html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`\n\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\t\t// Some themes will have `min-height: 100vh` for the root container,\n\t\t\t\t\t\t\t\t\t// which isn't a requirement in auto resize mode.\n\t\t\t\t\t\t\t\t\t`.is-root-container { min-height: 0 !important; }`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tassets={ settings.__unstableResolvedAssets }\n\t\t\t\tref={ ref }\n\t\t\t\tname=\"editor-canvas\"\n\t\t\t\tclassName=\"edit-site-visual-editor__editor-canvas\"\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableEditor;\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/resizable-editor.js"],"names":["useState","useEffect","useRef","useCallback","ResizableBox","__experimentalUseResizeCanvas","useResizeCanvas","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","useSelect","useMergeRefs","store","editSiteStore","ResizeHandle","DEFAULT_STYLES","width","height","HANDLE_STYLES_OVERRIDE","position","undefined","userSelect","cursor","top","right","bottom","left","ResizableEditor","enableResizing","settings","children","props","deviceType","select","__experimentalGetPreviewDeviceType","deviceStyles","setWidth","setHeight","iframeRef","mouseMoveTypingResetRef","ref","autoResizeIframeHeight","iframe","current","animationFrame","resizeHeight","contentWindow","requestAnimationFrame","contentDocument","documentElement","scrollHeight","resizeObserver","registerObserver","disconnect","ResizeObserver","observe","addEventListener","cancelAnimationFrame","removeEventListener","resizeWidthBy","deltaPixels","offsetWidth","event","direction","element","style","styles","__unstableResolvedAssets","svgFilters"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, useCallback } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\nimport {\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport ResizeHandle from './resize-handle';\n\nconst DEFAULT_STYLES = {\n\twidth: '100%',\n\theight: '100%',\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nfunction ResizableEditor( { enableResizing, settings, children, ...props } ) {\n\tconst deviceType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editSiteStore ).__experimentalGetPreviewDeviceType(),\n\t\t[]\n\t);\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ width, setWidth ] = useState( DEFAULT_STYLES.width );\n\tconst [ height, setHeight ] = useState( DEFAULT_STYLES.height );\n\tconst iframeRef = useRef();\n\tconst mouseMoveTypingResetRef = useMouseMoveTypingReset();\n\tconst ref = useMergeRefs( [ iframeRef, mouseMoveTypingResetRef ] );\n\n\tuseEffect(\n\t\tfunction autoResizeIframeHeight() {\n\t\t\tconst iframe = iframeRef.current;\n\n\t\t\tif ( ! iframe || ! enableResizing ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet animationFrame = null;\n\n\t\t\tfunction resizeHeight() {\n\t\t\t\tif ( ! animationFrame ) {\n\t\t\t\t\t// Throttle the updates on animation frame.\n\t\t\t\t\tanimationFrame = iframe.contentWindow.requestAnimationFrame(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tsetHeight(\n\t\t\t\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t\t\t\t\t\t.scrollHeight\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tanimationFrame = null;\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\tlet resizeObserver;\n\n\t\t\tfunction registerObserver() {\n\t\t\t\tresizeObserver?.disconnect();\n\n\t\t\t\tresizeObserver = new iframe.contentWindow.ResizeObserver(\n\t\t\t\t\tresizeHeight\n\t\t\t\t);\n\t\t\t\t// Observing the <html> rather than the <body> because the latter\n\t\t\t\t// gets destroyed and remounted after initialization in <Iframe>.\n\t\t\t\tresizeObserver.observe(\n\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t);\n\n\t\t\t\tresizeHeight();\n\t\t\t}\n\n\t\t\t// This is only required in Firefox for some unknown reasons.\n\t\t\tiframe.addEventListener( 'load', registerObserver );\n\t\t\t// This is required in Chrome and Safari.\n\t\t\tregisterObserver();\n\n\t\t\treturn () => {\n\t\t\t\tiframe.contentWindow?.cancelAnimationFrame( animationFrame );\n\t\t\t\tresizeObserver?.disconnect();\n\t\t\t\tiframe.removeEventListener( 'load', registerObserver );\n\t\t\t};\n\t\t},\n\t\t[ enableResizing ]\n\t);\n\n\tconst resizeWidthBy = useCallback( ( deltaPixels ) => {\n\t\tif ( iframeRef.current ) {\n\t\t\tsetWidth( iframeRef.current.offsetWidth + deltaPixels );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tsize={ {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t} }\n\t\t\tonResizeStop={ ( event, direction, element ) => {\n\t\t\t\tsetWidth( element.style.width );\n\t\t\t} }\n\t\t\tminWidth={ 300 }\n\t\t\tmaxWidth=\"100%\"\n\t\t\tmaxHeight=\"100%\"\n\t\t\tenable={ {\n\t\t\t\tright: enableResizing,\n\t\t\t\tleft: enableResizing,\n\t\t\t} }\n\t\t\tshowHandle={ enableResizing }\n\t\t\t// The editor is centered horizontally, resizing it only\n\t\t\t// moves half the distance. Hence double the ratio to correctly\n\t\t\t// align the cursor to the resizer handle.\n\t\t\tresizeRatio={ 2 }\n\t\t\thandleComponent={ {\n\t\t\t\tleft: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tright: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t} }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tstyle={ enableResizing ? undefined : deviceStyles }\n\t\t\t\thead={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t\t\t\t<style>{\n\t\t\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t\t\t`.is-root-container { display: flow-root; }`\n\t\t\t\t\t\t}</style>\n\t\t\t\t\t\t{ enableResizing && (\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// Force the <html> and <body>'s heights to fit the content.\n\t\t\t\t\t\t\t\t\t`html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`\n\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\t\t// Some themes will have `min-height: 100vh` for the root container,\n\t\t\t\t\t\t\t\t\t// which isn't a requirement in auto resize mode.\n\t\t\t\t\t\t\t\t\t`.is-root-container { min-height: 0 !important; }`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tassets={ settings.__unstableResolvedAssets }\n\t\t\t\tref={ ref }\n\t\t\t\tname=\"editor-canvas\"\n\t\t\t\tclassName=\"edit-site-visual-editor__editor-canvas\"\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ /* Filters need to be rendered before children to avoid Safari rendering issues. */ }\n\t\t\t\t{ settings.svgFilters }\n\t\t\t\t{ children }\n\t\t\t</Iframe>\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableEditor;\n"]}
@@ -20,7 +20,7 @@ import { store as editSiteStore } from '../../store';
20
20
  import { useGlobalStylesOutput } from '../global-styles/use-global-styles-output';
21
21
 
22
22
  function useGlobalStylesRenderer() {
23
- const [styles, settings] = useGlobalStylesOutput();
23
+ const [styles, settings, svgFilters] = useGlobalStylesOutput();
24
24
  const {
25
25
  getSettings
26
26
  } = useSelect(editSiteStore);
@@ -36,6 +36,7 @@ function useGlobalStylesRenderer() {
36
36
  const nonGlobalStyles = filter(currentStoreSettings.styles, style => !style.isGlobalStyles);
37
37
  updateSettings({ ...currentStoreSettings,
38
38
  styles: [...nonGlobalStyles, ...styles],
39
+ svgFilters,
39
40
  __experimentalFeatures: settings
40
41
  });
41
42
  }, [styles, settings]);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/editor/global-styles-renderer.js"],"names":["filter","useEffect","useSelect","useDispatch","store","editSiteStore","useGlobalStylesOutput","useGlobalStylesRenderer","styles","settings","getSettings","updateSettings","currentStoreSettings","nonGlobalStyles","style","isGlobalStyles","__experimentalFeatures","GlobalStylesRenderer"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,QAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,aAAvC;AAEA;AACA;AACA;;AACA,SAASC,qBAAT,QAAsC,2CAAtC;;AAEA,SAASC,uBAAT,GAAmC;AAClC,QAAM,CAAEC,MAAF,EAAUC,QAAV,IAAuBH,qBAAqB,EAAlD;AACA,QAAM;AAAEI,IAAAA;AAAF,MAAkBR,SAAS,CAAEG,aAAF,CAAjC;AACA,QAAM;AAAEM,IAAAA;AAAF,MAAqBR,WAAW,CAAEE,aAAF,CAAtC;AAEAJ,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAEO,MAAF,IAAY,CAAEC,QAAnB,EAA8B;AAC7B;AACA;;AAED,UAAMG,oBAAoB,GAAGF,WAAW,EAAxC;AACA,UAAMG,eAAe,GAAGb,MAAM,CAC7BY,oBAAoB,CAACJ,MADQ,EAE3BM,KAAF,IAAa,CAAEA,KAAK,CAACC,cAFQ,CAA9B;AAIAJ,IAAAA,cAAc,CAAE,EACf,GAAGC,oBADY;AAEfJ,MAAAA,MAAM,EAAE,CAAE,GAAGK,eAAL,EAAsB,GAAGL,MAAzB,CAFO;AAGfQ,MAAAA,sBAAsB,EAAEP;AAHT,KAAF,CAAd;AAKA,GAfQ,EAeN,CAAED,MAAF,EAAUC,QAAV,CAfM,CAAT;AAgBA;;AAED,OAAO,SAASQ,oBAAT,GAAgC;AACtCV,EAAAA,uBAAuB;AAEvB,SAAO,IAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { filter } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\n\n/**\n * Internal dependencies\n */\nimport { useGlobalStylesOutput } from '../global-styles/use-global-styles-output';\n\nfunction useGlobalStylesRenderer() {\n\tconst [ styles, settings ] = useGlobalStylesOutput();\n\tconst { getSettings } = useSelect( editSiteStore );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( ! styles || ! settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentStoreSettings = getSettings();\n\t\tconst nonGlobalStyles = filter(\n\t\t\tcurrentStoreSettings.styles,\n\t\t\t( style ) => ! style.isGlobalStyles\n\t\t);\n\t\tupdateSettings( {\n\t\t\t...currentStoreSettings,\n\t\t\tstyles: [ ...nonGlobalStyles, ...styles ],\n\t\t\t__experimentalFeatures: settings,\n\t\t} );\n\t}, [ styles, settings ] );\n}\n\nexport function GlobalStylesRenderer() {\n\tuseGlobalStylesRenderer();\n\n\treturn null;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/editor/global-styles-renderer.js"],"names":["filter","useEffect","useSelect","useDispatch","store","editSiteStore","useGlobalStylesOutput","useGlobalStylesRenderer","styles","settings","svgFilters","getSettings","updateSettings","currentStoreSettings","nonGlobalStyles","style","isGlobalStyles","__experimentalFeatures","GlobalStylesRenderer"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,QAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,aAAvC;AAEA;AACA;AACA;;AACA,SAASC,qBAAT,QAAsC,2CAAtC;;AAEA,SAASC,uBAAT,GAAmC;AAClC,QAAM,CAAEC,MAAF,EAAUC,QAAV,EAAoBC,UAApB,IAAmCJ,qBAAqB,EAA9D;AACA,QAAM;AAAEK,IAAAA;AAAF,MAAkBT,SAAS,CAAEG,aAAF,CAAjC;AACA,QAAM;AAAEO,IAAAA;AAAF,MAAqBT,WAAW,CAAEE,aAAF,CAAtC;AAEAJ,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAEO,MAAF,IAAY,CAAEC,QAAnB,EAA8B;AAC7B;AACA;;AAED,UAAMI,oBAAoB,GAAGF,WAAW,EAAxC;AACA,UAAMG,eAAe,GAAGd,MAAM,CAC7Ba,oBAAoB,CAACL,MADQ,EAE3BO,KAAF,IAAa,CAAEA,KAAK,CAACC,cAFQ,CAA9B;AAIAJ,IAAAA,cAAc,CAAE,EACf,GAAGC,oBADY;AAEfL,MAAAA,MAAM,EAAE,CAAE,GAAGM,eAAL,EAAsB,GAAGN,MAAzB,CAFO;AAGfE,MAAAA,UAHe;AAIfO,MAAAA,sBAAsB,EAAER;AAJT,KAAF,CAAd;AAMA,GAhBQ,EAgBN,CAAED,MAAF,EAAUC,QAAV,CAhBM,CAAT;AAiBA;;AAED,OAAO,SAASS,oBAAT,GAAgC;AACtCX,EAAAA,uBAAuB;AAEvB,SAAO,IAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { filter } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\n\n/**\n * Internal dependencies\n */\nimport { useGlobalStylesOutput } from '../global-styles/use-global-styles-output';\n\nfunction useGlobalStylesRenderer() {\n\tconst [ styles, settings, svgFilters ] = useGlobalStylesOutput();\n\tconst { getSettings } = useSelect( editSiteStore );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( ! styles || ! settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentStoreSettings = getSettings();\n\t\tconst nonGlobalStyles = filter(\n\t\t\tcurrentStoreSettings.styles,\n\t\t\t( style ) => ! style.isGlobalStyles\n\t\t);\n\t\tupdateSettings( {\n\t\t\t...currentStoreSettings,\n\t\t\tstyles: [ ...nonGlobalStyles, ...styles ],\n\t\t\tsvgFilters,\n\t\t\t__experimentalFeatures: settings,\n\t\t} );\n\t}, [ styles, settings ] );\n}\n\nexport function GlobalStylesRenderer() {\n\tuseGlobalStylesRenderer();\n\n\treturn null;\n}\n"]}
@@ -3,15 +3,15 @@ import { createElement } from "@wordpress/element";
3
3
  /**
4
4
  * WordPress dependencies
5
5
  */
6
- import { __experimentalBorderRadiusControl as BorderRadiusControl, __experimentalBorderStyleControl as BorderStyleControl, __experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown } from '@wordpress/block-editor';
7
- import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, __experimentalUnitControl as UnitControl, __experimentalUseCustomUnits as useCustomUnits } from '@wordpress/components';
6
+ import { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor';
7
+ import { __experimentalBorderBoxControl as BorderBoxControl, __experimentalHasSplitBorders as hasSplitBorders, __experimentalIsDefinedBorder as isDefinedBorder, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
8
+ import { useCallback } from '@wordpress/element';
8
9
  import { __ } from '@wordpress/i18n';
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
 
13
14
  import { getSupportedGlobalStylesPanels, useColorsPerOrigin, useSetting, useStyle } from './hooks';
14
- const MIN_BORDER_WIDTH = 0;
15
15
  export function useHasBorderPanel(name) {
16
16
  const controls = [useHasBorderColorControl(name), useHasBorderRadiusControl(name), useHasBorderStyleControl(name), useHasBorderWidthControl(name)];
17
17
  return controls.some(Boolean);
@@ -37,6 +37,37 @@ function useHasBorderWidthControl(name) {
37
37
  return useSetting('border.width', name)[0] && supports.includes('borderWidth');
38
38
  }
39
39
 
40
+ function applyFallbackStyle(border) {
41
+ if (!border) {
42
+ return border;
43
+ }
44
+
45
+ if (!border.style && (border.color || border.width)) {
46
+ return { ...border,
47
+ style: 'solid'
48
+ };
49
+ }
50
+
51
+ return border;
52
+ }
53
+
54
+ function applyAllFallbackStyles(border) {
55
+ if (!border) {
56
+ return border;
57
+ }
58
+
59
+ if (hasSplitBorders(border)) {
60
+ return {
61
+ top: applyFallbackStyle(border.top),
62
+ right: applyFallbackStyle(border.right),
63
+ bottom: applyFallbackStyle(border.bottom),
64
+ left: applyFallbackStyle(border.left)
65
+ };
66
+ }
67
+
68
+ return applyFallbackStyle(border);
69
+ }
70
+
40
71
  export default function BorderPanel(_ref) {
41
72
  let {
42
73
  name
@@ -44,46 +75,11 @@ export default function BorderPanel(_ref) {
44
75
  // To better reflect if the user has customized a value we need to
45
76
  // ensure the style value being checked is from the `user` origin.
46
77
  const [userBorderStyles] = useStyle('border', name, 'user');
47
-
48
- const createHasValueCallback = feature => () => !!(userBorderStyles !== null && userBorderStyles !== void 0 && userBorderStyles[feature]);
49
-
50
- const createResetCallback = setStyle => () => setStyle(undefined);
51
-
52
- const handleOnChange = setStyle => value => {
53
- setStyle(value || undefined);
54
- };
55
-
56
- const units = useCustomUnits({
57
- availableUnits: useSetting('spacing.units')[0] || ['px', 'em', 'rem']
58
- }); // Border width.
59
-
60
- const showBorderWidth = useHasBorderWidthControl(name);
61
- const [borderWidthValue, setBorderWidth] = useStyle('border.width', name); // Border style.
62
-
63
- const showBorderStyle = useHasBorderStyleControl(name);
64
- const [borderStyle, setBorderStyle] = useStyle('border.style', name); // When we set a border color or width ensure we have a style so the user
65
- // can see a visible border.
66
-
67
- const handleOnChangeWithStyle = setStyle => value => {
68
- if (!!value && !borderStyle) {
69
- setBorderStyle('solid');
70
- }
71
-
72
- setStyle(value || undefined);
73
- }; // Border color.
74
-
75
-
78
+ const [border, setBorder] = useStyle('border', name);
79
+ const colors = useColorsPerOrigin(name);
76
80
  const showBorderColor = useHasBorderColorControl(name);
77
- const [borderColor, setBorderColor] = useStyle('border.color', name);
78
- const disableCustomColors = !useSetting('color.custom')[0];
79
- const disableCustomGradients = !useSetting('color.customGradient')[0];
80
- const borderColorSettings = [{
81
- label: __('Color'),
82
- colors: useColorsPerOrigin(name),
83
- colorValue: borderColor,
84
- onColorChange: handleOnChangeWithStyle(setBorderColor),
85
- clearable: false
86
- }]; // Border radius.
81
+ const showBorderStyle = useHasBorderStyleControl(name);
82
+ const showBorderWidth = useHasBorderWidthControl(name); // Border radius.
87
83
 
88
84
  const showBorderRadius = useHasBorderRadiusControl(name);
89
85
  const [borderRadiusValues, setBorderRadius] = useStyle('border.radius', name);
@@ -98,57 +94,84 @@ export default function BorderPanel(_ref) {
98
94
  return !!borderValues;
99
95
  };
100
96
 
101
- const resetAll = () => {
102
- setBorderColor(undefined);
103
- setBorderRadius(undefined);
104
- setBorderStyle(undefined);
105
- setBorderWidth(undefined);
97
+ const resetBorder = () => {
98
+ if (hasBorderRadius()) {
99
+ return setBorder({
100
+ radius: userBorderStyles.radius
101
+ });
102
+ }
103
+
104
+ setBorder(undefined);
106
105
  };
107
106
 
107
+ const resetAll = useCallback(() => setBorder(undefined), [setBorder]);
108
+ const onBorderChange = useCallback(newBorder => {
109
+ // Ensure we have a visible border style when a border width or
110
+ // color is being selected.
111
+ const newBorderWithStyle = applyAllFallbackStyles(newBorder); // As we can't conditionally generate styles based on if other
112
+ // style properties have been set we need to force split border
113
+ // definitions for user set border styles. Border radius is derived
114
+ // from the same property i.e. `border.radius` if it is a string
115
+ // that is used. The longhand border radii styles are only generated
116
+ // if that property is an object.
117
+ //
118
+ // For borders (color, style, and width) those are all properties on
119
+ // the `border` style property. This means if the theme.json defined
120
+ // split borders and the user condenses them into a flat border or
121
+ // vice-versa we'd get both sets of styles which would conflict.
122
+
123
+ const updatedBorder = !hasSplitBorders(newBorderWithStyle) ? {
124
+ top: newBorderWithStyle,
125
+ right: newBorderWithStyle,
126
+ bottom: newBorderWithStyle,
127
+ left: newBorderWithStyle
128
+ } : {
129
+ color: null,
130
+ style: null,
131
+ width: null,
132
+ ...newBorderWithStyle
133
+ }; // As radius is maintained separately to color, style, and width
134
+ // maintain its value. Undefined values here will be cleaned when
135
+ // global styles are saved.
136
+
137
+ setBorder({
138
+ radius: border === null || border === void 0 ? void 0 : border.radius,
139
+ ...updatedBorder
140
+ });
141
+ }, [setBorder]);
108
142
  return createElement(ToolsPanel, {
109
143
  label: __('Border'),
110
144
  resetAll: resetAll
111
- }, showBorderWidth && createElement(ToolsPanelItem, {
112
- className: "single-column",
113
- hasValue: createHasValueCallback('width'),
114
- label: __('Width'),
115
- onDeselect: createResetCallback(setBorderWidth),
116
- isShownByDefault: true
117
- }, createElement(UnitControl, {
118
- value: borderWidthValue,
119
- label: __('Width'),
120
- min: MIN_BORDER_WIDTH,
121
- onChange: handleOnChangeWithStyle(setBorderWidth),
122
- units: units
123
- })), showBorderStyle && createElement(ToolsPanelItem, {
124
- className: "single-column",
125
- hasValue: createHasValueCallback('style'),
126
- label: __('Style'),
127
- onDeselect: createResetCallback(setBorderStyle),
128
- isShownByDefault: true
129
- }, createElement(BorderStyleControl, {
130
- value: borderStyle,
131
- onChange: handleOnChange(setBorderStyle)
132
- })), showBorderColor && createElement(ToolsPanelItem, {
133
- hasValue: createHasValueCallback('color'),
134
- label: __('Color'),
135
- onDeselect: createResetCallback(setBorderColor),
145
+ }, (showBorderWidth || showBorderColor) && createElement(ToolsPanelItem, {
146
+ hasValue: () => isDefinedBorder(userBorderStyles),
147
+ label: __('Border'),
148
+ onDeselect: () => resetBorder(),
136
149
  isShownByDefault: true
137
- }, createElement(ColorGradientSettingsDropdown, {
138
- __experimentalHasMultipleOrigins: true,
139
- __experimentalIsRenderedInSidebar: true,
140
- disableCustomColors: disableCustomColors,
141
- disableCustomGradients: disableCustomGradients,
150
+ }, createElement(BorderBoxControl, {
151
+ colors: colors,
142
152
  enableAlpha: true,
143
- settings: borderColorSettings
153
+ onChange: onBorderChange,
154
+ showStyle: showBorderStyle,
155
+ value: border,
156
+ popoverClassNames: {
157
+ linked: 'edit-site-global-styles-sidebar__border-box-control__popover',
158
+ top: 'edit-site-global-styles-sidebar__border-box-control__popover-top',
159
+ right: 'edit-site-global-styles-sidebar__border-box-control__popover-right',
160
+ bottom: 'edit-site-global-styles-sidebar__border-box-control__popover-bottom',
161
+ left: 'edit-site-global-styles-sidebar__border-box-control__popover-left'
162
+ },
163
+ __experimentalHasMultipleOrigins: true,
164
+ __experimentalIsRenderedInSidebar: true
144
165
  })), showBorderRadius && createElement(ToolsPanelItem, {
145
166
  hasValue: hasBorderRadius,
146
167
  label: __('Radius'),
147
- onDeselect: createResetCallback(setBorderRadius),
168
+ onDeselect: () => setBorderRadius(undefined),
148
169
  isShownByDefault: true
149
170
  }, createElement(BorderRadiusControl, {
150
171
  values: borderRadiusValues,
151
- onChange: handleOnChange(setBorderRadius)
172
+ onChange: value => {
173
+ setBorderRadius(value || undefined);
174
+ }
152
175
  })));
153
176
  }
154
177
  //# sourceMappingURL=border-panel.js.map