@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.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 +6 -0
- package/README.md +13 -1
- package/build/components/alignment-control/ui.js +6 -5
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-actions/index.js +5 -9
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +5 -5
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-content-overlay/index.js +2 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +2 -1
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-inspector/index.js +125 -17
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +40 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +14 -11
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -12
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +20 -21
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +1 -7
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +3 -1
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -6
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -6
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +24 -8
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-popover/inbetween.js +58 -16
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +3 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +4 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +3 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +7 -1
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +114 -25
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -8
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +13 -5
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +33 -15
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +4 -9
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +9 -8
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build/components/block-vertical-alignment-control/ui.js +5 -2
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +1 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/iframe/index.js +31 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +1 -7
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/library.js +14 -3
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +21 -8
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/tabs.js +11 -4
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +6 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +36 -5
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block.js +23 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +19 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +8 -4
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +0 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -7
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +1 -1
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -19
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +11 -20
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/text-decoration-control/index.js +1 -1
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +1 -1
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/tool-selector/index.js +6 -11
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-popover/index.js +1 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +7 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +9 -28
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +1 -7
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/hooks/align.js +14 -2
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/color-panel.js +2 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/content-lock-ui.js +145 -0
- package/build/hooks/content-lock-ui.js.map +1 -0
- package/build/hooks/duotone.js +8 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +14 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +11 -9
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/metadata-name.js +55 -0
- package/build/hooks/metadata-name.js.map +1 -0
- package/build/hooks/metadata.js +65 -0
- package/build/hooks/metadata.js.map +1 -0
- package/build/hooks/use-typography-props.js +51 -0
- package/build/hooks/use-typography-props.js.map +1 -0
- package/build/hooks/utils.js +3 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +59 -20
- package/build/layouts/constrained.js.map +1 -1
- package/build/store/actions.js +65 -21
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +39 -18
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +95 -9
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +1 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +6 -5
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-actions/index.js +5 -8
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +5 -5
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +2 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +2 -1
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-inspector/index.js +127 -19
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +41 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -4
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +13 -11
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +7 -12
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +20 -20
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +1 -6
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +3 -1
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -5
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -5
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +24 -7
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +59 -17
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +3 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +4 -2
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +3 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +6 -1
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +9 -8
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +12 -5
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +30 -15
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +4 -9
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +9 -8
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +1 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/iframe/index.js +32 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +1 -6
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/library.js +14 -3
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +20 -8
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/tabs.js +11 -4
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +6 -2
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +37 -6
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block.js +23 -11
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +19 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +8 -4
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +0 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -6
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +1 -1
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +27 -18
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +11 -18
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +1 -1
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +1 -1
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +6 -11
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-popover/index.js +1 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +7 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +9 -28
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +1 -6
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/hooks/align.js +12 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/color-panel.js +2 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +128 -0
- package/build-module/hooks/content-lock-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +6 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +4 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +11 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/metadata-name.js +45 -0
- package/build-module/hooks/metadata-name.js.map +1 -0
- package/build-module/hooks/metadata.js +50 -0
- package/build-module/hooks/metadata.js.map +1 -0
- package/build-module/hooks/use-typography-props.js +38 -0
- package/build-module/hooks/use-typography-props.js.map +1 -0
- package/build-module/hooks/utils.js +4 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +61 -22
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/store/actions.js +58 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +37 -18
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +80 -9
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +1 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +95 -45
- package/build-style/style.css +95 -45
- package/package.json +28 -28
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
- package/src/components/alignment-control/test/index.js +124 -33
- package/src/components/alignment-control/ui.js +8 -3
- package/src/components/block-actions/index.js +9 -8
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
- package/src/components/block-alignment-control/test/index.js +95 -31
- package/src/components/block-alignment-control/ui.js +2 -2
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
- package/src/components/block-compare/test/block-view.js +3 -3
- package/src/components/block-content-overlay/index.js +2 -6
- package/src/components/block-content-overlay/style.scss +24 -3
- package/src/components/block-draggable/draggable-chip.js +4 -1
- package/src/components/block-edit/edit.js +5 -1
- package/src/components/block-edit/test/edit.js +23 -21
- package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
- package/src/components/block-icon/test/index.js +31 -16
- package/src/components/block-inspector/index.js +126 -12
- package/src/components/block-inspector/style.scss +7 -1
- package/src/components/block-list/block.js +53 -13
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/style.scss +39 -12
- package/src/components/block-list/test/block-list-context.native.js +11 -13
- package/src/components/block-list/use-block-props/index.js +10 -10
- package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +11 -13
- package/src/components/block-list-appender/index.js +27 -18
- package/src/components/block-list-appender/index.native.js +3 -6
- package/src/components/block-lock/use-block-lock.js +2 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
- package/src/components/block-mover/button.js +6 -5
- package/src/components/block-mover/index.js +8 -7
- package/src/components/block-mover/index.native.js +20 -13
- package/src/components/block-popover/inbetween.js +85 -21
- package/src/components/block-popover/index.js +3 -2
- package/src/components/block-popover/style.scss +3 -4
- package/src/components/block-preview/auto.js +4 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-settings-menu-controls/README.md +9 -0
- package/src/components/block-settings-menu-controls/index.js +13 -2
- package/src/components/block-styles/preview-panel.js +3 -0
- package/src/components/block-switcher/block-transformations-menu.js +127 -33
- package/src/components/block-switcher/style.scss +4 -2
- package/src/components/block-title/test/index.js +28 -25
- package/src/components/block-toolbar/index.js +27 -17
- package/src/components/block-tools/block-contextual-toolbar.js +10 -3
- package/src/components/block-tools/block-selection-button.js +35 -16
- package/src/components/block-tools/index.js +40 -24
- package/src/components/block-tools/insertion-point.js +3 -7
- package/src/components/block-tools/selected-block-popover.js +9 -7
- package/src/components/block-tools/style.scss +5 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
- package/src/components/block-vertical-alignment-control/test/index.js +92 -23
- package/src/components/block-vertical-alignment-control/ui.js +3 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
- package/src/components/colors/test/with-colors.js +37 -12
- package/src/components/colors-gradients/dropdown.js +1 -1
- package/src/components/contrast-checker/test/index.js +135 -116
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
- package/src/components/default-block-appender/test/index.js +32 -18
- package/src/components/font-sizes/README.MD +9 -0
- package/src/components/iframe/index.js +64 -5
- package/src/components/inner-blocks/README.md +2 -1
- package/src/components/inner-blocks/default-block-appender.js +1 -6
- package/src/components/inner-blocks/index.js +3 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
- package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
- package/src/components/inserter/index.js +2 -8
- package/src/components/inserter/library.js +11 -5
- package/src/components/inserter/menu.js +42 -29
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/stories/fixtures.js +44 -0
- package/src/components/inserter/stories/index.js +90 -0
- package/src/components/inserter/style.scss +21 -27
- package/src/components/inserter/tabs.js +8 -4
- package/src/components/link-control/link-preview.js +5 -3
- package/src/components/link-control/search-input.js +2 -2
- package/src/components/link-control/search-item.js +39 -7
- package/src/components/list-view/block.js +29 -10
- package/src/components/list-view/branch.js +27 -4
- package/src/components/list-view/index.js +8 -3
- package/src/components/list-view/use-block-selection.js +0 -1
- package/src/components/media-placeholder/test/index.js +2 -2
- package/src/components/media-replace-flow/README.md +1 -1
- package/src/components/provider/use-block-sync.js +3 -6
- package/src/components/publish-date-time-picker/index.js +1 -1
- package/src/components/rich-text/index.js +24 -35
- package/src/components/rich-text/index.native.js +8 -21
- package/src/components/text-decoration-control/index.js +1 -1
- package/src/components/text-transform-control/index.js +1 -1
- package/src/components/tool-selector/index.js +9 -11
- package/src/components/url-input/test/button.js +145 -71
- package/src/components/url-popover/index.js +1 -1
- package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
- package/src/components/url-popover/test/index.js +14 -12
- package/src/components/use-block-drop-zone/index.js +15 -4
- package/src/components/use-moving-animation/index.js +9 -24
- package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
- package/src/components/warning/test/index.js +32 -29
- package/src/components/writing-flow/use-select-all.js +4 -6
- package/src/hooks/align.js +22 -13
- package/src/hooks/color-panel.js +2 -1
- package/src/hooks/content-lock-ui.js +161 -0
- package/src/hooks/duotone.js +13 -1
- package/src/hooks/index.js +4 -0
- package/src/hooks/layout.js +25 -19
- package/src/hooks/layout.scss +7 -1
- package/src/hooks/metadata-name.js +48 -0
- package/src/hooks/metadata.js +64 -0
- package/src/hooks/test/use-typography-props.js +28 -0
- package/src/hooks/use-typography-props.js +41 -0
- package/src/hooks/utils.js +2 -11
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +73 -24
- package/src/store/actions.js +45 -4
- package/src/store/reducer.js +33 -21
- package/src/store/selectors.js +98 -19
- package/src/store/test/reducer.js +8 -5
- package/src/utils/parse-css-unit-to-px.js +1 -1
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
|
@@ -92,11 +92,14 @@ function useBlockDropZone() {
|
|
|
92
92
|
rootClientId: targetRootClientId = ''
|
|
93
93
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
94
94
|
const [targetBlockIndex, setTargetBlockIndex] = (0, _element.useState)(null);
|
|
95
|
-
const
|
|
95
|
+
const isDisabled = (0, _data.useSelect)(select => {
|
|
96
96
|
const {
|
|
97
|
-
getTemplateLock
|
|
97
|
+
getTemplateLock,
|
|
98
|
+
__unstableIsWithinBlockOverlay,
|
|
99
|
+
__unstableHasActiveBlockOverlayActive
|
|
98
100
|
} = select(_store.store);
|
|
99
|
-
|
|
101
|
+
const templateLock = getTemplateLock(targetRootClientId);
|
|
102
|
+
return ['all', 'noContent'].some(lock => lock === templateLock) || __unstableHasActiveBlockOverlayActive(targetRootClientId) || __unstableIsWithinBlockOverlay(targetRootClientId);
|
|
100
103
|
}, [targetRootClientId]);
|
|
101
104
|
const {
|
|
102
105
|
getBlockListSettings
|
|
@@ -122,7 +125,7 @@ function useBlockDropZone() {
|
|
|
122
125
|
}
|
|
123
126
|
}, []), 200);
|
|
124
127
|
return (0, _compose.__experimentalUseDropZone)({
|
|
125
|
-
isDisabled
|
|
128
|
+
isDisabled,
|
|
126
129
|
onDrop: onBlockDrop,
|
|
127
130
|
|
|
128
131
|
onDragOver(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"names":["getNearestBlockIndex","elements","position","orientation","allowedEdges","isRightToLeft","candidateIndex","candidateDistance","forEach","element","index","rect","getBoundingClientRect","distance","edge","undefined","isTrailingEdge","offset","useBlockDropZone","rootClientId","targetRootClientId","targetBlockIndex","setTargetBlockIndex","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"names":["getNearestBlockIndex","elements","position","orientation","allowedEdges","isRightToLeft","candidateIndex","candidateDistance","forEach","element","index","rect","getBoundingClientRect","distance","edge","undefined","isTrailingEdge","offset","useBlockDropZone","rootClientId","targetRootClientId","targetBlockIndex","setTargetBlockIndex","isDisabled","select","getTemplateLock","__unstableIsWithinBlockOverlay","__unstableHasActiveBlockOverlayActive","blockEditorStore","templateLock","some","lock","getBlockListSettings","showInsertionPoint","hideInsertionPoint","onBlockDrop","throttled","event","currentTarget","blockElements","Array","from","children","filter","classList","contains","targetIndex","x","clientX","y","clientY","onDrop","onDragOver","onDragLeave","cancel","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useOnBlockDrop from '../use-on-block-drop';\nimport { getDistanceToNearestEdge } from '../../utils/math';\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n\n/**\n * The orientation of a block list.\n *\n * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation\n */\n\n/**\n * Given a list of block DOM elements finds the index that a block should be dropped\n * at.\n *\n * @param {Element[]} elements Array of DOM elements that represent each block in a block list.\n * @param {WPPoint} position The position of the item being dragged.\n * @param {WPBlockListOrientation} orientation The orientation of a block list.\n *\n * @return {number|undefined} The block index that's closest to the drag position.\n */\nexport function getNearestBlockIndex( elements, position, orientation ) {\n\tconst allowedEdges =\n\t\torientation === 'horizontal'\n\t\t\t? [ 'left', 'right' ]\n\t\t\t: [ 'top', 'bottom' ];\n\n\tconst isRightToLeft = isRTL();\n\n\tlet candidateIndex;\n\tlet candidateDistance;\n\n\telements.forEach( ( element, index ) => {\n\t\tconst rect = element.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\tposition,\n\t\t\trect,\n\t\t\tallowedEdges\n\t\t);\n\n\t\tif ( candidateDistance === undefined || distance < candidateDistance ) {\n\t\t\t// If the user is dropping to the trailing edge of the block\n\t\t\t// add 1 to the index to represent dragging after.\n\t\t\t// Take RTL languages into account where the left edge is\n\t\t\t// the trailing edge.\n\t\t\tconst isTrailingEdge =\n\t\t\t\tedge === 'bottom' ||\n\t\t\t\t( ! isRightToLeft && edge === 'right' ) ||\n\t\t\t\t( isRightToLeft && edge === 'left' );\n\t\t\tconst offset = isTrailingEdge ? 1 : 0;\n\n\t\t\t// Update the currently known best candidate.\n\t\t\tcandidateDistance = distance;\n\t\t\tcandidateIndex = index + offset;\n\t\t}\n\t} );\n\n\treturn candidateIndex;\n}\n\n/**\n * @typedef {Object} WPBlockDropZoneConfig\n * @property {string} rootClientId The root client id for the block list.\n */\n\n/**\n * A React hook that can be used to make a block list handle drag and drop.\n *\n * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.\n */\nexport default function useBlockDropZone( {\n\t// An undefined value represents a top-level block. Default to an empty\n\t// string for this so that `targetRootClientId` can be easily compared to\n\t// values returned by the `getRootBlockClientId` selector, which also uses\n\t// an empty string to represent top-level blocks.\n\trootClientId: targetRootClientId = '',\n} = {} ) {\n\tconst [ targetBlockIndex, setTargetBlockIndex ] = useState( null );\n\n\tconst isDisabled = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableIsWithinBlockOverlay,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst templateLock = getTemplateLock( targetRootClientId );\n\t\t\treturn (\n\t\t\t\t[ 'all', 'noContent' ].some(\n\t\t\t\t\t( lock ) => lock === templateLock\n\t\t\t\t) ||\n\t\t\t\t__unstableHasActiveBlockOverlayActive( targetRootClientId ) ||\n\t\t\t\t__unstableIsWithinBlockOverlay( targetRootClientId )\n\t\t\t);\n\t\t},\n\t\t[ targetRootClientId ]\n\t);\n\n\tconst { getBlockListSettings } = useSelect( blockEditorStore );\n\tconst { showInsertionPoint, hideInsertionPoint } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst onBlockDrop = useOnBlockDrop( targetRootClientId, targetBlockIndex );\n\tconst throttled = useThrottle(\n\t\tuseCallback( ( event, currentTarget ) => {\n\t\t\tconst blockElements = Array.from( currentTarget.children ).filter(\n\t\t\t\t// Ensure the element is a block. It should have the `wp-block` class.\n\t\t\t\t( element ) => element.classList.contains( 'wp-block' )\n\t\t\t);\n\t\t\tconst targetIndex = getNearestBlockIndex(\n\t\t\t\tblockElements,\n\t\t\t\t{ x: event.clientX, y: event.clientY },\n\t\t\t\tgetBlockListSettings( targetRootClientId )?.orientation\n\t\t\t);\n\n\t\t\tsetTargetBlockIndex( targetIndex === undefined ? 0 : targetIndex );\n\n\t\t\tif ( targetIndex !== null ) {\n\t\t\t\tshowInsertionPoint( targetRootClientId, targetIndex );\n\t\t\t}\n\t\t}, [] ),\n\t\t200\n\t);\n\n\treturn useDropZone( {\n\t\tisDisabled,\n\t\tonDrop: onBlockDrop,\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget );\n\t\t},\n\t\tonDragLeave() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t\tsetTargetBlockIndex( null );\n\t\t},\n\t} );\n}\n"]}
|
|
@@ -110,56 +110,37 @@ function useMovingAnimation(_ref) {
|
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
ref.current.style.transform =
|
|
113
|
+
ref.current.style.transform = undefined;
|
|
114
114
|
const destination = getAbsolutePosition(ref.current);
|
|
115
115
|
triggerAnimation();
|
|
116
116
|
setTransform({
|
|
117
117
|
x: Math.round(previous.left - destination.left),
|
|
118
118
|
y: Math.round(previous.top - destination.top)
|
|
119
119
|
});
|
|
120
|
-
}, [triggerAnimationOnChange]);
|
|
120
|
+
}, [triggerAnimationOnChange]);
|
|
121
121
|
|
|
122
|
-
function
|
|
122
|
+
function onChange(_ref2) {
|
|
123
123
|
let {
|
|
124
|
-
|
|
125
|
-
y
|
|
124
|
+
value
|
|
126
125
|
} = _ref2;
|
|
127
126
|
|
|
128
127
|
if (!ref.current) {
|
|
129
128
|
return;
|
|
130
129
|
}
|
|
131
130
|
|
|
132
|
-
const isMoving = x === 0 && y === 0;
|
|
133
|
-
ref.current.style.transformOrigin = isMoving ? '' : 'center';
|
|
134
|
-
ref.current.style.transform = isMoving ? '' : `translate3d(${x}px,${y}px,0)`;
|
|
135
|
-
ref.current.style.zIndex = !isSelected || isMoving ? '' : '1';
|
|
136
|
-
preserveScrollPosition();
|
|
137
|
-
} // Called for every frame computed by useSpring.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
function onChange(_ref3) {
|
|
141
|
-
let {
|
|
142
|
-
value
|
|
143
|
-
} = _ref3;
|
|
144
131
|
let {
|
|
145
132
|
x,
|
|
146
133
|
y
|
|
147
134
|
} = value;
|
|
148
135
|
x = Math.round(x);
|
|
149
136
|
y = Math.round(y);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
});
|
|
156
|
-
onChange.x = x;
|
|
157
|
-
onChange.y = y;
|
|
158
|
-
}
|
|
137
|
+
const finishedMoving = x === 0 && y === 0;
|
|
138
|
+
ref.current.style.transformOrigin = 'center center';
|
|
139
|
+
ref.current.style.transform = finishedMoving ? undefined : `translate3d(${x}px,${y}px,0)`;
|
|
140
|
+
ref.current.style.zIndex = isSelected ? '1' : '';
|
|
141
|
+
preserveScrollPosition();
|
|
159
142
|
}
|
|
160
143
|
|
|
161
|
-
onChange.x = 0;
|
|
162
|
-
onChange.y = 0;
|
|
163
144
|
(0, _web.useSpring)({
|
|
164
145
|
from: {
|
|
165
146
|
x: transform.x,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"names":["counterReducer","state","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","isSelected","adjustScrolling","enableAnimation","triggerAnimationOnChange","ref","prefersReducedMotion","triggeredAnimation","triggerAnimation","finishedAnimation","endAnimation","transform","setTransform","x","y","previous","current","preserveScrollPosition","scrollContainer","prevRect","getBoundingClientRect","blockRect","diff","scrollTop","style","destination","Math","round","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"names":["counterReducer","state","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","isSelected","adjustScrolling","enableAnimation","triggerAnimationOnChange","ref","prefersReducedMotion","triggeredAnimation","triggerAnimation","finishedAnimation","endAnimation","transform","setTransform","x","y","previous","current","preserveScrollPosition","scrollContainer","prevRect","getBoundingClientRect","blockRect","diff","scrollTop","style","undefined","destination","Math","round","onChange","value","finishedMoving","transformOrigin","zIndex","from","to","reset","config","mass","tension","friction","immediate"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useSpring } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tuseLayoutEffect,\n\tuseReducer,\n\tuseMemo,\n\tuseRef,\n} from '@wordpress/element';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Simple reducer used to increment a counter.\n *\n * @param {number} state Previous counter value.\n * @return {number} New state value.\n */\nconst counterReducer = ( state ) => state + 1;\n\nconst getAbsolutePosition = ( element ) => {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n};\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {boolean} $1.isSelected Whether it's the current block or not.\n * @param {boolean} $1.adjustScrolling Adjust the scroll position to the current block.\n * @param {boolean} $1.enableAnimation Enable/Disable animation.\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n */\nfunction useMovingAnimation( {\n\tisSelected,\n\tadjustScrolling,\n\tenableAnimation,\n\ttriggerAnimationOnChange,\n} ) {\n\tconst ref = useRef();\n\tconst prefersReducedMotion = useReducedMotion() || ! enableAnimation;\n\tconst [ triggeredAnimation, triggerAnimation ] = useReducer(\n\t\tcounterReducer,\n\t\t0\n\t);\n\tconst [ finishedAnimation, endAnimation ] = useReducer( counterReducer, 0 );\n\tconst [ transform, setTransform ] = useState( { x: 0, y: 0 } );\n\tconst previous = useMemo(\n\t\t() => ( ref.current ? getAbsolutePosition( ref.current ) : null ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\t// Calculate the previous position of the block relative to the viewport and\n\t// return a function to maintain that position by scrolling.\n\tconst preserveScrollPosition = useMemo( () => {\n\t\tif ( ! adjustScrolling || ! ref.current ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\n\t\tif ( ! scrollContainer ) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\tconst prevRect = ref.current.getBoundingClientRect();\n\t\treturn () => {\n\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\tif ( diff ) {\n\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t}\n\t\t};\n\t}, [ triggerAnimationOnChange, adjustScrolling ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( triggeredAnimation ) {\n\t\t\tendAnimation();\n\t\t}\n\t}, [ triggeredAnimation ] );\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( prefersReducedMotion ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\n\t\t\treturn;\n\t\t}\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\ttriggerAnimation();\n\t\tsetTransform( {\n\t\t\tx: Math.round( previous.left - destination.left ),\n\t\t\ty: Math.round( previous.top - destination.top ),\n\t\t} );\n\t}, [ triggerAnimationOnChange ] );\n\n\tfunction onChange( { value } ) {\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tlet { x, y } = value;\n\t\tx = Math.round( x );\n\t\ty = Math.round( y );\n\t\tconst finishedMoving = x === 0 && y === 0;\n\t\tref.current.style.transformOrigin = 'center center';\n\t\tref.current.style.transform = finishedMoving\n\t\t\t? undefined\n\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\tref.current.style.zIndex = isSelected ? '1' : '';\n\n\t\tpreserveScrollPosition();\n\t}\n\n\tuseSpring( {\n\t\tfrom: {\n\t\t\tx: transform.x,\n\t\t\ty: transform.y,\n\t\t},\n\t\tto: {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t},\n\t\treset: triggeredAnimation !== finishedAnimation,\n\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\timmediate: prefersReducedMotion,\n\t\tonChange,\n\t} );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"]}
|
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = useSelectAll;
|
|
7
7
|
|
|
8
|
-
var _lodash = require("lodash");
|
|
9
|
-
|
|
10
8
|
var _dom = require("@wordpress/dom");
|
|
11
9
|
|
|
12
10
|
var _data = require("@wordpress/data");
|
|
@@ -17,10 +15,6 @@ var _compose = require("@wordpress/compose");
|
|
|
17
15
|
|
|
18
16
|
var _store = require("../../store");
|
|
19
17
|
|
|
20
|
-
/**
|
|
21
|
-
* External dependencies
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
18
|
/**
|
|
25
19
|
* WordPress dependencies
|
|
26
20
|
*/
|
|
@@ -66,7 +60,7 @@ function useSelectAll() {
|
|
|
66
60
|
return;
|
|
67
61
|
}
|
|
68
62
|
|
|
69
|
-
multiSelect(
|
|
63
|
+
multiSelect(blockClientIds[0], blockClientIds[blockClientIds.length - 1]);
|
|
70
64
|
}
|
|
71
65
|
|
|
72
66
|
node.addEventListener('keydown', onKeyDown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-select-all.js"],"names":["useSelectAll","getBlockOrder","getSelectedBlockClientIds","getBlockRootClientId","blockEditorStore","multiSelect","selectBlock","isMatch","node","onKeyDown","event","selectedClientIds","length","target","preventDefault","firstSelectedClientId","rootClientId","blockClientIds","ownerDocument","defaultView","getSelection","removeAllRanges","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-select-all.js"],"names":["useSelectAll","getBlockOrder","getSelectedBlockClientIds","getBlockRootClientId","blockEditorStore","multiSelect","selectBlock","isMatch","node","onKeyDown","event","selectedClientIds","length","target","preventDefault","firstSelectedClientId","rootClientId","blockClientIds","ownerDocument","defaultView","getSelection","removeAllRanges","addEventListener","removeEventListener"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,YAAT,GAAwB;AACtC,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA,yBAAjB;AAA4CC,IAAAA;AAA5C,MACL,qBAAWC,YAAX,CADD;AAEA,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAA+B,uBAAaF,YAAb,CAArC;AACA,QAAMG,OAAO,GAAG,yDAAhB;AAEA,SAAO,2BAAgBC,IAAF,IAAY;AAChC,aAASC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,UAAK,CAAEH,OAAO,CAAE,8BAAF,EAAkCG,KAAlC,CAAd,EAA0D;AACzD;AACA;;AAED,YAAMC,iBAAiB,GAAGT,yBAAyB,EAAnD;;AAEA,UACCS,iBAAiB,CAACC,MAAlB,GAA2B,CAA3B,IACA,CAAE,6BAAoBF,KAAK,CAACG,MAA1B,CAFH,EAGE;AACD;AACA;;AAEDH,MAAAA,KAAK,CAACI,cAAN;AAEA,YAAM,CAAEC,qBAAF,IAA4BJ,iBAAlC;AACA,YAAMK,YAAY,GAAGb,oBAAoB,CAAEY,qBAAF,CAAzC;AACA,YAAME,cAAc,GAAGhB,aAAa,CAAEe,YAAF,CAApC,CAlB2B,CAoB3B;AACA;;AACA,UAAKL,iBAAiB,CAACC,MAAlB,KAA6BK,cAAc,CAACL,MAAjD,EAA0D;AACzD,YAAKI,YAAL,EAAoB;AACnBR,UAAAA,IAAI,CAACU,aAAL,CAAmBC,WAAnB,CACEC,YADF,GAEEC,eAFF;AAGAf,UAAAA,WAAW,CAAEU,YAAF,CAAX;AACA;;AACD;AACA;;AAEDX,MAAAA,WAAW,CACVY,cAAc,CAAE,CAAF,CADJ,EAEVA,cAAc,CAAEA,cAAc,CAACL,MAAf,GAAwB,CAA1B,CAFJ,CAAX;AAIA;;AAEDJ,IAAAA,IAAI,CAACc,gBAAL,CAAuB,SAAvB,EAAkCb,SAAlC;AAEA,WAAO,MAAM;AACZD,MAAAA,IAAI,CAACe,mBAAL,CAA0B,SAA1B,EAAqCd,SAArC;AACA,KAFD;AAGA,GA5CM,EA4CJ,EA5CI,CAAP;AA6CA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEntirelySelected } from '@wordpress/dom';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function useSelectAll() {\n\tconst { getBlockOrder, getSelectedBlockClientIds, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { multiSelect, selectBlock } = useDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( ! isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\n\t\t\tif (\n\t\t\t\tselectedClientIds.length < 2 &&\n\t\t\t\t! isEntirelySelected( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst [ firstSelectedClientId ] = selectedClientIds;\n\t\t\tconst rootClientId = getBlockRootClientId( firstSelectedClientId );\n\t\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a\n\t\t\t// level. See: https://github.com/WordPress/gutenberg/pull/31859/\n\t\t\tif ( selectedClientIds.length === blockClientIds.length ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tnode.ownerDocument.defaultView\n\t\t\t\t\t\t.getSelection()\n\t\t\t\t\t\t.removeAllRanges();\n\t\t\t\t\tselectBlock( rootClientId );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ]\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"]}
|
package/build/hooks/align.js
CHANGED
|
@@ -24,10 +24,14 @@ var _hooks = require("@wordpress/hooks");
|
|
|
24
24
|
|
|
25
25
|
var _blocks = require("@wordpress/blocks");
|
|
26
26
|
|
|
27
|
+
var _data = require("@wordpress/data");
|
|
28
|
+
|
|
27
29
|
var _components = require("../components");
|
|
28
30
|
|
|
29
31
|
var _useAvailableAlignments = _interopRequireDefault(require("../components/block-alignment-control/use-available-alignments"));
|
|
30
32
|
|
|
33
|
+
var _store = require("../store");
|
|
34
|
+
|
|
31
35
|
/**
|
|
32
36
|
* External dependencies
|
|
33
37
|
*/
|
|
@@ -132,6 +136,7 @@ function addAttribute(settings) {
|
|
|
132
136
|
|
|
133
137
|
|
|
134
138
|
const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
139
|
+
const blockEdit = (0, _element.createElement)(BlockEdit, props);
|
|
135
140
|
const {
|
|
136
141
|
name: blockName
|
|
137
142
|
} = props; // Compute the block valid alignments by taking into account,
|
|
@@ -146,6 +151,13 @@ const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit =
|
|
|
146
151
|
} = _ref;
|
|
147
152
|
return name;
|
|
148
153
|
});
|
|
154
|
+
const isContentLocked = (0, _data.useSelect)(select => {
|
|
155
|
+
return select(_store.store).__unstableGetContentLockingParent(props.clientId);
|
|
156
|
+
}, [props.clientId]);
|
|
157
|
+
|
|
158
|
+
if (!validAlignments.length || isContentLocked) {
|
|
159
|
+
return blockEdit;
|
|
160
|
+
}
|
|
149
161
|
|
|
150
162
|
const updateAlignment = nextAlign => {
|
|
151
163
|
if (!nextAlign) {
|
|
@@ -164,14 +176,14 @@ const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit =
|
|
|
164
176
|
});
|
|
165
177
|
};
|
|
166
178
|
|
|
167
|
-
return (0, _element.createElement)(_element.Fragment, null,
|
|
179
|
+
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.BlockControls, {
|
|
168
180
|
group: "block",
|
|
169
181
|
__experimentalShareWithChildBlocks: true
|
|
170
182
|
}, (0, _element.createElement)(_components.BlockAlignmentControl, {
|
|
171
183
|
value: props.attributes.align,
|
|
172
184
|
onChange: updateAlignment,
|
|
173
185
|
controls: validAlignments
|
|
174
|
-
})),
|
|
186
|
+
})), blockEdit);
|
|
175
187
|
}, 'withToolbarControls');
|
|
176
188
|
/**
|
|
177
189
|
* Override the default block element to add alignment wrapper props.
|
package/build/hooks/align.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","name","blockName","blockAllowedAlignments","map","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","length","withDataAlign","BlockListBlock","undefined","wrapperProps","some","alignment","addAssignedAlign","isAlignValid","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = [ ...ALL_ALIGNMENTS ];\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.align ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block valid alignments by taking into account,\n\t\t// if the theme supports wide alignments or not and the layout's\n\t\t// availble alignments. We do that for conditionally rendering\n\t\t// Slot.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t).map( ( { name } ) => name );\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType?.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ !! validAlignments.length && (\n\t\t\t\t\t<BlockControls\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t__experimentalShareWithChildBlocks\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\t\tcontrols={ validAlignments }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif (\n\t\t\tvalidAlignments.some( ( alignment ) => alignment.name === align )\n\t\t) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","blockEdit","name","blockName","blockAllowedAlignments","map","isContentLocked","select","blockEditorStore","__unstableGetContentLockingParent","clientId","length","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","withDataAlign","BlockListBlock","undefined","wrapperProps","some","alignment","addAssignedAlign","isAlignValid","className"],"mappings":";;;;;;;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AACA;;AAKA;;AAKA;;AACA;;AACA;;AAvBA;AACA;AACA;;AAIA;AACA;AACA;;AAUA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,CAAE,MAAF,EAAU,QAAV,EAAoB,OAApB,EAA6B,MAA7B,EAAqC,MAArC,CAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAe,GAAG,CAAE,MAAF,EAAU,MAAV,CAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,kBAAT,CACNC,UADM,EAIL;AAAA,MAFDC,mBAEC,uEAFqB,IAErB;AAAA,MADDC,cACC,uEADgB,IAChB;AACD,MAAIC,eAAJ;;AACA,MAAKC,KAAK,CAACC,OAAN,CAAeL,UAAf,CAAL,EAAmC;AAClCG,IAAAA,eAAe,GAAGN,cAAc,CAACS,MAAf,CAAyBC,KAAF,IACxCP,UAAU,CAACQ,QAAX,CAAqBD,KAArB,CADiB,CAAlB;AAGA,GAJD,MAIO,IAAKP,UAAU,KAAK,IAApB,EAA2B;AACjC;AACAG,IAAAA,eAAe,GAAG,CAAE,GAAGN,cAAL,CAAlB;AACA,GAHM,MAGA;AACNM,IAAAA,eAAe,GAAG,EAAlB;AACA;;AAED,MACC,CAAED,cAAF,IACEF,UAAU,KAAK,IAAf,IAAuB,CAAEC,mBAF5B,EAGE;AACD,WAAO,qBAASE,eAAT,EAA0B,GAAGL,eAA7B,CAAP;AACA;;AAED,SAAOK,eAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASM,YAAT,CAAuBC,QAAvB,EAAkC;AAAA;;AACxC;AACA,MAAK,4DAAYA,QAAQ,CAACC,UAArB,yDAAY,qBAAqBC,KAAjC,yEAA0C,EAA1C,CAAL,EAAsD;AACrD,WAAOF,QAAP;AACA;;AACD,MAAK,6BAAiBA,QAAjB,EAA2B,OAA3B,CAAL,EAA4C;AAC3C;AACAA,IAAAA,QAAQ,CAACC,UAAT,GAAsB,EACrB,GAAGD,QAAQ,CAACC,UADS;AAErBC,MAAAA,KAAK,EAAE;AACNC,QAAAA,IAAI,EAAE,QADA;AAEN;AACA;AACAC,QAAAA,IAAI,EAAE,CAAE,GAAGjB,cAAL,EAAqB,EAArB;AAJA;AAFc,KAAtB;AASA;;AAED,SAAOa,QAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMK,mBAAmB,GAAG,yCAChCC,SAAF,IAAmBC,KAAF,IAAa;AAC7B,QAAMC,SAAS,GAAG,4BAAC,SAAD,EAAgBD,KAAhB,CAAlB;AACA,QAAM;AAAEE,IAAAA,IAAI,EAAEC;AAAR,MAAsBH,KAA5B,CAF6B,CAG7B;AACA;AACA;AACA;;AACA,QAAMI,sBAAsB,GAAGtB,kBAAkB,CAChD,6BAAiBqB,SAAjB,EAA4B,OAA5B,CADgD,EAEhD,6BAAiBA,SAAjB,EAA4B,WAA5B,EAAyC,IAAzC,CAFgD,CAAjD;AAKA,QAAMjB,eAAe,GAAG,qCACvBkB,sBADuB,EAEtBC,GAFsB,CAEjB;AAAA,QAAE;AAAEH,MAAAA;AAAF,KAAF;AAAA,WAAgBA,IAAhB;AAAA,GAFiB,CAAxB;AAGA,QAAMI,eAAe,GAAG,qBACrBC,MAAF,IAAc;AACb,WAAOA,MAAM,CACZC,YADY,CAAN,CAELC,iCAFK,CAE8BT,KAAK,CAACU,QAFpC,CAAP;AAGA,GALsB,EAMvB,CAAEV,KAAK,CAACU,QAAR,CANuB,CAAxB;;AAQA,MAAK,CAAExB,eAAe,CAACyB,MAAlB,IAA4BL,eAAjC,EAAmD;AAClD,WAAOL,SAAP;AACA;;AAED,QAAMW,eAAe,GAAKC,SAAF,IAAiB;AACxC,QAAK,CAAEA,SAAP,EAAmB;AAAA;;AAClB,YAAMC,SAAS,GAAG,0BAAcd,KAAK,CAACE,IAApB,CAAlB;AACA,YAAMa,iBAAiB,GAAGD,SAAH,aAAGA,SAAH,gDAAGA,SAAS,CAAEpB,UAAd,oFAAG,sBAAuBC,KAA1B,2DAAG,uBAA8BqB,OAAxD;;AACA,UAAKD,iBAAL,EAAyB;AACxBF,QAAAA,SAAS,GAAG,EAAZ;AACA;AACD;;AACDb,IAAAA,KAAK,CAACiB,aAAN,CAAqB;AAAEtB,MAAAA,KAAK,EAAEkB;AAAT,KAArB;AACA,GATD;;AAWA,SACC,qDACC,4BAAC,yBAAD;AAAe,IAAA,KAAK,EAAC,OAArB;AAA6B,IAAA,kCAAkC;AAA/D,KACC,4BAAC,iCAAD;AACC,IAAA,KAAK,EAAGb,KAAK,CAACN,UAAN,CAAiBC,KAD1B;AAEC,IAAA,QAAQ,EAAGiB,eAFZ;AAGC,IAAA,QAAQ,EAAG1B;AAHZ,IADD,CADD,EAQGe,SARH,CADD;AAYA,CAnDiC,EAoDlC,qBApDkC,CAA5B;AAuDP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMiB,aAAa,GAAG,yCAC1BC,cAAF,IAAwBnB,KAAF,IAAa;AAClC,QAAM;AAAEE,IAAAA,IAAF;AAAQR,IAAAA;AAAR,MAAuBM,KAA7B;AACA,QAAM;AAAEL,IAAAA;AAAF,MAAYD,UAAlB;AACA,QAAMU,sBAAsB,GAAGtB,kBAAkB,CAChD,6BAAiBoB,IAAjB,EAAuB,OAAvB,CADgD,EAEhD,6BAAiBA,IAAjB,EAAuB,WAAvB,EAAoC,IAApC,CAFgD,CAAjD;AAIA,QAAMhB,eAAe,GAAG,qCACvBkB,sBADuB,CAAxB,CAPkC,CAWlC;AACA;;AACA,MAAKT,KAAK,KAAKyB,SAAf,EAA2B;AAC1B,WAAO,4BAAC,cAAD,EAAqBpB,KAArB,CAAP;AACA;;AAED,MAAIqB,YAAY,GAAGrB,KAAK,CAACqB,YAAzB;;AACA,MACCnC,eAAe,CAACoC,IAAhB,CAAwBC,SAAF,IAAiBA,SAAS,CAACrB,IAAV,KAAmBP,KAA1D,CADD,EAEE;AACD0B,IAAAA,YAAY,GAAG,EAAE,GAAGA,YAAL;AAAmB,oBAAc1B;AAAjC,KAAf;AACA;;AAED,SAAO,4BAAC,cAAD,6BAAqBK,KAArB;AAA6B,IAAA,YAAY,EAAGqB;AAA5C,KAAP;AACA,CA1B2B,CAAtB;AA6BP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASG,gBAAT,CAA2BxB,KAA3B,EAAkCc,SAAlC,EAA6CpB,UAA7C,EAA0D;AAChE,QAAM;AAAEC,IAAAA;AAAF,MAAYD,UAAlB;AACA,QAAMX,UAAU,GAAG,6BAAiB+B,SAAjB,EAA4B,OAA5B,CAAnB;AACA,QAAM9B,mBAAmB,GAAG,6BAAiB8B,SAAjB,EAA4B,WAA5B,EAAyC,IAAzC,CAA5B,CAHgE,CAKhE;AACA;AACA;;AACA,QAAMW,YAAY,GAAG3C,kBAAkB,CACtCC,UADsC,EAEtCC,mBAFsC,CAAlB,CAGnBO,QAHmB,CAGTI,KAHS,CAArB;;AAIA,MAAK8B,YAAL,EAAoB;AACnBzB,IAAAA,KAAK,CAAC0B,SAAN,GAAkB,yBAAa,QAAQ/B,KAAO,EAA5B,EAA+BK,KAAK,CAAC0B,SAArC,CAAlB;AACA;;AAED,SAAO1B,KAAP;AACA;;AAED,sBACC,0BADD,EAEC,yBAFD,EAGCR,YAHD;AAKA,sBACC,uBADD,EAEC,mCAFD,EAGC0B,aAHD;AAKA,sBACC,kBADD,EAEC,yCAFD,EAGCpB,mBAHD;AAKA,sBACC,kCADD,EAEC,6BAFD,EAGC0B,gBAHD","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\nimport { store as blockEditorStore } from '../store';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = [ ...ALL_ALIGNMENTS ];\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.align ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst blockEdit = <BlockEdit { ...props } />;\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block valid alignments by taking into account,\n\t\t// if the theme supports wide alignments or not and the layout's\n\t\t// availble alignments. We do that for conditionally rendering\n\t\t// Slot.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t).map( ( { name } ) => name );\n\t\tconst isContentLocked = useSelect(\n\t\t\t( select ) => {\n\t\t\t\treturn select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).__unstableGetContentLockingParent( props.clientId );\n\t\t\t},\n\t\t\t[ props.clientId ]\n\t\t);\n\t\tif ( ! validAlignments.length || isContentLocked ) {\n\t\t\treturn blockEdit;\n\t\t}\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType?.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\tcontrols={ validAlignments }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t\t{ blockEdit }\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif (\n\t\t\tvalidAlignments.some( ( alignment ) => alignment.name === align )\n\t\t) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
|
|
@@ -43,10 +43,11 @@ function ColorPanel(_ref) {
|
|
|
43
43
|
const [detectedColor, setDetectedColor] = (0, _element.useState)();
|
|
44
44
|
const [detectedLinkColor, setDetectedLinkColor] = (0, _element.useState)();
|
|
45
45
|
const ref = (0, _useBlockRefs.__unstableUseBlockRef)(clientId);
|
|
46
|
+
const definedColors = settings.filter(setting => setting === null || setting === void 0 ? void 0 : setting.colorValue);
|
|
46
47
|
(0, _element.useEffect)(() => {
|
|
47
48
|
var _ref$current;
|
|
48
49
|
|
|
49
|
-
if (!enableContrastChecking) {
|
|
50
|
+
if (!enableContrastChecking || !definedColors.length) {
|
|
50
51
|
return;
|
|
51
52
|
}
|
|
52
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","enableAlpha","settings","clientId","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","detectedLinkColor","setDetectedLinkColor","ref","current","color","firstLinkElement","querySelector","innerText","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","colorGradientSettings"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAZA;AACA;AACA;;AAGA;AACA;AACA;AAOA,SAASA,gBAAT,CAA2BC,IAA3B,EAAkC;AACjC,SAAOA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BH,gBAA/B,CAAiDC,IAAjD,CAAP;AACA;;AAEc,SAASG,UAAT,OAKX;AAAA,MALgC;AACnCC,IAAAA,WAAW,GAAG,KADqB;AAEnCC,IAAAA,QAFmC;AAGnCC,IAAAA,QAHmC;AAInCC,IAAAA,sBAAsB,GAAG;AAJU,GAKhC;AACH,QAAM,CAAEC,uBAAF,EAA2BC,0BAA3B,IAA0D,wBAAhE;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AACA,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,wBAApD;AACA,QAAMC,GAAG,GAAG,yCAAaR,QAAb,CAAZ;AAEA,0BAAW,MAAM;AAAA;;AAChB,QAAK,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","enableAlpha","settings","clientId","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","detectedLinkColor","setDetectedLinkColor","ref","definedColors","filter","setting","colorValue","length","current","color","firstLinkElement","querySelector","innerText","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE","colorGradientSettings"],"mappings":";;;;;;;;;AAGA;;;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAZA;AACA;AACA;;AAGA;AACA;AACA;AAOA,SAASA,gBAAT,CAA2BC,IAA3B,EAAkC;AACjC,SAAOA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BH,gBAA/B,CAAiDC,IAAjD,CAAP;AACA;;AAEc,SAASG,UAAT,OAKX;AAAA,MALgC;AACnCC,IAAAA,WAAW,GAAG,KADqB;AAEnCC,IAAAA,QAFmC;AAGnCC,IAAAA,QAHmC;AAInCC,IAAAA,sBAAsB,GAAG;AAJU,GAKhC;AACH,QAAM,CAAEC,uBAAF,EAA2BC,0BAA3B,IAA0D,wBAAhE;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AACA,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,wBAApD;AACA,QAAMC,GAAG,GAAG,yCAAaR,QAAb,CAAZ;AACA,QAAMS,aAAa,GAAGV,QAAQ,CAACW,MAAT,CAAmBC,OAAF,IAAeA,OAAf,aAAeA,OAAf,uBAAeA,OAAO,CAAEC,UAAzC,CAAtB;AAEA,0BAAW,MAAM;AAAA;;AAChB,QAAK,CAAEX,sBAAF,IAA4B,CAAEQ,aAAa,CAACI,MAAjD,EAA0D;AACzD;AACA;;AAED,QAAK,CAAEL,GAAG,CAACM,OAAX,EAAqB;AACpB;AACA;;AACDT,IAAAA,gBAAgB,CAAEZ,gBAAgB,CAAEe,GAAG,CAACM,OAAN,CAAhB,CAAgCC,KAAlC,CAAhB;AAEA,UAAMC,gBAAgB,mBAAGR,GAAG,CAACM,OAAP,iDAAG,aAAaG,aAAb,CAA4B,GAA5B,CAAzB;;AACA,QAAKD,gBAAgB,IAAI,CAAC,CAAEA,gBAAgB,CAACE,SAA7C,EAAyD;AACxDX,MAAAA,oBAAoB,CAAEd,gBAAgB,CAAEuB,gBAAF,CAAhB,CAAqCD,KAAvC,CAApB;AACA;;AAED,QAAII,mBAAmB,GAAGX,GAAG,CAACM,OAA9B;AACA,QAAIM,eAAe,GAClB3B,gBAAgB,CAAE0B,mBAAF,CAAhB,CAAwCC,eADzC;;AAEA,WACCA,eAAe,KAAK,kBAApB,IACAD,mBAAmB,CAACE,UADpB,IAEAF,mBAAmB,CAACE,UAApB,CAA+BC,QAA/B,KACCH,mBAAmB,CAACE,UAApB,CAA+BE,YAJjC,EAKE;AACDJ,MAAAA,mBAAmB,GAAGA,mBAAmB,CAACE,UAA1C;AACAD,MAAAA,eAAe,GACd3B,gBAAgB,CAAE0B,mBAAF,CAAhB,CAAwCC,eADzC;AAEA;;AAEDjB,IAAAA,0BAA0B,CAAEiB,eAAF,CAA1B;AACA,GA9BD;AAgCA,QAAMI,qBAAqB,GAAG,mDAA9B;AAEA,SACC,4BAAC,0BAAD;AAAmB,IAAA,mBAAmB,EAAC;AAAvC,KACC,4BAAC,iBAAD;AACC,IAAA,WAAW,EAAG1B,WADf;AAEC,IAAA,OAAO,EAAGE,QAFX;AAGC,IAAA,QAAQ,EAAGD,QAHZ;AAIC,IAAA,yBAAyB,EAAG,KAJ7B;AAKC,IAAA,gCAAgC,MALjC;AAMC,IAAA,iCAAiC;AANlC,KAOMyB,qBAPN,EADD,EAUGvB,sBAAsB,IACvB,4BAAC,wBAAD;AACC,IAAA,eAAe,EAAGC,uBADnB;AAEC,IAAA,SAAS,EAAGE,aAFb;AAGC,IAAA,kBAAkB,EAAGN,WAHtB;AAIC,IAAA,SAAS,EAAGQ;AAJb,IAXF,CADD;AAqBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ColorGradientSettingsDropdown from '../components/colors-gradients/dropdown';\nimport ContrastChecker from '../components/contrast-checker';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport default function ColorPanel( {\n\tenableAlpha = false,\n\tsettings,\n\tclientId,\n\tenableContrastChecking = true,\n} ) {\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst [ detectedLinkColor, setDetectedLinkColor ] = useState();\n\tconst ref = useBlockRef( clientId );\n\tconst definedColors = settings.filter( ( setting ) => setting?.colorValue );\n\n\tuseEffect( () => {\n\t\tif ( ! enableContrastChecking || ! definedColors.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tsetDetectedColor( getComputedStyle( ref.current ).color );\n\n\t\tconst firstLinkElement = ref.current?.querySelector( 'a' );\n\t\tif ( firstLinkElement && !! firstLinkElement.innerText ) {\n\t\t\tsetDetectedLinkColor( getComputedStyle( firstLinkElement ).color );\n\t\t}\n\n\t\tlet backgroundColorNode = ref.current;\n\t\tlet backgroundColor =\n\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\twhile (\n\t\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\t\tbackgroundColorNode.parentNode &&\n\t\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t\t) {\n\t\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\t\tbackgroundColor =\n\t\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t\t}\n\n\t\tsetDetectedBackgroundColor( backgroundColor );\n\t} );\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\tpanelId={ clientId }\n\t\t\t\tsettings={ settings }\n\t\t\t\t__experimentalIsItemGroup={ false }\n\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t{ ...colorGradientSettings }\n\t\t\t/>\n\t\t\t{ enableContrastChecking && (\n\t\t\t\t<ContrastChecker\n\t\t\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\t\t\ttextColor={ detectedColor }\n\t\t\t\t\tenableAlphaChecker={ enableAlpha }\n\t\t\t\t\tlinkColor={ detectedLinkColor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.withBlockControls = void 0;
|
|
9
|
+
|
|
10
|
+
var _element = require("@wordpress/element");
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _components = require("@wordpress/components");
|
|
15
|
+
|
|
16
|
+
var _compose = require("@wordpress/compose");
|
|
17
|
+
|
|
18
|
+
var _data = require("@wordpress/data");
|
|
19
|
+
|
|
20
|
+
var _hooks = require("@wordpress/hooks");
|
|
21
|
+
|
|
22
|
+
var _i18n = require("@wordpress/i18n");
|
|
23
|
+
|
|
24
|
+
var _store = require("../store");
|
|
25
|
+
|
|
26
|
+
var _components2 = require("../components");
|
|
27
|
+
|
|
28
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* WordPress dependencies
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Internal dependencies
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* External dependencies
|
|
40
|
+
*/
|
|
41
|
+
function StopEditingAsBlocksOnOutsideSelect(_ref) {
|
|
42
|
+
let {
|
|
43
|
+
clientId,
|
|
44
|
+
stopEditingAsBlock
|
|
45
|
+
} = _ref;
|
|
46
|
+
const isBlockOrDescendantSelected = (0, _data.useSelect)(select => {
|
|
47
|
+
const {
|
|
48
|
+
isBlockSelected,
|
|
49
|
+
hasSelectedInnerBlock
|
|
50
|
+
} = select(_store.store);
|
|
51
|
+
return isBlockSelected(clientId) || hasSelectedInnerBlock(clientId, true);
|
|
52
|
+
}, [clientId]);
|
|
53
|
+
(0, _element.useEffect)(() => {
|
|
54
|
+
if (!isBlockOrDescendantSelected) {
|
|
55
|
+
stopEditingAsBlock();
|
|
56
|
+
}
|
|
57
|
+
}, [isBlockOrDescendantSelected]);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const withBlockControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
62
|
+
const {
|
|
63
|
+
getBlockListSettings,
|
|
64
|
+
getSettings
|
|
65
|
+
} = (0, _data.useSelect)(_store.store);
|
|
66
|
+
const focusModeToRevert = (0, _element.useRef)();
|
|
67
|
+
const {
|
|
68
|
+
templateLock,
|
|
69
|
+
isLockedByParent,
|
|
70
|
+
isEditingAsBlocks
|
|
71
|
+
} = (0, _data.useSelect)(select => {
|
|
72
|
+
const {
|
|
73
|
+
__unstableGetContentLockingParent,
|
|
74
|
+
getTemplateLock,
|
|
75
|
+
__unstableGetTemporarilyEditingAsBlocks
|
|
76
|
+
} = select(_store.store);
|
|
77
|
+
return {
|
|
78
|
+
templateLock: getTemplateLock(props.clientId),
|
|
79
|
+
isLockedByParent: !!__unstableGetContentLockingParent(props.clientId),
|
|
80
|
+
isEditingAsBlocks: __unstableGetTemporarilyEditingAsBlocks() === props.clientId
|
|
81
|
+
};
|
|
82
|
+
}, [props.clientId]);
|
|
83
|
+
const {
|
|
84
|
+
updateSettings,
|
|
85
|
+
updateBlockListSettings,
|
|
86
|
+
__unstableSetTemporarilyEditingAsBlocks
|
|
87
|
+
} = (0, _data.useDispatch)(_store.store);
|
|
88
|
+
const isContentLocked = !isLockedByParent && templateLock === 'noContent';
|
|
89
|
+
const {
|
|
90
|
+
__unstableMarkNextChangeAsNotPersistent,
|
|
91
|
+
updateBlockAttributes
|
|
92
|
+
} = (0, _data.useDispatch)(_store.store);
|
|
93
|
+
const stopEditingAsBlock = (0, _element.useCallback)(() => {
|
|
94
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
95
|
+
|
|
96
|
+
updateBlockAttributes(props.clientId, {
|
|
97
|
+
templateLock: 'noContent'
|
|
98
|
+
});
|
|
99
|
+
updateBlockListSettings(props.clientId, { ...getBlockListSettings(props.clientId),
|
|
100
|
+
templateLock: 'noContent'
|
|
101
|
+
});
|
|
102
|
+
updateSettings({
|
|
103
|
+
focusMode: focusModeToRevert.current
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
__unstableSetTemporarilyEditingAsBlocks();
|
|
107
|
+
}, [props.clientId, focusModeToRevert, updateSettings, updateBlockListSettings, getBlockListSettings, __unstableMarkNextChangeAsNotPersistent, updateBlockAttributes, __unstableSetTemporarilyEditingAsBlocks]);
|
|
108
|
+
|
|
109
|
+
if (!isContentLocked && !isEditingAsBlocks) {
|
|
110
|
+
return (0, _element.createElement)(BlockEdit, props);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return (0, _element.createElement)(_element.Fragment, null, isEditingAsBlocks && !isContentLocked && (0, _element.createElement)(StopEditingAsBlocksOnOutsideSelect, {
|
|
114
|
+
clientId: props.clientId,
|
|
115
|
+
stopEditingAsBlock: stopEditingAsBlock
|
|
116
|
+
}), (0, _element.createElement)(_components2.BlockControls, {
|
|
117
|
+
group: "other"
|
|
118
|
+
}, (0, _element.createElement)(_components.ToolbarButton, {
|
|
119
|
+
onClick: () => {
|
|
120
|
+
if (isEditingAsBlocks && !isContentLocked) {
|
|
121
|
+
stopEditingAsBlock();
|
|
122
|
+
} else {
|
|
123
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
124
|
+
|
|
125
|
+
updateBlockAttributes(props.clientId, {
|
|
126
|
+
templateLock: undefined
|
|
127
|
+
});
|
|
128
|
+
updateBlockListSettings(props.clientId, { ...getBlockListSettings(props.clientId),
|
|
129
|
+
templateLock: false
|
|
130
|
+
});
|
|
131
|
+
focusModeToRevert.current = getSettings().focusMode;
|
|
132
|
+
updateSettings({
|
|
133
|
+
focusMode: true
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
__unstableSetTemporarilyEditingAsBlocks(props.clientId);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}, isEditingAsBlocks && !isContentLocked ? (0, _i18n.__)('Done') : (0, _i18n.__)('Modify'))), (0, _element.createElement)(BlockEdit, (0, _extends2.default)({}, props, {
|
|
140
|
+
className: (0, _classnames.default)(props.className, isEditingAsBlocks && 'is-content-locked-editing-as-blocks')
|
|
141
|
+
})));
|
|
142
|
+
}, 'withToolbarControls');
|
|
143
|
+
exports.withBlockControls = withBlockControls;
|
|
144
|
+
(0, _hooks.addFilter)('editor.BlockEdit', 'core/style/with-block-controls', withBlockControls);
|
|
145
|
+
//# sourceMappingURL=content-lock-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/content-lock-ui.js"],"names":["StopEditingAsBlocksOnOutsideSelect","clientId","stopEditingAsBlock","isBlockOrDescendantSelected","select","isBlockSelected","hasSelectedInnerBlock","blockEditorStore","withBlockControls","BlockEdit","props","getBlockListSettings","getSettings","focusModeToRevert","templateLock","isLockedByParent","isEditingAsBlocks","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","updateSettings","updateBlockListSettings","__unstableSetTemporarilyEditingAsBlocks","isContentLocked","__unstableMarkNextChangeAsNotPersistent","updateBlockAttributes","focusMode","current","undefined","className"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AAIA;;AAlBA;AACA;AACA;;AAQA;AACA;AACA;;AAGA;AACA;AACA;AAGA,SAASA,kCAAT,OAGI;AAAA,MAHyC;AAC5CC,IAAAA,QAD4C;AAE5CC,IAAAA;AAF4C,GAGzC;AACH,QAAMC,2BAA2B,GAAG,qBACjCC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QACLF,MAAM,CAAEG,YAAF,CADP;AAEA,WACCF,eAAe,CAAEJ,QAAF,CAAf,IACAK,qBAAqB,CAAEL,QAAF,EAAY,IAAZ,CAFtB;AAIA,GARkC,EASnC,CAAEA,QAAF,CATmC,CAApC;AAWA,0BAAW,MAAM;AAChB,QAAK,CAAEE,2BAAP,EAAqC;AACpCD,MAAAA,kBAAkB;AAClB;AACD,GAJD,EAIG,CAAEC,2BAAF,CAJH;AAKA,SAAO,IAAP;AACA;;AAEM,MAAMK,iBAAiB,GAAG,yCAC9BC,SAAF,IAAmBC,KAAF,IAAa;AAC7B,QAAM;AAAEC,IAAAA,oBAAF;AAAwBC,IAAAA;AAAxB,MACL,qBAAWL,YAAX,CADD;AAEA,QAAMM,iBAAiB,GAAG,sBAA1B;AACA,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,gBAAhB;AAAkCC,IAAAA;AAAlC,MAAwD,qBAC3DZ,MAAF,IAAc;AACb,UAAM;AACLa,MAAAA,iCADK;AAELC,MAAAA,eAFK;AAGLC,MAAAA;AAHK,QAIFf,MAAM,CAAEG,YAAF,CAJV;AAKA,WAAO;AACNO,MAAAA,YAAY,EAAEI,eAAe,CAAER,KAAK,CAACT,QAAR,CADvB;AAENc,MAAAA,gBAAgB,EAAE,CAAC,CAAEE,iCAAiC,CACrDP,KAAK,CAACT,QAD+C,CAFhD;AAKNe,MAAAA,iBAAiB,EAChBG,uCAAuC,OACvCT,KAAK,CAACT;AAPD,KAAP;AASA,GAhB4D,EAiB7D,CAAES,KAAK,CAACT,QAAR,CAjB6D,CAA9D;AAoBA,QAAM;AACLmB,IAAAA,cADK;AAELC,IAAAA,uBAFK;AAGLC,IAAAA;AAHK,MAIF,uBAAaf,YAAb,CAJJ;AAKA,QAAMgB,eAAe,GACpB,CAAER,gBAAF,IAAsBD,YAAY,KAAK,WADxC;AAEA,QAAM;AACLU,IAAAA,uCADK;AAELC,IAAAA;AAFK,MAGF,uBAAalB,YAAb,CAHJ;AAKA,QAAML,kBAAkB,GAAG,0BAAa,MAAM;AAC7CsB,IAAAA,uCAAuC;;AACvCC,IAAAA,qBAAqB,CAAEf,KAAK,CAACT,QAAR,EAAkB;AACtCa,MAAAA,YAAY,EAAE;AADwB,KAAlB,CAArB;AAGAO,IAAAA,uBAAuB,CAAEX,KAAK,CAACT,QAAR,EAAkB,EACxC,GAAGU,oBAAoB,CAAED,KAAK,CAACT,QAAR,CADiB;AAExCa,MAAAA,YAAY,EAAE;AAF0B,KAAlB,CAAvB;AAIAM,IAAAA,cAAc,CAAE;AAAEM,MAAAA,SAAS,EAAEb,iBAAiB,CAACc;AAA/B,KAAF,CAAd;;AACAL,IAAAA,uCAAuC;AACvC,GAX0B,EAWxB,CACFZ,KAAK,CAACT,QADJ,EAEFY,iBAFE,EAGFO,cAHE,EAIFC,uBAJE,EAKFV,oBALE,EAMFa,uCANE,EAOFC,qBAPE,EAQFH,uCARE,CAXwB,CAA3B;;AAsBA,MAAK,CAAEC,eAAF,IAAqB,CAAEP,iBAA5B,EAAgD;AAC/C,WAAO,4BAAC,SAAD,EAAgBN,KAAhB,CAAP;AACA;;AAED,SACC,qDACGM,iBAAiB,IAAI,CAAEO,eAAvB,IACD,4BAAC,kCAAD;AACC,IAAA,QAAQ,EAAGb,KAAK,CAACT,QADlB;AAEC,IAAA,kBAAkB,EAAGC;AAFtB,IAFF,EAOC,4BAAC,0BAAD;AAAe,IAAA,KAAK,EAAC;AAArB,KACC,4BAAC,yBAAD;AACC,IAAA,OAAO,EAAG,MAAM;AACf,UAAKc,iBAAiB,IAAI,CAAEO,eAA5B,EAA8C;AAC7CrB,QAAAA,kBAAkB;AAClB,OAFD,MAEO;AACNsB,QAAAA,uCAAuC;;AACvCC,QAAAA,qBAAqB,CAAEf,KAAK,CAACT,QAAR,EAAkB;AACtCa,UAAAA,YAAY,EAAEc;AADwB,SAAlB,CAArB;AAGAP,QAAAA,uBAAuB,CAAEX,KAAK,CAACT,QAAR,EAAkB,EACxC,GAAGU,oBAAoB,CAAED,KAAK,CAACT,QAAR,CADiB;AAExCa,UAAAA,YAAY,EAAE;AAF0B,SAAlB,CAAvB;AAIAD,QAAAA,iBAAiB,CAACc,OAAlB,GACCf,WAAW,GAAGc,SADf;AAEAN,QAAAA,cAAc,CAAE;AAAEM,UAAAA,SAAS,EAAE;AAAb,SAAF,CAAd;;AACAJ,QAAAA,uCAAuC,CACtCZ,KAAK,CAACT,QADgC,CAAvC;AAGA;AACD;AApBF,KAsBGe,iBAAiB,IAAI,CAAEO,eAAvB,GACC,cAAI,MAAJ,CADD,GAEC,cAAI,QAAJ,CAxBJ,CADD,CAPD,EAmCC,4BAAC,SAAD,6BACMb,KADN;AAEC,IAAA,SAAS,EAAG,yBACXA,KAAK,CAACmB,SADK,EAEXb,iBAAiB,IAChB,qCAHU;AAFb,KAnCD,CADD;AA8CA,CA7G+B,EA8GhC,qBA9GgC,CAA1B;;AAiHP,sBACC,kBADD,EAEC,gCAFD,EAGCR,iBAHD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { BlockControls } from '../components';\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nfunction StopEditingAsBlocksOnOutsideSelect( {\n\tclientId,\n\tstopEditingAsBlock,\n} ) {\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingAsBlock();\n\t\t}\n\t}, [ isBlockOrDescendantSelected ] );\n\treturn null;\n}\n\nexport const withBlockControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { getBlockListSettings, getSettings } =\n\t\t\tuseSelect( blockEditorStore );\n\t\tconst focusModeToRevert = useRef();\n\t\tconst { templateLock, isLockedByParent, isEditingAsBlocks } = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\t\tgetTemplateLock,\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\treturn {\n\t\t\t\t\ttemplateLock: getTemplateLock( props.clientId ),\n\t\t\t\t\tisLockedByParent: !! __unstableGetContentLockingParent(\n\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t),\n\t\t\t\t\tisEditingAsBlocks:\n\t\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() ===\n\t\t\t\t\t\tprops.clientId,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ props.clientId ]\n\t\t);\n\n\t\tconst {\n\t\t\tupdateSettings,\n\t\t\tupdateBlockListSettings,\n\t\t\t__unstableSetTemporarilyEditingAsBlocks,\n\t\t} = useDispatch( blockEditorStore );\n\t\tconst isContentLocked =\n\t\t\t! isLockedByParent && templateLock === 'noContent';\n\t\tconst {\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t\tupdateBlockAttributes,\n\t\t} = useDispatch( blockEditorStore );\n\n\t\tconst stopEditingAsBlock = useCallback( () => {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( props.clientId, {\n\t\t\t\ttemplateLock: 'noContent',\n\t\t\t} );\n\t\t\tupdateBlockListSettings( props.clientId, {\n\t\t\t\t...getBlockListSettings( props.clientId ),\n\t\t\t\ttemplateLock: 'noContent',\n\t\t\t} );\n\t\t\tupdateSettings( { focusMode: focusModeToRevert.current } );\n\t\t\t__unstableSetTemporarilyEditingAsBlocks();\n\t\t}, [\n\t\t\tprops.clientId,\n\t\t\tfocusModeToRevert,\n\t\t\tupdateSettings,\n\t\t\tupdateBlockListSettings,\n\t\t\tgetBlockListSettings,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t\tupdateBlockAttributes,\n\t\t\t__unstableSetTemporarilyEditingAsBlocks,\n\t\t] );\n\n\t\tif ( ! isContentLocked && ! isEditingAsBlocks ) {\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ isEditingAsBlocks && ! isContentLocked && (\n\t\t\t\t\t<StopEditingAsBlocksOnOutsideSelect\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\tstopEditingAsBlock={ stopEditingAsBlock }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( isEditingAsBlocks && ! isContentLocked ) {\n\t\t\t\t\t\t\t\tstopEditingAsBlock();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\t\tupdateBlockAttributes( props.clientId, {\n\t\t\t\t\t\t\t\t\ttemplateLock: undefined,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tupdateBlockListSettings( props.clientId, {\n\t\t\t\t\t\t\t\t\t...getBlockListSettings( props.clientId ),\n\t\t\t\t\t\t\t\t\ttemplateLock: false,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\tfocusModeToRevert.current =\n\t\t\t\t\t\t\t\t\tgetSettings().focusMode;\n\t\t\t\t\t\t\t\tupdateSettings( { focusMode: true } );\n\t\t\t\t\t\t\t\t__unstableSetTemporarilyEditingAsBlocks(\n\t\t\t\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEditingAsBlocks && ! isContentLocked\n\t\t\t\t\t\t\t? __( 'Done' )\n\t\t\t\t\t\t\t: __( 'Modify' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t\t<BlockEdit\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\tisEditingAsBlocks &&\n\t\t\t\t\t\t\t'is-content-locked-editing-as-blocks'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/style/with-block-controls',\n\twithBlockControls\n);\n"]}
|
package/build/hooks/duotone.js
CHANGED
|
@@ -18,12 +18,16 @@ var _compose = require("@wordpress/compose");
|
|
|
18
18
|
|
|
19
19
|
var _hooks = require("@wordpress/hooks");
|
|
20
20
|
|
|
21
|
+
var _data = require("@wordpress/data");
|
|
22
|
+
|
|
21
23
|
var _components = require("../components");
|
|
22
24
|
|
|
23
25
|
var _blockList = _interopRequireDefault(require("../components/block-list"));
|
|
24
26
|
|
|
25
27
|
var _duotone = require("../components/duotone");
|
|
26
28
|
|
|
29
|
+
var _store = require("../store");
|
|
30
|
+
|
|
27
31
|
/**
|
|
28
32
|
* External dependencies
|
|
29
33
|
*/
|
|
@@ -166,7 +170,10 @@ function addDuotoneAttributes(settings) {
|
|
|
166
170
|
|
|
167
171
|
const withDuotoneControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
168
172
|
const hasDuotoneSupport = (0, _blocks.hasBlockSupport)(props.name, 'color.__experimentalDuotone');
|
|
169
|
-
|
|
173
|
+
const isContentLocked = (0, _data.useSelect)(select => {
|
|
174
|
+
return select(_store.store).__unstableGetContentLockingParent(props.clientId);
|
|
175
|
+
}, [props.clientId]);
|
|
176
|
+
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(BlockEdit, props), hasDuotoneSupport && !isContentLocked && (0, _element.createElement)(DuotonePanel, props));
|
|
170
177
|
}, 'withDuotoneControls');
|
|
171
178
|
/**
|
|
172
179
|
* Function that scopes a selector with another one. This works a bit like
|