@wordpress/block-editor 13.2.0 → 13.3.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 +2 -0
- package/README.md +0 -1
- package/build/components/block-breadcrumb/index.js +12 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-lock/toolbar.js +0 -1
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mover/button.js +1 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +1 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +5 -7
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +20 -17
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-rename/modal.js +4 -12
- package/build/components/block-rename/modal.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +1 -0
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +7 -58
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/block-toolbar-breadcrumb.js +9 -2
- package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
- package/build/components/block-tools/index.js +14 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +4 -2
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +5 -4
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-popover.js +57 -0
- package/build/components/block-tools/zoom-out-popover.js.map +1 -0
- package/build/components/block-tools/zoom-out-toolbar.js +138 -0
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -0
- package/build/components/button-block-appender/index.js +3 -1
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +26 -18
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +10 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/dimensions-tool/index.js +6 -4
- package/build/components/dimensions-tool/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +26 -61
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +178 -116
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/border-panel.js +2 -1
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +2 -1
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +2 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +8 -0
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +2 -1
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +50 -12
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +50 -0
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +23 -8
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +17 -7
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +11 -14
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/grid/grid-item-resizer.js +2 -2
- package/build/components/grid/grid-item-resizer.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +116 -36
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/use-grid-layout-sync.js +29 -22
- package/build/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build/components/inner-blocks/index.js +1 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/menu.js +26 -4
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/media-placeholder/index.js +19 -23
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -1
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/tabbed-sidebar/index.js +66 -0
- package/build/components/tabbed-sidebar/index.js.map +1 -0
- package/build/components/url-popover/index.js +3 -0
- package/build/components/url-popover/index.js.map +1 -1
- package/build/hooks/background.js +26 -4
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +11 -17
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-style-variation.js +169 -4
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/duotone.js +16 -11
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/grid-visualizer.js +65 -0
- package/build/hooks/grid-visualizer.js.map +1 -0
- package/build/hooks/index.js +15 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +39 -22
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/position.js +2 -9
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +16 -6
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/utils.js +2 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +44 -2
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/grid.js +90 -51
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/defaults.js +0 -2
- package/build/store/defaults.js.map +1 -1
- package/build/store/defaults.native.js +0 -3
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/utils/format-font-style.js +45 -0
- package/build/utils/format-font-style.js.map +1 -0
- package/build/utils/format-font-weight.js +68 -0
- package/build/utils/format-font-weight.js.map +1 -0
- package/build/utils/get-editor-region.js +34 -0
- package/build/utils/get-editor-region.js.map +1 -0
- package/build/utils/get-font-styles-and-weights.js +167 -0
- package/build/utils/get-font-styles-and-weights.js.map +1 -0
- package/build/utils/pasting.js +5 -13
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +12 -1
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +0 -1
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mover/button.js +1 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +5 -7
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +20 -17
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-rename/modal.js +5 -13
- package/build-module/components/block-rename/modal.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +1 -0
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +10 -61
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js +9 -2
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +4 -2
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -4
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-popover.js +48 -0
- package/build-module/components/block-tools/zoom-out-popover.js.map +1 -0
- package/build-module/components/block-tools/zoom-out-toolbar.js +131 -0
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -0
- package/build-module/components/button-block-appender/index.js +3 -1
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +27 -19
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +11 -3
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/dimensions-tool/index.js +6 -4
- package/build-module/components/dimensions-tool/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +28 -63
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +181 -119
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +3 -2
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -2
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +3 -2
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +3 -2
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +8 -0
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +3 -2
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +52 -14
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +48 -0
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +23 -8
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +15 -6
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +11 -14
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/grid/grid-item-resizer.js +2 -2
- package/build-module/components/grid/grid-item-resizer.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +117 -37
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/use-grid-layout-sync.js +29 -22
- package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +1 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/menu.js +26 -4
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +19 -23
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -1
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/tabbed-sidebar/index.js +60 -0
- package/build-module/components/tabbed-sidebar/index.js.map +1 -0
- package/build-module/components/url-popover/index.js +3 -0
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/hooks/background.js +26 -4
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +11 -17
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +168 -4
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/duotone.js +16 -11
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/grid-visualizer.js +64 -0
- package/build-module/hooks/grid-visualizer.js.map +1 -0
- package/build-module/hooks/index.js +3 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +39 -22
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/position.js +2 -9
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +16 -6
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/utils.js +2 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +44 -2
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/grid.js +90 -51
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +8 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/defaults.js +0 -2
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/defaults.native.js +0 -3
- package/build-module/store/defaults.native.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/utils/format-font-style.js +39 -0
- package/build-module/utils/format-font-style.js.map +1 -0
- package/build-module/utils/format-font-weight.js +62 -0
- package/build-module/utils/format-font-weight.js.map +1 -0
- package/build-module/utils/get-editor-region.js +28 -0
- package/build-module/utils/get-editor-region.js.map +1 -0
- package/build-module/utils/get-font-styles-and-weights.js +160 -0
- package/build-module/utils/get-font-styles-and-weights.js.map +1 -0
- package/build-module/utils/pasting.js +5 -13
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +1 -0
- package/build-style/content.css +1 -0
- package/build-style/style-rtl.css +207 -96
- package/build-style/style.css +207 -96
- package/package.json +32 -32
- package/src/components/block-breadcrumb/index.js +16 -1
- package/src/components/block-lock/toolbar.js +0 -1
- package/src/components/block-mover/button.js +1 -1
- package/src/components/block-mover/index.js +1 -1
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/src/components/block-patterns-paging/index.js +8 -11
- package/src/components/block-patterns-paging/style.scss +18 -0
- package/src/components/block-quick-navigation/index.js +21 -28
- package/src/components/block-rename/modal.js +2 -8
- package/src/components/block-switcher/test/index.js +6 -6
- package/src/components/block-toolbar/shuffle.js +1 -0
- package/src/components/block-toolbar/style.scss +1 -11
- package/src/components/block-tools/block-selection-button.js +11 -83
- package/src/components/block-tools/block-toolbar-breadcrumb.js +9 -4
- package/src/components/block-tools/index.js +21 -1
- package/src/components/block-tools/style.scss +15 -0
- package/src/components/block-tools/use-show-block-tools.js +14 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +5 -4
- package/src/components/block-tools/zoom-out-popover.js +49 -0
- package/src/components/block-tools/zoom-out-toolbar.js +140 -0
- package/src/components/button-block-appender/index.js +2 -1
- package/src/components/child-layout-control/index.js +41 -23
- package/src/components/date-format-picker/index.js +10 -1
- package/src/components/date-format-picker/style.scss +0 -9
- package/src/components/dimensions-tool/index.js +97 -89
- package/src/components/font-appearance-control/index.js +29 -83
- package/src/components/font-appearance-control/style.scss +3 -5
- package/src/components/global-styles/background-panel.js +249 -170
- package/src/components/global-styles/border-panel.js +3 -2
- package/src/components/global-styles/color-panel.js +3 -2
- package/src/components/global-styles/dimensions-panel.js +3 -2
- package/src/components/global-styles/filters-panel.js +3 -2
- package/src/components/global-styles/hooks.js +9 -0
- package/src/components/global-styles/image-settings-panel.js +3 -2
- package/src/components/global-styles/style.scss +105 -20
- package/src/components/global-styles/test/typography-utils.js +269 -0
- package/src/components/global-styles/typography-panel.js +49 -12
- package/src/components/global-styles/typography-utils.js +63 -0
- package/src/components/global-styles/use-global-styles-output.js +23 -8
- package/src/components/global-styles/utils.js +17 -6
- package/src/components/grid/grid-item-movers.js +11 -27
- package/src/components/grid/grid-item-resizer.js +3 -2
- package/src/components/grid/grid-visualizer.js +171 -54
- package/src/components/grid/style.scss +43 -8
- package/src/components/grid/use-grid-layout-sync.js +31 -28
- package/src/components/iframe/content.scss +1 -0
- package/src/components/inner-blocks/index.js +2 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -16
- package/src/components/inserter/menu.js +47 -13
- package/src/components/inserter/quick-inserter.js +6 -1
- package/src/components/inserter/style.scss +1 -49
- package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
- package/src/components/link-control/link-preview.js +1 -1
- package/src/components/media-placeholder/index.js +22 -32
- package/src/components/navigable-toolbar/index.js +3 -1
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +6 -1
- package/src/components/tabbed-sidebar/README.md +76 -0
- package/src/components/tabbed-sidebar/index.js +70 -0
- package/src/components/tabbed-sidebar/style.scss +53 -0
- package/src/components/url-popover/index.js +3 -0
- package/src/hooks/background.js +25 -10
- package/src/hooks/block-hooks.js +9 -16
- package/src/hooks/block-style-variation.js +202 -3
- package/src/hooks/duotone.js +16 -12
- package/src/hooks/grid-visualizer.js +64 -0
- package/src/hooks/index.js +3 -0
- package/src/hooks/layout-child.js +53 -37
- package/src/hooks/position.js +3 -10
- package/src/hooks/test/get-variation-styles-with-ref-values.js +91 -0
- package/src/hooks/use-bindings-attributes.js +18 -4
- package/src/hooks/utils.js +2 -0
- package/src/layouts/constrained.js +43 -2
- package/src/layouts/grid.js +146 -51
- package/src/private-apis.js +12 -1
- package/src/store/defaults.js +0 -2
- package/src/store/defaults.native.js +0 -3
- package/src/store/private-keys.js +1 -0
- package/src/style.scss +1 -1
- package/src/utils/format-font-style.js +40 -0
- package/src/utils/format-font-weight.js +63 -0
- package/src/utils/get-editor-region.js +31 -0
- package/src/utils/get-font-styles-and-weights.js +191 -0
- package/src/utils/pasting.js +5 -12
- package/src/utils/test/format-font-style.js +34 -0
- package/src/utils/test/format-font-weight.js +66 -0
- package/src/utils/test/get-font-styles-and-weights.js +513 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/hooks/position.scss +0 -18
|
@@ -3,14 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.__unstableBlockStyleVariationOverridesWithConfig = __unstableBlockStyleVariationOverridesWithConfig;
|
|
6
7
|
exports.default = void 0;
|
|
8
|
+
exports.getVariationStylesWithRefValues = getVariationStylesWithRefValues;
|
|
7
9
|
var _blocks = require("@wordpress/blocks");
|
|
8
10
|
var _data = require("@wordpress/data");
|
|
9
11
|
var _element = require("@wordpress/element");
|
|
10
12
|
var _globalStyles = require("../components/global-styles");
|
|
11
13
|
var _utils = require("./utils");
|
|
14
|
+
var _object = require("../utils/object");
|
|
12
15
|
var _store = require("../store");
|
|
13
16
|
var _privateKeys = require("../store/private-keys");
|
|
17
|
+
var _lockUnlock = require("../lock-unlock");
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
19
|
/**
|
|
15
20
|
* WordPress dependencies
|
|
16
21
|
*/
|
|
@@ -57,6 +62,163 @@ function getVariationNameFromClass(className, registeredStyles = []) {
|
|
|
57
62
|
}
|
|
58
63
|
return null;
|
|
59
64
|
}
|
|
65
|
+
|
|
66
|
+
// A helper component to apply a style override using the useStyleOverride hook.
|
|
67
|
+
function OverrideStyles({
|
|
68
|
+
override
|
|
69
|
+
}) {
|
|
70
|
+
(0, _utils.useStyleOverride)(override);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* This component is used to generate new block style variation overrides
|
|
75
|
+
* based on an incoming theme config. If a matching style is found in the config,
|
|
76
|
+
* a new override is created and returned. The overrides can be used in conjunction with
|
|
77
|
+
* useStyleOverride to apply the new styles to the editor. Its use is
|
|
78
|
+
* subject to change.
|
|
79
|
+
*
|
|
80
|
+
* @param {Object} props Props.
|
|
81
|
+
* @param {Object} props.config A global styles object, containing settings and styles.
|
|
82
|
+
* @return {JSX.Element|undefined} An array of new block variation overrides.
|
|
83
|
+
*/
|
|
84
|
+
function __unstableBlockStyleVariationOverridesWithConfig({
|
|
85
|
+
config
|
|
86
|
+
}) {
|
|
87
|
+
const {
|
|
88
|
+
getBlockStyles,
|
|
89
|
+
overrides
|
|
90
|
+
} = (0, _data.useSelect)(select => ({
|
|
91
|
+
getBlockStyles: select(_blocks.store).getBlockStyles,
|
|
92
|
+
overrides: (0, _lockUnlock.unlock)(select(_store.store)).getStyleOverrides()
|
|
93
|
+
}), []);
|
|
94
|
+
const {
|
|
95
|
+
getBlockName
|
|
96
|
+
} = (0, _data.useSelect)(_store.store);
|
|
97
|
+
const overridesWithConfig = (0, _element.useMemo)(() => {
|
|
98
|
+
if (!overrides?.length) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const newOverrides = [];
|
|
102
|
+
const overriddenClientIds = [];
|
|
103
|
+
for (const [, override] of overrides) {
|
|
104
|
+
if (override?.variation && override?.clientId &&
|
|
105
|
+
/*
|
|
106
|
+
* Because this component overwrites existing style overrides,
|
|
107
|
+
* filter out any overrides that are already present in the store.
|
|
108
|
+
*/
|
|
109
|
+
!overriddenClientIds.includes(override.clientId)) {
|
|
110
|
+
const blockName = getBlockName(override.clientId);
|
|
111
|
+
const configStyles = config?.styles?.blocks?.[blockName]?.variations?.[override.variation];
|
|
112
|
+
if (configStyles) {
|
|
113
|
+
const variationConfig = {
|
|
114
|
+
settings: config?.settings,
|
|
115
|
+
// The variation style data is all that is needed to generate
|
|
116
|
+
// the styles for the current application to a block. The variation
|
|
117
|
+
// name is updated to match the instance specific class name.
|
|
118
|
+
styles: {
|
|
119
|
+
blocks: {
|
|
120
|
+
[blockName]: {
|
|
121
|
+
variations: {
|
|
122
|
+
[`${override.variation}-${override.clientId}`]: configStyles
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const blockSelectors = (0, _globalStyles.getBlockSelectors)((0, _blocks.getBlockTypes)(), getBlockStyles, override.clientId);
|
|
129
|
+
const hasBlockGapSupport = false;
|
|
130
|
+
const hasFallbackGapSupport = true;
|
|
131
|
+
const disableLayoutStyles = true;
|
|
132
|
+
const disableRootPadding = true;
|
|
133
|
+
const variationStyles = (0, _globalStyles.toStyles)(variationConfig, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles, disableRootPadding, {
|
|
134
|
+
blockGap: false,
|
|
135
|
+
blockStyles: true,
|
|
136
|
+
layoutStyles: false,
|
|
137
|
+
marginReset: false,
|
|
138
|
+
presets: false,
|
|
139
|
+
rootPadding: false,
|
|
140
|
+
variationStyles: true
|
|
141
|
+
});
|
|
142
|
+
newOverrides.push({
|
|
143
|
+
id: `${override.variation}-${override.clientId}`,
|
|
144
|
+
css: variationStyles,
|
|
145
|
+
__unstableType: 'variation',
|
|
146
|
+
variation: override.variation,
|
|
147
|
+
// The clientId will be stored with the override and used to ensure
|
|
148
|
+
// the order of overrides matches the order of blocks so that the
|
|
149
|
+
// correct CSS cascade is maintained.
|
|
150
|
+
clientId: override.clientId
|
|
151
|
+
});
|
|
152
|
+
overriddenClientIds.push(override.clientId);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return newOverrides;
|
|
157
|
+
}, [config, overrides, getBlockStyles, getBlockName]);
|
|
158
|
+
if (!overridesWithConfig || !overridesWithConfig.length) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
162
|
+
children: overridesWithConfig.map(override => /*#__PURE__*/(0, _jsxRuntime.jsx)(OverrideStyles, {
|
|
163
|
+
override: override
|
|
164
|
+
}, override.id))
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Retrieves any variation styles data and resolves any referenced values.
|
|
170
|
+
*
|
|
171
|
+
* @param {Object} globalStyles A complete global styles object, containing settings and styles.
|
|
172
|
+
* @param {string} name The name of the desired block type.
|
|
173
|
+
* @param {variation} variation The of the block style variation to retrieve data for.
|
|
174
|
+
*
|
|
175
|
+
* @return {Object|undefined} The global styles data for the specified variation.
|
|
176
|
+
*/
|
|
177
|
+
function getVariationStylesWithRefValues(globalStyles, name, variation) {
|
|
178
|
+
if (!globalStyles?.styles?.blocks?.[name]?.variations?.[variation]) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Helper to recursively look for `ref` values to resolve.
|
|
183
|
+
const replaceRefs = variationStyles => {
|
|
184
|
+
Object.keys(variationStyles).forEach(key => {
|
|
185
|
+
const value = variationStyles[key];
|
|
186
|
+
|
|
187
|
+
// Only process objects.
|
|
188
|
+
if (typeof value === 'object' && value !== null) {
|
|
189
|
+
// Process `ref` value if present.
|
|
190
|
+
if (value.ref !== undefined) {
|
|
191
|
+
if (typeof value.ref !== 'string' || value.ref.trim() === '') {
|
|
192
|
+
// Remove invalid ref.
|
|
193
|
+
delete variationStyles[key];
|
|
194
|
+
} else {
|
|
195
|
+
// Resolve `ref` value.
|
|
196
|
+
const refValue = (0, _object.getValueFromObjectPath)(globalStyles, value.ref);
|
|
197
|
+
if (refValue) {
|
|
198
|
+
variationStyles[key] = refValue;
|
|
199
|
+
} else {
|
|
200
|
+
delete variationStyles[key];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
} else {
|
|
204
|
+
// Recursively resolve `ref` values in nested objects.
|
|
205
|
+
replaceRefs(value);
|
|
206
|
+
|
|
207
|
+
// After recursion, if value is empty due to explicitly
|
|
208
|
+
// `undefined` ref value, remove it.
|
|
209
|
+
if (Object.keys(value).length === 0) {
|
|
210
|
+
delete variationStyles[key];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
// Deep clone variation node to avoid mutating it within global styles and losing refs.
|
|
218
|
+
const styles = JSON.parse(JSON.stringify(globalStyles.styles.blocks[name].variations[variation]));
|
|
219
|
+
replaceRefs(styles);
|
|
220
|
+
return styles;
|
|
221
|
+
}
|
|
60
222
|
function useBlockStyleVariation(name, variation, clientId) {
|
|
61
223
|
// Prefer global styles data in GlobalStylesContext, which are available
|
|
62
224
|
// if in the site editor. Otherwise fall back to whatever is in the
|
|
@@ -75,11 +237,13 @@ function useBlockStyleVariation(name, variation, clientId) {
|
|
|
75
237
|
};
|
|
76
238
|
}, []);
|
|
77
239
|
return (0, _element.useMemo)(() => {
|
|
78
|
-
var _mergedConfig$styles, _mergedConfig$
|
|
79
|
-
const
|
|
80
|
-
const variationStyles = styles?.blocks?.[name]?.variations?.[variation];
|
|
81
|
-
return {
|
|
240
|
+
var _mergedConfig$setting, _mergedConfig$styles, _mergedConfig$setting2;
|
|
241
|
+
const variationStyles = getVariationStylesWithRefValues({
|
|
82
242
|
settings: (_mergedConfig$setting = mergedConfig?.settings) !== null && _mergedConfig$setting !== void 0 ? _mergedConfig$setting : globalSettings,
|
|
243
|
+
styles: (_mergedConfig$styles = mergedConfig?.styles) !== null && _mergedConfig$styles !== void 0 ? _mergedConfig$styles : globalStyles
|
|
244
|
+
}, name, variation);
|
|
245
|
+
return {
|
|
246
|
+
settings: (_mergedConfig$setting2 = mergedConfig?.settings) !== null && _mergedConfig$setting2 !== void 0 ? _mergedConfig$setting2 : globalSettings,
|
|
83
247
|
// The variation style data is all that is needed to generate
|
|
84
248
|
// the styles for the current application to a block. The variation
|
|
85
249
|
// name is updated to match the instance specific class name.
|
|
@@ -141,6 +305,7 @@ function useBlockProps({
|
|
|
141
305
|
id: `variation-${clientId}`,
|
|
142
306
|
css: variationStyles,
|
|
143
307
|
__unstableType: 'variation',
|
|
308
|
+
variation,
|
|
144
309
|
// The clientId will be stored with the override and used to ensure
|
|
145
310
|
// the order of overrides matches the order of blocks so that the
|
|
146
311
|
// correct CSS cascade is maintained.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","_data","_element","_globalStyles","_utils","_store","_privateKeys","VARIATION_PREFIX","getVariationMatches","className","split","reduce","matches","name","startsWith","match","slice","length","push","getVariationNameFromClass","registeredStyles","variation","some","style","useBlockStyleVariation","clientId","merged","mergedConfig","useContext","GlobalStylesContext","globalSettings","globalStyles","useSelect","select","settings","blockEditorStore","getSettings","__experimentalFeatures","globalStylesDataKey","useMemo","_mergedConfig$styles","_mergedConfig$setting","styles","variationStyles","blocks","variations","useBlockProps","getBlockStyles","blocksStore","variationClass","variationConfig","blockSelectors","getBlockSelectors","getBlockTypes","hasBlockGapSupport","hasFallbackGapSupport","disableLayoutStyles","disableRootPadding","toStyles","blockGap","blockStyles","layoutStyles","marginReset","presets","rootPadding","useStyleOverride","id","css","__unstableType","_default","exports","default","hasSupport","attributeKeys","isMatch"],"sources":["@wordpress/block-editor/src/hooks/block-style-variation.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGlobalStylesContext,\n\ttoStyles,\n\tgetBlockSelectors,\n} from '../components/global-styles';\nimport { useStyleOverride } from './utils';\nimport { store as blockEditorStore } from '../store';\nimport { globalStylesDataKey } from '../store/private-keys';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nfunction getVariationMatches( className ) {\n\tif ( ! className ) {\n\t\treturn [];\n\t}\n\treturn className.split( /\\s+/ ).reduce( ( matches, name ) => {\n\t\tif ( name.startsWith( VARIATION_PREFIX ) ) {\n\t\t\tconst match = name.slice( VARIATION_PREFIX.length );\n\t\t\tif ( match !== 'default' ) {\n\t\t\t\tmatches.push( match );\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}, [] );\n}\n\n/**\n * Get the first block style variation that has been registered from the class string.\n *\n * @param {string} className CSS class string for a block.\n * @param {Array} registeredStyles Currently registered block styles.\n *\n * @return {string|null} The name of the first registered variation.\n */\nfunction getVariationNameFromClass( className, registeredStyles = [] ) {\n\t// The global flag affects how capturing groups work in JS. So the regex\n\t// below will only return full CSS classes not just the variation name.\n\tconst matches = getVariationMatches( className );\n\n\tif ( ! matches ) {\n\t\treturn null;\n\t}\n\n\tfor ( const variation of matches ) {\n\t\tif ( registeredStyles.some( ( style ) => style.name === variation ) ) {\n\t\t\treturn variation;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction useBlockStyleVariation( name, variation, clientId ) {\n\t// Prefer global styles data in GlobalStylesContext, which are available\n\t// if in the site editor. Otherwise fall back to whatever is in the\n\t// editor settings and available in the post editor.\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst { globalSettings, globalStyles } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst styles = mergedConfig?.styles ?? globalStyles;\n\t\tconst variationStyles =\n\t\t\tstyles?.blocks?.[ name ]?.variations?.[ variation ];\n\n\t\treturn {\n\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t// The variation style data is all that is needed to generate\n\t\t\t// the styles for the current application to a block. The variation\n\t\t\t// name is updated to match the instance specific class name.\n\t\t\tstyles: {\n\t\t\t\tblocks: {\n\t\t\t\t\t[ name ]: {\n\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t[ `${ variation }-${ clientId }` ]: variationStyles,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}, [\n\t\tmergedConfig,\n\t\tglobalSettings,\n\t\tglobalStyles,\n\t\tvariation,\n\t\tclientId,\n\t\tname,\n\t] );\n}\n\n// Rather than leveraging `useInstanceId` here, the `clientId` is used.\n// This is so that the variation style override's ID is predictable\n// when the order of applied style variations changes.\nfunction useBlockProps( { name, className, clientId } ) {\n\tconst { getBlockStyles } = useSelect( blocksStore );\n\n\tconst registeredStyles = getBlockStyles( name );\n\tconst variation = getVariationNameFromClass( className, registeredStyles );\n\tconst variationClass = `${ VARIATION_PREFIX }${ variation }-${ clientId }`;\n\n\tconst { settings, styles } = useBlockStyleVariation(\n\t\tname,\n\t\tvariation,\n\t\tclientId\n\t);\n\n\tconst variationStyles = useMemo( () => {\n\t\tif ( ! variation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst variationConfig = { settings, styles };\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles,\n\t\t\tclientId\n\t\t);\n\t\tconst hasBlockGapSupport = false;\n\t\tconst hasFallbackGapSupport = true;\n\t\tconst disableLayoutStyles = true;\n\t\tconst disableRootPadding = true;\n\n\t\treturn toStyles(\n\t\t\tvariationConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles,\n\t\t\tdisableRootPadding,\n\t\t\t{\n\t\t\t\tblockGap: false,\n\t\t\t\tblockStyles: true,\n\t\t\t\tlayoutStyles: false,\n\t\t\t\tmarginReset: false,\n\t\t\t\tpresets: false,\n\t\t\t\trootPadding: false,\n\t\t\t\tvariationStyles: true,\n\t\t\t}\n\t\t);\n\t}, [ variation, settings, styles, getBlockStyles, clientId ] );\n\n\tuseStyleOverride( {\n\t\tid: `variation-${ clientId }`,\n\t\tcss: variationStyles,\n\t\t__unstableType: 'variation',\n\t\t// The clientId will be stored with the override and used to ensure\n\t\t// the order of overrides matches the order of blocks so that the\n\t\t// correct CSS cascade is maintained.\n\t\tclientId,\n\t} );\n\n\treturn variation ? { className: variationClass } : {};\n}\n\nexport default {\n\thasSupport: () => true,\n\tattributeKeys: [ 'className' ],\n\tisMatch: ( { className } ) => getVariationMatches( className ).length > 0,\n\tuseBlockProps,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_blocks","require","_data","_element","_globalStyles","_utils","_object","_store","_privateKeys","_lockUnlock","_jsxRuntime","VARIATION_PREFIX","getVariationMatches","className","split","reduce","matches","name","startsWith","match","slice","length","push","getVariationNameFromClass","registeredStyles","variation","some","style","OverrideStyles","override","useStyleOverride","__unstableBlockStyleVariationOverridesWithConfig","config","getBlockStyles","overrides","useSelect","select","blocksStore","unlock","blockEditorStore","getStyleOverrides","getBlockName","overridesWithConfig","useMemo","newOverrides","overriddenClientIds","clientId","includes","blockName","configStyles","styles","blocks","variations","variationConfig","settings","blockSelectors","getBlockSelectors","getBlockTypes","hasBlockGapSupport","hasFallbackGapSupport","disableLayoutStyles","disableRootPadding","variationStyles","toStyles","blockGap","blockStyles","layoutStyles","marginReset","presets","rootPadding","id","css","__unstableType","jsx","Fragment","children","map","getVariationStylesWithRefValues","globalStyles","replaceRefs","Object","keys","forEach","key","value","ref","undefined","trim","refValue","getValueFromObjectPath","JSON","parse","stringify","useBlockStyleVariation","merged","mergedConfig","useContext","GlobalStylesContext","globalSettings","getSettings","__experimentalFeatures","globalStylesDataKey","_mergedConfig$setting","_mergedConfig$styles","_mergedConfig$setting2","useBlockProps","variationClass","_default","exports","default","hasSupport","attributeKeys","isMatch"],"sources":["@wordpress/block-editor/src/hooks/block-style-variation.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGlobalStylesContext,\n\ttoStyles,\n\tgetBlockSelectors,\n} from '../components/global-styles';\nimport { useStyleOverride } from './utils';\nimport { getValueFromObjectPath } from '../utils/object';\nimport { store as blockEditorStore } from '../store';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { unlock } from '../lock-unlock';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nfunction getVariationMatches( className ) {\n\tif ( ! className ) {\n\t\treturn [];\n\t}\n\treturn className.split( /\\s+/ ).reduce( ( matches, name ) => {\n\t\tif ( name.startsWith( VARIATION_PREFIX ) ) {\n\t\t\tconst match = name.slice( VARIATION_PREFIX.length );\n\t\t\tif ( match !== 'default' ) {\n\t\t\t\tmatches.push( match );\n\t\t\t}\n\t\t}\n\t\treturn matches;\n\t}, [] );\n}\n\n/**\n * Get the first block style variation that has been registered from the class string.\n *\n * @param {string} className CSS class string for a block.\n * @param {Array} registeredStyles Currently registered block styles.\n *\n * @return {string|null} The name of the first registered variation.\n */\nfunction getVariationNameFromClass( className, registeredStyles = [] ) {\n\t// The global flag affects how capturing groups work in JS. So the regex\n\t// below will only return full CSS classes not just the variation name.\n\tconst matches = getVariationMatches( className );\n\n\tif ( ! matches ) {\n\t\treturn null;\n\t}\n\n\tfor ( const variation of matches ) {\n\t\tif ( registeredStyles.some( ( style ) => style.name === variation ) ) {\n\t\t\treturn variation;\n\t\t}\n\t}\n\treturn null;\n}\n\n// A helper component to apply a style override using the useStyleOverride hook.\nfunction OverrideStyles( { override } ) {\n\tuseStyleOverride( override );\n}\n\n/**\n * This component is used to generate new block style variation overrides\n * based on an incoming theme config. If a matching style is found in the config,\n * a new override is created and returned. The overrides can be used in conjunction with\n * useStyleOverride to apply the new styles to the editor. Its use is\n * subject to change.\n *\n * @param {Object} props Props.\n * @param {Object} props.config A global styles object, containing settings and styles.\n * @return {JSX.Element|undefined} An array of new block variation overrides.\n */\nexport function __unstableBlockStyleVariationOverridesWithConfig( { config } ) {\n\tconst { getBlockStyles, overrides } = useSelect(\n\t\t( select ) => ( {\n\t\t\tgetBlockStyles: select( blocksStore ).getBlockStyles,\n\t\t\toverrides: unlock( select( blockEditorStore ) ).getStyleOverrides(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\n\tconst overridesWithConfig = useMemo( () => {\n\t\tif ( ! overrides?.length ) {\n\t\t\treturn;\n\t\t}\n\t\tconst newOverrides = [];\n\t\tconst overriddenClientIds = [];\n\t\tfor ( const [ , override ] of overrides ) {\n\t\t\tif (\n\t\t\t\toverride?.variation &&\n\t\t\t\toverride?.clientId &&\n\t\t\t\t/*\n\t\t\t\t * Because this component overwrites existing style overrides,\n\t\t\t\t * filter out any overrides that are already present in the store.\n\t\t\t\t */\n\t\t\t\t! overriddenClientIds.includes( override.clientId )\n\t\t\t) {\n\t\t\t\tconst blockName = getBlockName( override.clientId );\n\t\t\t\tconst configStyles =\n\t\t\t\t\tconfig?.styles?.blocks?.[ blockName ]?.variations?.[\n\t\t\t\t\t\toverride.variation\n\t\t\t\t\t];\n\t\t\t\tif ( configStyles ) {\n\t\t\t\t\tconst variationConfig = {\n\t\t\t\t\t\tsettings: config?.settings,\n\t\t\t\t\t\t// The variation style data is all that is needed to generate\n\t\t\t\t\t\t// the styles for the current application to a block. The variation\n\t\t\t\t\t\t// name is updated to match the instance specific class name.\n\t\t\t\t\t\tstyles: {\n\t\t\t\t\t\t\tblocks: {\n\t\t\t\t\t\t\t\t[ blockName ]: {\n\t\t\t\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t\t\t\t[ `${ override.variation }-${ override.clientId }` ]:\n\t\t\t\t\t\t\t\t\t\t\tconfigStyles,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tconst blockSelectors = getBlockSelectors(\n\t\t\t\t\t\tgetBlockTypes(),\n\t\t\t\t\t\tgetBlockStyles,\n\t\t\t\t\t\toverride.clientId\n\t\t\t\t\t);\n\t\t\t\t\tconst hasBlockGapSupport = false;\n\t\t\t\t\tconst hasFallbackGapSupport = true;\n\t\t\t\t\tconst disableLayoutStyles = true;\n\t\t\t\t\tconst disableRootPadding = true;\n\t\t\t\t\tconst variationStyles = toStyles(\n\t\t\t\t\t\tvariationConfig,\n\t\t\t\t\t\tblockSelectors,\n\t\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\t\tdisableLayoutStyles,\n\t\t\t\t\t\tdisableRootPadding,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblockGap: false,\n\t\t\t\t\t\t\tblockStyles: true,\n\t\t\t\t\t\t\tlayoutStyles: false,\n\t\t\t\t\t\t\tmarginReset: false,\n\t\t\t\t\t\t\tpresets: false,\n\t\t\t\t\t\t\trootPadding: false,\n\t\t\t\t\t\t\tvariationStyles: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tnewOverrides.push( {\n\t\t\t\t\t\tid: `${ override.variation }-${ override.clientId }`,\n\t\t\t\t\t\tcss: variationStyles,\n\t\t\t\t\t\t__unstableType: 'variation',\n\t\t\t\t\t\tvariation: override.variation,\n\t\t\t\t\t\t// The clientId will be stored with the override and used to ensure\n\t\t\t\t\t\t// the order of overrides matches the order of blocks so that the\n\t\t\t\t\t\t// correct CSS cascade is maintained.\n\t\t\t\t\t\tclientId: override.clientId,\n\t\t\t\t\t} );\n\t\t\t\t\toverriddenClientIds.push( override.clientId );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn newOverrides;\n\t}, [ config, overrides, getBlockStyles, getBlockName ] );\n\n\tif ( ! overridesWithConfig || ! overridesWithConfig.length ) {\n\t\treturn;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ overridesWithConfig.map( ( override ) => (\n\t\t\t\t<OverrideStyles key={ override.id } override={ override } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\n/**\n * Retrieves any variation styles data and resolves any referenced values.\n *\n * @param {Object} globalStyles A complete global styles object, containing settings and styles.\n * @param {string} name The name of the desired block type.\n * @param {variation} variation The of the block style variation to retrieve data for.\n *\n * @return {Object|undefined} The global styles data for the specified variation.\n */\nexport function getVariationStylesWithRefValues(\n\tglobalStyles,\n\tname,\n\tvariation\n) {\n\tif ( ! globalStyles?.styles?.blocks?.[ name ]?.variations?.[ variation ] ) {\n\t\treturn;\n\t}\n\n\t// Helper to recursively look for `ref` values to resolve.\n\tconst replaceRefs = ( variationStyles ) => {\n\t\tObject.keys( variationStyles ).forEach( ( key ) => {\n\t\t\tconst value = variationStyles[ key ];\n\n\t\t\t// Only process objects.\n\t\t\tif ( typeof value === 'object' && value !== null ) {\n\t\t\t\t// Process `ref` value if present.\n\t\t\t\tif ( value.ref !== undefined ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value.ref !== 'string' ||\n\t\t\t\t\t\tvalue.ref.trim() === ''\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Remove invalid ref.\n\t\t\t\t\t\tdelete variationStyles[ key ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Resolve `ref` value.\n\t\t\t\t\t\tconst refValue = getValueFromObjectPath(\n\t\t\t\t\t\t\tglobalStyles,\n\t\t\t\t\t\t\tvalue.ref\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( refValue ) {\n\t\t\t\t\t\t\tvariationStyles[ key ] = refValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete variationStyles[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Recursively resolve `ref` values in nested objects.\n\t\t\t\t\treplaceRefs( value );\n\n\t\t\t\t\t// After recursion, if value is empty due to explicitly\n\t\t\t\t\t// `undefined` ref value, remove it.\n\t\t\t\t\tif ( Object.keys( value ).length === 0 ) {\n\t\t\t\t\t\tdelete variationStyles[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\n\t// Deep clone variation node to avoid mutating it within global styles and losing refs.\n\tconst styles = JSON.parse(\n\t\tJSON.stringify(\n\t\t\tglobalStyles.styles.blocks[ name ].variations[ variation ]\n\t\t)\n\t);\n\treplaceRefs( styles );\n\n\treturn styles;\n}\n\nfunction useBlockStyleVariation( name, variation, clientId ) {\n\t// Prefer global styles data in GlobalStylesContext, which are available\n\t// if in the site editor. Otherwise fall back to whatever is in the\n\t// editor settings and available in the post editor.\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst { globalSettings, globalStyles } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t};\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst variationStyles = getVariationStylesWithRefValues(\n\t\t\t{\n\t\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t\tstyles: mergedConfig?.styles ?? globalStyles,\n\t\t\t},\n\t\t\tname,\n\t\t\tvariation\n\t\t);\n\n\t\treturn {\n\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t// The variation style data is all that is needed to generate\n\t\t\t// the styles for the current application to a block. The variation\n\t\t\t// name is updated to match the instance specific class name.\n\t\t\tstyles: {\n\t\t\t\tblocks: {\n\t\t\t\t\t[ name ]: {\n\t\t\t\t\t\tvariations: {\n\t\t\t\t\t\t\t[ `${ variation }-${ clientId }` ]: variationStyles,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}, [\n\t\tmergedConfig,\n\t\tglobalSettings,\n\t\tglobalStyles,\n\t\tvariation,\n\t\tclientId,\n\t\tname,\n\t] );\n}\n\n// Rather than leveraging `useInstanceId` here, the `clientId` is used.\n// This is so that the variation style override's ID is predictable\n// when the order of applied style variations changes.\nfunction useBlockProps( { name, className, clientId } ) {\n\tconst { getBlockStyles } = useSelect( blocksStore );\n\n\tconst registeredStyles = getBlockStyles( name );\n\tconst variation = getVariationNameFromClass( className, registeredStyles );\n\tconst variationClass = `${ VARIATION_PREFIX }${ variation }-${ clientId }`;\n\n\tconst { settings, styles } = useBlockStyleVariation(\n\t\tname,\n\t\tvariation,\n\t\tclientId\n\t);\n\n\tconst variationStyles = useMemo( () => {\n\t\tif ( ! variation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst variationConfig = { settings, styles };\n\t\tconst blockSelectors = getBlockSelectors(\n\t\t\tgetBlockTypes(),\n\t\t\tgetBlockStyles,\n\t\t\tclientId\n\t\t);\n\t\tconst hasBlockGapSupport = false;\n\t\tconst hasFallbackGapSupport = true;\n\t\tconst disableLayoutStyles = true;\n\t\tconst disableRootPadding = true;\n\n\t\treturn toStyles(\n\t\t\tvariationConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles,\n\t\t\tdisableRootPadding,\n\t\t\t{\n\t\t\t\tblockGap: false,\n\t\t\t\tblockStyles: true,\n\t\t\t\tlayoutStyles: false,\n\t\t\t\tmarginReset: false,\n\t\t\t\tpresets: false,\n\t\t\t\trootPadding: false,\n\t\t\t\tvariationStyles: true,\n\t\t\t}\n\t\t);\n\t}, [ variation, settings, styles, getBlockStyles, clientId ] );\n\n\tuseStyleOverride( {\n\t\tid: `variation-${ clientId }`,\n\t\tcss: variationStyles,\n\t\t__unstableType: 'variation',\n\t\tvariation,\n\t\t// The clientId will be stored with the override and used to ensure\n\t\t// the order of overrides matches the order of blocks so that the\n\t\t// correct CSS cascade is maintained.\n\t\tclientId,\n\t} );\n\n\treturn variation ? { className: variationClass } : {};\n}\n\nexport default {\n\thasSupport: () => true,\n\tattributeKeys: [ 'className' ],\n\tisMatch: ( { className } ) => getVariationMatches( className ).length > 0,\n\tuseBlockProps,\n};\n"],"mappings":"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","ignoreList":[]}
|
package/build/hooks/duotone.js
CHANGED
|
@@ -240,25 +240,30 @@ function useDuotoneStyles({
|
|
|
240
240
|
return;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
// Safari does not always update the duotone filter when the duotone
|
|
244
|
-
// are changed. When using Safari, force the block element to be
|
|
245
|
-
// the browser to ensure any changes are reflected
|
|
246
|
-
// that used on the site frontend in
|
|
243
|
+
// Safari does not always update the duotone filter when the duotone
|
|
244
|
+
// colors are changed. When using Safari, force the block element to be
|
|
245
|
+
// repainted by the browser to ensure any changes are reflected
|
|
246
|
+
// visually. This logic matches that used on the site frontend in
|
|
247
|
+
// `block-supports/duotone.php`.
|
|
247
248
|
if (blockElement && isSafari) {
|
|
248
249
|
const display = blockElement.style.display;
|
|
249
|
-
// Switch to `inline-block` to force a repaint. In the editor,
|
|
250
|
-
// is used instead of `none` to ensure that scroll
|
|
251
|
-
// as `none` results in the editor
|
|
250
|
+
// Switch to `inline-block` to force a repaint. In the editor,
|
|
251
|
+
// `inline-block` is used instead of `none` to ensure that scroll
|
|
252
|
+
// position is not affected, as `none` results in the editor
|
|
253
|
+
// scrolling to the top of the block.
|
|
252
254
|
blockElement.style.display = 'inline-block';
|
|
253
|
-
// Simply accessing el.offsetHeight flushes layout and style
|
|
254
|
-
//
|
|
255
|
+
// Simply accessing el.offsetHeight flushes layout and style changes
|
|
256
|
+
// in WebKit without having to wait for setTimeout.
|
|
255
257
|
// eslint-disable-next-line no-unused-expressions
|
|
256
258
|
blockElement.offsetHeight;
|
|
257
259
|
blockElement.style.display = display;
|
|
258
260
|
}
|
|
259
|
-
|
|
261
|
+
// `colors` must be a dependency so this effect runs when the colors
|
|
262
|
+
// change in Safari.
|
|
263
|
+
}, [isValidFilter, blockElement, colors]);
|
|
260
264
|
}
|
|
261
265
|
function useBlockProps({
|
|
266
|
+
clientId,
|
|
262
267
|
name,
|
|
263
268
|
style
|
|
264
269
|
}) {
|
|
@@ -294,7 +299,7 @@ function useBlockProps({
|
|
|
294
299
|
const filterClass = `wp-duotone-${id}`;
|
|
295
300
|
const shouldRender = selector && attribute;
|
|
296
301
|
useDuotoneStyles({
|
|
297
|
-
clientId
|
|
302
|
+
clientId,
|
|
298
303
|
id: filterClass,
|
|
299
304
|
selector,
|
|
300
305
|
attribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_colord","require","_names","_interopRequireDefault","_blocks","_compose","_hooks","_element","_components","_utils","_getBlockCssSelector","_utils2","_utils3","_filtersPanel","_blockEditingMode","_useBlockRefs","_jsxRuntime","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","extend","namesPlugin","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","useSettings","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanelPure","style","setAttributes","name","duotoneStyle","color","settings","useBlockSettings","blockEditingMode","useBlockEditingMode","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","jsxs","Fragment","children","jsx","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","_default","exports","shareWithChildBlocks","edit","useBlockProps","attributeKeys","hasSupport","hasBlockSupport","addDuotoneAttributes","attributes","Object","assign","type","useDuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","useStyleOverride","css","getDuotoneStylesheet","getDuotoneUnsetStylesheet","__unstableType","assets","getDuotoneFilter","blockElement","useBlockElement","useEffect","display","offsetHeight","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","addFilter"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings, useStyleOverride } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanelPure( { style, setAttributes, name } ) {\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: DuotonePanelPure,\n\tuseBlockProps,\n\tattributeKeys: [ 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'filter.duotone' );\n\t},\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\nfunction useDuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tassets:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneFilter( filterId, colors )\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t__unstableType: 'svgs',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\t}, [ isValidFilter, blockElement ] );\n}\n\nfunction useBlockProps( { name, style } ) {\n\tconst id = useInstanceId( useBlockProps );\n\tconst selector = useMemo( () => {\n\t\tconst blockType = getBlockType( name );\n\n\t\tif ( blockType ) {\n\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t// experimental property has been, the experimental property\n\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'filter.duotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t// to be treated as a selector and requires scoping.\n\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( experimentalDuotone ) {\n\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t: rootSelector;\n\t\t\t}\n\n\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\tfallback: true,\n\t\t\t} );\n\t\t}\n\t}, [ name ] );\n\n\tconst attribute = style?.color?.duotone;\n\n\tconst filterClass = `wp-duotone-${ id }`;\n\n\tconst shouldRender = selector && attribute;\n\n\tuseDuotoneStyles( {\n\t\tclientId: id,\n\t\tid: filterClass,\n\t\tselector,\n\t\tattribute,\n\t} );\n\n\treturn {\n\t\tclassName: shouldRender ? filterClass : '',\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_colord","require","_names","_interopRequireDefault","_blocks","_compose","_hooks","_element","_components","_utils","_getBlockCssSelector","_utils2","_utils3","_filtersPanel","_blockEditingMode","_useBlockRefs","_jsxRuntime","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","extend","namesPlugin","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","useSettings","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanelPure","style","setAttributes","name","duotoneStyle","color","settings","useBlockSettings","blockEditingMode","useBlockEditingMode","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","jsxs","Fragment","children","jsx","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","_default","exports","shareWithChildBlocks","edit","useBlockProps","attributeKeys","hasSupport","hasBlockSupport","addDuotoneAttributes","attributes","Object","assign","type","useDuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","useStyleOverride","css","getDuotoneStylesheet","getDuotoneUnsetStylesheet","__unstableType","assets","getDuotoneFilter","blockElement","useBlockElement","useEffect","display","offsetHeight","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","addFilter"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings, useStyleOverride } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanelPure( { style, setAttributes, name } ) {\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: DuotonePanelPure,\n\tuseBlockProps,\n\tattributeKeys: [ 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBlockSupport( name, 'filter.duotone' );\n\t},\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\nfunction useDuotoneStyles( {\n\tclientId,\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tassets:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneFilter( filterId, colors )\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t__unstableType: 'svgs',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Safari does not always update the duotone filter when the duotone\n\t\t// colors are changed. When using Safari, force the block element to be\n\t\t// repainted by the browser to ensure any changes are reflected\n\t\t// visually. This logic matches that used on the site frontend in\n\t\t// `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor,\n\t\t\t// `inline-block` is used instead of `none` to ensure that scroll\n\t\t\t// position is not affected, as `none` results in the editor\n\t\t\t// scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style changes\n\t\t\t// in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\t\t// `colors` must be a dependency so this effect runs when the colors\n\t\t// change in Safari.\n\t}, [ isValidFilter, blockElement, colors ] );\n}\n\nfunction useBlockProps( { clientId, name, style } ) {\n\tconst id = useInstanceId( useBlockProps );\n\tconst selector = useMemo( () => {\n\t\tconst blockType = getBlockType( name );\n\n\t\tif ( blockType ) {\n\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t// experimental property has been, the experimental property\n\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'filter.duotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t// to be treated as a selector and requires scoping.\n\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tif ( experimentalDuotone ) {\n\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t: rootSelector;\n\t\t\t}\n\n\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\tfallback: true,\n\t\t\t} );\n\t\t}\n\t}, [ name ] );\n\n\tconst attribute = style?.color?.duotone;\n\n\tconst filterClass = `wp-duotone-${ id }`;\n\n\tconst shouldRender = selector && attribute;\n\n\tuseDuotoneStyles( {\n\t\tclientId,\n\t\tid: filterClass,\n\t\tselector,\n\t\tattribute,\n\t} );\n\n\treturn {\n\t\tclassName: shouldRender ? filterClass : '',\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _compose = require("@wordpress/compose");
|
|
4
|
+
var _hooks = require("@wordpress/hooks");
|
|
5
|
+
var _data = require("@wordpress/data");
|
|
6
|
+
var _grid = require("../components/grid");
|
|
7
|
+
var _store = require("../store");
|
|
8
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
/**
|
|
10
|
+
* WordPress dependencies
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
function GridLayoutSync(props) {
|
|
18
|
+
(0, _grid.useGridLayoutSync)(props);
|
|
19
|
+
}
|
|
20
|
+
function GridTools({
|
|
21
|
+
clientId,
|
|
22
|
+
layout
|
|
23
|
+
}) {
|
|
24
|
+
const {
|
|
25
|
+
isSelected,
|
|
26
|
+
isDragging
|
|
27
|
+
} = (0, _data.useSelect)(select => {
|
|
28
|
+
const {
|
|
29
|
+
isBlockSelected,
|
|
30
|
+
isDraggingBlocks
|
|
31
|
+
} = select(_store.store);
|
|
32
|
+
return {
|
|
33
|
+
isSelected: isBlockSelected(clientId),
|
|
34
|
+
isDragging: isDraggingBlocks()
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
if (!isSelected && !isDragging) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
41
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_grid.GridVisualizer, {
|
|
42
|
+
clientId: clientId,
|
|
43
|
+
parentLayout: layout
|
|
44
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(GridLayoutSync, {
|
|
45
|
+
clientId: clientId
|
|
46
|
+
})]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const addGridVisualizerToBlockEdit = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
50
|
+
if (props.attributes.layout?.type !== 'grid') {
|
|
51
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockEdit, {
|
|
52
|
+
...props
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
56
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(GridTools, {
|
|
57
|
+
clientId: props.clientId,
|
|
58
|
+
layout: props.attributes.layout
|
|
59
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(BlockEdit, {
|
|
60
|
+
...props
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
}, 'addGridVisualizerToBlockEdit');
|
|
64
|
+
(0, _hooks.addFilter)('editor.BlockEdit', 'core/editor/grid-visualizer', addGridVisualizerToBlockEdit);
|
|
65
|
+
//# sourceMappingURL=grid-visualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_compose","require","_hooks","_data","_grid","_store","_jsxRuntime","GridLayoutSync","props","useGridLayoutSync","GridTools","clientId","layout","isSelected","isDragging","useSelect","select","isBlockSelected","isDraggingBlocks","blockEditorStore","jsxs","Fragment","children","jsx","GridVisualizer","parentLayout","addGridVisualizerToBlockEdit","createHigherOrderComponent","BlockEdit","attributes","type","addFilter"],"sources":["@wordpress/block-editor/src/hooks/grid-visualizer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { GridVisualizer, useGridLayoutSync } from '../components/grid';\nimport { store as blockEditorStore } from '../store';\n\nfunction GridLayoutSync( props ) {\n\tuseGridLayoutSync( props );\n}\n\nfunction GridTools( { clientId, layout } ) {\n\tconst { isSelected, isDragging } = useSelect( ( select ) => {\n\t\tconst { isBlockSelected, isDraggingBlocks } =\n\t\t\tselect( blockEditorStore );\n\n\t\treturn {\n\t\t\tisSelected: isBlockSelected( clientId ),\n\t\t\tisDragging: isDraggingBlocks(),\n\t\t};\n\t} );\n\n\tif ( ! isSelected && ! isDragging ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<GridVisualizer clientId={ clientId } parentLayout={ layout } />\n\t\t\t<GridLayoutSync clientId={ clientId } />\n\t\t</>\n\t);\n}\n\nconst addGridVisualizerToBlockEdit = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tif ( props.attributes.layout?.type !== 'grid' ) {\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<GridTools\n\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\tlayout={ props.attributes.layout }\n\t\t\t\t/>\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'addGridVisualizerToBlockEdit'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/grid-visualizer',\n\taddGridVisualizerToBlockEdit\n);\n"],"mappings":";;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAAqD,IAAAK,WAAA,GAAAL,OAAA;AAXrD;AACA;AACA;;AAKA;AACA;AACA;;AAIA,SAASM,cAAcA,CAAEC,KAAK,EAAG;EAChC,IAAAC,uBAAiB,EAAED,KAAM,CAAC;AAC3B;AAEA,SAASE,SAASA,CAAE;EAAEC,QAAQ;EAAEC;AAAO,CAAC,EAAG;EAC1C,MAAM;IAAEC,UAAU;IAAEC;EAAW,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC3D,MAAM;MAAEC,eAAe;MAAEC;IAAiB,CAAC,GAC1CF,MAAM,CAAEG,YAAiB,CAAC;IAE3B,OAAO;MACNN,UAAU,EAAEI,eAAe,CAAEN,QAAS,CAAC;MACvCG,UAAU,EAAEI,gBAAgB,CAAC;IAC9B,CAAC;EACF,CAAE,CAAC;EAEH,IAAK,CAAEL,UAAU,IAAI,CAAEC,UAAU,EAAG;IACnC,OAAO,IAAI;EACZ;EAEA,oBACC,IAAAR,WAAA,CAAAc,IAAA,EAAAd,WAAA,CAAAe,QAAA;IAAAC,QAAA,gBACC,IAAAhB,WAAA,CAAAiB,GAAA,EAACnB,KAAA,CAAAoB,cAAc;MAACb,QAAQ,EAAGA,QAAU;MAACc,YAAY,EAAGb;IAAQ,CAAE,CAAC,eAChE,IAAAN,WAAA,CAAAiB,GAAA,EAAChB,cAAc;MAACI,QAAQ,EAAGA;IAAU,CAAE,CAAC;EAAA,CACvC,CAAC;AAEL;AAEA,MAAMe,4BAA4B,GAAG,IAAAC,mCAA0B,EAC5DC,SAAS,IAAQpB,KAAK,IAAM;EAC7B,IAAKA,KAAK,CAACqB,UAAU,CAACjB,MAAM,EAAEkB,IAAI,KAAK,MAAM,EAAG;IAC/C,oBAAO,IAAAxB,WAAA,CAAAiB,GAAA,EAACK,SAAS;MAAA,GAAMpB;IAAK,CAAI,CAAC;EAClC;EAEA,oBACC,IAAAF,WAAA,CAAAc,IAAA,EAAAd,WAAA,CAAAe,QAAA;IAAAC,QAAA,gBACC,IAAAhB,WAAA,CAAAiB,GAAA,EAACb,SAAS;MACTC,QAAQ,EAAGH,KAAK,CAACG,QAAU;MAC3BC,MAAM,EAAGJ,KAAK,CAACqB,UAAU,CAACjB;IAAQ,CAClC,CAAC,eACF,IAAAN,WAAA,CAAAiB,GAAA,EAACK,SAAS;MAAA,GAAMpB;IAAK,CAAI,CAAC;EAAA,CACzB,CAAC;AAEL,CAAC,EACD,8BACD,CAAC;AAED,IAAAuB,gBAAS,EACR,kBAAkB,EAClB,6BAA6B,EAC7BL,4BACD,CAAC","ignoreList":[]}
|
package/build/hooks/index.js
CHANGED
|
@@ -4,6 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
Object.defineProperty(exports, "__unstableBlockStyleVariationOverridesWithConfig", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _blockStyleVariation.__unstableBlockStyleVariationOverridesWithConfig;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
7
13
|
Object.defineProperty(exports, "getBorderClassesAndStyles", {
|
|
8
14
|
enumerable: true,
|
|
9
15
|
get: function () {
|
|
@@ -40,6 +46,12 @@ Object.defineProperty(exports, "getTypographyClassesAndStyles", {
|
|
|
40
46
|
return _useTypographyProps.getTypographyClassesAndStyles;
|
|
41
47
|
}
|
|
42
48
|
});
|
|
49
|
+
Object.defineProperty(exports, "setBackgroundStyleDefaults", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () {
|
|
52
|
+
return _background.setBackgroundStyleDefaults;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
43
55
|
Object.defineProperty(exports, "useBorderProps", {
|
|
44
56
|
enumerable: true,
|
|
45
57
|
get: function () {
|
|
@@ -85,7 +97,7 @@ Object.defineProperty(exports, "useZoomOut", {
|
|
|
85
97
|
var _utils = require("./utils");
|
|
86
98
|
require("./compat");
|
|
87
99
|
var _align = _interopRequireDefault(require("./align"));
|
|
88
|
-
var _background =
|
|
100
|
+
var _background = _interopRequireWildcard(require("./background"));
|
|
89
101
|
require("./lock");
|
|
90
102
|
var _anchor = _interopRequireDefault(require("./anchor"));
|
|
91
103
|
var _ariaLabel = _interopRequireDefault(require("./aria-label"));
|
|
@@ -101,7 +113,7 @@ var _fontSize = _interopRequireDefault(require("./font-size"));
|
|
|
101
113
|
var _textAlign = _interopRequireDefault(require("./text-align"));
|
|
102
114
|
var _border = _interopRequireDefault(require("./border"));
|
|
103
115
|
var _position = _interopRequireDefault(require("./position"));
|
|
104
|
-
var _blockStyleVariation =
|
|
116
|
+
var _blockStyleVariation = _interopRequireWildcard(require("./block-style-variation"));
|
|
105
117
|
var _layout = _interopRequireWildcard(require("./layout"));
|
|
106
118
|
var _layoutChild = _interopRequireDefault(require("./layout-child"));
|
|
107
119
|
var _contentLockUi = _interopRequireDefault(require("./content-lock-ui"));
|
|
@@ -110,6 +122,7 @@ var _blockHooks = _interopRequireDefault(require("./block-hooks"));
|
|
|
110
122
|
var _blockBindings = _interopRequireDefault(require("./block-bindings"));
|
|
111
123
|
require("./block-renaming");
|
|
112
124
|
require("./use-bindings-attributes");
|
|
125
|
+
require("./grid-visualizer");
|
|
113
126
|
var _useBorderProps = require("./use-border-props");
|
|
114
127
|
var _useShadowProps = require("./use-shadow-props");
|
|
115
128
|
var _useColorProps = require("./use-color-props");
|
package/build/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_align","_interopRequireDefault","_background","_anchor","_ariaLabel","_customClassName","_style","_color","_dimensions","
|
|
1
|
+
{"version":3,"names":["_utils","require","_align","_interopRequireDefault","_background","_interopRequireWildcard","_anchor","_ariaLabel","_customClassName","_style","_color","_dimensions","_duotone","_fontFamily","_fontSize","_textAlign","_border","_position","_blockStyleVariation","_layout","_layoutChild","_contentLockUi","_blockHooks","_blockBindings","_useBorderProps","_useShadowProps","_useColorProps","_useSpacingProps","_useTypographyProps","_gap","_useCachedTruthy","_useZoomOut","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","createBlockEditFilter","blockBindingsPanel","align","textAlign","anchor","customClassName","style","duotone","position","layout","contentLockUI","blockHooks","childLayout","filter","Boolean","createBlockListBlockFilter","background","color","dimensions","fontFamily","fontSize","border","blockStyleVariation","createBlockSaveFilter","ariaLabel"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tcreateBlockEditFilter,\n\tcreateBlockListBlockFilter,\n\tcreateBlockSaveFilter,\n} from './utils';\nimport './compat';\nimport align from './align';\nimport background from './background';\nimport './lock';\nimport anchor from './anchor';\nimport ariaLabel from './aria-label';\nimport customClassName from './custom-class-name';\nimport './generated-class-name';\nimport style from './style';\nimport './settings';\nimport color from './color';\nimport dimensions from './dimensions';\nimport duotone from './duotone';\nimport fontFamily from './font-family';\nimport fontSize from './font-size';\nimport textAlign from './text-align';\nimport border from './border';\nimport position from './position';\nimport blockStyleVariation from './block-style-variation';\nimport layout from './layout';\nimport childLayout from './layout-child';\nimport contentLockUI from './content-lock-ui';\nimport './metadata';\nimport blockHooks from './block-hooks';\nimport blockBindingsPanel from './block-bindings';\nimport './block-renaming';\nimport './use-bindings-attributes';\nimport './grid-visualizer';\n\ncreateBlockEditFilter(\n\t[\n\t\tblockBindingsPanel,\n\t\talign,\n\t\ttextAlign,\n\t\tanchor,\n\t\tcustomClassName,\n\t\tstyle,\n\t\tduotone,\n\t\tposition,\n\t\tlayout,\n\t\tcontentLockUI,\n\t\tblockHooks,\n\t\tchildLayout,\n\t].filter( Boolean )\n);\ncreateBlockListBlockFilter( [\n\talign,\n\ttextAlign,\n\tbackground,\n\tstyle,\n\tcolor,\n\tdimensions,\n\tduotone,\n\tfontFamily,\n\tfontSize,\n\tborder,\n\tposition,\n\tblockStyleVariation,\n\tchildLayout,\n] );\ncreateBlockSaveFilter( [\n\talign,\n\ttextAlign,\n\tanchor,\n\tariaLabel,\n\tcustomClassName,\n\tborder,\n\tcolor,\n\tstyle,\n\tfontFamily,\n\tfontSize,\n] );\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getShadowClassesAndStyles } from './use-shadow-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\nexport { setBackgroundStyleDefaults } from './background';\nexport { useZoomOut } from './use-zoom-out';\nexport { __unstableBlockStyleVariationOverridesWithConfig } from './block-style-variation';\n"],"mappings":"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","ignoreList":[]}
|