@wordpress/edit-site 4.11.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +4 -2
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +22 -2
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +152 -28
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/global-styles/dimensions-panel.js +6 -2
  9. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  10. package/build/components/global-styles/hooks.js +1 -1
  11. package/build/components/global-styles/hooks.js.map +1 -1
  12. package/build/components/global-styles/screen-color-palette.js +1 -1
  13. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  14. package/build/components/global-styles/screen-colors.js +51 -7
  15. package/build/components/global-styles/screen-colors.js.map +1 -1
  16. package/build/components/global-styles/screen-heading-color.js +157 -0
  17. package/build/components/global-styles/screen-heading-color.js.map +1 -0
  18. package/build/components/global-styles/screen-typography-element.js +4 -0
  19. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  20. package/build/components/global-styles/screen-typography.js +5 -0
  21. package/build/components/global-styles/screen-typography.js.map +1 -1
  22. package/build/components/global-styles/typography-panel.js +73 -12
  23. package/build/components/global-styles/typography-panel.js.map +1 -1
  24. package/build/components/global-styles/typography-utils.js +217 -0
  25. package/build/components/global-styles/typography-utils.js.map +1 -0
  26. package/build/components/global-styles/ui.js +11 -0
  27. package/build/components/global-styles/ui.js.map +1 -1
  28. package/build/components/global-styles/use-global-styles-output.js +61 -40
  29. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  30. package/build/components/global-styles/utils.js +17 -2
  31. package/build/components/global-styles/utils.js.map +1 -1
  32. package/build/components/header/index.js +15 -4
  33. package/build/components/header/index.js.map +1 -1
  34. package/build/components/header/undo-redo/redo.js +2 -1
  35. package/build/components/header/undo-redo/redo.js.map +1 -1
  36. package/build/components/list/actions/index.js +1 -1
  37. package/build/components/list/actions/index.js.map +1 -1
  38. package/build/components/save-button/index.js +2 -3
  39. package/build/components/save-button/index.js.map +1 -1
  40. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js +2 -2
  41. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  42. package/build/components/sidebar/template-card/template-actions.js +1 -1
  43. package/build/components/sidebar/template-card/template-actions.js.map +1 -1
  44. package/build/components/template-details/index.js +1 -1
  45. package/build/components/template-details/index.js.map +1 -1
  46. package/build/components/template-details/template-areas.js +1 -1
  47. package/build/components/template-details/template-areas.js.map +1 -1
  48. package/build/components/template-part-converter/convert-to-template-part.js +4 -1
  49. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  50. package/build-module/components/add-new-template/add-custom-template-modal.js +4 -2
  51. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  52. package/build-module/components/add-new-template/new-template.js +21 -3
  53. package/build-module/components/add-new-template/new-template.js.map +1 -1
  54. package/build-module/components/add-new-template/utils.js +147 -26
  55. package/build-module/components/add-new-template/utils.js.map +1 -1
  56. package/build-module/components/global-styles/dimensions-panel.js +6 -2
  57. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  58. package/build-module/components/global-styles/hooks.js +1 -1
  59. package/build-module/components/global-styles/hooks.js.map +1 -1
  60. package/build-module/components/global-styles/screen-color-palette.js +1 -1
  61. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  62. package/build-module/components/global-styles/screen-colors.js +51 -7
  63. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  64. package/build-module/components/global-styles/screen-heading-color.js +143 -0
  65. package/build-module/components/global-styles/screen-heading-color.js.map +1 -0
  66. package/build-module/components/global-styles/screen-typography-element.js +4 -0
  67. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  68. package/build-module/components/global-styles/screen-typography.js +5 -0
  69. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  70. package/build-module/components/global-styles/typography-panel.js +74 -13
  71. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  72. package/build-module/components/global-styles/typography-utils.js +204 -0
  73. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  74. package/build-module/components/global-styles/ui.js +10 -0
  75. package/build-module/components/global-styles/ui.js.map +1 -1
  76. package/build-module/components/global-styles/use-global-styles-output.js +61 -44
  77. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  78. package/build-module/components/global-styles/utils.js +16 -2
  79. package/build-module/components/global-styles/utils.js.map +1 -1
  80. package/build-module/components/header/index.js +17 -6
  81. package/build-module/components/header/index.js.map +1 -1
  82. package/build-module/components/header/undo-redo/redo.js +3 -2
  83. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  84. package/build-module/components/list/actions/index.js +1 -1
  85. package/build-module/components/list/actions/index.js.map +1 -1
  86. package/build-module/components/save-button/index.js +3 -4
  87. package/build-module/components/save-button/index.js.map +1 -1
  88. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js +3 -3
  89. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  90. package/build-module/components/sidebar/template-card/template-actions.js +1 -1
  91. package/build-module/components/sidebar/template-card/template-actions.js.map +1 -1
  92. package/build-module/components/template-details/index.js +1 -1
  93. package/build-module/components/template-details/index.js.map +1 -1
  94. package/build-module/components/template-details/template-areas.js +1 -1
  95. package/build-module/components/template-details/template-areas.js.map +1 -1
  96. package/build-module/components/template-part-converter/convert-to-template-part.js +3 -1
  97. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  98. package/build-style/style-rtl.css +13 -4
  99. package/build-style/style.css +13 -4
  100. package/package.json +29 -29
  101. package/src/components/add-new-template/add-custom-template-modal.js +12 -3
  102. package/src/components/add-new-template/new-template.js +40 -20
  103. package/src/components/add-new-template/utils.js +145 -16
  104. package/src/components/global-styles/dimensions-panel.js +5 -3
  105. package/src/components/global-styles/hooks.js +1 -0
  106. package/src/components/global-styles/screen-color-palette.js +1 -1
  107. package/src/components/global-styles/screen-colors.js +46 -4
  108. package/src/components/global-styles/screen-heading-color.js +201 -0
  109. package/src/components/global-styles/screen-typography-element.js +4 -0
  110. package/src/components/global-styles/screen-typography.js +6 -0
  111. package/src/components/global-styles/style.scss +13 -6
  112. package/src/components/global-styles/test/typography-utils.js +130 -0
  113. package/src/components/global-styles/test/use-global-styles-output.js +66 -3
  114. package/src/components/global-styles/typography-panel.js +85 -16
  115. package/src/components/global-styles/typography-utils.js +228 -0
  116. package/src/components/global-styles/ui.js +13 -0
  117. package/src/components/global-styles/use-global-styles-output.js +79 -48
  118. package/src/components/global-styles/utils.js +10 -0
  119. package/src/components/header/index.js +28 -3
  120. package/src/components/header/undo-redo/redo.js +6 -2
  121. package/src/components/list/actions/index.js +3 -1
  122. package/src/components/save-button/index.js +10 -13
  123. package/src/components/sidebar/navigation-menu-sidebar/navigation-menu.js +1 -5
  124. package/src/components/sidebar/template-card/template-actions.js +3 -1
  125. package/src/components/template-details/index.js +3 -1
  126. package/src/components/template-details/template-areas.js +3 -1
  127. package/src/components/template-part-converter/convert-to-template-part.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS","__experimentalBorder","color","spacing","typography","compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","PRESET_METADATA","declarations","path","valueKey","valueFunc","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","getPresetsSvgFilters","filter","metadata","at","flatMap","preset","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","useRootPaddingAlign","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","startsWith","extraRules","rule","getLayoutStyles","tree","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","settings","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","elements","ELEMENTS","blocks","node","blockName","duotoneSelector","hasLayoutSupport","featureSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","featureName","featureSelector","featureStyles","featureDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","featureKey","undefined","useGlobalStylesOutput","stylesheets","setStylesheets","setSettings","svgFilters","setSvgFilters","merged","mergedConfig","GlobalStylesContext","customProperties","globalStyles","filters","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tfirst,\n\tforEach,\n\tget,\n\tisEmpty,\n\tkebabCase,\n\tpickBy,\n\treduce,\n\tset,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useEffect, useState, useContext } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\nimport {\n\t__unstablePresetDuotoneFilter as PresetDuotoneFilter,\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { useSetting } from './hooks';\n\n// List of block support features that can have their related styles\n// generated under their own feature level selector rather than the block's.\nconst BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {\n\t__experimentalBorder: 'border',\n\tcolor: 'color',\n\tspacing: 'spacing',\n\ttypography: 'typography',\n};\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\tif ( startsWith( uncompiledValue, VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n *\n * @return {Array} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, valueFunc, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tif ( valueKey ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value ) }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters( blockPresets = {} ) {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata ) => {\n\t\tconst presetByOrigin = get( blockPresets, metadata.path, {} );\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset ) => (\n\t\t\t\t\t<PresetDuotoneFilter\n\t\t\t\t\t\tpreset={ preset }\n\t\t\t\t\t\tkey={ preset.slug }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t);\n\t} );\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @param {string} selector The selector these declarations should attach to.\n *\n * @param {boolean} useRootPaddingAlign Whether to use CSS custom properties in root selector.\n *\n * @return {Array} An array of style declarations.\n */\nfunction getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign\n) {\n\tconst isRoot = ROOT_BLOCK_SELECTOR === selector;\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine, rootOnly }, key ) => {\n\t\t\tif ( rootOnly && ! isRoot ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\t\t\tconst pathToValue = value;\n\t\t\tif ( first( pathToValue ) === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\tif ( !! properties && typeof styleValue !== 'string' ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = name.startsWith( '--' )\n\t\t\t\t\t\t? name\n\t\t\t\t\t\t: kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tkey === '--wp--style--root--padding' &&\n\t\t\t\ttypeof styleValue === 'string'\n\t\t\t) {\n\t\t\t\t// Root-level padding styles don't currently support strings with CSS shorthand values.\n\t\t\t\t// This may change: https://github.com/WordPress/gutenberg/issues/40132.\n\t\t\t\treturn declarations;\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\n\tif ( isRoot && useRootPaddingAlign ) {\n\t\treturn output;\n\t}\n\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tconst extraRules = getCSSRules( blockStyles );\n\textraRules.forEach( ( rule ) => {\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\t\toutput.push( `${ cssProperty }: ${ compileStyleValue( rule.value ) }` );\n\t} );\n\n\treturn output;\n}\n\n/**\n * Get generated CSS for layout styles by looking up layout definitions provided\n * in theme.json, and outputting common layout styles, and specific blockGap values.\n *\n * @param {Object} props\n * @param {Object} props.tree A theme.json tree containing layout definitions.\n * @param {Object} props.style A style object containing spacing values.\n * @param {string} props.selector Selector used to group together layout styling rules.\n * @param {boolean} props.hasBlockGapSupport Whether or not the theme opts-in to blockGap support.\n * @param {boolean} props.hasFallbackGapSupport Whether or not the theme allows fallback gap styles.\n * @param {?string} props.fallbackGapValue An optional fallback gap value if no real gap value is available.\n * @return {string} Generated CSS rules for the layout styles.\n */\nexport function getLayoutStyles( {\n\ttree,\n\tstyle,\n\tselector,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tfallbackGapValue,\n} ) {\n\tlet ruleset = '';\n\tlet gapValue = hasBlockGapSupport\n\t\t? getGapCSSValue( style?.spacing?.blockGap )\n\t\t: '';\n\n\t// Ensure a fallback gap value for the root layout definitions,\n\t// and use a fallback value if one is provided for the current block.\n\tif ( hasFallbackGapSupport ) {\n\t\tif ( selector === ROOT_BLOCK_SELECTOR ) {\n\t\t\tgapValue = ! gapValue ? '0.5em' : gapValue;\n\t\t} else if ( ! hasBlockGapSupport && fallbackGapValue ) {\n\t\t\tgapValue = fallbackGapValue;\n\t\t}\n\t}\n\n\tif ( gapValue && tree?.settings?.layout?.definitions ) {\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, name, spacingStyles } ) => {\n\t\t\t\t// Allow skipping default layout for themes that opt-in to block styles, but opt-out of blockGap.\n\t\t\t\tif ( ! hasBlockGapSupport && 'default' === name ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( spacingStyles?.length ) {\n\t\t\t\t\tspacingStyles.forEach( ( spacingStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( spacingStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( spacingStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${\n\t\t\t\t\t\t\t\t\t\t\tcssValue ? cssValue : gapValue\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector =\n\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t? `${ selector } .${ className }${\n\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t\t\t: `${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t }`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t// For backwards compatibility, ensure the legacy block gap CSS variable is still available.\n\t\tif ( selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport ) {\n\t\t\truleset += `${ selector } { --wp--style--block-gap: ${ gapValue }; }`;\n\t\t}\n\t}\n\n\t// Output base styles\n\tif (\n\t\tselector === ROOT_BLOCK_SELECTOR &&\n\t\ttree?.settings?.layout?.definitions\n\t) {\n\t\tconst validDisplayModes = [ 'block', 'flex', 'grid' ];\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, displayMode, baseStyles } ) => {\n\t\t\t\tif (\n\t\t\t\t\tdisplayMode &&\n\t\t\t\t\tvalidDisplayModes.includes( displayMode )\n\t\t\t\t) {\n\t\t\t\t\truleset += `${ selector } .${ className } { display:${ displayMode }; }`;\n\t\t\t\t}\n\n\t\t\t\tif ( baseStyles?.length ) {\n\t\t\t\t\tbaseStyles.forEach( ( baseStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( baseStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( baseStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${ cssValue }`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector = `${ selector } .${ className }${\n\t\t\t\t\t\t\t\tbaseStyle?.selector || ''\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn ruleset;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[ 'border', 'color', 'spacing', 'typography', 'filter' ].includes(\n\t\t\t\tkey\n\t\t\t)\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\tforEach( tree.styles?.elements, ( value, key ) => {\n\t\tif ( !! value && !! ELEMENTS[ key ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: value,\n\t\t\t\tselector: ELEMENTS[ key ],\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tforEach( tree.styles?.blocks, ( node, blockName ) => {\n\t\tconst blockStyles = pickStyleKeys( node );\n\t\tif ( !! blockStyles && !! blockSelectors?.[ blockName ]?.selector ) {\n\t\t\tnodes.push( {\n\t\t\t\tduotoneSelector: blockSelectors[ blockName ].duotoneSelector,\n\t\t\t\tfallbackGapValue: blockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\thasLayoutSupport: blockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\tstyles: blockStyles,\n\t\t\t\tfeatureSelectors: blockSelectors[ blockName ].featureSelectors,\n\t\t\t} );\n\t\t}\n\n\t\tforEach( node?.elements, ( value, elementName ) => {\n\t\t\tif (\n\t\t\t\t!! value &&\n\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tstyles: value,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t.map( ( sel ) => {\n\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t( elementSelector ) =>\n\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tforEach( tree.settings?.blocks, ( node, blockName ) => {\n\t\tconst blockPresets = pickPresets( node );\n\t\tconst blockCustom = node.custom;\n\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\tnodes.push( {\n\t\t\t\tpresets: blockPresets,\n\t\t\t\tcustom: blockCustom,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = (\n\ttree,\n\tblockSelectors,\n\thasBlockGapSupport,\n\thasFallbackGapSupport\n) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\tconst useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;\n\n\t/*\n\t * Reset default browser margin on the root body element.\n\t * This is set on the root selector **before** generating the ruleset\n\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t * `margin` in its `spacing` declaration for the `body` element then these\n\t * user-generated values take precedence in the CSS cascade.\n\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t */\n\tlet ruleset = 'body {margin: 0;}';\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset =\n\t\t\t'body { margin: 0; padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } .has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } .has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } .has-global-padding > .alignfull > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }';\n\t}\n\n\tnodesWithStyles.forEach(\n\t\t( {\n\t\t\tselector,\n\t\t\tduotoneSelector,\n\t\t\tstyles,\n\t\t\tfallbackGapValue,\n\t\t\thasLayoutSupport,\n\t\t\tfeatureSelectors,\n\t\t} ) => {\n\t\t\t// Process styles for block support features with custom feature level\n\t\t\t// CSS selectors set.\n\t\t\tif ( featureSelectors ) {\n\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.[ featureName ] ) {\n\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t[ featureName ]: styles[ featureName ],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations( featureStyles );\n\t\t\t\t\t\t\tdelete styles[ featureName ];\n\n\t\t\t\t\t\t\tif ( !! featureDeclarations.length ) {\n\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t`${ featureSelector }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst duotoneStyles = {};\n\t\t\tif ( styles?.filter ) {\n\t\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\t\tdelete styles.filter;\n\t\t\t}\n\n\t\t\t// Process duotone styles (they use color.__experimentalDuotone selector).\n\t\t\tif ( duotoneSelector ) {\n\t\t\t\tconst duotoneDeclarations =\n\t\t\t\t\tgetStylesDeclarations( duotoneStyles );\n\t\t\t\tif ( duotoneDeclarations.length === 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\truleset =\n\t\t\t\t\truleset +\n\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t';'\n\t\t\t\t\t) };}`;\n\t\t\t}\n\n\t\t\t// Process blockGap and layout styles.\n\t\t\tif ( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport ) {\n\t\t\t\truleset += getLayoutStyles( {\n\t\t\t\t\ttree,\n\t\t\t\t\tstyle: styles,\n\t\t\t\t\tselector,\n\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\tfallbackGapValue,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Process the remaining block styles (they use either normal block class or __experimentalSelector).\n\t\t\tconst declarations = getStylesDeclarations(\n\t\t\t\tstyles,\n\t\t\t\tselector,\n\t\t\t\tuseRootPaddingAlign\n\t\t\t);\n\t\t\tif ( declarations?.length ) {\n\t\t\t\truleset =\n\t\t\t\t\truleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t\t}\n\n\t\t\t// Check for pseudo selector in `styles` and handle separately.\n\t\t\tconst pseudoSelectorStyles = Object.entries( styles ).filter(\n\t\t\t\t( [ key ] ) => key.startsWith( ':' )\n\t\t\t);\n\n\t\t\tif ( pseudoSelectorStyles?.length ) {\n\t\t\t\tpseudoSelectorStyles.forEach(\n\t\t\t\t\t( [ pseudoKey, pseudoStyle ] ) => {\n\t\t\t\t\t\tconst pseudoDeclarations =\n\t\t\t\t\t\t\tgetStylesDeclarations( pseudoStyle );\n\n\t\t\t\t\t\tif ( ! pseudoDeclarations?.length ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `selector` maybe provided in a form\n\t\t\t\t\t\t// where block level selectors have sub element\n\t\t\t\t\t\t// selectors appended to them as a comma separated\n\t\t\t\t\t\t// string.\n\t\t\t\t\t\t// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;\n\t\t\t\t\t\t// Split and append pseudo selector to create\n\t\t\t\t\t\t// the proper rules to target the elements.\n\t\t\t\t\t\tconst _selector = selector\n\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t.map( ( sel ) => sel + pseudoKey )\n\t\t\t\t\t\t\t.join( ',' );\n\n\t\t\t\t\t\tconst pseudoRule = `${ _selector }{${ pseudoDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\n\t\t\t\t\t\truleset = ruleset + pseudoRule;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t);\n\n\t/* Add alignment / layout styles */\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\n\tif ( hasBlockGapSupport ) {\n\t\t// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.\n\t\tconst gapValue =\n\t\t\tgetGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t`.wp-site-blocks > * + * { margin-block-start: ${ gapValue }; }`;\n\t}\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport function toSvgFilters( tree, blockSelectors ) {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nexport const getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst duotoneSelector =\n\t\t\tblockType?.supports?.color?.__experimentalDuotone ?? null;\n\t\tconst hasLayoutSupport = !! blockType?.supports?.__experimentalLayout;\n\t\tconst fallbackGapValue =\n\t\t\tblockType?.supports?.spacing?.blockGap?.__experimentalDefault;\n\n\t\t// For each block support feature add any custom selectors.\n\t\tconst featureSelectors = {};\n\t\tObject.entries( BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS ).forEach(\n\t\t\t( [ featureKey, featureName ] ) => {\n\t\t\t\tconst featureSelector =\n\t\t\t\t\tblockType?.supports?.[ featureKey ]?.__experimentalSelector;\n\n\t\t\t\tif ( featureSelector ) {\n\t\t\t\t\tfeatureSelectors[ featureName ] = scopeSelector(\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tresult[ name ] = {\n\t\t\tduotoneSelector,\n\t\t\tfallbackGapValue,\n\t\t\tfeatureSelectors: Object.keys( featureSelectors ).length\n\t\t\t\t? featureSelectors\n\t\t\t\t: undefined,\n\t\t\thasLayoutSupport,\n\t\t\tname,\n\t\t\tselector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst [ stylesheets, setStylesheets ] = useState( [] );\n\tconst [ settings, setSettings ] = useState( {} );\n\tconst [ svgFilters, setSvgFilters ] = useState( {} );\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst [ blockGap ] = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGap !== null;\n\tconst hasFallbackGapSupport = ! hasBlockGapSupport; // This setting isn't useful yet: it exists as a placeholder for a future explicit fallback styles support.\n\n\tuseEffect( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport\n\t\t);\n\t\tconst filters = toSvgFilters( mergedConfig, blockSelectors );\n\t\tsetStylesheets( [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t] );\n\t\tsetSettings( mergedConfig.settings );\n\t\tsetSvgFilters( filters );\n\t}, [ hasBlockGapSupport, hasFallbackGapSupport, mergedConfig ] );\n\n\treturn [ stylesheets, settings, svgFilters, hasBlockGapSupport ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS","__experimentalBorder","color","spacing","typography","compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","startsWith","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","mergedSettings","PRESET_METADATA","declarations","path","valueKey","valueFunc","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","getPresetsSvgFilters","filter","metadata","at","flatMap","preset","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","useRootPaddingAlign","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","extraRules","rule","getLayoutStyles","tree","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","settings","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","ELEMENTS","elements","blocks","node","blockName","duotoneSelector","hasLayoutSupport","featureSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","featureName","featureSelector","featureStyles","featureDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","featureKey","undefined","useGlobalStylesOutput","merged","mergedConfig","GlobalStylesContext","select","getSettings","blockEditorStore","customProperties","globalStyles","filters","stylesheets","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tfirst,\n\tforEach,\n\tget,\n\tisEmpty,\n\tkebabCase,\n\tpickBy,\n\treduce,\n\tset,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\nimport {\n\t__unstablePresetDuotoneFilter as PresetDuotoneFilter,\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { useSetting } from './hooks';\n\n// List of block support features that can have their related styles\n// generated under their own feature level selector rather than the block's.\nconst BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {\n\t__experimentalBorder: 'border',\n\tcolor: 'color',\n\tspacing: 'spacing',\n\ttypography: 'typography',\n};\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\tif ( uncompiledValue?.startsWith( VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n * @param {Object} mergedSettings Merged theme.json settings.\n *\n * @return {Array<Object>} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {}, mergedSettings ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, valueFunc, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tif ( valueKey && ! valueFunc ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value, mergedSettings ) }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters( blockPresets = {} ) {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata ) => {\n\t\tconst presetByOrigin = get( blockPresets, metadata.path, {} );\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset ) => (\n\t\t\t\t\t<PresetDuotoneFilter\n\t\t\t\t\t\tpreset={ preset }\n\t\t\t\t\t\tkey={ preset.slug }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t);\n\t} );\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @param {string} selector The selector these declarations should attach to.\n *\n * @param {boolean} useRootPaddingAlign Whether to use CSS custom properties in root selector.\n *\n * @return {Array} An array of style declarations.\n */\nexport function getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign\n) {\n\tconst isRoot = ROOT_BLOCK_SELECTOR === selector;\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine, rootOnly }, key ) => {\n\t\t\tif ( rootOnly && ! isRoot ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\t\t\tconst pathToValue = value;\n\t\t\tif ( first( pathToValue ) === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\t// Root-level padding styles don't currently support strings with CSS shorthand values.\n\t\t\t// This may change: https://github.com/WordPress/gutenberg/issues/40132.\n\t\t\tif (\n\t\t\t\tkey === '--wp--style--root--padding' &&\n\t\t\t\t( typeof styleValue === 'string' || ! useRootPaddingAlign )\n\t\t\t) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tif ( !! properties && typeof styleValue !== 'string' ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = name.startsWith( '--' )\n\t\t\t\t\t\t? name\n\t\t\t\t\t\t: kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tconst extraRules = getCSSRules( blockStyles );\n\textraRules.forEach( ( rule ) => {\n\t\t// Don't output padding properties if padding variables are set.\n\t\tif (\n\t\t\tisRoot &&\n\t\t\tuseRootPaddingAlign &&\n\t\t\trule.key.startsWith( 'padding' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\t\toutput.push( `${ cssProperty }: ${ compileStyleValue( rule.value ) }` );\n\t} );\n\n\treturn output;\n}\n\n/**\n * Get generated CSS for layout styles by looking up layout definitions provided\n * in theme.json, and outputting common layout styles, and specific blockGap values.\n *\n * @param {Object} props\n * @param {Object} props.tree A theme.json tree containing layout definitions.\n * @param {Object} props.style A style object containing spacing values.\n * @param {string} props.selector Selector used to group together layout styling rules.\n * @param {boolean} props.hasBlockGapSupport Whether or not the theme opts-in to blockGap support.\n * @param {boolean} props.hasFallbackGapSupport Whether or not the theme allows fallback gap styles.\n * @param {?string} props.fallbackGapValue An optional fallback gap value if no real gap value is available.\n * @return {string} Generated CSS rules for the layout styles.\n */\nexport function getLayoutStyles( {\n\ttree,\n\tstyle,\n\tselector,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tfallbackGapValue,\n} ) {\n\tlet ruleset = '';\n\tlet gapValue = hasBlockGapSupport\n\t\t? getGapCSSValue( style?.spacing?.blockGap )\n\t\t: '';\n\n\t// Ensure a fallback gap value for the root layout definitions,\n\t// and use a fallback value if one is provided for the current block.\n\tif ( hasFallbackGapSupport ) {\n\t\tif ( selector === ROOT_BLOCK_SELECTOR ) {\n\t\t\tgapValue = ! gapValue ? '0.5em' : gapValue;\n\t\t} else if ( ! hasBlockGapSupport && fallbackGapValue ) {\n\t\t\tgapValue = fallbackGapValue;\n\t\t}\n\t}\n\n\tif ( gapValue && tree?.settings?.layout?.definitions ) {\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, name, spacingStyles } ) => {\n\t\t\t\t// Allow skipping default layout for themes that opt-in to block styles, but opt-out of blockGap.\n\t\t\t\tif ( ! hasBlockGapSupport && 'default' === name ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( spacingStyles?.length ) {\n\t\t\t\t\tspacingStyles.forEach( ( spacingStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( spacingStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( spacingStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${\n\t\t\t\t\t\t\t\t\t\t\tcssValue ? cssValue : gapValue\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tlet combinedSelector = '';\n\n\t\t\t\t\t\t\tif ( ! hasBlockGapSupport ) {\n\t\t\t\t\t\t\t\t// For fallback gap styles, use lower specificity, to ensure styles do not unintentionally override theme styles.\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `:where(.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`\n\t\t\t\t\t\t\t\t\t\t: `:where(${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `${ selector } .${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t\t\t\t: `${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t// For backwards compatibility, ensure the legacy block gap CSS variable is still available.\n\t\tif ( selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport ) {\n\t\t\truleset += `${ selector } { --wp--style--block-gap: ${ gapValue }; }`;\n\t\t}\n\t}\n\n\t// Output base styles\n\tif (\n\t\tselector === ROOT_BLOCK_SELECTOR &&\n\t\ttree?.settings?.layout?.definitions\n\t) {\n\t\tconst validDisplayModes = [ 'block', 'flex', 'grid' ];\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, displayMode, baseStyles } ) => {\n\t\t\t\tif (\n\t\t\t\t\tdisplayMode &&\n\t\t\t\t\tvalidDisplayModes.includes( displayMode )\n\t\t\t\t) {\n\t\t\t\t\truleset += `${ selector } .${ className } { display:${ displayMode }; }`;\n\t\t\t\t}\n\n\t\t\t\tif ( baseStyles?.length ) {\n\t\t\t\t\tbaseStyles.forEach( ( baseStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( baseStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( baseStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${ cssValue }`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector = `${ selector } .${ className }${\n\t\t\t\t\t\t\t\tbaseStyle?.selector || ''\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn ruleset;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[ 'border', 'color', 'spacing', 'typography', 'filter' ].includes(\n\t\t\t\tkey\n\t\t\t)\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\tforEach( ELEMENTS, ( selector, name ) => {\n\t\tif ( !! tree.styles?.elements[ name ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: tree.styles?.elements[ name ],\n\t\t\t\tselector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tforEach( tree.styles?.blocks, ( node, blockName ) => {\n\t\tconst blockStyles = pickStyleKeys( node );\n\t\tif ( !! blockStyles && !! blockSelectors?.[ blockName ]?.selector ) {\n\t\t\tnodes.push( {\n\t\t\t\tduotoneSelector: blockSelectors[ blockName ].duotoneSelector,\n\t\t\t\tfallbackGapValue: blockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\thasLayoutSupport: blockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\tstyles: blockStyles,\n\t\t\t\tfeatureSelectors: blockSelectors[ blockName ].featureSelectors,\n\t\t\t} );\n\t\t}\n\n\t\tforEach( node?.elements, ( value, elementName ) => {\n\t\t\tif (\n\t\t\t\t!! value &&\n\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tstyles: value,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t.map( ( sel ) => {\n\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t( elementSelector ) =>\n\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tforEach( tree.settings?.blocks, ( node, blockName ) => {\n\t\tconst blockPresets = pickPresets( node );\n\t\tconst blockCustom = node.custom;\n\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\tnodes.push( {\n\t\t\t\tpresets: blockPresets,\n\t\t\t\tcustom: blockCustom,\n\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets, tree?.settings );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = (\n\ttree,\n\tblockSelectors,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tdisableLayoutStyles = false\n) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\tconst useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;\n\n\t/*\n\t * Reset default browser margin on the root body element.\n\t * This is set on the root selector **before** generating the ruleset\n\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t * `margin` in its `spacing` declaration for the `body` element then these\n\t * user-generated values take precedence in the CSS cascade.\n\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t */\n\tlet ruleset = 'body {margin: 0;}';\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset =\n\t\t\t'body { margin: 0; padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } .has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } .has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } .has-global-padding > .alignfull > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }';\n\t}\n\n\tnodesWithStyles.forEach(\n\t\t( {\n\t\t\tselector,\n\t\t\tduotoneSelector,\n\t\t\tstyles,\n\t\t\tfallbackGapValue,\n\t\t\thasLayoutSupport,\n\t\t\tfeatureSelectors,\n\t\t} ) => {\n\t\t\t// Process styles for block support features with custom feature level\n\t\t\t// CSS selectors set.\n\t\t\tif ( featureSelectors ) {\n\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.[ featureName ] ) {\n\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t[ featureName ]: styles[ featureName ],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations( featureStyles );\n\t\t\t\t\t\t\tdelete styles[ featureName ];\n\n\t\t\t\t\t\t\tif ( !! featureDeclarations.length ) {\n\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t`${ featureSelector }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst duotoneStyles = {};\n\t\t\tif ( styles?.filter ) {\n\t\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\t\tdelete styles.filter;\n\t\t\t}\n\n\t\t\t// Process duotone styles (they use color.__experimentalDuotone selector).\n\t\t\tif ( duotoneSelector ) {\n\t\t\t\tconst duotoneDeclarations =\n\t\t\t\t\tgetStylesDeclarations( duotoneStyles );\n\t\t\t\tif ( duotoneDeclarations.length === 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\truleset =\n\t\t\t\t\truleset +\n\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t';'\n\t\t\t\t\t) };}`;\n\t\t\t}\n\n\t\t\t// Process blockGap and layout styles.\n\t\t\tif (\n\t\t\t\t! disableLayoutStyles &&\n\t\t\t\t( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )\n\t\t\t) {\n\t\t\t\truleset += getLayoutStyles( {\n\t\t\t\t\ttree,\n\t\t\t\t\tstyle: styles,\n\t\t\t\t\tselector,\n\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\tfallbackGapValue,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Process the remaining block styles (they use either normal block class or __experimentalSelector).\n\t\t\tconst declarations = getStylesDeclarations(\n\t\t\t\tstyles,\n\t\t\t\tselector,\n\t\t\t\tuseRootPaddingAlign\n\t\t\t);\n\t\t\tif ( declarations?.length ) {\n\t\t\t\truleset =\n\t\t\t\t\truleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t\t}\n\n\t\t\t// Check for pseudo selector in `styles` and handle separately.\n\t\t\tconst pseudoSelectorStyles = Object.entries( styles ).filter(\n\t\t\t\t( [ key ] ) => key.startsWith( ':' )\n\t\t\t);\n\n\t\t\tif ( pseudoSelectorStyles?.length ) {\n\t\t\t\tpseudoSelectorStyles.forEach(\n\t\t\t\t\t( [ pseudoKey, pseudoStyle ] ) => {\n\t\t\t\t\t\tconst pseudoDeclarations =\n\t\t\t\t\t\t\tgetStylesDeclarations( pseudoStyle );\n\n\t\t\t\t\t\tif ( ! pseudoDeclarations?.length ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `selector` maybe provided in a form\n\t\t\t\t\t\t// where block level selectors have sub element\n\t\t\t\t\t\t// selectors appended to them as a comma separated\n\t\t\t\t\t\t// string.\n\t\t\t\t\t\t// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;\n\t\t\t\t\t\t// Split and append pseudo selector to create\n\t\t\t\t\t\t// the proper rules to target the elements.\n\t\t\t\t\t\tconst _selector = selector\n\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t.map( ( sel ) => sel + pseudoKey )\n\t\t\t\t\t\t\t.join( ',' );\n\n\t\t\t\t\t\tconst pseudoRule = `${ _selector }{${ pseudoDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\n\t\t\t\t\t\truleset = ruleset + pseudoRule;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t);\n\n\t/* Add alignment / layout styles */\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\n\tif ( hasBlockGapSupport ) {\n\t\t// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.\n\t\tconst gapValue =\n\t\t\tgetGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t`.wp-site-blocks > * + * { margin-block-start: ${ gapValue }; }`;\n\t}\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport function toSvgFilters( tree, blockSelectors ) {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nexport const getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst duotoneSelector =\n\t\t\tblockType?.supports?.color?.__experimentalDuotone ?? null;\n\t\tconst hasLayoutSupport = !! blockType?.supports?.__experimentalLayout;\n\t\tconst fallbackGapValue =\n\t\t\tblockType?.supports?.spacing?.blockGap?.__experimentalDefault;\n\n\t\t// For each block support feature add any custom selectors.\n\t\tconst featureSelectors = {};\n\t\tObject.entries( BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS ).forEach(\n\t\t\t( [ featureKey, featureName ] ) => {\n\t\t\t\tconst featureSelector =\n\t\t\t\t\tblockType?.supports?.[ featureKey ]?.__experimentalSelector;\n\n\t\t\t\tif ( featureSelector ) {\n\t\t\t\t\tfeatureSelectors[ featureName ] = scopeSelector(\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tresult[ name ] = {\n\t\t\tduotoneSelector,\n\t\t\tfallbackGapValue,\n\t\t\tfeatureSelectors: Object.keys( featureSelectors ).length\n\t\t\t\t? featureSelectors\n\t\t\t\t: undefined,\n\t\t\thasLayoutSupport,\n\t\t\tname,\n\t\t\tselector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst [ blockGap ] = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGap !== null;\n\tconst hasFallbackGapSupport = ! hasBlockGapSupport; // This setting isn't useful yet: it exists as a placeholder for a future explicit fallback styles support.\n\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn !! getSettings().disableLayoutStyles;\n\t} );\n\n\treturn useMemo( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles\n\t\t);\n\t\tconst filters = toSvgFilters( mergedConfig, blockSelectors );\n\t\tconst stylesheets = [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t];\n\n\t\treturn [ stylesheets, mergedConfig.settings, filters ];\n\t}, [\n\t\thasBlockGapSupport,\n\t\thasFallbackGapSupport,\n\t\tmergedConfig,\n\t\tdisableLayoutStyles,\n\t] );\n}\n"]}
@@ -10,10 +10,16 @@ exports.scopeSelector = scopeSelector;
10
10
 
11
11
  var _lodash = require("lodash");
12
12
 
13
+ var _typographyUtils = require("./typography-utils");
14
+
13
15
  /**
14
16
  * External dependencies
15
17
  */
16
18
 
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+
17
23
  /* Supporting data. */
18
24
  const ROOT_BLOCK_NAME = 'root';
19
25
  exports.ROOT_BLOCK_NAME = ROOT_BLOCK_NAME;
@@ -55,6 +61,12 @@ const PRESET_METADATA = [{
55
61
  classes: []
56
62
  }, {
57
63
  path: ['typography', 'fontSizes'],
64
+ valueFunc: (preset, _ref2) => {
65
+ let {
66
+ typography: typographySettings
67
+ } = _ref2;
68
+ return (0, _typographyUtils.getTypographyFontSizeValue)(preset, typographySettings);
69
+ },
58
70
  valueKey: 'size',
59
71
  cssVarInfix: 'font-size',
60
72
  classes: [{
@@ -77,6 +89,9 @@ const STYLE_PATH_TO_CSS_VAR_INFIX = {
77
89
  'elements.link.color.text': 'color',
78
90
  'elements.button.color.text': 'color',
79
91
  'elements.button.backgroundColor': 'background-color',
92
+ 'elements.heading.color': 'color',
93
+ 'elements.heading.backgroundColor': 'background-color',
94
+ 'elements.heading.gradient': 'gradient',
80
95
  'color.gradient': 'gradient',
81
96
  'typography.fontSize': 'font-size',
82
97
  'typography.fontFamily': 'font-family'
@@ -146,8 +161,8 @@ function getPresetVariableFromValue(features, blockName, variableStylePath, pres
146
161
  return `var:preset|${cssVarInfix}|${presetObject.slug}`;
147
162
  }
148
163
 
149
- function getValueFromPresetVariable(features, blockName, variable, _ref2) {
150
- let [presetType, slug] = _ref2;
164
+ function getValueFromPresetVariable(features, blockName, variable, _ref3) {
165
+ let [presetType, slug] = _ref3;
151
166
  const metadata = (0, _lodash.find)(PRESET_METADATA, ['cssVarInfix', presetType]);
152
167
 
153
168
  if (!metadata) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/utils.js"],"names":["ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","STYLE_PATH_TO_CSS_VAR_INFIX","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","preset","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","split","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, find } from 'lodash';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'buttonColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n];\n\nconst STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'elements.link.color.text': 'color',\n\t'elements.button.color.text': 'color',\n\t'elements.button.backgroundColor': 'background-color',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tget( features, [ 'blocks', blockName, ...presetPath ] ),\n\t\tget( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = find(\n\t\t\t\t\t\tpresets,\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', cssVarInfix ] );\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', presetType ] );\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tget( features, [ 'blocks', blockName, 'custom', ...path ] ) ??\n\t\tget( features, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\treturn variable;\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\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\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"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/utils.js"],"names":["ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","typography","typographySettings","STYLE_PATH_TO_CSS_VAR_INFIX","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","split","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, find } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'buttonColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, { typography: typographySettings } ) =>\n\t\t\tgetTypographyFontSizeValue( preset, typographySettings ),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n];\n\nconst STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'elements.link.color.text': 'color',\n\t'elements.button.color.text': 'color',\n\t'elements.button.backgroundColor': 'background-color',\n\t'elements.heading.color': 'color',\n\t'elements.heading.backgroundColor': 'background-color',\n\t'elements.heading.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tget( features, [ 'blocks', blockName, ...presetPath ] ),\n\t\tget( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = find(\n\t\t\t\t\t\tpresets,\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', cssVarInfix ] );\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = find( PRESET_METADATA, [ 'cssVarInfix', presetType ] );\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tget( features, [ 'blocks', blockName, 'custom', ...path ] ) ??\n\t\tget( features, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\treturn variable;\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\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\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"]}
@@ -70,7 +70,8 @@ function Header(_ref) {
70
70
  isListViewOpen,
71
71
  listViewShortcut,
72
72
  isLoaded,
73
- isVisualMode
73
+ isVisualMode,
74
+ settings
74
75
  } = (0, _data.useSelect)(select => {
75
76
  const {
76
77
  __experimentalGetPreviewDeviceType,
@@ -78,7 +79,8 @@ function Header(_ref) {
78
79
  getEditedPostId,
79
80
  isInserterOpened,
80
81
  isListViewOpened,
81
- getEditorMode
82
+ getEditorMode,
83
+ getSettings
82
84
  } = select(_store.store);
83
85
  const {
84
86
  getEditedEntityRecord
@@ -104,7 +106,8 @@ function Header(_ref) {
104
106
  isInserterOpen: isInserterOpened(),
105
107
  isListViewOpen: isListViewOpened(),
106
108
  listViewShortcut: getShortcutRepresentation('core/edit-site/toggle-list-view'),
107
- isVisualMode: getEditorMode() === 'visual'
109
+ isVisualMode: getEditorMode() === 'visual',
110
+ settings: getSettings()
108
111
  };
109
112
  }, []);
110
113
  const {
@@ -193,7 +196,15 @@ function Header(_ref) {
193
196
  }, !isFocusMode && (0, _element.createElement)(_blockEditor.__experimentalPreviewOptions, {
194
197
  deviceType: deviceType,
195
198
  setDeviceType: setPreviewDeviceType
196
- }), (0, _element.createElement)(_saveButton.default, {
199
+ }, (0, _element.createElement)(_components.MenuGroup, null, (0, _element.createElement)(_components.MenuItem, {
200
+ href: settings === null || settings === void 0 ? void 0 : settings.siteUrl,
201
+ target: "_blank",
202
+ icon: _icons.external
203
+ }, (0, _i18n.__)('View site'), (0, _element.createElement)(_components.VisuallyHidden, {
204
+ as: "span"
205
+ },
206
+ /* translators: accessibility text */
207
+ (0, _i18n.__)('(opens in a new tab)'))))), (0, _element.createElement)(_saveButton.default, {
197
208
  openEntitiesSavedStates: openEntitiesSavedStates,
198
209
  isEntitiesSavedStatesOpen: isEntitiesSavedStatesOpen
199
210
  }), (0, _element.createElement)(_interface.PinnedItems.Slot, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/header/index.js"],"names":["preventDefault","event","Header","openEntitiesSavedStates","isEntitiesSavedStatesOpen","showIconLabels","inserterButton","deviceType","entityTitle","template","templateType","isInserterOpen","isListViewOpen","listViewShortcut","isLoaded","isVisualMode","select","__experimentalGetPreviewDeviceType","getEditedPostType","getEditedPostId","isInserterOpened","isListViewOpened","getEditorMode","editSiteStore","getEditedEntityRecord","coreStore","__experimentalGetTemplateInfo","getTemplateInfo","editorStore","getShortcutRepresentation","keyboardShortcutsStore","postType","postId","record","_isLoaded","title","__experimentalSetPreviewDeviceType","setPreviewDeviceType","setIsInserterOpened","setIsListViewOpened","isLargeViewport","openInserter","current","focus","toggleListView","isFocusMode","longLabel","shortLabel","Button","plus","ToolSelector","undefined","UndoButton","RedoButton","listView","onClose"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tToolSelector,\n\t__experimentalPreviewOptions as PreviewOptions,\n\tNavigableToolbar,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { PinnedItems } from '@wordpress/interface';\nimport { _x, __ } from '@wordpress/i18n';\nimport { listView, plus } from '@wordpress/icons';\nimport { Button, ToolbarItem } from '@wordpress/components';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport MoreMenu from './more-menu';\nimport SaveButton from '../save-button';\nimport UndoButton from './undo-redo/undo';\nimport RedoButton from './undo-redo/redo';\nimport DocumentActions from './document-actions';\nimport TemplateDetails from '../template-details';\nimport { store as editSiteStore } from '../../store';\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nexport default function Header( {\n\topenEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n\tshowIconLabels,\n} ) {\n\tconst inserterButton = useRef();\n\tconst {\n\t\tdeviceType,\n\t\tentityTitle,\n\t\ttemplate,\n\t\ttemplateType,\n\t\tisInserterOpen,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t\tisLoaded,\n\t\tisVisualMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\tgetEditedPostType,\n\t\t\tgetEditedPostId,\n\t\t\tisInserterOpened,\n\t\t\tisListViewOpened,\n\t\t\tgetEditorMode,\n\t\t} = select( editSiteStore );\n\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\tconst { __experimentalGetTemplateInfo: getTemplateInfo } =\n\t\t\tselect( editorStore );\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\tconst postType = getEditedPostType();\n\t\tconst postId = getEditedPostId();\n\t\tconst record = getEditedEntityRecord( 'postType', postType, postId );\n\t\tconst _isLoaded = !! postId;\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tentityTitle: getTemplateInfo( record ).title,\n\t\t\tisLoaded: _isLoaded,\n\t\t\ttemplate: record,\n\t\t\ttemplateType: postType,\n\t\t\tisInserterOpen: isInserterOpened(),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/edit-site/toggle-list-view'\n\t\t\t),\n\t\t\tisVisualMode: getEditorMode() === 'visual',\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\t__experimentalSetPreviewDeviceType: setPreviewDeviceType,\n\t\tsetIsInserterOpened,\n\t\tsetIsListViewOpened,\n\t} = useDispatch( editSiteStore );\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\tconst openInserter = useCallback( () => {\n\t\tif ( isInserterOpen ) {\n\t\t\t// Focusing the inserter button closes the inserter popover.\n\t\t\tinserterButton.current.focus();\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpen, setIsInserterOpened ] );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\n\tconst isFocusMode = templateType === 'wp_template_part';\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpen ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t<div className=\"edit-site-header\">\n\t\t\t<NavigableToolbar\n\t\t\t\tclassName=\"edit-site-header_start\"\n\t\t\t\taria-label={ __( 'Document tools' ) }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-header__toolbar\">\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\tclassName=\"edit-site-header-toolbar__inserter-toggle\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tisPressed={ isInserterOpen }\n\t\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\t\tonClick={ openInserter }\n\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ UndoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ RedoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\t\tclassName=\"edit-site-header-toolbar__list-view-toggle\"\n\t\t\t\t\t\t\t\ticon={ listView }\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\tlabel={ __( 'List View' ) }\n\t\t\t\t\t\t\t\tonClick={ toggleListView }\n\t\t\t\t\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\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</div>\n\t\t\t</NavigableToolbar>\n\n\t\t\t<div className=\"edit-site-header_center\">\n\t\t\t\t<DocumentActions\n\t\t\t\t\tentityTitle={ entityTitle }\n\t\t\t\t\tentityLabel={\n\t\t\t\t\t\ttemplateType === 'wp_template_part'\n\t\t\t\t\t\t\t? 'template part'\n\t\t\t\t\t\t\t: 'template'\n\t\t\t\t\t}\n\t\t\t\t\tisLoaded={ isLoaded }\n\t\t\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</DocumentActions>\n\t\t\t</div>\n\n\t\t\t<div className=\"edit-site-header_end\">\n\t\t\t\t<div className=\"edit-site-header__actions\">\n\t\t\t\t\t{ ! isFocusMode && (\n\t\t\t\t\t\t<PreviewOptions\n\t\t\t\t\t\t\tdeviceType={ deviceType }\n\t\t\t\t\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<SaveButton\n\t\t\t\t\t\topenEntitiesSavedStates={ openEntitiesSavedStates }\n\t\t\t\t\t\tisEntitiesSavedStatesOpen={ isEntitiesSavedStatesOpen }\n\t\t\t\t\t/>\n\t\t\t\t\t<PinnedItems.Slot scope=\"core/edit-site\" />\n\t\t\t\t\t<MoreMenu />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header/index.js"],"names":["preventDefault","event","Header","openEntitiesSavedStates","isEntitiesSavedStatesOpen","showIconLabels","inserterButton","deviceType","entityTitle","template","templateType","isInserterOpen","isListViewOpen","listViewShortcut","isLoaded","isVisualMode","settings","select","__experimentalGetPreviewDeviceType","getEditedPostType","getEditedPostId","isInserterOpened","isListViewOpened","getEditorMode","getSettings","editSiteStore","getEditedEntityRecord","coreStore","__experimentalGetTemplateInfo","getTemplateInfo","editorStore","getShortcutRepresentation","keyboardShortcutsStore","postType","postId","record","_isLoaded","title","__experimentalSetPreviewDeviceType","setPreviewDeviceType","setIsInserterOpened","setIsListViewOpened","isLargeViewport","openInserter","current","focus","toggleListView","isFocusMode","longLabel","shortLabel","Button","plus","ToolSelector","undefined","UndoButton","RedoButton","listView","onClose","siteUrl","external"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tToolSelector,\n\t__experimentalPreviewOptions as PreviewOptions,\n\tNavigableToolbar,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { PinnedItems } from '@wordpress/interface';\nimport { _x, __ } from '@wordpress/i18n';\nimport { listView, plus, external } from '@wordpress/icons';\nimport {\n\tButton,\n\tToolbarItem,\n\tMenuGroup,\n\tMenuItem,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport MoreMenu from './more-menu';\nimport SaveButton from '../save-button';\nimport UndoButton from './undo-redo/undo';\nimport RedoButton from './undo-redo/redo';\nimport DocumentActions from './document-actions';\nimport TemplateDetails from '../template-details';\nimport { store as editSiteStore } from '../../store';\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nexport default function Header( {\n\topenEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n\tshowIconLabels,\n} ) {\n\tconst inserterButton = useRef();\n\tconst {\n\t\tdeviceType,\n\t\tentityTitle,\n\t\ttemplate,\n\t\ttemplateType,\n\t\tisInserterOpen,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t\tisLoaded,\n\t\tisVisualMode,\n\t\tsettings,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\tgetEditedPostType,\n\t\t\tgetEditedPostId,\n\t\t\tisInserterOpened,\n\t\t\tisListViewOpened,\n\t\t\tgetEditorMode,\n\t\t\tgetSettings,\n\t\t} = select( editSiteStore );\n\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\tconst { __experimentalGetTemplateInfo: getTemplateInfo } =\n\t\t\tselect( editorStore );\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\n\t\tconst postType = getEditedPostType();\n\t\tconst postId = getEditedPostId();\n\t\tconst record = getEditedEntityRecord( 'postType', postType, postId );\n\t\tconst _isLoaded = !! postId;\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tentityTitle: getTemplateInfo( record ).title,\n\t\t\tisLoaded: _isLoaded,\n\t\t\ttemplate: record,\n\t\t\ttemplateType: postType,\n\t\t\tisInserterOpen: isInserterOpened(),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/edit-site/toggle-list-view'\n\t\t\t),\n\t\t\tisVisualMode: getEditorMode() === 'visual',\n\t\t\tsettings: getSettings(),\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\t__experimentalSetPreviewDeviceType: setPreviewDeviceType,\n\t\tsetIsInserterOpened,\n\t\tsetIsListViewOpened,\n\t} = useDispatch( editSiteStore );\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\tconst openInserter = useCallback( () => {\n\t\tif ( isInserterOpen ) {\n\t\t\t// Focusing the inserter button closes the inserter popover.\n\t\t\tinserterButton.current.focus();\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpen, setIsInserterOpened ] );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\n\tconst isFocusMode = templateType === 'wp_template_part';\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpen ? __( 'Add' ) : __( 'Close' );\n\n\treturn (\n\t\t<div className=\"edit-site-header\">\n\t\t\t<NavigableToolbar\n\t\t\t\tclassName=\"edit-site-header_start\"\n\t\t\t\taria-label={ __( 'Document tools' ) }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-header__toolbar\">\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\tclassName=\"edit-site-header-toolbar__inserter-toggle\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tisPressed={ isInserterOpen }\n\t\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\t\tonClick={ openInserter }\n\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ UndoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ RedoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\t\tclassName=\"edit-site-header-toolbar__list-view-toggle\"\n\t\t\t\t\t\t\t\ticon={ listView }\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\tlabel={ __( 'List View' ) }\n\t\t\t\t\t\t\t\tonClick={ toggleListView }\n\t\t\t\t\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\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</div>\n\t\t\t</NavigableToolbar>\n\n\t\t\t<div className=\"edit-site-header_center\">\n\t\t\t\t<DocumentActions\n\t\t\t\t\tentityTitle={ entityTitle }\n\t\t\t\t\tentityLabel={\n\t\t\t\t\t\ttemplateType === 'wp_template_part'\n\t\t\t\t\t\t\t? 'template part'\n\t\t\t\t\t\t\t: 'template'\n\t\t\t\t\t}\n\t\t\t\t\tisLoaded={ isLoaded }\n\t\t\t\t\tshowIconLabels={ showIconLabels }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</DocumentActions>\n\t\t\t</div>\n\n\t\t\t<div className=\"edit-site-header_end\">\n\t\t\t\t<div className=\"edit-site-header__actions\">\n\t\t\t\t\t{ ! isFocusMode && (\n\t\t\t\t\t\t<PreviewOptions\n\t\t\t\t\t\t\tdeviceType={ deviceType }\n\t\t\t\t\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\thref={ settings?.siteUrl }\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t</PreviewOptions>\n\t\t\t\t\t) }\n\t\t\t\t\t<SaveButton\n\t\t\t\t\t\topenEntitiesSavedStates={ openEntitiesSavedStates }\n\t\t\t\t\t\tisEntitiesSavedStatesOpen={ isEntitiesSavedStatesOpen }\n\t\t\t\t\t/>\n\t\t\t\t\t<PinnedItems.Slot scope=\"core/edit-site\" />\n\t\t\t\t\t<MoreMenu />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -27,6 +27,7 @@ var _coreData = require("@wordpress/core-data");
27
27
  * WordPress dependencies
28
28
  */
29
29
  function RedoButton(props, ref) {
30
+ const shortcut = (0, _keycodes.isAppleOS)() ? _keycodes.displayShortcut.primaryShift('z') : _keycodes.displayShortcut.primary('y');
30
31
  const hasRedo = (0, _data.useSelect)(select => select(_coreData.store).hasRedo(), []);
31
32
  const {
32
33
  redo
@@ -35,7 +36,7 @@ function RedoButton(props, ref) {
35
36
  ref: ref,
36
37
  icon: !(0, _i18n.isRTL)() ? _icons.redo : _icons.undo,
37
38
  label: (0, _i18n.__)('Redo'),
38
- shortcut: _keycodes.displayShortcut.primaryShift('z') // If there are no undo levels we don't want to actually disable this
39
+ shortcut: shortcut // If there are no undo levels we don't want to actually disable this
39
40
  // button, because it will remove focus for keyboard users.
40
41
  // See: https://github.com/WordPress/gutenberg/issues/3486
41
42
  ,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/header/undo-redo/redo.js"],"names":["RedoButton","props","ref","hasRedo","select","coreStore","redo","redoIcon","undoIcon","displayShortcut","primaryShift","undefined"],"mappings":";;;;;;;;;AASA;;;;AANA;;AACA;;AACA;;AACA;;AACA;;AACA;;AARA;AACA;AACA;AASA,SAASA,UAAT,CAAqBC,KAArB,EAA4BC,GAA5B,EAAkC;AACjC,QAAMC,OAAO,GAAG,qBACbC,MAAF,IAAcA,MAAM,CAAEC,eAAF,CAAN,CAAoBF,OAApB,EADC,EAEf,EAFe,CAAhB;AAIA,QAAM;AAAEG,IAAAA;AAAF,MAAW,uBAAaD,eAAb,CAAjB;AACA,SACC,4BAAC,kBAAD,6BACMJ,KADN;AAEC,IAAA,GAAG,EAAGC,GAFP;AAGC,IAAA,IAAI,EAAG,CAAE,kBAAF,GAAYK,WAAZ,GAAuBC,WAH/B;AAIC,IAAA,KAAK,EAAG,cAAI,MAAJ,CAJT;AAKC,IAAA,QAAQ,EAAGC,0BAAgBC,YAAhB,CAA8B,GAA9B,CALZ,CAMC;AACA;AACA;AARD;AASC,qBAAgB,CAAEP,OATnB;AAUC,IAAA,OAAO,EAAGA,OAAO,GAAGG,IAAH,GAAUK;AAV5B,KADD;AAcA;;eAEc,yBAAYX,UAAZ,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { redo as redoIcon, undo as undoIcon } from '@wordpress/icons';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { forwardRef } from '@wordpress/element';\n\nfunction RedoButton( props, ref ) {\n\tconst hasRedo = useSelect(\n\t\t( select ) => select( coreStore ).hasRedo(),\n\t\t[]\n\t);\n\tconst { redo } = useDispatch( coreStore );\n\treturn (\n\t\t<Button\n\t\t\t{ ...props }\n\t\t\tref={ ref }\n\t\t\ticon={ ! isRTL() ? redoIcon : undoIcon }\n\t\t\tlabel={ __( 'Redo' ) }\n\t\t\tshortcut={ displayShortcut.primaryShift( 'z' ) }\n\t\t\t// If there are no undo levels we don't want to actually disable this\n\t\t\t// button, because it will remove focus for keyboard users.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/3486\n\t\t\taria-disabled={ ! hasRedo }\n\t\t\tonClick={ hasRedo ? redo : undefined }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( RedoButton );\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header/undo-redo/redo.js"],"names":["RedoButton","props","ref","shortcut","displayShortcut","primaryShift","primary","hasRedo","select","coreStore","redo","redoIcon","undoIcon","undefined"],"mappings":";;;;;;;;;AASA;;;;AANA;;AACA;;AACA;;AACA;;AACA;;AACA;;AARA;AACA;AACA;AASA,SAASA,UAAT,CAAqBC,KAArB,EAA4BC,GAA5B,EAAkC;AACjC,QAAMC,QAAQ,GAAG,6BACdC,0BAAgBC,YAAhB,CAA8B,GAA9B,CADc,GAEdD,0BAAgBE,OAAhB,CAAyB,GAAzB,CAFH;AAIA,QAAMC,OAAO,GAAG,qBACbC,MAAF,IAAcA,MAAM,CAAEC,eAAF,CAAN,CAAoBF,OAApB,EADC,EAEf,EAFe,CAAhB;AAIA,QAAM;AAAEG,IAAAA;AAAF,MAAW,uBAAaD,eAAb,CAAjB;AACA,SACC,4BAAC,kBAAD,6BACMR,KADN;AAEC,IAAA,GAAG,EAAGC,GAFP;AAGC,IAAA,IAAI,EAAG,CAAE,kBAAF,GAAYS,WAAZ,GAAuBC,WAH/B;AAIC,IAAA,KAAK,EAAG,cAAI,MAAJ,CAJT;AAKC,IAAA,QAAQ,EAAGT,QALZ,CAMC;AACA;AACA;AARD;AASC,qBAAgB,CAAEI,OATnB;AAUC,IAAA,OAAO,EAAGA,OAAO,GAAGG,IAAH,GAAUG;AAV5B,KADD;AAcA;;eAEc,yBAAYb,UAAZ,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { redo as redoIcon, undo as undoIcon } from '@wordpress/icons';\nimport { displayShortcut, isAppleOS } from '@wordpress/keycodes';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { forwardRef } from '@wordpress/element';\n\nfunction RedoButton( props, ref ) {\n\tconst shortcut = isAppleOS()\n\t\t? displayShortcut.primaryShift( 'z' )\n\t\t: displayShortcut.primary( 'y' );\n\n\tconst hasRedo = useSelect(\n\t\t( select ) => select( coreStore ).hasRedo(),\n\t\t[]\n\t);\n\tconst { redo } = useDispatch( coreStore );\n\treturn (\n\t\t<Button\n\t\t\t{ ...props }\n\t\t\tref={ ref }\n\t\t\ticon={ ! isRTL() ? redoIcon : undoIcon }\n\t\t\tlabel={ __( 'Redo' ) }\n\t\t\tshortcut={ shortcut }\n\t\t\t// If there are no undo levels we don't want to actually disable this\n\t\t\t// button, because it will remove focus for keyboard users.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/3486\n\t\t\taria-disabled={ ! hasRedo }\n\t\t\tonClick={ hasRedo ? redo : undefined }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( RedoButton );\n"]}
@@ -94,7 +94,7 @@ function Actions(_ref) {
94
94
  onClose();
95
95
  }
96
96
  }, (0, _i18n.__)('Delete'))), isRevertable && (0, _element.createElement)(_components.MenuItem, {
97
- info: (0, _i18n.__)('Restore to default state'),
97
+ info: (0, _i18n.__)('Use the template as supplied by the theme.'),
98
98
  onClick: () => {
99
99
  revertAndSaveTemplate();
100
100
  onClose();
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/list/actions/index.js"],"names":["Actions","template","removeTemplate","revertTemplate","editSiteStore","saveEditedEntityRecord","coreStore","createSuccessNotice","createErrorNotice","noticesStore","isRemovable","isRevertable","revertAndSaveTemplate","allowUndo","type","id","error","errorMessage","message","code","moreVertical","onClose"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAQA;AACA;AACA;AAMe,SAASA,OAAT,OAAiC;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AAC/C,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,MAAqC,uBAAaC,YAAb,CAA3C;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA6B,uBAAaC,eAAb,CAAnC;AACA,QAAM;AAAEC,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MACL,uBAAaC,cAAb,CADD;AAGA,QAAMC,WAAW,GAAG,kCAAqBT,QAArB,CAApB;AACA,QAAMU,YAAY,GAAG,mCAAsBV,QAAtB,CAArB;;AAEA,MAAK,CAAES,WAAF,IAAiB,CAAEC,YAAxB,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,iBAAeC,qBAAf,GAAuC;AACtC,QAAI;AACH,YAAMT,cAAc,CAAEF,QAAF,EAAY;AAAEY,QAAAA,SAAS,EAAE;AAAb,OAAZ,CAApB;AACA,YAAMR,sBAAsB,CAC3B,UAD2B,EAE3BJ,QAAQ,CAACa,IAFkB,EAG3Bb,QAAQ,CAACc,EAHkB,CAA5B;AAMAR,MAAAA,mBAAmB,CAAE,cAAI,kBAAJ,CAAF,EAA4B;AAC9CO,QAAAA,IAAI,EAAE;AADwC,OAA5B,CAAnB;AAGA,KAXD,CAWE,OAAQE,KAAR,EAAgB;AACjB,YAAMC,YAAY,GACjBD,KAAK,CAACE,OAAN,IAAiBF,KAAK,CAACG,IAAN,KAAe,eAAhC,GACGH,KAAK,CAACE,OADT,GAEG,cAAI,+CAAJ,CAHJ;AAKAV,MAAAA,iBAAiB,CAAES,YAAF,EAAgB;AAAEH,QAAAA,IAAI,EAAE;AAAR,OAAhB,CAAjB;AACA;AACD;;AAED,SACC,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAGM,mBADR;AAEC,IAAA,KAAK,EAAG,cAAI,SAAJ,CAFT;AAGC,IAAA,SAAS,EAAC;AAHX,KAKG;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACD,4BAAC,qBAAD,QACGX,WAAW,IACZ,qDACC,4BAAC,uBAAD;AACC,MAAA,QAAQ,EAAGT,QADZ;AAEC,MAAA,OAAO,EAAGoB;AAFX,MADD,EAKC,4BAAC,oBAAD;AACC,MAAA,aAAa,MADd;AAEC,MAAA,UAAU,MAFX;AAGC,MAAA,OAAO,EAAG,MAAM;AACfnB,QAAAA,cAAc,CAAED,QAAF,CAAd;AACAoB,QAAAA,OAAO;AACP;AANF,OAQG,cAAI,QAAJ,CARH,CALD,CAFF,EAmBGV,YAAY,IACb,4BAAC,oBAAD;AACC,MAAA,IAAI,EAAG,cAAI,0BAAJ,CADR;AAEC,MAAA,OAAO,EAAG,MAAM;AACfC,QAAAA,qBAAqB;AACrBS,QAAAA,OAAO;AACP;AALF,OAOG,cAAI,sBAAJ,CAPH,CApBF,CADC;AAAA,GALH,CADD;AAyCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport isTemplateRemovable from '../../../utils/is-template-removable';\nimport isTemplateRevertable from '../../../utils/is-template-revertable';\nimport RenameMenuItem from './rename-menu-item';\n\nexport default function Actions( { template } ) {\n\tconst { removeTemplate, revertTemplate } = useDispatch( editSiteStore );\n\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isRemovable = isTemplateRemovable( template );\n\tconst isRevertable = isTemplateRevertable( template );\n\n\tif ( ! isRemovable && ! isRevertable ) {\n\t\treturn null;\n\t}\n\n\tasync function revertAndSaveTemplate() {\n\t\ttry {\n\t\t\tawait revertTemplate( template, { allowUndo: false } );\n\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id\n\t\t\t);\n\n\t\t\tcreateSuccessNotice( __( 'Entity reverted.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while reverting the entity.' );\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName=\"edit-site-list-table__actions\"\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ isRemovable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t\t\tisTertiary\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tremoveTemplate( template );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isRevertable && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tinfo={ __( 'Restore to default state' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\trevertAndSaveTemplate();\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/list/actions/index.js"],"names":["Actions","template","removeTemplate","revertTemplate","editSiteStore","saveEditedEntityRecord","coreStore","createSuccessNotice","createErrorNotice","noticesStore","isRemovable","isRevertable","revertAndSaveTemplate","allowUndo","type","id","error","errorMessage","message","code","moreVertical","onClose"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAQA;AACA;AACA;AAMe,SAASA,OAAT,OAAiC;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AAC/C,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,MAAqC,uBAAaC,YAAb,CAA3C;AACA,QAAM;AAAEC,IAAAA;AAAF,MAA6B,uBAAaC,eAAb,CAAnC;AACA,QAAM;AAAEC,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MACL,uBAAaC,cAAb,CADD;AAGA,QAAMC,WAAW,GAAG,kCAAqBT,QAArB,CAApB;AACA,QAAMU,YAAY,GAAG,mCAAsBV,QAAtB,CAArB;;AAEA,MAAK,CAAES,WAAF,IAAiB,CAAEC,YAAxB,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,iBAAeC,qBAAf,GAAuC;AACtC,QAAI;AACH,YAAMT,cAAc,CAAEF,QAAF,EAAY;AAAEY,QAAAA,SAAS,EAAE;AAAb,OAAZ,CAApB;AACA,YAAMR,sBAAsB,CAC3B,UAD2B,EAE3BJ,QAAQ,CAACa,IAFkB,EAG3Bb,QAAQ,CAACc,EAHkB,CAA5B;AAMAR,MAAAA,mBAAmB,CAAE,cAAI,kBAAJ,CAAF,EAA4B;AAC9CO,QAAAA,IAAI,EAAE;AADwC,OAA5B,CAAnB;AAGA,KAXD,CAWE,OAAQE,KAAR,EAAgB;AACjB,YAAMC,YAAY,GACjBD,KAAK,CAACE,OAAN,IAAiBF,KAAK,CAACG,IAAN,KAAe,eAAhC,GACGH,KAAK,CAACE,OADT,GAEG,cAAI,+CAAJ,CAHJ;AAKAV,MAAAA,iBAAiB,CAAES,YAAF,EAAgB;AAAEH,QAAAA,IAAI,EAAE;AAAR,OAAhB,CAAjB;AACA;AACD;;AAED,SACC,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAGM,mBADR;AAEC,IAAA,KAAK,EAAG,cAAI,SAAJ,CAFT;AAGC,IAAA,SAAS,EAAC;AAHX,KAKG;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACD,4BAAC,qBAAD,QACGX,WAAW,IACZ,qDACC,4BAAC,uBAAD;AACC,MAAA,QAAQ,EAAGT,QADZ;AAEC,MAAA,OAAO,EAAGoB;AAFX,MADD,EAKC,4BAAC,oBAAD;AACC,MAAA,aAAa,MADd;AAEC,MAAA,UAAU,MAFX;AAGC,MAAA,OAAO,EAAG,MAAM;AACfnB,QAAAA,cAAc,CAAED,QAAF,CAAd;AACAoB,QAAAA,OAAO;AACP;AANF,OAQG,cAAI,QAAJ,CARH,CALD,CAFF,EAmBGV,YAAY,IACb,4BAAC,oBAAD;AACC,MAAA,IAAI,EAAG,cACN,4CADM,CADR;AAIC,MAAA,OAAO,EAAG,MAAM;AACfC,QAAAA,qBAAqB;AACrBS,QAAAA,OAAO;AACP;AAPF,OASG,cAAI,sBAAJ,CATH,CApBF,CADC;AAAA,GALH,CADD;AA2CA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport isTemplateRemovable from '../../../utils/is-template-removable';\nimport isTemplateRevertable from '../../../utils/is-template-revertable';\nimport RenameMenuItem from './rename-menu-item';\n\nexport default function Actions( { template } ) {\n\tconst { removeTemplate, revertTemplate } = useDispatch( editSiteStore );\n\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isRemovable = isTemplateRemovable( template );\n\tconst isRevertable = isTemplateRevertable( template );\n\n\tif ( ! isRemovable && ! isRevertable ) {\n\t\treturn null;\n\t}\n\n\tasync function revertAndSaveTemplate() {\n\t\ttry {\n\t\t\tawait revertTemplate( template, { allowUndo: false } );\n\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id\n\t\t\t);\n\n\t\t\tcreateSuccessNotice( __( 'Entity reverted.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while reverting the entity.' );\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName=\"edit-site-list-table__actions\"\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ isRemovable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t\t\tisTertiary\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tremoveTemplate( template );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isRevertable && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t'Use the template as supplied by the theme.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\trevertAndSaveTemplate();\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"]}
@@ -46,14 +46,13 @@ function SaveButton(_ref) {
46
46
  };
47
47
  }, []);
48
48
  const disabled = !isDirty || isSaving;
49
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.Button, {
49
+ return (0, _element.createElement)(_components.Button, {
50
50
  variant: "primary",
51
51
  className: "edit-site-save-button__button",
52
52
  "aria-disabled": disabled,
53
53
  "aria-expanded": isEntitiesSavedStatesOpen,
54
- disabled: disabled,
55
54
  isBusy: isSaving,
56
55
  onClick: disabled ? undefined : openEntitiesSavedStates
57
- }, (0, _i18n.__)('Save')));
56
+ }, (0, _i18n.__)('Save'));
58
57
  }
59
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/save-button/index.js"],"names":["SaveButton","openEntitiesSavedStates","isEntitiesSavedStatesOpen","isDirty","isSaving","select","__experimentalGetDirtyEntityRecords","isSavingEntityRecord","coreStore","dirtyEntityRecords","length","record","kind","name","key","disabled","undefined"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAXA;AACA;AACA;;AAGA;AACA;AACA;AAMe,SAASA,UAAT,OAGX;AAAA,MAHgC;AACnCC,IAAAA,uBADmC;AAEnCC,IAAAA;AAFmC,GAGhC;AACH,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAwB,qBAAaC,MAAF,IAAc;AACtD,UAAM;AAAEC,MAAAA,mCAAF;AAAuCC,MAAAA;AAAvC,QACLF,MAAM,CAAEG,eAAF,CADP;;AAEA,UAAMC,kBAAkB,GAAGH,mCAAmC,EAA9D;;AACA,WAAO;AACNH,MAAAA,OAAO,EAAEM,kBAAkB,CAACC,MAAnB,GAA4B,CAD/B;AAENN,MAAAA,QAAQ,EAAE,kBAAMK,kBAAN,EAA4BE,MAAF,IACnCJ,oBAAoB,CAAEI,MAAM,CAACC,IAAT,EAAeD,MAAM,CAACE,IAAtB,EAA4BF,MAAM,CAACG,GAAnC,CADX;AAFJ,KAAP;AAMA,GAV6B,EAU3B,EAV2B,CAA9B;AAYA,QAAMC,QAAQ,GAAG,CAAEZ,OAAF,IAAaC,QAA9B;AAEA,SACC,qDACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,SAAS,EAAC,+BAFX;AAGC,qBAAgBW,QAHjB;AAIC,qBAAgBb,yBAJjB;AAKC,IAAA,QAAQ,EAAGa,QALZ;AAMC,IAAA,MAAM,EAAGX,QANV;AAOC,IAAA,OAAO,EAAGW,QAAQ,GAAGC,SAAH,GAAef;AAPlC,KASG,cAAI,MAAJ,CATH,CADD,CADD;AAeA","sourcesContent":["/**\n * External dependencies\n */\nimport { some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\nexport default function SaveButton( {\n\topenEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n} ) {\n\tconst { isDirty, isSaving } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\treturn {\n\t\t\tisDirty: dirtyEntityRecords.length > 0,\n\t\t\tisSaving: some( dirtyEntityRecords, ( record ) =>\n\t\t\t\tisSavingEntityRecord( record.kind, record.name, record.key )\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tconst disabled = ! isDirty || isSaving;\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tclassName=\"edit-site-save-button__button\"\n\t\t\t\taria-disabled={ disabled }\n\t\t\t\taria-expanded={ isEntitiesSavedStatesOpen }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tisBusy={ isSaving }\n\t\t\t\tonClick={ disabled ? undefined : openEntitiesSavedStates }\n\t\t\t>\n\t\t\t\t{ __( 'Save' ) }\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/save-button/index.js"],"names":["SaveButton","openEntitiesSavedStates","isEntitiesSavedStatesOpen","isDirty","isSaving","select","__experimentalGetDirtyEntityRecords","isSavingEntityRecord","coreStore","dirtyEntityRecords","length","record","kind","name","key","disabled","undefined"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAXA;AACA;AACA;;AAGA;AACA;AACA;AAMe,SAASA,UAAT,OAGX;AAAA,MAHgC;AACnCC,IAAAA,uBADmC;AAEnCC,IAAAA;AAFmC,GAGhC;AACH,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAwB,qBAAaC,MAAF,IAAc;AACtD,UAAM;AAAEC,MAAAA,mCAAF;AAAuCC,MAAAA;AAAvC,QACLF,MAAM,CAAEG,eAAF,CADP;;AAEA,UAAMC,kBAAkB,GAAGH,mCAAmC,EAA9D;;AACA,WAAO;AACNH,MAAAA,OAAO,EAAEM,kBAAkB,CAACC,MAAnB,GAA4B,CAD/B;AAENN,MAAAA,QAAQ,EAAE,kBAAMK,kBAAN,EAA4BE,MAAF,IACnCJ,oBAAoB,CAAEI,MAAM,CAACC,IAAT,EAAeD,MAAM,CAACE,IAAtB,EAA4BF,MAAM,CAACG,GAAnC,CADX;AAFJ,KAAP;AAMA,GAV6B,EAU3B,EAV2B,CAA9B;AAYA,QAAMC,QAAQ,GAAG,CAAEZ,OAAF,IAAaC,QAA9B;AAEA,SACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,SAAS,EAAC,+BAFX;AAGC,qBAAgBW,QAHjB;AAIC,qBAAgBb,yBAJjB;AAKC,IAAA,MAAM,EAAGE,QALV;AAMC,IAAA,OAAO,EAAGW,QAAQ,GAAGC,SAAH,GAAef;AANlC,KAQG,cAAI,MAAJ,CARH,CADD;AAYA","sourcesContent":["/**\n * External dependencies\n */\nimport { some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\nexport default function SaveButton( {\n\topenEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n} ) {\n\tconst { isDirty, isSaving } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\treturn {\n\t\t\tisDirty: dirtyEntityRecords.length > 0,\n\t\t\tisSaving: some( dirtyEntityRecords, ( record ) =>\n\t\t\t\tisSavingEntityRecord( record.kind, record.name, record.key )\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tconst disabled = ! isDirty || isSaving;\n\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"primary\"\n\t\t\tclassName=\"edit-site-save-button__button\"\n\t\t\taria-disabled={ disabled }\n\t\t\taria-expanded={ isEntitiesSavedStatesOpen }\n\t\t\tisBusy={ isSaving }\n\t\t\tonClick={ disabled ? undefined : openEntitiesSavedStates }\n\t\t>\n\t\t\t{ __( 'Save' ) }\n\t\t</Button>\n\t);\n}\n"]}
@@ -43,8 +43,8 @@ function NavigationMenu(_ref) {
43
43
  }
44
44
  });
45
45
  }, [updateBlockListSettings, innerBlocks]);
46
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.__experimentalListView, {
46
+ return (0, _element.createElement)(_blockEditor.__experimentalListView, {
47
47
  id: id
48
- }));
48
+ });
49
49
  }
50
50
  //# sourceMappingURL=navigation-menu.js.map