@wordpress/block-editor 12.20.0 → 12.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/components/block-actions/index.js +47 -36
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-bindings-toolbar-indicator/index.js +25 -0
- package/build/components/block-bindings-toolbar-indicator/index.js.map +1 -0
- package/build/components/block-edit/context.js +2 -1
- package/build/components/block-edit/context.js.map +1 -1
- package/build/components/block-edit/index.js +8 -3
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.js +5 -5
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build/components/block-inspector/index.js +5 -4
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-crash-boundary.native.js +49 -0
- package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build/components/block-list/block-crash-warning.native.js +24 -0
- package/build/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build/components/block-list/block-list-item.native.js +1 -1
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-outline.native.js +23 -7
- package/build/components/block-list/block-outline.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.native.js +7 -5
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +8 -1
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-popover/cover.js +68 -0
- package/build/components/block-popover/cover.js.map +1 -0
- package/build/components/block-popover/drop-zone.js +2 -3
- package/build/components/block-popover/drop-zone.js.map +1 -1
- package/build/components/block-popover/index.js +1 -19
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/index.js +2 -1
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +2 -4
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-rename/modal.js.map +1 -1
- package/build/components/block-settings/container.native.js +2 -1
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +41 -39
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -3
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build/components/block-toolbar/index.js +24 -11
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +89 -0
- package/build/components/block-toolbar/shuffle.js.map +1 -0
- package/build/components/block-toolbar/use-has-block-toolbar.js +43 -0
- package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -0
- package/build/components/block-tools/block-selection-button.js +5 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/empty-block-inserter.js +2 -5
- package/build/components/block-tools/empty-block-inserter.js.map +1 -1
- package/build/components/block-tools/index.js +9 -26
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +60 -0
- package/build/components/block-tools/use-show-block-tools.js.map +1 -0
- package/build/components/caption/index.native.js.map +1 -1
- package/build/components/child-layout-control/index.js +108 -11
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/color-palette/control.js.map +1 -1
- package/build/components/colors-gradients/control.js +1 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +11 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/global-styles/border-panel.js +21 -8
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +1 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +8 -33
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/index.js +6 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/shadow-panel-components.js +80 -23
- package/build/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +7 -5
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +16 -16
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -4
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid-visualizer/grid-item-resizer.js +77 -0
- package/build/components/grid-visualizer/grid-item-resizer.js.map +1 -0
- package/build/components/grid-visualizer/grid-visualizer.js +81 -0
- package/build/components/grid-visualizer/grid-visualizer.js.map +1 -0
- package/build/components/grid-visualizer/index.js +20 -0
- package/build/components/grid-visualizer/index.js.map +1 -0
- package/build/components/grid-visualizer/utils.js +10 -0
- package/build/components/grid-visualizer/utils.js.map +1 -0
- package/build/components/iframe/index.js +66 -17
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.native.js +7 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +8 -2
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/mobile-tab-navigation.js +2 -2
- package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build/components/inspector-controls-tabs/index.js +1 -1
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/link-control/link-preview.js +4 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-select-button.js +0 -2
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +4 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-clipboard-handler.js +2 -1
- package/build/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build/components/list-view/utils.js +5 -3
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/panel-color-settings/index.js.map +1 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/resizable-box-popover/index.js +3 -5
- package/build/components/resizable-box-popover/index.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -1
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/index.js +46 -26
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-enter.js +3 -0
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build/components/url-popover/index.js +3 -3
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +4 -0
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/warning/index.native.js +9 -4
- package/build/components/warning/index.native.js.map +1 -1
- package/build/components/writing-flow/use-clipboard-handler.js +2 -1
- package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build/components/writing-flow/utils.js +23 -6
- package/build/components/writing-flow/utils.js.map +1 -1
- package/build/hooks/anchor.js +7 -8
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +39 -2
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +34 -8
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/border.js +6 -4
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/dimensions.js +3 -4
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-size.js +6 -7
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/index.js +3 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +67 -6
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/layout.js +32 -14
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/position.js +1 -1
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +115 -0
- package/build/hooks/spacing-visualizer.js.map +1 -0
- package/build/hooks/use-bindings-attributes.js +171 -48
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-typography-props.js +1 -2
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/layouts/grid.js +6 -2
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +7 -3
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +3 -1
- package/build/private-apis.native.js.map +1 -1
- package/build/store/actions.js +42 -12
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +29 -55
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +0 -8
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +34 -46
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +27 -15
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-actions/index.js +47 -36
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-bindings-toolbar-indicator/index.js +18 -0
- package/build-module/components/block-bindings-toolbar-indicator/index.js.map +1 -0
- package/build-module/components/block-edit/context.js +1 -0
- package/build-module/components/block-edit/context.js.map +1 -1
- package/build-module/components/block-edit/index.js +9 -4
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +5 -5
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build-module/components/block-inspector/index.js +6 -5
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
- package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build-module/components/block-list/block-crash-warning.native.js +15 -0
- package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build-module/components/block-list/block-list-item.native.js +1 -1
- package/build-module/components/block-list/block-list-item.native.js.map +1 -1
- package/build-module/components/block-list/block-outline.native.js +23 -7
- package/build-module/components/block-list/block-outline.native.js.map +1 -1
- package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
- package/build-module/components/block-list/block.native.js +7 -5
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +9 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-popover/cover.js +60 -0
- package/build-module/components/block-popover/cover.js.map +1 -0
- package/build-module/components/block-popover/drop-zone.js +2 -3
- package/build-module/components/block-popover/drop-zone.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -19
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/index.js +2 -1
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +3 -5
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-rename/modal.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +3 -2
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +42 -40
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +1 -3
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +24 -12
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +82 -0
- package/build-module/components/block-toolbar/shuffle.js.map +1 -0
- package/build-module/components/block-toolbar/use-has-block-toolbar.js +36 -0
- package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -0
- package/build-module/components/block-tools/block-selection-button.js +5 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/empty-block-inserter.js +2 -5
- package/build-module/components/block-tools/empty-block-inserter.js.map +1 -1
- package/build-module/components/block-tools/index.js +9 -26
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +54 -0
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -0
- package/build-module/components/caption/index.native.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +109 -12
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/color-palette/control.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +1 -1
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +22 -10
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +1 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +9 -34
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/shadow-panel-components.js +82 -24
- package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +7 -5
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +17 -17
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +2 -4
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid-visualizer/grid-item-resizer.js +69 -0
- package/build-module/components/grid-visualizer/grid-item-resizer.js.map +1 -0
- package/build-module/components/grid-visualizer/grid-visualizer.js +73 -0
- package/build-module/components/grid-visualizer/grid-visualizer.js.map +1 -0
- package/build-module/components/grid-visualizer/index.js +3 -0
- package/build-module/components/grid-visualizer/index.js.map +1 -0
- package/build-module/components/grid-visualizer/utils.js +4 -0
- package/build-module/components/grid-visualizer/utils.js.map +1 -0
- package/build-module/components/iframe/index.js +66 -17
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +8 -2
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js +2 -2
- package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/index.js +1 -1
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +5 -2
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +0 -2
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +6 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js +3 -2
- package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build-module/components/list-view/utils.js +2 -1
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/panel-color-settings/index.js.map +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/resizable-box-popover/index.js +3 -5
- package/build-module/components/resizable-box-popover/index.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -1
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +47 -28
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +3 -0
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build-module/components/url-popover/index.js +3 -3
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +4 -0
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/warning/index.native.js +9 -4
- package/build-module/components/warning/index.native.js.map +1 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js +3 -2
- package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build-module/components/writing-flow/utils.js +22 -7
- package/build-module/components/writing-flow/utils.js.map +1 -1
- package/build-module/hooks/anchor.js +8 -9
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +38 -1
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +34 -8
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/border.js +7 -5
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/dimensions.js +1 -2
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-size.js +7 -8
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/index.js +3 -2
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +67 -6
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/layout.js +32 -14
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/position.js +1 -1
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +106 -0
- package/build-module/hooks/spacing-visualizer.js.map +1 -0
- package/build-module/hooks/use-bindings-attributes.js +172 -49
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +2 -3
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/layouts/grid.js +6 -2
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +7 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +3 -1
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/actions.js +42 -12
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +29 -54
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +0 -6
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +34 -46
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +23 -13
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +22 -2
- package/build-style/content.css +22 -2
- package/build-style/default-editor-styles-rtl.css +1 -0
- package/build-style/default-editor-styles.css +1 -0
- package/build-style/style-rtl.css +106 -27
- package/build-style/style.css +106 -27
- package/package.json +31 -31
- package/src/components/block-actions/index.js +59 -55
- package/src/components/block-bindings-toolbar-indicator/index.js +20 -0
- package/src/components/block-bindings-toolbar-indicator/style.scss +16 -0
- package/src/components/block-draggable/test/index.native.js +2 -2
- package/src/components/block-edit/context.js +1 -0
- package/src/components/block-edit/index.js +5 -1
- package/src/components/block-heading-level-dropdown/README.md +5 -5
- package/src/components/block-heading-level-dropdown/index.js +5 -5
- package/src/components/block-heading-level-dropdown/index.native.js +5 -4
- package/src/components/block-inspector/index.js +7 -5
- package/src/components/block-list/block-crash-boundary.native.js +43 -0
- package/src/components/block-list/block-crash-warning.native.js +19 -0
- package/src/components/block-list/block-invalid-warning.native.js +1 -1
- package/src/components/block-list/block-list-item.native.js +1 -1
- package/src/components/block-list/block-outline.native.js +36 -21
- package/src/components/block-list/block-selection-button.native.js +1 -3
- package/src/components/block-list/block.native.js +14 -10
- package/src/components/block-list/content.scss +21 -1
- package/src/components/block-list/test/block-outline.native.js +255 -0
- package/src/components/block-list/use-block-props/index.js +12 -2
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -7
- package/src/components/block-mover/index.native.js +1 -1
- package/src/components/block-popover/cover.js +63 -0
- package/src/components/block-popover/drop-zone.js +3 -4
- package/src/components/block-popover/index.js +1 -28
- package/src/components/block-preview/index.js +3 -1
- package/src/components/block-removal-warning-modal/index.js +5 -19
- package/src/components/block-rename/modal.js +1 -1
- package/src/components/block-settings/container.native.js +5 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +53 -65
- package/src/components/block-settings-menu-controls/README.md +0 -9
- package/src/components/block-settings-menu-controls/index.js +1 -6
- package/src/components/block-switcher/block-transformations-menu.native.js +1 -1
- package/src/components/block-toolbar/block-toolbar-menu.native.js +2 -2
- package/src/components/block-toolbar/index.js +22 -16
- package/src/components/block-toolbar/shuffle.js +93 -0
- package/src/components/block-toolbar/test/index.native.js +1 -7
- package/src/components/block-toolbar/use-has-block-toolbar.js +49 -0
- package/src/components/block-tools/block-selection-button.js +4 -0
- package/src/components/block-tools/empty-block-inserter.js +3 -6
- package/src/components/block-tools/index.js +13 -36
- package/src/components/block-tools/use-show-block-tools.js +73 -0
- package/src/components/caption/index.native.js +1 -1
- package/src/components/child-layout-control/index.js +148 -36
- package/src/components/color-palette/control.js +1 -1
- package/src/components/colors-gradients/control.js +1 -1
- package/src/components/colors-gradients/test/control.js +2 -2
- package/src/components/contrast-checker/test/index.js +10 -10
- package/src/components/convert-to-group-buttons/toolbar.js +13 -1
- package/src/components/default-block-appender/content.scss +5 -2
- package/src/components/global-styles/border-panel.js +35 -24
- package/src/components/global-styles/color-panel.js +1 -1
- package/src/components/global-styles/dimensions-panel.js +9 -34
- package/src/components/global-styles/image-settings-panel.js +1 -1
- package/src/components/global-styles/index.js +5 -1
- package/src/components/global-styles/shadow-panel-components.js +92 -23
- package/src/components/global-styles/style.scss +33 -10
- package/src/components/global-styles/test/typography-utils.js +231 -81
- package/src/components/global-styles/test/use-global-styles-output.js +31 -0
- package/src/components/global-styles/typography-utils.js +10 -7
- package/src/components/global-styles/use-global-styles-output.js +17 -17
- package/src/components/global-styles/utils.js +2 -26
- package/src/components/grid-visualizer/grid-item-resizer.js +100 -0
- package/src/components/grid-visualizer/grid-visualizer.js +81 -0
- package/src/components/grid-visualizer/index.js +2 -0
- package/src/components/grid-visualizer/style.scss +33 -0
- package/src/components/grid-visualizer/utils.js +5 -0
- package/src/components/iframe/index.js +89 -26
- package/src/components/index.native.js +1 -0
- package/src/components/inner-blocks/use-nested-settings-update.js +12 -2
- package/src/components/inserter/block-patterns-explorer/index.js +2 -9
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
- package/src/components/inserter/media-tab/media-preview.js +1 -1
- package/src/components/inserter/menu.native.js +3 -3
- package/src/components/inserter/mobile-tab-navigation.js +2 -2
- package/src/components/inserter/style.scss +10 -0
- package/src/components/inspector-controls/block-support-tools-panel.js +2 -2
- package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
- package/src/components/inspector-controls-tabs/index.js +1 -1
- package/src/components/inspector-controls-tabs/styles-tab.js +2 -2
- package/src/components/line-height-control/test/index.js +1 -1
- package/src/components/link-control/link-preview.js +9 -2
- package/src/components/link-control/search-input.js +1 -1
- package/src/components/link-control/style.scss +9 -5
- package/src/components/list-view/block-select-button.js +0 -2
- package/src/components/list-view/block.js +12 -21
- package/src/components/list-view/branch.js +1 -1
- package/src/components/list-view/drop-indicator.js +1 -1
- package/src/components/list-view/index.js +1 -1
- package/src/components/list-view/style.scss +34 -16
- package/src/components/list-view/use-clipboard-handler.js +3 -2
- package/src/components/list-view/utils.js +4 -1
- package/src/components/panel-color-settings/index.js +1 -1
- package/src/components/panel-color-settings/test/index.js +3 -3
- package/src/components/provider/index.js +1 -4
- package/src/components/resizable-box-popover/index.js +4 -6
- package/src/components/responsive-block-control/README.md +4 -4
- package/src/components/responsive-block-control/index.js +1 -1
- package/src/components/responsive-block-control/test/index.js +5 -5
- package/src/components/rich-text/README.md +6 -0
- package/src/components/rich-text/index.js +76 -53
- package/src/components/rich-text/use-enter.js +4 -0
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
- package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/src/components/url-popover/index.js +5 -5
- package/src/components/url-popover/style.scss +1 -0
- package/src/components/use-moving-animation/index.js +1 -0
- package/src/components/warning/index.native.js +19 -15
- package/src/components/writing-flow/use-clipboard-handler.js +3 -2
- package/src/components/writing-flow/utils.js +31 -16
- package/src/hooks/anchor.js +41 -61
- package/src/hooks/background.js +49 -4
- package/src/hooks/block-hooks.js +47 -9
- package/src/hooks/block-hooks.scss +6 -0
- package/src/hooks/border.js +16 -4
- package/src/hooks/dimensions.js +1 -2
- package/src/hooks/font-size.js +7 -12
- package/src/hooks/index.js +3 -0
- package/src/hooks/layout-child.js +82 -8
- package/src/hooks/layout.js +34 -19
- package/src/hooks/line-height.js +1 -1
- package/src/hooks/position.js +1 -1
- package/src/hooks/spacing-visualizer.js +126 -0
- package/src/hooks/{padding.scss → spacing.scss} +1 -1
- package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
- package/src/hooks/test/anchor.native.js +32 -0
- package/src/hooks/use-bindings-attributes.js +215 -65
- package/src/hooks/use-typography-props.js +2 -8
- package/src/layouts/grid.js +8 -3
- package/src/private-apis.js +6 -2
- package/src/private-apis.native.js +2 -0
- package/src/store/actions.js +56 -18
- package/src/store/private-actions.js +34 -79
- package/src/store/private-selectors.js +0 -8
- package/src/store/reducer.js +43 -64
- package/src/store/selectors.js +41 -46
- package/src/store/test/actions.js +0 -4
- package/src/style.scss +3 -1
- package/tsconfig.json +1 -0
- package/build/hooks/margin.js +0 -86
- package/build/hooks/margin.js.map +0 -1
- package/build/hooks/padding.js +0 -78
- package/build/hooks/padding.js.map +0 -1
- package/build/utils/use-can-block-toolbar-be-focused.js +0 -46
- package/build/utils/use-can-block-toolbar-be-focused.js.map +0 -1
- package/build-module/hooks/margin.js +0 -78
- package/build-module/hooks/margin.js.map +0 -1
- package/build-module/hooks/padding.js +0 -70
- package/build-module/hooks/padding.js.map +0 -1
- package/build-module/utils/use-can-block-toolbar-be-focused.js +0 -40
- package/build-module/utils/use-can-block-toolbar-be-focused.js.map +0 -1
- package/src/hooks/margin.js +0 -91
- package/src/hooks/padding.js +0 -82
- package/src/utils/use-can-block-toolbar-be-focused.js +0 -48
|
@@ -24,10 +24,7 @@ import {
|
|
|
24
24
|
getBlockStyleVariationSelector,
|
|
25
25
|
} from './utils';
|
|
26
26
|
import { getBlockCSSSelector } from './get-block-css-selector';
|
|
27
|
-
import {
|
|
28
|
-
getTypographyFontSizeValue,
|
|
29
|
-
getFluidTypographyOptionsFromSettings,
|
|
30
|
-
} from './typography-utils';
|
|
27
|
+
import { getTypographyFontSizeValue } from './typography-utils';
|
|
31
28
|
import { GlobalStylesContext } from './context';
|
|
32
29
|
import { useGlobalSetting } from './hooks';
|
|
33
30
|
import { getDuotoneFilter } from '../duotone/utils';
|
|
@@ -412,7 +409,9 @@ export function getStylesDeclarations(
|
|
|
412
409
|
let ruleValue = rule.value;
|
|
413
410
|
if ( typeof ruleValue !== 'string' && ruleValue?.ref ) {
|
|
414
411
|
const refPath = ruleValue.ref.split( '.' );
|
|
415
|
-
ruleValue =
|
|
412
|
+
ruleValue = compileStyleValue(
|
|
413
|
+
getValueFromObjectPath( tree, refPath )
|
|
414
|
+
);
|
|
416
415
|
// Presence of another ref indicates a reference to another dynamic value.
|
|
417
416
|
// Pointing to another dynamic value is not supported.
|
|
418
417
|
if ( ! ruleValue || ruleValue?.ref ) {
|
|
@@ -431,7 +430,7 @@ export function getStylesDeclarations(
|
|
|
431
430
|
*/
|
|
432
431
|
ruleValue = getTypographyFontSizeValue(
|
|
433
432
|
{ size: ruleValue },
|
|
434
|
-
|
|
433
|
+
tree?.settings
|
|
435
434
|
);
|
|
436
435
|
}
|
|
437
436
|
|
|
@@ -600,6 +599,7 @@ const STYLE_KEYS = [
|
|
|
600
599
|
'filter',
|
|
601
600
|
'outline',
|
|
602
601
|
'shadow',
|
|
602
|
+
'background',
|
|
603
603
|
];
|
|
604
604
|
|
|
605
605
|
function pickStyleKeys( treeToPickFrom ) {
|
|
@@ -1194,15 +1194,13 @@ export function useGlobalStylesOutputWithConfig( mergedConfig = {} ) {
|
|
|
1194
1194
|
|
|
1195
1195
|
const isTemplate = blockContext?.templateSlug !== undefined;
|
|
1196
1196
|
|
|
1197
|
-
const getBlockStyles = useSelect(
|
|
1198
|
-
return select( blocksStore ).getBlockStyles;
|
|
1199
|
-
}, [] );
|
|
1197
|
+
const { getBlockStyles } = useSelect( blocksStore );
|
|
1200
1198
|
|
|
1201
1199
|
return useMemo( () => {
|
|
1202
1200
|
if ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {
|
|
1203
1201
|
return [];
|
|
1204
1202
|
}
|
|
1205
|
-
|
|
1203
|
+
const updatedConfig = updateConfigWithSeparator( mergedConfig );
|
|
1206
1204
|
|
|
1207
1205
|
const blockSelectors = getBlockSelectors(
|
|
1208
1206
|
getBlockTypes(),
|
|
@@ -1210,18 +1208,18 @@ export function useGlobalStylesOutputWithConfig( mergedConfig = {} ) {
|
|
|
1210
1208
|
);
|
|
1211
1209
|
|
|
1212
1210
|
const customProperties = toCustomProperties(
|
|
1213
|
-
|
|
1211
|
+
updatedConfig,
|
|
1214
1212
|
blockSelectors
|
|
1215
1213
|
);
|
|
1216
1214
|
const globalStyles = toStyles(
|
|
1217
|
-
|
|
1215
|
+
updatedConfig,
|
|
1218
1216
|
blockSelectors,
|
|
1219
1217
|
hasBlockGapSupport,
|
|
1220
1218
|
hasFallbackGapSupport,
|
|
1221
1219
|
disableLayoutStyles,
|
|
1222
1220
|
isTemplate
|
|
1223
1221
|
);
|
|
1224
|
-
const svgs = toSvgFilters(
|
|
1222
|
+
const svgs = toSvgFilters( updatedConfig, blockSelectors );
|
|
1225
1223
|
|
|
1226
1224
|
const styles = [
|
|
1227
1225
|
{
|
|
@@ -1234,7 +1232,7 @@ export function useGlobalStylesOutputWithConfig( mergedConfig = {} ) {
|
|
|
1234
1232
|
},
|
|
1235
1233
|
// Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor.
|
|
1236
1234
|
{
|
|
1237
|
-
css:
|
|
1235
|
+
css: updatedConfig.styles.css ?? '',
|
|
1238
1236
|
isGlobalStyles: true,
|
|
1239
1237
|
},
|
|
1240
1238
|
{
|
|
@@ -1248,11 +1246,11 @@ export function useGlobalStylesOutputWithConfig( mergedConfig = {} ) {
|
|
|
1248
1246
|
// If there are, get the block selector and push the selector together with
|
|
1249
1247
|
// the CSS value to the 'stylesheets' array.
|
|
1250
1248
|
getBlockTypes().forEach( ( blockType ) => {
|
|
1251
|
-
if (
|
|
1249
|
+
if ( updatedConfig.styles.blocks[ blockType.name ]?.css ) {
|
|
1252
1250
|
const selector = blockSelectors[ blockType.name ].selector;
|
|
1253
1251
|
styles.push( {
|
|
1254
1252
|
css: processCSSNesting(
|
|
1255
|
-
|
|
1253
|
+
updatedConfig.styles.blocks[ blockType.name ]?.css,
|
|
1256
1254
|
selector
|
|
1257
1255
|
),
|
|
1258
1256
|
isGlobalStyles: true,
|
|
@@ -1260,12 +1258,14 @@ export function useGlobalStylesOutputWithConfig( mergedConfig = {} ) {
|
|
|
1260
1258
|
}
|
|
1261
1259
|
} );
|
|
1262
1260
|
|
|
1263
|
-
return [ styles,
|
|
1261
|
+
return [ styles, updatedConfig.settings ];
|
|
1264
1262
|
}, [
|
|
1265
1263
|
hasBlockGapSupport,
|
|
1266
1264
|
hasFallbackGapSupport,
|
|
1267
1265
|
mergedConfig,
|
|
1268
1266
|
disableLayoutStyles,
|
|
1267
|
+
isTemplate,
|
|
1268
|
+
getBlockStyles,
|
|
1269
1269
|
] );
|
|
1270
1270
|
}
|
|
1271
1271
|
|
|
@@ -6,32 +6,11 @@ import fastDeepEqual from 'fast-deep-equal/es6';
|
|
|
6
6
|
/**
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
getTypographyFontSizeValue,
|
|
11
|
-
getFluidTypographyOptionsFromSettings,
|
|
12
|
-
} from './typography-utils';
|
|
9
|
+
import { getTypographyFontSizeValue } from './typography-utils';
|
|
13
10
|
import { getValueFromObjectPath } from '../../utils/object';
|
|
14
11
|
|
|
15
12
|
/* Supporting data. */
|
|
16
|
-
export const ROOT_BLOCK_NAME = 'root';
|
|
17
13
|
export const ROOT_BLOCK_SELECTOR = 'body';
|
|
18
|
-
export const ROOT_BLOCK_SUPPORTS = [
|
|
19
|
-
'background',
|
|
20
|
-
'backgroundColor',
|
|
21
|
-
'color',
|
|
22
|
-
'linkColor',
|
|
23
|
-
'captionColor',
|
|
24
|
-
'buttonColor',
|
|
25
|
-
'headingColor',
|
|
26
|
-
'fontFamily',
|
|
27
|
-
'fontSize',
|
|
28
|
-
'fontStyle',
|
|
29
|
-
'fontWeight',
|
|
30
|
-
'lineHeight',
|
|
31
|
-
'textDecoration',
|
|
32
|
-
'textTransform',
|
|
33
|
-
'padding',
|
|
34
|
-
];
|
|
35
14
|
|
|
36
15
|
export const PRESET_METADATA = [
|
|
37
16
|
{
|
|
@@ -77,10 +56,7 @@ export const PRESET_METADATA = [
|
|
|
77
56
|
{
|
|
78
57
|
path: [ 'typography', 'fontSizes' ],
|
|
79
58
|
valueFunc: ( preset, settings ) =>
|
|
80
|
-
getTypographyFontSizeValue(
|
|
81
|
-
preset,
|
|
82
|
-
getFluidTypographyOptionsFromSettings( settings )
|
|
83
|
-
),
|
|
59
|
+
getTypographyFontSizeValue( preset, settings ),
|
|
84
60
|
valueKey: 'size',
|
|
85
61
|
cssVarInfix: 'font-size',
|
|
86
62
|
classes: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { ResizableBox } from '@wordpress/components';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
10
|
+
import BlockPopoverCover from '../block-popover/cover';
|
|
11
|
+
import { getComputedCSS } from './utils';
|
|
12
|
+
|
|
13
|
+
export function GridItemResizer( { clientId, onChange } ) {
|
|
14
|
+
const blockElement = useBlockElement( clientId );
|
|
15
|
+
if ( ! blockElement ) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return (
|
|
19
|
+
<BlockPopoverCover
|
|
20
|
+
className="block-editor-grid-item-resizer"
|
|
21
|
+
clientId={ clientId }
|
|
22
|
+
__unstablePopoverSlot="block-toolbar"
|
|
23
|
+
>
|
|
24
|
+
<ResizableBox
|
|
25
|
+
className="block-editor-grid-item-resizer__box"
|
|
26
|
+
size={ {
|
|
27
|
+
width: '100%',
|
|
28
|
+
height: '100%',
|
|
29
|
+
} }
|
|
30
|
+
enable={ {
|
|
31
|
+
bottom: true,
|
|
32
|
+
bottomLeft: false,
|
|
33
|
+
bottomRight: false,
|
|
34
|
+
left: false,
|
|
35
|
+
right: true,
|
|
36
|
+
top: false,
|
|
37
|
+
topLeft: false,
|
|
38
|
+
topRight: false,
|
|
39
|
+
} }
|
|
40
|
+
onResizeStop={ ( event, direction, boxElement ) => {
|
|
41
|
+
const gridElement = blockElement.parentElement;
|
|
42
|
+
const columnGap = parseFloat(
|
|
43
|
+
getComputedCSS( gridElement, 'column-gap' )
|
|
44
|
+
);
|
|
45
|
+
const rowGap = parseFloat(
|
|
46
|
+
getComputedCSS( gridElement, 'row-gap' )
|
|
47
|
+
);
|
|
48
|
+
const gridColumnLines = getGridLines(
|
|
49
|
+
getComputedCSS( gridElement, 'grid-template-columns' ),
|
|
50
|
+
columnGap
|
|
51
|
+
);
|
|
52
|
+
const gridRowLines = getGridLines(
|
|
53
|
+
getComputedCSS( gridElement, 'grid-template-rows' ),
|
|
54
|
+
rowGap
|
|
55
|
+
);
|
|
56
|
+
const columnStart = getClosestLine(
|
|
57
|
+
gridColumnLines,
|
|
58
|
+
blockElement.offsetLeft
|
|
59
|
+
);
|
|
60
|
+
const rowStart = getClosestLine(
|
|
61
|
+
gridRowLines,
|
|
62
|
+
blockElement.offsetTop
|
|
63
|
+
);
|
|
64
|
+
const columnEnd = getClosestLine(
|
|
65
|
+
gridColumnLines,
|
|
66
|
+
blockElement.offsetLeft + boxElement.offsetWidth
|
|
67
|
+
);
|
|
68
|
+
const rowEnd = getClosestLine(
|
|
69
|
+
gridRowLines,
|
|
70
|
+
blockElement.offsetTop + boxElement.offsetHeight
|
|
71
|
+
);
|
|
72
|
+
onChange( {
|
|
73
|
+
columnSpan: Math.max( columnEnd - columnStart, 1 ),
|
|
74
|
+
rowSpan: Math.max( rowEnd - rowStart, 1 ),
|
|
75
|
+
} );
|
|
76
|
+
} }
|
|
77
|
+
/>
|
|
78
|
+
</BlockPopoverCover>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function getGridLines( template, gap ) {
|
|
83
|
+
const lines = [ 0 ];
|
|
84
|
+
for ( const size of template.split( ' ' ) ) {
|
|
85
|
+
const line = parseFloat( size );
|
|
86
|
+
lines.push( lines[ lines.length - 1 ] + line + gap );
|
|
87
|
+
}
|
|
88
|
+
return lines;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function getClosestLine( lines, position ) {
|
|
92
|
+
return lines.reduce(
|
|
93
|
+
( closest, line, index ) =>
|
|
94
|
+
Math.abs( line - position ) <
|
|
95
|
+
Math.abs( lines[ closest ] - position )
|
|
96
|
+
? index
|
|
97
|
+
: closest,
|
|
98
|
+
0
|
|
99
|
+
);
|
|
100
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useState, useEffect } from '@wordpress/element';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
10
|
+
import BlockPopoverCover from '../block-popover/cover';
|
|
11
|
+
import { getComputedCSS } from './utils';
|
|
12
|
+
|
|
13
|
+
export function GridVisualizer( { clientId } ) {
|
|
14
|
+
const blockElement = useBlockElement( clientId );
|
|
15
|
+
if ( ! blockElement ) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return (
|
|
19
|
+
<BlockPopoverCover
|
|
20
|
+
className="block-editor-grid-visualizer"
|
|
21
|
+
clientId={ clientId }
|
|
22
|
+
__unstablePopoverSlot="block-toolbar"
|
|
23
|
+
>
|
|
24
|
+
<GridVisualizerGrid blockElement={ blockElement } />
|
|
25
|
+
</BlockPopoverCover>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function GridVisualizerGrid( { blockElement } ) {
|
|
30
|
+
const [ gridInfo, setGridInfo ] = useState( () =>
|
|
31
|
+
getGridInfo( blockElement )
|
|
32
|
+
);
|
|
33
|
+
useEffect( () => {
|
|
34
|
+
const observers = [];
|
|
35
|
+
for ( const element of [ blockElement, ...blockElement.children ] ) {
|
|
36
|
+
const observer = new window.ResizeObserver( () => {
|
|
37
|
+
setGridInfo( getGridInfo( blockElement ) );
|
|
38
|
+
} );
|
|
39
|
+
observer.observe( element );
|
|
40
|
+
observers.push( observer );
|
|
41
|
+
}
|
|
42
|
+
return () => {
|
|
43
|
+
for ( const observer of observers ) {
|
|
44
|
+
observer.disconnect();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}, [ blockElement ] );
|
|
48
|
+
return (
|
|
49
|
+
<div
|
|
50
|
+
className="block-editor-grid-visualizer__grid"
|
|
51
|
+
style={ gridInfo.style }
|
|
52
|
+
>
|
|
53
|
+
{ Array.from( { length: gridInfo.numItems }, ( _, i ) => (
|
|
54
|
+
<div key={ i } className="block-editor-grid-visualizer__item" />
|
|
55
|
+
) ) }
|
|
56
|
+
</div>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function getGridInfo( blockElement ) {
|
|
61
|
+
const gridTemplateColumns = getComputedCSS(
|
|
62
|
+
blockElement,
|
|
63
|
+
'grid-template-columns'
|
|
64
|
+
);
|
|
65
|
+
const gridTemplateRows = getComputedCSS(
|
|
66
|
+
blockElement,
|
|
67
|
+
'grid-template-rows'
|
|
68
|
+
);
|
|
69
|
+
const numColumns = gridTemplateColumns.split( ' ' ).length;
|
|
70
|
+
const numRows = gridTemplateRows.split( ' ' ).length;
|
|
71
|
+
const numItems = numColumns * numRows;
|
|
72
|
+
return {
|
|
73
|
+
numItems,
|
|
74
|
+
style: {
|
|
75
|
+
gridTemplateColumns,
|
|
76
|
+
gridTemplateRows,
|
|
77
|
+
gap: getComputedCSS( blockElement, 'gap' ),
|
|
78
|
+
padding: getComputedCSS( blockElement, 'padding' ),
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// TODO: Specificity hacks to get rid of all these darn !importants.
|
|
2
|
+
|
|
3
|
+
.block-editor-grid-visualizer {
|
|
4
|
+
z-index: z-index(".block-editor-grid-visualizer") !important;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.block-editor-grid-visualizer .components-popover__content * {
|
|
8
|
+
pointer-events: none !important;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.block-editor-grid-visualizer__grid {
|
|
12
|
+
display: grid;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.block-editor-grid-visualizer__item {
|
|
16
|
+
border: $border-width dashed $gray-300;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.block-editor-grid-item-resizer {
|
|
20
|
+
z-index: z-index(".block-editor-grid-visualizer") !important;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.block-editor-grid-item-resizer .components-popover__content * {
|
|
24
|
+
pointer-events: none !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.block-editor-grid-item-resizer__box {
|
|
28
|
+
border: $border-width solid var(--wp-admin-theme-color);
|
|
29
|
+
|
|
30
|
+
.components-resizable-box__handle {
|
|
31
|
+
pointer-events: all !important;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -106,13 +106,14 @@ function Iframe( {
|
|
|
106
106
|
tabIndex = 0,
|
|
107
107
|
scale = 1,
|
|
108
108
|
frameSize = 0,
|
|
109
|
-
expand = false,
|
|
110
109
|
readonly,
|
|
111
110
|
forwardedRef: ref,
|
|
111
|
+
title = __( 'Editor canvas' ),
|
|
112
112
|
...props
|
|
113
113
|
} ) {
|
|
114
114
|
const { resolvedAssets, isPreviewMode } = useSelect( ( select ) => {
|
|
115
|
-
const
|
|
115
|
+
const { getSettings } = select( blockEditorStore );
|
|
116
|
+
const settings = getSettings();
|
|
116
117
|
return {
|
|
117
118
|
resolvedAssets: settings.__unstableResolvedAssets,
|
|
118
119
|
isPreviewMode: settings.__unstableIsPreviewMode,
|
|
@@ -123,8 +124,11 @@ function Iframe( {
|
|
|
123
124
|
const [ bodyClasses, setBodyClasses ] = useState( [] );
|
|
124
125
|
const clearerRef = useBlockSelectionClearer();
|
|
125
126
|
const [ before, writingFlowRef, after ] = useWritingFlow();
|
|
126
|
-
const [
|
|
127
|
-
|
|
127
|
+
const [
|
|
128
|
+
contentResizeListener,
|
|
129
|
+
{ height: contentHeight, width: contentWidth },
|
|
130
|
+
] = useResizeObserver();
|
|
131
|
+
|
|
128
132
|
const setRef = useRefEffect( ( node ) => {
|
|
129
133
|
node._load = () => {
|
|
130
134
|
setIframeDocument( node.contentDocument );
|
|
@@ -139,6 +143,8 @@ function Iframe( {
|
|
|
139
143
|
const { documentElement } = contentDocument;
|
|
140
144
|
iFrameDocument = contentDocument;
|
|
141
145
|
|
|
146
|
+
documentElement.classList.add( 'block-editor-iframe__html' );
|
|
147
|
+
|
|
142
148
|
clearerRef( documentElement );
|
|
143
149
|
|
|
144
150
|
// Ideally ALL classes that are added through get_body_class should
|
|
@@ -201,6 +207,20 @@ function Iframe( {
|
|
|
201
207
|
};
|
|
202
208
|
}, [] );
|
|
203
209
|
|
|
210
|
+
const windowResizeRef = useRefEffect( ( node ) => {
|
|
211
|
+
const nodeWindow = node.ownerDocument.defaultView;
|
|
212
|
+
|
|
213
|
+
const onResize = () => {
|
|
214
|
+
setIframeWindowInnerHeight( nodeWindow.innerHeight );
|
|
215
|
+
};
|
|
216
|
+
nodeWindow.addEventListener( 'resize', onResize );
|
|
217
|
+
return () => {
|
|
218
|
+
nodeWindow.removeEventListener( 'resize', onResize );
|
|
219
|
+
};
|
|
220
|
+
}, [] );
|
|
221
|
+
|
|
222
|
+
const [ iframeWindowInnerHeight, setIframeWindowInnerHeight ] = useState();
|
|
223
|
+
|
|
204
224
|
const disabledRef = useDisabled( { isDisabled: ! readonly } );
|
|
205
225
|
const bodyRef = useMergeRefs( [
|
|
206
226
|
useBubbleEvents( iframeDocument ),
|
|
@@ -208,6 +228,7 @@ function Iframe( {
|
|
|
208
228
|
clearerRef,
|
|
209
229
|
writingFlowRef,
|
|
210
230
|
disabledRef,
|
|
231
|
+
windowResizeRef,
|
|
211
232
|
] );
|
|
212
233
|
|
|
213
234
|
// Correct doctype is required to enable rendering in standards
|
|
@@ -218,7 +239,19 @@ function Iframe( {
|
|
|
218
239
|
<head>
|
|
219
240
|
<meta charset="utf-8">
|
|
220
241
|
<script>window.frameElement._load()</script>
|
|
221
|
-
<style>
|
|
242
|
+
<style>
|
|
243
|
+
html{
|
|
244
|
+
height: auto !important;
|
|
245
|
+
min-height: 100%;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
body {
|
|
249
|
+
margin: 0;
|
|
250
|
+
/* Default background color in case zoom out mode background
|
|
251
|
+
colors the html element */
|
|
252
|
+
background: white;
|
|
253
|
+
}
|
|
254
|
+
</style>
|
|
222
255
|
${ styles }
|
|
223
256
|
${ scripts }
|
|
224
257
|
</head>
|
|
@@ -236,33 +269,63 @@ function Iframe( {
|
|
|
236
269
|
|
|
237
270
|
useEffect( () => cleanup, [ cleanup ] );
|
|
238
271
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
272
|
+
useEffect( () => {
|
|
273
|
+
if ( ! iframeDocument ) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const _scale =
|
|
278
|
+
typeof scale === 'function'
|
|
279
|
+
? scale( contentWidth, contentHeight )
|
|
280
|
+
: scale;
|
|
281
|
+
|
|
282
|
+
if ( _scale !== 1 ) {
|
|
283
|
+
// Hack to get proper margins when scaling the iframe document.
|
|
284
|
+
const bottomFrameSize = frameSize - contentHeight * ( 1 - _scale );
|
|
285
|
+
|
|
286
|
+
iframeDocument.body.classList.add( 'is-zoomed-out' );
|
|
287
|
+
|
|
288
|
+
iframeDocument.documentElement.style.transform = `scale( ${ _scale } )`;
|
|
289
|
+
iframeDocument.documentElement.style.marginTop = `${ frameSize }px`;
|
|
290
|
+
// TODO: `marginBottom` doesn't work in Firefox. We need another way to do this.
|
|
291
|
+
iframeDocument.documentElement.style.marginBottom = `${ bottomFrameSize }px`;
|
|
292
|
+
if ( iframeWindowInnerHeight > contentHeight * _scale ) {
|
|
293
|
+
iframeDocument.body.style.minHeight = `${ Math.floor(
|
|
294
|
+
( iframeWindowInnerHeight - 2 * frameSize ) / _scale
|
|
295
|
+
) }px`;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return () => {
|
|
299
|
+
iframeDocument.body.classList.remove( 'is-zoomed-out' );
|
|
300
|
+
iframeDocument.documentElement.style.transform = '';
|
|
301
|
+
iframeDocument.documentElement.style.marginTop = '';
|
|
302
|
+
iframeDocument.documentElement.style.marginBottom = '';
|
|
303
|
+
iframeDocument.body.style.minHeight = '';
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}, [
|
|
307
|
+
scale,
|
|
308
|
+
frameSize,
|
|
309
|
+
iframeDocument,
|
|
310
|
+
contentHeight,
|
|
311
|
+
iframeWindowInnerHeight,
|
|
312
|
+
contentWidth,
|
|
313
|
+
] );
|
|
314
|
+
|
|
315
|
+
// Make sure to not render the before and after focusable div elements in view
|
|
316
|
+
// mode. They're only needed to capture focus in edit mode.
|
|
317
|
+
const shouldRenderFocusCaptureElements = tabIndex >= 0 && ! isPreviewMode;
|
|
243
318
|
|
|
244
319
|
return (
|
|
245
320
|
<>
|
|
246
|
-
{
|
|
321
|
+
{ shouldRenderFocusCaptureElements && before }
|
|
247
322
|
{ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }
|
|
248
323
|
<iframe
|
|
249
324
|
{ ...props }
|
|
250
325
|
style={ {
|
|
251
326
|
border: 0,
|
|
252
327
|
...props.style,
|
|
253
|
-
height:
|
|
254
|
-
marginTop:
|
|
255
|
-
scale !== 1
|
|
256
|
-
? -marginFromScaling + frameSize
|
|
257
|
-
: props.style?.marginTop,
|
|
258
|
-
marginBottom:
|
|
259
|
-
scale !== 1
|
|
260
|
-
? -marginFromScaling + frameSize
|
|
261
|
-
: props.style?.marginBottom,
|
|
262
|
-
transform:
|
|
263
|
-
scale !== 1
|
|
264
|
-
? `scale( ${ scale } )`
|
|
265
|
-
: props.style?.transform,
|
|
328
|
+
height: props.style?.height,
|
|
266
329
|
transition: 'all .3s',
|
|
267
330
|
} }
|
|
268
331
|
ref={ useMergeRefs( [ ref, setRef ] ) }
|
|
@@ -271,7 +334,7 @@ function Iframe( {
|
|
|
271
334
|
// mode. Also preload the styles to avoid a flash of unstyled
|
|
272
335
|
// content.
|
|
273
336
|
src={ src }
|
|
274
|
-
title={
|
|
337
|
+
title={ title }
|
|
275
338
|
onKeyDown={ ( event ) => {
|
|
276
339
|
if ( props.onKeyDown ) {
|
|
277
340
|
props.onKeyDown( event );
|
|
@@ -282,7 +345,7 @@ function Iframe( {
|
|
|
282
345
|
// though by doing so we also trigger another React event,
|
|
283
346
|
// so we need to stop the propagation of this event to avoid
|
|
284
347
|
// duplication.
|
|
285
|
-
|
|
348
|
+
if (
|
|
286
349
|
event.currentTarget.ownerDocument !==
|
|
287
350
|
event.target.ownerDocument
|
|
288
351
|
) {
|
|
@@ -316,7 +379,7 @@ function Iframe( {
|
|
|
316
379
|
iframeDocument.documentElement
|
|
317
380
|
) }
|
|
318
381
|
</iframe>
|
|
319
|
-
{
|
|
382
|
+
{ shouldRenderFocusCaptureElements && after }
|
|
320
383
|
</>
|
|
321
384
|
);
|
|
322
385
|
}
|
|
@@ -49,6 +49,7 @@ export { default as MediaUploadProgress } from './media-upload-progress';
|
|
|
49
49
|
export {
|
|
50
50
|
MEDIA_UPLOAD_STATE_UPLOADING,
|
|
51
51
|
MEDIA_UPLOAD_STATE_SUCCEEDED,
|
|
52
|
+
MEDIA_UPLOAD_STATE_PAUSED,
|
|
52
53
|
MEDIA_UPLOAD_STATE_FAILED,
|
|
53
54
|
MEDIA_UPLOAD_STATE_RESET,
|
|
54
55
|
} from './media-upload-progress/constants';
|
|
@@ -37,11 +37,11 @@ function useShallowMemo( value ) {
|
|
|
37
37
|
* in inner blocks.
|
|
38
38
|
* @param {string[]} prioritizedInserterBlocks Block names and/or block variations to be prioritized in the inserter, in the format {blockName}/{variationName}.
|
|
39
39
|
* @param {?WPDirectInsertBlock} defaultBlock The default block to insert: [ blockName, { blockAttributes } ].
|
|
40
|
-
* @param {?
|
|
40
|
+
* @param {?boolean} directInsert If a default block should be inserted directly by the appender.
|
|
41
41
|
*
|
|
42
42
|
* @param {?WPDirectInsertBlock} __experimentalDefaultBlock A deprecated prop for the default block to insert: [ blockName, { blockAttributes } ]. Use `defaultBlock` instead.
|
|
43
43
|
*
|
|
44
|
-
* @param {?
|
|
44
|
+
* @param {?boolean} __experimentalDirectInsert A deprecated prop for whether a default block should be inserted directly by the appender. Use `directInsert` instead.
|
|
45
45
|
*
|
|
46
46
|
* @param {string} [templateLock] The template lock specified for the inner
|
|
47
47
|
* blocks component. (e.g. "all")
|
|
@@ -138,6 +138,16 @@ export default function useNestedSettingsUpdate(
|
|
|
138
138
|
newSettings.directInsert = directInsert;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
if (
|
|
142
|
+
newSettings.directInsert !== undefined &&
|
|
143
|
+
typeof newSettings.directInsert !== 'boolean'
|
|
144
|
+
) {
|
|
145
|
+
deprecated( 'Using `Function` as a `directInsert` argument', {
|
|
146
|
+
alternative: '`boolean` values',
|
|
147
|
+
since: '6.5',
|
|
148
|
+
} );
|
|
149
|
+
}
|
|
150
|
+
|
|
141
151
|
// Batch updates to block list settings to avoid triggering cascading renders
|
|
142
152
|
// for each container block included in a tree and optimize initial render.
|
|
143
153
|
// To avoid triggering updateBlockListSettings for each container block
|
|
@@ -14,16 +14,11 @@ import { usePatternCategories } from '../block-patterns-tab/use-pattern-categori
|
|
|
14
14
|
|
|
15
15
|
function PatternsExplorer( { initialCategory, rootClientId } ) {
|
|
16
16
|
const [ searchValue, setSearchValue ] = useState( '' );
|
|
17
|
-
const [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );
|
|
18
|
-
|
|
19
17
|
const [ selectedCategory, setSelectedCategory ] = useState(
|
|
20
18
|
initialCategory?.name
|
|
21
19
|
);
|
|
22
20
|
|
|
23
|
-
const patternCategories = usePatternCategories(
|
|
24
|
-
rootClientId,
|
|
25
|
-
patternSourceFilter
|
|
26
|
-
);
|
|
21
|
+
const patternCategories = usePatternCategories( rootClientId );
|
|
27
22
|
|
|
28
23
|
return (
|
|
29
24
|
<div className="block-editor-block-patterns-explorer">
|
|
@@ -33,14 +28,12 @@ function PatternsExplorer( { initialCategory, rootClientId } ) {
|
|
|
33
28
|
onClickCategory={ setSelectedCategory }
|
|
34
29
|
searchValue={ searchValue }
|
|
35
30
|
setSearchValue={ setSearchValue }
|
|
36
|
-
patternSourceFilter={ patternSourceFilter }
|
|
37
|
-
setPatternSourceFilter={ setPatternSourceFilter }
|
|
38
31
|
/>
|
|
39
32
|
<PatternList
|
|
40
33
|
searchValue={ searchValue }
|
|
41
34
|
selectedCategory={ selectedCategory }
|
|
42
35
|
patternCategories={ patternCategories }
|
|
43
|
-
|
|
36
|
+
rootClientId={ rootClientId }
|
|
44
37
|
/>
|
|
45
38
|
</div>
|
|
46
39
|
);
|
|
@@ -47,10 +47,16 @@ function PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {
|
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
function PatternList( {
|
|
50
|
+
function PatternList( {
|
|
51
|
+
searchValue,
|
|
52
|
+
selectedCategory,
|
|
53
|
+
patternCategories,
|
|
54
|
+
rootClientId,
|
|
55
|
+
} ) {
|
|
51
56
|
const container = useRef();
|
|
52
57
|
const debouncedSpeak = useDebounce( speak, 500 );
|
|
53
58
|
const [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {
|
|
59
|
+
rootClientId,
|
|
54
60
|
shouldFocusBlock: true,
|
|
55
61
|
} );
|
|
56
62
|
const [ patterns, , onClickPattern ] = usePatternsState(
|
|
@@ -211,7 +211,7 @@ export function MediaPreview( { media, onClick, category } ) {
|
|
|
211
211
|
const onMouseLeave = useCallback( () => setIsHovered( false ), [] );
|
|
212
212
|
return (
|
|
213
213
|
<>
|
|
214
|
-
<InserterDraggableBlocks isEnabled
|
|
214
|
+
<InserterDraggableBlocks isEnabled blocks={ [ block ] }>
|
|
215
215
|
{ ( { draggable, onDragStart, onDragEnd } ) => (
|
|
216
216
|
<div
|
|
217
217
|
className={ classnames(
|