@wordpress/block-editor 11.4.0 → 11.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/components/block-inspector/index.js +11 -10
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build/components/block-list/block-invalid-warning.js +63 -80
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-lock/modal.js +1 -0
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +2 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build/components/child-layout-control/index.js +107 -0
- package/build/components/child-layout-control/index.js.map +1 -0
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/date-format-picker/index.js +3 -3
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/global-styles/border-panel.js +306 -0
- package/build/components/global-styles/border-panel.js.map +1 -0
- package/build/components/global-styles/dimensions-panel.js +594 -0
- package/build/components/global-styles/dimensions-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +127 -37
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +36 -2
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +87 -27
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +21 -14
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/index.native.js +23 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/index.js +29 -17
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +10 -11
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +5 -108
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +242 -0
- package/build/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build/components/inserter/menu.js +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -2
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-results.js +10 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -1
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/inspector-controls/fill.js +38 -9
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/link-control/index.js +1 -1
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-item.js +5 -2
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +1 -1
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/link-control/settings.js +1 -0
- package/build/components/link-control/settings.js.map +1 -1
- package/build/components/list-view/block.js +17 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +2 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/expander.js +2 -1
- package/build/components/list-view/expander.js.map +1 -1
- package/build/components/list-view/leaf.js +10 -6
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +1 -2
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
- package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build/components/off-canvas-editor/appender.js +33 -13
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/branch.js +6 -3
- package/build/components/off-canvas-editor/branch.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +8 -2
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
- package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build/components/provider/use-block-sync.js +17 -3
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -0
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +0 -3
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +9 -43
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-delete.js +73 -0
- package/build/components/rich-text/use-delete.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +14 -6
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +4 -1
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/align.js +3 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/border.js +91 -240
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/custom-class-name.js +4 -4
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/custom-class-name.native.js +3 -4
- package/build/hooks/custom-class-name.native.js.map +1 -1
- package/build/hooks/dimensions.js +72 -190
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +94 -25
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/gap.js +0 -202
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +33 -27
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +7 -163
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +7 -163
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/supports.js +7 -1
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +52 -66
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +101 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +6 -2
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +1 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/private-apis.js +4 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +28 -14
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +28 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +53 -47
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +24 -4
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +49 -10
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/block-inspector/index.js +9 -9
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.js +66 -78
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-lock/modal.js +1 -0
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +1 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +2 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +98 -0
- package/build-module/components/child-layout-control/index.js.map +1 -0
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +4 -4
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +291 -0
- package/build-module/components/global-styles/border-panel.js.map +1 -0
- package/build-module/components/global-styles/dimensions-panel.js +574 -0
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +123 -34
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +3 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +88 -27
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +21 -14
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +2 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/index.js +28 -16
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +10 -11
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +6 -105
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +222 -0
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build-module/components/inserter/menu.js +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -2
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-results.js +10 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -1
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +39 -9
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-item.js +4 -2
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +1 -1
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/link-control/settings.js +1 -0
- package/build-module/components/link-control/settings.js.map +1 -1
- package/build-module/components/list-view/block.js +16 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +2 -2
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/expander.js +2 -1
- package/build-module/components/list-view/expander.js.map +1 -1
- package/build-module/components/list-view/leaf.js +8 -4
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +1 -2
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
- package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build-module/components/off-canvas-editor/appender.js +33 -14
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/branch.js +6 -3
- package/build-module/components/off-canvas-editor/branch.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +8 -2
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
- package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +17 -3
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -0
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +0 -3
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +9 -43
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-delete.js +62 -0
- package/build-module/components/rich-text/use-delete.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +14 -6
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +4 -1
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/align.js +3 -1
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/border.js +93 -240
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +4 -4
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/custom-class-name.native.js +3 -4
- package/build-module/hooks/custom-class-name.native.js.map +1 -1
- package/build-module/hooks/dimensions.js +75 -187
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +86 -24
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/gap.js +0 -183
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +33 -27
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +4 -143
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +4 -143
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/supports.js +7 -1
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +54 -66
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +96 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +6 -2
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +1 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +28 -14
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +28 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +53 -45
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +22 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +49 -10
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +39 -27
- package/build-style/style.css +39 -27
- package/package.json +31 -31
- package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
- package/src/components/block-inspector/index.js +11 -14
- package/src/components/block-inspector/style.scss +3 -0
- package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
- package/src/components/block-list/block-invalid-warning.js +72 -64
- package/src/components/block-lock/modal.js +1 -0
- package/src/components/block-lock/style.scss +0 -9
- package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +35 -17
- package/src/components/block-preview/test/index.js +0 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/src/components/block-settings-menu-controls/index.js +2 -1
- package/src/components/block-styles/index.js +5 -1
- package/src/components/block-styles/style.scss +2 -2
- package/src/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/src/components/child-layout-control/index.js +106 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +17 -15
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +48 -38
- package/src/components/date-format-picker/index.js +6 -8
- package/src/components/date-format-picker/style.scss +0 -5
- package/src/components/global-styles/border-panel.js +285 -0
- package/src/components/global-styles/dimensions-panel.js +627 -0
- package/src/components/global-styles/hooks.js +160 -44
- package/src/components/global-styles/index.js +7 -1
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/typography-panel.js +81 -9
- package/src/components/global-styles/use-global-styles-output.js +17 -16
- package/src/components/global-styles/utils.js +2 -0
- package/src/components/index.native.js +5 -0
- package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
- package/src/components/inserter/index.js +30 -11
- package/src/components/inserter/media-tab/hooks.js +9 -8
- package/src/components/inserter/media-tab/media-list.js +3 -122
- package/src/components/inserter/media-tab/media-preview.js +268 -0
- package/src/components/inserter/menu.js +0 -1
- package/src/components/inserter/quick-inserter.js +2 -0
- package/src/components/inserter/search-results.js +7 -1
- package/src/components/inserter/style.scss +25 -0
- package/src/components/inserter/tabs.js +1 -9
- package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
- package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
- package/src/components/inspector-controls/fill.js +32 -8
- package/src/components/link-control/index.js +1 -1
- package/src/components/link-control/search-item.js +3 -1
- package/src/components/link-control/settings-drawer.js +2 -1
- package/src/components/link-control/settings.js +1 -0
- package/src/components/link-control/style.scss +18 -12
- package/src/components/link-control/test/index.js +3 -5
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/branch.js +1 -2
- package/src/components/list-view/expander.js +1 -0
- package/src/components/list-view/leaf.js +43 -29
- package/src/components/list-view/use-block-selection.js +0 -2
- package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
- package/src/components/media-replace-flow/style.scss +7 -9
- package/src/components/off-canvas-editor/appender.js +44 -21
- package/src/components/off-canvas-editor/branch.js +4 -1
- package/src/components/off-canvas-editor/index.js +7 -1
- package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
- package/src/components/provider/use-block-sync.js +21 -4
- package/src/components/responsive-block-control/index.js +1 -0
- package/src/components/rich-text/format-toolbar-container.js +1 -7
- package/src/components/rich-text/index.js +8 -44
- package/src/components/rich-text/use-delete.js +59 -0
- package/src/components/rich-text/use-input-rules.js +13 -5
- package/src/components/spacing-sizes-control/style.scss +1 -1
- package/src/components/url-popover/stories/index.js +1 -0
- package/src/components/url-popover/test/index.js +0 -2
- package/src/components/writing-flow/use-selection-observer.js +5 -1
- package/src/hooks/align.js +1 -1
- package/src/hooks/border.js +94 -225
- package/src/hooks/custom-class-name.js +4 -4
- package/src/hooks/custom-class-name.native.js +3 -4
- package/src/hooks/dimensions.js +85 -269
- package/src/hooks/duotone.js +100 -30
- package/src/hooks/gap.js +0 -208
- package/src/hooks/layout.js +38 -22
- package/src/hooks/margin.js +1 -164
- package/src/hooks/padding.js +1 -163
- package/src/hooks/supports.js +6 -0
- package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
- package/src/hooks/test/duotone.js +102 -0
- package/src/hooks/test/style.js +2 -1
- package/src/hooks/test/use-typography-props.js +2 -0
- package/src/hooks/typography.js +68 -88
- package/src/hooks/utils.js +126 -0
- package/src/layouts/constrained.js +23 -17
- package/src/layouts/flex.js +1 -0
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +16 -6
- package/src/store/defaults.js +14 -1
- package/src/store/reducer.js +68 -43
- package/src/store/selectors.js +28 -4
- package/src/store/test/actions.js +4 -2
- package/src/utils/parse-css-unit-to-px.js +48 -13
- package/src/utils/test/parse-css-unit-to-px.js +13 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build/hooks/border-radius.js +0 -100
- package/build/hooks/border-radius.js.map +0 -1
- package/build/hooks/child-layout.js +0 -213
- package/build/hooks/child-layout.js.map +0 -1
- package/build/hooks/min-height.js +0 -139
- package/build/hooks/min-height.js.map +0 -1
- package/build-module/hooks/border-radius.js +0 -84
- package/build-module/hooks/border-radius.js.map +0 -1
- package/build-module/hooks/child-layout.js +0 -193
- package/build-module/hooks/child-layout.js.map +0 -1
- package/build-module/hooks/min-height.js +0 -116
- package/build-module/hooks/min-height.js.map +0 -1
- package/src/hooks/border-radius.js +0 -70
- package/src/hooks/child-layout.js +0 -195
- package/src/hooks/min-height.js +0 -104
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"names":["FontSizePicker","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextTransformControl","TextDecorationControl","getValueFromVariable","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasFontSize","useHasFontSizeControl","disableCustomFontSizes","typography","customFontSize","fontSizesPerOrigin","fontSizes","custom","theme","default","length","fontFamiliesPerOrigin","fontFamilies","lineHeight","hasFontStyles","fontStyle","hasFontWeights","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textDecoration","TypographyToolsPanel","props","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","value","onChange","inheritedValue","panelId","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","setFontFamily","newValue","slug","find","f","resetFontFamily","undefined","hasFontSizeEnabled","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","resetAll"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFontSizePicker,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport FontFamilyControl from '../font-family';\nimport FontAppearanceControl from '../font-appearance-control';\nimport LineHeightControl from '../line-height-control';\nimport LetterSpacingControl from '../letter-spacing-control';\nimport TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport { getValueFromVariable } from './utils';\n\nexport function useHasTypographyPanel( settings ) {\n\tconst hasFontFamily = useHasFontFamilyControl( settings );\n\tconst hasLineHeight = useHasLineHeightControl( settings );\n\tconst hasFontAppearance = useHasAppearanceControl( settings );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( settings );\n\tconst hasTextTransform = useHasTextTransformControl( settings );\n\tconst hasTextDecoration = useHasTextDecorationControl( settings );\n\tconst hasFontSize = useHasFontSizeControl( settings );\n\n\treturn (\n\t\thasFontFamily ||\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes =\n\t\tfontSizesPerOrigin?.custom ??\n\t\tfontSizesPerOrigin?.theme ??\n\t\tfontSizesPerOrigin.default;\n\treturn !! fontSizes?.length || ! disableCustomFontSizes;\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies =\n\t\tfontFamiliesPerOrigin?.custom ??\n\t\tfontFamiliesPerOrigin?.theme ??\n\t\tfontFamiliesPerOrigin?.default;\n\treturn !! fontFamilies?.length;\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! hasFontWeights ) {\n\t\treturn __( 'Font style' );\n\t}\n\treturn __( 'Appearance' );\n}\n\nfunction useHasLetterSpacingControl( settings ) {\n\treturn settings?.typography?.letterSpacing;\n}\n\nfunction useHasTextTransformControl( settings ) {\n\treturn settings?.typography?.textTransform;\n}\n\nfunction useHasTextDecorationControl( settings ) {\n\treturn settings?.typography?.textDecoration;\n}\n\nfunction TypographyToolsPanel( { ...props } ) {\n\treturn <ToolsPanel label={ __( 'Typography' ) } { ...props } />;\n}\n\nconst DEFAULT_CONTROLS = {\n\tfontFamily: true,\n\tfontSize: true,\n\tfontAppearance: true,\n\tlineHeight: true,\n\tletterSpacing: true,\n\ttextTransform: true,\n\ttextDecoration: true,\n};\n\nexport default function TypographyPanel( {\n\tas: Wrapper = TypographyToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Font Family\n\tconst hasFontFamilyEnabled = useHasFontFamilyControl( settings );\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies =\n\t\tfontFamiliesPerOrigin?.custom ??\n\t\tfontFamiliesPerOrigin?.theme ??\n\t\tfontFamiliesPerOrigin?.default;\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\n\tconst setFontFamily = ( newValue ) => {\n\t\tconst slug = fontFamilies?.find(\n\t\t\t( { fontFamily: f } ) => f === newValue\n\t\t)?.slug;\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontFamily: slug\n\t\t\t\t\t? `var:preset|font-family|${ slug }`\n\t\t\t\t\t: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontFamily = () => !! value?.typography?.fontFamily;\n\tconst resetFontFamily = () => setFontFamily( undefined );\n\n\t// Font Size\n\tconst hasFontSizeEnabled = useHasFontSizeControl( settings );\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes =\n\t\tfontSizesPerOrigin?.custom ??\n\t\tfontSizesPerOrigin?.theme ??\n\t\tfontSizesPerOrigin.default;\n\tconst fontSize = decodeValue( inheritedValue?.typography?.fontSize );\n\tconst setFontSize = ( newValue, metadata ) => {\n\t\tconst actualValue = !! metadata?.slug\n\t\t\t? `var:preset|font-size|${ metadata?.slug }`\n\t\t\t: newValue;\n\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontSize: actualValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontSize = () => !! value?.typography?.fontSize;\n\tconst resetFontSize = () => setFontSize( undefined );\n\n\t// Appearance\n\tconst hasAppearanceControl = useHasAppearanceControl( settings );\n\tconst appearanceControlLabel = useAppearanceControlLabel( settings );\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tconst fontStyle = decodeValue( inheritedValue?.typography?.fontStyle );\n\tconst fontWeight = decodeValue( inheritedValue?.typography?.fontWeight );\n\tconst setFontAppearance = ( {\n\t\tfontStyle: newFontStyle,\n\t\tfontWeight: newFontWeight,\n\t} ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontStyle: newFontStyle,\n\t\t\t\tfontWeight: newFontWeight,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontAppearance = () =>\n\t\t!! value?.typography?.fontStyle || !! value?.typography?.fontWeight;\n\tconst resetFontAppearance = () => {\n\t\tsetFontAppearance( {} );\n\t};\n\n\t// Line Height\n\tconst hasLineHeightEnabled = useHasLineHeightControl( settings );\n\tconst lineHeight = decodeValue( inheritedValue?.typography?.lineHeight );\n\tconst setLineHeight = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tlineHeight: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasLineHeight = () => !! value?.typography?.lineHeight;\n\tconst resetLineHeight = () => setLineHeight( undefined );\n\n\t// Letter Spacing\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( settings );\n\tconst letterSpacing = decodeValue(\n\t\tinheritedValue?.typography?.letterSpacing\n\t);\n\tconst setLetterSpacing = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tletterSpacing: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasLetterSpacing = () => !! value?.typography?.letterSpacing;\n\tconst resetLetterSpacing = () => setLetterSpacing( undefined );\n\n\t// Text Transform\n\tconst hasTextTransformControl = useHasTextTransformControl( settings );\n\tconst textTransform = decodeValue(\n\t\tinheritedValue?.typography?.textTransform\n\t);\n\tconst setTextTransform = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\ttextTransform: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasTextTransform = () => !! value?.typography?.textTransform;\n\tconst resetTextTransform = () => setTextTransform( undefined );\n\n\t// Text Decoration\n\tconst hasTextDecorationControl = useHasTextDecorationControl( settings );\n\tconst textDecoration = decodeValue(\n\t\tinheritedValue?.typography?.textDecoration\n\t);\n\tconst setTextDecoration = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\ttextDecoration: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasTextDecoration = () => !! value?.typography?.textDecoration;\n\tconst resetTextDecoration = () => setTextDecoration( undefined );\n\n\tconst resetAll = () => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Wrapper resetAll={ resetAll }>\n\t\t\t{ hasFontFamilyEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font family' ) }\n\t\t\t\t\thasValue={ hasFontFamily }\n\t\t\t\t\tonDeselect={ resetFontFamily }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontFamily }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\tonChange={ setFontFamily }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\thasValue={ hasFontSize }\n\t\t\t\t\tonDeselect={ resetFontSize }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\twithReset={ false }\n\t\t\t\t\t\twithSlider\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasAppearanceControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ appearanceControlLabel }\n\t\t\t\t\thasValue={ hasFontAppearance }\n\t\t\t\t\tonDeselect={ resetFontAppearance }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontAppearance }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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={ setFontAppearance }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\t\thasValue={ hasLineHeight }\n\t\t\t\t\tonDeselect={ resetLineHeight }\n\t\t\t\t\tisShownByDefault={ defaultControls.lineHeight }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Letter spacing' ) }\n\t\t\t\t\thasValue={ hasLetterSpacing }\n\t\t\t\t\tonDeselect={ resetLetterSpacing }\n\t\t\t\t\tisShownByDefault={ defaultControls.letterSpacing }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextDecorationControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Text decoration' ) }\n\t\t\t\t\thasValue={ hasTextDecoration }\n\t\t\t\t\tonDeselect={ resetTextDecoration }\n\t\t\t\t\tisShownByDefault={ defaultControls.textDecoration }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextDecorationControl\n\t\t\t\t\t\tvalue={ textDecoration }\n\t\t\t\t\t\tonChange={ setTextDecoration }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextTransformControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Letter case' ) }\n\t\t\t\t\thasValue={ hasTextTransform }\n\t\t\t\t\tonDeselect={ resetTextTransform }\n\t\t\t\t\tisShownByDefault={ defaultControls.textTransform }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextTransformControl\n\t\t\t\t\t\tvalue={ textTransform }\n\t\t\t\t\t\tonChange={ setTextTransform }\n\t\t\t\t\t\tshowNone\n\t\t\t\t\t\tisBlock\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</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/typography-panel.js"],"names":["FontSizePicker","__experimentalNumberControl","NumberControl","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__","useCallback","FontFamilyControl","FontAppearanceControl","LineHeightControl","LetterSpacingControl","TextTransformControl","TextDecorationControl","getValueFromVariable","MIN_TEXT_COLUMNS","MAX_TEXT_COLUMNS","useHasTypographyPanel","settings","hasFontFamily","useHasFontFamilyControl","hasLineHeight","useHasLineHeightControl","hasFontAppearance","useHasAppearanceControl","hasLetterSpacing","useHasLetterSpacingControl","hasTextTransform","useHasTextTransformControl","hasTextDecoration","useHasTextDecorationControl","hasTextColumns","useHasTextColumnsControl","hasFontSize","useHasFontSizeControl","disableCustomFontSizes","typography","customFontSize","fontSizesPerOrigin","fontSizes","custom","theme","default","length","fontFamiliesPerOrigin","fontFamilies","lineHeight","hasFontStyles","fontStyle","hasFontWeights","fontWeight","useAppearanceControlLabel","letterSpacing","textTransform","textDecoration","textColumns","TypographyToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","fontFamily","fontSize","fontAppearance","TypographyPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasFontFamilyEnabled","setFontFamily","newValue","slug","find","f","resetFontFamily","undefined","hasFontSizeEnabled","setFontSize","metadata","actualValue","resetFontSize","hasAppearanceControl","appearanceControlLabel","setFontAppearance","newFontStyle","newFontWeight","resetFontAppearance","hasLineHeightEnabled","setLineHeight","resetLineHeight","hasLetterSpacingControl","setLetterSpacing","resetLetterSpacing","hasTextColumnsControl","setTextColumns","resetTextColumns","hasTextTransformControl","setTextTransform","resetTextTransform","hasTextDecorationControl","setTextDecoration","resetTextDecoration","previousValue"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFontSizePicker,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport FontFamilyControl from '../font-family';\nimport FontAppearanceControl from '../font-appearance-control';\nimport LineHeightControl from '../line-height-control';\nimport LetterSpacingControl from '../letter-spacing-control';\nimport TextTransformControl from '../text-transform-control';\nimport TextDecorationControl from '../text-decoration-control';\nimport { getValueFromVariable } from './utils';\n\nconst MIN_TEXT_COLUMNS = 1;\nconst MAX_TEXT_COLUMNS = 6;\n\nexport function useHasTypographyPanel( settings ) {\n\tconst hasFontFamily = useHasFontFamilyControl( settings );\n\tconst hasLineHeight = useHasLineHeightControl( settings );\n\tconst hasFontAppearance = useHasAppearanceControl( settings );\n\tconst hasLetterSpacing = useHasLetterSpacingControl( settings );\n\tconst hasTextTransform = useHasTextTransformControl( settings );\n\tconst hasTextDecoration = useHasTextDecorationControl( settings );\n\tconst hasTextColumns = useHasTextColumnsControl( settings );\n\tconst hasFontSize = useHasFontSizeControl( settings );\n\n\treturn (\n\t\thasFontFamily ||\n\t\thasLineHeight ||\n\t\thasFontAppearance ||\n\t\thasLetterSpacing ||\n\t\thasTextTransform ||\n\t\thasFontSize ||\n\t\thasTextDecoration ||\n\t\thasTextColumns\n\t);\n}\n\nfunction useHasFontSizeControl( settings ) {\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes =\n\t\tfontSizesPerOrigin?.custom ??\n\t\tfontSizesPerOrigin?.theme ??\n\t\tfontSizesPerOrigin.default;\n\treturn !! fontSizes?.length || ! disableCustomFontSizes;\n}\n\nfunction useHasFontFamilyControl( settings ) {\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies =\n\t\tfontFamiliesPerOrigin?.custom ??\n\t\tfontFamiliesPerOrigin?.theme ??\n\t\tfontFamiliesPerOrigin?.default;\n\treturn !! fontFamilies?.length;\n}\n\nfunction useHasLineHeightControl( settings ) {\n\treturn settings?.typography?.lineHeight;\n}\n\nfunction useHasAppearanceControl( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\treturn hasFontStyles || hasFontWeights;\n}\n\nfunction useAppearanceControlLabel( settings ) {\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\tif ( ! hasFontWeights ) {\n\t\treturn __( 'Font style' );\n\t}\n\treturn __( 'Appearance' );\n}\n\nfunction useHasLetterSpacingControl( settings ) {\n\treturn settings?.typography?.letterSpacing;\n}\n\nfunction useHasTextTransformControl( settings ) {\n\treturn settings?.typography?.textTransform;\n}\n\nfunction useHasTextDecorationControl( settings ) {\n\treturn settings?.typography?.textDecoration;\n}\n\nfunction useHasTextColumnsControl( settings ) {\n\treturn settings?.typography?.textColumns;\n}\n\nfunction TypographyToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Typography' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tfontFamily: true,\n\tfontSize: true,\n\tfontAppearance: true,\n\tlineHeight: true,\n\tletterSpacing: true,\n\ttextTransform: true,\n\ttextDecoration: true,\n\ttextColumns: true,\n};\n\nexport default function TypographyPanel( {\n\tas: Wrapper = TypographyToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Font Family\n\tconst hasFontFamilyEnabled = useHasFontFamilyControl( settings );\n\tconst fontFamiliesPerOrigin = settings?.typography?.fontFamilies;\n\tconst fontFamilies =\n\t\tfontFamiliesPerOrigin?.custom ??\n\t\tfontFamiliesPerOrigin?.theme ??\n\t\tfontFamiliesPerOrigin?.default;\n\tconst fontFamily = decodeValue( inheritedValue?.typography?.fontFamily );\n\tconst setFontFamily = ( newValue ) => {\n\t\tconst slug = fontFamilies?.find(\n\t\t\t( { fontFamily: f } ) => f === newValue\n\t\t)?.slug;\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontFamily: slug\n\t\t\t\t\t? `var:preset|font-family|${ slug }`\n\t\t\t\t\t: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontFamily = () => !! value?.typography?.fontFamily;\n\tconst resetFontFamily = () => setFontFamily( undefined );\n\n\t// Font Size\n\tconst hasFontSizeEnabled = useHasFontSizeControl( settings );\n\tconst disableCustomFontSizes = ! settings?.typography?.customFontSize;\n\tconst fontSizesPerOrigin = settings?.typography?.fontSizes ?? {};\n\tconst fontSizes =\n\t\tfontSizesPerOrigin?.custom ??\n\t\tfontSizesPerOrigin?.theme ??\n\t\tfontSizesPerOrigin.default;\n\tconst fontSize = decodeValue( inheritedValue?.typography?.fontSize );\n\tconst setFontSize = ( newValue, metadata ) => {\n\t\tconst actualValue = !! metadata?.slug\n\t\t\t? `var:preset|font-size|${ metadata?.slug }`\n\t\t\t: newValue;\n\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontSize: actualValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontSize = () => !! value?.typography?.fontSize;\n\tconst resetFontSize = () => setFontSize( undefined );\n\n\t// Appearance\n\tconst hasAppearanceControl = useHasAppearanceControl( settings );\n\tconst appearanceControlLabel = useAppearanceControlLabel( settings );\n\tconst hasFontStyles = settings?.typography?.fontStyle;\n\tconst hasFontWeights = settings?.typography?.fontWeight;\n\tconst fontStyle = decodeValue( inheritedValue?.typography?.fontStyle );\n\tconst fontWeight = decodeValue( inheritedValue?.typography?.fontWeight );\n\tconst setFontAppearance = ( {\n\t\tfontStyle: newFontStyle,\n\t\tfontWeight: newFontWeight,\n\t} ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tfontStyle: newFontStyle,\n\t\t\t\tfontWeight: newFontWeight,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasFontAppearance = () =>\n\t\t!! value?.typography?.fontStyle || !! value?.typography?.fontWeight;\n\tconst resetFontAppearance = () => {\n\t\tsetFontAppearance( {} );\n\t};\n\n\t// Line Height\n\tconst hasLineHeightEnabled = useHasLineHeightControl( settings );\n\tconst lineHeight = decodeValue( inheritedValue?.typography?.lineHeight );\n\tconst setLineHeight = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tlineHeight: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasLineHeight = () => !! value?.typography?.lineHeight;\n\tconst resetLineHeight = () => setLineHeight( undefined );\n\n\t// Letter Spacing\n\tconst hasLetterSpacingControl = useHasLetterSpacingControl( settings );\n\tconst letterSpacing = decodeValue(\n\t\tinheritedValue?.typography?.letterSpacing\n\t);\n\tconst setLetterSpacing = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\tletterSpacing: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasLetterSpacing = () => !! value?.typography?.letterSpacing;\n\tconst resetLetterSpacing = () => setLetterSpacing( undefined );\n\n\t// Text Columns\n\tconst hasTextColumnsControl = useHasTextColumnsControl( settings );\n\tconst textColumns = decodeValue( inheritedValue?.typography?.textColumns );\n\tconst setTextColumns = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\ttextColumns: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasTextColumns = () => !! value?.typography?.textColumns;\n\tconst resetTextColumns = () => setTextColumns( undefined );\n\n\t// Text Transform\n\tconst hasTextTransformControl = useHasTextTransformControl( settings );\n\tconst textTransform = decodeValue(\n\t\tinheritedValue?.typography?.textTransform\n\t);\n\tconst setTextTransform = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\ttextTransform: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasTextTransform = () => !! value?.typography?.textTransform;\n\tconst resetTextTransform = () => setTextTransform( undefined );\n\n\t// Text Decoration\n\tconst hasTextDecorationControl = useHasTextDecorationControl( settings );\n\tconst textDecoration = decodeValue(\n\t\tinheritedValue?.typography?.textDecoration\n\t);\n\tconst setTextDecoration = ( newValue ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\ttypography: {\n\t\t\t\t...value?.typography,\n\t\t\t\ttextDecoration: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\tconst hasTextDecoration = () => !! value?.typography?.textDecoration;\n\tconst resetTextDecoration = () => setTextDecoration( undefined );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\ttypography: {},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ hasFontFamilyEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font family' ) }\n\t\t\t\t\thasValue={ hasFontFamily }\n\t\t\t\t\tonDeselect={ resetFontFamily }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontFamily }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontFamilyControl\n\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\tonChange={ setFontFamily }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasFontSizeEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\thasValue={ hasFontSize }\n\t\t\t\t\tonDeselect={ resetFontSize }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontSize }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<FontSizePicker\n\t\t\t\t\t\tvalue={ fontSize }\n\t\t\t\t\t\tonChange={ setFontSize }\n\t\t\t\t\t\tfontSizes={ fontSizes }\n\t\t\t\t\t\tdisableCustomFontSizes={ disableCustomFontSizes }\n\t\t\t\t\t\twithReset={ false }\n\t\t\t\t\t\twithSlider\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasAppearanceControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ appearanceControlLabel }\n\t\t\t\t\thasValue={ hasFontAppearance }\n\t\t\t\t\tonDeselect={ resetFontAppearance }\n\t\t\t\t\tisShownByDefault={ defaultControls.fontAppearance }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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={ setFontAppearance }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLineHeightEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Line height' ) }\n\t\t\t\t\thasValue={ hasLineHeight }\n\t\t\t\t\tonDeselect={ resetLineHeight }\n\t\t\t\t\tisShownByDefault={ defaultControls.lineHeight }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasLetterSpacingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Letter spacing' ) }\n\t\t\t\t\thasValue={ hasLetterSpacing }\n\t\t\t\t\tonDeselect={ resetLetterSpacing }\n\t\t\t\t\tisShownByDefault={ defaultControls.letterSpacing }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextColumnsControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Text columns' ) }\n\t\t\t\t\thasValue={ hasTextColumns }\n\t\t\t\t\tonDeselect={ resetTextColumns }\n\t\t\t\t\tisShownByDefault={ defaultControls.textColumns }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<NumberControl\n\t\t\t\t\t\tlabel={ __( 'Text columns' ) }\n\t\t\t\t\t\tmax={ MAX_TEXT_COLUMNS }\n\t\t\t\t\t\tmin={ MIN_TEXT_COLUMNS }\n\t\t\t\t\t\tonChange={ setTextColumns }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tspinControls=\"custom\"\n\t\t\t\t\t\tvalue={ textColumns }\n\t\t\t\t\t\tinitialPosition={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextDecorationControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Text decoration' ) }\n\t\t\t\t\thasValue={ hasTextDecoration }\n\t\t\t\t\tonDeselect={ resetTextDecoration }\n\t\t\t\t\tisShownByDefault={ defaultControls.textDecoration }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextDecorationControl\n\t\t\t\t\t\tvalue={ textDecoration }\n\t\t\t\t\t\tonChange={ setTextDecoration }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasTextTransformControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Letter case' ) }\n\t\t\t\t\thasValue={ hasTextTransform }\n\t\t\t\t\tonDeselect={ resetTextTransform }\n\t\t\t\t\tisShownByDefault={ defaultControls.textTransform }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<TextTransformControl\n\t\t\t\t\t\tvalue={ textTransform }\n\t\t\t\t\t\tonChange={ setTextTransform }\n\t\t\t\t\t\tshowNone\n\t\t\t\t\t\tisBlock\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</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}
|
|
@@ -84,13 +84,14 @@ function getPresetsDeclarations() {
|
|
|
84
84
|
/**
|
|
85
85
|
* Transform given preset tree into a set of preset class declarations.
|
|
86
86
|
*
|
|
87
|
-
* @param {string} blockSelector
|
|
88
|
-
* @param {Object}
|
|
87
|
+
* @param {?string} blockSelector
|
|
88
|
+
* @param {Object} blockPresets
|
|
89
89
|
* @return {string} CSS declarations for the preset classes.
|
|
90
90
|
*/
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
function getPresetsClasses(
|
|
93
|
+
function getPresetsClasses() {
|
|
94
|
+
let blockSelector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '*';
|
|
94
95
|
let blockPresets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
95
96
|
return PRESET_METADATA.reduce((declarations, _ref2) => {
|
|
96
97
|
let {
|
|
@@ -357,7 +358,7 @@ export function getLayoutStyles(_ref6) {
|
|
|
357
358
|
// For fallback gap styles, use lower specificity, to ensure styles do not unintentionally override theme styles.
|
|
358
359
|
combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `:where(.${className}${(spacingStyle === null || spacingStyle === void 0 ? void 0 : spacingStyle.selector) || ''})` : `:where(${selector}.${className}${(spacingStyle === null || spacingStyle === void 0 ? void 0 : spacingStyle.selector) || ''})`;
|
|
359
360
|
} else {
|
|
360
|
-
combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `${selector} .${className}${(spacingStyle === null || spacingStyle === void 0 ? void 0 : spacingStyle.selector) || ''}` : `${selector}
|
|
361
|
+
combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `${selector} .${className}${(spacingStyle === null || spacingStyle === void 0 ? void 0 : spacingStyle.selector) || ''}` : `${selector}-${className}${selector}-${className}${(spacingStyle === null || spacingStyle === void 0 ? void 0 : spacingStyle.selector) || ''}`;
|
|
361
362
|
}
|
|
362
363
|
|
|
363
364
|
ruleset += `${combinedSelector} { ${declarations.join('; ')}; }`;
|
|
@@ -432,15 +433,15 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
432
433
|
}
|
|
433
434
|
|
|
434
435
|
Object.entries(ELEMENTS).forEach(_ref12 => {
|
|
435
|
-
var _tree$styles;
|
|
436
|
+
var _tree$styles, _tree$styles$elements;
|
|
436
437
|
|
|
437
438
|
let [name, selector] = _ref12;
|
|
438
439
|
|
|
439
|
-
if (!!((_tree$styles = tree.styles) !== null && _tree$styles !== void 0 && _tree$styles.elements[name])) {
|
|
440
|
-
var _tree$styles2;
|
|
440
|
+
if (!!((_tree$styles = tree.styles) !== null && _tree$styles !== void 0 && (_tree$styles$elements = _tree$styles.elements) !== null && _tree$styles$elements !== void 0 && _tree$styles$elements[name])) {
|
|
441
|
+
var _tree$styles2, _tree$styles2$element;
|
|
441
442
|
|
|
442
443
|
nodes.push({
|
|
443
|
-
styles: (_tree$styles2 = tree.styles) === null || _tree$styles2 === void 0 ? void 0 : _tree$styles2.elements[name],
|
|
444
|
+
styles: (_tree$styles2 = tree.styles) === null || _tree$styles2 === void 0 ? void 0 : (_tree$styles2$element = _tree$styles2.elements) === null || _tree$styles2$element === void 0 ? void 0 : _tree$styles2$element[name],
|
|
444
445
|
selector
|
|
445
446
|
});
|
|
446
447
|
}
|
|
@@ -461,11 +462,13 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
461
462
|
}
|
|
462
463
|
|
|
463
464
|
if (!!blockStyles && !!(blockSelectors !== null && blockSelectors !== void 0 && (_blockSelectors$block = blockSelectors[blockName]) !== null && _blockSelectors$block !== void 0 && _blockSelectors$block.selector)) {
|
|
465
|
+
var _blockSelectors$block2;
|
|
466
|
+
|
|
464
467
|
nodes.push({
|
|
465
468
|
duotoneSelector: blockSelectors[blockName].duotoneSelector,
|
|
466
469
|
fallbackGapValue: blockSelectors[blockName].fallbackGapValue,
|
|
467
470
|
hasLayoutSupport: blockSelectors[blockName].hasLayoutSupport,
|
|
468
|
-
selector: blockSelectors[blockName].selector,
|
|
471
|
+
selector: (_blockSelectors$block2 = blockSelectors[blockName]) === null || _blockSelectors$block2 === void 0 ? void 0 : _blockSelectors$block2.selector,
|
|
469
472
|
styles: blockStyles,
|
|
470
473
|
featureSelectors: blockSelectors[blockName].featureSelectors,
|
|
471
474
|
styleVariationSelectors: blockSelectors[blockName].styleVariationSelectors
|
|
@@ -476,9 +479,11 @@ export const getNodesWithStyles = (tree, blockSelectors) => {
|
|
|
476
479
|
let [elementName, value] = _ref14;
|
|
477
480
|
|
|
478
481
|
if (!!value && !!(blockSelectors !== null && blockSelectors !== void 0 && blockSelectors[blockName]) && !!(ELEMENTS !== null && ELEMENTS !== void 0 && ELEMENTS[elementName])) {
|
|
482
|
+
var _blockSelectors$block3;
|
|
483
|
+
|
|
479
484
|
nodes.push({
|
|
480
485
|
styles: value,
|
|
481
|
-
selector: blockSelectors[blockName].selector.split(',').map(sel => {
|
|
486
|
+
selector: (_blockSelectors$block3 = blockSelectors[blockName]) === null || _blockSelectors$block3 === void 0 ? void 0 : _blockSelectors$block3.selector.split(',').map(sel => {
|
|
482
487
|
const elementSelectors = ELEMENTS[elementName].split(',');
|
|
483
488
|
return elementSelectors.map(elementSelector => sel + ' ' + elementSelector);
|
|
484
489
|
}).join(',')
|
|
@@ -531,10 +536,12 @@ export const getNodesWithSettings = (tree, blockSelectors) => {
|
|
|
531
536
|
const blockCustom = node.custom;
|
|
532
537
|
|
|
533
538
|
if (!isEmpty(blockPresets) || !!blockCustom) {
|
|
539
|
+
var _blockSelectors$block4;
|
|
540
|
+
|
|
534
541
|
nodes.push({
|
|
535
542
|
presets: blockPresets,
|
|
536
543
|
custom: blockCustom,
|
|
537
|
-
selector: blockSelectors[blockName].selector
|
|
544
|
+
selector: (_blockSelectors$block4 = blockSelectors[blockName]) === null || _blockSelectors$block4 === void 0 ? void 0 : _blockSelectors$block4.selector
|
|
538
545
|
});
|
|
539
546
|
}
|
|
540
547
|
});
|
|
@@ -690,7 +697,7 @@ export const toStyles = function (tree, blockSelectors, hasBlockGapSupport, hasF
|
|
|
690
697
|
const duotoneDeclarations = getStylesDeclarations(duotoneStyles);
|
|
691
698
|
|
|
692
699
|
if (duotoneDeclarations.length > 0) {
|
|
693
|
-
ruleset = ruleset + `${duotoneSelector}{${duotoneDeclarations.join(';')};}`;
|
|
700
|
+
ruleset = ruleset + `${scopeSelector(selector, duotoneSelector)}{${duotoneDeclarations.join(';')};}`;
|
|
694
701
|
}
|
|
695
702
|
} // Process blockGap and layout styles.
|
|
696
703
|
|
|
@@ -838,9 +845,9 @@ export const getBlockSelectors = (blockTypes, getBlockStyles) => {
|
|
|
838
845
|
*/
|
|
839
846
|
|
|
840
847
|
function updateConfigWithSeparator(config) {
|
|
841
|
-
var _config$styles, _config$styles2, _config$styles2$block, _config$styles3, _config$styles3$block, _config$styles4, _config$styles4$block;
|
|
848
|
+
var _config$styles, _config$styles$blocks, _config$styles2, _config$styles2$block, _config$styles2$block2, _config$styles3, _config$styles3$block, _config$styles3$block2, _config$styles4, _config$styles4$block, _config$styles4$block2;
|
|
842
849
|
|
|
843
|
-
const needsSeparatorStyleUpdate = ((_config$styles = config.styles) === null || _config$styles === void 0 ? void 0 : _config$styles.blocks['core/separator']) && ((_config$styles2 = config.styles) === null || _config$styles2 === void 0 ? void 0 : (_config$styles2$block = _config$styles2.blocks['core/separator'].color) === null || _config$styles2$
|
|
850
|
+
const needsSeparatorStyleUpdate = ((_config$styles = config.styles) === null || _config$styles === void 0 ? void 0 : (_config$styles$blocks = _config$styles.blocks) === null || _config$styles$blocks === void 0 ? void 0 : _config$styles$blocks['core/separator']) && ((_config$styles2 = config.styles) === null || _config$styles2 === void 0 ? void 0 : (_config$styles2$block = _config$styles2.blocks) === null || _config$styles2$block === void 0 ? void 0 : (_config$styles2$block2 = _config$styles2$block['core/separator'].color) === null || _config$styles2$block2 === void 0 ? void 0 : _config$styles2$block2.background) && !((_config$styles3 = config.styles) !== null && _config$styles3 !== void 0 && (_config$styles3$block = _config$styles3.blocks) !== null && _config$styles3$block !== void 0 && (_config$styles3$block2 = _config$styles3$block['core/separator'].color) !== null && _config$styles3$block2 !== void 0 && _config$styles3$block2.text) && !((_config$styles4 = config.styles) !== null && _config$styles4 !== void 0 && (_config$styles4$block = _config$styles4.blocks) !== null && _config$styles4$block !== void 0 && (_config$styles4$block2 = _config$styles4$block['core/separator'].border) !== null && _config$styles4$block2 !== void 0 && _config$styles4$block2.color);
|
|
844
851
|
|
|
845
852
|
if (needsSeparatorStyleUpdate) {
|
|
846
853
|
var _config$styles5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/use-global-styles-output.js"],"names":["get","isEmpty","kebabCase","set","__EXPERIMENTAL_STYLE_PROPERTY","STYLE_PROPERTY","__EXPERIMENTAL_ELEMENTS","ELEMENTS","getBlockTypes","store","blocksStore","useSelect","useContext","useMemo","getCSSRules","PRESET_METADATA","ROOT_BLOCK_SELECTOR","scopeSelector","getTypographyFontSizeValue","GlobalStylesContext","useGlobalSetting","PresetDuotoneFilter","getGapCSSValue","blockEditorStore","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","reduce","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","concatFeatureVariationSelectorString","featureSelector","styleVariationSelector","featureSelectors","combinedSelectors","trim","getStylesDeclarations","blockStyles","useRootPaddingAlign","tree","isRoot","output","entries","properties","useEngine","rootOnly","pathToValue","styleValue","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","size","settings","getLayoutStyles","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","fromEntries","elements","blocks","blockName","node","variations","variation","duotoneSelector","hasLayoutSupport","styleVariationSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","contentSize","wideSize","featureName","featureStyles","featureDeclarations","styleVariationName","styleVariationDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","getBlockStyles","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","blockStyleVariations","featureKey","undefined","updateConfigWithSeparator","config","needsSeparatorStyleUpdate","background","text","border","processCSSNesting","css","processedCSS","parts","part","useGlobalStylesOutput","merged","mergedConfig","select","getSettings","customProperties","globalStyles","filters","stylesheets","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty, kebabCase, 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\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { GlobalStylesContext } from './context';\nimport { useGlobalSetting } from './hooks';\nimport { PresetDuotoneFilter } from '../duotone/components';\nimport { getGapCSSValue } from '../../hooks/gap';\nimport { store as blockEditorStore } from '../../store';\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 PRESET_METADATA.reduce(\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 PRESET_METADATA.reduce(\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 * Gets variation selector string from feature selector.\n *\n * @param {string} featureSelector The feature selector.\n *\n * @param {string} styleVariationSelector The style variation selector.\n * @return {string} Combined selector string.\n *\n */\nfunction concatFeatureVariationSelectorString(\n\tfeatureSelector,\n\tstyleVariationSelector\n) {\n\tconst featureSelectors = featureSelector.split( ',' );\n\tconst combinedSelectors = [];\n\tfeatureSelectors.forEach( ( selector ) => {\n\t\tcombinedSelectors.push(\n\t\t\t`${ styleVariationSelector.trim() }${ selector.trim() }`\n\t\t);\n\t} );\n\treturn combinedSelectors.join( ', ' );\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 = Object.entries( STYLE_PROPERTY ).reduce(\n\t\t(\n\t\t\tdeclarations,\n\t\t\t[ key, { value, properties, useEngine, rootOnly } ]\n\t\t) => {\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\t// Calculate fluid typography rules where available.\n\t\tif ( cssProperty === 'font-size' ) {\n\t\t\t/*\n\t\t\t * getTypographyFontSizeValue() will check\n\t\t\t * if fluid typography has been activated and also\n\t\t\t * whether the incoming value can be converted to a fluid value.\n\t\t\t * Values that already have a \"clamp()\" function will not pass the test,\n\t\t\t * and therefore the original $value will be returned.\n\t\t\t */\n\t\t\truleValue = getTypographyFontSizeValue(\n\t\t\t\t{ size: ruleValue },\n\t\t\t\ttree?.settings?.typography\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\tObject.fromEntries(\n\t\t\tObject.entries( treeToPickFrom ?? {} ).filter( ( [ key ] ) =>\n\t\t\t\t[\n\t\t\t\t\t'border',\n\t\t\t\t\t'color',\n\t\t\t\t\t'dimensions',\n\t\t\t\t\t'spacing',\n\t\t\t\t\t'typography',\n\t\t\t\t\t'filter',\n\t\t\t\t\t'outline',\n\t\t\t\t\t'shadow',\n\t\t\t\t].includes( key )\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\n\t\t\tif ( node?.variations ) {\n\t\t\t\tconst variations = {};\n\t\t\t\tObject.keys( node.variations ).forEach( ( variation ) => {\n\t\t\t\t\tvariations[ variation ] = pickStyleKeys(\n\t\t\t\t\t\tnode.variations[ variation ]\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t\tblockStyles.variations = variations;\n\t\t\t}\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\tstyleVariationSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].styleVariationSelectors,\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\t/*\n\t\t * These rules reproduce the ones from https://github.com/WordPress/gutenberg/blob/79103f124925d1f457f627e154f52a56228ed5ad/lib/class-wp-theme-json-gutenberg.php#L2508\n\t\t * almost exactly, but for the selectors that target block wrappers in the front end. This code only runs in the editor, so it doesn't need those selectors.\n\t\t */\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(.wp-block:not(.alignfull),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(.wp-block:not(.alignfull),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\tstyleVariationSelectors,\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\tif ( styleVariationSelectors ) {\n\t\t\t\tObject.entries( styleVariationSelectors ).forEach(\n\t\t\t\t\t( [ styleVariationName, styleVariationSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.variations?.[ styleVariationName ] ) {\n\t\t\t\t\t\t\t// If the block uses any custom selectors for block support, add those first.\n\t\t\t\t\t\t\tif ( featureSelectors ) {\n\t\t\t\t\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tstyles?.variations?.[\n\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t]?.[ featureName ]\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t\t\t\t\t[ featureName ]:\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyles.variations[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t\t\t][ featureName ],\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\t\t\t\t\tgetStylesDeclarations(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfeatureStyles\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tdelete styles.variations[\n\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t][ featureName ];\n\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t!! featureDeclarations.length\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ concatFeatureVariationSelectorString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeatureSelector,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationSelector\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t\t\t\t\t}\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\t// Otherwise add regular selectors.\n\t\t\t\t\t\t\tconst styleVariationDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations(\n\t\t\t\t\t\t\t\t\tstyles?.variations?.[ styleVariationName ],\n\t\t\t\t\t\t\t\t\tstyleVariationSelector,\n\t\t\t\t\t\t\t\t\tuseRootPaddingAlign,\n\t\t\t\t\t\t\t\t\ttree\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( !! styleVariationDeclarations.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`${ styleVariationSelector }{${ styleVariationDeclarations.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, getBlockStyles ) => {\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\tconst blockStyleVariations = getBlockStyles( name );\n\t\tconst styleVariationSelectors = {};\n\t\tif ( blockStyleVariations?.length ) {\n\t\t\tblockStyleVariations.forEach( ( variation ) => {\n\t\t\t\tconst styleVariationSelector = `.is-style-${ variation.name }${ selector }`;\n\t\t\t\tstyleVariationSelectors[ variation.name ] =\n\t\t\t\t\tstyleVariationSelector;\n\t\t\t} );\n\t\t}\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\tstyleVariationSelectors: Object.keys( styleVariationSelectors )\n\t\t\t\t.length\n\t\t\t\t? styleVariationSelectors\n\t\t\t\t: undefined,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\n/**\n * If there is a separator block whose color is defined in theme.json via background,\n * update the separator color to the same value by using border color.\n *\n * @param {Object} config Theme.json configuration file object.\n * @return {Object} configTheme.json configuration file object updated.\n */\nfunction updateConfigWithSeparator( config ) {\n\tconst needsSeparatorStyleUpdate =\n\t\tconfig.styles?.blocks[ 'core/separator' ] &&\n\t\tconfig.styles?.blocks[ 'core/separator' ].color?.background &&\n\t\t! config.styles?.blocks[ 'core/separator' ].color?.text &&\n\t\t! config.styles?.blocks[ 'core/separator' ].border?.color;\n\tif ( needsSeparatorStyleUpdate ) {\n\t\treturn {\n\t\t\t...config,\n\t\t\tstyles: {\n\t\t\t\t...config.styles,\n\t\t\t\tblocks: {\n\t\t\t\t\t...config.styles.blocks,\n\t\t\t\t\t'core/separator': {\n\t\t\t\t\t\t...config.styles.blocks[ 'core/separator' ],\n\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t...config.styles.blocks[ 'core/separator' ].color,\n\t\t\t\t\t\t\ttext: config.styles?.blocks[ 'core/separator' ]\n\t\t\t\t\t\t\t\t.color.background,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\treturn config;\n}\n\nconst processCSSNesting = ( css, blockSelector ) => {\n\tlet processedCSS = '';\n\n\t// Split CSS nested rules.\n\tconst parts = css.split( '&' );\n\tparts.forEach( ( part ) => {\n\t\tprocessedCSS += ! part.includes( '{' )\n\t\t\t? blockSelector + '{' + part + '}' // If the part doesn't contain braces, it applies to the root level.\n\t\t\t: blockSelector + part; // Prepend the selector, which effectively replaces the \"&\" character.\n\t} );\n\treturn processedCSS;\n};\n\nexport function useGlobalStylesOutput() {\n\tlet { merged: mergedConfig } = useContext( GlobalStylesContext );\n\n\tconst [ blockGap ] = useGlobalSetting( '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\tconst getBlockStyles = useSelect( ( select ) => {\n\t\treturn select( blocksStore ).getBlockStyles;\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn [];\n\t\t}\n\t\tmergedConfig = updateConfigWithSeparator( mergedConfig );\n\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles\n\t\t);\n\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\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\t// Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor.\n\t\t\t{\n\t\t\t\tcss: mergedConfig.styles.css ?? '',\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t];\n\n\t\t// Loop through the blocks to check if there are custom CSS values.\n\t\t// If there are, get the block selector and push the selector together with\n\t\t// the CSS value to the 'stylesheets' array.\n\t\tgetBlockTypes().forEach( ( blockType ) => {\n\t\t\tif ( mergedConfig.styles.blocks[ blockType.name ]?.css ) {\n\t\t\t\tconst selector = blockSelectors[ blockType.name ].selector;\n\t\t\t\tstylesheets.push( {\n\t\t\t\t\tcss: processCSSNesting(\n\t\t\t\t\t\tmergedConfig.styles.blocks[ blockType.name ]?.css,\n\t\t\t\t\t\tselector\n\t\t\t\t\t),\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t} );\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/block-editor/src/components/global-styles/use-global-styles-output.js"],"names":["get","isEmpty","kebabCase","set","__EXPERIMENTAL_STYLE_PROPERTY","STYLE_PROPERTY","__EXPERIMENTAL_ELEMENTS","ELEMENTS","getBlockTypes","store","blocksStore","useSelect","useContext","useMemo","getCSSRules","PRESET_METADATA","ROOT_BLOCK_SELECTOR","scopeSelector","getTypographyFontSizeValue","GlobalStylesContext","useGlobalSetting","PresetDuotoneFilter","getGapCSSValue","blockEditorStore","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","reduce","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","concatFeatureVariationSelectorString","featureSelector","styleVariationSelector","featureSelectors","combinedSelectors","trim","getStylesDeclarations","blockStyles","useRootPaddingAlign","tree","isRoot","output","entries","properties","useEngine","rootOnly","pathToValue","styleValue","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","size","settings","getLayoutStyles","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","fromEntries","elements","blocks","blockName","node","variations","variation","duotoneSelector","hasLayoutSupport","styleVariationSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","contentSize","wideSize","featureName","featureStyles","featureDeclarations","styleVariationName","styleVariationDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","getBlockStyles","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","blockStyleVariations","featureKey","undefined","updateConfigWithSeparator","config","needsSeparatorStyleUpdate","background","text","border","processCSSNesting","css","processedCSS","parts","part","useGlobalStylesOutput","merged","mergedConfig","select","getSettings","customProperties","globalStyles","filters","stylesheets","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty, kebabCase, 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\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { GlobalStylesContext } from './context';\nimport { useGlobalSetting } from './hooks';\nimport { PresetDuotoneFilter } from '../duotone/components';\nimport { getGapCSSValue } from '../../hooks/gap';\nimport { store as blockEditorStore } from '../../store';\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 PRESET_METADATA.reduce(\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 PRESET_METADATA.reduce(\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 * Gets variation selector string from feature selector.\n *\n * @param {string} featureSelector The feature selector.\n *\n * @param {string} styleVariationSelector The style variation selector.\n * @return {string} Combined selector string.\n *\n */\nfunction concatFeatureVariationSelectorString(\n\tfeatureSelector,\n\tstyleVariationSelector\n) {\n\tconst featureSelectors = featureSelector.split( ',' );\n\tconst combinedSelectors = [];\n\tfeatureSelectors.forEach( ( selector ) => {\n\t\tcombinedSelectors.push(\n\t\t\t`${ styleVariationSelector.trim() }${ selector.trim() }`\n\t\t);\n\t} );\n\treturn combinedSelectors.join( ', ' );\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 = Object.entries( STYLE_PROPERTY ).reduce(\n\t\t(\n\t\t\tdeclarations,\n\t\t\t[ key, { value, properties, useEngine, rootOnly } ]\n\t\t) => {\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\t// Calculate fluid typography rules where available.\n\t\tif ( cssProperty === 'font-size' ) {\n\t\t\t/*\n\t\t\t * getTypographyFontSizeValue() will check\n\t\t\t * if fluid typography has been activated and also\n\t\t\t * whether the incoming value can be converted to a fluid value.\n\t\t\t * Values that already have a \"clamp()\" function will not pass the test,\n\t\t\t * and therefore the original $value will be returned.\n\t\t\t */\n\t\t\truleValue = getTypographyFontSizeValue(\n\t\t\t\t{ size: ruleValue },\n\t\t\t\ttree?.settings?.typography\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 }${ 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\tObject.fromEntries(\n\t\t\tObject.entries( treeToPickFrom ?? {} ).filter( ( [ key ] ) =>\n\t\t\t\t[\n\t\t\t\t\t'border',\n\t\t\t\t\t'color',\n\t\t\t\t\t'dimensions',\n\t\t\t\t\t'spacing',\n\t\t\t\t\t'typography',\n\t\t\t\t\t'filter',\n\t\t\t\t\t'outline',\n\t\t\t\t\t'shadow',\n\t\t\t\t].includes( key )\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\n\t\t\tif ( node?.variations ) {\n\t\t\t\tconst variations = {};\n\t\t\t\tObject.keys( node.variations ).forEach( ( variation ) => {\n\t\t\t\t\tvariations[ variation ] = pickStyleKeys(\n\t\t\t\t\t\tnode.variations[ variation ]\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t\tblockStyles.variations = variations;\n\t\t\t}\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\tstyleVariationSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].styleVariationSelectors,\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\t/*\n\t\t * These rules reproduce the ones from https://github.com/WordPress/gutenberg/blob/79103f124925d1f457f627e154f52a56228ed5ad/lib/class-wp-theme-json-gutenberg.php#L2508\n\t\t * almost exactly, but for the selectors that target block wrappers in the front end. This code only runs in the editor, so it doesn't need those selectors.\n\t\t */\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(.wp-block:not(.alignfull),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(.wp-block:not(.alignfull),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\tstyleVariationSelectors,\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\tif ( styleVariationSelectors ) {\n\t\t\t\tObject.entries( styleVariationSelectors ).forEach(\n\t\t\t\t\t( [ styleVariationName, styleVariationSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.variations?.[ styleVariationName ] ) {\n\t\t\t\t\t\t\t// If the block uses any custom selectors for block support, add those first.\n\t\t\t\t\t\t\tif ( featureSelectors ) {\n\t\t\t\t\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tstyles?.variations?.[\n\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t]?.[ featureName ]\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t\t\t\t\t[ featureName ]:\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyles.variations[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t\t\t][ featureName ],\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\t\t\t\t\tgetStylesDeclarations(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfeatureStyles\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tdelete styles.variations[\n\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationName\n\t\t\t\t\t\t\t\t\t\t\t][ featureName ];\n\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t!! featureDeclarations.length\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ concatFeatureVariationSelectorString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfeatureSelector,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationSelector\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t\t\t\t\t}\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\t// Otherwise add regular selectors.\n\t\t\t\t\t\t\tconst styleVariationDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations(\n\t\t\t\t\t\t\t\t\tstyles?.variations?.[ styleVariationName ],\n\t\t\t\t\t\t\t\t\tstyleVariationSelector,\n\t\t\t\t\t\t\t\t\tuseRootPaddingAlign,\n\t\t\t\t\t\t\t\t\ttree\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( !! styleVariationDeclarations.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`${ styleVariationSelector }{${ styleVariationDeclarations.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`${ scopeSelector(\n\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\tduotoneSelector\n\t\t\t\t\t\t) }{${ duotoneDeclarations.join( ';' ) };}`;\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, getBlockStyles ) => {\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\tconst blockStyleVariations = getBlockStyles( name );\n\t\tconst styleVariationSelectors = {};\n\t\tif ( blockStyleVariations?.length ) {\n\t\t\tblockStyleVariations.forEach( ( variation ) => {\n\t\t\t\tconst styleVariationSelector = `.is-style-${ variation.name }${ selector }`;\n\t\t\t\tstyleVariationSelectors[ variation.name ] =\n\t\t\t\t\tstyleVariationSelector;\n\t\t\t} );\n\t\t}\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\tstyleVariationSelectors: Object.keys( styleVariationSelectors )\n\t\t\t\t.length\n\t\t\t\t? styleVariationSelectors\n\t\t\t\t: undefined,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\n/**\n * If there is a separator block whose color is defined in theme.json via background,\n * update the separator color to the same value by using border color.\n *\n * @param {Object} config Theme.json configuration file object.\n * @return {Object} configTheme.json configuration file object updated.\n */\nfunction updateConfigWithSeparator( config ) {\n\tconst needsSeparatorStyleUpdate =\n\t\tconfig.styles?.blocks?.[ 'core/separator' ] &&\n\t\tconfig.styles?.blocks?.[ 'core/separator' ].color?.background &&\n\t\t! config.styles?.blocks?.[ 'core/separator' ].color?.text &&\n\t\t! config.styles?.blocks?.[ 'core/separator' ].border?.color;\n\tif ( needsSeparatorStyleUpdate ) {\n\t\treturn {\n\t\t\t...config,\n\t\t\tstyles: {\n\t\t\t\t...config.styles,\n\t\t\t\tblocks: {\n\t\t\t\t\t...config.styles.blocks,\n\t\t\t\t\t'core/separator': {\n\t\t\t\t\t\t...config.styles.blocks[ 'core/separator' ],\n\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t...config.styles.blocks[ 'core/separator' ].color,\n\t\t\t\t\t\t\ttext: config.styles?.blocks[ 'core/separator' ]\n\t\t\t\t\t\t\t\t.color.background,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\treturn config;\n}\n\nconst processCSSNesting = ( css, blockSelector ) => {\n\tlet processedCSS = '';\n\n\t// Split CSS nested rules.\n\tconst parts = css.split( '&' );\n\tparts.forEach( ( part ) => {\n\t\tprocessedCSS += ! part.includes( '{' )\n\t\t\t? blockSelector + '{' + part + '}' // If the part doesn't contain braces, it applies to the root level.\n\t\t\t: blockSelector + part; // Prepend the selector, which effectively replaces the \"&\" character.\n\t} );\n\treturn processedCSS;\n};\n\nexport function useGlobalStylesOutput() {\n\tlet { merged: mergedConfig } = useContext( GlobalStylesContext );\n\n\tconst [ blockGap ] = useGlobalSetting( '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\tconst getBlockStyles = useSelect( ( select ) => {\n\t\treturn select( blocksStore ).getBlockStyles;\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn [];\n\t\t}\n\t\tmergedConfig = updateConfigWithSeparator( mergedConfig );\n\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles\n\t\t);\n\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\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\t// Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor.\n\t\t\t{\n\t\t\t\tcss: mergedConfig.styles.css ?? '',\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t];\n\n\t\t// Loop through the blocks to check if there are custom CSS values.\n\t\t// If there are, get the block selector and push the selector together with\n\t\t// the CSS value to the 'stylesheets' array.\n\t\tgetBlockTypes().forEach( ( blockType ) => {\n\t\t\tif ( mergedConfig.styles.blocks[ blockType.name ]?.css ) {\n\t\t\t\tconst selector = blockSelectors[ blockType.name ].selector;\n\t\t\t\tstylesheets.push( {\n\t\t\t\t\tcss: processCSSNesting(\n\t\t\t\t\t\tmergedConfig.styles.blocks[ blockType.name ]?.css,\n\t\t\t\t\t\tselector\n\t\t\t\t\t),\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t} );\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"]}
|
|
@@ -36,6 +36,7 @@ export const PRESET_METADATA = [{
|
|
|
36
36
|
}]
|
|
37
37
|
}, {
|
|
38
38
|
path: ['color', 'duotone'],
|
|
39
|
+
valueKey: 'colors',
|
|
39
40
|
cssVarInfix: 'duotone',
|
|
40
41
|
valueFunc: _ref => {
|
|
41
42
|
let {
|
|
@@ -86,6 +87,7 @@ export const PRESET_METADATA = [{
|
|
|
86
87
|
export const STYLE_PATH_TO_CSS_VAR_INFIX = {
|
|
87
88
|
'color.background': 'color',
|
|
88
89
|
'color.text': 'color',
|
|
90
|
+
'filter.duotone': 'duotone',
|
|
89
91
|
'elements.link.color.text': 'color',
|
|
90
92
|
'elements.link.:hover.color.text': 'color',
|
|
91
93
|
'elements.link.typography.fontFamily': 'font-family',
|