@wordpress/block-editor 15.22.1-next.v.202606191442.0 → 15.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/README.md +2 -2
- package/build/components/block-editing-mode/index.cjs +13 -7
- package/build/components/block-editing-mode/index.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +32 -16
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-rename/modal.cjs +0 -1
- package/build/components/block-rename/modal.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +14 -6
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +25 -14
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/colors-gradients/dropdown.cjs +4 -1
- package/build/components/colors-gradients/dropdown.cjs.map +3 -3
- package/build/components/contrast-checker/index.cjs +22 -4
- package/build/components/contrast-checker/index.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs +0 -1
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +153 -25
- package/build/components/global-styles/background-panel.cjs.map +3 -3
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +227 -0
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +7 -0
- package/build/components/global-styles/color-panel.cjs +98 -375
- package/build/components/global-styles/color-panel.cjs.map +3 -3
- package/build/components/global-styles/dimensions-panel.cjs +0 -3
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/hooks.cjs +34 -0
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +82 -10
- package/build/components/global-styles/typography-panel.cjs.map +3 -3
- 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/styles-tab.cjs +75 -31
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/link-control/index.cjs +1 -2
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/list-view/block-select-button.cjs +1 -10
- package/build/components/list-view/block-select-button.cjs.map +3 -3
- package/build/components/provider/use-block-sync.cjs +3 -1
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/url-popover/image-url-input-ui.cjs +0 -2
- package/build/components/url-popover/image-url-input-ui.cjs.map +2 -2
- package/build/components/use-block-display-information/index.cjs +10 -3
- package/build/components/use-block-display-information/index.cjs.map +2 -2
- package/build/hooks/anchor.cjs +0 -1
- package/build/hooks/anchor.cjs.map +2 -2
- package/build/hooks/background.cjs +124 -75
- package/build/hooks/background.cjs.map +3 -3
- package/build/hooks/color.cjs +0 -162
- package/build/hooks/color.cjs.map +3 -3
- package/build/hooks/contrast-checker.cjs +31 -28
- package/build/hooks/contrast-checker.cjs.map +3 -3
- package/build/hooks/custom-class-name.cjs +0 -1
- package/build/hooks/custom-class-name.cjs.map +2 -2
- package/build/hooks/elements.cjs +142 -0
- package/build/hooks/elements.cjs.map +7 -0
- package/build/hooks/grid-visualizer.cjs +21 -11
- package/build/hooks/grid-visualizer.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +38 -8
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +6 -3
- package/build/hooks/layout.cjs.map +2 -2
- package/build/hooks/states.cjs +2 -2
- package/build/hooks/states.cjs.map +2 -2
- package/build/hooks/style.cjs +8 -4
- package/build/hooks/style.cjs.map +2 -2
- package/build/hooks/typography.cjs +62 -10
- package/build/hooks/typography.cjs.map +3 -3
- package/build/layouts/flex.cjs +99 -6
- package/build/layouts/flex.cjs.map +2 -2
- package/build/utils/block-bindings.cjs +9 -9
- package/build/utils/block-bindings.cjs.map +3 -3
- package/build/utils/color-values.cjs +10 -1
- package/build/utils/color-values.cjs.map +3 -3
- package/build/utils/dom.cjs +2 -5
- package/build/utils/dom.cjs.map +3 -3
- package/build/utils/fit-text-frontend.cjs +6 -2
- package/build/utils/fit-text-frontend.cjs.map +3 -3
- package/build/utils/fit-text-utils.cjs +1 -1
- package/build/utils/fit-text-utils.cjs.map +3 -3
- package/build/utils/format-font-style.cjs +1 -1
- package/build/utils/format-font-style.cjs.map +3 -3
- package/build/utils/format-font-weight.cjs +1 -1
- package/build/utils/format-font-weight.cjs.map +3 -3
- package/build/utils/get-editor-region.cjs +4 -2
- package/build/utils/get-editor-region.cjs.map +3 -3
- package/build/utils/get-font-styles-and-weights.cjs +8 -12
- package/build/utils/get-font-styles-and-weights.cjs.map +3 -3
- package/build/utils/get-px-from-css-unit.cjs +1 -1
- package/build/utils/get-px-from-css-unit.cjs.map +1 -1
- package/build/utils/index.cjs +1 -1
- package/build/utils/index.cjs.map +1 -1
- package/build/utils/math.cjs +1 -1
- package/build/utils/math.cjs.map +3 -3
- package/build/utils/object.cjs +8 -8
- package/build/utils/object.cjs.map +3 -3
- package/build/utils/order-inserter-block-items.cjs +1 -1
- package/build/utils/order-inserter-block-items.cjs.map +3 -3
- package/build/utils/pasting.cjs +4 -2
- package/build/utils/pasting.cjs.map +3 -3
- package/build/utils/selection.cjs +2 -1
- package/build/utils/selection.cjs.map +3 -3
- package/build/utils/sorting.cjs +9 -3
- package/build/utils/sorting.cjs.map +3 -3
- package/build/utils/transform-styles/index.cjs +3 -2
- package/build/utils/transform-styles/index.cjs.map +3 -3
- package/build/utils/transform-styles/postcss-urlrebase.d.cjs +2 -0
- package/build/utils/transform-styles/postcss-urlrebase.d.cjs.map +7 -0
- package/build/utils/transform-styles/types.cjs +19 -0
- package/build/utils/transform-styles/types.cjs.map +7 -0
- package/build/utils/types.cjs +19 -0
- package/build/utils/types.cjs.map +7 -0
- package/build-module/components/block-editing-mode/index.mjs +14 -8
- package/build-module/components/block-editing-mode/index.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +32 -16
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-rename/modal.mjs +0 -1
- package/build-module/components/block-rename/modal.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +14 -6
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +27 -15
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/colors-gradients/dropdown.mjs +4 -1
- package/build-module/components/colors-gradients/dropdown.mjs.map +2 -2
- package/build-module/components/contrast-checker/index.mjs +18 -4
- package/build-module/components/contrast-checker/index.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs +0 -1
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +155 -27
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +207 -0
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +7 -0
- package/build-module/components/global-styles/color-panel.mjs +106 -387
- package/build-module/components/global-styles/color-panel.mjs.map +3 -3
- package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +33 -0
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +84 -10
- package/build-module/components/global-styles/typography-panel.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/styles-tab.mjs +75 -31
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs +1 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +2 -17
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs +3 -1
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/url-popover/image-url-input-ui.mjs +0 -2
- package/build-module/components/url-popover/image-url-input-ui.mjs.map +2 -2
- package/build-module/components/use-block-display-information/index.mjs +10 -3
- package/build-module/components/use-block-display-information/index.mjs.map +2 -2
- package/build-module/hooks/anchor.mjs +0 -1
- package/build-module/hooks/anchor.mjs.map +2 -2
- package/build-module/hooks/background.mjs +123 -75
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/color.mjs +2 -175
- package/build-module/hooks/color.mjs.map +2 -2
- package/build-module/hooks/contrast-checker.mjs +32 -19
- package/build-module/hooks/contrast-checker.mjs.map +2 -2
- package/build-module/hooks/custom-class-name.mjs +0 -1
- package/build-module/hooks/custom-class-name.mjs.map +2 -2
- package/build-module/hooks/elements.mjs +115 -0
- package/build-module/hooks/elements.mjs.map +7 -0
- package/build-module/hooks/grid-visualizer.mjs +21 -11
- package/build-module/hooks/grid-visualizer.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +41 -8
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +6 -3
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/states.mjs +2 -2
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/style.mjs +9 -5
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +62 -10
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +105 -7
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/utils/block-bindings.mjs +9 -9
- package/build-module/utils/block-bindings.mjs.map +3 -3
- package/build-module/utils/color-values.mjs +9 -1
- package/build-module/utils/color-values.mjs.map +3 -3
- package/build-module/utils/dom.mjs +2 -5
- package/build-module/utils/dom.mjs.map +3 -3
- package/build-module/utils/fit-text-frontend.mjs +6 -2
- package/build-module/utils/fit-text-frontend.mjs.map +3 -3
- package/build-module/utils/fit-text-utils.mjs +1 -1
- package/build-module/utils/fit-text-utils.mjs.map +3 -3
- package/build-module/utils/format-font-style.mjs +1 -1
- package/build-module/utils/format-font-style.mjs.map +3 -3
- package/build-module/utils/format-font-weight.mjs +1 -1
- package/build-module/utils/format-font-weight.mjs.map +3 -3
- package/build-module/utils/get-editor-region.mjs +4 -2
- package/build-module/utils/get-editor-region.mjs.map +3 -3
- package/build-module/utils/get-font-styles-and-weights.mjs +8 -12
- package/build-module/utils/get-font-styles-and-weights.mjs.map +3 -3
- package/build-module/utils/get-px-from-css-unit.mjs +1 -1
- package/build-module/utils/get-px-from-css-unit.mjs.map +1 -1
- package/build-module/utils/index.mjs +1 -1
- package/build-module/utils/index.mjs.map +1 -1
- package/build-module/utils/math.mjs +1 -1
- package/build-module/utils/math.mjs.map +3 -3
- package/build-module/utils/object.mjs +8 -8
- package/build-module/utils/object.mjs.map +3 -3
- package/build-module/utils/order-inserter-block-items.mjs +1 -1
- package/build-module/utils/order-inserter-block-items.mjs.map +3 -3
- package/build-module/utils/pasting.mjs +4 -2
- package/build-module/utils/pasting.mjs.map +3 -3
- package/build-module/utils/selection.mjs +2 -1
- package/build-module/utils/selection.mjs.map +3 -3
- package/build-module/utils/sorting.mjs +9 -3
- package/build-module/utils/sorting.mjs.map +3 -3
- package/build-module/utils/transform-styles/index.mjs +3 -2
- package/build-module/utils/transform-styles/index.mjs.map +3 -3
- package/build-module/utils/transform-styles/postcss-urlrebase.d.mjs +1 -0
- package/build-module/utils/transform-styles/postcss-urlrebase.d.mjs.map +7 -0
- package/build-module/utils/transform-styles/types.mjs +1 -0
- package/build-module/utils/transform-styles/types.mjs.map +7 -0
- package/build-module/utils/types.mjs +1 -0
- package/build-module/utils/types.mjs.map +7 -0
- package/build-style/content-rtl.css +2 -0
- package/build-style/content.css +2 -0
- package/build-style/style-rtl.css +34 -41
- package/build-style/style.css +34 -41
- package/build-types/utils/block-bindings.d.ts +27 -0
- package/build-types/utils/block-bindings.d.ts.map +1 -0
- package/build-types/utils/color-values.d.ts +40 -0
- package/build-types/utils/color-values.d.ts.map +1 -0
- package/build-types/utils/dom.d.ts +19 -19
- package/build-types/utils/dom.d.ts.map +1 -1
- package/build-types/utils/fit-text-frontend.d.ts +7 -0
- package/build-types/utils/fit-text-frontend.d.ts.map +1 -0
- package/build-types/utils/fit-text-utils.d.ts +15 -0
- package/build-types/utils/fit-text-utils.d.ts.map +1 -0
- package/build-types/utils/format-font-style.d.ts +12 -0
- package/build-types/utils/format-font-style.d.ts.map +1 -0
- package/build-types/utils/format-font-weight.d.ts +12 -0
- package/build-types/utils/format-font-weight.d.ts.map +1 -0
- package/build-types/utils/get-editor-region.d.ts +9 -0
- package/build-types/utils/get-editor-region.d.ts.map +1 -0
- package/build-types/utils/get-font-styles-and-weights.d.ts +16 -0
- package/build-types/utils/get-font-styles-and-weights.d.ts.map +1 -0
- package/build-types/utils/get-px-from-css-unit.d.ts +10 -0
- package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -0
- package/build-types/utils/index.d.ts +3 -0
- package/build-types/utils/index.d.ts.map +1 -0
- package/build-types/utils/math.d.ts +61 -0
- package/build-types/utils/math.d.ts.map +1 -0
- package/build-types/utils/object.d.ts +39 -0
- package/build-types/utils/object.d.ts.map +1 -0
- package/build-types/utils/order-inserter-block-items.d.ts +13 -0
- package/build-types/utils/order-inserter-block-items.d.ts.map +1 -0
- package/build-types/utils/pasting.d.ts +28 -0
- package/build-types/utils/pasting.d.ts.map +1 -0
- package/build-types/utils/selection.d.ts +21 -0
- package/build-types/utils/selection.d.ts.map +1 -0
- package/build-types/utils/sorting.d.ts +17 -0
- package/build-types/utils/sorting.d.ts.map +1 -0
- package/build-types/utils/transform-styles/index.d.ts +15 -0
- package/build-types/utils/transform-styles/index.d.ts.map +1 -0
- package/build-types/utils/transform-styles/types.d.ts +13 -0
- package/build-types/utils/transform-styles/types.d.ts.map +1 -0
- package/build-types/utils/types.d.ts +28 -0
- package/build-types/utils/types.d.ts.map +1 -0
- package/package.json +40 -39
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -0
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -0
- package/src/components/block-editing-mode/index.js +17 -9
- package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -0
- package/src/components/block-inspector/index.js +20 -10
- package/src/components/block-rename/modal.js +0 -1
- package/src/components/block-toolbar/block-toolbar-icon.js +22 -6
- package/src/components/block-toolbar/test/block-toolbar-icon.js +99 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +4 -0
- package/src/components/colors-gradients/control.js +29 -12
- package/src/components/colors-gradients/dropdown.js +4 -1
- package/src/components/colors-gradients/style.scss +39 -2
- package/src/components/contrast-checker/README.md +9 -0
- package/src/components/contrast-checker/index.js +42 -3
- package/src/components/date-format-picker/index.js +0 -1
- package/src/components/default-block-appender/content.scss +3 -0
- package/src/components/global-styles/background-panel.js +201 -34
- package/src/components/global-styles/color-gradient-dropdown-item.js +258 -0
- package/src/components/global-styles/color-panel.js +125 -487
- package/src/components/global-styles/dimensions-panel.js +0 -3
- package/src/components/global-styles/hooks.js +45 -0
- package/src/components/global-styles/test/background-panel.js +56 -0
- package/src/components/global-styles/test/color-panel.js +172 -118
- package/src/components/global-styles/test/typography-panel.js +167 -0
- package/src/components/global-styles/typography-panel.js +100 -11
- package/src/components/inspector-controls/README.md +0 -2
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +74 -28
- package/src/components/link-control/index.js +0 -1
- package/src/components/link-control/test/index.js +2 -3
- package/src/components/list-view/block-select-button.js +2 -17
- package/src/components/provider/use-block-sync.js +3 -1
- package/src/components/rich-text/content.scss +2 -0
- package/src/components/url-popover/image-url-input-ui.js +0 -2
- package/src/components/use-block-display-information/index.js +15 -2
- package/src/components/use-block-display-information/test/index.js +140 -0
- package/src/hooks/anchor.js +0 -1
- package/src/hooks/background.js +210 -133
- package/src/hooks/background.scss +0 -35
- package/src/hooks/color.js +2 -205
- package/src/hooks/color.scss +3 -9
- package/src/hooks/contrast-checker.js +60 -17
- package/src/hooks/custom-class-name.js +0 -1
- package/src/hooks/elements.js +140 -0
- package/src/hooks/elements.scss +8 -0
- package/src/hooks/grid-visualizer.js +59 -45
- package/src/hooks/layout-child.js +51 -12
- package/src/hooks/layout.js +6 -3
- package/src/hooks/states.js +2 -2
- package/src/hooks/style.js +11 -7
- package/src/hooks/test/background.js +59 -0
- package/src/hooks/test/block-style-state.js +14 -14
- package/src/hooks/test/layout.js +6 -6
- package/src/hooks/test/style.js +8 -8
- package/src/hooks/typography.js +70 -6
- package/src/layouts/flex.js +118 -15
- package/src/store/test/private-selectors.js +28 -7
- package/src/store/test/reducer.js +61 -10
- package/src/style.scss +1 -0
- package/src/utils/block-bindings.ts +51 -0
- package/src/utils/color-values.ts +63 -0
- package/src/utils/{dom.js → dom.ts} +27 -27
- package/src/utils/{fit-text-frontend.js → fit-text-frontend.ts} +12 -4
- package/src/utils/{fit-text-utils.js → fit-text-utils.ts} +15 -7
- package/src/utils/{format-font-style.js → format-font-style.ts} +10 -3
- package/src/utils/{format-font-weight.js → format-font-weight.ts} +10 -3
- package/src/utils/{get-editor-region.js → get-editor-region.ts} +10 -6
- package/src/utils/{get-font-styles-and-weights.js → get-font-styles-and-weights.ts} +21 -17
- package/src/utils/{math.js → math.ts} +37 -30
- package/src/utils/object.ts +89 -0
- package/src/utils/{order-inserter-block-items.js → order-inserter-block-items.ts} +8 -5
- package/src/utils/{pasting.js → pasting.ts} +18 -11
- package/src/utils/{selection.js → selection.ts} +11 -4
- package/src/utils/sorting.ts +81 -0
- package/src/utils/test/color-values.js +44 -1
- package/src/utils/transform-styles/{index.js → index.ts} +25 -25
- package/src/utils/transform-styles/postcss-urlrebase.d.ts +15 -0
- package/src/utils/transform-styles/types.ts +13 -0
- package/src/utils/types.ts +29 -0
- package/src/utils/block-bindings.js +0 -46
- package/src/utils/color-values.js +0 -28
- package/src/utils/object.js +0 -67
- package/src/utils/sorting.js +0 -54
- /package/src/utils/{get-px-from-css-unit.js → get-px-from-css-unit.ts} +0 -0
- /package/src/utils/{index.js → index.ts} +0 -0
|
@@ -5,6 +5,7 @@ import { useSelect } from "@wordpress/data";
|
|
|
5
5
|
import { GridVisualizer, useGridLayoutSync } from "../components/grid/index.mjs";
|
|
6
6
|
import { store as blockEditorStore } from "../store/index.mjs";
|
|
7
7
|
import { unlock } from "../lock-unlock.mjs";
|
|
8
|
+
import { useBlockElement } from "../components/block-list/use-block-props/use-block-refs.mjs";
|
|
8
9
|
import useBlockVisibility from "../components/block-visibility/use-block-visibility.mjs";
|
|
9
10
|
import { deviceTypeKey } from "../store/private-keys.mjs";
|
|
10
11
|
import { BLOCK_VISIBILITY_VIEWPORTS } from "../components/block-visibility/constants.mjs";
|
|
@@ -13,7 +14,7 @@ function GridLayoutSync(props) {
|
|
|
13
14
|
useGridLayoutSync(props);
|
|
14
15
|
}
|
|
15
16
|
function GridTools({ clientId, layout }) {
|
|
16
|
-
const { isVisible, blockVisibility, deviceType
|
|
17
|
+
const { isVisible, blockVisibility, deviceType } = useSelect(
|
|
17
18
|
(select) => {
|
|
18
19
|
const {
|
|
19
20
|
isBlockSelected,
|
|
@@ -27,28 +28,37 @@ function GridTools({ clientId, layout }) {
|
|
|
27
28
|
if (!isDraggingBlocks() && !isBlockSelected(clientId) || getTemplateLock(clientId) || getBlockEditingMode(clientId) !== "default" || hasSelectedInnerBlock(clientId)) {
|
|
28
29
|
return { isVisible: false };
|
|
29
30
|
}
|
|
30
|
-
const { isBlockParentHiddenAtViewport } = unlock(
|
|
31
|
-
select(blockEditorStore)
|
|
32
|
-
);
|
|
33
31
|
const attributes = getBlockAttributes(clientId);
|
|
34
32
|
const settings = getSettings();
|
|
35
33
|
const currentDeviceType = settings?.[deviceTypeKey]?.toLowerCase() || BLOCK_VISIBILITY_VIEWPORTS.desktop.key;
|
|
36
34
|
return {
|
|
37
35
|
isVisible: true,
|
|
38
36
|
blockVisibility: attributes?.metadata?.blockVisibility,
|
|
39
|
-
deviceType: currentDeviceType
|
|
40
|
-
isAnyAncestorHidden: isBlockParentHiddenAtViewport(
|
|
41
|
-
clientId,
|
|
42
|
-
currentDeviceType
|
|
43
|
-
)
|
|
37
|
+
deviceType: currentDeviceType
|
|
44
38
|
};
|
|
45
39
|
},
|
|
46
40
|
[clientId]
|
|
47
41
|
);
|
|
48
|
-
const
|
|
42
|
+
const blockElement = useBlockElement(clientId);
|
|
43
|
+
const rawCanvasView = blockElement?.ownerDocument?.defaultView;
|
|
44
|
+
const canvasView = rawCanvasView === null ? void 0 : rawCanvasView;
|
|
45
|
+
const { isBlockCurrentlyHidden, currentViewport } = useBlockVisibility({
|
|
49
46
|
blockVisibility,
|
|
50
|
-
deviceType
|
|
47
|
+
deviceType,
|
|
48
|
+
view: canvasView
|
|
51
49
|
});
|
|
50
|
+
const isAnyAncestorHidden = useSelect(
|
|
51
|
+
(select) => {
|
|
52
|
+
if (!isVisible) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const { isBlockParentHiddenAtViewport } = unlock(
|
|
56
|
+
select(blockEditorStore)
|
|
57
|
+
);
|
|
58
|
+
return isBlockParentHiddenAtViewport(clientId, currentViewport);
|
|
59
|
+
},
|
|
60
|
+
[clientId, currentViewport, isVisible]
|
|
61
|
+
);
|
|
52
62
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
53
63
|
/* @__PURE__ */ jsx(GridLayoutSync, { clientId }),
|
|
54
64
|
isVisible && !isBlockCurrentlyHidden && !isAnyAncestorHidden && /* @__PURE__ */ jsx(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/grid-visualizer.js"],
|
|
4
|
-
"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';\nimport { unlock } from '../lock-unlock';\nimport useBlockVisibility from '../components/block-visibility/use-block-visibility';\nimport { deviceTypeKey } from '../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from '../components/block-visibility/constants';\n\nfunction GridLayoutSync( props ) {\n\tuseGridLayoutSync( props );\n}\n\nfunction GridTools( { clientId, layout } ) {\n\tconst { isVisible, blockVisibility, deviceType
|
|
5
|
-
"mappings": ";AAGA,SAAS,kCAAkC;AAC3C,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAK1B,SAAS,gBAAgB,yBAAyB;AAClD,SAAS,SAAS,wBAAwB;AAC1C,SAAS,cAAc;AACvB,OAAO,wBAAwB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,kCAAkC;
|
|
4
|
+
"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';\nimport { unlock } from '../lock-unlock';\nimport { useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\nimport useBlockVisibility from '../components/block-visibility/use-block-visibility';\nimport { deviceTypeKey } from '../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from '../components/block-visibility/constants';\n\nfunction GridLayoutSync( props ) {\n\tuseGridLayoutSync( props );\n}\n\nfunction GridTools( { clientId, layout } ) {\n\tconst { isVisible, blockVisibility, deviceType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisDraggingBlocks,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// These calls are purposely ordered from least expensive to most expensive.\n\t\t\t// Hides the visualizer in cases where the user is not or cannot interact with it.\n\t\t\t// Also hide if a child block is selected, because layout-child.js will render\n\t\t\t// the visualizer in that case (with proper childGridClientId handling).\n\t\t\tif (\n\t\t\t\t( ! isDraggingBlocks() && ! isBlockSelected( clientId ) ) ||\n\t\t\t\tgetTemplateLock( clientId ) ||\n\t\t\t\tgetBlockEditingMode( clientId ) !== 'default' ||\n\t\t\t\thasSelectedInnerBlock( clientId )\n\t\t\t) {\n\t\t\t\treturn { isVisible: false };\n\t\t\t}\n\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst settings = getSettings();\n\t\t\tconst currentDeviceType =\n\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() ||\n\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS.desktop.key;\n\n\t\t\treturn {\n\t\t\t\tisVisible: true,\n\t\t\t\tblockVisibility: attributes?.metadata?.blockVisibility,\n\t\t\t\tdeviceType: currentDeviceType,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the block's DOM element to derive the canvas iframe window,\n\t// so viewport detection matches the actual block rendering context\n\tconst blockElement = useBlockElement( clientId );\n\tconst rawCanvasView = blockElement?.ownerDocument?.defaultView;\n\tconst canvasView = rawCanvasView === null ? undefined : rawCanvasView;\n\n\tconst { isBlockCurrentlyHidden, currentViewport } = useBlockVisibility( {\n\t\tblockVisibility,\n\t\tdeviceType,\n\t\tview: canvasView,\n\t} );\n\n\t// Check whether any ancestor is hidden at the viewport actually detected\n\t// from the canvas, so it stays consistent with how blocks are hidden.\n\tconst isAnyAncestorHidden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isVisible ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { isBlockParentHiddenAtViewport } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\treturn isBlockParentHiddenAtViewport( clientId, currentViewport );\n\t\t},\n\t\t[ clientId, currentViewport, isVisible ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<GridLayoutSync clientId={ clientId } />\n\t\t\t{ isVisible &&\n\t\t\t\t! isBlockCurrentlyHidden &&\n\t\t\t\t! isAnyAncestorHidden && (\n\t\t\t\t\t<GridVisualizer\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tparentLayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst addGridVisualizerToBlockEdit = createHigherOrderComponent(\n\t( BlockEdit ) =>\n\t\tfunction AddGridVisualizerToBlockEdit( props ) {\n\t\t\tif ( props.attributes.layout?.type !== 'grid' ) {\n\t\t\t\treturn <BlockEdit key=\"edit\" { ...props } />;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<GridTools\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\tlayout={ props.attributes.layout }\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t\t</>\n\t\t\t);\n\t\t},\n\t'addGridVisualizerToBlockEdit'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/grid-visualizer',\n\taddGridVisualizerToBlockEdit\n);\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,kCAAkC;AAC3C,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAK1B,SAAS,gBAAgB,yBAAyB;AAClD,SAAS,SAAS,wBAAwB;AAC1C,SAAS,cAAc;AACvB,SAAS,uBAAuB;AAChC,OAAO,wBAAwB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,kCAAkC;AA2EzC,mBACC,KADD;AAzEF,SAAS,eAAgB,OAAQ;AAChC,oBAAmB,KAAM;AAC1B;AAEA,SAAS,UAAW,EAAE,UAAU,OAAO,GAAI;AAC1C,QAAM,EAAE,WAAW,iBAAiB,WAAW,IAAI;AAAA,IAClD,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,gBAAiB;AAM7B,UACG,CAAE,iBAAiB,KAAK,CAAE,gBAAiB,QAAS,KACtD,gBAAiB,QAAS,KAC1B,oBAAqB,QAAS,MAAM,aACpC,sBAAuB,QAAS,GAC/B;AACD,eAAO,EAAE,WAAW,MAAM;AAAA,MAC3B;AAEA,YAAM,aAAa,mBAAoB,QAAS;AAChD,YAAM,WAAW,YAAY;AAC7B,YAAM,oBACL,WAAY,aAAc,GAAG,YAAY,KACzC,2BAA2B,QAAQ;AAEpC,aAAO;AAAA,QACN,WAAW;AAAA,QACX,iBAAiB,YAAY,UAAU;AAAA,QACvC,YAAY;AAAA,MACb;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAIA,QAAM,eAAe,gBAAiB,QAAS;AAC/C,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,aAAa,kBAAkB,OAAO,SAAY;AAExD,QAAM,EAAE,wBAAwB,gBAAgB,IAAI,mBAAoB;AAAA,IACvE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACP,CAAE;AAIF,QAAM,sBAAsB;AAAA,IAC3B,CAAE,WAAY;AACb,UAAK,CAAE,WAAY;AAClB,eAAO;AAAA,MACR;AACA,YAAM,EAAE,8BAA8B,IAAI;AAAA,QACzC,OAAQ,gBAAiB;AAAA,MAC1B;AACA,aAAO,8BAA+B,UAAU,eAAgB;AAAA,IACjE;AAAA,IACA,CAAE,UAAU,iBAAiB,SAAU;AAAA,EACxC;AAEA,SACC,iCACC;AAAA,wBAAC,kBAAe,UAAsB;AAAA,IACpC,aACD,CAAE,0BACF,CAAE,uBACD;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAe;AAAA;AAAA,IAChB;AAAA,KAEH;AAEF;AAEA,IAAM,+BAA+B;AAAA,EACpC,CAAE,cACD,SAAS,6BAA8B,OAAQ;AAC9C,QAAK,MAAM,WAAW,QAAQ,SAAS,QAAS;AAC/C,aAAO,oBAAC,aAAuB,GAAG,SAAZ,MAAoB;AAAA,IAC3C;AAEA,WACC,iCACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,UAAW,MAAM;AAAA,UACjB,QAAS,MAAM,WAAW;AAAA;AAAA,MAC3B;AAAA,MACA,oBAAC,aAAuB,GAAG,SAAZ,MAAoB;AAAA,OACpC;AAAA,EAEF;AAAA,EACD;AACD;AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,6 +3,7 @@ import { useInstanceId } from "@wordpress/compose";
|
|
|
3
3
|
import { useSelect } from "@wordpress/data";
|
|
4
4
|
import { useState } from "@wordpress/element";
|
|
5
5
|
import { store as blockEditorStore } from "../store/index.mjs";
|
|
6
|
+
import { unlock } from "../lock-unlock.mjs";
|
|
6
7
|
import { useStyleOverride } from "./utils.mjs";
|
|
7
8
|
import { useLayout } from "../components/block-list/layout.mjs";
|
|
8
9
|
import {
|
|
@@ -10,14 +11,19 @@ import {
|
|
|
10
11
|
GridItemResizer,
|
|
11
12
|
GridItemMovers
|
|
12
13
|
} from "../components/grid/index.mjs";
|
|
14
|
+
import { useBlockElement } from "../components/block-list/use-block-props/use-block-refs.mjs";
|
|
13
15
|
import useBlockVisibility from "../components/block-visibility/use-block-visibility.mjs";
|
|
14
16
|
import { deviceTypeKey } from "../store/private-keys.mjs";
|
|
15
17
|
import { BLOCK_VISIBILITY_VIEWPORTS } from "../components/block-visibility/constants.mjs";
|
|
18
|
+
import {
|
|
19
|
+
DEFAULT_BLOCK_STYLE_STATE,
|
|
20
|
+
getStyleForState
|
|
21
|
+
} from "./block-style-state.mjs";
|
|
16
22
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
23
|
var LAYOUT_CHILD_BLOCK_PROPS_REFERENCE = {};
|
|
18
24
|
var RESPONSIVE_BREAKPOINTS = {
|
|
19
|
-
mobile: "@media (width <= 480px)",
|
|
20
|
-
tablet: "@media (480px < width <= 782px)"
|
|
25
|
+
"@mobile": "@media (width <= 480px)",
|
|
26
|
+
"@tablet": "@media (480px < width <= 782px)"
|
|
21
27
|
};
|
|
22
28
|
var FLEX_CHILD_LAYOUT_VALUES = {
|
|
23
29
|
fit: "fit",
|
|
@@ -167,7 +173,10 @@ function getResponsiveChildLayoutStyles({
|
|
|
167
173
|
}) {
|
|
168
174
|
const baseLayout = style?.layout ?? {};
|
|
169
175
|
return Object.entries(RESPONSIVE_BREAKPOINTS).map(([viewport, mediaQuery]) => {
|
|
170
|
-
const viewportLayout = style
|
|
176
|
+
const viewportLayout = getStyleForState(style, {
|
|
177
|
+
viewport,
|
|
178
|
+
pseudo: DEFAULT_BLOCK_STYLE_STATE.pseudo
|
|
179
|
+
})?.layout;
|
|
171
180
|
if (!viewportLayout || !Object.keys(viewportLayout).length) {
|
|
172
181
|
return "";
|
|
173
182
|
}
|
|
@@ -282,29 +291,53 @@ function GridTools({
|
|
|
282
291
|
const parentAttributes = getBlockAttributes(_rootClientId);
|
|
283
292
|
const blockAttributes = getBlockAttributes(clientId);
|
|
284
293
|
const settings = getSettings();
|
|
294
|
+
const currentDeviceType = settings?.[deviceTypeKey]?.toLowerCase() || BLOCK_VISIBILITY_VIEWPORTS.desktop.key;
|
|
285
295
|
return {
|
|
286
296
|
rootClientId: _rootClientId,
|
|
287
297
|
isVisible: true,
|
|
288
298
|
parentBlockVisibility: parentAttributes?.metadata?.blockVisibility,
|
|
289
299
|
blockBlockVisibility: blockAttributes?.metadata?.blockVisibility,
|
|
290
|
-
deviceType:
|
|
300
|
+
deviceType: currentDeviceType,
|
|
291
301
|
// Check if the selected child block is itself a grid.
|
|
292
302
|
isChildBlockAGrid: blockAttributes?.layout?.type === "grid"
|
|
293
303
|
};
|
|
294
304
|
},
|
|
295
305
|
[clientId]
|
|
296
306
|
);
|
|
297
|
-
const
|
|
307
|
+
const blockElement = useBlockElement(clientId);
|
|
308
|
+
const rawCanvasView = blockElement?.ownerDocument?.defaultView;
|
|
309
|
+
const canvasView = rawCanvasView === null ? void 0 : rawCanvasView;
|
|
310
|
+
const {
|
|
311
|
+
isBlockCurrentlyHidden: isParentBlockCurrentlyHidden,
|
|
312
|
+
currentViewport
|
|
313
|
+
} = useBlockVisibility({
|
|
298
314
|
blockVisibility: parentBlockVisibility,
|
|
299
|
-
deviceType
|
|
315
|
+
deviceType,
|
|
316
|
+
view: canvasView
|
|
300
317
|
});
|
|
318
|
+
const isAnyAncestorHidden = useSelect(
|
|
319
|
+
(select) => {
|
|
320
|
+
if (!rootClientId) {
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
const { isBlockParentHiddenAtViewport } = unlock(
|
|
324
|
+
select(blockEditorStore)
|
|
325
|
+
);
|
|
326
|
+
return isBlockParentHiddenAtViewport(
|
|
327
|
+
rootClientId,
|
|
328
|
+
currentViewport
|
|
329
|
+
);
|
|
330
|
+
},
|
|
331
|
+
[rootClientId, currentViewport]
|
|
332
|
+
);
|
|
301
333
|
const { isBlockCurrentlyHidden: isBlockItselfCurrentlyHidden } = useBlockVisibility({
|
|
302
334
|
blockVisibility: blockBlockVisibility,
|
|
303
|
-
deviceType
|
|
335
|
+
deviceType,
|
|
336
|
+
view: canvasView
|
|
304
337
|
});
|
|
305
338
|
const [resizerBounds, setResizerBounds] = useState();
|
|
306
339
|
const childGridClientId = isChildBlockAGrid ? clientId : void 0;
|
|
307
|
-
if (!isVisible || isParentBlockCurrentlyHidden) {
|
|
340
|
+
if (!isVisible || isParentBlockCurrentlyHidden || isAnyAncestorHidden) {
|
|
308
341
|
return null;
|
|
309
342
|
}
|
|
310
343
|
const showResizer = allowSizingOnChildren && !isBlockItselfCurrentlyHidden;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/layout-child.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { useStyleOverride } from './utils';\nimport { useLayout } from '../components/block-list/layout';\nimport {\n\tGridVisualizer,\n\tGridItemResizer,\n\tGridItemMovers,\n} from '../components/grid';\nimport useBlockVisibility from '../components/block-visibility/use-block-visibility';\nimport { deviceTypeKey } from '../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from '../components/block-visibility/constants';\n\n// Used for generating the instance ID\nconst LAYOUT_CHILD_BLOCK_PROPS_REFERENCE = {};\n// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS.\nconst RESPONSIVE_BREAKPOINTS = {\n\tmobile: '@media (width <= 480px)',\n\ttablet: '@media (480px < width <= 782px)',\n};\n\n// These are the serialized `selfStretch` values. `max` used to be called\n// \"Fixed\" in the UI, but was renamed and replaced by `fixedNoShrink`.\nconst FLEX_CHILD_LAYOUT_VALUES = {\n\tfit: 'fit',\n\tgrow: 'fill',\n\tmax: 'fixed',\n\tfixed: 'fixedNoShrink',\n};\n\nconst FLEX_SIZE_VALUES = [\n\tFLEX_CHILD_LAYOUT_VALUES.max,\n\tFLEX_CHILD_LAYOUT_VALUES.fixed,\n];\n\nfunction isFlexSizeValue( value ) {\n\treturn FLEX_SIZE_VALUES.includes( value );\n}\n\nfunction serializeRule( { selector, declarations } ) {\n\treturn `${ selector } {\n\t\t${ Object.entries( declarations )\n\t\t\t.map( ( [ property, value ] ) => `${ property }: ${ value }` )\n\t\t\t.join( '; ' ) };\n\t}`;\n}\n\nexport function getChildLayoutStyleRules( {\n\tselector,\n\tlayout = {},\n\tviewportOverrides,\n\tparentLayout = {},\n\tincludeContainerQuery = true,\n} ) {\n\tconst hasViewportOverrides = viewportOverrides !== undefined;\n\tconst effectiveLayout = hasViewportOverrides\n\t\t? {\n\t\t\t\t...layout,\n\t\t\t\t...viewportOverrides,\n\t\t }\n\t\t: layout;\n\tconst hasViewportOverride = ( key ) =>\n\t\tObject.hasOwn( viewportOverrides || {}, key );\n\tconst {\n\t\tselfStretch,\n\t\tflexSize,\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = effectiveLayout;\n\tconst baseSelfStretch = layout.selfStretch;\n\tconst { columnCount, minimumColumnWidth } = parentLayout;\n\tconst rules = [];\n\n\tconst declarations = {};\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'selfStretch' ) ||\n\t\thasViewportOverride( 'flexSize' )\n\t) {\n\t\tif (\n\t\t\thasViewportOverrides &&\n\t\t\t( selfStretch === FLEX_CHILD_LAYOUT_VALUES.fit ||\n\t\t\t\tselfStretch === FLEX_CHILD_LAYOUT_VALUES.grow ) &&\n\t\t\tisFlexSizeValue( baseSelfStretch ) &&\n\t\t\tlayout.flexSize\n\t\t) {\n\t\t\tdeclarations[ 'flex-basis' ] = 'unset';\n\t\t\tif ( baseSelfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed ) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = 'unset';\n\t\t\t}\n\t\t}\n\t\tif ( isFlexSizeValue( selfStretch ) && flexSize ) {\n\t\t\tdeclarations[ 'flex-basis' ] = flexSize;\n\t\t\tif ( selfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed ) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = '0';\n\t\t\t} else if (\n\t\t\t\thasViewportOverrides &&\n\t\t\t\tbaseSelfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed\n\t\t\t) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = 'unset';\n\t\t\t}\n\t\t\tdeclarations[ 'box-sizing' ] = 'border-box';\n\t\t} else if ( selfStretch === FLEX_CHILD_LAYOUT_VALUES.grow ) {\n\t\t\tdeclarations[ 'flex-grow' ] = '1';\n\t\t}\n\t}\n\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'columnStart' ) ||\n\t\thasViewportOverride( 'columnSpan' )\n\t) {\n\t\tif ( columnStart && columnSpan ) {\n\t\t\tdeclarations[\n\t\t\t\t'grid-column'\n\t\t\t] = `${ columnStart } / span ${ columnSpan }`;\n\t\t} else if ( columnStart ) {\n\t\t\tdeclarations[ 'grid-column' ] = `${ columnStart }`;\n\t\t} else if ( columnSpan ) {\n\t\t\tdeclarations[ 'grid-column' ] = `span ${ columnSpan }`;\n\t\t}\n\t}\n\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'rowStart' ) ||\n\t\thasViewportOverride( 'rowSpan' )\n\t) {\n\t\tif ( rowStart && rowSpan ) {\n\t\t\tdeclarations[ 'grid-row' ] = `${ rowStart } / span ${ rowSpan }`;\n\t\t} else if ( rowStart ) {\n\t\t\tdeclarations[ 'grid-row' ] = `${ rowStart }`;\n\t\t} else if ( rowSpan ) {\n\t\t\tdeclarations[ 'grid-row' ] = `span ${ rowSpan }`;\n\t\t}\n\t}\n\n\tif ( Object.keys( declarations ).length ) {\n\t\trules.push( { selector, declarations } );\n\t}\n\n\tif ( includeContainerQuery && ! hasViewportOverrides ) {\n\t\t/**\n\t\t * If minimumColumnWidth is set on the parent, or if no\n\t\t * columnCount is set, the grid is responsive so a\n\t\t * container query is needed for the span to resize.\n\t\t */\n\t\tif (\n\t\t\t( columnSpan || columnStart ) &&\n\t\t\t( minimumColumnWidth || ! columnCount )\n\t\t) {\n\t\t\tlet parentColumnValue = parseFloat( minimumColumnWidth );\n\t\t\t/**\n\t\t\t * 12rem is the default minimumColumnWidth value.\n\t\t\t * If parentColumnValue is not a number, default to 12.\n\t\t\t */\n\t\t\tif ( isNaN( parentColumnValue ) ) {\n\t\t\t\tparentColumnValue = 12;\n\t\t\t}\n\n\t\t\tlet parentColumnUnit = minimumColumnWidth?.replace(\n\t\t\t\tparentColumnValue,\n\t\t\t\t''\n\t\t\t);\n\t\t\t/**\n\t\t\t * Check that parent column unit is either 'px', 'rem' or 'em'.\n\t\t\t * If not, default to 'rem'.\n\t\t\t */\n\t\t\tif ( ! [ 'px', 'rem', 'em' ].includes( parentColumnUnit ) ) {\n\t\t\t\tparentColumnUnit = 'rem';\n\t\t\t}\n\n\t\t\tlet numColsToBreakAt = 2;\n\n\t\t\tif ( columnSpan && columnStart ) {\n\t\t\t\tnumColsToBreakAt = columnSpan + columnStart - 1;\n\t\t\t} else if ( columnSpan ) {\n\t\t\t\tnumColsToBreakAt = columnSpan;\n\t\t\t} else {\n\t\t\t\tnumColsToBreakAt = columnStart;\n\t\t\t}\n\n\t\t\tconst defaultGapValue = parentColumnUnit === 'px' ? 24 : 1.5;\n\t\t\tconst containerQueryValue =\n\t\t\t\tnumColsToBreakAt * parentColumnValue +\n\t\t\t\t( numColsToBreakAt - 1 ) * defaultGapValue;\n\t\t\t// For blocks that only span one column, we want to remove any rowStart values as\n\t\t\t// the container reduces in size, so that blocks are still arranged in markup order.\n\t\t\tconst minimumContainerQueryValue =\n\t\t\t\tparentColumnValue * 2 + defaultGapValue - 1;\n\t\t\t// If a span is set we want to preserve it as long as possible, otherwise we just reset the value.\n\t\t\tconst gridColumnValue =\n\t\t\t\tcolumnSpan && columnSpan > 1 ? '1/-1' : 'auto';\n\n\t\t\trules.push( {\n\t\t\t\trulesGroup: `@container (max-width: ${ Math.max(\n\t\t\t\t\tcontainerQueryValue,\n\t\t\t\t\tminimumContainerQueryValue\n\t\t\t\t) }${ parentColumnUnit })`,\n\t\t\t\tselector,\n\t\t\t\tdeclarations: {\n\t\t\t\t\t'grid-column': gridColumnValue,\n\t\t\t\t\t'grid-row': 'auto',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn rules;\n}\n\nexport function getChildLayoutStyles( {\n\tselector,\n\tlayout = {},\n\tparentLayout = {},\n\tincludeContainerQuery = true,\n} ) {\n\treturn getChildLayoutStyleRules( {\n\t\tselector,\n\t\tlayout,\n\t\tparentLayout,\n\t\tincludeContainerQuery,\n\t} )\n\t\t.map( ( rule ) => {\n\t\t\tconst serializedRule = serializeRule( rule );\n\t\t\treturn rule.rulesGroup\n\t\t\t\t? `${ rule.rulesGroup } {\n\t\t\t\t${ serializedRule }\n\t\t\t}`\n\t\t\t\t: serializedRule;\n\t\t} )\n\t\t.join( '' );\n}\n\nexport function getResponsiveChildLayoutStyles( {\n\tstyle = {},\n\tselector,\n\tparentLayout = {},\n} ) {\n\tconst baseLayout = style?.layout ?? {};\n\n\treturn Object.entries( RESPONSIVE_BREAKPOINTS )\n\t\t.map( ( [ viewport, mediaQuery ] ) => {\n\t\t\tconst viewportLayout = style?.[ viewport ]?.layout;\n\t\t\tif ( ! viewportLayout || ! Object.keys( viewportLayout ).length ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst viewportRules = getChildLayoutStyleRules( {\n\t\t\t\tselector,\n\t\t\t\tlayout: baseLayout,\n\t\t\t\tviewportOverrides: viewportLayout,\n\t\t\t\tparentLayout,\n\t\t\t\tincludeContainerQuery: false,\n\t\t\t} );\n\t\t\tconst css = viewportRules.map( serializeRule ).join( '' );\n\n\t\t\treturn css ? `${ mediaQuery }{${ css }}` : '';\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.join( '' );\n}\n\nfunction useBlockPropsChildLayoutStyles( { style } ) {\n\tconst shouldRenderChildLayoutStyles = useSelect( ( select ) => {\n\t\treturn ! select( blockEditorStore ).getSettings().disableLayoutStyles;\n\t} );\n\tconst layout = style?.layout ?? {};\n\tconst { columnStart, rowStart, columnSpan, rowSpan } = layout;\n\tconst parentLayout = useLayout() || {};\n\tconst id = useInstanceId( LAYOUT_CHILD_BLOCK_PROPS_REFERENCE );\n\tconst selector = `.wp-container-content-${ id }`;\n\n\t// Check that the grid layout attributes are of the correct type, so that we don't accidentally\n\t// write code that stores a string attribute instead of a number.\n\tif ( process.env.NODE_ENV === 'development' ) {\n\t\tif ( columnStart && typeof columnStart !== 'number' ) {\n\t\t\tthrow new Error( 'columnStart must be a number' );\n\t\t}\n\t\tif ( rowStart && typeof rowStart !== 'number' ) {\n\t\t\tthrow new Error( 'rowStart must be a number' );\n\t\t}\n\t\tif ( columnSpan && typeof columnSpan !== 'number' ) {\n\t\t\tthrow new Error( 'columnSpan must be a number' );\n\t\t}\n\t\tif ( rowSpan && typeof rowSpan !== 'number' ) {\n\t\t\tthrow new Error( 'rowSpan must be a number' );\n\t\t}\n\t}\n\n\tlet css = '';\n\tif ( shouldRenderChildLayoutStyles ) {\n\t\tcss = [\n\t\t\tgetChildLayoutStyles( {\n\t\t\t\tselector,\n\t\t\t\tlayout,\n\t\t\t\tparentLayout,\n\t\t\t} ),\n\t\t\tgetResponsiveChildLayoutStyles( {\n\t\t\t\tstyle,\n\t\t\t\tselector,\n\t\t\t\tparentLayout,\n\t\t\t} ),\n\t\t].join( '' );\n\t}\n\n\tuseStyleOverride( { css } );\n\n\t// Only attach a container class if there is generated CSS to be attached.\n\tif ( ! css ) {\n\t\treturn;\n\t}\n\n\t// Attach a `wp-container-content` id-based classname.\n\treturn { className: `wp-container-content-${ id }` };\n}\n\nfunction ChildLayoutControlsPure( { clientId, style, setAttributes } ) {\n\tconst parentLayout = useLayout() || {};\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tallowSizingOnChildren = false,\n\t\tisManualPlacement,\n\t} = parentLayout;\n\n\tif ( parentLayoutType !== 'grid' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<GridTools\n\t\t\tclientId={ clientId }\n\t\t\tstyle={ style }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tallowSizingOnChildren={ allowSizingOnChildren }\n\t\t\tisManualPlacement={ isManualPlacement }\n\t\t\tparentLayout={ parentLayout }\n\t\t/>\n\t);\n}\n\nfunction GridTools( {\n\tclientId,\n\tstyle,\n\tsetAttributes,\n\tallowSizingOnChildren,\n\tisManualPlacement,\n\tparentLayout,\n} ) {\n\tconst {\n\t\trootClientId,\n\t\tisVisible,\n\t\tparentBlockVisibility,\n\t\tblockBlockVisibility,\n\t\tdeviceType,\n\t\tisChildBlockAGrid,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tif (\n\t\t\t\tgetTemplateLock( _rootClientId ) ||\n\t\t\t\tgetBlockEditingMode( _rootClientId ) !== 'default'\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\tisVisible: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst parentAttributes = getBlockAttributes( _rootClientId );\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tconst settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible: true,\n\t\t\t\tparentBlockVisibility:\n\t\t\t\t\tparentAttributes?.metadata?.blockVisibility,\n\t\t\t\tblockBlockVisibility:\n\t\t\t\t\tblockAttributes?.metadata?.blockVisibility,\n\t\t\t\tdeviceType:\n\t\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() ||\n\t\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n\t\t\t\t// Check if the selected child block is itself a grid.\n\t\t\t\tisChildBlockAGrid: blockAttributes?.layout?.type === 'grid',\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { isBlockCurrentlyHidden: isParentBlockCurrentlyHidden } =\n\t\tuseBlockVisibility( {\n\t\t\tblockVisibility: parentBlockVisibility,\n\t\t\tdeviceType,\n\t\t} );\n\n\tconst { isBlockCurrentlyHidden: isBlockItselfCurrentlyHidden } =\n\t\tuseBlockVisibility( {\n\t\t\tblockVisibility: blockBlockVisibility,\n\t\t\tdeviceType,\n\t\t} );\n\n\t// Use useState() instead of useRef() so that GridItemResizer updates when ref is set.\n\tconst [ resizerBounds, setResizerBounds ] = useState();\n\n\tconst childGridClientId = isChildBlockAGrid ? clientId : undefined;\n\n\tif ( ! isVisible || isParentBlockCurrentlyHidden ) {\n\t\treturn null;\n\t}\n\n\tconst showResizer = allowSizingOnChildren && ! isBlockItselfCurrentlyHidden;\n\n\tfunction updateLayout( layout ) {\n\t\tsetAttributes( {\n\t\t\tstyle: {\n\t\t\t\t...style,\n\t\t\t\tlayout: {\n\t\t\t\t\t...style?.layout,\n\t\t\t\t\t...layout,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<GridVisualizer\n\t\t\t\tclientId={ rootClientId }\n\t\t\t\tcontentRef={ setResizerBounds }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tchildGridClientId={ childGridClientId }\n\t\t\t/>\n\t\t\t{ showResizer && (\n\t\t\t\t<GridItemResizer\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t// Don't allow resizing beyond the grid visualizer.\n\t\t\t\t\tbounds={ resizerBounds }\n\t\t\t\t\tonChange={ updateLayout }\n\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isManualPlacement &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity && (\n\t\t\t\t\t<GridItemMovers\n\t\t\t\t\t\tlayout={ style?.layout }\n\t\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t\t\tonChange={ updateLayout }\n\t\t\t\t\t\tgridClientId={ rootClientId }\n\t\t\t\t\t\tblockClientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tuseBlockProps: useBlockPropsChildLayoutStyles,\n\tedit: ChildLayoutControlsPure,\n\tattributeKeys: [ 'style' ],\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AAKzB,SAAS,SAAS,wBAAwB;AAC1C,SAAS,wBAAwB;AACjC,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,wBAAwB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,kCAAkC;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\nimport { useStyleOverride } from './utils';\nimport { useLayout } from '../components/block-list/layout';\nimport {\n\tGridVisualizer,\n\tGridItemResizer,\n\tGridItemMovers,\n} from '../components/grid';\nimport { useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\nimport useBlockVisibility from '../components/block-visibility/use-block-visibility';\nimport { deviceTypeKey } from '../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from '../components/block-visibility/constants';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\tgetStyleForState,\n} from './block-style-state';\n\n// Used for generating the instance ID\nconst LAYOUT_CHILD_BLOCK_PROPS_REFERENCE = {};\n// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS.\nconst RESPONSIVE_BREAKPOINTS = {\n\t'@mobile': '@media (width <= 480px)',\n\t'@tablet': '@media (480px < width <= 782px)',\n};\n\n// These are the serialized `selfStretch` values. `max` used to be called\n// \"Fixed\" in the UI, but was renamed and replaced by `fixedNoShrink`.\nconst FLEX_CHILD_LAYOUT_VALUES = {\n\tfit: 'fit',\n\tgrow: 'fill',\n\tmax: 'fixed',\n\tfixed: 'fixedNoShrink',\n};\n\nconst FLEX_SIZE_VALUES = [\n\tFLEX_CHILD_LAYOUT_VALUES.max,\n\tFLEX_CHILD_LAYOUT_VALUES.fixed,\n];\n\nfunction isFlexSizeValue( value ) {\n\treturn FLEX_SIZE_VALUES.includes( value );\n}\n\nfunction serializeRule( { selector, declarations } ) {\n\treturn `${ selector } {\n\t\t${ Object.entries( declarations )\n\t\t\t.map( ( [ property, value ] ) => `${ property }: ${ value }` )\n\t\t\t.join( '; ' ) };\n\t}`;\n}\n\nexport function getChildLayoutStyleRules( {\n\tselector,\n\tlayout = {},\n\tviewportOverrides,\n\tparentLayout = {},\n\tincludeContainerQuery = true,\n} ) {\n\tconst hasViewportOverrides = viewportOverrides !== undefined;\n\tconst effectiveLayout = hasViewportOverrides\n\t\t? {\n\t\t\t\t...layout,\n\t\t\t\t...viewportOverrides,\n\t\t }\n\t\t: layout;\n\tconst hasViewportOverride = ( key ) =>\n\t\tObject.hasOwn( viewportOverrides || {}, key );\n\tconst {\n\t\tselfStretch,\n\t\tflexSize,\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = effectiveLayout;\n\tconst baseSelfStretch = layout.selfStretch;\n\tconst { columnCount, minimumColumnWidth } = parentLayout;\n\tconst rules = [];\n\n\tconst declarations = {};\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'selfStretch' ) ||\n\t\thasViewportOverride( 'flexSize' )\n\t) {\n\t\tif (\n\t\t\thasViewportOverrides &&\n\t\t\t( selfStretch === FLEX_CHILD_LAYOUT_VALUES.fit ||\n\t\t\t\tselfStretch === FLEX_CHILD_LAYOUT_VALUES.grow ) &&\n\t\t\tisFlexSizeValue( baseSelfStretch ) &&\n\t\t\tlayout.flexSize\n\t\t) {\n\t\t\tdeclarations[ 'flex-basis' ] = 'unset';\n\t\t\tif ( baseSelfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed ) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = 'unset';\n\t\t\t}\n\t\t}\n\t\tif ( isFlexSizeValue( selfStretch ) && flexSize ) {\n\t\t\tdeclarations[ 'flex-basis' ] = flexSize;\n\t\t\tif ( selfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed ) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = '0';\n\t\t\t} else if (\n\t\t\t\thasViewportOverrides &&\n\t\t\t\tbaseSelfStretch === FLEX_CHILD_LAYOUT_VALUES.fixed\n\t\t\t) {\n\t\t\t\tdeclarations[ 'flex-shrink' ] = 'unset';\n\t\t\t}\n\t\t\tdeclarations[ 'box-sizing' ] = 'border-box';\n\t\t} else if ( selfStretch === FLEX_CHILD_LAYOUT_VALUES.grow ) {\n\t\t\tdeclarations[ 'flex-grow' ] = '1';\n\t\t}\n\t}\n\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'columnStart' ) ||\n\t\thasViewportOverride( 'columnSpan' )\n\t) {\n\t\tif ( columnStart && columnSpan ) {\n\t\t\tdeclarations[\n\t\t\t\t'grid-column'\n\t\t\t] = `${ columnStart } / span ${ columnSpan }`;\n\t\t} else if ( columnStart ) {\n\t\t\tdeclarations[ 'grid-column' ] = `${ columnStart }`;\n\t\t} else if ( columnSpan ) {\n\t\t\tdeclarations[ 'grid-column' ] = `span ${ columnSpan }`;\n\t\t}\n\t}\n\n\tif (\n\t\t! hasViewportOverrides ||\n\t\thasViewportOverride( 'rowStart' ) ||\n\t\thasViewportOverride( 'rowSpan' )\n\t) {\n\t\tif ( rowStart && rowSpan ) {\n\t\t\tdeclarations[ 'grid-row' ] = `${ rowStart } / span ${ rowSpan }`;\n\t\t} else if ( rowStart ) {\n\t\t\tdeclarations[ 'grid-row' ] = `${ rowStart }`;\n\t\t} else if ( rowSpan ) {\n\t\t\tdeclarations[ 'grid-row' ] = `span ${ rowSpan }`;\n\t\t}\n\t}\n\n\tif ( Object.keys( declarations ).length ) {\n\t\trules.push( { selector, declarations } );\n\t}\n\n\tif ( includeContainerQuery && ! hasViewportOverrides ) {\n\t\t/**\n\t\t * If minimumColumnWidth is set on the parent, or if no\n\t\t * columnCount is set, the grid is responsive so a\n\t\t * container query is needed for the span to resize.\n\t\t */\n\t\tif (\n\t\t\t( columnSpan || columnStart ) &&\n\t\t\t( minimumColumnWidth || ! columnCount )\n\t\t) {\n\t\t\tlet parentColumnValue = parseFloat( minimumColumnWidth );\n\t\t\t/**\n\t\t\t * 12rem is the default minimumColumnWidth value.\n\t\t\t * If parentColumnValue is not a number, default to 12.\n\t\t\t */\n\t\t\tif ( isNaN( parentColumnValue ) ) {\n\t\t\t\tparentColumnValue = 12;\n\t\t\t}\n\n\t\t\tlet parentColumnUnit = minimumColumnWidth?.replace(\n\t\t\t\tparentColumnValue,\n\t\t\t\t''\n\t\t\t);\n\t\t\t/**\n\t\t\t * Check that parent column unit is either 'px', 'rem' or 'em'.\n\t\t\t * If not, default to 'rem'.\n\t\t\t */\n\t\t\tif ( ! [ 'px', 'rem', 'em' ].includes( parentColumnUnit ) ) {\n\t\t\t\tparentColumnUnit = 'rem';\n\t\t\t}\n\n\t\t\tlet numColsToBreakAt = 2;\n\n\t\t\tif ( columnSpan && columnStart ) {\n\t\t\t\tnumColsToBreakAt = columnSpan + columnStart - 1;\n\t\t\t} else if ( columnSpan ) {\n\t\t\t\tnumColsToBreakAt = columnSpan;\n\t\t\t} else {\n\t\t\t\tnumColsToBreakAt = columnStart;\n\t\t\t}\n\n\t\t\tconst defaultGapValue = parentColumnUnit === 'px' ? 24 : 1.5;\n\t\t\tconst containerQueryValue =\n\t\t\t\tnumColsToBreakAt * parentColumnValue +\n\t\t\t\t( numColsToBreakAt - 1 ) * defaultGapValue;\n\t\t\t// For blocks that only span one column, we want to remove any rowStart values as\n\t\t\t// the container reduces in size, so that blocks are still arranged in markup order.\n\t\t\tconst minimumContainerQueryValue =\n\t\t\t\tparentColumnValue * 2 + defaultGapValue - 1;\n\t\t\t// If a span is set we want to preserve it as long as possible, otherwise we just reset the value.\n\t\t\tconst gridColumnValue =\n\t\t\t\tcolumnSpan && columnSpan > 1 ? '1/-1' : 'auto';\n\n\t\t\trules.push( {\n\t\t\t\trulesGroup: `@container (max-width: ${ Math.max(\n\t\t\t\t\tcontainerQueryValue,\n\t\t\t\t\tminimumContainerQueryValue\n\t\t\t\t) }${ parentColumnUnit })`,\n\t\t\t\tselector,\n\t\t\t\tdeclarations: {\n\t\t\t\t\t'grid-column': gridColumnValue,\n\t\t\t\t\t'grid-row': 'auto',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn rules;\n}\n\nexport function getChildLayoutStyles( {\n\tselector,\n\tlayout = {},\n\tparentLayout = {},\n\tincludeContainerQuery = true,\n} ) {\n\treturn getChildLayoutStyleRules( {\n\t\tselector,\n\t\tlayout,\n\t\tparentLayout,\n\t\tincludeContainerQuery,\n\t} )\n\t\t.map( ( rule ) => {\n\t\t\tconst serializedRule = serializeRule( rule );\n\t\t\treturn rule.rulesGroup\n\t\t\t\t? `${ rule.rulesGroup } {\n\t\t\t\t${ serializedRule }\n\t\t\t}`\n\t\t\t\t: serializedRule;\n\t\t} )\n\t\t.join( '' );\n}\n\nexport function getResponsiveChildLayoutStyles( {\n\tstyle = {},\n\tselector,\n\tparentLayout = {},\n} ) {\n\tconst baseLayout = style?.layout ?? {};\n\n\treturn Object.entries( RESPONSIVE_BREAKPOINTS )\n\t\t.map( ( [ viewport, mediaQuery ] ) => {\n\t\t\tconst viewportLayout = getStyleForState( style, {\n\t\t\t\tviewport,\n\t\t\t\tpseudo: DEFAULT_BLOCK_STYLE_STATE.pseudo,\n\t\t\t} )?.layout;\n\t\t\tif ( ! viewportLayout || ! Object.keys( viewportLayout ).length ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst viewportRules = getChildLayoutStyleRules( {\n\t\t\t\tselector,\n\t\t\t\tlayout: baseLayout,\n\t\t\t\tviewportOverrides: viewportLayout,\n\t\t\t\tparentLayout,\n\t\t\t\tincludeContainerQuery: false,\n\t\t\t} );\n\t\t\tconst css = viewportRules.map( serializeRule ).join( '' );\n\n\t\t\treturn css ? `${ mediaQuery }{${ css }}` : '';\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.join( '' );\n}\n\nfunction useBlockPropsChildLayoutStyles( { style } ) {\n\tconst shouldRenderChildLayoutStyles = useSelect( ( select ) => {\n\t\treturn ! select( blockEditorStore ).getSettings().disableLayoutStyles;\n\t} );\n\tconst layout = style?.layout ?? {};\n\tconst { columnStart, rowStart, columnSpan, rowSpan } = layout;\n\tconst parentLayout = useLayout() || {};\n\tconst id = useInstanceId( LAYOUT_CHILD_BLOCK_PROPS_REFERENCE );\n\tconst selector = `.wp-container-content-${ id }`;\n\n\t// Check that the grid layout attributes are of the correct type, so that we don't accidentally\n\t// write code that stores a string attribute instead of a number.\n\tif ( process.env.NODE_ENV === 'development' ) {\n\t\tif ( columnStart && typeof columnStart !== 'number' ) {\n\t\t\tthrow new Error( 'columnStart must be a number' );\n\t\t}\n\t\tif ( rowStart && typeof rowStart !== 'number' ) {\n\t\t\tthrow new Error( 'rowStart must be a number' );\n\t\t}\n\t\tif ( columnSpan && typeof columnSpan !== 'number' ) {\n\t\t\tthrow new Error( 'columnSpan must be a number' );\n\t\t}\n\t\tif ( rowSpan && typeof rowSpan !== 'number' ) {\n\t\t\tthrow new Error( 'rowSpan must be a number' );\n\t\t}\n\t}\n\n\tlet css = '';\n\tif ( shouldRenderChildLayoutStyles ) {\n\t\tcss = [\n\t\t\tgetChildLayoutStyles( {\n\t\t\t\tselector,\n\t\t\t\tlayout,\n\t\t\t\tparentLayout,\n\t\t\t} ),\n\t\t\tgetResponsiveChildLayoutStyles( {\n\t\t\t\tstyle,\n\t\t\t\tselector,\n\t\t\t\tparentLayout,\n\t\t\t} ),\n\t\t].join( '' );\n\t}\n\n\tuseStyleOverride( { css } );\n\n\t// Only attach a container class if there is generated CSS to be attached.\n\tif ( ! css ) {\n\t\treturn;\n\t}\n\n\t// Attach a `wp-container-content` id-based classname.\n\treturn { className: `wp-container-content-${ id }` };\n}\n\nfunction ChildLayoutControlsPure( { clientId, style, setAttributes } ) {\n\tconst parentLayout = useLayout() || {};\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tallowSizingOnChildren = false,\n\t\tisManualPlacement,\n\t} = parentLayout;\n\n\tif ( parentLayoutType !== 'grid' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<GridTools\n\t\t\tclientId={ clientId }\n\t\t\tstyle={ style }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tallowSizingOnChildren={ allowSizingOnChildren }\n\t\t\tisManualPlacement={ isManualPlacement }\n\t\t\tparentLayout={ parentLayout }\n\t\t/>\n\t);\n}\n\nfunction GridTools( {\n\tclientId,\n\tstyle,\n\tsetAttributes,\n\tallowSizingOnChildren,\n\tisManualPlacement,\n\tparentLayout,\n} ) {\n\tconst {\n\t\trootClientId,\n\t\tisVisible,\n\t\tparentBlockVisibility,\n\t\tblockBlockVisibility,\n\t\tdeviceType,\n\t\tisChildBlockAGrid,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tif (\n\t\t\t\tgetTemplateLock( _rootClientId ) ||\n\t\t\t\tgetBlockEditingMode( _rootClientId ) !== 'default'\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\tisVisible: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst parentAttributes = getBlockAttributes( _rootClientId );\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tconst settings = getSettings();\n\t\t\tconst currentDeviceType =\n\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() ||\n\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS.desktop.key;\n\n\t\t\treturn {\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible: true,\n\t\t\t\tparentBlockVisibility:\n\t\t\t\t\tparentAttributes?.metadata?.blockVisibility,\n\t\t\t\tblockBlockVisibility:\n\t\t\t\t\tblockAttributes?.metadata?.blockVisibility,\n\t\t\t\tdeviceType: currentDeviceType,\n\t\t\t\t// Check if the selected child block is itself a grid.\n\t\t\t\tisChildBlockAGrid: blockAttributes?.layout?.type === 'grid',\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the block's DOM element to derive the canvas iframe window,\n\t// so viewport detection matches the actual block rendering context\n\tconst blockElement = useBlockElement( clientId );\n\tconst rawCanvasView = blockElement?.ownerDocument?.defaultView;\n\tconst canvasView = rawCanvasView === null ? undefined : rawCanvasView;\n\n\tconst {\n\t\tisBlockCurrentlyHidden: isParentBlockCurrentlyHidden,\n\t\tcurrentViewport,\n\t} = useBlockVisibility( {\n\t\tblockVisibility: parentBlockVisibility,\n\t\tdeviceType,\n\t\tview: canvasView,\n\t} );\n\n\t// Check whether any ancestor of the parent grid is hidden at the viewport\n\t// actually detected from the canvas, so it stays consistent with how\n\t// blocks are hidden.\n\tconst isAnyAncestorHidden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! rootClientId ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst { isBlockParentHiddenAtViewport } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\treturn isBlockParentHiddenAtViewport(\n\t\t\t\trootClientId,\n\t\t\t\tcurrentViewport\n\t\t\t);\n\t\t},\n\t\t[ rootClientId, currentViewport ]\n\t);\n\n\tconst { isBlockCurrentlyHidden: isBlockItselfCurrentlyHidden } =\n\t\tuseBlockVisibility( {\n\t\t\tblockVisibility: blockBlockVisibility,\n\t\t\tdeviceType,\n\t\t\tview: canvasView,\n\t\t} );\n\n\t// Use useState() instead of useRef() so that GridItemResizer updates when ref is set.\n\tconst [ resizerBounds, setResizerBounds ] = useState();\n\n\tconst childGridClientId = isChildBlockAGrid ? clientId : undefined;\n\n\tif ( ! isVisible || isParentBlockCurrentlyHidden || isAnyAncestorHidden ) {\n\t\treturn null;\n\t}\n\n\tconst showResizer = allowSizingOnChildren && ! isBlockItselfCurrentlyHidden;\n\n\tfunction updateLayout( layout ) {\n\t\tsetAttributes( {\n\t\t\tstyle: {\n\t\t\t\t...style,\n\t\t\t\tlayout: {\n\t\t\t\t\t...style?.layout,\n\t\t\t\t\t...layout,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<GridVisualizer\n\t\t\t\tclientId={ rootClientId }\n\t\t\t\tcontentRef={ setResizerBounds }\n\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\tchildGridClientId={ childGridClientId }\n\t\t\t/>\n\t\t\t{ showResizer && (\n\t\t\t\t<GridItemResizer\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t// Don't allow resizing beyond the grid visualizer.\n\t\t\t\t\tbounds={ resizerBounds }\n\t\t\t\t\tonChange={ updateLayout }\n\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isManualPlacement &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity && (\n\t\t\t\t\t<GridItemMovers\n\t\t\t\t\t\tlayout={ style?.layout }\n\t\t\t\t\t\tparentLayout={ parentLayout }\n\t\t\t\t\t\tonChange={ updateLayout }\n\t\t\t\t\t\tgridClientId={ rootClientId }\n\t\t\t\t\t\tblockClientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tuseBlockProps: useBlockPropsChildLayoutStyles,\n\tedit: ChildLayoutControlsPure,\n\tattributeKeys: [ 'style' ],\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -39,8 +39,8 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
39
39
|
var VARIATION_PREFIX = "is-style-";
|
|
40
40
|
var layoutBlockSupportKey = "layout";
|
|
41
41
|
var RESPONSIVE_BREAKPOINTS = {
|
|
42
|
-
mobile: "@media (width <= 480px)",
|
|
43
|
-
tablet: "@media (480px < width <= 782px)"
|
|
42
|
+
"@mobile": "@media (width <= 480px)",
|
|
43
|
+
"@tablet": "@media (480px < width <= 782px)"
|
|
44
44
|
};
|
|
45
45
|
var CHILD_LAYOUT_KEYS = [
|
|
46
46
|
"selfStretch",
|
|
@@ -149,7 +149,10 @@ function getResponsiveLayoutStyles({
|
|
|
149
149
|
globalBlockGapValue
|
|
150
150
|
}) {
|
|
151
151
|
return Object.entries(RESPONSIVE_BREAKPOINTS).map(([viewport, mediaQuery]) => {
|
|
152
|
-
const viewportStyle = attributes?.style
|
|
152
|
+
const viewportStyle = getStyleForState(attributes?.style, {
|
|
153
|
+
viewport,
|
|
154
|
+
pseudo: DEFAULT_BLOCK_STYLE_STATE.pseudo
|
|
155
|
+
});
|
|
153
156
|
const viewportLayout = getLayoutContainerValues(
|
|
154
157
|
viewportStyle?.layout
|
|
155
158
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/layout.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useCallback } from '@wordpress/element';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport { useSettings } from '../components/use-settings';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { cleanEmptyObject, useBlockSettings, useStyleOverride } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { getVariationNameFromClass } from './block-style-variation';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\tgetStyleForState,\n\thasPseudoBlockStyleState,\n\thasViewportBlockStyleState,\n\tisDefaultBlockStyleState,\n\tsetStyleForState,\n} from './block-style-state';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nconst layoutBlockSupportKey = 'layout';\n// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS and\n// packages/global-styles-engine/src/core/render.tsx.\nconst RESPONSIVE_BREAKPOINTS = {\n\tmobile: '@media (width <= 480px)',\n\ttablet: '@media (480px < width <= 782px)',\n};\nconst CHILD_LAYOUT_KEYS = [\n\t'selfStretch',\n\t'flexSize',\n\t'columnStart',\n\t'columnSpan',\n\t'rowStart',\n\t'rowSpan',\n];\nconst { kebabCase } = unlock( componentsPrivateApis );\n\nfunction getDefaultLayout( layoutBlockSupport = {}, blockVariation ) {\n\tconst defaultBlockLayout = layoutBlockSupport?.default;\n\n\treturn blockVariation?.attributes?.layout ?? defaultBlockLayout;\n}\n\n/**\n * Returns the layout values to use when resetting layout controls.\n *\n * @param { Object } layoutBlockSupport Block layout support settings.\n * @param { Object|undefined } blockVariation Block variation settings.\n *\n * @return { Object|undefined } Reset layout values.\n */\nexport function getResetLayout( layoutBlockSupport = {}, blockVariation ) {\n\treturn cleanEmptyObject( {\n\t\t...getDefaultLayout( layoutBlockSupport, blockVariation ),\n\t} );\n}\n\nfunction getLayoutStateOverrides(\n\tlayout = {},\n\tbaseLayout = {},\n\texistingLayout = {}\n) {\n\tconst overrides = {};\n\tconst childLayoutValues = Object.fromEntries(\n\t\tCHILD_LAYOUT_KEYS.filter( ( key ) =>\n\t\t\tObject.hasOwn( existingLayout || {}, key )\n\t\t).map( ( key ) => [ key, existingLayout[ key ] ] )\n\t);\n\n\tObject.entries( layout || {} ).forEach( ( [ key, value ] ) => {\n\t\tif (\n\t\t\t! CHILD_LAYOUT_KEYS.includes( key ) &&\n\t\t\tvalue !== baseLayout?.[ key ]\n\t\t) {\n\t\t\toverrides[ key ] = value;\n\t\t}\n\t} );\n\n\treturn cleanEmptyObject( {\n\t\t...childLayoutValues,\n\t\t...overrides,\n\t} );\n}\n\nfunction getLayoutContainerValues( layout = {} ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( layout || {} ).filter(\n\t\t\t( [ key ] ) => ! CHILD_LAYOUT_KEYS.includes( key )\n\t\t)\n\t);\n}\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst { layout } = blockAttributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tconst hasGlobalPadding = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when layout doesn't use global padding\n\t\t\tif (\n\t\t\t\t! usedLayout?.inherit &&\n\t\t\t\t! usedLayout?.contentSize &&\n\t\t\t\tusedLayout?.type !== 'constrained'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn select( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalFeatures?.useRootPaddingAwareAlignments;\n\t\t},\n\t\t[ usedLayout?.contentSize, usedLayout?.inherit, usedLayout?.type ]\n\t);\n\n\tif ( hasGlobalPadding ) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst [ blockGapSupport ] = useSettings( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\treturn fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n}\n\n/**\n * Generates responsive layout CSS for viewport state styles.\n *\n * Viewport state blockGap values need to go through the layout definitions\n * because flow/constrained layouts use child margins while flex/grid use gap.\n *\n * @param { Object } options Options.\n * @param { Object } options.attributes Block attributes.\n * @param { string } options.blockName Block name.\n * @param { string } options.selector CSS selector.\n * @param { Object } options.layout Active block layout.\n * @param { boolean } options.hasBlockGapSupport Whether block gap is supported.\n * @param { * } options.globalBlockGapValue Global block gap fallback.\n *\n * @return { string } CSS rule.\n */\nexport function getResponsiveLayoutStyles( {\n\tattributes = {},\n\tblockName,\n\tselector,\n\tlayout = {},\n\thasBlockGapSupport,\n\tglobalBlockGapValue,\n} ) {\n\treturn Object.entries( RESPONSIVE_BREAKPOINTS )\n\t\t.map( ( [ viewport, mediaQuery ] ) => {\n\t\t\tconst viewportStyle = attributes?.style?.[ viewport ];\n\t\t\tconst viewportLayout = getLayoutContainerValues(\n\t\t\t\tviewportStyle?.layout\n\t\t\t);\n\t\t\tconst hasViewportLayout = Object.keys( viewportLayout ).length > 0;\n\t\t\tconst hasViewportBlockGap =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'blockGap' );\n\t\t\tconst hasViewportPadding =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'padding' );\n\t\t\tif (\n\t\t\t\t! hasViewportLayout &&\n\t\t\t\t! hasViewportBlockGap &&\n\t\t\t\t! hasViewportPadding\n\t\t\t) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst layoutType = getLayoutType( layout?.type || 'default' );\n\t\t\tconst viewportCSS = layoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName,\n\t\t\t\tselector,\n\t\t\t\tlayout,\n\t\t\t\tviewportOverrides: viewportLayout,\n\t\t\t\tstyle: viewportStyle,\n\t\t\t\thasBlockGapSupport,\n\t\t\t\tglobalBlockGapValue,\n\t\t\t} );\n\n\t\t\treturn viewportCSS ? `${ mediaQuery }{${ viewportCSS }}` : '';\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.join( '' );\n}\n\nfunction LayoutPanelPure( {\n\tlayout,\n\tstyle,\n\tsetAttributes,\n\tname: blockName,\n\tclientId,\n} ) {\n\tconst settings = useBlockSettings( blockName );\n\t// Block settings come from theme.json under settings.[blockName].\n\tconst { layout: layoutSettings } = settings;\n\tconst { themeSupportsLayout, activeBlockVariation, selectedState } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst blockEditorSelect = select( blockEditorStore );\n\t\t\t\tconst { getBlockAttributes, getSettings } = blockEditorSelect;\n\t\t\t\tconst { getSelectedBlockStyleState } =\n\t\t\t\t\tunlock( blockEditorSelect );\n\t\t\t\treturn {\n\t\t\t\t\tactiveBlockVariation: select(\n\t\t\t\t\t\tblocksStore\n\t\t\t\t\t).getActiveBlockVariation(\n\t\t\t\t\t\tblockName,\n\t\t\t\t\t\tgetBlockAttributes( clientId ) || {},\n\t\t\t\t\t\t'block'\n\t\t\t\t\t),\n\t\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\t\tselectedState:\n\t\t\t\t\t\tgetSelectedBlockStyleState?.( clientId ) ??\n\t\t\t\t\t\tDEFAULT_BLOCK_STYLE_STATE,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockName, clientId ]\n\t\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst isViewportLayoutState =\n\t\thasViewportBlockStyleState( selectedState ) &&\n\t\t! hasPseudoBlockStyleState( selectedState );\n\tconst resetLayoutFilter = useCallback(\n\t\t( ...resetArgs ) => {\n\t\t\tconst attributes = resetArgs[ 0 ] || {};\n\t\t\tconst context = resetArgs[ 1 ] || {};\n\n\t\t\tif ( isViewportLayoutState ) {\n\t\t\t\tconst existingStateStyle =\n\t\t\t\t\tgetStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState\n\t\t\t\t\t) || {};\n\t\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t\t...existingStateStyle,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tstyle: setStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState,\n\t\t\t\t\t\tnextStateStyle\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst resetBlockName = context.name || blockName;\n\t\t\tconst resetLayoutBlockSupport = getBlockSupport(\n\t\t\t\tresetBlockName,\n\t\t\t\tlayoutBlockSupportKey,\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlayout: getResetLayout(\n\t\t\t\t\tresetLayoutBlockSupport,\n\t\t\t\t\tactiveBlockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockName,\n\t\t\tactiveBlockVariation,\n\t\t\tisViewportLayoutState,\n\t\t\tselectedState,\n\t\t\tstyle,\n\t\t]\n\t);\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\t// Layout block support comes from the block's block.json.\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst blockSupportAndThemeSettings = {\n\t\t...layoutSettings,\n\t\t...layoutBlockSupport,\n\t};\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = blockSupportAndThemeSettings;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t/*\n\t * Try to find the layout type from either the\n\t * block's layout settings or any saved layout config.\n\t */\n\tconst baseLayout = layout || defaultBlockLayout || {};\n\tconst stateStyle = isViewportLayoutState\n\t\t? getStyleForState( style, selectedState )\n\t\t: undefined;\n\tconst stateLayout = stateStyle?.layout;\n\tconst usedLayout = isViewportLayoutState\n\t\t? cleanEmptyObject( {\n\t\t\t\t...baseLayout,\n\t\t\t\t...stateLayout,\n\t\t } ) || {}\n\t\t: baseLayout;\n\tconst resetLayoutDefaults = isViewportLayoutState\n\t\t? baseLayout\n\t\t: getResetLayout( layoutBlockSupport, activeBlockVariation );\n\tconst blockSupportAndLayout = {\n\t\t...layoutBlockSupport,\n\t\t...usedLayout,\n\t};\n\tconst { type, default: { type: defaultType = 'default' } = {} } =\n\t\tblockSupportAndLayout;\n\tconst blockLayoutType = type || defaultType;\n\n\t// Only show the inherit toggle if it's supported,\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t( ! blockLayoutType ||\n\t\t\tblockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ||\n\t\t\tblockSupportAndLayout.inherit )\n\t);\n\n\tconst { inherit = false, contentSize = null } = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( blockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( blockLayoutType );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\tconst showLayoutTypeSwitcher =\n\t\tisDefaultBlockStyleState( selectedState ) &&\n\t\t! inherit &&\n\t\tallowSwitching;\n\n\tconst onChangeLayout = ( newLayout ) => {\n\t\tif ( isViewportLayoutState ) {\n\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t...stateStyle,\n\t\t\t\tlayout: getLayoutStateOverrides(\n\t\t\t\t\tcleanEmptyObject( newLayout ),\n\t\t\t\t\tbaseLayout,\n\t\t\t\t\tstateStyle?.layout\n\t\t\t\t),\n\t\t\t} );\n\t\t\tsetAttributes( {\n\t\t\t\tstyle: setStyleForState( style, selectedState, nextStateStyle ),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( { layout: cleanEmptyObject( newLayout ) } );\n\t};\n\tconst onChangeType = ( newType ) => onChangeLayout( { type: newType } );\n\tconst resetLayout = () => onChangeLayout( resetLayoutDefaults );\n\tconst resetInheritToggle = () => onChangeLayout( { type: 'default' } );\n\tconst isUsingContentWidth = () =>\n\t\tlayoutType?.name === 'constrained' || hasContentSizeOrLegacySettings;\n\tconst hasInheritToggleValue = () =>\n\t\tisViewportLayoutState\n\t\t\t? ( usedLayout?.type ?? 'default' ) !==\n\t\t\t ( resetLayoutDefaults?.type ?? 'default' )\n\t\t\t: layout?.type === 'constrained';\n\tconst hasLayoutTypeValue = () =>\n\t\t( usedLayout?.type ?? 'default' ) !==\n\t\t( resetLayoutDefaults?.type ?? 'default' );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls\n\t\t\t\tgroup=\"layout\"\n\t\t\t\tresetAllFilter={ resetLayoutFilter }\n\t\t\t>\n\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Use content width' ) }\n\t\t\t\t\t\thasValue={ hasInheritToggleValue }\n\t\t\t\t\t\tonDeselect={ resetInheritToggle }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\tchecked={ isUsingContentWidth() }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tonChangeLayout( {\n\t\t\t\t\t\t\t\t\ttype: isUsingContentWidth()\n\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tisUsingContentWidth()\n\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container.'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ showLayoutTypeSwitcher && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\t\t\t\thasValue={ hasLayoutTypeValue }\n\t\t\t\t\t\tonDeselect={ resetLayout }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ blockLayoutType }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\tname={ blockName }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: LayoutPanelPure,\n\tattributeKeys: [ 'layout', 'style' ],\n\thasSupport( name ) {\n\t\treturn hasLayoutBlockSupport( name );\n\t},\n};\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\thideLabelFromVision\n\t\t\tisAdaptiveWidth\n\t\t\tvalue={ type }\n\t\t\tonChange={ onChange }\n\t\t>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\nfunction BlockWithLayoutStyles( {\n\tblock: BlockListBlock,\n\tprops,\n\tblockGapSupport,\n\tglobalBlockGapValue,\n\tlayoutClasses,\n} ) {\n\tconst { name, attributes } = props;\n\tconst id = useInstanceId( BlockListBlock );\n\tconst { layout } = attributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`;\n\t// Higher specificity to override defaults from theme.json.\n\tconst selector = `.${ selectorPrefix }${ id }`;\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t// Get CSS string for the current layout type.\n\t// The CSS and `style` element is only output if it is not empty.\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst baseLayoutCSS = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\tstyle: attributes?.style,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst responsiveLayoutCSS = getResponsiveLayoutStyles( {\n\t\tattributes,\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst css = [ baseLayoutCSS, responsiveLayoutCSS ]\n\t\t.filter( Boolean )\n\t\t.join( '' );\n\n\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\tconst layoutClassNames = clsx(\n\t\t{\n\t\t\t[ `${ selectorPrefix }${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t},\n\t\tlayoutClasses\n\t);\n\n\tuseStyleOverride( { css } );\n\n\treturn (\n\t\t<BlockListBlock\n\t\t\t{ ...props }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t/>\n\t);\n}\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) =>\n\t\tfunction WithLayoutStyles( props ) {\n\t\t\tconst { clientId, name, attributes } = props;\n\t\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\t\tconst layoutClasses = useLayoutClasses( attributes, name );\n\t\t\tconst extraProps = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\t\tif ( ! blockSupportsLayout ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { getSettings, getBlockSettings } = unlock(\n\t\t\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t);\n\t\t\t\t\tconst settings = getSettings();\n\t\t\t\t\tconst { disableLayoutStyles } = settings;\n\n\t\t\t\t\tif ( disableLayoutStyles ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ blockGapSupport ] = getBlockSettings(\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t'spacing.blockGap'\n\t\t\t\t\t);\n\n\t\t\t\t\t// Get default blockGap value from global styles for use in layouts like grid.\n\t\t\t\t\t// Check style variation first, then block-specific styles, then fall back to root styles.\n\t\t\t\t\tconst globalStyles = settings[ globalStylesDataKey ];\n\n\t\t\t\t\t// Check if the block has an active style variation with a blockGap value.\n\t\t\t\t\t// Only check the registry if the className contains a variation class to avoid unnecessary lookups.\n\t\t\t\t\tlet variationBlockGapValue;\n\t\t\t\t\tconst className = attributes?.className;\n\t\t\t\t\tif ( className?.includes( VARIATION_PREFIX ) ) {\n\t\t\t\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\t\t\t\tconst registeredStyles = getBlockStyles( name );\n\t\t\t\t\t\tconst variationName = getVariationNameFromClass(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\tregisteredStyles\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvariationBlockGapValue = variationName\n\t\t\t\t\t\t\t? globalStyles?.blocks?.[ name ]?.variations?.[\n\t\t\t\t\t\t\t\t\tvariationName\n\t\t\t\t\t\t\t ]?.spacing?.blockGap\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst globalBlockGapValue =\n\t\t\t\t\t\tvariationBlockGapValue ??\n\t\t\t\t\t\tglobalStyles?.blocks?.[ name ]?.spacing?.blockGap ??\n\t\t\t\t\t\tglobalStyles?.spacing?.blockGap;\n\n\t\t\t\t\treturn { blockGapSupport, globalBlockGapValue };\n\t\t\t\t},\n\t\t\t\t[ blockSupportsLayout, clientId, attributes?.className, name ]\n\t\t\t);\n\n\t\t\tif ( ! extraProps ) {\n\t\t\t\treturn (\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t__unstableLayoutClassNames={\n\t\t\t\t\t\t\tblockSupportsLayout ? layoutClasses : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<BlockWithLayoutStyles\n\t\t\t\t\tblock={ BlockListBlock }\n\t\t\t\t\tprops={ props }\n\t\t\t\t\tlayoutClasses={ layoutClasses }\n\t\t\t\t\t{ ...extraProps }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t'withLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useCallback } from '@wordpress/element';\nimport {\n\tgetBlockSupport,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport { useSettings } from '../components/use-settings';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { cleanEmptyObject, useBlockSettings, useStyleOverride } from './utils';\nimport { unlock } from '../lock-unlock';\nimport { globalStylesDataKey } from '../store/private-keys';\nimport { getVariationNameFromClass } from './block-style-variation';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\tgetStyleForState,\n\thasPseudoBlockStyleState,\n\thasViewportBlockStyleState,\n\tisDefaultBlockStyleState,\n\tsetStyleForState,\n} from './block-style-state';\n\nconst VARIATION_PREFIX = 'is-style-';\n\nconst layoutBlockSupportKey = 'layout';\n// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS and\n// packages/global-styles-engine/src/core/render.tsx.\nconst RESPONSIVE_BREAKPOINTS = {\n\t'@mobile': '@media (width <= 480px)',\n\t'@tablet': '@media (480px < width <= 782px)',\n};\nconst CHILD_LAYOUT_KEYS = [\n\t'selfStretch',\n\t'flexSize',\n\t'columnStart',\n\t'columnSpan',\n\t'rowStart',\n\t'rowSpan',\n];\nconst { kebabCase } = unlock( componentsPrivateApis );\n\nfunction getDefaultLayout( layoutBlockSupport = {}, blockVariation ) {\n\tconst defaultBlockLayout = layoutBlockSupport?.default;\n\n\treturn blockVariation?.attributes?.layout ?? defaultBlockLayout;\n}\n\n/**\n * Returns the layout values to use when resetting layout controls.\n *\n * @param { Object } layoutBlockSupport Block layout support settings.\n * @param { Object|undefined } blockVariation Block variation settings.\n *\n * @return { Object|undefined } Reset layout values.\n */\nexport function getResetLayout( layoutBlockSupport = {}, blockVariation ) {\n\treturn cleanEmptyObject( {\n\t\t...getDefaultLayout( layoutBlockSupport, blockVariation ),\n\t} );\n}\n\nfunction getLayoutStateOverrides(\n\tlayout = {},\n\tbaseLayout = {},\n\texistingLayout = {}\n) {\n\tconst overrides = {};\n\tconst childLayoutValues = Object.fromEntries(\n\t\tCHILD_LAYOUT_KEYS.filter( ( key ) =>\n\t\t\tObject.hasOwn( existingLayout || {}, key )\n\t\t).map( ( key ) => [ key, existingLayout[ key ] ] )\n\t);\n\n\tObject.entries( layout || {} ).forEach( ( [ key, value ] ) => {\n\t\tif (\n\t\t\t! CHILD_LAYOUT_KEYS.includes( key ) &&\n\t\t\tvalue !== baseLayout?.[ key ]\n\t\t) {\n\t\t\toverrides[ key ] = value;\n\t\t}\n\t} );\n\n\treturn cleanEmptyObject( {\n\t\t...childLayoutValues,\n\t\t...overrides,\n\t} );\n}\n\nfunction getLayoutContainerValues( layout = {} ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( layout || {} ).filter(\n\t\t\t( [ key ] ) => ! CHILD_LAYOUT_KEYS.includes( key )\n\t\t)\n\t);\n}\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst { layout } = blockAttributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tconst hasGlobalPadding = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when layout doesn't use global padding\n\t\t\tif (\n\t\t\t\t! usedLayout?.inherit &&\n\t\t\t\t! usedLayout?.contentSize &&\n\t\t\t\tusedLayout?.type !== 'constrained'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn select( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalFeatures?.useRootPaddingAwareAlignments;\n\t\t},\n\t\t[ usedLayout?.contentSize, usedLayout?.inherit, usedLayout?.type ]\n\t);\n\n\tif ( hasGlobalPadding ) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst [ blockGapSupport ] = useSettings( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\treturn fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n}\n\n/**\n * Generates responsive layout CSS for viewport state styles.\n *\n * Viewport state blockGap values need to go through the layout definitions\n * because flow/constrained layouts use child margins while flex/grid use gap.\n *\n * @param { Object } options Options.\n * @param { Object } options.attributes Block attributes.\n * @param { string } options.blockName Block name.\n * @param { string } options.selector CSS selector.\n * @param { Object } options.layout Active block layout.\n * @param { boolean } options.hasBlockGapSupport Whether block gap is supported.\n * @param { * } options.globalBlockGapValue Global block gap fallback.\n *\n * @return { string } CSS rule.\n */\nexport function getResponsiveLayoutStyles( {\n\tattributes = {},\n\tblockName,\n\tselector,\n\tlayout = {},\n\thasBlockGapSupport,\n\tglobalBlockGapValue,\n} ) {\n\treturn Object.entries( RESPONSIVE_BREAKPOINTS )\n\t\t.map( ( [ viewport, mediaQuery ] ) => {\n\t\t\tconst viewportStyle = getStyleForState( attributes?.style, {\n\t\t\t\tviewport,\n\t\t\t\tpseudo: DEFAULT_BLOCK_STYLE_STATE.pseudo,\n\t\t\t} );\n\t\t\tconst viewportLayout = getLayoutContainerValues(\n\t\t\t\tviewportStyle?.layout\n\t\t\t);\n\t\t\tconst hasViewportLayout = Object.keys( viewportLayout ).length > 0;\n\t\t\tconst hasViewportBlockGap =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'blockGap' );\n\t\t\tconst hasViewportPadding =\n\t\t\t\tviewportStyle?.spacing &&\n\t\t\t\tObject.hasOwn( viewportStyle.spacing, 'padding' );\n\t\t\tif (\n\t\t\t\t! hasViewportLayout &&\n\t\t\t\t! hasViewportBlockGap &&\n\t\t\t\t! hasViewportPadding\n\t\t\t) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst layoutType = getLayoutType( layout?.type || 'default' );\n\t\t\tconst viewportCSS = layoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName,\n\t\t\t\tselector,\n\t\t\t\tlayout,\n\t\t\t\tviewportOverrides: viewportLayout,\n\t\t\t\tstyle: viewportStyle,\n\t\t\t\thasBlockGapSupport,\n\t\t\t\tglobalBlockGapValue,\n\t\t\t} );\n\n\t\t\treturn viewportCSS ? `${ mediaQuery }{${ viewportCSS }}` : '';\n\t\t} )\n\t\t.filter( Boolean )\n\t\t.join( '' );\n}\n\nfunction LayoutPanelPure( {\n\tlayout,\n\tstyle,\n\tsetAttributes,\n\tname: blockName,\n\tclientId,\n} ) {\n\tconst settings = useBlockSettings( blockName );\n\t// Block settings come from theme.json under settings.[blockName].\n\tconst { layout: layoutSettings } = settings;\n\tconst { themeSupportsLayout, activeBlockVariation, selectedState } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst blockEditorSelect = select( blockEditorStore );\n\t\t\t\tconst { getBlockAttributes, getSettings } = blockEditorSelect;\n\t\t\t\tconst { getSelectedBlockStyleState } =\n\t\t\t\t\tunlock( blockEditorSelect );\n\t\t\t\treturn {\n\t\t\t\t\tactiveBlockVariation: select(\n\t\t\t\t\t\tblocksStore\n\t\t\t\t\t).getActiveBlockVariation(\n\t\t\t\t\t\tblockName,\n\t\t\t\t\t\tgetBlockAttributes( clientId ) || {},\n\t\t\t\t\t\t'block'\n\t\t\t\t\t),\n\t\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\t\tselectedState:\n\t\t\t\t\t\tgetSelectedBlockStyleState?.( clientId ) ??\n\t\t\t\t\t\tDEFAULT_BLOCK_STYLE_STATE,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockName, clientId ]\n\t\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst isViewportLayoutState =\n\t\thasViewportBlockStyleState( selectedState ) &&\n\t\t! hasPseudoBlockStyleState( selectedState );\n\tconst resetLayoutFilter = useCallback(\n\t\t( ...resetArgs ) => {\n\t\t\tconst attributes = resetArgs[ 0 ] || {};\n\t\t\tconst context = resetArgs[ 1 ] || {};\n\n\t\t\tif ( isViewportLayoutState ) {\n\t\t\t\tconst existingStateStyle =\n\t\t\t\t\tgetStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState\n\t\t\t\t\t) || {};\n\t\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t\t...existingStateStyle,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tstyle: setStyleForState(\n\t\t\t\t\t\tattributes.style ?? style,\n\t\t\t\t\t\tselectedState,\n\t\t\t\t\t\tnextStateStyle\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst resetBlockName = context.name || blockName;\n\t\t\tconst resetLayoutBlockSupport = getBlockSupport(\n\t\t\t\tresetBlockName,\n\t\t\t\tlayoutBlockSupportKey,\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlayout: getResetLayout(\n\t\t\t\t\tresetLayoutBlockSupport,\n\t\t\t\t\tactiveBlockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockName,\n\t\t\tactiveBlockVariation,\n\t\t\tisViewportLayoutState,\n\t\t\tselectedState,\n\t\t\tstyle,\n\t\t]\n\t);\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\t// Layout block support comes from the block's block.json.\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst blockSupportAndThemeSettings = {\n\t\t...layoutSettings,\n\t\t...layoutBlockSupport,\n\t};\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = blockSupportAndThemeSettings;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t/*\n\t * Try to find the layout type from either the\n\t * block's layout settings or any saved layout config.\n\t */\n\tconst baseLayout = layout || defaultBlockLayout || {};\n\tconst stateStyle = isViewportLayoutState\n\t\t? getStyleForState( style, selectedState )\n\t\t: undefined;\n\tconst stateLayout = stateStyle?.layout;\n\tconst usedLayout = isViewportLayoutState\n\t\t? cleanEmptyObject( {\n\t\t\t\t...baseLayout,\n\t\t\t\t...stateLayout,\n\t\t } ) || {}\n\t\t: baseLayout;\n\tconst resetLayoutDefaults = isViewportLayoutState\n\t\t? baseLayout\n\t\t: getResetLayout( layoutBlockSupport, activeBlockVariation );\n\tconst blockSupportAndLayout = {\n\t\t...layoutBlockSupport,\n\t\t...usedLayout,\n\t};\n\tconst { type, default: { type: defaultType = 'default' } = {} } =\n\t\tblockSupportAndLayout;\n\tconst blockLayoutType = type || defaultType;\n\n\t// Only show the inherit toggle if it's supported,\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t( ! blockLayoutType ||\n\t\t\tblockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ||\n\t\t\tblockSupportAndLayout.inherit )\n\t);\n\n\tconst { inherit = false, contentSize = null } = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( blockLayoutType === 'default' ||\n\t\t\tblockLayoutType === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( blockLayoutType );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\tconst showLayoutTypeSwitcher =\n\t\tisDefaultBlockStyleState( selectedState ) &&\n\t\t! inherit &&\n\t\tallowSwitching;\n\n\tconst onChangeLayout = ( newLayout ) => {\n\t\tif ( isViewportLayoutState ) {\n\t\t\tconst nextStateStyle = cleanEmptyObject( {\n\t\t\t\t...stateStyle,\n\t\t\t\tlayout: getLayoutStateOverrides(\n\t\t\t\t\tcleanEmptyObject( newLayout ),\n\t\t\t\t\tbaseLayout,\n\t\t\t\t\tstateStyle?.layout\n\t\t\t\t),\n\t\t\t} );\n\t\t\tsetAttributes( {\n\t\t\t\tstyle: setStyleForState( style, selectedState, nextStateStyle ),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( { layout: cleanEmptyObject( newLayout ) } );\n\t};\n\tconst onChangeType = ( newType ) => onChangeLayout( { type: newType } );\n\tconst resetLayout = () => onChangeLayout( resetLayoutDefaults );\n\tconst resetInheritToggle = () => onChangeLayout( { type: 'default' } );\n\tconst isUsingContentWidth = () =>\n\t\tlayoutType?.name === 'constrained' || hasContentSizeOrLegacySettings;\n\tconst hasInheritToggleValue = () =>\n\t\tisViewportLayoutState\n\t\t\t? ( usedLayout?.type ?? 'default' ) !==\n\t\t\t ( resetLayoutDefaults?.type ?? 'default' )\n\t\t\t: layout?.type === 'constrained';\n\tconst hasLayoutTypeValue = () =>\n\t\t( usedLayout?.type ?? 'default' ) !==\n\t\t( resetLayoutDefaults?.type ?? 'default' );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls\n\t\t\t\tgroup=\"layout\"\n\t\t\t\tresetAllFilter={ resetLayoutFilter }\n\t\t\t>\n\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Use content width' ) }\n\t\t\t\t\t\thasValue={ hasInheritToggleValue }\n\t\t\t\t\t\tonDeselect={ resetInheritToggle }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\tchecked={ isUsingContentWidth() }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tonChangeLayout( {\n\t\t\t\t\t\t\t\t\ttype: isUsingContentWidth()\n\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tisUsingContentWidth()\n\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container.'\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ showLayoutTypeSwitcher && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\t\t\t\thasValue={ hasLayoutTypeValue }\n\t\t\t\t\t\tonDeselect={ resetLayout }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ blockLayoutType }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\n\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\tlayoutBlockSupport={ blockSupportAndThemeSettings }\n\t\t\t\t\t\tresetLayout={ resetLayoutDefaults }\n\t\t\t\t\t\tname={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\tname={ blockName }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default {\n\tshareWithChildBlocks: true,\n\tedit: LayoutPanelPure,\n\tattributeKeys: [ 'layout', 'style' ],\n\thasSupport( name ) {\n\t\treturn hasLayoutBlockSupport( name );\n\t},\n};\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Layout type' ) }\n\t\t\thideLabelFromVision\n\t\t\tisAdaptiveWidth\n\t\t\tvalue={ type }\n\t\t\tonChange={ onChange }\n\t\t>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\nfunction BlockWithLayoutStyles( {\n\tblock: BlockListBlock,\n\tprops,\n\tblockGapSupport,\n\tglobalBlockGapValue,\n\tlayoutClasses,\n} ) {\n\tconst { name, attributes } = props;\n\tconst id = useInstanceId( BlockListBlock );\n\tconst { layout } = attributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst selectorPrefix = `wp-container-${ kebabCase( name ) }-is-layout-`;\n\t// Higher specificity to override defaults from theme.json.\n\tconst selector = `.${ selectorPrefix }${ id }`;\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t// Get CSS string for the current layout type.\n\t// The CSS and `style` element is only output if it is not empty.\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst baseLayoutCSS = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\tstyle: attributes?.style,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst responsiveLayoutCSS = getResponsiveLayoutStyles( {\n\t\tattributes,\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\thasBlockGapSupport,\n\t\tglobalBlockGapValue,\n\t} );\n\tconst css = [ baseLayoutCSS, responsiveLayoutCSS ]\n\t\t.filter( Boolean )\n\t\t.join( '' );\n\n\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\tconst layoutClassNames = clsx(\n\t\t{\n\t\t\t[ `${ selectorPrefix }${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t},\n\t\tlayoutClasses\n\t);\n\n\tuseStyleOverride( { css } );\n\n\treturn (\n\t\t<BlockListBlock\n\t\t\t{ ...props }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t/>\n\t);\n}\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) =>\n\t\tfunction WithLayoutStyles( props ) {\n\t\t\tconst { clientId, name, attributes } = props;\n\t\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\t\tconst layoutClasses = useLayoutClasses( attributes, name );\n\t\t\tconst extraProps = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\t\tif ( ! blockSupportsLayout ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { getSettings, getBlockSettings } = unlock(\n\t\t\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t);\n\t\t\t\t\tconst settings = getSettings();\n\t\t\t\t\tconst { disableLayoutStyles } = settings;\n\n\t\t\t\t\tif ( disableLayoutStyles ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ blockGapSupport ] = getBlockSettings(\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t'spacing.blockGap'\n\t\t\t\t\t);\n\n\t\t\t\t\t// Get default blockGap value from global styles for use in layouts like grid.\n\t\t\t\t\t// Check style variation first, then block-specific styles, then fall back to root styles.\n\t\t\t\t\tconst globalStyles = settings[ globalStylesDataKey ];\n\n\t\t\t\t\t// Check if the block has an active style variation with a blockGap value.\n\t\t\t\t\t// Only check the registry if the className contains a variation class to avoid unnecessary lookups.\n\t\t\t\t\tlet variationBlockGapValue;\n\t\t\t\t\tconst className = attributes?.className;\n\t\t\t\t\tif ( className?.includes( VARIATION_PREFIX ) ) {\n\t\t\t\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\t\t\t\tconst registeredStyles = getBlockStyles( name );\n\t\t\t\t\t\tconst variationName = getVariationNameFromClass(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\tregisteredStyles\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvariationBlockGapValue = variationName\n\t\t\t\t\t\t\t? globalStyles?.blocks?.[ name ]?.variations?.[\n\t\t\t\t\t\t\t\t\tvariationName\n\t\t\t\t\t\t\t ]?.spacing?.blockGap\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst globalBlockGapValue =\n\t\t\t\t\t\tvariationBlockGapValue ??\n\t\t\t\t\t\tglobalStyles?.blocks?.[ name ]?.spacing?.blockGap ??\n\t\t\t\t\t\tglobalStyles?.spacing?.blockGap;\n\n\t\t\t\t\treturn { blockGapSupport, globalBlockGapValue };\n\t\t\t\t},\n\t\t\t\t[ blockSupportsLayout, clientId, attributes?.className, name ]\n\t\t\t);\n\n\t\t\tif ( ! extraProps ) {\n\t\t\t\treturn (\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t__unstableLayoutClassNames={\n\t\t\t\t\t\t\tblockSupportsLayout ? layoutClasses : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<BlockWithLayoutStyles\n\t\t\t\t\tblock={ BlockListBlock }\n\t\t\t\t\tprops={ props }\n\t\t\t\t\tlayoutClasses={ layoutClasses }\n\t\t\t\t\t{ ...extraProps }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t'withLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -12,8 +12,8 @@ var PSEUDO_STATE_LABELS = {
|
|
|
12
12
|
":active": __("Active")
|
|
13
13
|
};
|
|
14
14
|
var RESPONSIVE_STATE_LABELS = {
|
|
15
|
-
tablet: __("Tablet"),
|
|
16
|
-
mobile: __("Mobile")
|
|
15
|
+
"@tablet": __("Tablet"),
|
|
16
|
+
"@mobile": __("Mobile")
|
|
17
17
|
};
|
|
18
18
|
var VALID_BLOCK_PSEUDO_STATES = {
|
|
19
19
|
"core/button": [":hover", ":focus", ":focus-visible", ":active"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/states.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport StateControl from '../components/global-styles/state-control';\nimport StateControlBadges from '../components/global-styles/state-control-badges';\nimport { useToolsPanelDropdownMenuProps } from '../components/global-styles/utils';\n\nexport const PSEUDO_STATE_LABELS = {\n\t':hover': __( 'Hover' ),\n\t':focus': __( 'Focus' ),\n\t':focus-visible': __( 'Focus-visible' ),\n\t':active': __( 'Active' ),\n};\n\nexport const RESPONSIVE_STATE_LABELS = {\n\
|
|
5
|
-
"mappings": ";AAGA,SAAS,oBAAoB;AAC7B,SAAS,UAAU;AAKnB,OAAO,kBAAkB;AACzB,OAAO,wBAAwB;AAC/B,SAAS,sCAAsC;AAoE7C;AAlEK,IAAM,sBAAsB;AAAA,EAClC,UAAU,GAAI,OAAQ;AAAA,EACtB,UAAU,GAAI,OAAQ;AAAA,EACtB,kBAAkB,GAAI,eAAgB;AAAA,EACtC,WAAW,GAAI,QAAS;AACzB;AAEO,IAAM,0BAA0B;AAAA,EACtC,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport StateControl from '../components/global-styles/state-control';\nimport StateControlBadges from '../components/global-styles/state-control-badges';\nimport { useToolsPanelDropdownMenuProps } from '../components/global-styles/utils';\n\nexport const PSEUDO_STATE_LABELS = {\n\t':hover': __( 'Hover' ),\n\t':focus': __( 'Focus' ),\n\t':focus-visible': __( 'Focus-visible' ),\n\t':active': __( 'Active' ),\n};\n\nexport const RESPONSIVE_STATE_LABELS = {\n\t'@tablet': __( 'Tablet' ),\n\t'@mobile': __( 'Mobile' ),\n};\n\n// Keep in sync with WP_Theme_JSON_Gutenberg::VALID_BLOCK_PSEUDO_SELECTORS\n// and packages/global-styles-engine/src/core/render.tsx.\nexport const VALID_BLOCK_PSEUDO_STATES = {\n\t'core/button': [ ':hover', ':focus', ':focus-visible', ':active' ],\n\t'core/navigation-link': [ ':hover', ':focus', ':focus-visible', ':active' ],\n};\n\nfunction getPseudoStateOptions( name ) {\n\tconst validStates = VALID_BLOCK_PSEUDO_STATES[ name ] ?? [];\n\n\treturn validStates\n\t\t.filter( ( state ) => PSEUDO_STATE_LABELS[ state ] )\n\t\t.map( ( state ) => ( {\n\t\t\tvalue: state,\n\t\t\tlabel: PSEUDO_STATE_LABELS[ state ],\n\t\t} ) );\n}\n\nconst DEFAULT_STATE_VALUE = 'default';\n\nfunction getViewportStateOptions( name ) {\n\tif ( ! getBlockType( name )?.attributes?.style ) {\n\t\treturn [];\n\t}\n\n\treturn Object.entries( RESPONSIVE_STATE_LABELS ).map(\n\t\t( [ value, label ] ) => ( {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t} )\n\t);\n}\n\n/**\n * Renders a style-state selector in the block card header.\n * Viewport states are shown for blocks with a style attribute, while\n * pseudo-states are shown for blocks with configured pseudo-state support.\n *\n * @param {Object} props Component props.\n * @param {string} props.name Block name.\n * @param {Object} props.value Currently selected style-state value.\n * @param {Function} props.onChange Callback when style-state selection changes.\n * @return {Element|null} State control component, or null if not applicable.\n */\nexport function BlockStatesControl( { name, value, onChange } ) {\n\tconst viewportStateOptions = getViewportStateOptions( name );\n\tconst pseudoStateOptions = getPseudoStateOptions( name );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tif ( ! viewportStateOptions.length && ! pseudoStateOptions.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StateControl\n\t\t\tviewportStates={ viewportStateOptions }\n\t\t\tpseudoStates={ pseudoStateOptions }\n\t\t\tviewportValue={ value?.viewport ?? DEFAULT_STATE_VALUE }\n\t\t\tpseudoStateValue={ value?.pseudo ?? DEFAULT_STATE_VALUE }\n\t\t\tonChangeViewport={ ( viewport ) => onChange( { viewport } ) }\n\t\t\tonChangePseudoState={ ( pseudo ) => onChange( { pseudo } ) }\n\t\t\tpopoverProps={ dropdownMenuProps.popoverProps }\n\t\t\tshowText={ false }\n\t\t/>\n\t);\n}\n\nexport function BlockStateBadges( { name, value } ) {\n\tconst viewportStateOptions = getViewportStateOptions( name );\n\tconst pseudoStateOptions = getPseudoStateOptions( name );\n\n\tif ( ! viewportStateOptions.length && ! pseudoStateOptions.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StateControlBadges\n\t\t\tviewportStates={ viewportStateOptions }\n\t\t\tpseudoStates={ pseudoStateOptions }\n\t\t\tviewportValue={ value?.viewport ?? DEFAULT_STATE_VALUE }\n\t\t\tpseudoStateValue={ value?.pseudo ?? DEFAULT_STATE_VALUE }\n\t\t/>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,oBAAoB;AAC7B,SAAS,UAAU;AAKnB,OAAO,kBAAkB;AACzB,OAAO,wBAAwB;AAC/B,SAAS,sCAAsC;AAoE7C;AAlEK,IAAM,sBAAsB;AAAA,EAClC,UAAU,GAAI,OAAQ;AAAA,EACtB,UAAU,GAAI,OAAQ;AAAA,EACtB,kBAAkB,GAAI,eAAgB;AAAA,EACtC,WAAW,GAAI,QAAS;AACzB;AAEO,IAAM,0BAA0B;AAAA,EACtC,WAAW,GAAI,QAAS;AAAA,EACxB,WAAW,GAAI,QAAS;AACzB;AAIO,IAAM,4BAA4B;AAAA,EACxC,eAAe,CAAE,UAAU,UAAU,kBAAkB,SAAU;AAAA,EACjE,wBAAwB,CAAE,UAAU,UAAU,kBAAkB,SAAU;AAC3E;AAEA,SAAS,sBAAuB,MAAO;AACtC,QAAM,cAAc,0BAA2B,IAAK,KAAK,CAAC;AAE1D,SAAO,YACL,OAAQ,CAAE,UAAW,oBAAqB,KAAM,CAAE,EAClD,IAAK,CAAE,WAAa;AAAA,IACpB,OAAO;AAAA,IACP,OAAO,oBAAqB,KAAM;AAAA,EACnC,EAAI;AACN;AAEA,IAAM,sBAAsB;AAE5B,SAAS,wBAAyB,MAAO;AACxC,MAAK,CAAE,aAAc,IAAK,GAAG,YAAY,OAAQ;AAChD,WAAO,CAAC;AAAA,EACT;AAEA,SAAO,OAAO,QAAS,uBAAwB,EAAE;AAAA,IAChD,CAAE,CAAE,OAAO,KAAM,OAAS;AAAA,MACzB;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;AAaO,SAAS,mBAAoB,EAAE,MAAM,OAAO,SAAS,GAAI;AAC/D,QAAM,uBAAuB,wBAAyB,IAAK;AAC3D,QAAM,qBAAqB,sBAAuB,IAAK;AACvD,QAAM,oBAAoB,+BAA+B;AAEzD,MAAK,CAAE,qBAAqB,UAAU,CAAE,mBAAmB,QAAS;AACnE,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,gBAAiB;AAAA,MACjB,cAAe;AAAA,MACf,eAAgB,OAAO,YAAY;AAAA,MACnC,kBAAmB,OAAO,UAAU;AAAA,MACpC,kBAAmB,CAAE,aAAc,SAAU,EAAE,SAAS,CAAE;AAAA,MAC1D,qBAAsB,CAAE,WAAY,SAAU,EAAE,OAAO,CAAE;AAAA,MACzD,cAAe,kBAAkB;AAAA,MACjC,UAAW;AAAA;AAAA,EACZ;AAEF;AAEO,SAAS,iBAAkB,EAAE,MAAM,MAAM,GAAI;AACnD,QAAM,uBAAuB,wBAAyB,IAAK;AAC3D,QAAM,qBAAqB,sBAAuB,IAAK;AAEvD,MAAK,CAAE,qBAAqB,UAAU,CAAE,mBAAmB,QAAS;AACnE,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,gBAAiB;AAAA,MACjB,cAAe;AAAA,MACf,eAAgB,OAAO,YAAY;AAAA,MACnC,kBAAmB,OAAO,UAAU;AAAA;AAAA,EACrC;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -13,7 +13,8 @@ import { useInstanceId } from "@wordpress/compose";
|
|
|
13
13
|
import { getCSSRules, compileCSS } from "@wordpress/style-engine";
|
|
14
14
|
import { BACKGROUND_SUPPORT_KEY, BackgroundImagePanel } from "./background.mjs";
|
|
15
15
|
import { BORDER_SUPPORT_KEY, BorderPanel, SHADOW_SUPPORT_KEY } from "./border.mjs";
|
|
16
|
-
import { COLOR_SUPPORT_KEY
|
|
16
|
+
import { COLOR_SUPPORT_KEY } from "./color.mjs";
|
|
17
|
+
import { ElementsEdit } from "./elements.mjs";
|
|
17
18
|
import {
|
|
18
19
|
TypographyPanel,
|
|
19
20
|
TYPOGRAPHY_SUPPORT_KEY,
|
|
@@ -48,8 +49,8 @@ import { unlock } from "../lock-unlock.mjs";
|
|
|
48
49
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
49
50
|
var BORDER_SIDES = ["Top", "Right", "Bottom", "Left"];
|
|
50
51
|
var RESPONSIVE_BREAKPOINTS = {
|
|
51
|
-
mobile: "@media (width <= 480px)",
|
|
52
|
-
tablet: "@media (480px < width <= 782px)"
|
|
52
|
+
"@mobile": "@media (width <= 480px)",
|
|
53
|
+
"@tablet": "@media (480px < width <= 782px)"
|
|
53
54
|
};
|
|
54
55
|
var styleSupportKeys = [
|
|
55
56
|
...TYPOGRAPHY_SUPPORT_KEYS,
|
|
@@ -249,7 +250,10 @@ function getResponsiveStateCSSRules(style, name, baseSelector) {
|
|
|
249
250
|
const nestedStateKeys = ["elements", ...validPseudoStates];
|
|
250
251
|
Object.entries(RESPONSIVE_BREAKPOINTS).forEach(
|
|
251
252
|
([viewport, mediaQuery]) => {
|
|
252
|
-
const viewportStyles = style
|
|
253
|
+
const viewportStyles = getStyleForState(style, {
|
|
254
|
+
viewport,
|
|
255
|
+
pseudo: DEFAULT_BLOCK_STYLE_STATE.pseudo
|
|
256
|
+
});
|
|
253
257
|
if (!viewportStyles) {
|
|
254
258
|
return;
|
|
255
259
|
}
|
|
@@ -478,7 +482,7 @@ function BlockStyleControls({
|
|
|
478
482
|
settings: panelSettings
|
|
479
483
|
};
|
|
480
484
|
return /* @__PURE__ */ jsxs(BlockStyleStateProvider, { value: selectedState, children: [
|
|
481
|
-
/* @__PURE__ */ jsx(
|
|
485
|
+
/* @__PURE__ */ jsx(ElementsEdit, { ...passedProps }),
|
|
482
486
|
/* @__PURE__ */ jsx(BackgroundImagePanel, { ...passedProps }),
|
|
483
487
|
/* @__PURE__ */ jsx(TypographyPanel, { ...passedProps }),
|
|
484
488
|
/* @__PURE__ */ jsx(BorderPanel, { ...passedProps }),
|