@wordpress/block-editor 13.0.3 → 13.0.4

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 (79) hide show
  1. package/build/components/global-styles/background-panel.js +2 -1
  2. package/build/components/global-styles/background-panel.js.map +1 -1
  3. package/build/components/global-styles/border-panel.js +2 -1
  4. package/build/components/global-styles/border-panel.js.map +1 -1
  5. package/build/components/global-styles/color-panel.js +2 -1
  6. package/build/components/global-styles/color-panel.js.map +1 -1
  7. package/build/components/global-styles/dimensions-panel.js +2 -1
  8. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  9. package/build/components/global-styles/filters-panel.js +2 -1
  10. package/build/components/global-styles/filters-panel.js.map +1 -1
  11. package/build/components/global-styles/image-settings-panel.js +2 -1
  12. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  13. package/build/components/global-styles/typography-panel.js +2 -1
  14. package/build/components/global-styles/typography-panel.js.map +1 -1
  15. package/build/components/global-styles/utils.js +17 -7
  16. package/build/components/global-styles/utils.js.map +1 -1
  17. package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
  18. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  19. package/build/hooks/block-style-variation.js +108 -2
  20. package/build/hooks/block-style-variation.js.map +1 -1
  21. package/build/hooks/duotone.js +16 -11
  22. package/build/hooks/duotone.js.map +1 -1
  23. package/build/hooks/index.js +7 -1
  24. package/build/hooks/index.js.map +1 -1
  25. package/build/hooks/use-bindings-attributes.js +11 -6
  26. package/build/hooks/use-bindings-attributes.js.map +1 -1
  27. package/build/hooks/utils.js +2 -0
  28. package/build/hooks/utils.js.map +1 -1
  29. package/build/private-apis.js +2 -1
  30. package/build/private-apis.js.map +1 -1
  31. package/build-module/components/global-styles/background-panel.js +3 -2
  32. package/build-module/components/global-styles/background-panel.js.map +1 -1
  33. package/build-module/components/global-styles/border-panel.js +3 -2
  34. package/build-module/components/global-styles/border-panel.js.map +1 -1
  35. package/build-module/components/global-styles/color-panel.js +3 -2
  36. package/build-module/components/global-styles/color-panel.js.map +1 -1
  37. package/build-module/components/global-styles/dimensions-panel.js +3 -2
  38. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  39. package/build-module/components/global-styles/filters-panel.js +3 -2
  40. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  41. package/build-module/components/global-styles/image-settings-panel.js +3 -2
  42. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  43. package/build-module/components/global-styles/typography-panel.js +3 -2
  44. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  45. package/build-module/components/global-styles/utils.js +15 -6
  46. package/build-module/components/global-styles/utils.js.map +1 -1
  47. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
  48. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  49. package/build-module/hooks/block-style-variation.js +108 -2
  50. package/build-module/hooks/block-style-variation.js.map +1 -1
  51. package/build-module/hooks/duotone.js +16 -11
  52. package/build-module/hooks/duotone.js.map +1 -1
  53. package/build-module/hooks/index.js +1 -0
  54. package/build-module/hooks/index.js.map +1 -1
  55. package/build-module/hooks/use-bindings-attributes.js +11 -6
  56. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  57. package/build-module/hooks/utils.js +2 -0
  58. package/build-module/hooks/utils.js.map +1 -1
  59. package/build-module/private-apis.js +3 -2
  60. package/build-module/private-apis.js.map +1 -1
  61. package/build-style/content-rtl.css +1 -0
  62. package/build-style/content.css +1 -0
  63. package/package.json +2 -2
  64. package/src/components/global-styles/background-panel.js +3 -2
  65. package/src/components/global-styles/border-panel.js +3 -2
  66. package/src/components/global-styles/color-panel.js +3 -2
  67. package/src/components/global-styles/dimensions-panel.js +3 -2
  68. package/src/components/global-styles/filters-panel.js +3 -2
  69. package/src/components/global-styles/image-settings-panel.js +3 -2
  70. package/src/components/global-styles/typography-panel.js +3 -2
  71. package/src/components/global-styles/utils.js +17 -6
  72. package/src/components/iframe/content.scss +1 -0
  73. package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
  74. package/src/hooks/block-style-variation.js +124 -2
  75. package/src/hooks/duotone.js +16 -12
  76. package/src/hooks/index.js +1 -0
  77. package/src/hooks/use-bindings-attributes.js +13 -4
  78. package/src/hooks/utils.js +2 -0
  79. package/src/private-apis.js +6 -1
@@ -1 +1 @@
1
- {"version":3,"names":["fastDeepEqual","getTypographyFontSizeValue","getValueFromObjectPath","ROOT_BLOCK_SELECTOR","ROOT_CSS_PROPERTIES_SELECTOR","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","TOOLSPANEL_DROPDOWNMENU_PROPS","popoverProps","placement","offset","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","scopeFeatureSelectors","featureSelectors","Object","entries","feature","subfeature","subfeatureSelector","appendToSelector","toAppend","includes","newSelectors","map","sel","areGlobalStyleConfigsEqual","original","variation","styles","getBlockStyleVariationSelector","blockSelector","variationClass","ancestorRegex","addVariationClass","_match","group1","group2","part","replace"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\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\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue( preset, settings ),\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\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nexport const TOOLSPANEL_DROPDOWNMENU_PROPS = {\n\tpopoverProps: {\n\t\tplacement: 'left-start',\n\t\toffset: 259, // Inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t},\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\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( 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 = presets.find(\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 = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\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 = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\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\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ '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\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\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\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n * color: '.wp-my-block p',\n * typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * // color: '.custom-scope .wp-my-block p',\n * // typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param {string} scope Selector to scope collection of selectors with.\n * @param {Object} selectors Collection of feature selectors e.g.\n *\n * @return {Object|undefined} Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors( scope, selectors ) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param {string} variation Name for the variation.\n * @param {string} blockSelector CSS selector for the block.\n *\n * @return {string} CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector( variation, blockSelector ) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = ( _match, group1, group2 ) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["fastDeepEqual","useViewportMatch","getTypographyFontSizeValue","getValueFromObjectPath","ROOT_BLOCK_SELECTOR","ROOT_CSS_PROPERTIES_SELECTOR","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","useToolsPanelDropdownMenuProps","isMobile","popoverProps","placement","offset","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","scopeFeatureSelectors","featureSelectors","Object","entries","feature","subfeature","subfeatureSelector","appendToSelector","toAppend","includes","newSelectors","map","sel","areGlobalStyleConfigsEqual","original","variation","styles","getBlockStyleVariationSelector","blockSelector","variationClass","ancestorRegex","addVariationClass","_match","group1","group2","part","replace"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\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\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue( preset, settings ),\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\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nexport function useToolsPanelDropdownMenuProps() {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\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\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( 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 = presets.find(\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 = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\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 = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\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\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ '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\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\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\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n * color: '.wp-my-block p',\n * typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * // color: '.custom-scope .wp-my-block p',\n * // typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param {string} scope Selector to scope collection of selectors with.\n * @param {Object} selectors Collection of feature selectors e.g.\n *\n * @return {Object|undefined} Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors( scope, selectors ) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param {string} variation Name for the variation.\n * @param {string} blockSelector CSS selector for the block.\n *\n * @return {string} CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector( variation, blockSelector ) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = ( _match, group1, group2 ) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ import { useCallback } from '@wordpress/element';
10
10
  */
11
11
  import { store as blockEditorStore } from '../../store';
12
12
  import { cleanEmptyObject } from '../../hooks/utils';
13
- import { TOOLSPANEL_DROPDOWNMENU_PROPS } from '../global-styles/utils';
13
+ import { useToolsPanelDropdownMenuProps } from '../global-styles/utils';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  export default function BlockSupportToolsPanel({
16
16
  children,
@@ -26,6 +26,7 @@ export default function BlockSupportToolsPanel({
26
26
  getSelectedBlockClientId,
27
27
  hasMultiSelection
28
28
  } = useSelect(blockEditorStore);
29
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
29
30
  const panelId = getSelectedBlockClientId();
30
31
  const resetAll = useCallback((resetFilters = []) => {
31
32
  const newAttributes = {};
@@ -63,7 +64,7 @@ export default function BlockSupportToolsPanel({
63
64
  ,
64
65
  __experimentalFirstVisibleItemClass: "first",
65
66
  __experimentalLastVisibleItemClass: "last",
66
- dropdownMenuProps: TOOLSPANEL_DROPDOWNMENU_PROPS,
67
+ dropdownMenuProps: dropdownMenuProps,
67
68
  children: children
68
69
  }, panelId);
69
70
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalToolsPanel","ToolsPanel","useDispatch","useSelect","useCallback","store","blockEditorStore","cleanEmptyObject","TOOLSPANEL_DROPDOWNMENU_PROPS","jsx","_jsx","BlockSupportToolsPanel","children","group","label","updateBlockAttributes","getBlockAttributes","getMultiSelectedBlockClientIds","getSelectedBlockClientId","hasMultiSelection","panelId","resetAll","resetFilters","newAttributes","clientIds","forEach","clientId","style","newBlockAttributes","resetFilter","className","hasInnerWrapper","shouldRenderPlaceholderItems","__experimentalFirstVisibleItemClass","__experimentalLastVisibleItemClass","dropdownMenuProps"],"sources":["@wordpress/block-editor/src/components/inspector-controls/block-support-tools-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { TOOLSPANEL_DROPDOWNMENU_PROPS } from '../global-styles/utils';\n\nexport default function BlockSupportToolsPanel( { children, group, label } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockAttributes,\n\t\tgetMultiSelectedBlockClientIds,\n\t\tgetSelectedBlockClientId,\n\t\thasMultiSelection,\n\t} = useSelect( blockEditorStore );\n\n\tconst panelId = getSelectedBlockClientId();\n\tconst resetAll = useCallback(\n\t\t( resetFilters = [] ) => {\n\t\t\tconst newAttributes = {};\n\n\t\t\tconst clientIds = hasMultiSelection()\n\t\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t\t: [ panelId ];\n\n\t\t\tclientIds.forEach( ( clientId ) => {\n\t\t\t\tconst { style } = getBlockAttributes( clientId );\n\t\t\t\tlet newBlockAttributes = { style };\n\n\t\t\t\tresetFilters.forEach( ( resetFilter ) => {\n\t\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\t\t...resetFilter( newBlockAttributes ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Enforce a cleaned style object.\n\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\tstyle: cleanEmptyObject( newBlockAttributes.style ),\n\t\t\t\t};\n\n\t\t\t\tnewAttributes[ clientId ] = newBlockAttributes;\n\t\t\t} );\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes, true );\n\t\t},\n\t\t[\n\t\t\tgetBlockAttributes,\n\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\thasMultiSelection,\n\t\t\tpanelId,\n\t\t\tupdateBlockAttributes,\n\t\t]\n\t);\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tclassName={ `${ group }-block-support-panel` }\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tkey={ panelId }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\tshouldRenderPlaceholderItems // Required to maintain fills ordering.\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,wBAAwB,IAAIC,UAAU,QAAQ,uBAAuB;AAC9E,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,WAAW,QAAQ,oBAAoB;;AAEhD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,6BAA6B,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEvE,eAAe,SAASC,sBAAsBA,CAAE;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAM,CAAC,EAAG;EAC5E,MAAM;IAAEC;EAAsB,CAAC,GAAGb,WAAW,CAAEI,gBAAiB,CAAC;EACjE,MAAM;IACLU,kBAAkB;IAClBC,8BAA8B;IAC9BC,wBAAwB;IACxBC;EACD,CAAC,GAAGhB,SAAS,CAAEG,gBAAiB,CAAC;EAEjC,MAAMc,OAAO,GAAGF,wBAAwB,CAAC,CAAC;EAC1C,MAAMG,QAAQ,GAAGjB,WAAW,CAC3B,CAAEkB,YAAY,GAAG,EAAE,KAAM;IACxB,MAAMC,aAAa,GAAG,CAAC,CAAC;IAExB,MAAMC,SAAS,GAAGL,iBAAiB,CAAC,CAAC,GAClCF,8BAA8B,CAAC,CAAC,GAChC,CAAEG,OAAO,CAAE;IAEdI,SAAS,CAACC,OAAO,CAAIC,QAAQ,IAAM;MAClC,MAAM;QAAEC;MAAM,CAAC,GAAGX,kBAAkB,CAAEU,QAAS,CAAC;MAChD,IAAIE,kBAAkB,GAAG;QAAED;MAAM,CAAC;MAElCL,YAAY,CAACG,OAAO,CAAII,WAAW,IAAM;QACxCD,kBAAkB,GAAG;UACpB,GAAGA,kBAAkB;UACrB,GAAGC,WAAW,CAAED,kBAAmB;QACpC,CAAC;MACF,CAAE,CAAC;;MAEH;MACAA,kBAAkB,GAAG;QACpB,GAAGA,kBAAkB;QACrBD,KAAK,EAAEpB,gBAAgB,CAAEqB,kBAAkB,CAACD,KAAM;MACnD,CAAC;MAEDJ,aAAa,CAAEG,QAAQ,CAAE,GAAGE,kBAAkB;IAC/C,CAAE,CAAC;IAEHb,qBAAqB,CAAES,SAAS,EAAED,aAAa,EAAE,IAAK,CAAC;EACxD,CAAC,EACD,CACCP,kBAAkB,EAClBC,8BAA8B,EAC9BE,iBAAiB,EACjBC,OAAO,EACPL,qBAAqB,CAEvB,CAAC;EAED,oBACCL,IAAA,CAACT,UAAU;IACV6B,SAAS,EAAI,GAAGjB,KAAO,sBAAuB;IAC9CC,KAAK,EAAGA,KAAO;IACfO,QAAQ,EAAGA,QAAU;IAErBD,OAAO,EAAGA,OAAS;IACnBW,eAAe;IACfC,4BAA4B,OAAC;IAAA;IAC7BC,mCAAmC,EAAC,OAAO;IAC3CC,kCAAkC,EAAC,MAAM;IACzCC,iBAAiB,EAAG3B,6BAA+B;IAAAI,QAAA,EAEjDA;EAAQ,GARJQ,OASK,CAAC;AAEf","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalToolsPanel","ToolsPanel","useDispatch","useSelect","useCallback","store","blockEditorStore","cleanEmptyObject","useToolsPanelDropdownMenuProps","jsx","_jsx","BlockSupportToolsPanel","children","group","label","updateBlockAttributes","getBlockAttributes","getMultiSelectedBlockClientIds","getSelectedBlockClientId","hasMultiSelection","dropdownMenuProps","panelId","resetAll","resetFilters","newAttributes","clientIds","forEach","clientId","style","newBlockAttributes","resetFilter","className","hasInnerWrapper","shouldRenderPlaceholderItems","__experimentalFirstVisibleItemClass","__experimentalLastVisibleItemClass"],"sources":["@wordpress/block-editor/src/components/inspector-controls/block-support-tools-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { useToolsPanelDropdownMenuProps } from '../global-styles/utils';\n\nexport default function BlockSupportToolsPanel( { children, group, label } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockAttributes,\n\t\tgetMultiSelectedBlockClientIds,\n\t\tgetSelectedBlockClientId,\n\t\thasMultiSelection,\n\t} = useSelect( blockEditorStore );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst panelId = getSelectedBlockClientId();\n\tconst resetAll = useCallback(\n\t\t( resetFilters = [] ) => {\n\t\t\tconst newAttributes = {};\n\n\t\t\tconst clientIds = hasMultiSelection()\n\t\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t\t: [ panelId ];\n\n\t\t\tclientIds.forEach( ( clientId ) => {\n\t\t\t\tconst { style } = getBlockAttributes( clientId );\n\t\t\t\tlet newBlockAttributes = { style };\n\n\t\t\t\tresetFilters.forEach( ( resetFilter ) => {\n\t\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\t\t...resetFilter( newBlockAttributes ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Enforce a cleaned style object.\n\t\t\t\tnewBlockAttributes = {\n\t\t\t\t\t...newBlockAttributes,\n\t\t\t\t\tstyle: cleanEmptyObject( newBlockAttributes.style ),\n\t\t\t\t};\n\n\t\t\t\tnewAttributes[ clientId ] = newBlockAttributes;\n\t\t\t} );\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes, true );\n\t\t},\n\t\t[\n\t\t\tgetBlockAttributes,\n\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\thasMultiSelection,\n\t\t\tpanelId,\n\t\t\tupdateBlockAttributes,\n\t\t]\n\t);\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tclassName={ `${ group }-block-support-panel` }\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tkey={ panelId }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\tshouldRenderPlaceholderItems // Required to maintain fills ordering.\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,wBAAwB,IAAIC,UAAU,QAAQ,uBAAuB;AAC9E,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,WAAW,QAAQ,oBAAoB;;AAEhD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,8BAA8B,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExE,eAAe,SAASC,sBAAsBA,CAAE;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAM,CAAC,EAAG;EAC5E,MAAM;IAAEC;EAAsB,CAAC,GAAGb,WAAW,CAAEI,gBAAiB,CAAC;EACjE,MAAM;IACLU,kBAAkB;IAClBC,8BAA8B;IAC9BC,wBAAwB;IACxBC;EACD,CAAC,GAAGhB,SAAS,CAAEG,gBAAiB,CAAC;EACjC,MAAMc,iBAAiB,GAAGZ,8BAA8B,CAAC,CAAC;EAC1D,MAAMa,OAAO,GAAGH,wBAAwB,CAAC,CAAC;EAC1C,MAAMI,QAAQ,GAAGlB,WAAW,CAC3B,CAAEmB,YAAY,GAAG,EAAE,KAAM;IACxB,MAAMC,aAAa,GAAG,CAAC,CAAC;IAExB,MAAMC,SAAS,GAAGN,iBAAiB,CAAC,CAAC,GAClCF,8BAA8B,CAAC,CAAC,GAChC,CAAEI,OAAO,CAAE;IAEdI,SAAS,CAACC,OAAO,CAAIC,QAAQ,IAAM;MAClC,MAAM;QAAEC;MAAM,CAAC,GAAGZ,kBAAkB,CAAEW,QAAS,CAAC;MAChD,IAAIE,kBAAkB,GAAG;QAAED;MAAM,CAAC;MAElCL,YAAY,CAACG,OAAO,CAAII,WAAW,IAAM;QACxCD,kBAAkB,GAAG;UACpB,GAAGA,kBAAkB;UACrB,GAAGC,WAAW,CAAED,kBAAmB;QACpC,CAAC;MACF,CAAE,CAAC;;MAEH;MACAA,kBAAkB,GAAG;QACpB,GAAGA,kBAAkB;QACrBD,KAAK,EAAErB,gBAAgB,CAAEsB,kBAAkB,CAACD,KAAM;MACnD,CAAC;MAEDJ,aAAa,CAAEG,QAAQ,CAAE,GAAGE,kBAAkB;IAC/C,CAAE,CAAC;IAEHd,qBAAqB,CAAEU,SAAS,EAAED,aAAa,EAAE,IAAK,CAAC;EACxD,CAAC,EACD,CACCR,kBAAkB,EAClBC,8BAA8B,EAC9BE,iBAAiB,EACjBE,OAAO,EACPN,qBAAqB,CAEvB,CAAC;EAED,oBACCL,IAAA,CAACT,UAAU;IACV8B,SAAS,EAAI,GAAGlB,KAAO,sBAAuB;IAC9CC,KAAK,EAAGA,KAAO;IACfQ,QAAQ,EAAGA,QAAU;IAErBD,OAAO,EAAGA,OAAS;IACnBW,eAAe;IACfC,4BAA4B,OAAC;IAAA;IAC7BC,mCAAmC,EAAC,OAAO;IAC3CC,kCAAkC,EAAC,MAAM;IACzCf,iBAAiB,EAAGA,iBAAmB;IAAAR,QAAA,EAErCA;EAAQ,GARJS,OASK,CAAC;AAEf","ignoreList":[]}
@@ -12,6 +12,9 @@ import { GlobalStylesContext, toStyles, getBlockSelectors } from '../components/
12
12
  import { useStyleOverride } from './utils';
13
13
  import { store as blockEditorStore } from '../store';
14
14
  import { globalStylesDataKey } from '../store/private-keys';
15
+ import { unlock } from '../lock-unlock';
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ import { Fragment as _Fragment } from "react/jsx-runtime";
15
18
  const VARIATION_PREFIX = 'is-style-';
16
19
  function getVariationMatches(className) {
17
20
  if (!className) {
@@ -50,7 +53,109 @@ function getVariationNameFromClass(className, registeredStyles = []) {
50
53
  }
51
54
  return null;
52
55
  }
53
- function useBlockSyleVariation(name, variation, clientId) {
56
+
57
+ // A helper component to apply a style override using the useStyleOverride hook.
58
+ function OverrideStyles({
59
+ override
60
+ }) {
61
+ useStyleOverride(override);
62
+ }
63
+
64
+ /**
65
+ * This component is used to generate new block style variation overrides
66
+ * based on an incoming theme config. If a matching style is found in the config,
67
+ * a new override is created and returned. The overrides can be used in conjunction with
68
+ * useStyleOverride to apply the new styles to the editor. Its use is
69
+ * subject to change.
70
+ *
71
+ * @param {Object} props Props.
72
+ * @param {Object} props.config A global styles object, containing settings and styles.
73
+ * @return {JSX.Element|undefined} An array of new block variation overrides.
74
+ */
75
+ export function __unstableBlockStyleVariationOverridesWithConfig({
76
+ config
77
+ }) {
78
+ const {
79
+ getBlockStyles,
80
+ overrides
81
+ } = useSelect(select => ({
82
+ getBlockStyles: select(blocksStore).getBlockStyles,
83
+ overrides: unlock(select(blockEditorStore)).getStyleOverrides()
84
+ }), []);
85
+ const {
86
+ getBlockName
87
+ } = useSelect(blockEditorStore);
88
+ const overridesWithConfig = useMemo(() => {
89
+ if (!overrides?.length) {
90
+ return;
91
+ }
92
+ const newOverrides = [];
93
+ const overriddenClientIds = [];
94
+ for (const [, override] of overrides) {
95
+ if (override?.variation && override?.clientId &&
96
+ /*
97
+ * Because this component overwrites existing style overrides,
98
+ * filter out any overrides that are already present in the store.
99
+ */
100
+ !overriddenClientIds.includes(override.clientId)) {
101
+ const blockName = getBlockName(override.clientId);
102
+ const configStyles = config?.styles?.blocks?.[blockName]?.variations?.[override.variation];
103
+ if (configStyles) {
104
+ const variationConfig = {
105
+ settings: config?.settings,
106
+ // The variation style data is all that is needed to generate
107
+ // the styles for the current application to a block. The variation
108
+ // name is updated to match the instance specific class name.
109
+ styles: {
110
+ blocks: {
111
+ [blockName]: {
112
+ variations: {
113
+ [`${override.variation}-${override.clientId}`]: configStyles
114
+ }
115
+ }
116
+ }
117
+ }
118
+ };
119
+ const blockSelectors = getBlockSelectors(getBlockTypes(), getBlockStyles, override.clientId);
120
+ const hasBlockGapSupport = false;
121
+ const hasFallbackGapSupport = true;
122
+ const disableLayoutStyles = true;
123
+ const disableRootPadding = true;
124
+ const variationStyles = toStyles(variationConfig, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles, disableRootPadding, {
125
+ blockGap: false,
126
+ blockStyles: true,
127
+ layoutStyles: false,
128
+ marginReset: false,
129
+ presets: false,
130
+ rootPadding: false,
131
+ variationStyles: true
132
+ });
133
+ newOverrides.push({
134
+ id: `${override.variation}-${override.clientId}`,
135
+ css: variationStyles,
136
+ __unstableType: 'variation',
137
+ variation: override.variation,
138
+ // The clientId will be stored with the override and used to ensure
139
+ // the order of overrides matches the order of blocks so that the
140
+ // correct CSS cascade is maintained.
141
+ clientId: override.clientId
142
+ });
143
+ overriddenClientIds.push(override.clientId);
144
+ }
145
+ }
146
+ }
147
+ return newOverrides;
148
+ }, [config, overrides, getBlockStyles, getBlockName]);
149
+ if (!overridesWithConfig || !overridesWithConfig.length) {
150
+ return;
151
+ }
152
+ return /*#__PURE__*/_jsx(_Fragment, {
153
+ children: overridesWithConfig.map(override => /*#__PURE__*/_jsx(OverrideStyles, {
154
+ override: override
155
+ }, override.id))
156
+ });
157
+ }
158
+ function useBlockStyleVariation(name, variation, clientId) {
54
159
  // Prefer global styles data in GlobalStylesContext, which are available
55
160
  // if in the site editor. Otherwise fall back to whatever is in the
56
161
  // editor settings and available in the post editor.
@@ -106,7 +211,7 @@ function useBlockProps({
106
211
  const {
107
212
  settings,
108
213
  styles
109
- } = useBlockSyleVariation(name, variation, clientId);
214
+ } = useBlockStyleVariation(name, variation, clientId);
110
215
  const variationStyles = useMemo(() => {
111
216
  if (!variation) {
112
217
  return;
@@ -134,6 +239,7 @@ function useBlockProps({
134
239
  id: `variation-${clientId}`,
135
240
  css: variationStyles,
136
241
  __unstableType: 'variation',
242
+ variation,
137
243
  // The clientId will be stored with the override and used to ensure
138
244
  // the order of overrides matches the order of blocks so that the
139
245
  // correct CSS cascade is maintained.
@@ -1 +1 @@
1
- {"version":3,"names":["getBlockTypes","store","blocksStore","useSelect","useContext","useMemo","GlobalStylesContext","toStyles","getBlockSelectors","useStyleOverride","blockEditorStore","globalStylesDataKey","VARIATION_PREFIX","getVariationMatches","className","split","reduce","matches","name","startsWith","match","slice","length","push","getVariationNameFromClass","registeredStyles","variation","some","style","useBlockSyleVariation","clientId","merged","mergedConfig","globalSettings","globalStyles","select","settings","getSettings","__experimentalFeatures","_mergedConfig$styles","_mergedConfig$setting","styles","variationStyles","blocks","variations","useBlockProps","getBlockStyles","variationClass","variationConfig","blockSelectors","hasBlockGapSupport","hasFallbackGapSupport","disableLayoutStyles","disableRootPadding","blockGap","blockStyles","layoutStyles","marginReset","presets","rootPadding","id","css","__unstableType","hasSupport","attributeKeys","isMatch"],"sources":["@wordpress/block-editor/src/hooks/block-style-variation.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGlobalStylesContext,\n\ttoStyles,\n\tgetBlockSelectors,\n} from '../components/global-styles';\nimport { useStyleOverride } from './utils';\nimport { store as blockEditorStore } from '../store';\nimport { globalStylesDataKey } from '../store/private-keys';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nfunction getVariationMatches( className ) {\n\tif ( ! className ) {\n\t\treturn [];\n\t}\n\treturn className.split( /\\s+/ ).reduce( ( matches, name ) => {\n\t\tif ( name.startsWith( VARIATION_PREFIX ) ) {\n\t\t\tconst match = name.slice( VARIATION_PREFIX.length );\n\t\t\tif ( match !== 'default' ) {\n\t\t\t\tmatches.push( match );\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}, [] );\n}\n\n/**\n * Get the first block style variation that has been registered from the class string.\n *\n * @param {string} className CSS class string for a block.\n * @param {Array} registeredStyles Currently registered block styles.\n *\n * @return {string|null} The name of the first registered variation.\n */\nfunction getVariationNameFromClass( className, registeredStyles = [] ) {\n\t// The global flag affects how capturing groups work in JS. So the regex\n\t// below will only return full CSS classes not just the variation name.\n\tconst matches = getVariationMatches( className );\n\n\tif ( ! matches ) {\n\t\treturn null;\n\t}\n\n\tfor ( const variation of matches ) {\n\t\tif ( registeredStyles.some( ( style ) => style.name === variation ) ) {\n\t\t\treturn variation;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction useBlockSyleVariation( name, variation, clientId ) {\n\t// Prefer global styles data in GlobalStylesContext, which are available\n\t// if in the site editor. Otherwise fall back to whatever is in the\n\t// editor settings and available in the post editor.\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst { globalSettings, globalStyles } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst styles = mergedConfig?.styles ?? globalStyles;\n\t\tconst variationStyles =\n\t\t\tstyles?.blocks?.[ name ]?.variations?.[ variation ];\n\n\t\treturn {\n\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t// The variation style data is all that is needed to generate\n\t\t\t// the styles for the current application to a block. The variation\n\t\t\t// name is updated to match the instance specific class name.\n\t\t\tstyles: {\n\t\t\t\tblocks: {\n\t\t\t\t\t[ name ]: {\n\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t[ `${ variation }-${ clientId }` ]: variationStyles,\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\t\tmergedConfig,\n\t\tglobalSettings,\n\t\tglobalStyles,\n\t\tvariation,\n\t\tclientId,\n\t\tname,\n\t] );\n}\n\n// Rather than leveraging `useInstanceId` here, the `clientId` is used.\n// This is so that the variation style override's ID is predictable\n// when the order of applied style variations changes.\nfunction useBlockProps( { name, className, clientId } ) {\n\tconst { getBlockStyles } = useSelect( blocksStore );\n\n\tconst registeredStyles = getBlockStyles( name );\n\tconst variation = getVariationNameFromClass( className, registeredStyles );\n\tconst variationClass = `${ VARIATION_PREFIX }${ variation }-${ clientId }`;\n\n\tconst { settings, styles } = useBlockSyleVariation(\n\t\tname,\n\t\tvariation,\n\t\tclientId\n\t);\n\n\tconst variationStyles = useMemo( () => {\n\t\tif ( ! variation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst variationConfig = { settings, styles };\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles,\n\t\t\tclientId\n\t\t);\n\t\tconst hasBlockGapSupport = false;\n\t\tconst hasFallbackGapSupport = true;\n\t\tconst disableLayoutStyles = true;\n\t\tconst disableRootPadding = true;\n\n\t\treturn toStyles(\n\t\t\tvariationConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles,\n\t\t\tdisableRootPadding,\n\t\t\t{\n\t\t\t\tblockGap: false,\n\t\t\t\tblockStyles: true,\n\t\t\t\tlayoutStyles: false,\n\t\t\t\tmarginReset: false,\n\t\t\t\tpresets: false,\n\t\t\t\trootPadding: false,\n\t\t\t\tvariationStyles: true,\n\t\t\t}\n\t\t);\n\t}, [ variation, settings, styles, getBlockStyles, clientId ] );\n\n\tuseStyleOverride( {\n\t\tid: `variation-${ clientId }`,\n\t\tcss: variationStyles,\n\t\t__unstableType: 'variation',\n\t\t// The clientId will be stored with the override and used to ensure\n\t\t// the order of overrides matches the order of blocks so that the\n\t\t// correct CSS cascade is maintained.\n\t\tclientId,\n\t} );\n\n\treturn variation ? { className: variationClass } : {};\n}\n\nexport default {\n\thasSupport: () => true,\n\tattributeKeys: [ 'className' ],\n\tisMatch: ( { className } ) => getVariationMatches( className ).length > 0,\n\tuseBlockProps,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getBlockTypes","store","blocksStore","useSelect","useContext","useMemo","GlobalStylesContext","toStyles","getBlockSelectors","useStyleOverride","blockEditorStore","globalStylesDataKey","unlock","jsx","_jsx","Fragment","_Fragment","VARIATION_PREFIX","getVariationMatches","className","split","reduce","matches","name","startsWith","match","slice","length","push","getVariationNameFromClass","registeredStyles","variation","some","style","OverrideStyles","override","__unstableBlockStyleVariationOverridesWithConfig","config","getBlockStyles","overrides","select","getStyleOverrides","getBlockName","overridesWithConfig","newOverrides","overriddenClientIds","clientId","includes","blockName","configStyles","styles","blocks","variations","variationConfig","settings","blockSelectors","hasBlockGapSupport","hasFallbackGapSupport","disableLayoutStyles","disableRootPadding","variationStyles","blockGap","blockStyles","layoutStyles","marginReset","presets","rootPadding","id","css","__unstableType","children","map","useBlockStyleVariation","merged","mergedConfig","globalSettings","globalStyles","getSettings","__experimentalFeatures","_mergedConfig$styles","_mergedConfig$setting","useBlockProps","variationClass","hasSupport","attributeKeys","isMatch"],"sources":["@wordpress/block-editor/src/hooks/block-style-variation.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGlobalStylesContext,\n\ttoStyles,\n\tgetBlockSelectors,\n} from '../components/global-styles';\nimport { useStyleOverride } from './utils';\nimport { store as blockEditorStore } from '../store';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { unlock } from '../lock-unlock';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nfunction getVariationMatches( className ) {\n\tif ( ! className ) {\n\t\treturn [];\n\t}\n\treturn className.split( /\\s+/ ).reduce( ( matches, name ) => {\n\t\tif ( name.startsWith( VARIATION_PREFIX ) ) {\n\t\t\tconst match = name.slice( VARIATION_PREFIX.length );\n\t\t\tif ( match !== 'default' ) {\n\t\t\t\tmatches.push( match );\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}, [] );\n}\n\n/**\n * Get the first block style variation that has been registered from the class string.\n *\n * @param {string} className CSS class string for a block.\n * @param {Array} registeredStyles Currently registered block styles.\n *\n * @return {string|null} The name of the first registered variation.\n */\nfunction getVariationNameFromClass( className, registeredStyles = [] ) {\n\t// The global flag affects how capturing groups work in JS. So the regex\n\t// below will only return full CSS classes not just the variation name.\n\tconst matches = getVariationMatches( className );\n\n\tif ( ! matches ) {\n\t\treturn null;\n\t}\n\n\tfor ( const variation of matches ) {\n\t\tif ( registeredStyles.some( ( style ) => style.name === variation ) ) {\n\t\t\treturn variation;\n\t\t}\n\t}\n\treturn null;\n}\n\n// A helper component to apply a style override using the useStyleOverride hook.\nfunction OverrideStyles( { override } ) {\n\tuseStyleOverride( override );\n}\n\n/**\n * This component is used to generate new block style variation overrides\n * based on an incoming theme config. If a matching style is found in the config,\n * a new override is created and returned. The overrides can be used in conjunction with\n * useStyleOverride to apply the new styles to the editor. Its use is\n * subject to change.\n *\n * @param {Object} props Props.\n * @param {Object} props.config A global styles object, containing settings and styles.\n * @return {JSX.Element|undefined} An array of new block variation overrides.\n */\nexport function __unstableBlockStyleVariationOverridesWithConfig( { config } ) {\n\tconst { getBlockStyles, overrides } = useSelect(\n\t\t( select ) => ( {\n\t\t\tgetBlockStyles: select( blocksStore ).getBlockStyles,\n\t\t\toverrides: unlock( select( blockEditorStore ) ).getStyleOverrides(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\n\tconst overridesWithConfig = useMemo( () => {\n\t\tif ( ! overrides?.length ) {\n\t\t\treturn;\n\t\t}\n\t\tconst newOverrides = [];\n\t\tconst overriddenClientIds = [];\n\t\tfor ( const [ , override ] of overrides ) {\n\t\t\tif (\n\t\t\t\toverride?.variation &&\n\t\t\t\toverride?.clientId &&\n\t\t\t\t/*\n\t\t\t\t * Because this component overwrites existing style overrides,\n\t\t\t\t * filter out any overrides that are already present in the store.\n\t\t\t\t */\n\t\t\t\t! overriddenClientIds.includes( override.clientId )\n\t\t\t) {\n\t\t\t\tconst blockName = getBlockName( override.clientId );\n\t\t\t\tconst configStyles =\n\t\t\t\t\tconfig?.styles?.blocks?.[ blockName ]?.variations?.[\n\t\t\t\t\t\toverride.variation\n\t\t\t\t\t];\n\t\t\t\tif ( configStyles ) {\n\t\t\t\t\tconst variationConfig = {\n\t\t\t\t\t\tsettings: config?.settings,\n\t\t\t\t\t\t// The variation style data is all that is needed to generate\n\t\t\t\t\t\t// the styles for the current application to a block. The variation\n\t\t\t\t\t\t// name is updated to match the instance specific class name.\n\t\t\t\t\t\tstyles: {\n\t\t\t\t\t\t\tblocks: {\n\t\t\t\t\t\t\t\t[ blockName ]: {\n\t\t\t\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t\t\t\t[ `${ override.variation }-${ override.clientId }` ]:\n\t\t\t\t\t\t\t\t\t\t\tconfigStyles,\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\tconst blockSelectors = getBlockSelectors(\n\t\t\t\t\t\tgetBlockTypes(),\n\t\t\t\t\t\tgetBlockStyles,\n\t\t\t\t\t\toverride.clientId\n\t\t\t\t\t);\n\t\t\t\t\tconst hasBlockGapSupport = false;\n\t\t\t\t\tconst hasFallbackGapSupport = true;\n\t\t\t\t\tconst disableLayoutStyles = true;\n\t\t\t\t\tconst disableRootPadding = true;\n\t\t\t\t\tconst variationStyles = toStyles(\n\t\t\t\t\t\tvariationConfig,\n\t\t\t\t\t\tblockSelectors,\n\t\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\t\tdisableLayoutStyles,\n\t\t\t\t\t\tdisableRootPadding,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblockGap: false,\n\t\t\t\t\t\t\tblockStyles: true,\n\t\t\t\t\t\t\tlayoutStyles: false,\n\t\t\t\t\t\t\tmarginReset: false,\n\t\t\t\t\t\t\tpresets: false,\n\t\t\t\t\t\t\trootPadding: false,\n\t\t\t\t\t\t\tvariationStyles: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tnewOverrides.push( {\n\t\t\t\t\t\tid: `${ override.variation }-${ override.clientId }`,\n\t\t\t\t\t\tcss: variationStyles,\n\t\t\t\t\t\t__unstableType: 'variation',\n\t\t\t\t\t\tvariation: override.variation,\n\t\t\t\t\t\t// The clientId will be stored with the override and used to ensure\n\t\t\t\t\t\t// the order of overrides matches the order of blocks so that the\n\t\t\t\t\t\t// correct CSS cascade is maintained.\n\t\t\t\t\t\tclientId: override.clientId,\n\t\t\t\t\t} );\n\t\t\t\t\toverriddenClientIds.push( override.clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn newOverrides;\n\t}, [ config, overrides, getBlockStyles, getBlockName ] );\n\n\tif ( ! overridesWithConfig || ! overridesWithConfig.length ) {\n\t\treturn;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ overridesWithConfig.map( ( override ) => (\n\t\t\t\t<OverrideStyles key={ override.id } override={ override } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction useBlockStyleVariation( name, variation, clientId ) {\n\t// Prefer global styles data in GlobalStylesContext, which are available\n\t// if in the site editor. Otherwise fall back to whatever is in the\n\t// editor settings and available in the post editor.\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst { globalSettings, globalStyles } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst styles = mergedConfig?.styles ?? globalStyles;\n\t\tconst variationStyles =\n\t\t\tstyles?.blocks?.[ name ]?.variations?.[ variation ];\n\n\t\treturn {\n\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t// The variation style data is all that is needed to generate\n\t\t\t// the styles for the current application to a block. The variation\n\t\t\t// name is updated to match the instance specific class name.\n\t\t\tstyles: {\n\t\t\t\tblocks: {\n\t\t\t\t\t[ name ]: {\n\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t[ `${ variation }-${ clientId }` ]: variationStyles,\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\t\tmergedConfig,\n\t\tglobalSettings,\n\t\tglobalStyles,\n\t\tvariation,\n\t\tclientId,\n\t\tname,\n\t] );\n}\n\n// Rather than leveraging `useInstanceId` here, the `clientId` is used.\n// This is so that the variation style override's ID is predictable\n// when the order of applied style variations changes.\nfunction useBlockProps( { name, className, clientId } ) {\n\tconst { getBlockStyles } = useSelect( blocksStore );\n\n\tconst registeredStyles = getBlockStyles( name );\n\tconst variation = getVariationNameFromClass( className, registeredStyles );\n\tconst variationClass = `${ VARIATION_PREFIX }${ variation }-${ clientId }`;\n\n\tconst { settings, styles } = useBlockStyleVariation(\n\t\tname,\n\t\tvariation,\n\t\tclientId\n\t);\n\n\tconst variationStyles = useMemo( () => {\n\t\tif ( ! variation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst variationConfig = { settings, styles };\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles,\n\t\t\tclientId\n\t\t);\n\t\tconst hasBlockGapSupport = false;\n\t\tconst hasFallbackGapSupport = true;\n\t\tconst disableLayoutStyles = true;\n\t\tconst disableRootPadding = true;\n\n\t\treturn toStyles(\n\t\t\tvariationConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles,\n\t\t\tdisableRootPadding,\n\t\t\t{\n\t\t\t\tblockGap: false,\n\t\t\t\tblockStyles: true,\n\t\t\t\tlayoutStyles: false,\n\t\t\t\tmarginReset: false,\n\t\t\t\tpresets: false,\n\t\t\t\trootPadding: false,\n\t\t\t\tvariationStyles: true,\n\t\t\t}\n\t\t);\n\t}, [ variation, settings, styles, getBlockStyles, clientId ] );\n\n\tuseStyleOverride( {\n\t\tid: `variation-${ clientId }`,\n\t\tcss: variationStyles,\n\t\t__unstableType: 'variation',\n\t\tvariation,\n\t\t// The clientId will be stored with the override and used to ensure\n\t\t// the order of overrides matches the order of blocks so that the\n\t\t// correct CSS cascade is maintained.\n\t\tclientId,\n\t} );\n\n\treturn variation ? { className: variationClass } : {};\n}\n\nexport default {\n\thasSupport: () => true,\n\tattributeKeys: [ 'className' ],\n\tisMatch: ( { className } ) => getVariationMatches( className ).length > 0,\n\tuseBlockProps,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -233,25 +233,30 @@ function useDuotoneStyles({
233
233
  return;
234
234
  }
235
235
 
236
- // Safari does not always update the duotone filter when the duotone colors
237
- // are changed. When using Safari, force the block element to be repainted by
238
- // the browser to ensure any changes are reflected visually. This logic matches
239
- // that used on the site frontend in `block-supports/duotone.php`.
236
+ // Safari does not always update the duotone filter when the duotone
237
+ // colors are changed. When using Safari, force the block element to be
238
+ // repainted by the browser to ensure any changes are reflected
239
+ // visually. This logic matches that used on the site frontend in
240
+ // `block-supports/duotone.php`.
240
241
  if (blockElement && isSafari) {
241
242
  const display = blockElement.style.display;
242
- // Switch to `inline-block` to force a repaint. In the editor, `inline-block`
243
- // is used instead of `none` to ensure that scroll position is not affected,
244
- // as `none` results in the editor scrolling to the top of the block.
243
+ // Switch to `inline-block` to force a repaint. In the editor,
244
+ // `inline-block` is used instead of `none` to ensure that scroll
245
+ // position is not affected, as `none` results in the editor
246
+ // scrolling to the top of the block.
245
247
  blockElement.style.display = 'inline-block';
246
- // Simply accessing el.offsetHeight flushes layout and style
247
- // changes in WebKit without having to wait for setTimeout.
248
+ // Simply accessing el.offsetHeight flushes layout and style changes
249
+ // in WebKit without having to wait for setTimeout.
248
250
  // eslint-disable-next-line no-unused-expressions
249
251
  blockElement.offsetHeight;
250
252
  blockElement.style.display = display;
251
253
  }
252
- }, [isValidFilter, blockElement]);
254
+ // `colors` must be a dependency so this effect runs when the colors
255
+ // change in Safari.
256
+ }, [isValidFilter, blockElement, colors]);
253
257
  }
254
258
  function useBlockProps({
259
+ clientId,
255
260
  name,
256
261
  style
257
262
  }) {
@@ -287,7 +292,7 @@ function useBlockProps({
287
292
  const filterClass = `wp-duotone-${id}`;
288
293
  const shouldRender = selector && attribute;
289
294
  useDuotoneStyles({
290
- clientId: id,
295
+ clientId,
291
296
  id: filterClass,
292
297
  selector,
293
298
  attribute
@@ -1 +1 @@
1
- {"version":3,"names":["extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","useInstanceId","addFilter","useMemo","useEffect","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSettings","getDuotoneFilter","getDuotoneStylesheet","getDuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","useStyleOverride","default","StylesFiltersPanel","useBlockEditingMode","__unstableUseBlockElement","useBlockElement","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanelPure","style","setAttributes","name","duotoneStyle","color","settings","blockEditingMode","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","children","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","shareWithChildBlocks","edit","useBlockProps","attributeKeys","hasSupport","addDuotoneAttributes","attributes","Object","assign","type","useDuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","css","__unstableType","assets","blockElement","display","offsetHeight","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings, useStyleOverride } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanelPure( { style, setAttributes, name } ) {\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: DuotonePanelPure,\n\tuseBlockProps,\n\tattributeKeys: [ 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'filter.duotone' );\n\t},\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// 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\nfunction useDuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tassets:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneFilter( filterId, colors )\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t__unstableType: 'svgs',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\t}, [ isValidFilter, blockElement ] );\n}\n\nfunction useBlockProps( { name, style } ) {\n\tconst id = useInstanceId( useBlockProps );\n\tconst selector = useMemo( () => {\n\t\tconst blockType = getBlockType( name );\n\n\t\tif ( blockType ) {\n\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t// experimental property has been, the experimental property\n\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'filter.duotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t// to be treated as a selector and requires scoping.\n\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( experimentalDuotone ) {\n\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t: rootSelector;\n\t\t\t}\n\n\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\tfallback: true,\n\t\t\t} );\n\t\t}\n\t}, [ name ] );\n\n\tconst attribute = style?.color?.duotone;\n\n\tconst filterClass = `wp-duotone-${ id }`;\n\n\tconst shouldRender = selector && attribute;\n\n\tuseDuotoneStyles( {\n\t\tclientId: id,\n\t\tid: filterClass,\n\t\tselector,\n\t\tattribute,\n\t} );\n\n\treturn {\n\t\tclassName: shouldRender ? filterClass : '',\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","useInstanceId","addFilter","useMemo","useEffect","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSettings","getDuotoneFilter","getDuotoneStylesheet","getDuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","useStyleOverride","default","StylesFiltersPanel","useBlockEditingMode","__unstableUseBlockElement","useBlockElement","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanelPure","style","setAttributes","name","duotoneStyle","color","settings","blockEditingMode","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","children","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","shareWithChildBlocks","edit","useBlockProps","attributeKeys","hasSupport","addDuotoneAttributes","attributes","Object","assign","type","useDuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","css","__unstableType","assets","blockElement","display","offsetHeight","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings, useStyleOverride } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanelPure( { style, setAttributes, name } ) {\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: DuotonePanelPure,\n\tuseBlockProps,\n\tattributeKeys: [ 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'filter.duotone' );\n\t},\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// 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\nfunction useDuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tassets:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneFilter( filterId, colors )\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t__unstableType: 'svgs',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Safari does not always update the duotone filter when the duotone\n\t\t// colors are changed. When using Safari, force the block element to be\n\t\t// repainted by the browser to ensure any changes are reflected\n\t\t// visually. This logic matches that used on the site frontend in\n\t\t// `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor,\n\t\t\t// `inline-block` is used instead of `none` to ensure that scroll\n\t\t\t// position is not affected, as `none` results in the editor\n\t\t\t// scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style changes\n\t\t\t// in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\t\t// `colors` must be a dependency so this effect runs when the colors\n\t\t// change in Safari.\n\t}, [ isValidFilter, blockElement, colors ] );\n}\n\nfunction useBlockProps( { clientId, name, style } ) {\n\tconst id = useInstanceId( useBlockProps );\n\tconst selector = useMemo( () => {\n\t\tconst blockType = getBlockType( name );\n\n\t\tif ( blockType ) {\n\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t// experimental property has been, the experimental property\n\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'filter.duotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t// to be treated as a selector and requires scoping.\n\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( experimentalDuotone ) {\n\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t: rootSelector;\n\t\t\t}\n\n\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\tfallback: true,\n\t\t\t} );\n\t\t}\n\t}, [ name ] );\n\n\tconst attribute = style?.color?.duotone;\n\n\tconst filterClass = `wp-duotone-${ id }`;\n\n\tconst shouldRender = selector && attribute;\n\n\tuseDuotoneStyles( {\n\t\tclientId,\n\t\tid: filterClass,\n\t\tselector,\n\t\tattribute,\n\t} );\n\n\treturn {\n\t\tclassName: shouldRender ? filterClass : '',\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\n"],"mappings":"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","ignoreList":[]}
@@ -42,4 +42,5 @@ export { getTypographyClassesAndStyles } from './use-typography-props';
42
42
  export { getGapCSSValue } from './gap';
43
43
  export { useCachedTruthy } from './use-cached-truthy';
44
44
  export { useZoomOut } from './use-zoom-out';
45
+ export { __unstableBlockStyleVariationOverridesWithConfig } from './block-style-variation';
45
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createBlockEditFilter","createBlockListBlockFilter","createBlockSaveFilter","align","background","anchor","ariaLabel","customClassName","style","color","dimensions","duotone","fontFamily","fontSize","textAlign","border","position","blockStyleVariation","layout","childLayout","contentLockUI","blockHooks","blockBindingsPanel","filter","Boolean","useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getShadowClassesAndStyles","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy","useZoomOut"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tcreateBlockEditFilter,\n\tcreateBlockListBlockFilter,\n\tcreateBlockSaveFilter,\n} from './utils';\nimport './compat';\nimport align from './align';\nimport background from './background';\nimport './lock';\nimport anchor from './anchor';\nimport ariaLabel from './aria-label';\nimport customClassName from './custom-class-name';\nimport './generated-class-name';\nimport style from './style';\nimport './settings';\nimport color from './color';\nimport dimensions from './dimensions';\nimport duotone from './duotone';\nimport fontFamily from './font-family';\nimport fontSize from './font-size';\nimport textAlign from './text-align';\nimport border from './border';\nimport position from './position';\nimport blockStyleVariation from './block-style-variation';\nimport layout from './layout';\nimport childLayout from './layout-child';\nimport contentLockUI from './content-lock-ui';\nimport './metadata';\nimport blockHooks from './block-hooks';\nimport blockBindingsPanel from './block-bindings';\nimport './block-renaming';\nimport './use-bindings-attributes';\n\ncreateBlockEditFilter(\n\t[\n\t\tblockBindingsPanel,\n\t\talign,\n\t\ttextAlign,\n\t\tanchor,\n\t\tcustomClassName,\n\t\tstyle,\n\t\tduotone,\n\t\tposition,\n\t\tlayout,\n\t\tcontentLockUI,\n\t\tblockHooks,\n\t\tchildLayout,\n\t].filter( Boolean )\n);\ncreateBlockListBlockFilter( [\n\talign,\n\ttextAlign,\n\tbackground,\n\tstyle,\n\tcolor,\n\tdimensions,\n\tduotone,\n\tfontFamily,\n\tfontSize,\n\tborder,\n\tposition,\n\tblockStyleVariation,\n\tchildLayout,\n] );\ncreateBlockSaveFilter( [\n\talign,\n\ttextAlign,\n\tanchor,\n\tariaLabel,\n\tcustomClassName,\n\tborder,\n\tcolor,\n\tstyle,\n\tfontFamily,\n\tfontSize,\n] );\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getShadowClassesAndStyles } from './use-shadow-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\nexport { useZoomOut } from './use-zoom-out';\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,qBAAqB,EACrBC,0BAA0B,EAC1BC,qBAAqB,QACf,SAAS;AAChB,OAAO,UAAU;AACjB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAO,QAAQ;AACf,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAO,wBAAwB;AAC/B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAO,YAAY;AACnB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAO,YAAY;AACnB,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,kBAAkB,MAAM,kBAAkB;AACjD,OAAO,kBAAkB;AACzB,OAAO,2BAA2B;AAElCtB,qBAAqB,CACpB,CACCsB,kBAAkB,EAClBnB,KAAK,EACLW,SAAS,EACTT,MAAM,EACNE,eAAe,EACfC,KAAK,EACLG,OAAO,EACPK,QAAQ,EACRE,MAAM,EACNE,aAAa,EACbC,UAAU,EACVF,WAAW,CACX,CAACI,MAAM,CAAEC,OAAQ,CACnB,CAAC;AACDvB,0BAA0B,CAAE,CAC3BE,KAAK,EACLW,SAAS,EACTV,UAAU,EACVI,KAAK,EACLC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRE,MAAM,EACNC,QAAQ,EACRC,mBAAmB,EACnBE,WAAW,CACV,CAAC;AACHjB,qBAAqB,CAAE,CACtBC,KAAK,EACLW,SAAS,EACTT,MAAM,EACNC,SAAS,EACTC,eAAe,EACfQ,MAAM,EACNN,KAAK,EACLD,KAAK,EACLI,UAAU,EACVC,QAAQ,CACP,CAAC;AAEH,SAASY,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,yBAAyB,QAAQ,oBAAoB;AAC9D,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,UAAU,QAAQ,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["createBlockEditFilter","createBlockListBlockFilter","createBlockSaveFilter","align","background","anchor","ariaLabel","customClassName","style","color","dimensions","duotone","fontFamily","fontSize","textAlign","border","position","blockStyleVariation","layout","childLayout","contentLockUI","blockHooks","blockBindingsPanel","filter","Boolean","useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getShadowClassesAndStyles","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy","useZoomOut","__unstableBlockStyleVariationOverridesWithConfig"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tcreateBlockEditFilter,\n\tcreateBlockListBlockFilter,\n\tcreateBlockSaveFilter,\n} from './utils';\nimport './compat';\nimport align from './align';\nimport background from './background';\nimport './lock';\nimport anchor from './anchor';\nimport ariaLabel from './aria-label';\nimport customClassName from './custom-class-name';\nimport './generated-class-name';\nimport style from './style';\nimport './settings';\nimport color from './color';\nimport dimensions from './dimensions';\nimport duotone from './duotone';\nimport fontFamily from './font-family';\nimport fontSize from './font-size';\nimport textAlign from './text-align';\nimport border from './border';\nimport position from './position';\nimport blockStyleVariation from './block-style-variation';\nimport layout from './layout';\nimport childLayout from './layout-child';\nimport contentLockUI from './content-lock-ui';\nimport './metadata';\nimport blockHooks from './block-hooks';\nimport blockBindingsPanel from './block-bindings';\nimport './block-renaming';\nimport './use-bindings-attributes';\n\ncreateBlockEditFilter(\n\t[\n\t\tblockBindingsPanel,\n\t\talign,\n\t\ttextAlign,\n\t\tanchor,\n\t\tcustomClassName,\n\t\tstyle,\n\t\tduotone,\n\t\tposition,\n\t\tlayout,\n\t\tcontentLockUI,\n\t\tblockHooks,\n\t\tchildLayout,\n\t].filter( Boolean )\n);\ncreateBlockListBlockFilter( [\n\talign,\n\ttextAlign,\n\tbackground,\n\tstyle,\n\tcolor,\n\tdimensions,\n\tduotone,\n\tfontFamily,\n\tfontSize,\n\tborder,\n\tposition,\n\tblockStyleVariation,\n\tchildLayout,\n] );\ncreateBlockSaveFilter( [\n\talign,\n\ttextAlign,\n\tanchor,\n\tariaLabel,\n\tcustomClassName,\n\tborder,\n\tcolor,\n\tstyle,\n\tfontFamily,\n\tfontSize,\n] );\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getShadowClassesAndStyles } from './use-shadow-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\nexport { useZoomOut } from './use-zoom-out';\nexport { __unstableBlockStyleVariationOverridesWithConfig } from './block-style-variation';\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,qBAAqB,EACrBC,0BAA0B,EAC1BC,qBAAqB,QACf,SAAS;AAChB,OAAO,UAAU;AACjB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAO,QAAQ;AACf,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,eAAe,MAAM,qBAAqB;AACjD,OAAO,wBAAwB;AAC/B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAO,YAAY;AACnB,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAO,YAAY;AACnB,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,kBAAkB,MAAM,kBAAkB;AACjD,OAAO,kBAAkB;AACzB,OAAO,2BAA2B;AAElCtB,qBAAqB,CACpB,CACCsB,kBAAkB,EAClBnB,KAAK,EACLW,SAAS,EACTT,MAAM,EACNE,eAAe,EACfC,KAAK,EACLG,OAAO,EACPK,QAAQ,EACRE,MAAM,EACNE,aAAa,EACbC,UAAU,EACVF,WAAW,CACX,CAACI,MAAM,CAAEC,OAAQ,CACnB,CAAC;AACDvB,0BAA0B,CAAE,CAC3BE,KAAK,EACLW,SAAS,EACTV,UAAU,EACVI,KAAK,EACLC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRE,MAAM,EACNC,QAAQ,EACRC,mBAAmB,EACnBE,WAAW,CACV,CAAC;AACHjB,qBAAqB,CAAE,CACtBC,KAAK,EACLW,SAAS,EACTT,MAAM,EACNC,SAAS,EACTC,eAAe,EACfQ,MAAM,EACNN,KAAK,EACLD,KAAK,EACLI,UAAU,EACVC,QAAQ,CACP,CAAC;AAEH,SAASY,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,yBAAyB,QAAQ,oBAAoB;AAC9D,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,SAASC,gDAAgD,QAAQ,yBAAyB","ignoreList":[]}