@wordpress/block-editor 11.7.0 → 12.0.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 +8 -0
- package/README.md +56 -57
- package/build/components/block-info-slot-fill/index.js +47 -0
- package/build/components/block-info-slot-fill/index.js.map +1 -0
- package/build/components/block-inspector/index.js +4 -2
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/index.native.js +11 -21
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +3 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-popover/inbetween.js +2 -9
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +1 -10
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-toolbar/index.js +2 -1
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +83 -9
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +11 -28
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/caption/index.native.js +0 -1
- package/build/components/caption/index.native.js.map +1 -1
- package/build/components/date-format-picker/index.js +1 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/editor-styles/index.js +4 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +21 -14
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/global-styles/border-panel.js +15 -59
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +12 -12
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.native.js +174 -0
- package/build/components/global-styles/color-panel.native.js.map +1 -0
- package/build/components/global-styles/dimensions-panel.js +21 -20
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/effects-panel.js +244 -0
- package/build/components/global-styles/effects-panel.js.map +1 -0
- package/build/components/global-styles/filters-panel.js +215 -0
- package/build/components/global-styles/filters-panel.js.map +1 -0
- package/build/components/global-styles/get-block-css-selector.js +1 -12
- package/build/components/global-styles/get-block-css-selector.js.map +1 -1
- package/build/components/global-styles/hooks.js +7 -0
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +28 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +9 -9
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +100 -82
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-size-control/use-dimension-handler.js +5 -3
- package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build/components/index.js +23 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +4 -2
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +12 -7
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/index.js +2 -1
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +2 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/utils.js +5 -3
- package/build/components/inspector-controls-tabs/utils.js.map +1 -1
- package/build/components/list-view/block-select-button.js +7 -2
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +13 -21
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +37 -10
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js +31 -7
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -1
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +1 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +7 -3
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +8 -2
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/media-replace-flow/index.js +5 -5
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +12 -4
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +2 -7
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/block-contents.js +6 -1
- package/build/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +17 -14
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/resizable-box-popover/index.js +38 -0
- package/build/components/resizable-box-popover/index.js.map +1 -0
- package/build/components/rich-text/index.js +0 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +7 -11
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +8 -0
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/hooks/anchor.js +1 -1
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border.js +1 -1
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/duotone.js +121 -70
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/margin.js +27 -17
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +19 -9
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/utils.js +22 -7
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/utils.js +3 -2
- package/build/layouts/utils.js.map +1 -1
- package/build/private-apis.js +13 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +8 -1
- package/build/store/actions.js.map +1 -1
- package/build/utils/object.js +6 -6
- package/build/utils/object.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -2
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build/utils/use-should-contextual-toolbar-show.js +68 -0
- package/build/utils/use-should-contextual-toolbar-show.js.map +1 -0
- package/build-module/components/block-info-slot-fill/index.js +34 -0
- package/build-module/components/block-info-slot-fill/index.js.map +1 -0
- package/build-module/components/block-inspector/index.js +3 -2
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +11 -19
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +2 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +2 -9
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -9
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +2 -1
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +79 -9
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +10 -27
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/caption/index.native.js +0 -1
- package/build-module/components/caption/index.native.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +1 -1
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/editor-styles/index.js +4 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +21 -14
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +15 -59
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +13 -13
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.native.js +150 -0
- package/build-module/components/global-styles/color-panel.native.js.map +1 -0
- package/build-module/components/global-styles/dimensions-panel.js +22 -21
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/effects-panel.js +228 -0
- package/build-module/components/global-styles/effects-panel.js.map +1 -0
- package/build-module/components/global-styles/filters-panel.js +201 -0
- package/build-module/components/global-styles/filters-panel.js.map +1 -0
- package/build-module/components/global-styles/get-block-css-selector.js +1 -12
- package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +7 -0
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +2 -0
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +10 -10
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +101 -83
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-size-control/use-dimension-handler.js +5 -3
- package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +5 -2
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +12 -6
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/index.js +2 -1
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/utils.js +4 -3
- package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +7 -2
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +15 -22
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +36 -10
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js +31 -8
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -1
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +1 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +7 -3
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +8 -4
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +5 -5
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +12 -4
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +1 -5
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/block-contents.js +5 -1
- package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +17 -14
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/resizable-box-popover/index.js +26 -0
- package/build-module/components/resizable-box-popover/index.js.map +1 -0
- package/build-module/components/rich-text/index.js +0 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +7 -10
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +7 -0
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/hooks/anchor.js +1 -1
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border.js +1 -1
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/duotone.js +118 -71
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/margin.js +29 -18
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +21 -10
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/utils.js +24 -9
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/utils.js +3 -2
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/private-apis.js +9 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +8 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/utils/object.js +5 -5
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -2
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-module/utils/use-should-contextual-toolbar-show.js +56 -0
- package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -0
- package/build-style/content-rtl.css +9 -6
- package/build-style/content.css +9 -6
- package/build-style/style-rtl.css +272 -54
- package/build-style/style.css +272 -54
- package/package.json +32 -32
- package/src/components/block-info-slot-fill/index.js +24 -0
- package/src/components/block-inspector/index.js +3 -0
- package/src/components/block-inspector/style.scss +6 -4
- package/src/components/block-list/content.scss +16 -15
- package/src/components/block-list/index.native.js +19 -38
- package/src/components/block-list/use-in-between-inserter.js +4 -1
- package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +9 -9
- package/src/components/block-mover/style.scss +10 -4
- package/src/components/block-mover/test/index.native.js +4 -4
- package/src/components/block-popover/inbetween.js +2 -13
- package/src/components/block-settings-menu/block-settings-dropdown.js +2 -12
- package/src/components/block-toolbar/index.js +4 -3
- package/src/components/block-toolbar/style.scss +56 -33
- package/src/components/block-tools/block-contextual-toolbar.js +94 -11
- package/src/components/block-tools/selected-block-popover.js +11 -44
- package/src/components/block-tools/style.scss +157 -3
- package/src/components/caption/index.native.js +0 -1
- package/src/components/date-format-picker/index.js +1 -1
- package/src/components/editor-styles/index.js +9 -5
- package/src/components/font-sizes/fluid-utils.js +31 -14
- package/src/components/font-sizes/test/fluid-utils.js +5 -16
- package/src/components/global-styles/README.md +129 -16
- package/src/components/global-styles/border-panel.js +13 -61
- package/src/components/global-styles/color-panel.js +13 -13
- package/src/components/global-styles/color-panel.native.js +207 -0
- package/src/components/global-styles/dimensions-panel.js +47 -20
- package/src/components/global-styles/effects-panel.js +228 -0
- package/src/components/global-styles/filters-panel.js +230 -0
- package/src/components/global-styles/get-block-css-selector.js +0 -11
- package/src/components/global-styles/hooks.js +10 -0
- package/src/components/global-styles/index.js +2 -0
- package/src/components/global-styles/style.scss +43 -0
- package/src/components/global-styles/test/typography-utils.js +63 -22
- package/src/components/global-styles/test/use-global-styles-output.js +130 -8
- package/src/components/global-styles/typography-panel.js +37 -11
- package/src/components/global-styles/use-global-styles-output.js +88 -72
- package/src/components/iframe/index.js +1 -1
- package/src/components/image-size-control/use-dimension-handler.js +4 -3
- package/src/components/index.js +5 -1
- package/src/components/inserter/block-patterns-tab.js +3 -1
- package/src/components/inserter/block-types-tab.js +9 -6
- package/src/components/inserter/index.js +1 -1
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
- package/src/components/inspector-controls-tabs/utils.js +4 -3
- package/src/components/list-view/README.md +2 -0
- package/src/components/list-view/block-select-button.js +6 -1
- package/src/components/list-view/block.js +24 -31
- package/src/components/list-view/drop-indicator.js +67 -22
- package/src/components/list-view/index.js +26 -3
- package/src/components/list-view/leaf.js +1 -0
- package/src/components/list-view/style.scss +18 -4
- package/src/components/list-view/test/use-list-view-drop-zone.js +188 -0
- package/src/components/list-view/use-block-selection.js +1 -1
- package/src/components/list-view/use-list-view-client-ids.js +5 -3
- package/src/components/list-view/use-list-view-drop-zone.js +9 -3
- package/src/components/media-replace-flow/README.md +3 -2
- package/src/components/media-replace-flow/index.js +4 -5
- package/src/components/navigable-toolbar/index.js +12 -3
- package/src/components/off-canvas-editor/appender.js +1 -4
- package/src/components/off-canvas-editor/block-contents.js +4 -0
- package/src/components/off-canvas-editor/index.js +15 -11
- package/src/components/resizable-box-popover/index.js +27 -0
- package/src/components/rich-text/index.js +0 -1
- package/src/components/rich-text/index.native.js +2 -5
- package/src/components/spacing-sizes-control/spacing-input-control.js +10 -0
- package/src/components/spacing-sizes-control/style.scss +7 -7
- package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -3
- package/src/hooks/anchor.js +1 -1
- package/src/hooks/border.js +1 -1
- package/src/hooks/duotone.js +162 -99
- package/src/hooks/margin.js +31 -26
- package/src/hooks/padding.js +24 -18
- package/src/hooks/test/anchor.js +113 -0
- package/src/hooks/test/color.js +0 -9
- package/src/hooks/test/use-typography-props.js +2 -2
- package/src/hooks/test/utils.js +20 -101
- package/src/hooks/utils.js +23 -6
- package/src/layouts/utils.js +2 -2
- package/src/private-apis.js +8 -0
- package/src/store/actions.js +8 -1
- package/src/style.scss +1 -0
- package/src/utils/object.js +5 -5
- package/src/utils/test/object.js +53 -15
- package/src/utils/transform-styles/index.js +2 -2
- package/src/utils/use-should-contextual-toolbar-show.js +75 -0
- package/tsconfig.json +1 -0
- package/build/components/rich-text/use-native-props.js +0 -11
- package/build/components/rich-text/use-native-props.js.map +0 -1
- package/build/components/rich-text/use-native-props.native.js +0 -24
- package/build/components/rich-text/use-native-props.native.js.map +0 -1
- package/build/hooks/color-panel.native.js +0 -77
- package/build/hooks/color-panel.native.js.map +0 -1
- package/build-module/components/rich-text/use-native-props.js +0 -4
- package/build-module/components/rich-text/use-native-props.js.map +0 -1
- package/build-module/components/rich-text/use-native-props.native.js +0 -15
- package/build-module/components/rich-text/use-native-props.native.js.map +0 -1
- package/build-module/hooks/color-panel.native.js +0 -62
- package/build-module/hooks/color-panel.native.js.map +0 -1
- package/src/components/rich-text/use-native-props.js +0 -3
- package/src/components/rich-text/use-native-props.native.js +0 -17
- package/src/hooks/color-panel.native.js +0 -63
package/src/hooks/margin.js
CHANGED
|
@@ -1,43 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { useState, useRef, useEffect } from '@wordpress/element';
|
|
5
5
|
import isShallowEqual from '@wordpress/is-shallow-equal';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import BlockPopover from '../components/block-popover';
|
|
11
|
-
import {
|
|
11
|
+
import { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';
|
|
12
|
+
|
|
13
|
+
function getComputedCSS( element, property ) {
|
|
14
|
+
return element.ownerDocument.defaultView
|
|
15
|
+
.getComputedStyle( element )
|
|
16
|
+
.getPropertyValue( property );
|
|
17
|
+
}
|
|
12
18
|
|
|
13
19
|
export function MarginVisualizer( { clientId, attributes, forceShow } ) {
|
|
20
|
+
const blockElement = useBlockElement( clientId );
|
|
21
|
+
const [ style, setStyle ] = useState();
|
|
22
|
+
|
|
14
23
|
const margin = attributes?.style?.spacing?.margin;
|
|
15
24
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const marginRight = margin?.right
|
|
21
|
-
? getSpacingPresetCssVar( margin?.right )
|
|
22
|
-
: 0;
|
|
23
|
-
const marginBottom = margin?.bottom
|
|
24
|
-
? getSpacingPresetCssVar( margin?.bottom )
|
|
25
|
-
: 0;
|
|
26
|
-
const marginLeft = margin?.left
|
|
27
|
-
? getSpacingPresetCssVar( margin?.left )
|
|
28
|
-
: 0;
|
|
25
|
+
useEffect( () => {
|
|
26
|
+
if ( ! blockElement ) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
const top = getComputedCSS( blockElement, 'margin-top' );
|
|
31
|
+
const right = getComputedCSS( blockElement, 'margin-right' );
|
|
32
|
+
const bottom = getComputedCSS( blockElement, 'margin-bottom' );
|
|
33
|
+
const left = getComputedCSS( blockElement, 'margin-left' );
|
|
34
|
+
|
|
35
|
+
setStyle( {
|
|
36
|
+
borderTopWidth: top,
|
|
37
|
+
borderRightWidth: right,
|
|
38
|
+
borderBottomWidth: bottom,
|
|
39
|
+
borderLeftWidth: left,
|
|
40
|
+
top: top ? `-${ top }` : 0,
|
|
41
|
+
right: right ? `-${ right }` : 0,
|
|
42
|
+
bottom: bottom ? `-${ bottom }` : 0,
|
|
43
|
+
left: left ? `-${ left }` : 0,
|
|
44
|
+
} );
|
|
45
|
+
}, [ blockElement, margin ] );
|
|
41
46
|
|
|
42
47
|
const [ isActive, setIsActive ] = useState( false );
|
|
43
48
|
const valueRef = useRef( margin );
|
package/src/hooks/padding.js
CHANGED
|
@@ -1,33 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useState, useRef, useEffect
|
|
4
|
+
import { useState, useRef, useEffect } from '@wordpress/element';
|
|
5
5
|
import isShallowEqual from '@wordpress/is-shallow-equal';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import BlockPopover from '../components/block-popover';
|
|
11
|
-
import {
|
|
11
|
+
import { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';
|
|
12
|
+
|
|
13
|
+
function getComputedCSS( element, property ) {
|
|
14
|
+
return element.ownerDocument.defaultView
|
|
15
|
+
.getComputedStyle( element )
|
|
16
|
+
.getPropertyValue( property );
|
|
17
|
+
}
|
|
12
18
|
|
|
13
19
|
export function PaddingVisualizer( { clientId, attributes, forceShow } ) {
|
|
20
|
+
const blockElement = useBlockElement( clientId );
|
|
21
|
+
const [ style, setStyle ] = useState();
|
|
22
|
+
|
|
14
23
|
const padding = attributes?.style?.spacing?.padding;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
: 0,
|
|
29
|
-
};
|
|
30
|
-
}, [ padding ] );
|
|
24
|
+
|
|
25
|
+
useEffect( () => {
|
|
26
|
+
if ( ! blockElement ) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
setStyle( {
|
|
31
|
+
borderTopWidth: getComputedCSS( blockElement, 'padding-top' ),
|
|
32
|
+
borderRightWidth: getComputedCSS( blockElement, 'padding-right' ),
|
|
33
|
+
borderBottomWidth: getComputedCSS( blockElement, 'padding-bottom' ),
|
|
34
|
+
borderLeftWidth: getComputedCSS( blockElement, 'padding-left' ),
|
|
35
|
+
} );
|
|
36
|
+
}, [ blockElement, padding ] );
|
|
31
37
|
|
|
32
38
|
const [ isActive, setIsActive ] = useState( false );
|
|
33
39
|
const valueRef = useRef( padding );
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { applyFilters } from '@wordpress/hooks';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import '../anchor';
|
|
10
|
+
|
|
11
|
+
const noop = () => {};
|
|
12
|
+
|
|
13
|
+
describe( 'anchor', () => {
|
|
14
|
+
const blockSettings = {
|
|
15
|
+
save: noop,
|
|
16
|
+
category: 'text',
|
|
17
|
+
title: 'block title',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
describe( 'addAttribute()', () => {
|
|
21
|
+
const registerBlockType = applyFilters.bind(
|
|
22
|
+
null,
|
|
23
|
+
'blocks.registerBlockType'
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
it( 'should do nothing if the block settings do not define anchor support', () => {
|
|
27
|
+
const settings = registerBlockType( blockSettings );
|
|
28
|
+
|
|
29
|
+
expect( settings.attributes ).toBe( undefined );
|
|
30
|
+
} );
|
|
31
|
+
|
|
32
|
+
it( 'should assign a new anchor attribute', () => {
|
|
33
|
+
const settings = registerBlockType( {
|
|
34
|
+
...blockSettings,
|
|
35
|
+
supports: {
|
|
36
|
+
anchor: true,
|
|
37
|
+
},
|
|
38
|
+
} );
|
|
39
|
+
|
|
40
|
+
expect( settings.attributes ).toHaveProperty( 'anchor' );
|
|
41
|
+
} );
|
|
42
|
+
|
|
43
|
+
it( 'should not override attributes defined in settings', () => {
|
|
44
|
+
const settings = registerBlockType( {
|
|
45
|
+
...blockSettings,
|
|
46
|
+
supports: {
|
|
47
|
+
anchor: true,
|
|
48
|
+
},
|
|
49
|
+
attributes: {
|
|
50
|
+
anchor: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
default: 'testAnchor',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
} );
|
|
56
|
+
|
|
57
|
+
expect( settings.attributes.anchor ).toEqual( {
|
|
58
|
+
type: 'string',
|
|
59
|
+
default: 'testAnchor',
|
|
60
|
+
} );
|
|
61
|
+
} );
|
|
62
|
+
} );
|
|
63
|
+
|
|
64
|
+
describe( 'addSaveProps', () => {
|
|
65
|
+
const getSaveContentExtraProps = applyFilters.bind(
|
|
66
|
+
null,
|
|
67
|
+
'blocks.getSaveContent.extraProps'
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
it( 'should do nothing if the block settings do not define anchor support', () => {
|
|
71
|
+
const attributes = { anchor: 'foo' };
|
|
72
|
+
const extraProps = getSaveContentExtraProps(
|
|
73
|
+
{},
|
|
74
|
+
blockSettings,
|
|
75
|
+
attributes
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
expect( extraProps ).not.toHaveProperty( 'id' );
|
|
79
|
+
} );
|
|
80
|
+
|
|
81
|
+
it( 'should inject anchor attribute ID', () => {
|
|
82
|
+
const attributes = { anchor: 'foo' };
|
|
83
|
+
const extraProps = getSaveContentExtraProps(
|
|
84
|
+
{},
|
|
85
|
+
{
|
|
86
|
+
...blockSettings,
|
|
87
|
+
supports: {
|
|
88
|
+
anchor: true,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
attributes
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
expect( extraProps.id ).toBe( 'foo' );
|
|
95
|
+
} );
|
|
96
|
+
|
|
97
|
+
it( 'should remove an anchor attribute ID when field is cleared', () => {
|
|
98
|
+
const attributes = { anchor: '' };
|
|
99
|
+
const extraProps = getSaveContentExtraProps(
|
|
100
|
+
{},
|
|
101
|
+
{
|
|
102
|
+
...blockSettings,
|
|
103
|
+
supports: {
|
|
104
|
+
anchor: true,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
attributes
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
expect( extraProps.id ).toBe( null );
|
|
111
|
+
} );
|
|
112
|
+
} );
|
|
113
|
+
} );
|
package/src/hooks/test/color.js
CHANGED
|
@@ -12,17 +12,8 @@ import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
|
|
|
12
12
|
* Internal dependencies
|
|
13
13
|
*/
|
|
14
14
|
import BlockEditorProvider from '../../components/provider';
|
|
15
|
-
import { cleanEmptyObject } from '../utils';
|
|
16
15
|
import { withColorPaletteStyles } from '../color';
|
|
17
16
|
|
|
18
|
-
describe( 'cleanEmptyObject', () => {
|
|
19
|
-
it( 'should remove nested keys', () => {
|
|
20
|
-
expect( cleanEmptyObject( { color: { text: undefined } } ) ).toEqual(
|
|
21
|
-
undefined
|
|
22
|
-
);
|
|
23
|
-
} );
|
|
24
|
-
} );
|
|
25
|
-
|
|
26
17
|
describe( 'withColorPaletteStyles', () => {
|
|
27
18
|
const settings = {
|
|
28
19
|
__experimentalFeatures: {
|
|
@@ -44,7 +44,7 @@ describe( 'getTypographyClassesAndStyles', () => {
|
|
|
44
44
|
style: {
|
|
45
45
|
letterSpacing: '22px',
|
|
46
46
|
fontSize:
|
|
47
|
-
'clamp(1.
|
|
47
|
+
'clamp(1.25rem, 1.25rem + ((1vw - 0.2rem) * 0.938), 2rem)',
|
|
48
48
|
textTransform: 'uppercase',
|
|
49
49
|
},
|
|
50
50
|
} );
|
|
@@ -70,7 +70,7 @@ describe( 'getTypographyClassesAndStyles', () => {
|
|
|
70
70
|
style: {
|
|
71
71
|
textDecoration: 'underline',
|
|
72
72
|
fontSize:
|
|
73
|
-
'clamp(1.
|
|
73
|
+
'clamp(1.25rem, 1.25rem + ((1vw - 0.2rem) * 0.938), 2rem)',
|
|
74
74
|
textTransform: 'uppercase',
|
|
75
75
|
},
|
|
76
76
|
} );
|
package/src/hooks/test/utils.js
CHANGED
|
@@ -1,113 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { applyFilters } from '@wordpress/hooks';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* Internal dependencies
|
|
8
3
|
*/
|
|
9
|
-
import '../
|
|
4
|
+
import { cleanEmptyObject } from '../utils';
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
save: noop,
|
|
16
|
-
category: 'text',
|
|
17
|
-
title: 'block title',
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
describe( 'addAttribute()', () => {
|
|
21
|
-
const registerBlockType = applyFilters.bind(
|
|
22
|
-
null,
|
|
23
|
-
'blocks.registerBlockType'
|
|
6
|
+
describe( 'cleanEmptyObject', () => {
|
|
7
|
+
it( 'should remove nested keys', () => {
|
|
8
|
+
expect( cleanEmptyObject( { color: { text: undefined } } ) ).toEqual(
|
|
9
|
+
undefined
|
|
24
10
|
);
|
|
11
|
+
} );
|
|
25
12
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
...blockSettings,
|
|
35
|
-
supports: {
|
|
36
|
-
anchor: true,
|
|
37
|
-
},
|
|
38
|
-
} );
|
|
39
|
-
|
|
40
|
-
expect( settings.attributes ).toHaveProperty( 'anchor' );
|
|
41
|
-
} );
|
|
42
|
-
|
|
43
|
-
it( 'should not override attributes defined in settings', () => {
|
|
44
|
-
const settings = registerBlockType( {
|
|
45
|
-
...blockSettings,
|
|
46
|
-
supports: {
|
|
47
|
-
anchor: true,
|
|
48
|
-
},
|
|
49
|
-
attributes: {
|
|
50
|
-
anchor: {
|
|
51
|
-
type: 'string',
|
|
52
|
-
default: 'testAnchor',
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
} );
|
|
56
|
-
|
|
57
|
-
expect( settings.attributes.anchor ).toEqual( {
|
|
58
|
-
type: 'string',
|
|
59
|
-
default: 'testAnchor',
|
|
60
|
-
} );
|
|
13
|
+
it( 'should remove partial nested keys', () => {
|
|
14
|
+
expect(
|
|
15
|
+
cleanEmptyObject( {
|
|
16
|
+
color: { text: undefined },
|
|
17
|
+
typography: { fontSize: '10px' },
|
|
18
|
+
} )
|
|
19
|
+
).toEqual( {
|
|
20
|
+
typography: { fontSize: '10px' },
|
|
61
21
|
} );
|
|
62
22
|
} );
|
|
63
23
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
24
|
+
it( 'should not remove falsy nested keys', () => {
|
|
25
|
+
expect( cleanEmptyObject( { color: { text: false } } ) ).not.toEqual(
|
|
26
|
+
undefined
|
|
27
|
+
);
|
|
28
|
+
expect( cleanEmptyObject( { color: { text: '' } } ) ).not.toEqual(
|
|
29
|
+
undefined
|
|
68
30
|
);
|
|
69
|
-
|
|
70
|
-
it( 'should do nothing if the block settings do not define anchor support', () => {
|
|
71
|
-
const attributes = { anchor: 'foo' };
|
|
72
|
-
const extraProps = getSaveContentExtraProps(
|
|
73
|
-
{},
|
|
74
|
-
blockSettings,
|
|
75
|
-
attributes
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
expect( extraProps ).not.toHaveProperty( 'id' );
|
|
79
|
-
} );
|
|
80
|
-
|
|
81
|
-
it( 'should inject anchor attribute ID', () => {
|
|
82
|
-
const attributes = { anchor: 'foo' };
|
|
83
|
-
const extraProps = getSaveContentExtraProps(
|
|
84
|
-
{},
|
|
85
|
-
{
|
|
86
|
-
...blockSettings,
|
|
87
|
-
supports: {
|
|
88
|
-
anchor: true,
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
attributes
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
expect( extraProps.id ).toBe( 'foo' );
|
|
95
|
-
} );
|
|
96
|
-
|
|
97
|
-
it( 'should remove an anchor attribute ID when field is cleared', () => {
|
|
98
|
-
const attributes = { anchor: '' };
|
|
99
|
-
const extraProps = getSaveContentExtraProps(
|
|
100
|
-
{},
|
|
101
|
-
{
|
|
102
|
-
...blockSettings,
|
|
103
|
-
supports: {
|
|
104
|
-
anchor: true,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
attributes
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
expect( extraProps.id ).toBe( null );
|
|
111
|
-
} );
|
|
112
31
|
} );
|
|
113
32
|
} );
|
package/src/hooks/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { isEmpty,
|
|
4
|
+
import { isEmpty, get } from 'lodash';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
@@ -14,7 +14,7 @@ import { useMemo } from '@wordpress/element';
|
|
|
14
14
|
*/
|
|
15
15
|
import { useSetting } from '../components';
|
|
16
16
|
import { useSettingsForBlockElement } from '../components/global-styles/hooks';
|
|
17
|
-
import {
|
|
17
|
+
import { setImmutably } from '../utils/object';
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Removed falsy values from nested object.
|
|
@@ -31,9 +31,9 @@ export const cleanEmptyObject = ( object ) => {
|
|
|
31
31
|
return object;
|
|
32
32
|
}
|
|
33
33
|
const cleanedNestedObjects = Object.fromEntries(
|
|
34
|
-
Object.entries(
|
|
35
|
-
( [ , value ] ) =>
|
|
36
|
-
|
|
34
|
+
Object.entries( object )
|
|
35
|
+
.map( ( [ key, value ] ) => [ key, cleanEmptyObject( value ) ] )
|
|
36
|
+
.filter( ( [ , value ] ) => value !== undefined )
|
|
37
37
|
);
|
|
38
38
|
return isEmpty( cleanedNestedObjects ) ? undefined : cleanedNestedObjects;
|
|
39
39
|
};
|
|
@@ -82,7 +82,7 @@ export function transformStyles(
|
|
|
82
82
|
if ( styleValue ) {
|
|
83
83
|
returnBlock = {
|
|
84
84
|
...returnBlock,
|
|
85
|
-
attributes:
|
|
85
|
+
attributes: setImmutably(
|
|
86
86
|
returnBlock.attributes,
|
|
87
87
|
path,
|
|
88
88
|
styleValue
|
|
@@ -150,9 +150,14 @@ export function useBlockSettings( name, parentLayout ) {
|
|
|
150
150
|
const borderWidth = useSetting( 'border.width' );
|
|
151
151
|
const customColorsEnabled = useSetting( 'color.custom' );
|
|
152
152
|
const customColors = useSetting( 'color.palette.custom' );
|
|
153
|
+
const customDuotone = useSetting( 'color.customDuotone' );
|
|
153
154
|
const themeColors = useSetting( 'color.palette.theme' );
|
|
154
155
|
const defaultColors = useSetting( 'color.palette.default' );
|
|
155
156
|
const defaultPalette = useSetting( 'color.defaultPalette' );
|
|
157
|
+
const defaultDuotone = useSetting( 'color.defaultDuotone' );
|
|
158
|
+
const userDuotonePalette = useSetting( 'color.duotone.custom' );
|
|
159
|
+
const themeDuotonePalette = useSetting( 'color.duotone.theme' );
|
|
160
|
+
const defaultDuotonePalette = useSetting( 'color.duotone.default' );
|
|
156
161
|
const userGradientPalette = useSetting( 'color.gradients.custom' );
|
|
157
162
|
const themeGradientPalette = useSetting( 'color.gradients.theme' );
|
|
158
163
|
const defaultGradientPalette = useSetting( 'color.gradients.default' );
|
|
@@ -175,10 +180,17 @@ export function useBlockSettings( name, parentLayout ) {
|
|
|
175
180
|
theme: themeGradientPalette,
|
|
176
181
|
default: defaultGradientPalette,
|
|
177
182
|
},
|
|
183
|
+
duotone: {
|
|
184
|
+
custom: userDuotonePalette,
|
|
185
|
+
theme: themeDuotonePalette,
|
|
186
|
+
default: defaultDuotonePalette,
|
|
187
|
+
},
|
|
178
188
|
defaultGradients,
|
|
179
189
|
defaultPalette,
|
|
190
|
+
defaultDuotone,
|
|
180
191
|
custom: customColorsEnabled,
|
|
181
192
|
customGradient: areCustomGradientsEnabled,
|
|
193
|
+
customDuotone,
|
|
182
194
|
background: isBackgroundEnabled,
|
|
183
195
|
link: isLinkEnabled,
|
|
184
196
|
text: isTextEnabled,
|
|
@@ -245,9 +257,14 @@ export function useBlockSettings( name, parentLayout ) {
|
|
|
245
257
|
borderWidth,
|
|
246
258
|
customColorsEnabled,
|
|
247
259
|
customColors,
|
|
260
|
+
customDuotone,
|
|
248
261
|
themeColors,
|
|
249
262
|
defaultColors,
|
|
250
263
|
defaultPalette,
|
|
264
|
+
defaultDuotone,
|
|
265
|
+
userDuotonePalette,
|
|
266
|
+
themeDuotonePalette,
|
|
267
|
+
defaultDuotonePalette,
|
|
251
268
|
userGradientPalette,
|
|
252
269
|
themeGradientPalette,
|
|
253
270
|
defaultGradientPalette,
|
package/src/layouts/utils.js
CHANGED
|
@@ -83,10 +83,10 @@ export function getBlockGapCSS(
|
|
|
83
83
|
* @return {Object} An object with contextual info per alignment.
|
|
84
84
|
*/
|
|
85
85
|
export function getAlignmentsInfo( layout ) {
|
|
86
|
-
const { contentSize, wideSize } = layout;
|
|
86
|
+
const { contentSize, wideSize, type = 'default' } = layout;
|
|
87
87
|
const alignmentInfo = {};
|
|
88
88
|
const sizeRegex = /^(?!0)\d+(px|em|rem|vw|vh|%)?$/i;
|
|
89
|
-
if ( sizeRegex.test( contentSize ) ) {
|
|
89
|
+
if ( sizeRegex.test( contentSize ) && type === 'constrained' ) {
|
|
90
90
|
// translators: %s: container size (i.e. 600px etc)
|
|
91
91
|
alignmentInfo.none = sprintf( __( 'Max %s wide' ), contentSize );
|
|
92
92
|
}
|
package/src/private-apis.js
CHANGED
|
@@ -6,8 +6,12 @@ import { ExperimentalBlockEditorProvider } from './components/provider';
|
|
|
6
6
|
import { lock } from './lock-unlock';
|
|
7
7
|
import OffCanvasEditor from './components/off-canvas-editor';
|
|
8
8
|
import LeafMoreMenu from './components/off-canvas-editor/leaf-more-menu';
|
|
9
|
+
import ResizableBoxPopover from './components/resizable-box-popover';
|
|
9
10
|
import { ComposedPrivateInserter as PrivateInserter } from './components/inserter';
|
|
10
11
|
import { PrivateListView } from './components/list-view';
|
|
12
|
+
import BlockInfo from './components/block-info-slot-fill';
|
|
13
|
+
import { useShouldContextualToolbarShow } from './utils/use-should-contextual-toolbar-show';
|
|
14
|
+
import { cleanEmptyObject } from './hooks/utils';
|
|
11
15
|
|
|
12
16
|
/**
|
|
13
17
|
* Private @wordpress/block-editor APIs.
|
|
@@ -20,4 +24,8 @@ lock( privateApis, {
|
|
|
20
24
|
OffCanvasEditor,
|
|
21
25
|
PrivateInserter,
|
|
22
26
|
PrivateListView,
|
|
27
|
+
ResizableBoxPopover,
|
|
28
|
+
BlockInfo,
|
|
29
|
+
useShouldContextualToolbarShow,
|
|
30
|
+
cleanEmptyObject,
|
|
23
31
|
} );
|
package/src/store/actions.js
CHANGED
|
@@ -75,7 +75,7 @@ export const resetBlocks =
|
|
|
75
75
|
/**
|
|
76
76
|
* Block validity is a function of blocks state (at the point of a
|
|
77
77
|
* reset) and the template setting. As a compromise to its placement
|
|
78
|
-
* across distinct parts of state, it is implemented here as a side
|
|
78
|
+
* across distinct parts of state, it is implemented here as a side
|
|
79
79
|
* effect of the block reset action.
|
|
80
80
|
*
|
|
81
81
|
* @param {Array} blocks Array of blocks.
|
|
@@ -543,6 +543,9 @@ export function moveBlockToPosition(
|
|
|
543
543
|
/**
|
|
544
544
|
* Action that inserts a single block, optionally at a specific index respective a root block list.
|
|
545
545
|
*
|
|
546
|
+
* Only allowed blocks are inserted. The action may fail silently for blocks that are not allowed or if
|
|
547
|
+
* a templateLock is active on the block list.
|
|
548
|
+
*
|
|
546
549
|
* @param {Object} block Block object to insert.
|
|
547
550
|
* @param {?number} index Index at which block should be inserted.
|
|
548
551
|
* @param {?string} rootClientId Optional root client ID of block list on which to insert.
|
|
@@ -572,12 +575,16 @@ export function insertBlock(
|
|
|
572
575
|
/**
|
|
573
576
|
* Action that inserts an array of blocks, optionally at a specific index respective a root block list.
|
|
574
577
|
*
|
|
578
|
+
* Only allowed blocks are inserted. The action may fail silently for blocks that are not allowed or if
|
|
579
|
+
* a templateLock is active on the block list.
|
|
580
|
+
*
|
|
575
581
|
* @param {Object[]} blocks Block objects to insert.
|
|
576
582
|
* @param {?number} index Index at which block should be inserted.
|
|
577
583
|
* @param {?string} rootClientId Optional root client ID of block list on which to insert.
|
|
578
584
|
* @param {?boolean} updateSelection If true block selection will be updated. If false, block selection will not change. Defaults to true.
|
|
579
585
|
* @param {0|-1|null} initialPosition Initial focus position. Setting it to null prevent focusing the inserted block.
|
|
580
586
|
* @param {?Object} meta Optional Meta values to be passed to the action object.
|
|
587
|
+
*
|
|
581
588
|
* @return {Object} Action object.
|
|
582
589
|
*/
|
|
583
590
|
export const insertBlocks =
|
package/src/style.scss
CHANGED
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
@import "./components/date-format-picker/style.scss";
|
|
27
27
|
@import "./components/duotone-control/style.scss";
|
|
28
28
|
@import "./components/font-appearance-control/style.scss";
|
|
29
|
+
@import "./components/global-styles/style.scss";
|
|
29
30
|
@import "./components/height-control/style.scss";
|
|
30
31
|
@import "./components/image-size-control/style.scss";
|
|
31
32
|
@import "./components/inserter-list-item/style.scss";
|
package/src/utils/object.js
CHANGED
|
@@ -27,7 +27,7 @@ function normalizePath( path ) {
|
|
|
27
27
|
* @return {*} Cloned object, or original literal non-object value.
|
|
28
28
|
*/
|
|
29
29
|
function cloneObject( object ) {
|
|
30
|
-
if ( typeof object === 'object' ) {
|
|
30
|
+
if ( object && typeof object === 'object' ) {
|
|
31
31
|
return {
|
|
32
32
|
...Object.fromEntries(
|
|
33
33
|
Object.entries( object ).map( ( [ key, value ] ) => [
|
|
@@ -42,16 +42,16 @@ function cloneObject( object ) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
45
|
+
* Immutably sets a value inside an object. Like `lodash#set`, but returning a
|
|
46
|
+
* new object. Treats nullish initial values as empty objects. Clones any
|
|
47
|
+
* nested objects.
|
|
48
48
|
*
|
|
49
49
|
* @param {Object} object Object to set a value in.
|
|
50
50
|
* @param {number|string|Array} path Path in the object to modify.
|
|
51
51
|
* @param {*} value New value to set.
|
|
52
52
|
* @return {Object} Cloned object with the new value set.
|
|
53
53
|
*/
|
|
54
|
-
export function
|
|
54
|
+
export function setImmutably( object, path, value ) {
|
|
55
55
|
const normalizedPath = normalizePath( path );
|
|
56
56
|
const newObject = object ? cloneObject( object ) : {};
|
|
57
57
|
|