@wordpress/edit-site 4.13.1-next.957ca95e4c.0 → 4.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/block-editor/index.js +20 -10
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/block-editor/resizable-editor.js +8 -1
- package/build/components/block-editor/resizable-editor.js.map +1 -1
- package/build/components/editor/index.js +9 -4
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/gradients-palette-panel.js +6 -2
- package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +5 -3
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +40 -4
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +41 -29
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/header/document-actions/index.js +11 -8
- package/build/components/header/document-actions/index.js.map +1 -1
- package/build/components/header/index.js +41 -5
- package/build/components/header/index.js.map +1 -1
- package/build/components/list/header.js +15 -2
- package/build/components/list/header.js.map +1 -1
- package/build/components/navigation-sidebar/navigation-panel/index.js +10 -4
- package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build/components/sidebar/index.js +8 -3
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/template-part-converter/convert-to-template-part.js +16 -0
- package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build/index.js +4 -1
- package/build/index.js.map +1 -1
- package/build-module/components/block-editor/index.js +20 -9
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/block-editor/resizable-editor.js +9 -2
- package/build-module/components/block-editor/resizable-editor.js.map +1 -1
- package/build-module/components/editor/index.js +10 -5
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/gradients-palette-panel.js +6 -2
- package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +6 -4
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +41 -5
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +42 -30
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/header/document-actions/index.js +12 -9
- package/build-module/components/header/document-actions/index.js.map +1 -1
- package/build-module/components/header/index.js +42 -7
- package/build-module/components/header/index.js.map +1 -1
- package/build-module/components/list/header.js +14 -2
- package/build-module/components/list/header.js.map +1 -1
- package/build-module/components/navigation-sidebar/navigation-panel/index.js +11 -5
- package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +7 -3
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/template-part-converter/convert-to-template-part.js +16 -1
- package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
- package/build-module/index.js +4 -1
- package/build-module/index.js.map +1 -1
- package/build-style/style-rtl.css +28 -16
- package/build-style/style.css +28 -16
- package/package.json +29 -29
- package/src/components/block-editor/index.js +34 -16
- package/src/components/block-editor/resizable-editor.js +10 -3
- package/src/components/code-editor/style.scss +2 -3
- package/src/components/editor/index.js +12 -5
- package/src/components/global-styles/gradients-palette-panel.js +25 -12
- package/src/components/global-styles/hooks.js +5 -4
- package/src/components/global-styles/typography-panel.js +40 -6
- package/src/components/global-styles/use-global-styles-output.js +66 -57
- package/src/components/header/document-actions/index.js +16 -9
- package/src/components/header/index.js +61 -21
- package/src/components/header/style.scss +9 -0
- package/src/components/list/header.js +15 -5
- package/src/components/navigation-sidebar/navigation-panel/index.js +30 -24
- package/src/components/sidebar/index.js +23 -20
- package/src/components/template-part-converter/convert-to-template-part.js +14 -1
- package/src/index.js +4 -0
- package/src/style.scss +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/typography-panel.js"],"names":["useHasTypographyPanel","name","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","supports","includes","hasFontStyles","hasFontWeights","TypographyPanel","element","selectedLevel","setCurrentTab","prefix","fontSizes","disableCustomFontSizes","fontFamilies","hasLineHeightEnabled","hasAppearanceControl","hasLetterSpacingControl","hasFontSizeEnabled","fontFamily","setFontFamily","fontSize","setFontSize","fontStyle","setFontStyle","fontWeight","setFontWeight","lineHeight","setLineHeight","letterSpacing","setLetterSpacing","backgroundColor","gradientValue","color","extraStyles","textDecoration","background","newFontStyle","newFontWeight"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tLineHeightControl,\n\t__experimentalFontFamilyControl as FontFamilyControl,\n\t__experimentalFontAppearanceControl as FontAppearanceControl,\n\t__experimentalLetterSpacingControl as LetterSpacingControl,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tFontSizePicker,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalGrid as Grid,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport { getSupportedGlobalStylesPanels, useSetting, useStyle } from './hooks';\n\nexport function useHasTypographyPanel( name ) {\n\tconst hasLineHeight = useHasLineHeightControl( name );\n\tconst hasFontAppearance = useHasAppearanceControl( name );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( name );\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\tsupports.includes( 'fontSize' )\n\t);\n}\n\nfunction useHasLineHeightControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'typography.lineHeight', name )[ 0 ] &&\n\t\tsupports.includes( 'lineHeight' )\n\t);\n}\n\nfunction useHasAppearanceControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst hasFontStyles =\n\t\tuseSetting( 'typography.fontStyle', name )[ 0 ] &&\n\t\tsupports.includes( 'fontStyle' );\n\tconst hasFontWeights =\n\t\tuseSetting( 'typography.fontWeight', name )[ 0 ] &&\n\t\tsupports.includes( 'fontWeight' );\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useHasLetterSpacingControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'typography.letterSpacing', name )[ 0 ] &&\n\t\tsupports.includes( 'letterSpacing' )\n\t);\n}\n\nexport default function TypographyPanel( { name, element } ) {\n\tconst [ selectedLevel, setCurrentTab ] = useState( 'heading' );\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tlet prefix = '';\n\tif ( element === 'heading' ) {\n\t\tprefix = `elements.${ selectedLevel }.`;\n\t} else if ( element && element !== 'text' ) {\n\t\tprefix = `elements.${ element }.`;\n\t}\n\tconst [ fontSizes ] = useSetting( 'typography.fontSizes', name );\n\tconst disableCustomFontSizes = ! useSetting(\n\t\t'typography.customFontSize',\n\t\tname\n\t)[ 0 ];\n\tconst [ fontFamilies ] = useSetting( 'typography.fontFamilies', name );\n\tconst hasFontStyles =\n\t\tuseSetting( 'typography.fontStyle', name )[ 0 ] &&\n\t\tsupports.includes( 'fontStyle' );\n\tconst hasFontWeights =\n\t\tuseSetting( 'typography.fontWeight', name )[ 0 ] &&\n\t\tsupports.includes( 'fontWeight' );\n\tconst hasLineHeightEnabled = useHasLineHeightControl( name );\n\tconst hasAppearanceControl = useHasAppearanceControl( name );\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( name );\n\n\t/* Disable font size controls when the option to style all headings is selected. */\n\tlet hasFontSizeEnabled = supports.includes( 'fontSize' );\n\tif ( element === 'heading' && selectedLevel === 'heading' ) {\n\t\thasFontSizeEnabled = false;\n\t}\n\n\tconst [ fontFamily, setFontFamily ] = useStyle(\n\t\tprefix + 'typography.fontFamily',\n\t\tname\n\t);\n\tconst [ fontSize, setFontSize ] = useStyle(\n\t\tprefix + 'typography.fontSize',\n\t\tname\n\t);\n\n\tconst [ fontStyle, setFontStyle ] = useStyle(\n\t\tprefix + 'typography.fontStyle',\n\t\tname\n\t);\n\tconst [ fontWeight, setFontWeight ] = useStyle(\n\t\tprefix + 'typography.fontWeight',\n\t\tname\n\t);\n\tconst [ lineHeight, setLineHeight ] = useStyle(\n\t\tprefix + 'typography.lineHeight',\n\t\tname\n\t);\n\tconst [ letterSpacing, setLetterSpacing ] = useStyle(\n\t\tprefix + 'typography.letterSpacing',\n\t\tname\n\t);\n\tconst [ backgroundColor ] = useStyle( prefix + 'color.background', name );\n\tconst [ gradientValue ] = useStyle( prefix + 'color.gradient', name );\n\tconst [ color ] = useStyle( prefix + 'color.text', name );\n\tconst extraStyles =\n\t\telement === 'link'\n\t\t\t? {\n\t\t\t\t\ttextDecoration: 'underline',\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<PanelBody className=\"edit-site-typography-panel\" initialOpen={ true }>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-typography-panel__preview\"\n\t\t\t\tstyle={ {\n\t\t\t\t\tfontFamily: fontFamily ?? 'serif',\n\t\t\t\t\tbackground: gradientValue ?? backgroundColor,\n\t\t\t\t\tcolor,\n\t\t\t\t\tfontSize,\n\t\t\t\t\tfontStyle,\n\t\t\t\t\tfontWeight,\n\t\t\t\t\tletterSpacing,\n\t\t\t\t\t...extraStyles,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\tAa\n\t\t\t</div>\n\t\t\t<Grid columns={ 2 } rowGap={ 16 } columnGap={ 8 }>\n\t\t\t\t{ element === 'heading' && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t\tlabel={ __( 'Select heading level' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ selectedLevel }\n\t\t\t\t\t\t\tonChange={ setCurrentTab }\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"heading\"\n\t\t\t\t\t\t\t\t/* translators: 'All' refers to selecting all heading levels \n\t\t\t\t\t\t\tand applying the same style to h1-h6. */\n\t\t\t\t\t\t\t\tlabel={ __( 'All' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h1\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H1' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h2\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H2' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h3\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H3' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h4\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H4' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h5\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H5' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h6\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H6' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ supports.includes( 'fontFamily' ) && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\t\tonChange={ setFontFamily }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ hasAppearanceControl && (\n\t\t\t\t\t<FontAppearanceControl\n\t\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( {\n\t\t\t\t\t\t\tfontStyle: newFontStyle,\n\t\t\t\t\t\t\tfontWeight: newFontWeight,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tsetFontStyle( newFontStyle );\n\t\t\t\t\t\t\tsetFontWeight( newFontWeight );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thasFontStyles={ hasFontStyles }\n\t\t\t\t\t\thasFontWeights={ hasFontWeights }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t\t<LineHeightControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t\tvalue={ lineHeight }\n\t\t\t\t\t\tonChange={ setLineHeight }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t\t<LetterSpacingControl\n\t\t\t\t\t\tvalue={ letterSpacing }\n\t\t\t\t\t\tonChange={ setLetterSpacing }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Grid>\n\t\t</PanelBody>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/typography-panel.js"],"names":["useHasTypographyPanel","name","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","supports","includes","hasFontStyles","hasFontWeights","element","setting","useHasTextTransformControl","TypographyPanel","selectedLevel","setCurrentTab","prefix","fontSizes","disableCustomFontSizes","fontFamilies","hasLineHeightEnabled","hasAppearanceControl","hasLetterSpacingControl","hasTextTransformControl","hasFontSizeEnabled","fontFamily","setFontFamily","fontSize","setFontSize","fontStyle","setFontStyle","fontWeight","setFontWeight","lineHeight","setLineHeight","letterSpacing","setLetterSpacing","textTransform","setTextTransform","backgroundColor","gradientValue","color","extraStyles","textDecoration","background","newFontStyle","newFontWeight"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tLineHeightControl,\n\t__experimentalFontFamilyControl as FontFamilyControl,\n\t__experimentalFontAppearanceControl as FontAppearanceControl,\n\t__experimentalLetterSpacingControl as LetterSpacingControl,\n\t__experimentalTextTransformControl as TextTransformControl,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tFontSizePicker,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalGrid as Grid,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport { getSupportedGlobalStylesPanels, useSetting, useStyle } from './hooks';\n\nexport function useHasTypographyPanel( name ) {\n\tconst hasLineHeight = useHasLineHeightControl( name );\n\tconst hasFontAppearance = useHasAppearanceControl( name );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( name );\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\tsupports.includes( 'fontSize' )\n\t);\n}\n\nfunction useHasLineHeightControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'typography.lineHeight', name )[ 0 ] &&\n\t\tsupports.includes( 'lineHeight' )\n\t);\n}\n\nfunction useHasAppearanceControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst hasFontStyles =\n\t\tuseSetting( 'typography.fontStyle', name )[ 0 ] &&\n\t\tsupports.includes( 'fontStyle' );\n\tconst hasFontWeights =\n\t\tuseSetting( 'typography.fontWeight', name )[ 0 ] &&\n\t\tsupports.includes( 'fontWeight' );\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useHasLetterSpacingControl( name, element ) {\n\tconst setting = useSetting( 'typography.letterSpacing', name )[ 0 ];\n\tif ( ! setting ) {\n\t\treturn false;\n\t}\n\tif ( ! name && element === 'heading' ) {\n\t\treturn true;\n\t}\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn supports.includes( 'letterSpacing' );\n}\n\nfunction useHasTextTransformControl( name, element ) {\n\tconst setting = useSetting( 'typography.textTransform', name )[ 0 ];\n\tif ( ! setting ) {\n\t\treturn false;\n\t}\n\tif ( ! name && element === 'heading' ) {\n\t\treturn true;\n\t}\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn supports.includes( 'textTransform' );\n}\n\nexport default function TypographyPanel( { name, element } ) {\n\tconst [ selectedLevel, setCurrentTab ] = useState( 'heading' );\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tlet prefix = '';\n\tif ( element === 'heading' ) {\n\t\tprefix = `elements.${ selectedLevel }.`;\n\t} else if ( element && element !== 'text' ) {\n\t\tprefix = `elements.${ element }.`;\n\t}\n\tconst [ fontSizes ] = useSetting( 'typography.fontSizes', name );\n\tconst disableCustomFontSizes = ! useSetting(\n\t\t'typography.customFontSize',\n\t\tname\n\t)[ 0 ];\n\tconst [ fontFamilies ] = useSetting( 'typography.fontFamilies', name );\n\tconst hasFontStyles =\n\t\tuseSetting( 'typography.fontStyle', name )[ 0 ] &&\n\t\tsupports.includes( 'fontStyle' );\n\tconst hasFontWeights =\n\t\tuseSetting( 'typography.fontWeight', name )[ 0 ] &&\n\t\tsupports.includes( 'fontWeight' );\n\tconst hasLineHeightEnabled = useHasLineHeightControl( name );\n\tconst hasAppearanceControl = useHasAppearanceControl( name );\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( name, element );\n\tconst hasTextTransformControl = useHasTextTransformControl( name, element );\n\n\t/* Disable font size controls when the option to style all headings is selected. */\n\tlet hasFontSizeEnabled = supports.includes( 'fontSize' );\n\tif ( element === 'heading' && selectedLevel === 'heading' ) {\n\t\thasFontSizeEnabled = false;\n\t}\n\n\tconst [ fontFamily, setFontFamily ] = useStyle(\n\t\tprefix + 'typography.fontFamily',\n\t\tname\n\t);\n\tconst [ fontSize, setFontSize ] = useStyle(\n\t\tprefix + 'typography.fontSize',\n\t\tname\n\t);\n\n\tconst [ fontStyle, setFontStyle ] = useStyle(\n\t\tprefix + 'typography.fontStyle',\n\t\tname\n\t);\n\tconst [ fontWeight, setFontWeight ] = useStyle(\n\t\tprefix + 'typography.fontWeight',\n\t\tname\n\t);\n\tconst [ lineHeight, setLineHeight ] = useStyle(\n\t\tprefix + 'typography.lineHeight',\n\t\tname\n\t);\n\tconst [ letterSpacing, setLetterSpacing ] = useStyle(\n\t\tprefix + 'typography.letterSpacing',\n\t\tname\n\t);\n\tconst [ textTransform, setTextTransform ] = useStyle(\n\t\tprefix + 'typography.textTransform',\n\t\tname\n\t);\n\tconst [ backgroundColor ] = useStyle( prefix + 'color.background', name );\n\tconst [ gradientValue ] = useStyle( prefix + 'color.gradient', name );\n\tconst [ color ] = useStyle( prefix + 'color.text', name );\n\tconst extraStyles =\n\t\telement === 'link'\n\t\t\t? {\n\t\t\t\t\ttextDecoration: 'underline',\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<PanelBody className=\"edit-site-typography-panel\" initialOpen={ true }>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-typography-panel__preview\"\n\t\t\t\tstyle={ {\n\t\t\t\t\tfontFamily: fontFamily ?? 'serif',\n\t\t\t\t\tbackground: gradientValue ?? backgroundColor,\n\t\t\t\t\tcolor,\n\t\t\t\t\tfontSize,\n\t\t\t\t\tfontStyle,\n\t\t\t\t\tfontWeight,\n\t\t\t\t\tletterSpacing,\n\t\t\t\t\t...extraStyles,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\tAa\n\t\t\t</div>\n\t\t\t<Grid columns={ 2 } rowGap={ 16 } columnGap={ 8 }>\n\t\t\t\t{ element === 'heading' && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t\tlabel={ __( 'Select heading level' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ selectedLevel }\n\t\t\t\t\t\t\tonChange={ setCurrentTab }\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"heading\"\n\t\t\t\t\t\t\t\t/* translators: 'All' refers to selecting all heading levels \n\t\t\t\t\t\t\tand applying the same style to h1-h6. */\n\t\t\t\t\t\t\t\tlabel={ __( 'All' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h1\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H1' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h2\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H2' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h3\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H3' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h4\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H4' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h5\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H5' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tvalue=\"h6\"\n\t\t\t\t\t\t\t\tlabel={ __( 'H6' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ supports.includes( 'fontFamily' ) && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\t\tonChange={ setFontFamily }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ hasAppearanceControl && (\n\t\t\t\t\t<FontAppearanceControl\n\t\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( {\n\t\t\t\t\t\t\tfontStyle: newFontStyle,\n\t\t\t\t\t\t\tfontWeight: newFontWeight,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tsetFontStyle( newFontStyle );\n\t\t\t\t\t\t\tsetFontWeight( newFontWeight );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thasFontStyles={ hasFontStyles }\n\t\t\t\t\t\thasFontWeights={ hasFontWeights }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t\t<LineHeightControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t\tvalue={ lineHeight }\n\t\t\t\t\t\tonChange={ setLineHeight }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t\t<LetterSpacingControl\n\t\t\t\t\t\tvalue={ letterSpacing }\n\t\t\t\t\t\tonChange={ setLetterSpacing }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"auto\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasTextTransformControl && (\n\t\t\t\t\t<div className=\"edit-site-typography-panel__full-width-control\">\n\t\t\t\t\t\t<TextTransformControl\n\t\t\t\t\t\t\tvalue={ textTransform }\n\t\t\t\t\t\t\tonChange={ setTextTransform }\n\t\t\t\t\t\t\tshowNone\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</Grid>\n\t\t</PanelBody>\n\t);\n}\n"]}
|
|
@@ -210,7 +210,7 @@ function getStylesDeclarations() {
|
|
|
210
210
|
|
|
211
211
|
const pathToValue = value;
|
|
212
212
|
|
|
213
|
-
if (
|
|
213
|
+
if (pathToValue[0] === 'elements' || useEngine) {
|
|
214
214
|
return declarations;
|
|
215
215
|
}
|
|
216
216
|
|
|
@@ -317,8 +317,8 @@ function getLayoutStyles(_ref6) {
|
|
|
317
317
|
spacingStyles
|
|
318
318
|
} = _ref7;
|
|
319
319
|
|
|
320
|
-
// Allow
|
|
321
|
-
if (!hasBlockGapSupport && '
|
|
320
|
+
// Allow outputting fallback gap styles for flex layout type when block gap support isn't available.
|
|
321
|
+
if (!hasBlockGapSupport && 'flex' !== name) {
|
|
322
322
|
return;
|
|
323
323
|
}
|
|
324
324
|
|
|
@@ -392,7 +392,7 @@ function getLayoutStyles(_ref6) {
|
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
const getNodesWithStyles = (tree, blockSelectors) => {
|
|
395
|
-
var _tree$styles3;
|
|
395
|
+
var _tree$styles$blocks, _tree$styles3;
|
|
396
396
|
|
|
397
397
|
const nodes = [];
|
|
398
398
|
|
|
@@ -412,9 +412,11 @@ const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
412
412
|
});
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
|
|
415
|
+
Object.entries(_blocks.__EXPERIMENTAL_ELEMENTS).forEach(_ref11 => {
|
|
416
416
|
var _tree$styles;
|
|
417
417
|
|
|
418
|
+
let [name, selector] = _ref11;
|
|
419
|
+
|
|
418
420
|
if (!!((_tree$styles = tree.styles) !== null && _tree$styles !== void 0 && _tree$styles.elements[name])) {
|
|
419
421
|
var _tree$styles2;
|
|
420
422
|
|
|
@@ -425,9 +427,10 @@ const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
425
427
|
}
|
|
426
428
|
}); // Iterate over blocks: they can have styles & elements.
|
|
427
429
|
|
|
428
|
-
|
|
429
|
-
var _blockSelectors$block;
|
|
430
|
+
Object.entries((_tree$styles$blocks = (_tree$styles3 = tree.styles) === null || _tree$styles3 === void 0 ? void 0 : _tree$styles3.blocks) !== null && _tree$styles$blocks !== void 0 ? _tree$styles$blocks : {}).forEach(_ref12 => {
|
|
431
|
+
var _blockSelectors$block, _node$elements;
|
|
430
432
|
|
|
433
|
+
let [blockName, node] = _ref12;
|
|
431
434
|
const blockStyles = pickStyleKeys(node);
|
|
432
435
|
|
|
433
436
|
if (!!blockStyles && !!(blockSelectors !== null && blockSelectors !== void 0 && (_blockSelectors$block = blockSelectors[blockName]) !== null && _blockSelectors$block !== void 0 && _blockSelectors$block.selector)) {
|
|
@@ -441,7 +444,9 @@ const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
441
444
|
});
|
|
442
445
|
}
|
|
443
446
|
|
|
444
|
-
(
|
|
447
|
+
Object.entries((_node$elements = node === null || node === void 0 ? void 0 : node.elements) !== null && _node$elements !== void 0 ? _node$elements : {}).forEach(_ref13 => {
|
|
448
|
+
let [elementName, value] = _ref13;
|
|
449
|
+
|
|
445
450
|
if (!!value && !!(blockSelectors !== null && blockSelectors !== void 0 && blockSelectors[blockName]) && !!(_blocks.__EXPERIMENTAL_ELEMENTS !== null && _blocks.__EXPERIMENTAL_ELEMENTS !== void 0 && _blocks.__EXPERIMENTAL_ELEMENTS[elementName])) {
|
|
446
451
|
nodes.push({
|
|
447
452
|
styles: value,
|
|
@@ -460,7 +465,7 @@ const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
460
465
|
exports.getNodesWithStyles = getNodesWithStyles;
|
|
461
466
|
|
|
462
467
|
const getNodesWithSettings = (tree, blockSelectors) => {
|
|
463
|
-
var _tree$settings3, _tree$settings4;
|
|
468
|
+
var _tree$settings3, _tree$settings$blocks, _tree$settings4;
|
|
464
469
|
|
|
465
470
|
const nodes = [];
|
|
466
471
|
|
|
@@ -471,10 +476,10 @@ const getNodesWithSettings = (tree, blockSelectors) => {
|
|
|
471
476
|
const pickPresets = treeToPickFrom => {
|
|
472
477
|
const presets = {};
|
|
473
478
|
|
|
474
|
-
_utils.PRESET_METADATA.forEach(
|
|
479
|
+
_utils.PRESET_METADATA.forEach(_ref14 => {
|
|
475
480
|
let {
|
|
476
481
|
path
|
|
477
|
-
} =
|
|
482
|
+
} = _ref14;
|
|
478
483
|
const value = (0, _lodash.get)(treeToPickFrom, path, false);
|
|
479
484
|
|
|
480
485
|
if (value !== false) {
|
|
@@ -498,7 +503,8 @@ const getNodesWithSettings = (tree, blockSelectors) => {
|
|
|
498
503
|
} // Blocks.
|
|
499
504
|
|
|
500
505
|
|
|
501
|
-
|
|
506
|
+
Object.entries((_tree$settings$blocks = (_tree$settings4 = tree.settings) === null || _tree$settings4 === void 0 ? void 0 : _tree$settings4.blocks) !== null && _tree$settings$blocks !== void 0 ? _tree$settings$blocks : {}).forEach(_ref15 => {
|
|
507
|
+
let [blockName, node] = _ref15;
|
|
502
508
|
const blockPresets = pickPresets(node);
|
|
503
509
|
const blockCustom = node.custom;
|
|
504
510
|
|
|
@@ -518,12 +524,12 @@ exports.getNodesWithSettings = getNodesWithSettings;
|
|
|
518
524
|
const toCustomProperties = (tree, blockSelectors) => {
|
|
519
525
|
const settings = getNodesWithSettings(tree, blockSelectors);
|
|
520
526
|
let ruleset = '';
|
|
521
|
-
settings.forEach(
|
|
527
|
+
settings.forEach(_ref16 => {
|
|
522
528
|
let {
|
|
523
529
|
presets,
|
|
524
530
|
custom,
|
|
525
531
|
selector
|
|
526
|
-
} =
|
|
532
|
+
} = _ref16;
|
|
527
533
|
const declarations = getPresetsDeclarations(presets, tree === null || tree === void 0 ? void 0 : tree.settings);
|
|
528
534
|
const customProps = flattenTree(custom, '--wp--custom--', '--');
|
|
529
535
|
|
|
@@ -571,11 +577,17 @@ const toStyles = function (tree, blockSelectors, hasBlockGapSupport, hasFallback
|
|
|
571
577
|
}
|
|
572
578
|
|
|
573
579
|
if (useRootPaddingAlign) {
|
|
574
|
-
ruleset +=
|
|
580
|
+
ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }
|
|
581
|
+
.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
|
|
582
|
+
.has-global-padding :where(.has-global-padding) { padding-right: 0; padding-left: 0; }
|
|
583
|
+
.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }
|
|
584
|
+
.has-global-padding :where(.has-global-padding) > .alignfull { margin-right: 0; margin-left: 0; }
|
|
585
|
+
.has-global-padding > .alignfull:where(:not(.has-global-padding)) > :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); }
|
|
586
|
+
.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*="wp-block-"]:not(.alignfull):not([class*="__"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;
|
|
575
587
|
}
|
|
576
588
|
|
|
577
589
|
ruleset += '}';
|
|
578
|
-
nodesWithStyles.forEach(
|
|
590
|
+
nodesWithStyles.forEach(_ref17 => {
|
|
579
591
|
let {
|
|
580
592
|
selector,
|
|
581
593
|
duotoneSelector,
|
|
@@ -583,13 +595,13 @@ const toStyles = function (tree, blockSelectors, hasBlockGapSupport, hasFallback
|
|
|
583
595
|
fallbackGapValue,
|
|
584
596
|
hasLayoutSupport,
|
|
585
597
|
featureSelectors
|
|
586
|
-
} =
|
|
598
|
+
} = _ref17;
|
|
587
599
|
|
|
588
600
|
// Process styles for block support features with custom feature level
|
|
589
601
|
// CSS selectors set.
|
|
590
602
|
if (featureSelectors) {
|
|
591
|
-
Object.entries(featureSelectors).forEach(
|
|
592
|
-
let [featureName, featureSelector] =
|
|
603
|
+
Object.entries(featureSelectors).forEach(_ref18 => {
|
|
604
|
+
let [featureName, featureSelector] = _ref18;
|
|
593
605
|
|
|
594
606
|
if (styles !== null && styles !== void 0 && styles[featureName]) {
|
|
595
607
|
const featureStyles = {
|
|
@@ -641,14 +653,14 @@ const toStyles = function (tree, blockSelectors, hasBlockGapSupport, hasFallback
|
|
|
641
653
|
} // Check for pseudo selector in `styles` and handle separately.
|
|
642
654
|
|
|
643
655
|
|
|
644
|
-
const pseudoSelectorStyles = Object.entries(styles).filter(
|
|
645
|
-
let [key] =
|
|
656
|
+
const pseudoSelectorStyles = Object.entries(styles).filter(_ref19 => {
|
|
657
|
+
let [key] = _ref19;
|
|
646
658
|
return key.startsWith(':');
|
|
647
659
|
});
|
|
648
660
|
|
|
649
661
|
if (pseudoSelectorStyles !== null && pseudoSelectorStyles !== void 0 && pseudoSelectorStyles.length) {
|
|
650
|
-
pseudoSelectorStyles.forEach(
|
|
651
|
-
let [pseudoKey, pseudoStyle] =
|
|
662
|
+
pseudoSelectorStyles.forEach(_ref20 => {
|
|
663
|
+
let [pseudoKey, pseudoStyle] = _ref20;
|
|
652
664
|
const pseudoDeclarations = getStylesDeclarations(pseudoStyle);
|
|
653
665
|
|
|
654
666
|
if (!(pseudoDeclarations !== null && pseudoDeclarations !== void 0 && pseudoDeclarations.length)) {
|
|
@@ -684,11 +696,11 @@ const toStyles = function (tree, blockSelectors, hasBlockGapSupport, hasFallback
|
|
|
684
696
|
ruleset = ruleset + `.wp-site-blocks > * + * { margin-block-start: ${gapValue}; }`;
|
|
685
697
|
}
|
|
686
698
|
|
|
687
|
-
nodesWithSettings.forEach(
|
|
699
|
+
nodesWithSettings.forEach(_ref21 => {
|
|
688
700
|
let {
|
|
689
701
|
selector,
|
|
690
702
|
presets
|
|
691
|
-
} =
|
|
703
|
+
} = _ref21;
|
|
692
704
|
|
|
693
705
|
if (_utils.ROOT_BLOCK_SELECTOR === selector) {
|
|
694
706
|
// Do not add extra specificity for top-level classes.
|
|
@@ -708,10 +720,10 @@ exports.toStyles = toStyles;
|
|
|
708
720
|
|
|
709
721
|
function toSvgFilters(tree, blockSelectors) {
|
|
710
722
|
const nodesWithSettings = getNodesWithSettings(tree, blockSelectors);
|
|
711
|
-
return nodesWithSettings.flatMap(
|
|
723
|
+
return nodesWithSettings.flatMap(_ref22 => {
|
|
712
724
|
let {
|
|
713
725
|
presets
|
|
714
|
-
} =
|
|
726
|
+
} = _ref22;
|
|
715
727
|
return getPresetsSvgFilters(presets);
|
|
716
728
|
});
|
|
717
729
|
}
|
|
@@ -728,10 +740,10 @@ const getBlockSelectors = blockTypes => {
|
|
|
728
740
|
const fallbackGapValue = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports4 = blockType.supports) === null || _blockType$supports4 === void 0 ? void 0 : (_blockType$supports4$ = _blockType$supports4.spacing) === null || _blockType$supports4$ === void 0 ? void 0 : (_blockType$supports4$2 = _blockType$supports4$.blockGap) === null || _blockType$supports4$2 === void 0 ? void 0 : _blockType$supports4$2.__experimentalDefault; // For each block support feature add any custom selectors.
|
|
729
741
|
|
|
730
742
|
const featureSelectors = {};
|
|
731
|
-
Object.entries(BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS).forEach(
|
|
743
|
+
Object.entries(BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS).forEach(_ref23 => {
|
|
732
744
|
var _blockType$supports5, _blockType$supports5$;
|
|
733
745
|
|
|
734
|
-
let [featureKey, featureName] =
|
|
746
|
+
let [featureKey, featureName] = _ref23;
|
|
735
747
|
const featureSelector = blockType === null || blockType === void 0 ? void 0 : (_blockType$supports5 = blockType.supports) === null || _blockType$supports5 === void 0 ? void 0 : (_blockType$supports5$ = _blockType$supports5[featureKey]) === null || _blockType$supports5$ === void 0 ? void 0 : _blockType$supports5$.__experimentalSelector;
|
|
736
748
|
|
|
737
749
|
if (featureSelector) {
|
|
@@ -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","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","tree","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","getLayoutStyles","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","contentSize","wideSize","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\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 * @param {Object} tree A theme.json tree containing layout definitions.\n *\n * @return {Array} An array of style declarations.\n */\nexport function getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign,\n\ttree = {}\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\n\t\tlet ruleValue = rule.value;\n\t\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\t\tconst refPath = ruleValue.ref.split( '.' );\n\t\t\truleValue = get( tree, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! ruleValue || !! ruleValue?.ref ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\toutput.push( `${ cssProperty }: ${ ruleValue }` );\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\tconst { contentSize, wideSize } = tree?.settings?.layout || {};\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 ( contentSize ) {\n\t\truleset += ` --wp--style--global--content-size: ${ contentSize };`;\n\t}\n\n\tif ( wideSize ) {\n\t\truleset += ` --wp--style--global--wide-size: ${ wideSize };`;\n\t}\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset +=\n\t\t\t'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\truleset += '}';\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\truleset =\n\t\t\t\t\t\truleset +\n\t\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\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\ttree\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"]}
|
|
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","tree","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","getLayoutStyles","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","blockName","node","duotoneSelector","hasLayoutSupport","featureSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","contentSize","wideSize","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 { get, isEmpty, kebabCase, pickBy, reduce, set } 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\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 * @param {Object} tree A theme.json tree containing layout definitions.\n *\n * @return {Array} An array of style declarations.\n */\nexport function getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign,\n\ttree = {}\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 ( pathToValue[ 0 ] === '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\n\t\tlet ruleValue = rule.value;\n\t\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\t\tconst refPath = ruleValue.ref.split( '.' );\n\t\t\truleValue = get( tree, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! ruleValue || !! ruleValue?.ref ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\toutput.push( `${ cssProperty }: ${ ruleValue }` );\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 outputting fallback gap styles for flex layout type when block gap support isn't available.\n\t\t\t\tif ( ! hasBlockGapSupport && 'flex' !== 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\tObject.entries( ELEMENTS ).forEach( ( [ name, selector ] ) => {\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\tObject.entries( tree.styles?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockStyles = pickStyleKeys( node );\n\t\t\tif (\n\t\t\t\t!! blockStyles &&\n\t\t\t\t!! blockSelectors?.[ blockName ]?.selector\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tduotoneSelector:\n\t\t\t\t\t\tblockSelectors[ blockName ].duotoneSelector,\n\t\t\t\t\tfallbackGapValue:\n\t\t\t\t\t\tblockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\t\thasLayoutSupport:\n\t\t\t\t\t\tblockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t\tstyles: blockStyles,\n\t\t\t\t\tfeatureSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].featureSelectors,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tObject.entries( node?.elements ?? {} ).forEach(\n\t\t\t\t( [ elementName, value ] ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!! value &&\n\t\t\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\tstyles: value,\n\t\t\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t\t.map( ( sel ) => {\n\t\t\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t\t\t( elementSelector ) =>\n\t\t\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\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\t.join( ',' ),\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 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\tObject.entries( tree.settings?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockPresets = pickPresets( node );\n\t\t\tconst blockCustom = node.custom;\n\t\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tpresets: blockPresets,\n\t\t\t\t\tcustom: blockCustom,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t} );\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\tconst { contentSize, wideSize } = tree?.settings?.layout || {};\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 ( contentSize ) {\n\t\truleset += ` --wp--style--global--content-size: ${ contentSize };`;\n\t}\n\n\tif ( wideSize ) {\n\t\truleset += ` --wp--style--global--wide-size: ${ wideSize };`;\n\t}\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } \n\t\t\t.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } \n\t\t\t.has-global-padding :where(.has-global-padding) { padding-right: 0; padding-left: 0; } \n\t\t\t.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } \n\t\t\t.has-global-padding :where(.has-global-padding) > .alignfull { margin-right: 0; margin-left: 0; } \n\t\t\t.has-global-padding > .alignfull:where(:not(.has-global-padding)) > :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\t\t.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;\n\t}\n\n\truleset += '}';\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\truleset =\n\t\t\t\t\t\truleset +\n\t\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\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\ttree\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"]}
|
|
@@ -78,11 +78,16 @@ function DocumentActions(_ref) {
|
|
|
78
78
|
} = _ref;
|
|
79
79
|
const {
|
|
80
80
|
label
|
|
81
|
-
} = useSecondaryText(); //
|
|
82
|
-
//
|
|
83
|
-
// part of it.
|
|
81
|
+
} = useSecondaryText(); // Use internal state instead of a ref to make sure that the component
|
|
82
|
+
// re-renders when the popover's anchor updates.
|
|
84
83
|
|
|
85
|
-
const
|
|
84
|
+
const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null); // Memoize popoverProps to avoid returning a new object every time.
|
|
85
|
+
|
|
86
|
+
const popoverProps = (0, _element.useMemo)(() => ({
|
|
87
|
+
// Use the title wrapper as the popover anchor so that the dropdown is
|
|
88
|
+
// centered over the whole title area rather than just one part of it.
|
|
89
|
+
anchor: popoverAnchor
|
|
90
|
+
}), [popoverAnchor]); // Return a simple loading indicator until we have information to show.
|
|
86
91
|
|
|
87
92
|
if (!isLoaded) {
|
|
88
93
|
return (0, _element.createElement)("div", {
|
|
@@ -102,7 +107,7 @@ function DocumentActions(_ref) {
|
|
|
102
107
|
'has-secondary-label': !!label
|
|
103
108
|
})
|
|
104
109
|
}, (0, _element.createElement)("div", {
|
|
105
|
-
ref:
|
|
110
|
+
ref: setPopoverAnchor,
|
|
106
111
|
className: "edit-site-document-actions__title-wrapper"
|
|
107
112
|
}, (0, _element.createElement)(_components.__experimentalText, {
|
|
108
113
|
size: "body",
|
|
@@ -116,9 +121,7 @@ function DocumentActions(_ref) {
|
|
|
116
121
|
size: "body",
|
|
117
122
|
className: "edit-site-document-actions__secondary-item"
|
|
118
123
|
}, label !== null && label !== void 0 ? label : ''), dropdownContent && (0, _element.createElement)(_components.Dropdown, {
|
|
119
|
-
popoverProps:
|
|
120
|
-
anchorRef: titleRef.current
|
|
121
|
-
},
|
|
124
|
+
popoverProps: popoverProps,
|
|
122
125
|
position: "bottom center",
|
|
123
126
|
renderToggle: _ref2 => {
|
|
124
127
|
let {
|