@wordpress/block-editor 15.19.1-next.v.202605131032.0 → 15.21.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 +17 -1
- package/build/components/block-card/index.cjs +51 -41
- package/build/components/block-card/index.cjs.map +3 -3
- package/build/components/block-heading-level-dropdown/heading-level-icon.cjs.map +3 -3
- package/build/components/block-icon/index.cjs +7 -1
- package/build/components/block-icon/index.cjs.map +3 -3
- package/build/components/block-inspector/index.cjs +156 -11
- package/build/components/block-inspector/index.cjs.map +3 -3
- package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs +38 -0
- package/build/components/block-inspector/inspector-pre-tabs-slot-fill.cjs.map +7 -0
- package/build/components/block-list/use-block-props/use-focus-handler.cjs +3 -4
- package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +3 -3
- package/build/components/block-list/use-block-props/use-is-hovered.cjs +24 -14
- package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +3 -3
- package/build/components/block-lock/modal.cjs.map +3 -3
- package/build/components/block-patterns-list/index.cjs +13 -2
- package/build/components/block-patterns-list/index.cjs.map +2 -2
- package/build/components/block-popover/index.cjs +13 -3
- package/build/components/block-popover/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
- package/build/components/block-visibility/modal.cjs.map +3 -3
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +3 -3
- package/build/components/child-layout-control/index.cjs +10 -5
- package/build/components/child-layout-control/index.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +7 -4
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/global-styles/advanced-panel.cjs +24 -22
- package/build/components/global-styles/advanced-panel.cjs.map +3 -3
- package/build/components/global-styles/color-panel.cjs +95 -58
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +15 -8
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/index.cjs +3 -0
- package/build/components/global-styles/index.cjs.map +2 -2
- package/build/components/global-styles/shadow-panel-components.cjs +38 -26
- package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +69 -0
- package/build/components/global-styles/state-control-badges.cjs.map +7 -0
- package/build/components/global-styles/state-control.cjs +54 -63
- package/build/components/global-styles/state-control.cjs.map +3 -3
- package/build/components/iframe/use-scale-canvas.cjs +4 -1
- package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
- package/build/components/inserter/hooks/use-patterns-state.cjs +4 -6
- package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
- package/build/components/inserter/index.cjs +1 -0
- package/build/components/inserter/index.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-preview.cjs +27 -18
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter/panel.cjs.map +3 -3
- package/build/components/inspector-controls/block-support-tools-panel.cjs +10 -2
- package/build/components/inspector-controls/block-support-tools-panel.cjs.map +2 -2
- package/build/components/inspector-controls/fill.cjs +14 -4
- package/build/components/inspector-controls/fill.cjs.map +2 -2
- package/build/components/inspector-controls/groups.cjs +2 -0
- package/build/components/inspector-controls/groups.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/index.cjs +13 -8
- package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/settings-tab.cjs +1 -4
- package/build/components/inspector-controls-tabs/settings-tab.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs +9 -0
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +11 -5
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
- package/build/components/list-view/block-select-button.cjs +20 -8
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +2 -1
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/preset-input-control/custom-value-controls.cjs +10 -1
- package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs.map +3 -3
- package/build/components/provider/use-media-upload-settings.cjs +1 -0
- package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/enter.cjs +9 -2
- package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/paste-handler.cjs +4 -4
- package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
- package/build/hooks/background.cjs +13 -3
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-fields/link/index.cjs.map +3 -3
- package/build/hooks/block-fields/media/index.cjs.map +3 -3
- package/build/hooks/block-style-state.cjs +112 -0
- package/build/hooks/block-style-state.cjs.map +7 -0
- package/build/hooks/border.cjs +13 -3
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/color.cjs +28 -9
- package/build/hooks/color.cjs.map +2 -2
- package/build/hooks/dimensions.cjs +15 -6
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +147 -61
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +263 -56
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/state-utils.cjs +94 -0
- package/build/hooks/state-utils.cjs.map +7 -0
- package/build/hooks/states.cjs +124 -0
- package/build/hooks/states.cjs.map +7 -0
- package/build/hooks/style.cjs +304 -17
- package/build/hooks/style.cjs.map +3 -3
- package/build/hooks/typography.cjs +14 -5
- package/build/hooks/typography.cjs.map +2 -2
- package/build/layouts/constrained.cjs +128 -55
- package/build/layouts/constrained.cjs.map +3 -3
- package/build/layouts/flex.cjs +119 -31
- package/build/layouts/flex.cjs.map +3 -3
- package/build/layouts/grid.cjs +103 -40
- package/build/layouts/grid.cjs.map +3 -3
- package/build/private-apis.cjs +2 -0
- package/build/private-apis.cjs.map +2 -2
- package/build/store/private-actions.cjs +18 -0
- package/build/store/private-actions.cjs.map +2 -2
- package/build/store/private-keys.cjs +10 -2
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +32 -2
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +70 -1
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/utils.cjs +1 -1
- package/build/store/utils.cjs.map +2 -2
- package/build/utils/color-values.cjs +44 -0
- package/build/utils/color-values.cjs.map +7 -0
- package/build-module/components/block-card/index.mjs +52 -45
- package/build-module/components/block-card/index.mjs.map +2 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs +2 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.mjs.map +2 -2
- package/build-module/components/block-icon/index.mjs +8 -2
- package/build-module/components/block-icon/index.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +166 -13
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs +12 -0
- package/build-module/components/block-inspector/inspector-pre-tabs-slot-fill.mjs.map +7 -0
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +7 -5
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +28 -15
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
- package/build-module/components/block-lock/modal.mjs +4 -4
- package/build-module/components/block-lock/modal.mjs.map +2 -2
- package/build-module/components/block-patterns-list/index.mjs +14 -4
- package/build-module/components/block-patterns-list/index.mjs.map +2 -2
- package/build-module/components/block-popover/index.mjs +13 -3
- package/build-module/components/block-popover/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/child-layout-control/index.mjs +10 -5
- package/build-module/components/child-layout-control/index.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +7 -4
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/global-styles/advanced-panel.mjs +25 -27
- package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +96 -59
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +20 -8
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/index.mjs +2 -0
- package/build-module/components/global-styles/index.mjs.map +2 -2
- package/build-module/components/global-styles/shadow-panel-components.mjs +39 -28
- package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +48 -0
- package/build-module/components/global-styles/state-control-badges.mjs.map +7 -0
- package/build-module/components/global-styles/state-control.mjs +57 -71
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/iframe/use-scale-canvas.mjs +4 -1
- package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-patterns-state.mjs +8 -7
- package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
- package/build-module/components/inserter/index.mjs +1 -0
- package/build-module/components/inserter/index.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs +27 -19
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter/panel.mjs +2 -2
- package/build-module/components/inserter/panel.mjs.map +2 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.mjs +10 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.mjs.map +2 -2
- package/build-module/components/inspector-controls/fill.mjs +18 -5
- package/build-module/components/inspector-controls/fill.mjs.map +2 -2
- package/build-module/components/inspector-controls/groups.mjs +2 -0
- package/build-module/components/inspector-controls/groups.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/index.mjs +14 -10
- package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/settings-tab.mjs +1 -4
- package/build-module/components/inspector-controls-tabs/settings-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +9 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +11 -5
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +20 -9
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +2 -1
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs +10 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +2 -2
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
- package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +9 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs +4 -4
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
- package/build-module/hooks/background.mjs +18 -3
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-fields/link/index.mjs +3 -3
- package/build-module/hooks/block-fields/link/index.mjs.map +2 -2
- package/build-module/hooks/block-fields/media/index.mjs +3 -3
- package/build-module/hooks/block-fields/media/index.mjs.map +2 -2
- package/build-module/hooks/block-style-state.mjs +79 -0
- package/build-module/hooks/block-style-state.mjs.map +7 -0
- package/build-module/hooks/border.mjs +18 -3
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/color.mjs +33 -9
- package/build-module/hooks/color.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs +20 -6
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +141 -61
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +270 -58
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/state-utils.mjs +64 -0
- package/build-module/hooks/state-utils.mjs.map +7 -0
- package/build-module/hooks/states.mjs +85 -0
- package/build-module/hooks/states.mjs.map +7 -0
- package/build-module/hooks/style.mjs +309 -18
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +19 -5
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +130 -57
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +123 -35
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +105 -42
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +4 -0
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/private-actions.mjs +16 -0
- package/build-module/store/private-actions.mjs.map +2 -2
- package/build-module/store/private-keys.mjs +7 -1
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +30 -2
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +69 -1
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/utils.mjs +5 -2
- package/build-module/store/utils.mjs.map +2 -2
- package/build-module/utils/color-values.mjs +19 -0
- package/build-module/utils/color-values.mjs.map +7 -0
- package/build-style/content-rtl.css +18 -3
- package/build-style/content.css +18 -3
- package/build-style/style-rtl.css +14 -17
- package/build-style/style.css +14 -17
- package/package.json +39 -39
- package/src/components/audio-player/index.native.js +7 -3
- package/src/components/block-card/index.js +67 -60
- package/src/components/block-heading-level-dropdown/heading-level-icon.js +2 -2
- package/src/components/block-icon/index.js +5 -2
- package/src/components/block-icon/index.native.js +2 -2
- package/src/components/block-inspector/index.js +153 -7
- package/src/components/block-inspector/inspector-pre-tabs-slot-fill.js +11 -0
- package/src/components/block-list/block-selection-button.native.js +3 -3
- package/src/components/block-list/content.scss +0 -6
- package/src/components/block-list/use-block-props/use-focus-handler.js +8 -6
- package/src/components/block-list/use-block-props/use-is-hovered.js +32 -15
- package/src/components/block-lock/modal.js +4 -4
- package/src/components/block-patterns-list/index.js +14 -5
- package/src/components/block-patterns-list/stories/index.story.jsx +2 -0
- package/src/components/block-patterns-list/style.scss +0 -1
- package/src/components/block-popover/index.js +20 -10
- package/src/components/block-toolbar/switch-section-style.js +2 -2
- package/src/components/block-visibility/modal.js +2 -2
- package/src/components/block-visibility/viewport-visibility-info.js +2 -2
- package/src/components/child-layout-control/index.js +15 -8
- package/src/components/child-layout-control/test/index.js +126 -0
- package/src/components/colors-gradients/control.js +10 -8
- package/src/components/colors-gradients/test/control.js +98 -1
- package/src/components/global-styles/advanced-panel.js +44 -39
- package/src/components/global-styles/color-panel.js +133 -60
- package/src/components/global-styles/dimensions-panel.js +29 -8
- package/src/components/global-styles/index.js +1 -0
- package/src/components/global-styles/shadow-panel-components.js +29 -19
- package/src/components/global-styles/state-control-badges.js +58 -0
- package/src/components/global-styles/state-control.js +28 -36
- package/src/components/global-styles/test/color-panel.js +135 -0
- package/src/components/iframe/use-scale-canvas.js +8 -2
- package/src/components/inserter/hooks/use-patterns-state.js +12 -7
- package/src/components/inserter/index.js +1 -0
- package/src/components/inserter/media-tab/media-preview.js +29 -20
- package/src/components/inserter/panel.js +2 -2
- package/src/components/inserter/style.scss +1 -0
- package/src/components/inserter-button/index.native.js +5 -2
- package/src/components/inspector-controls/block-support-tools-panel.js +10 -2
- package/src/components/inspector-controls/fill.js +18 -5
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/index.js +9 -5
- package/src/components/inspector-controls-tabs/settings-tab.js +1 -7
- package/src/components/inspector-controls-tabs/styles-tab.js +6 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +13 -7
- package/src/components/list-view/block-select-button.js +19 -9
- package/src/components/list-view/block.js +6 -1
- package/src/components/media-replace-flow/style.scss +0 -18
- package/src/components/preset-input-control/custom-value-controls.js +13 -6
- package/src/components/preset-input-control/index.js +2 -2
- package/src/components/provider/use-media-upload-settings.js +1 -0
- package/src/components/rich-text/event-listeners/enter.js +14 -2
- package/src/components/rich-text/event-listeners/paste-handler.js +5 -4
- package/src/components/unsupported-block-details/index.native.js +6 -2
- package/src/components/video-player/index.native.js +2 -2
- package/src/components/warning/index.native.js +2 -2
- package/src/hooks/background.js +59 -37
- package/src/hooks/block-fields/link/index.js +3 -3
- package/src/hooks/block-fields/media/index.js +3 -3
- package/src/hooks/block-style-state.js +127 -0
- package/src/hooks/border.js +25 -6
- package/src/hooks/color.js +40 -18
- package/src/hooks/dimensions.js +32 -11
- package/src/hooks/layout-child.js +179 -62
- package/src/hooks/layout.js +349 -75
- package/src/hooks/layout.scss +6 -0
- package/src/hooks/state-utils.js +158 -0
- package/src/hooks/states.js +109 -0
- package/src/hooks/style.js +456 -19
- package/src/hooks/test/block-style-state.js +270 -0
- package/src/hooks/test/layout.js +185 -0
- package/src/hooks/test/state-utils.js +193 -0
- package/src/hooks/test/style.js +301 -1
- package/src/hooks/typography.js +33 -14
- package/src/layouts/constrained.js +182 -95
- package/src/layouts/flex.js +141 -36
- package/src/layouts/grid.js +122 -32
- package/src/layouts/test/flex.js +57 -20
- package/src/private-apis.js +4 -0
- package/src/store/private-actions.js +32 -0
- package/src/store/private-keys.js +4 -0
- package/src/store/private-selectors.js +61 -2
- package/src/store/reducer.js +105 -1
- package/src/store/test/private-actions.js +26 -0
- package/src/store/test/private-selectors.js +143 -0
- package/src/store/test/reducer.js +363 -0
- package/src/store/utils.js +6 -2
- package/src/utils/color-values.js +28 -0
- package/src/utils/test/color-values.js +78 -0
|
@@ -41,6 +41,7 @@ export default function useInspectorControlsTabs(
|
|
|
41
41
|
color: colorGroup,
|
|
42
42
|
content: contentGroup,
|
|
43
43
|
default: defaultGroup,
|
|
44
|
+
layout: layoutGroup,
|
|
44
45
|
dimensions: dimensionsGroup,
|
|
45
46
|
list: listGroup,
|
|
46
47
|
position: positionGroup,
|
|
@@ -62,6 +63,8 @@ export default function useInspectorControlsTabs(
|
|
|
62
63
|
const styleFills = [
|
|
63
64
|
...( useSlotFills( borderGroup.name ) || [] ),
|
|
64
65
|
...( useSlotFills( colorGroup.name ) || [] ),
|
|
66
|
+
...( useSlotFills( layoutGroup.name ) || [] ),
|
|
67
|
+
...( useSlotFills( positionGroup.name ) || [] ),
|
|
65
68
|
...( useSlotFills( dimensionsGroup.name ) || [] ),
|
|
66
69
|
...( useSlotFills( stylesGroup.name ) || [] ),
|
|
67
70
|
...( useSlotFills( typographyGroup.name ) || [] ),
|
|
@@ -70,7 +73,7 @@ export default function useInspectorControlsTabs(
|
|
|
70
73
|
const hasStyleFills = styleFills.length;
|
|
71
74
|
|
|
72
75
|
// Settings Tab: If we don't have multiple tabs to display
|
|
73
|
-
// (i.e. both list view and styles), check only the default
|
|
76
|
+
// (i.e. both list view and styles), check only the default
|
|
74
77
|
// InspectorControls slots. If we have multiple tabs, we'll need to check
|
|
75
78
|
// the advanced controls slot as well to ensure they are rendered.
|
|
76
79
|
const advancedFills = [
|
|
@@ -80,7 +83,6 @@ export default function useInspectorControlsTabs(
|
|
|
80
83
|
|
|
81
84
|
const settingsFills = [
|
|
82
85
|
...( useSlotFills( defaultGroup.name ) || [] ),
|
|
83
|
-
...( useSlotFills( positionGroup.name ) || [] ),
|
|
84
86
|
...( hasListFills && hasStyleFills > 1 ? advancedFills : [] ),
|
|
85
87
|
];
|
|
86
88
|
|
|
@@ -111,14 +113,18 @@ export default function useInspectorControlsTabs(
|
|
|
111
113
|
tabs.push( TAB_SETTINGS );
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
const { tabSettings, isPreviewMode } = useSelect( ( select ) => {
|
|
117
|
+
const settings = select( blockEditorStore ).getSettings();
|
|
118
|
+
return {
|
|
119
|
+
tabSettings: settings.blockInspectorTabs,
|
|
120
|
+
isPreviewMode: settings.isPreviewMode,
|
|
121
|
+
};
|
|
122
|
+
}, [] );
|
|
123
|
+
|
|
124
|
+
if ( ! isPreviewMode && ( hasBlockStyles || hasStyleFills ) ) {
|
|
115
125
|
tabs.push( TAB_STYLES );
|
|
116
126
|
}
|
|
117
127
|
|
|
118
|
-
const tabSettings = useSelect( ( select ) => {
|
|
119
|
-
return select( blockEditorStore ).getSettings().blockInspectorTabs;
|
|
120
|
-
}, [] );
|
|
121
|
-
|
|
122
128
|
const showTabs = getShowTabs( blockName, tabSettings );
|
|
123
129
|
return showTabs ? tabs : EMPTY_ARRAY;
|
|
124
130
|
}
|
|
@@ -9,7 +9,6 @@ import clsx from 'clsx';
|
|
|
9
9
|
import {
|
|
10
10
|
__experimentalHStack as HStack,
|
|
11
11
|
__experimentalTruncate as Truncate,
|
|
12
|
-
Tooltip,
|
|
13
12
|
privateApis as componentsPrivateApis,
|
|
14
13
|
} from '@wordpress/components';
|
|
15
14
|
import { forwardRef } from '@wordpress/element';
|
|
@@ -23,6 +22,9 @@ import {
|
|
|
23
22
|
import { SPACE, ENTER } from '@wordpress/keycodes';
|
|
24
23
|
import { useSelect } from '@wordpress/data';
|
|
25
24
|
|
|
25
|
+
// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.
|
|
26
|
+
import { Tooltip } from '@wordpress/ui';
|
|
27
|
+
|
|
26
28
|
/**
|
|
27
29
|
* Internal dependencies
|
|
28
30
|
*/
|
|
@@ -164,14 +166,22 @@ function ListViewBlockSelectButton(
|
|
|
164
166
|
</span>
|
|
165
167
|
) : null }
|
|
166
168
|
{ !! visibilityLabel && (
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
169
|
+
// TODO: `visibilityLabel` is not exposed to
|
|
170
|
+
// assistive technology — the trigger is
|
|
171
|
+
// `aria-hidden`, so the label is sighted-hover-only.
|
|
172
|
+
<Tooltip.Root>
|
|
173
|
+
<Tooltip.Trigger
|
|
174
|
+
render={
|
|
175
|
+
<span
|
|
176
|
+
className="block-editor-list-view-block-select-button__block-visibility"
|
|
177
|
+
aria-hidden="true"
|
|
178
|
+
>
|
|
179
|
+
<Icon icon={ unseen } />
|
|
180
|
+
</span>
|
|
181
|
+
}
|
|
182
|
+
/>
|
|
183
|
+
<Tooltip.Popup>{ visibilityLabel }</Tooltip.Popup>
|
|
184
|
+
</Tooltip.Root>
|
|
175
185
|
) }
|
|
176
186
|
{ shouldShowLockIcon && (
|
|
177
187
|
<span className="block-editor-list-view-block-select-button__lock">
|
|
@@ -415,7 +415,12 @@ function ListViewBlock( {
|
|
|
415
415
|
|
|
416
416
|
const selectEditorBlock = useCallback(
|
|
417
417
|
( event ) => {
|
|
418
|
-
|
|
418
|
+
// For keyboard activation (Enter/Space on a link), transfer focus
|
|
419
|
+
// to the canvas with the caret at the end of the block.
|
|
420
|
+
// For mouse clicks, keep focus in the list view so that subsequent
|
|
421
|
+
// keyboard operations (arrow navigation, copy/paste) still work.
|
|
422
|
+
const isKeyboardActivation = event?.detail === 0;
|
|
423
|
+
selectBlock( event, clientId, isKeyboardActivation ? -1 : null );
|
|
419
424
|
event.preventDefault();
|
|
420
425
|
},
|
|
421
426
|
[ clientId, selectBlock ]
|
|
@@ -65,21 +65,3 @@
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
.block-editor-media-flow__error {
|
|
70
|
-
padding: 0 20px 20px 20px;
|
|
71
|
-
max-width: 255px;
|
|
72
|
-
|
|
73
|
-
.components-with-notices-ui {
|
|
74
|
-
max-width: 255px;
|
|
75
|
-
|
|
76
|
-
.components-notice__content {
|
|
77
|
-
overflow: hidden;
|
|
78
|
-
word-wrap: break-word;
|
|
79
|
-
}
|
|
80
|
-
.components-notice__dismiss {
|
|
81
|
-
position: absolute;
|
|
82
|
-
right: 10px;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
5
|
RangeControl,
|
|
6
|
-
Tooltip,
|
|
7
6
|
__experimentalUnitControl as UnitControl,
|
|
8
7
|
} from '@wordpress/components';
|
|
9
8
|
|
|
9
|
+
// eslint-disable-next-line @wordpress/use-recommended-components -- `Tooltip` is not yet on the recommended `@wordpress/ui` allow-list; landing as a migration step ahead of the wider rollout.
|
|
10
|
+
import { Tooltip } from '@wordpress/ui';
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* CustomValueControls component for handling custom value input.
|
|
12
14
|
*
|
|
@@ -93,11 +95,16 @@ export default function CustomValueControls( {
|
|
|
93
95
|
);
|
|
94
96
|
|
|
95
97
|
const wrappedUnitControl = showTooltip ? (
|
|
96
|
-
<Tooltip
|
|
97
|
-
<
|
|
98
|
-
{
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
<Tooltip.Root>
|
|
99
|
+
<Tooltip.Trigger
|
|
100
|
+
render={
|
|
101
|
+
<div className="preset-input-control__tooltip-wrapper">
|
|
102
|
+
{ unitControl }
|
|
103
|
+
</div>
|
|
104
|
+
}
|
|
105
|
+
/>
|
|
106
|
+
<Tooltip.Popup>{ ariaLabel }</Tooltip.Popup>
|
|
107
|
+
</Tooltip.Root>
|
|
101
108
|
) : (
|
|
102
109
|
unitControl
|
|
103
110
|
);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import {
|
|
5
5
|
Button,
|
|
6
6
|
CustomSelectControl,
|
|
7
|
-
Icon,
|
|
7
|
+
Icon as WCIcon,
|
|
8
8
|
RangeControl,
|
|
9
9
|
__experimentalHStack as HStack,
|
|
10
10
|
__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,
|
|
@@ -208,7 +208,7 @@ export default function PresetInputControl( {
|
|
|
208
208
|
className={ `preset-input-control__wrapper ${ className }__wrapper` }
|
|
209
209
|
>
|
|
210
210
|
{ icon && (
|
|
211
|
-
<
|
|
211
|
+
<WCIcon
|
|
212
212
|
className="preset-input-control__icon"
|
|
213
213
|
icon={ icon }
|
|
214
214
|
size={ ICON_SIZE }
|
|
@@ -16,6 +16,7 @@ function useMediaUploadSettings( settings = {} ) {
|
|
|
16
16
|
mediaUpload: settings.mediaUpload,
|
|
17
17
|
mediaSideload: settings.mediaSideload,
|
|
18
18
|
mediaFinalize: settings.mediaFinalize,
|
|
19
|
+
mediaDelete: settings.mediaDelete,
|
|
19
20
|
maxUploadFileSize: settings.maxUploadFileSize,
|
|
20
21
|
allowedMimeTypes: settings.allowedMimeTypes,
|
|
21
22
|
allImageSizes: settings.allImageSizes,
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { ENTER } from '@wordpress/keycodes';
|
|
5
5
|
import { insert, remove } from '@wordpress/rich-text';
|
|
6
|
+
import { privateApis as composePrivateApis } from '@wordpress/compose';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import { unlock } from '../../../lock-unlock';
|
|
12
|
+
|
|
13
|
+
const { subscribeDelegatedListener } = unlock( composePrivateApis );
|
|
6
14
|
|
|
7
15
|
export default ( props ) => ( element ) => {
|
|
8
16
|
function onKeyDownDeprecated( event ) {
|
|
@@ -75,10 +83,14 @@ export default ( props ) => ( element ) => {
|
|
|
75
83
|
|
|
76
84
|
// Attach the listener to the window so parent elements have the chance to
|
|
77
85
|
// prevent the default behavior.
|
|
78
|
-
|
|
86
|
+
const unsubscribeKeyDown = subscribeDelegatedListener(
|
|
87
|
+
defaultView,
|
|
88
|
+
'keydown',
|
|
89
|
+
onKeyDown
|
|
90
|
+
);
|
|
79
91
|
element.addEventListener( 'keydown', onKeyDownDeprecated );
|
|
80
92
|
return () => {
|
|
81
|
-
|
|
93
|
+
unsubscribeKeyDown();
|
|
82
94
|
element.removeEventListener( 'keydown', onKeyDownDeprecated );
|
|
83
95
|
};
|
|
84
96
|
};
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { pasteHandler } from '@wordpress/blocks';
|
|
5
5
|
import { isEmpty, insert, create } from '@wordpress/rich-text';
|
|
6
6
|
import { isURL } from '@wordpress/url';
|
|
7
|
+
import { privateApis as composePrivateApis } from '@wordpress/compose';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Internal dependencies
|
|
@@ -11,6 +12,9 @@ import { isURL } from '@wordpress/url';
|
|
|
11
12
|
import { store as blockEditorStore } from '../../../store';
|
|
12
13
|
import { addActiveFormats } from '../utils';
|
|
13
14
|
import { getPasteEventData } from '../../../utils/pasting';
|
|
15
|
+
import { unlock } from '../../../lock-unlock';
|
|
16
|
+
|
|
17
|
+
const { subscribeDelegatedListener } = unlock( composePrivateApis );
|
|
14
18
|
|
|
15
19
|
/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
|
|
16
20
|
|
|
@@ -141,8 +145,5 @@ export default ( props ) => ( element ) => {
|
|
|
141
145
|
|
|
142
146
|
// Attach the listener to the window so parent elements have the chance to
|
|
143
147
|
// prevent the default behavior.
|
|
144
|
-
|
|
145
|
-
return () => {
|
|
146
|
-
defaultView.removeEventListener( 'paste', _onPaste );
|
|
147
|
-
};
|
|
148
|
+
return subscribeDelegatedListener( defaultView, 'paste', _onPaste );
|
|
148
149
|
};
|
|
@@ -6,7 +6,11 @@ import { View, Text } from 'react-native';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
BottomSheet,
|
|
11
|
+
Icon as WCIcon,
|
|
12
|
+
TextControl,
|
|
13
|
+
} from '@wordpress/components';
|
|
10
14
|
import {
|
|
11
15
|
requestUnsupportedBlockFallback,
|
|
12
16
|
sendActionButtonPressedAction,
|
|
@@ -148,7 +152,7 @@ const UnsupportedBlockDetails = ( {
|
|
|
148
152
|
} }
|
|
149
153
|
>
|
|
150
154
|
<View style={ styles[ 'unsupported-block-details__container' ] }>
|
|
151
|
-
<
|
|
155
|
+
<WCIcon
|
|
152
156
|
icon={ icon || help }
|
|
153
157
|
color={ iconStyle.color }
|
|
154
158
|
size={ iconStyle.size }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { Component } from '@wordpress/element';
|
|
5
|
-
import { Icon } from '@wordpress/components';
|
|
5
|
+
import { Icon as WCIcon } from '@wordpress/components';
|
|
6
6
|
import { __ } from '@wordpress/i18n';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -118,7 +118,7 @@ class Video extends Component {
|
|
|
118
118
|
style={ [ style, styles.overlayContainer ] }
|
|
119
119
|
>
|
|
120
120
|
<View style={ styles.blackOverlay } />
|
|
121
|
-
<
|
|
121
|
+
<WCIcon
|
|
122
122
|
icon={ PlayIcon }
|
|
123
123
|
style={ styles.playIcon }
|
|
124
124
|
size={ styles.playIcon.size }
|
|
@@ -6,7 +6,7 @@ import { View, Text } from 'react-native';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { Icon } from '@wordpress/components';
|
|
9
|
+
import { Icon as WCIcon } from '@wordpress/components';
|
|
10
10
|
import { withPreferredColorScheme } from '@wordpress/compose';
|
|
11
11
|
import { normalizeIconObject } from '@wordpress/blocks';
|
|
12
12
|
|
|
@@ -48,7 +48,7 @@ function Warning( {
|
|
|
48
48
|
<View style={ containerStyle } { ...viewProps }>
|
|
49
49
|
{ icon && (
|
|
50
50
|
<View style={ styles.icon }>
|
|
51
|
-
<
|
|
51
|
+
<WCIcon
|
|
52
52
|
className={ iconClass || internalIconClass }
|
|
53
53
|
icon={ icon && icon.src ? icon.src : icon }
|
|
54
54
|
/>
|
package/src/hooks/background.js
CHANGED
|
@@ -23,6 +23,12 @@ import {
|
|
|
23
23
|
hasBackgroundGradientValue,
|
|
24
24
|
} from '../components/global-styles/background-panel';
|
|
25
25
|
import { globalStylesDataKey } from '../store/private-keys';
|
|
26
|
+
import {
|
|
27
|
+
getStyleForState,
|
|
28
|
+
isDefaultBlockStyleState,
|
|
29
|
+
setStyleForState,
|
|
30
|
+
useBlockStyleState,
|
|
31
|
+
} from './block-style-state';
|
|
26
32
|
|
|
27
33
|
export const BACKGROUND_SUPPORT_KEY = 'background';
|
|
28
34
|
|
|
@@ -164,6 +170,7 @@ export function BackgroundImagePanel( {
|
|
|
164
170
|
setAttributes,
|
|
165
171
|
settings,
|
|
166
172
|
} ) {
|
|
173
|
+
const selectedState = useBlockStyleState();
|
|
167
174
|
const { style, className, inheritedValue } = useSelect(
|
|
168
175
|
( select ) => {
|
|
169
176
|
const { getBlockAttributes, getSettings } =
|
|
@@ -213,44 +220,55 @@ export function BackgroundImagePanel( {
|
|
|
213
220
|
return null;
|
|
214
221
|
}
|
|
215
222
|
|
|
216
|
-
const
|
|
217
|
-
const isMigrating =
|
|
218
|
-
backgroundGradientSupported && !! style?.color?.gradient;
|
|
219
|
-
const newAttributes = {
|
|
220
|
-
style: cleanEmptyObject(
|
|
221
|
-
backgroundGradientSupported
|
|
222
|
-
? {
|
|
223
|
-
...newStyle,
|
|
224
|
-
color: {
|
|
225
|
-
...newStyle?.color,
|
|
226
|
-
gradient: undefined,
|
|
227
|
-
},
|
|
228
|
-
}
|
|
229
|
-
: newStyle
|
|
230
|
-
),
|
|
231
|
-
};
|
|
223
|
+
const isStateSelected = ! isDefaultBlockStyleState( selectedState );
|
|
232
224
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
225
|
+
const onChange = isStateSelected
|
|
226
|
+
? ( newStyle ) => {
|
|
227
|
+
setAttributes( {
|
|
228
|
+
style: setStyleForState( style, selectedState, newStyle ),
|
|
229
|
+
} );
|
|
230
|
+
}
|
|
231
|
+
: ( newStyle ) => {
|
|
232
|
+
const isMigrating =
|
|
233
|
+
backgroundGradientSupported && !! style?.color?.gradient;
|
|
234
|
+
const newAttributes = {
|
|
235
|
+
style: cleanEmptyObject(
|
|
236
|
+
backgroundGradientSupported
|
|
237
|
+
? {
|
|
238
|
+
...newStyle,
|
|
239
|
+
color: {
|
|
240
|
+
...newStyle?.color,
|
|
241
|
+
gradient: undefined,
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
: newStyle
|
|
245
|
+
),
|
|
246
|
+
};
|
|
251
247
|
|
|
252
|
-
|
|
253
|
-
|
|
248
|
+
// When migrating from color.gradient to background.gradient, preserve
|
|
249
|
+
// the has-background class so existing styles relying on it (e.g.
|
|
250
|
+
// theme padding) are not silently broken. Only add the class when a
|
|
251
|
+
// gradient value is being set — not when it is being cleared/reset.
|
|
252
|
+
// Conversely, if the gradient is cleared and has-background was added
|
|
253
|
+
// during a previous migration, remove it so it does not linger.
|
|
254
|
+
if ( isMigrating && !! newStyle?.background?.gradient ) {
|
|
255
|
+
newAttributes.className = clsx(
|
|
256
|
+
className,
|
|
257
|
+
'has-background'
|
|
258
|
+
);
|
|
259
|
+
} else if (
|
|
260
|
+
! newStyle?.background?.gradient &&
|
|
261
|
+
className?.includes( 'has-background' )
|
|
262
|
+
) {
|
|
263
|
+
newAttributes.className =
|
|
264
|
+
className
|
|
265
|
+
.split( ' ' )
|
|
266
|
+
.filter( ( c ) => c !== 'has-background' )
|
|
267
|
+
.join( ' ' ) || undefined;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
setAttributes( newAttributes );
|
|
271
|
+
};
|
|
254
272
|
|
|
255
273
|
// When background.gradient is supported but not yet explicitly set, fall
|
|
256
274
|
// back to color.gradient for display. Any write from this panel migrates
|
|
@@ -292,7 +310,11 @@ export function BackgroundImagePanel( {
|
|
|
292
310
|
settings={ updatedSettings }
|
|
293
311
|
onChange={ onChange }
|
|
294
312
|
defaultControls={ defaultControls }
|
|
295
|
-
value={
|
|
313
|
+
value={
|
|
314
|
+
isStateSelected
|
|
315
|
+
? getStyleForState( style, selectedState )
|
|
316
|
+
: styleValue
|
|
317
|
+
}
|
|
296
318
|
/>
|
|
297
319
|
);
|
|
298
320
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
5
|
Button,
|
|
6
|
-
Icon,
|
|
6
|
+
Icon as WCIcon,
|
|
7
7
|
__experimentalGrid as Grid,
|
|
8
8
|
Popover,
|
|
9
9
|
} from '@wordpress/components';
|
|
@@ -104,7 +104,7 @@ export default function Link( { data, field, onChange } ) {
|
|
|
104
104
|
>
|
|
105
105
|
{ url && (
|
|
106
106
|
<>
|
|
107
|
-
<
|
|
107
|
+
<WCIcon icon={ link } size={ 24 } />
|
|
108
108
|
<span className="block-editor-content-only-controls__link-title">
|
|
109
109
|
{ url }
|
|
110
110
|
</span>
|
|
@@ -112,7 +112,7 @@ export default function Link( { data, field, onChange } ) {
|
|
|
112
112
|
) }
|
|
113
113
|
{ ! url && (
|
|
114
114
|
<>
|
|
115
|
-
<
|
|
115
|
+
<WCIcon
|
|
116
116
|
icon={ link }
|
|
117
117
|
size={ 24 }
|
|
118
118
|
style={ { opacity: 0.3 } }
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
5
|
Button,
|
|
6
|
-
Icon,
|
|
6
|
+
Icon as WCIcon,
|
|
7
7
|
__experimentalGrid as Grid,
|
|
8
8
|
} from '@wordpress/components';
|
|
9
9
|
import { useSelect } from '@wordpress/data';
|
|
@@ -92,11 +92,11 @@ function MediaThumbnail( { data, field, attachment, config } ) {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
if ( icon ) {
|
|
95
|
-
return <
|
|
95
|
+
return <WCIcon icon={ icon } size={ 20 } />;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
return <
|
|
99
|
+
return <WCIcon icon={ mediaIcon } size={ 20 } />;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
export default function Media( { data, field, onChange, config = {} } ) {
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { createContext, useContext } from '@wordpress/element';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { cleanEmptyObject } from './utils';
|
|
10
|
+
import { getValueFromObjectPath, setImmutably } from '../utils/object';
|
|
11
|
+
|
|
12
|
+
const DEFAULT_STATE_VALUE = 'default';
|
|
13
|
+
|
|
14
|
+
export const DEFAULT_BLOCK_STYLE_STATE = {
|
|
15
|
+
viewport: DEFAULT_STATE_VALUE,
|
|
16
|
+
pseudo: DEFAULT_STATE_VALUE,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const BlockStyleStateContext = createContext( DEFAULT_BLOCK_STYLE_STATE );
|
|
20
|
+
|
|
21
|
+
export const BlockStyleStateProvider = BlockStyleStateContext.Provider;
|
|
22
|
+
|
|
23
|
+
export function useBlockStyleState() {
|
|
24
|
+
return useContext( BlockStyleStateContext );
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns true when a viewport style state is selected.
|
|
29
|
+
*
|
|
30
|
+
* @param {Object} selectedState Selected block style state.
|
|
31
|
+
* @return {boolean} Whether a viewport state is selected.
|
|
32
|
+
*/
|
|
33
|
+
export function hasViewportBlockStyleState( selectedState ) {
|
|
34
|
+
return (
|
|
35
|
+
!! selectedState?.viewport &&
|
|
36
|
+
selectedState.viewport !== DEFAULT_STATE_VALUE
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns true when a pseudo style state is selected.
|
|
42
|
+
*
|
|
43
|
+
* @param {Object} selectedState Selected block style state.
|
|
44
|
+
* @return {boolean} Whether a pseudo state is selected.
|
|
45
|
+
*/
|
|
46
|
+
export function hasPseudoBlockStyleState( selectedState ) {
|
|
47
|
+
return (
|
|
48
|
+
!! selectedState?.pseudo && selectedState.pseudo !== DEFAULT_STATE_VALUE
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Returns true when the default style state is selected.
|
|
54
|
+
*
|
|
55
|
+
* @param {Object} selectedState Selected block style state.
|
|
56
|
+
* @return {boolean} Whether the default style state is selected.
|
|
57
|
+
*/
|
|
58
|
+
export function isDefaultBlockStyleState( selectedState ) {
|
|
59
|
+
return (
|
|
60
|
+
! hasViewportBlockStyleState( selectedState ) &&
|
|
61
|
+
! hasPseudoBlockStyleState( selectedState )
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Returns the style object path for the selected block style state.
|
|
67
|
+
*
|
|
68
|
+
* @param {Object} selectedState Selected block style state.
|
|
69
|
+
* @return {string[]} Object path for the selected state styles.
|
|
70
|
+
*/
|
|
71
|
+
function getStyleStatePath( selectedState ) {
|
|
72
|
+
if ( isDefaultBlockStyleState( selectedState ) ) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return [ selectedState.viewport, selectedState.pseudo ].filter(
|
|
77
|
+
( state ) => state && state !== DEFAULT_STATE_VALUE
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function getStyleForState( style, selectedState ) {
|
|
82
|
+
const path = getStyleStatePath( selectedState );
|
|
83
|
+
if ( ! path.length ) {
|
|
84
|
+
return style;
|
|
85
|
+
}
|
|
86
|
+
return getValueFromObjectPath( style, path );
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function setStyleForState( style, selectedState, newStyle ) {
|
|
90
|
+
const path = getStyleStatePath( selectedState );
|
|
91
|
+
if ( ! path.length ) {
|
|
92
|
+
return cleanEmptyObject( newStyle );
|
|
93
|
+
}
|
|
94
|
+
return cleanEmptyObject( setImmutably( style, path, newStyle ) );
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function scopeResetAllFilterToState( selectedState, resetAllFilter ) {
|
|
98
|
+
if ( ! resetAllFilter || isDefaultBlockStyleState( selectedState ) ) {
|
|
99
|
+
return resetAllFilter;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return ( attributes ) => {
|
|
103
|
+
const existingStateStyle =
|
|
104
|
+
getStyleForState( attributes?.style, selectedState ) || {};
|
|
105
|
+
const updatedStateAttributes = resetAllFilter( {
|
|
106
|
+
style: existingStateStyle,
|
|
107
|
+
} );
|
|
108
|
+
const updatedStateStyle =
|
|
109
|
+
updatedStateAttributes &&
|
|
110
|
+
typeof updatedStateAttributes === 'object' &&
|
|
111
|
+
! Array.isArray( updatedStateAttributes ) &&
|
|
112
|
+
Object.prototype.hasOwnProperty.call(
|
|
113
|
+
updatedStateAttributes,
|
|
114
|
+
'style'
|
|
115
|
+
)
|
|
116
|
+
? updatedStateAttributes.style
|
|
117
|
+
: updatedStateAttributes;
|
|
118
|
+
|
|
119
|
+
return {
|
|
120
|
+
style: setStyleForState(
|
|
121
|
+
attributes?.style,
|
|
122
|
+
selectedState,
|
|
123
|
+
updatedStateStyle
|
|
124
|
+
),
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
}
|