@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
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { useState, useRef, useLayoutEffect, useEffect, useReducer } from '@wordpress/element';
|
|
6
|
+
import isShallowEqual from '@wordpress/is-shallow-equal';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import BlockPopoverCover from '../components/block-popover/cover';
|
|
12
|
+
import { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';
|
|
13
|
+
function SpacingVisualizer({
|
|
14
|
+
clientId,
|
|
15
|
+
value,
|
|
16
|
+
computeStyle,
|
|
17
|
+
forceShow
|
|
18
|
+
}) {
|
|
19
|
+
const blockElement = useBlockElement(clientId);
|
|
20
|
+
const [style, updateStyle] = useReducer(() => computeStyle(blockElement));
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
if (!blockElement) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// It's not sufficient to read the computed spacing value when value.spacing changes as
|
|
26
|
+
// useEffect may run before the browser recomputes CSS. We therefore combine
|
|
27
|
+
// useLayoutEffect and two rAF calls to ensure that we read the spacing after the current
|
|
28
|
+
// paint but before the next paint.
|
|
29
|
+
// See https://github.com/WordPress/gutenberg/pull/59227.
|
|
30
|
+
window.requestAnimationFrame(() => window.requestAnimationFrame(updateStyle));
|
|
31
|
+
}, [blockElement, value]);
|
|
32
|
+
const previousValue = useRef(value);
|
|
33
|
+
const [isActive, setIsActive] = useState(false);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (isShallowEqual(value, previousValue.current) || forceShow) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
setIsActive(true);
|
|
39
|
+
previousValue.current = value;
|
|
40
|
+
const timeout = setTimeout(() => {
|
|
41
|
+
setIsActive(false);
|
|
42
|
+
}, 400);
|
|
43
|
+
return () => {
|
|
44
|
+
setIsActive(false);
|
|
45
|
+
clearTimeout(timeout);
|
|
46
|
+
};
|
|
47
|
+
}, [value, forceShow]);
|
|
48
|
+
if (!isActive && !forceShow) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return createElement(BlockPopoverCover, {
|
|
52
|
+
clientId: clientId,
|
|
53
|
+
__unstablePopoverSlot: "block-toolbar"
|
|
54
|
+
}, createElement("div", {
|
|
55
|
+
className: "block-editor__spacing-visualizer",
|
|
56
|
+
style: style
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
function getComputedCSS(element, property) {
|
|
60
|
+
return element.ownerDocument.defaultView.getComputedStyle(element).getPropertyValue(property);
|
|
61
|
+
}
|
|
62
|
+
export function MarginVisualizer({
|
|
63
|
+
clientId,
|
|
64
|
+
value,
|
|
65
|
+
forceShow
|
|
66
|
+
}) {
|
|
67
|
+
return createElement(SpacingVisualizer, {
|
|
68
|
+
clientId: clientId,
|
|
69
|
+
value: value?.spacing?.margin,
|
|
70
|
+
computeStyle: blockElement => {
|
|
71
|
+
const top = getComputedCSS(blockElement, 'margin-top');
|
|
72
|
+
const right = getComputedCSS(blockElement, 'margin-right');
|
|
73
|
+
const bottom = getComputedCSS(blockElement, 'margin-bottom');
|
|
74
|
+
const left = getComputedCSS(blockElement, 'margin-left');
|
|
75
|
+
return {
|
|
76
|
+
borderTopWidth: top,
|
|
77
|
+
borderRightWidth: right,
|
|
78
|
+
borderBottomWidth: bottom,
|
|
79
|
+
borderLeftWidth: left,
|
|
80
|
+
top: top ? `-${top}` : 0,
|
|
81
|
+
right: right ? `-${right}` : 0,
|
|
82
|
+
bottom: bottom ? `-${bottom}` : 0,
|
|
83
|
+
left: left ? `-${left}` : 0
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
forceShow: forceShow
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function PaddingVisualizer({
|
|
90
|
+
clientId,
|
|
91
|
+
value,
|
|
92
|
+
forceShow
|
|
93
|
+
}) {
|
|
94
|
+
return createElement(SpacingVisualizer, {
|
|
95
|
+
clientId: clientId,
|
|
96
|
+
value: value?.spacing?.padding,
|
|
97
|
+
computeStyle: blockElement => ({
|
|
98
|
+
borderTopWidth: getComputedCSS(blockElement, 'padding-top'),
|
|
99
|
+
borderRightWidth: getComputedCSS(blockElement, 'padding-right'),
|
|
100
|
+
borderBottomWidth: getComputedCSS(blockElement, 'padding-bottom'),
|
|
101
|
+
borderLeftWidth: getComputedCSS(blockElement, 'padding-left')
|
|
102
|
+
}),
|
|
103
|
+
forceShow: forceShow
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=spacing-visualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useRef","useLayoutEffect","useEffect","useReducer","isShallowEqual","BlockPopoverCover","__unstableUseBlockElement","useBlockElement","SpacingVisualizer","clientId","value","computeStyle","forceShow","blockElement","style","updateStyle","window","requestAnimationFrame","previousValue","isActive","setIsActive","current","timeout","setTimeout","clearTimeout","createElement","__unstablePopoverSlot","className","getComputedCSS","element","property","ownerDocument","defaultView","getComputedStyle","getPropertyValue","MarginVisualizer","spacing","margin","top","right","bottom","left","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","PaddingVisualizer","padding"],"sources":["@wordpress/block-editor/src/hooks/spacing-visualizer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n\tuseReducer,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport BlockPopoverCover from '../components/block-popover/cover';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction SpacingVisualizer( { clientId, value, computeStyle, forceShow } ) {\n\tconst blockElement = useBlockElement( clientId );\n\tconst [ style, updateStyle ] = useReducer( () =>\n\t\tcomputeStyle( blockElement )\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! blockElement ) {\n\t\t\treturn;\n\t\t}\n\t\t// It's not sufficient to read the computed spacing value when value.spacing changes as\n\t\t// useEffect may run before the browser recomputes CSS. We therefore combine\n\t\t// useLayoutEffect and two rAF calls to ensure that we read the spacing after the current\n\t\t// paint but before the next paint.\n\t\t// See https://github.com/WordPress/gutenberg/pull/59227.\n\t\twindow.requestAnimationFrame( () =>\n\t\t\twindow.requestAnimationFrame( updateStyle )\n\t\t);\n\t}, [ blockElement, value ] );\n\n\tconst previousValue = useRef( value );\n\tconst [ isActive, setIsActive ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( isShallowEqual( value, previousValue.current ) || forceShow ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsActive( true );\n\t\tpreviousValue.current = value;\n\n\t\tconst timeout = setTimeout( () => {\n\t\t\tsetIsActive( false );\n\t\t}, 400 );\n\n\t\treturn () => {\n\t\t\tsetIsActive( false );\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t}, [ value, forceShow ] );\n\n\tif ( ! isActive && ! forceShow ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopoverCover\n\t\t\tclientId={ clientId }\n\t\t\t__unstablePopoverSlot=\"block-toolbar\"\n\t\t>\n\t\t\t<div className=\"block-editor__spacing-visualizer\" style={ style } />\n\t\t</BlockPopoverCover>\n\t);\n}\n\nfunction getComputedCSS( element, property ) {\n\treturn element.ownerDocument.defaultView\n\t\t.getComputedStyle( element )\n\t\t.getPropertyValue( property );\n}\n\nexport function MarginVisualizer( { clientId, value, forceShow } ) {\n\treturn (\n\t\t<SpacingVisualizer\n\t\t\tclientId={ clientId }\n\t\t\tvalue={ value?.spacing?.margin }\n\t\t\tcomputeStyle={ ( blockElement ) => {\n\t\t\t\tconst top = getComputedCSS( blockElement, 'margin-top' );\n\t\t\t\tconst right = getComputedCSS( blockElement, 'margin-right' );\n\t\t\t\tconst bottom = getComputedCSS( blockElement, 'margin-bottom' );\n\t\t\t\tconst left = getComputedCSS( blockElement, 'margin-left' );\n\t\t\t\treturn {\n\t\t\t\t\tborderTopWidth: top,\n\t\t\t\t\tborderRightWidth: right,\n\t\t\t\t\tborderBottomWidth: bottom,\n\t\t\t\t\tborderLeftWidth: left,\n\t\t\t\t\ttop: top ? `-${ top }` : 0,\n\t\t\t\t\tright: right ? `-${ right }` : 0,\n\t\t\t\t\tbottom: bottom ? `-${ bottom }` : 0,\n\t\t\t\t\tleft: left ? `-${ left }` : 0,\n\t\t\t\t};\n\t\t\t} }\n\t\t\tforceShow={ forceShow }\n\t\t/>\n\t);\n}\n\nexport function PaddingVisualizer( { clientId, value, forceShow } ) {\n\treturn (\n\t\t<SpacingVisualizer\n\t\t\tclientId={ clientId }\n\t\t\tvalue={ value?.spacing?.padding }\n\t\t\tcomputeStyle={ ( blockElement ) => ( {\n\t\t\t\tborderTopWidth: getComputedCSS( blockElement, 'padding-top' ),\n\t\t\t\tborderRightWidth: getComputedCSS(\n\t\t\t\t\tblockElement,\n\t\t\t\t\t'padding-right'\n\t\t\t\t),\n\t\t\t\tborderBottomWidth: getComputedCSS(\n\t\t\t\t\tblockElement,\n\t\t\t\t\t'padding-bottom'\n\t\t\t\t),\n\t\t\t\tborderLeftWidth: getComputedCSS( blockElement, 'padding-left' ),\n\t\t\t} ) }\n\t\t\tforceShow={ forceShow }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { createElement } from "react";
|
|
1
|
+
import { createElement, Fragment } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
|
-
import { getBlockType } from '@wordpress/blocks';
|
|
5
|
+
import { getBlockType, store as blocksStore } from '@wordpress/blocks';
|
|
6
6
|
import { createHigherOrderComponent } from '@wordpress/compose';
|
|
7
7
|
import { useSelect } from '@wordpress/data';
|
|
8
|
+
import { useLayoutEffect, useCallback, useState } from '@wordpress/element';
|
|
8
9
|
import { addFilter } from '@wordpress/hooks';
|
|
10
|
+
import { RichTextData } from '@wordpress/rich-text';
|
|
11
|
+
|
|
9
12
|
/**
|
|
10
13
|
* Internal dependencies
|
|
11
14
|
*/
|
|
12
|
-
import { store as blockEditorStore } from '../store';
|
|
13
|
-
import { useBlockEditContext } from '../components/block-edit/context';
|
|
14
15
|
import { unlock } from '../lock-unlock';
|
|
15
16
|
|
|
16
17
|
/** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */
|
|
@@ -23,70 +24,192 @@ import { unlock } from '../lock-unlock';
|
|
|
23
24
|
* @return {WPHigherOrderComponent} Higher-order component.
|
|
24
25
|
*/
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
const BLOCK_BINDINGS_ALLOWED_BLOCKS = {
|
|
27
28
|
'core/paragraph': ['content'],
|
|
28
29
|
'core/heading': ['content'],
|
|
29
30
|
'core/image': ['url', 'title', 'alt'],
|
|
30
31
|
'core/button': ['url', 'text', 'linkTarget']
|
|
31
32
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Based on the given block name,
|
|
36
|
+
* check if it is possible to bind the block.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} blockName - The block name.
|
|
39
|
+
* @return {boolean} Whether it is possible to bind the block to sources.
|
|
40
|
+
*/
|
|
41
|
+
export function canBindBlock(blockName) {
|
|
42
|
+
return blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Based on the given block name and attribute name,
|
|
47
|
+
* check if it is possible to bind the block attribute.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} blockName - The block name.
|
|
50
|
+
* @param {string} attributeName - The attribute name.
|
|
51
|
+
* @return {boolean} Whether it is possible to bind the block attribute.
|
|
52
|
+
*/
|
|
53
|
+
export function canBindAttribute(blockName, attributeName) {
|
|
54
|
+
return canBindBlock(blockName) && BLOCK_BINDINGS_ALLOWED_BLOCKS[blockName].includes(attributeName);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* This component is responsible for detecting and
|
|
59
|
+
* propagating data changes from the source to the block.
|
|
60
|
+
*
|
|
61
|
+
* @param {Object} props - The component props.
|
|
62
|
+
* @param {string} props.attrName - The attribute name.
|
|
63
|
+
* @param {Object} props.blockProps - The block props with bound attribute.
|
|
64
|
+
* @param {Object} props.source - Source handler.
|
|
65
|
+
* @param {Object} props.args - The arguments to pass to the source.
|
|
66
|
+
* @param {Function} props.onPropValueChange - The function to call when the attribute value changes.
|
|
67
|
+
* @return {null} Data-handling component. Render nothing.
|
|
68
|
+
*/
|
|
69
|
+
const BindingConnector = ({
|
|
70
|
+
args,
|
|
71
|
+
attrName,
|
|
72
|
+
blockProps,
|
|
73
|
+
source,
|
|
74
|
+
onPropValueChange
|
|
75
|
+
}) => {
|
|
37
76
|
const {
|
|
38
|
-
|
|
39
|
-
|
|
77
|
+
placeholder,
|
|
78
|
+
value: propValue
|
|
79
|
+
} = source.useSource(blockProps, args);
|
|
40
80
|
const {
|
|
41
|
-
|
|
42
|
-
} =
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (htmlAttribute === 'src' || htmlAttribute === 'href') {
|
|
58
|
-
updatedAttributes[attributeName] = null;
|
|
59
|
-
} else {
|
|
60
|
-
updatedAttributes[attributeName] = placeholder;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (metaValue) {
|
|
64
|
-
updatedAttributes[attributeName] = metaValue;
|
|
65
|
-
}
|
|
81
|
+
name: blockName
|
|
82
|
+
} = blockProps;
|
|
83
|
+
const attrValue = blockProps.attributes[attrName];
|
|
84
|
+
const updateBoundAttibute = useCallback((newAttrValue, prevAttrValue) => {
|
|
85
|
+
/*
|
|
86
|
+
* If the attribute is a RichTextData instance,
|
|
87
|
+
* (core/paragraph, core/heading, core/button, etc.)
|
|
88
|
+
* compare its HTML representation with the new value.
|
|
89
|
+
*
|
|
90
|
+
* To do: it looks like a workaround.
|
|
91
|
+
* Consider improving the attribute and metadata fields types.
|
|
92
|
+
*/
|
|
93
|
+
if (prevAttrValue instanceof RichTextData) {
|
|
94
|
+
// Bail early if the Rich Text value is the same.
|
|
95
|
+
if (prevAttrValue.toHTMLString() === newAttrValue) {
|
|
96
|
+
return;
|
|
66
97
|
}
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
* To preserve the value type,
|
|
101
|
+
* convert the new value to a RichTextData instance.
|
|
102
|
+
*/
|
|
103
|
+
newAttrValue = RichTextData.fromHTMLString(newAttrValue);
|
|
104
|
+
}
|
|
105
|
+
if (prevAttrValue === newAttrValue) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
onPropValueChange({
|
|
109
|
+
[attrName]: newAttrValue
|
|
67
110
|
});
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
111
|
+
}, [attrName, onPropValueChange]);
|
|
112
|
+
useLayoutEffect(() => {
|
|
113
|
+
if (typeof propValue !== 'undefined') {
|
|
114
|
+
updateBoundAttibute(propValue, attrValue);
|
|
115
|
+
} else if (placeholder) {
|
|
116
|
+
/*
|
|
117
|
+
* Placeholder fallback.
|
|
118
|
+
* If the attribute is `src` or `href`,
|
|
119
|
+
* a placeholder can't be used because it is not a valid url.
|
|
120
|
+
* Adding this workaround until
|
|
121
|
+
* attributes and metadata fields types are improved and include `url`.
|
|
122
|
+
*/
|
|
123
|
+
const htmlAttribute = getBlockType(blockName).attributes[attrName].attribute;
|
|
124
|
+
if (htmlAttribute === 'src' || htmlAttribute === 'href') {
|
|
125
|
+
updateBoundAttibute(null);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
updateBoundAttibute(placeholder);
|
|
129
|
+
}
|
|
130
|
+
}, [updateBoundAttibute, propValue, attrValue, placeholder, blockName, attrName]);
|
|
131
|
+
return null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* BlockBindingBridge acts like a component wrapper
|
|
136
|
+
* that connects the bound attributes of a block
|
|
137
|
+
* to the source handlers.
|
|
138
|
+
* For this, it creates a BindingConnector for each bound attribute.
|
|
139
|
+
*
|
|
140
|
+
* @param {Object} props - The component props.
|
|
141
|
+
* @param {Object} props.blockProps - The BlockEdit props object.
|
|
142
|
+
* @param {Object} props.bindings - The block bindings settings.
|
|
143
|
+
* @param {Function} props.onPropValueChange - The function to call when the attribute value changes.
|
|
144
|
+
* @return {null} Data-handling component. Render nothing.
|
|
145
|
+
*/
|
|
146
|
+
function BlockBindingBridge({
|
|
147
|
+
blockProps,
|
|
148
|
+
bindings,
|
|
149
|
+
onPropValueChange
|
|
150
|
+
}) {
|
|
151
|
+
const blockBindingsSources = unlock(useSelect(blocksStore)).getAllBlockBindingsSources();
|
|
152
|
+
return createElement(Fragment, null, Object.entries(bindings).map(([attrName, boundAttribute]) => {
|
|
153
|
+
// Bail early if the block doesn't have a valid source handler.
|
|
154
|
+
const source = blockBindingsSources[boundAttribute.source];
|
|
155
|
+
if (!source?.useSource) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
return createElement(BindingConnector, {
|
|
159
|
+
key: attrName,
|
|
160
|
+
attrName: attrName,
|
|
161
|
+
source: source,
|
|
162
|
+
blockProps: blockProps,
|
|
163
|
+
args: boundAttribute.args,
|
|
164
|
+
onPropValueChange: onPropValueChange
|
|
165
|
+
});
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
const withBlockBindingSupport = createHigherOrderComponent(BlockEdit => props => {
|
|
169
|
+
/*
|
|
170
|
+
* Collect and update the bound attributes
|
|
171
|
+
* in a separate state.
|
|
172
|
+
*/
|
|
173
|
+
const [boundAttributes, setBoundAttributes] = useState({});
|
|
174
|
+
const updateBoundAttributes = useCallback(newAttributes => setBoundAttributes(prev => ({
|
|
175
|
+
...prev,
|
|
176
|
+
...newAttributes
|
|
177
|
+
})), []);
|
|
178
|
+
|
|
179
|
+
/*
|
|
180
|
+
* Create binding object filtering
|
|
181
|
+
* only the attributes that can be bound.
|
|
182
|
+
*/
|
|
183
|
+
const bindings = Object.fromEntries(Object.entries(props.attributes.metadata?.bindings || {}).filter(([attrName]) => canBindAttribute(props.name, attrName)));
|
|
184
|
+
return createElement(Fragment, null, Object.keys(bindings).length > 0 && createElement(BlockBindingBridge, {
|
|
185
|
+
blockProps: props,
|
|
186
|
+
bindings: bindings,
|
|
187
|
+
onPropValueChange: updateBoundAttributes
|
|
188
|
+
}), createElement(BlockEdit, {
|
|
71
189
|
...props,
|
|
72
|
-
attributes:
|
|
73
|
-
|
|
74
|
-
|
|
190
|
+
attributes: {
|
|
191
|
+
...props.attributes,
|
|
192
|
+
...boundAttributes
|
|
193
|
+
}
|
|
194
|
+
}));
|
|
195
|
+
}, 'withBlockBindingSupport');
|
|
75
196
|
|
|
76
197
|
/**
|
|
77
198
|
* Filters a registered block's settings to enhance a block's `edit` component
|
|
78
199
|
* to upgrade bound attributes.
|
|
79
200
|
*
|
|
80
|
-
* @param {WPBlockSettings} settings Registered block settings.
|
|
81
|
-
*
|
|
201
|
+
* @param {WPBlockSettings} settings - Registered block settings.
|
|
202
|
+
* @param {string} name - Block name.
|
|
82
203
|
* @return {WPBlockSettings} Filtered block settings.
|
|
83
204
|
*/
|
|
84
|
-
function shimAttributeSource(settings) {
|
|
85
|
-
if (!(
|
|
205
|
+
function shimAttributeSource(settings, name) {
|
|
206
|
+
if (!canBindBlock(name)) {
|
|
86
207
|
return settings;
|
|
87
208
|
}
|
|
88
|
-
|
|
89
|
-
|
|
209
|
+
return {
|
|
210
|
+
...settings,
|
|
211
|
+
edit: withBlockBindingSupport(settings.edit)
|
|
212
|
+
};
|
|
90
213
|
}
|
|
91
214
|
addFilter('blocks.registerBlockType', 'core/editor/custom-sources-backwards-compatibility/shim-attribute-source', shimAttributeSource);
|
|
92
215
|
//# sourceMappingURL=use-bindings-attributes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getBlockType","createHigherOrderComponent","useSelect","addFilter","store","blockEditorStore","useBlockEditContext","unlock","BLOCK_BINDINGS_ALLOWED_BLOCKS","createEditFunctionWithBindingsAttribute","BlockEdit","props","clientId","name","blockName","getBlockBindingsSource","getBlockAttributes","updatedAttributes","metadata","bindings","Object","entries","forEach","attributeName","settings","source","useSource","placeholder","useValue","metaValue","args","htmlAttribute","attributes","attribute","createElement","key","shimAttributeSource","edit"],"sources":["@wordpress/block-editor/src/hooks/use-bindings-attributes.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { addFilter } from '@wordpress/hooks';\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { useBlockEditContext } from '../components/block-edit/context';\nimport { unlock } from '../lock-unlock';\n\n/** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */\n/** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */\n\n/**\n * Given a binding of block attributes, returns a higher order component that\n * overrides its `attributes` and `setAttributes` props to sync any changes needed.\n *\n * @return {WPHigherOrderComponent} Higher-order component.\n */\n\nexport const BLOCK_BINDINGS_ALLOWED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/image': [ 'url', 'title', 'alt' ],\n\t'core/button': [ 'url', 'text', 'linkTarget' ],\n};\n\nconst createEditFunctionWithBindingsAttribute = () =>\n\tcreateHigherOrderComponent(\n\t\t( BlockEdit ) => ( props ) => {\n\t\t\tconst { clientId, name: blockName } = useBlockEditContext();\n\t\t\tconst { getBlockBindingsSource } = unlock(\n\t\t\t\tuseSelect( blockEditorStore )\n\t\t\t);\n\t\t\tconst { getBlockAttributes } = useSelect( blockEditorStore );\n\n\t\t\tconst updatedAttributes = getBlockAttributes( clientId );\n\t\t\tif ( updatedAttributes?.metadata?.bindings ) {\n\t\t\t\tObject.entries( updatedAttributes.metadata.bindings ).forEach(\n\t\t\t\t\t( [ attributeName, settings ] ) => {\n\t\t\t\t\t\tconst source = getBlockBindingsSource(\n\t\t\t\t\t\t\tsettings.source\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( source && source.useSource ) {\n\t\t\t\t\t\t\t// Second argument (`updateMetaValue`) will be used to update the value in the future.\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\t\t\tuseValue: [ metaValue = null ] = [],\n\t\t\t\t\t\t\t} = source.useSource( props, settings.args );\n\n\t\t\t\t\t\t\tif ( placeholder && ! metaValue ) {\n\t\t\t\t\t\t\t\t// If the attribute is `src` or `href`, a placeholder can't be used because it is not a valid url.\n\t\t\t\t\t\t\t\t// Adding this workaround until attributes and metadata fields types are improved and include `url`.\n\t\t\t\t\t\t\t\tconst htmlAttribute =\n\t\t\t\t\t\t\t\t\tgetBlockType( blockName ).attributes[\n\t\t\t\t\t\t\t\t\t\tattributeName\n\t\t\t\t\t\t\t\t\t].attribute;\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\thtmlAttribute === 'src' ||\n\t\t\t\t\t\t\t\t\thtmlAttribute === 'href'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tupdatedAttributes[ attributeName ] = null;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tupdatedAttributes[ attributeName ] =\n\t\t\t\t\t\t\t\t\t\tplaceholder;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( metaValue ) {\n\t\t\t\t\t\t\t\tupdatedAttributes[ attributeName ] = metaValue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<BlockEdit\n\t\t\t\t\tkey=\"edit\"\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tattributes={ updatedAttributes }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t\t'useBoundAttributes'\n\t);\n\n/**\n * Filters a registered block's settings to enhance a block's `edit` component\n * to upgrade bound attributes.\n *\n * @param {WPBlockSettings} settings Registered block settings.\n *\n * @return {WPBlockSettings} Filtered block settings.\n */\nfunction shimAttributeSource( settings ) {\n\tif ( ! ( settings.name in BLOCK_BINDINGS_ALLOWED_BLOCKS ) ) {\n\t\treturn settings;\n\t}\n\tsettings.edit = createEditFunctionWithBindingsAttribute()( settings.edit );\n\n\treturn settings;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/custom-sources-backwards-compatibility/shim-attribute-source',\n\tshimAttributeSource\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["getBlockType","store","blocksStore","createHigherOrderComponent","useSelect","useLayoutEffect","useCallback","useState","addFilter","RichTextData","unlock","BLOCK_BINDINGS_ALLOWED_BLOCKS","canBindBlock","blockName","canBindAttribute","attributeName","includes","BindingConnector","args","attrName","blockProps","source","onPropValueChange","placeholder","value","propValue","useSource","name","attrValue","attributes","updateBoundAttibute","newAttrValue","prevAttrValue","toHTMLString","fromHTMLString","htmlAttribute","attribute","BlockBindingBridge","bindings","blockBindingsSources","getAllBlockBindingsSources","createElement","Fragment","Object","entries","map","boundAttribute","key","withBlockBindingSupport","BlockEdit","props","boundAttributes","setBoundAttributes","updateBoundAttributes","newAttributes","prev","fromEntries","metadata","filter","keys","length","shimAttributeSource","settings","edit"],"sources":["@wordpress/block-editor/src/hooks/use-bindings-attributes.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useCallback, useState } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\n/** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */\n/** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */\n\n/**\n * Given a binding of block attributes, returns a higher order component that\n * overrides its `attributes` and `setAttributes` props to sync any changes needed.\n *\n * @return {WPHigherOrderComponent} Higher-order component.\n */\n\nconst BLOCK_BINDINGS_ALLOWED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/image': [ 'url', 'title', 'alt' ],\n\t'core/button': [ 'url', 'text', 'linkTarget' ],\n};\n\n/**\n * Based on the given block name,\n * check if it is possible to bind the block.\n *\n * @param {string} blockName - The block name.\n * @return {boolean} Whether it is possible to bind the block to sources.\n */\nexport function canBindBlock( blockName ) {\n\treturn blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;\n}\n\n/**\n * Based on the given block name and attribute name,\n * check if it is possible to bind the block attribute.\n *\n * @param {string} blockName - The block name.\n * @param {string} attributeName - The attribute name.\n * @return {boolean} Whether it is possible to bind the block attribute.\n */\nexport function canBindAttribute( blockName, attributeName ) {\n\treturn (\n\t\tcanBindBlock( blockName ) &&\n\t\tBLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ].includes( attributeName )\n\t);\n}\n\n/**\n * This component is responsible for detecting and\n * propagating data changes from the source to the block.\n *\n * @param {Object} props - The component props.\n * @param {string} props.attrName - The attribute name.\n * @param {Object} props.blockProps - The block props with bound attribute.\n * @param {Object} props.source - Source handler.\n * @param {Object} props.args - The arguments to pass to the source.\n * @param {Function} props.onPropValueChange - The function to call when the attribute value changes.\n * @return {null} Data-handling component. Render nothing.\n */\nconst BindingConnector = ( {\n\targs,\n\tattrName,\n\tblockProps,\n\tsource,\n\tonPropValueChange,\n} ) => {\n\tconst { placeholder, value: propValue } = source.useSource(\n\t\tblockProps,\n\t\targs\n\t);\n\n\tconst { name: blockName } = blockProps;\n\tconst attrValue = blockProps.attributes[ attrName ];\n\n\tconst updateBoundAttibute = useCallback(\n\t\t( newAttrValue, prevAttrValue ) => {\n\t\t\t/*\n\t\t\t * If the attribute is a RichTextData instance,\n\t\t\t * (core/paragraph, core/heading, core/button, etc.)\n\t\t\t * compare its HTML representation with the new value.\n\t\t\t *\n\t\t\t * To do: it looks like a workaround.\n\t\t\t * Consider improving the attribute and metadata fields types.\n\t\t\t */\n\t\t\tif ( prevAttrValue instanceof RichTextData ) {\n\t\t\t\t// Bail early if the Rich Text value is the same.\n\t\t\t\tif ( prevAttrValue.toHTMLString() === newAttrValue ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * To preserve the value type,\n\t\t\t\t * convert the new value to a RichTextData instance.\n\t\t\t\t */\n\t\t\t\tnewAttrValue = RichTextData.fromHTMLString( newAttrValue );\n\t\t\t}\n\n\t\t\tif ( prevAttrValue === newAttrValue ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonPropValueChange( { [ attrName ]: newAttrValue } );\n\t\t},\n\t\t[ attrName, onPropValueChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( typeof propValue !== 'undefined' ) {\n\t\t\tupdateBoundAttibute( propValue, attrValue );\n\t\t} else if ( placeholder ) {\n\t\t\t/*\n\t\t\t * Placeholder fallback.\n\t\t\t * If the attribute is `src` or `href`,\n\t\t\t * a placeholder can't be used because it is not a valid url.\n\t\t\t * Adding this workaround until\n\t\t\t * attributes and metadata fields types are improved and include `url`.\n\t\t\t */\n\t\t\tconst htmlAttribute =\n\t\t\t\tgetBlockType( blockName ).attributes[ attrName ].attribute;\n\n\t\t\tif ( htmlAttribute === 'src' || htmlAttribute === 'href' ) {\n\t\t\t\tupdateBoundAttibute( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdateBoundAttibute( placeholder );\n\t\t}\n\t}, [\n\t\tupdateBoundAttibute,\n\t\tpropValue,\n\t\tattrValue,\n\t\tplaceholder,\n\t\tblockName,\n\t\tattrName,\n\t] );\n\n\treturn null;\n};\n\n/**\n * BlockBindingBridge acts like a component wrapper\n * that connects the bound attributes of a block\n * to the source handlers.\n * For this, it creates a BindingConnector for each bound attribute.\n *\n * @param {Object} props - The component props.\n * @param {Object} props.blockProps - The BlockEdit props object.\n * @param {Object} props.bindings - The block bindings settings.\n * @param {Function} props.onPropValueChange - The function to call when the attribute value changes.\n * @return {null} Data-handling component. Render nothing.\n */\nfunction BlockBindingBridge( { blockProps, bindings, onPropValueChange } ) {\n\tconst blockBindingsSources = unlock(\n\t\tuseSelect( blocksStore )\n\t).getAllBlockBindingsSources();\n\n\treturn (\n\t\t<>\n\t\t\t{ Object.entries( bindings ).map(\n\t\t\t\t( [ attrName, boundAttribute ] ) => {\n\t\t\t\t\t// Bail early if the block doesn't have a valid source handler.\n\t\t\t\t\tconst source =\n\t\t\t\t\t\tblockBindingsSources[ boundAttribute.source ];\n\t\t\t\t\tif ( ! source?.useSource ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<BindingConnector\n\t\t\t\t\t\t\tkey={ attrName }\n\t\t\t\t\t\t\tattrName={ attrName }\n\t\t\t\t\t\t\tsource={ source }\n\t\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\t\targs={ boundAttribute.args }\n\t\t\t\t\t\t\tonPropValueChange={ onPropValueChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst withBlockBindingSupport = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t/*\n\t\t * Collect and update the bound attributes\n\t\t * in a separate state.\n\t\t */\n\t\tconst [ boundAttributes, setBoundAttributes ] = useState( {} );\n\t\tconst updateBoundAttributes = useCallback(\n\t\t\t( newAttributes ) =>\n\t\t\t\tsetBoundAttributes( ( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t...newAttributes,\n\t\t\t\t} ) ),\n\t\t\t[]\n\t\t);\n\n\t\t/*\n\t\t * Create binding object filtering\n\t\t * only the attributes that can be bound.\n\t\t */\n\t\tconst bindings = Object.fromEntries(\n\t\t\tObject.entries( props.attributes.metadata?.bindings || {} ).filter(\n\t\t\t\t( [ attrName ] ) => canBindAttribute( props.name, attrName )\n\t\t\t)\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ Object.keys( bindings ).length > 0 && (\n\t\t\t\t\t<BlockBindingBridge\n\t\t\t\t\t\tblockProps={ props }\n\t\t\t\t\t\tbindings={ bindings }\n\t\t\t\t\t\tonPropValueChange={ updateBoundAttributes }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t<BlockEdit\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tattributes={ { ...props.attributes, ...boundAttributes } }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withBlockBindingSupport'\n);\n\n/**\n * Filters a registered block's settings to enhance a block's `edit` component\n * to upgrade bound attributes.\n *\n * @param {WPBlockSettings} settings - Registered block settings.\n * @param {string} name - Block name.\n * @return {WPBlockSettings} Filtered block settings.\n */\nfunction shimAttributeSource( settings, name ) {\n\tif ( ! canBindBlock( name ) ) {\n\t\treturn settings;\n\t}\n\n\treturn {\n\t\t...settings,\n\t\tedit: withBlockBindingSupport( settings.edit ),\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/custom-sources-backwards-compatibility/shim-attribute-source',\n\tshimAttributeSource\n);\n"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
|
13
13
|
*/
|
|
14
14
|
import { getInlineStyles } from './style';
|
|
15
15
|
import { getFontSizeClass } from '../components/font-sizes';
|
|
16
|
-
import { getTypographyFontSizeValue
|
|
16
|
+
import { getTypographyFontSizeValue } from '../components/global-styles/typography-utils';
|
|
17
17
|
import { unlock } from '../lock-unlock';
|
|
18
18
|
|
|
19
19
|
/*
|
|
@@ -35,12 +35,11 @@ export function getTypographyClassesAndStyles(attributes, settings) {
|
|
|
35
35
|
kebabCase
|
|
36
36
|
} = unlock(componentsPrivateApis);
|
|
37
37
|
let typographyStyles = attributes?.style?.typography || {};
|
|
38
|
-
const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings);
|
|
39
38
|
typographyStyles = {
|
|
40
39
|
...typographyStyles,
|
|
41
40
|
fontSize: getTypographyFontSizeValue({
|
|
42
41
|
size: attributes?.style?.typography?.fontSize
|
|
43
|
-
},
|
|
42
|
+
}, settings)
|
|
44
43
|
};
|
|
45
44
|
const style = getInlineStyles({
|
|
46
45
|
typography: typographyStyles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","privateApis","componentsPrivateApis","getInlineStyles","getFontSizeClass","getTypographyFontSizeValue","
|
|
1
|
+
{"version":3,"names":["classnames","privateApis","componentsPrivateApis","getInlineStyles","getFontSizeClass","getTypographyFontSizeValue","unlock","getTypographyClassesAndStyles","attributes","settings","kebabCase","typographyStyles","style","typography","fontSize","size","fontFamilyClassName","fontFamily","className"],"sources":["@wordpress/block-editor/src/hooks/use-typography-props.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getInlineStyles } from './style';\nimport { getFontSizeClass } from '../components/font-sizes';\nimport { getTypographyFontSizeValue } from '../components/global-styles/typography-utils';\nimport { unlock } from '../lock-unlock';\n\n/*\n * This utility is intended to assist where the serialization of the typography\n * block support is being skipped for a block but the typography related CSS\n * styles still need to be generated so they can be applied to inner elements.\n */\n/**\n * Provides the CSS class names and inline styles for a block's typography support\n * attributes.\n *\n * @param {Object} attributes Block attributes.\n * @param {Object|boolean} settings Merged theme.json settings\n *\n * @return {Object} Typography block support derived CSS classes & styles.\n */\nexport function getTypographyClassesAndStyles( attributes, settings ) {\n\tconst { kebabCase } = unlock( componentsPrivateApis );\n\tlet typographyStyles = attributes?.style?.typography || {};\n\ttypographyStyles = {\n\t\t...typographyStyles,\n\t\tfontSize: getTypographyFontSizeValue(\n\t\t\t{ size: attributes?.style?.typography?.fontSize },\n\t\t\tsettings\n\t\t),\n\t};\n\n\tconst style = getInlineStyles( { typography: typographyStyles } );\n\tconst fontFamilyClassName = !! attributes?.fontFamily\n\t\t? `has-${ kebabCase( attributes.fontFamily ) }-font-family`\n\t\t: '';\n\n\tconst className = classnames(\n\t\tfontFamilyClassName,\n\t\tgetFontSizeClass( attributes?.fontSize )\n\t);\n\n\treturn {\n\t\tclassName,\n\t\tstyle,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,WAAW,IAAIC,qBAAqB,QAAQ,uBAAuB;;AAE5E;AACA;AACA;AACA,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,0BAA0B,QAAQ,8CAA8C;AACzF,SAASC,MAAM,QAAQ,gBAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAAEC,UAAU,EAAEC,QAAQ,EAAG;EACrE,MAAM;IAAEC;EAAU,CAAC,GAAGJ,MAAM,CAAEJ,qBAAsB,CAAC;EACrD,IAAIS,gBAAgB,GAAGH,UAAU,EAAEI,KAAK,EAAEC,UAAU,IAAI,CAAC,CAAC;EAC1DF,gBAAgB,GAAG;IAClB,GAAGA,gBAAgB;IACnBG,QAAQ,EAAET,0BAA0B,CACnC;MAAEU,IAAI,EAAEP,UAAU,EAAEI,KAAK,EAAEC,UAAU,EAAEC;IAAS,CAAC,EACjDL,QACD;EACD,CAAC;EAED,MAAMG,KAAK,GAAGT,eAAe,CAAE;IAAEU,UAAU,EAAEF;EAAiB,CAAE,CAAC;EACjE,MAAMK,mBAAmB,GAAG,CAAC,CAAER,UAAU,EAAES,UAAU,GACjD,OAAOP,SAAS,CAAEF,UAAU,CAACS,UAAW,CAAG,cAAa,GACzD,EAAE;EAEL,MAAMC,SAAS,GAAGlB,UAAU,CAC3BgB,mBAAmB,EACnBZ,gBAAgB,CAAEI,UAAU,EAAEM,QAAS,CACxC,CAAC;EAED,OAAO;IACNI,SAAS;IACTN;EACD,CAAC;AACF"}
|
|
@@ -13,6 +13,7 @@ import { appendSelectors, getBlockGapCSS } from './utils';
|
|
|
13
13
|
import { getGapCSSValue } from '../hooks/gap';
|
|
14
14
|
import { shouldSkipSerialization } from '../hooks/utils';
|
|
15
15
|
import { LAYOUT_DEFINITIONS } from './definitions';
|
|
16
|
+
import { GridVisualizer } from '../components/grid-visualizer';
|
|
16
17
|
const RANGE_CONTROL_MAX_VALUES = {
|
|
17
18
|
px: 600,
|
|
18
19
|
'%': 100,
|
|
@@ -61,7 +62,8 @@ export default {
|
|
|
61
62
|
label: __('Grid'),
|
|
62
63
|
inspectorControls: function GridLayoutInspectorControls({
|
|
63
64
|
layout = {},
|
|
64
|
-
onChange
|
|
65
|
+
onChange,
|
|
66
|
+
clientId
|
|
65
67
|
}) {
|
|
66
68
|
return createElement(Fragment, null, createElement(GridLayoutTypeControl, {
|
|
67
69
|
layout: layout,
|
|
@@ -72,9 +74,11 @@ export default {
|
|
|
72
74
|
}) : createElement(GridLayoutMinimumWidthControl, {
|
|
73
75
|
layout: layout,
|
|
74
76
|
onChange: onChange
|
|
77
|
+
}), window.__experimentalEnableGridInteractivity && createElement(GridVisualizer, {
|
|
78
|
+
clientId: clientId
|
|
75
79
|
}));
|
|
76
80
|
},
|
|
77
|
-
toolBarControls: function
|
|
81
|
+
toolBarControls: function GridLayoutToolbarControls() {
|
|
78
82
|
return null;
|
|
79
83
|
},
|
|
80
84
|
getLayoutStyle: function getLayoutStyle({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","BaseControl","Flex","FlexItem","RangeControl","__experimentalNumberControl","NumberControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","useState","appendSelectors","getBlockGapCSS","getGapCSSValue","shouldSkipSerialization","LAYOUT_DEFINITIONS","RANGE_CONTROL_MAX_VALUES","px","vw","vh","em","rem","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","units","value","label","default","name","inspectorControls","GridLayoutInspectorControls","layout","onChange","createElement","Fragment","GridLayoutTypeControl","columnCount","GridLayoutColumnsControl","GridLayoutMinimumWidthControl","toolBarControls","DefaultLayoutToolbarControls","getLayoutStyle","selector","style","blockName","hasBlockGapSupport","layoutDefinitions","minimumColumnWidth","blockGapValue","spacing","blockGap","undefined","output","rules","push","length","join","getOrientation","getAlignments","quantity","unit","handleSliderChange","next","handleUnitChange","newUnit","newValue","includes","toFixed","Math","round","VisualLabel","as","gap","isBlock","size","onUnitChange","min","hideLabelFromVision","max","withInputField","validValue","parseInt","tempColumnCount","setTempColumnCount","tempMinimumColumnWidth","setTempMinimumColumnWidth","isManual","onChangeType","__nextHasNoMarginBottom","key"],"sources":["@wordpress/block-editor/src/layouts/grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\tBaseControl,\n\tFlex,\n\tFlexItem,\n\tRangeControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { appendSelectors, getBlockGapCSS } from './utils';\nimport { getGapCSSValue } from '../hooks/gap';\nimport { shouldSkipSerialization } from '../hooks/utils';\nimport { LAYOUT_DEFINITIONS } from './definitions';\n\nconst RANGE_CONTROL_MAX_VALUES = {\n\tpx: 600,\n\t'%': 100,\n\tvw: 100,\n\tvh: 100,\n\tem: 38,\n\trem: 38,\n\tsvw: 100,\n\tlvw: 100,\n\tdvw: 100,\n\tsvh: 100,\n\tlvh: 100,\n\tdvh: 100,\n\tvi: 100,\n\tsvi: 100,\n\tlvi: 100,\n\tdvi: 100,\n\tvb: 100,\n\tsvb: 100,\n\tlvb: 100,\n\tdvb: 100,\n\tvmin: 100,\n\tsvmin: 100,\n\tlvmin: 100,\n\tdvmin: 100,\n\tvmax: 100,\n\tsvmax: 100,\n\tlvmax: 100,\n\tdvmax: 100,\n};\n\nconst units = [\n\t{ value: 'px', label: 'px', default: 0 },\n\t{ value: 'rem', label: 'rem', default: 0 },\n\t{ value: 'em', label: 'em', default: 0 },\n];\n\nexport default {\n\tname: 'grid',\n\tlabel: __( 'Grid' ),\n\tinspectorControls: function GridLayoutInspectorControls( {\n\t\tlayout = {},\n\t\tonChange,\n\t} ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<GridLayoutTypeControl\n\t\t\t\t\tlayout={ layout }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t{ layout?.columnCount ? (\n\t\t\t\t\t<GridLayoutColumnsControl\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<GridLayoutMinimumWidthControl\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t},\n\ttoolBarControls: function DefaultLayoutToolbarControls() {\n\t\treturn null;\n\t},\n\tgetLayoutStyle: function getLayoutStyle( {\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\tblockName,\n\t\thasBlockGapSupport,\n\t\tlayoutDefinitions = LAYOUT_DEFINITIONS,\n\t} ) {\n\t\tconst { minimumColumnWidth = '12rem', columnCount = null } = layout;\n\n\t\t// If a block's block.json skips serialization for spacing or spacing.blockGap,\n\t\t// don't apply the user-defined value to the styles.\n\t\tconst blockGapValue =\n\t\t\tstyle?.spacing?.blockGap &&\n\t\t\t! shouldSkipSerialization( blockName, 'spacing', 'blockGap' )\n\t\t\t\t? getGapCSSValue( style?.spacing?.blockGap, '0.5em' )\n\t\t\t\t: undefined;\n\n\t\tlet output = '';\n\t\tconst rules = [];\n\n\t\tif ( columnCount ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(${ columnCount }, minmax(0, 1fr))`\n\t\t\t);\n\t\t} else if ( minimumColumnWidth ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(min(${ minimumColumnWidth }, 100%), 1fr))`,\n\t\t\t\t`container-type: inline-size`\n\t\t\t);\n\t\t}\n\n\t\tif ( rules.length ) {\n\t\t\t// Reason to disable: the extra line breaks added by prettier mess with the unit tests.\n\t\t\t// eslint-disable-next-line prettier/prettier\n\t\t\toutput = `${ appendSelectors( selector ) } { ${ rules.join(\n\t\t\t\t'; '\n\t\t\t) }; }`;\n\t\t}\n\n\t\t// Output blockGap styles based on rules contained in layout definitions in theme.json.\n\t\tif ( hasBlockGapSupport && blockGapValue ) {\n\t\t\toutput += getBlockGapCSS(\n\t\t\t\tselector,\n\t\t\t\tlayoutDefinitions,\n\t\t\t\t'grid',\n\t\t\t\tblockGapValue\n\t\t\t);\n\t\t}\n\t\treturn output;\n\t},\n\tgetOrientation() {\n\t\treturn 'horizontal';\n\t},\n\tgetAlignments() {\n\t\treturn [];\n\t},\n};\n\n// Enables setting minimum width of grid items.\nfunction GridLayoutMinimumWidthControl( { layout, onChange } ) {\n\tconst { minimumColumnWidth: value = '12rem' } = layout;\n\tconst [ quantity, unit ] = parseQuantityAndUnitFromRawValue( value );\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: [ next, unit ].join( '' ),\n\t\t} );\n\t};\n\n\t// Mostly copied from HeightControl.\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tlet newValue;\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && unit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tnewValue = ( quantity / 16 ).toFixed( 2 ) + newUnit;\n\t\t} else if ( [ 'em', 'rem' ].includes( unit ) && newUnit === 'px' ) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tnewValue = Math.round( quantity * 16 ) + newUnit;\n\t\t}\n\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<fieldset>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Minimum column width' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tminimumColumnWidth: newValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\tvalue={ quantity }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ RANGE_CONTROL_MAX_VALUES[ unit ] || 600 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables setting number of grid columns\nfunction GridLayoutColumnsControl( { layout, onChange } ) {\n\tconst { columnCount = 3 } = layout;\n\n\treturn (\n\t\t<fieldset>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Columns' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<NumberControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * If the input is cleared, avoid switching\n\t\t\t\t\t\t\t * back to \"Auto\" by setting a value of \"1\".\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tconst validValue = value !== '' ? value : '1';\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tcolumnCount: validValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnCount }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tvalue={ parseInt( columnCount, 10 ) } // RangeControl can't deal with strings.\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tcolumnCount: value,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ 16 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables switching between grid types\nfunction GridLayoutTypeControl( { layout, onChange } ) {\n\tconst { columnCount, minimumColumnWidth } = layout;\n\n\t/**\n\t * When switching, temporarily save any custom values set on the\n\t * previous type so we can switch back without loss.\n\t */\n\tconst [ tempColumnCount, setTempColumnCount ] = useState(\n\t\tcolumnCount || 3\n\t);\n\tconst [ tempMinimumColumnWidth, setTempMinimumColumnWidth ] = useState(\n\t\tminimumColumnWidth || '12rem'\n\t);\n\n\tconst isManual = !! columnCount ? 'manual' : 'auto';\n\n\tconst onChangeType = ( value ) => {\n\t\tif ( value === 'manual' ) {\n\t\t\tsetTempMinimumColumnWidth( minimumColumnWidth || '12rem' );\n\t\t} else {\n\t\t\tsetTempColumnCount( columnCount || 3 );\n\t\t}\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tcolumnCount: value === 'manual' ? tempColumnCount : null,\n\t\t\tminimumColumnWidth:\n\t\t\t\tvalue === 'auto' ? tempMinimumColumnWidth : null,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\tlabel={ __( 'Type' ) }\n\t\t\tvalue={ isManual }\n\t\t\tonChange={ onChangeType }\n\t\t\tisBlock={ true }\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey={ 'auto' }\n\t\t\t\tvalue=\"auto\"\n\t\t\t\tlabel={ __( 'Auto' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey={ 'manual' }\n\t\t\t\tvalue=\"manual\"\n\t\t\t\tlabel={ __( 'Manual' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["__","BaseControl","Flex","FlexItem","RangeControl","__experimentalNumberControl","NumberControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","useState","appendSelectors","getBlockGapCSS","getGapCSSValue","shouldSkipSerialization","LAYOUT_DEFINITIONS","GridVisualizer","RANGE_CONTROL_MAX_VALUES","px","vw","vh","em","rem","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","units","value","label","default","name","inspectorControls","GridLayoutInspectorControls","layout","onChange","clientId","createElement","Fragment","GridLayoutTypeControl","columnCount","GridLayoutColumnsControl","GridLayoutMinimumWidthControl","window","__experimentalEnableGridInteractivity","toolBarControls","GridLayoutToolbarControls","getLayoutStyle","selector","style","blockName","hasBlockGapSupport","layoutDefinitions","minimumColumnWidth","blockGapValue","spacing","blockGap","undefined","output","rules","push","length","join","getOrientation","getAlignments","quantity","unit","handleSliderChange","next","handleUnitChange","newUnit","newValue","includes","toFixed","Math","round","VisualLabel","as","gap","isBlock","size","onUnitChange","min","hideLabelFromVision","max","withInputField","validValue","parseInt","tempColumnCount","setTempColumnCount","tempMinimumColumnWidth","setTempMinimumColumnWidth","isManual","onChangeType","__nextHasNoMarginBottom","key"],"sources":["@wordpress/block-editor/src/layouts/grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\tBaseControl,\n\tFlex,\n\tFlexItem,\n\tRangeControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { appendSelectors, getBlockGapCSS } from './utils';\nimport { getGapCSSValue } from '../hooks/gap';\nimport { shouldSkipSerialization } from '../hooks/utils';\nimport { LAYOUT_DEFINITIONS } from './definitions';\nimport { GridVisualizer } from '../components/grid-visualizer';\n\nconst RANGE_CONTROL_MAX_VALUES = {\n\tpx: 600,\n\t'%': 100,\n\tvw: 100,\n\tvh: 100,\n\tem: 38,\n\trem: 38,\n\tsvw: 100,\n\tlvw: 100,\n\tdvw: 100,\n\tsvh: 100,\n\tlvh: 100,\n\tdvh: 100,\n\tvi: 100,\n\tsvi: 100,\n\tlvi: 100,\n\tdvi: 100,\n\tvb: 100,\n\tsvb: 100,\n\tlvb: 100,\n\tdvb: 100,\n\tvmin: 100,\n\tsvmin: 100,\n\tlvmin: 100,\n\tdvmin: 100,\n\tvmax: 100,\n\tsvmax: 100,\n\tlvmax: 100,\n\tdvmax: 100,\n};\n\nconst units = [\n\t{ value: 'px', label: 'px', default: 0 },\n\t{ value: 'rem', label: 'rem', default: 0 },\n\t{ value: 'em', label: 'em', default: 0 },\n];\n\nexport default {\n\tname: 'grid',\n\tlabel: __( 'Grid' ),\n\tinspectorControls: function GridLayoutInspectorControls( {\n\t\tlayout = {},\n\t\tonChange,\n\t\tclientId,\n\t} ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<GridLayoutTypeControl\n\t\t\t\t\tlayout={ layout }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t{ layout?.columnCount ? (\n\t\t\t\t\t<GridLayoutColumnsControl\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<GridLayoutMinimumWidthControl\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ window.__experimentalEnableGridInteractivity && (\n\t\t\t\t\t<GridVisualizer clientId={ clientId } />\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t},\n\ttoolBarControls: function GridLayoutToolbarControls() {\n\t\treturn null;\n\t},\n\tgetLayoutStyle: function getLayoutStyle( {\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\tblockName,\n\t\thasBlockGapSupport,\n\t\tlayoutDefinitions = LAYOUT_DEFINITIONS,\n\t} ) {\n\t\tconst { minimumColumnWidth = '12rem', columnCount = null } = layout;\n\n\t\t// If a block's block.json skips serialization for spacing or spacing.blockGap,\n\t\t// don't apply the user-defined value to the styles.\n\t\tconst blockGapValue =\n\t\t\tstyle?.spacing?.blockGap &&\n\t\t\t! shouldSkipSerialization( blockName, 'spacing', 'blockGap' )\n\t\t\t\t? getGapCSSValue( style?.spacing?.blockGap, '0.5em' )\n\t\t\t\t: undefined;\n\n\t\tlet output = '';\n\t\tconst rules = [];\n\n\t\tif ( columnCount ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(${ columnCount }, minmax(0, 1fr))`\n\t\t\t);\n\t\t} else if ( minimumColumnWidth ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(min(${ minimumColumnWidth }, 100%), 1fr))`,\n\t\t\t\t`container-type: inline-size`\n\t\t\t);\n\t\t}\n\n\t\tif ( rules.length ) {\n\t\t\t// Reason to disable: the extra line breaks added by prettier mess with the unit tests.\n\t\t\t// eslint-disable-next-line prettier/prettier\n\t\t\toutput = `${ appendSelectors( selector ) } { ${ rules.join(\n\t\t\t\t'; '\n\t\t\t) }; }`;\n\t\t}\n\n\t\t// Output blockGap styles based on rules contained in layout definitions in theme.json.\n\t\tif ( hasBlockGapSupport && blockGapValue ) {\n\t\t\toutput += getBlockGapCSS(\n\t\t\t\tselector,\n\t\t\t\tlayoutDefinitions,\n\t\t\t\t'grid',\n\t\t\t\tblockGapValue\n\t\t\t);\n\t\t}\n\t\treturn output;\n\t},\n\tgetOrientation() {\n\t\treturn 'horizontal';\n\t},\n\tgetAlignments() {\n\t\treturn [];\n\t},\n};\n\n// Enables setting minimum width of grid items.\nfunction GridLayoutMinimumWidthControl( { layout, onChange } ) {\n\tconst { minimumColumnWidth: value = '12rem' } = layout;\n\tconst [ quantity, unit ] = parseQuantityAndUnitFromRawValue( value );\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: [ next, unit ].join( '' ),\n\t\t} );\n\t};\n\n\t// Mostly copied from HeightControl.\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tlet newValue;\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && unit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tnewValue = ( quantity / 16 ).toFixed( 2 ) + newUnit;\n\t\t} else if ( [ 'em', 'rem' ].includes( unit ) && newUnit === 'px' ) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tnewValue = Math.round( quantity * 16 ) + newUnit;\n\t\t}\n\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<fieldset>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Minimum column width' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tminimumColumnWidth: newValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\tvalue={ quantity }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ RANGE_CONTROL_MAX_VALUES[ unit ] || 600 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables setting number of grid columns\nfunction GridLayoutColumnsControl( { layout, onChange } ) {\n\tconst { columnCount = 3 } = layout;\n\n\treturn (\n\t\t<fieldset>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Columns' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<NumberControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * If the input is cleared, avoid switching\n\t\t\t\t\t\t\t * back to \"Auto\" by setting a value of \"1\".\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tconst validValue = value !== '' ? value : '1';\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tcolumnCount: validValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnCount }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tvalue={ parseInt( columnCount, 10 ) } // RangeControl can't deal with strings.\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tcolumnCount: value,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ 16 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables switching between grid types\nfunction GridLayoutTypeControl( { layout, onChange } ) {\n\tconst { columnCount, minimumColumnWidth } = layout;\n\n\t/**\n\t * When switching, temporarily save any custom values set on the\n\t * previous type so we can switch back without loss.\n\t */\n\tconst [ tempColumnCount, setTempColumnCount ] = useState(\n\t\tcolumnCount || 3\n\t);\n\tconst [ tempMinimumColumnWidth, setTempMinimumColumnWidth ] = useState(\n\t\tminimumColumnWidth || '12rem'\n\t);\n\n\tconst isManual = !! columnCount ? 'manual' : 'auto';\n\n\tconst onChangeType = ( value ) => {\n\t\tif ( value === 'manual' ) {\n\t\t\tsetTempMinimumColumnWidth( minimumColumnWidth || '12rem' );\n\t\t} else {\n\t\t\tsetTempColumnCount( columnCount || 3 );\n\t\t}\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tcolumnCount: value === 'manual' ? tempColumnCount : null,\n\t\t\tminimumColumnWidth:\n\t\t\t\tvalue === 'auto' ? tempMinimumColumnWidth : null,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ __( 'Type' ) }\n\t\t\tvalue={ isManual }\n\t\t\tonChange={ onChangeType }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey={ 'auto' }\n\t\t\t\tvalue=\"auto\"\n\t\t\t\tlabel={ __( 'Auto' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey={ 'manual' }\n\t\t\t\tvalue=\"manual\"\n\t\t\t\tlabel={ __( 'Manual' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,SACCC,WAAW,EACXC,IAAI,EACJC,QAAQ,EACRC,YAAY,EACZC,2BAA2B,IAAIC,aAAa,EAC5CC,gCAAgC,IAAIC,kBAAkB,EACtDC,sCAAsC,IAAIC,wBAAwB,EAClEC,yBAAyB,IAAIC,WAAW,EACxCC,8CAA8C,IAAIC,gCAAgC,QAC5E,uBAAuB;AAC9B,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;AACA,SAASC,eAAe,EAAEC,cAAc,QAAQ,SAAS;AACzD,SAASC,cAAc,QAAQ,cAAc;AAC7C,SAASC,uBAAuB,QAAQ,gBAAgB;AACxD,SAASC,kBAAkB,QAAQ,eAAe;AAClD,SAASC,cAAc,QAAQ,+BAA+B;AAE9D,MAAMC,wBAAwB,GAAG;EAChCC,EAAE,EAAE,GAAG;EACP,GAAG,EAAE,GAAG;EACRC,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,EAAE;EACNC,GAAG,EAAE,EAAE;EACPC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,EAAE,EAAE,GAAG;EACPC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,EAAE,EAAE,GAAG;EACPC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,GAAG,EAAE,GAAG;EACRC,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE,GAAG;EACVC,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE;AACR,CAAC;AAED,MAAMC,KAAK,GAAG,CACb;EAAEC,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAE,CAAC,EACxC;EAAEF,KAAK,EAAE,KAAK;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE;AAAE,CAAC,EAC1C;EAAEF,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAE,CAAC,CACxC;AAED,eAAe;EACdC,IAAI,EAAE,MAAM;EACZF,KAAK,EAAEpD,EAAE,CAAE,MAAO,CAAC;EACnBuD,iBAAiB,EAAE,SAASC,2BAA2BA,CAAE;IACxDC,MAAM,GAAG,CAAC,CAAC;IACXC,QAAQ;IACRC;EACD,CAAC,EAAG;IACH,OACCC,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACE,qBAAqB;MACrBL,MAAM,EAAGA,MAAQ;MACjBC,QAAQ,EAAGA;IAAU,CACrB,CAAC,EACAD,MAAM,EAAEM,WAAW,GACpBH,aAAA,CAACI,wBAAwB;MACxBP,MAAM,EAAGA,MAAQ;MACjBC,QAAQ,EAAGA;IAAU,CACrB,CAAC,GAEFE,aAAA,CAACK,6BAA6B;MAC7BR,MAAM,EAAGA,MAAQ;MACjBC,QAAQ,EAAGA;IAAU,CACrB,CACD,EACCQ,MAAM,CAACC,qCAAqC,IAC7CP,aAAA,CAACvC,cAAc;MAACsC,QAAQ,EAAGA;IAAU,CAAE,CAEvC,CAAC;EAEL,CAAC;EACDS,eAAe,EAAE,SAASC,yBAAyBA,CAAA,EAAG;IACrD,OAAO,IAAI;EACZ,CAAC;EACDC,cAAc,EAAE,SAASA,cAAcA,CAAE;IACxCC,QAAQ;IACRd,MAAM;IACNe,KAAK;IACLC,SAAS;IACTC,kBAAkB;IAClBC,iBAAiB,GAAGvD;EACrB,CAAC,EAAG;IACH,MAAM;MAAEwD,kBAAkB,GAAG,OAAO;MAAEb,WAAW,GAAG;IAAK,CAAC,GAAGN,MAAM;;IAEnE;IACA;IACA,MAAMoB,aAAa,GAClBL,KAAK,EAAEM,OAAO,EAAEC,QAAQ,IACxB,CAAE5D,uBAAuB,CAAEsD,SAAS,EAAE,SAAS,EAAE,UAAW,CAAC,GAC1DvD,cAAc,CAAEsD,KAAK,EAAEM,OAAO,EAAEC,QAAQ,EAAE,OAAQ,CAAC,GACnDC,SAAS;IAEb,IAAIC,MAAM,GAAG,EAAE;IACf,MAAMC,KAAK,GAAG,EAAE;IAEhB,IAAKnB,WAAW,EAAG;MAClBmB,KAAK,CAACC,IAAI,CACR,iCAAiCpB,WAAa,mBAChD,CAAC;IACF,CAAC,MAAM,IAAKa,kBAAkB,EAAG;MAChCM,KAAK,CAACC,IAAI,CACR,uDAAuDP,kBAAoB,gBAAe,EAC1F,6BACF,CAAC;IACF;IAEA,IAAKM,KAAK,CAACE,MAAM,EAAG;MACnB;MACA;MACAH,MAAM,GAAI,GAAGjE,eAAe,CAAEuD,QAAS,CAAG,MAAMW,KAAK,CAACG,IAAI,CACzD,IACD,CAAG,KAAI;IACR;;IAEA;IACA,IAAKX,kBAAkB,IAAIG,aAAa,EAAG;MAC1CI,MAAM,IAAIhE,cAAc,CACvBsD,QAAQ,EACRI,iBAAiB,EACjB,MAAM,EACNE,aACD,CAAC;IACF;IACA,OAAOI,MAAM;EACd,CAAC;EACDK,cAAcA,CAAA,EAAG;IAChB,OAAO,YAAY;EACpB,CAAC;EACDC,aAAaA,CAAA,EAAG;IACf,OAAO,EAAE;EACV;AACD,CAAC;;AAED;AACA,SAAStB,6BAA6BA,CAAE;EAAER,MAAM;EAAEC;AAAS,CAAC,EAAG;EAC9D,MAAM;IAAEkB,kBAAkB,EAAEzB,KAAK,GAAG;EAAQ,CAAC,GAAGM,MAAM;EACtD,MAAM,CAAE+B,QAAQ,EAAEC,IAAI,CAAE,GAAG3E,gCAAgC,CAAEqC,KAAM,CAAC;EAEpE,MAAMuC,kBAAkB,GAAKC,IAAI,IAAM;IACtCjC,QAAQ,CAAE;MACT,GAAGD,MAAM;MACTmB,kBAAkB,EAAE,CAAEe,IAAI,EAAEF,IAAI,CAAE,CAACJ,IAAI,CAAE,EAAG;IAC7C,CAAE,CAAC;EACJ,CAAC;;EAED;EACA,MAAMO,gBAAgB,GAAKC,OAAO,IAAM;IACvC;IACA;IACA,IAAIC,QAAQ;IAEZ,IAAK,CAAE,IAAI,EAAE,KAAK,CAAE,CAACC,QAAQ,CAAEF,OAAQ,CAAC,IAAIJ,IAAI,KAAK,IAAI,EAAG;MAC3D;MACAK,QAAQ,GAAG,CAAEN,QAAQ,GAAG,EAAE,EAAGQ,OAAO,CAAE,CAAE,CAAC,GAAGH,OAAO;IACpD,CAAC,MAAM,IAAK,CAAE,IAAI,EAAE,KAAK,CAAE,CAACE,QAAQ,CAAEN,IAAK,CAAC,IAAII,OAAO,KAAK,IAAI,EAAG;MAClE;MACAC,QAAQ,GAAGG,IAAI,CAACC,KAAK,CAAEV,QAAQ,GAAG,EAAG,CAAC,GAAGK,OAAO;IACjD;IAEAnC,QAAQ,CAAE;MACT,GAAGD,MAAM;MACTmB,kBAAkB,EAAEkB;IACrB,CAAE,CAAC;EACJ,CAAC;EAED,OACClC,aAAA,mBACCA,aAAA,CAAC3D,WAAW,CAACkG,WAAW;IAACC,EAAE,EAAC;EAAQ,GACjCpG,EAAE,CAAE,sBAAuB,CACL,CAAC,EAC1B4D,aAAA,CAAC1D,IAAI;IAACmG,GAAG,EAAG;EAAG,GACdzC,aAAA,CAACzD,QAAQ;IAACmG,OAAO;EAAA,GAChB1C,aAAA,CAAChD,WAAW;IACX2F,IAAI,EAAG,kBAAoB;IAC3B7C,QAAQ,EAAKoC,QAAQ,IAAM;MAC1BpC,QAAQ,CAAE;QACT,GAAGD,MAAM;QACTmB,kBAAkB,EAAEkB;MACrB,CAAE,CAAC;IACJ,CAAG;IACHU,YAAY,EAAGZ,gBAAkB;IACjCzC,KAAK,EAAGA,KAAO;IACfD,KAAK,EAAGA,KAAO;IACfuD,GAAG,EAAG,CAAG;IACTrD,KAAK,EAAGpD,EAAE,CAAE,sBAAuB,CAAG;IACtC0G,mBAAmB;EAAA,CACnB,CACQ,CAAC,EACX9C,aAAA,CAACzD,QAAQ;IAACmG,OAAO;EAAA,GAChB1C,aAAA,CAACxD,YAAY;IACZsD,QAAQ,EAAGgC,kBAAoB;IAC/BvC,KAAK,EAAGqC,QAAU;IAClBiB,GAAG,EAAG,CAAG;IACTE,GAAG,EAAGrF,wBAAwB,CAAEmE,IAAI,CAAE,IAAI,GAAK;IAC/CmB,cAAc,EAAG,KAAO;IACxBxD,KAAK,EAAGpD,EAAE,CAAE,sBAAuB,CAAG;IACtC0G,mBAAmB;EAAA,CACnB,CACQ,CACL,CACG,CAAC;AAEb;;AAEA;AACA,SAAS1C,wBAAwBA,CAAE;EAAEP,MAAM;EAAEC;AAAS,CAAC,EAAG;EACzD,MAAM;IAAEK,WAAW,GAAG;EAAE,CAAC,GAAGN,MAAM;EAElC,OACCG,aAAA,mBACCA,aAAA,CAAC3D,WAAW,CAACkG,WAAW;IAACC,EAAE,EAAC;EAAQ,GACjCpG,EAAE,CAAE,SAAU,CACQ,CAAC,EAC1B4D,aAAA,CAAC1D,IAAI;IAACmG,GAAG,EAAG;EAAG,GACdzC,aAAA,CAACzD,QAAQ;IAACmG,OAAO;EAAA,GAChB1C,aAAA,CAACtD,aAAa;IACbiG,IAAI,EAAG,kBAAoB;IAC3B7C,QAAQ,EAAKP,KAAK,IAAM;MACvB;AACP;AACA;AACA;MACO,MAAM0D,UAAU,GAAG1D,KAAK,KAAK,EAAE,GAAGA,KAAK,GAAG,GAAG;MAC7CO,QAAQ,CAAE;QACT,GAAGD,MAAM;QACTM,WAAW,EAAE8C;MACd,CAAE,CAAC;IACJ,CAAG;IACH1D,KAAK,EAAGY,WAAa;IACrB0C,GAAG,EAAG,CAAG;IACTrD,KAAK,EAAGpD,EAAE,CAAE,SAAU,CAAG;IACzB0G,mBAAmB;EAAA,CACnB,CACQ,CAAC,EACX9C,aAAA,CAACzD,QAAQ;IAACmG,OAAO;EAAA,GAChB1C,aAAA,CAACxD,YAAY;IACZ+C,KAAK,EAAG2D,QAAQ,CAAE/C,WAAW,EAAE,EAAG,CAAG,CAAC;IAAA;IACtCL,QAAQ,EAAKP,KAAK,IACjBO,QAAQ,CAAE;MACT,GAAGD,MAAM;MACTM,WAAW,EAAEZ;IACd,CAAE,CACF;IACDsD,GAAG,EAAG,CAAG;IACTE,GAAG,EAAG,EAAI;IACVC,cAAc,EAAG,KAAO;IACxBxD,KAAK,EAAGpD,EAAE,CAAE,SAAU,CAAG;IACzB0G,mBAAmB;EAAA,CACnB,CACQ,CACL,CACG,CAAC;AAEb;;AAEA;AACA,SAAS5C,qBAAqBA,CAAE;EAAEL,MAAM;EAAEC;AAAS,CAAC,EAAG;EACtD,MAAM;IAAEK,WAAW;IAAEa;EAAmB,CAAC,GAAGnB,MAAM;;EAElD;AACD;AACA;AACA;EACC,MAAM,CAAEsD,eAAe,EAAEC,kBAAkB,CAAE,GAAGjG,QAAQ,CACvDgD,WAAW,IAAI,CAChB,CAAC;EACD,MAAM,CAAEkD,sBAAsB,EAAEC,yBAAyB,CAAE,GAAGnG,QAAQ,CACrE6D,kBAAkB,IAAI,OACvB,CAAC;EAED,MAAMuC,QAAQ,GAAG,CAAC,CAAEpD,WAAW,GAAG,QAAQ,GAAG,MAAM;EAEnD,MAAMqD,YAAY,GAAKjE,KAAK,IAAM;IACjC,IAAKA,KAAK,KAAK,QAAQ,EAAG;MACzB+D,yBAAyB,CAAEtC,kBAAkB,IAAI,OAAQ,CAAC;IAC3D,CAAC,MAAM;MACNoC,kBAAkB,CAAEjD,WAAW,IAAI,CAAE,CAAC;IACvC;IACAL,QAAQ,CAAE;MACT,GAAGD,MAAM;MACTM,WAAW,EAAEZ,KAAK,KAAK,QAAQ,GAAG4D,eAAe,GAAG,IAAI;MACxDnC,kBAAkB,EACjBzB,KAAK,KAAK,MAAM,GAAG8D,sBAAsB,GAAG;IAC9C,CAAE,CAAC;EACJ,CAAC;EAED,OACCrD,aAAA,CAACpD,kBAAkB;IAClB6G,uBAAuB;IACvBjE,KAAK,EAAGpD,EAAE,CAAE,MAAO,CAAG;IACtBmD,KAAK,EAAGgE,QAAU;IAClBzD,QAAQ,EAAG0D,YAAc;IACzBd,OAAO;EAAA,GAEP1C,aAAA,CAAClD,wBAAwB;IACxB4G,GAAG,EAAG,MAAQ;IACdnE,KAAK,EAAC,MAAM;IACZC,KAAK,EAAGpD,EAAE,CAAE,MAAO;EAAG,CACtB,CAAC,EACF4D,aAAA,CAAClD,wBAAwB;IACxB4G,GAAG,EAAG,QAAU;IAChBnE,KAAK,EAAC,QAAQ;IACdC,KAAK,EAAGpD,EAAE,CAAE,QAAS;EAAG,CACxB,CACkB,CAAC;AAEvB"}
|
|
@@ -10,7 +10,7 @@ import { ComposedPrivateInserter as PrivateInserter } from './components/inserte
|
|
|
10
10
|
import { default as PrivateQuickInserter } from './components/inserter/quick-inserter';
|
|
11
11
|
import { PrivateListView } from './components/list-view';
|
|
12
12
|
import BlockInfo from './components/block-info-slot-fill';
|
|
13
|
-
import {
|
|
13
|
+
import { useShowBlockTools } from './components/block-tools/use-show-block-tools';
|
|
14
14
|
import { cleanEmptyObject, useStyleOverride } from './hooks/utils';
|
|
15
15
|
import BlockQuickNavigation from './components/block-quick-navigation';
|
|
16
16
|
import { LayoutStyle } from './components/block-list/layout';
|
|
@@ -24,6 +24,8 @@ import { ExperimentalBlockCanvas } from './components/block-canvas';
|
|
|
24
24
|
import { getDuotoneFilter } from './components/duotone/utils';
|
|
25
25
|
import { useFlashEditableBlocks } from './components/use-flash-editable-blocks';
|
|
26
26
|
import { selectBlockPatternsKey } from './store/private-keys';
|
|
27
|
+
import { requiresWrapperOnCopy } from './components/writing-flow/utils';
|
|
28
|
+
import { PrivateRichText } from './components/rich-text/';
|
|
27
29
|
|
|
28
30
|
/**
|
|
29
31
|
* Private @wordpress/block-editor APIs.
|
|
@@ -40,7 +42,7 @@ lock(privateApis, {
|
|
|
40
42
|
PrivateListView,
|
|
41
43
|
ResizableBoxPopover,
|
|
42
44
|
BlockInfo,
|
|
43
|
-
|
|
45
|
+
useShowBlockTools,
|
|
44
46
|
cleanEmptyObject,
|
|
45
47
|
useStyleOverride,
|
|
46
48
|
BlockQuickNavigation,
|
|
@@ -54,6 +56,8 @@ lock(privateApis, {
|
|
|
54
56
|
useReusableBlocksRenameHint,
|
|
55
57
|
usesContextKey,
|
|
56
58
|
useFlashEditableBlocks,
|
|
57
|
-
selectBlockPatternsKey
|
|
59
|
+
selectBlockPatternsKey,
|
|
60
|
+
requiresWrapperOnCopy,
|
|
61
|
+
PrivateRichText
|
|
58
62
|
});
|
|
59
63
|
//# sourceMappingURL=private-apis.js.map
|