@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +33 -3
- package/build/components/block-canvas/index.js +107 -0
- package/build/components/block-canvas/index.js.map +1 -0
- package/build/components/block-inspector/index.js +4 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +28 -8
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +68 -0
- package/build/components/block-patterns-paging/index.js.map +1 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -7
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +1 -0
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +5 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +1 -1
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/border-radius-control/linked-button.js +2 -4
- package/build/components/border-radius-control/linked-button.js.map +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/default-block-appender/index.native.js +20 -1
- package/build/components/default-block-appender/index.native.js.map +1 -1
- package/build/components/duotone/utils.js +68 -0
- package/build/components/duotone/utils.js.map +1 -1
- package/build/components/editor-styles/index.js +28 -9
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -101
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +61 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -0
- package/build/components/global-styles/index.js +11 -17
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +19 -15
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +67 -33
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +2 -5
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-editor/use-transform-image.js +9 -9
- package/build/components/image-editor/use-transform-image.js.map +1 -1
- package/build/components/index.js +8 -12
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +6 -5
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +45 -22
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js +9 -9
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-filter.js +137 -0
- package/build/components/inserter/block-patterns-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +128 -42
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +61 -0
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build/components/inserter/hooks/use-patterns-state.js +21 -10
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/menu.js +13 -11
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-results.js +4 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -12
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls/block-support-slot-container.js +12 -1
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build/components/inspector-controls/fill.js +24 -13
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/groups.js +5 -3
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +13 -0
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/link-control/index.js +12 -2
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +1 -3
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +13 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +29 -24
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +11 -11
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +2 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/constants.js +30 -0
- package/build/components/media-upload/constants.js.map +1 -0
- package/build/components/media-upload/index.native.js +63 -53
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +1 -1
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/index.js +34 -35
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +14 -32
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/multiline.js +95 -0
- package/build/components/rich-text/multiline.js.map +1 -0
- package/build/components/rich-text/split-value.js +10 -16
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-enter.js +31 -40
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +18 -33
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/use-block-commands/index.js +30 -18
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +5 -2
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/hooks/background.js +263 -0
- package/build/hooks/background.js.map +1 -0
- package/build/hooks/block-hooks.js +188 -0
- package/build/hooks/block-hooks.js.map +1 -0
- package/build/hooks/block-rename-ui.js +161 -0
- package/build/hooks/block-rename-ui.js.map +1 -0
- package/build/hooks/duotone.js +29 -42
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +2 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +31 -14
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +4 -2
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +10 -3
- package/build/hooks/style.js.map +1 -1
- package/build/private-apis.js +2 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +33 -10
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +42 -8
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +25 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +43 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +84 -23
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +0 -4
- package/build/store/utils.js.map +1 -1
- package/build-module/components/block-canvas/index.js +97 -0
- package/build-module/components/block-canvas/index.js.map +1 -0
- package/build-module/components/block-inspector/index.js +4 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +30 -10
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +61 -0
- package/build-module/components/block-patterns-paging/index.js.map +1 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +4 -7
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +1 -0
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +5 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +1 -1
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/border-radius-control/linked-button.js +2 -4
- package/build-module/components/border-radius-control/linked-button.js.map +1 -1
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/default-block-appender/index.native.js +20 -1
- package/build-module/components/default-block-appender/index.native.js.map +1 -1
- package/build-module/components/duotone/utils.js +65 -0
- package/build-module/components/duotone/utils.js.map +1 -1
- package/build-module/components/editor-styles/index.js +28 -9
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -100
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +53 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
- package/build-module/components/global-styles/index.js +2 -2
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +18 -16
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +66 -33
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +2 -5
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-editor/use-transform-image.js +9 -9
- package/build-module/components/image-editor/use-transform-image.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +47 -24
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +9 -9
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-filter.js +128 -0
- package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +125 -44
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +54 -0
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/menu.js +13 -11
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-results.js +4 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -12
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +25 -14
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +5 -3
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +15 -1
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/link-control/index.js +12 -2
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +1 -3
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +13 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +30 -25
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +2 -2
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +7 -7
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +2 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/constants.js +14 -0
- package/build-module/components/media-upload/constants.js.map +1 -0
- package/build-module/components/media-upload/index.native.js +53 -34
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +1 -1
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +35 -37
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +15 -33
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/multiline.js +87 -0
- package/build-module/components/rich-text/multiline.js.map +1 -0
- package/build-module/components/rich-text/split-value.js +10 -16
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +33 -42
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +19 -34
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +2 -2
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +28 -16
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -2
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/hooks/background.js +249 -0
- package/build-module/hooks/background.js.map +1 -0
- package/build-module/hooks/block-hooks.js +181 -0
- package/build-module/hooks/block-hooks.js.map +1 -0
- package/build-module/hooks/block-rename-ui.js +154 -0
- package/build-module/hooks/block-rename-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +26 -39
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -2
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +33 -16
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +4 -2
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +10 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/private-apis.js +2 -0
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +33 -10
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +39 -8
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +23 -3
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +41 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +78 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +0 -4
- package/build-module/store/utils.js.map +1 -1
- package/build-style/content-rtl.css +0 -1
- package/build-style/content.css +0 -1
- package/build-style/style-rtl.css +201 -131
- package/build-style/style.css +201 -131
- package/package.json +32 -32
- package/src/components/block-canvas/index.js +108 -0
- package/src/components/block-inspector/index.js +5 -1
- package/src/components/block-list/content.scss +0 -1
- package/src/components/block-patterns-list/index.js +53 -19
- package/src/components/block-patterns-list/style.scss +26 -9
- package/src/components/block-patterns-paging/index.js +92 -0
- package/src/components/block-patterns-paging/style.scss +45 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
- package/src/components/block-settings-menu-controls/index.js +4 -9
- package/src/components/block-styles/index.js +1 -0
- package/src/components/block-styles/style.scss +3 -3
- package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
- package/src/components/block-tools/block-contextual-toolbar.js +16 -5
- package/src/components/block-tools/block-selection-button.js +9 -1
- package/src/components/block-tools/style.scss +0 -98
- package/src/components/border-radius-control/input-controls.js +1 -1
- package/src/components/border-radius-control/linked-button.js +8 -11
- package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
- package/src/components/colors/with-colors.js +3 -2
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
- package/src/components/default-block-appender/index.native.js +26 -3
- package/src/components/duotone/utils.js +65 -0
- package/src/components/editor-styles/index.js +32 -23
- package/src/components/global-styles/hooks.js +4 -112
- package/src/components/global-styles/image-settings-panel.js +71 -0
- package/src/components/global-styles/index.js +4 -3
- package/src/components/global-styles/use-global-styles-output.js +25 -16
- package/src/components/global-styles/utils.js +1 -2
- package/src/components/iframe/index.js +72 -33
- package/src/components/image-editor/use-save-image.js +2 -9
- package/src/components/image-editor/use-transform-image.js +9 -9
- package/src/components/index.js +1 -1
- package/src/components/index.native.js +2 -2
- package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
- package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +68 -43
- package/src/components/inserter/block-patterns-explorer/sidebar.js +8 -8
- package/src/components/inserter/block-patterns-filter.js +183 -0
- package/src/components/inserter/block-patterns-tab.js +217 -58
- package/src/components/inserter/hooks/use-patterns-paging.js +76 -0
- package/src/components/inserter/hooks/use-patterns-state.js +27 -16
- package/src/components/inserter/menu.js +15 -17
- package/src/components/inserter/search-results.js +6 -4
- package/src/components/inserter/style.scss +36 -7
- package/src/components/inserter/tabs.js +2 -12
- package/src/components/inserter/test/index.native.js +8 -12
- package/src/components/inspector-controls/block-support-slot-container.js +19 -3
- package/src/components/inspector-controls/fill.js +28 -14
- package/src/components/inspector-controls/groups.js +6 -2
- package/src/components/inspector-controls/slot.js +28 -3
- package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
- package/src/components/link-control/index.js +13 -0
- package/src/components/link-control/style.scss +23 -2
- package/src/components/link-control/test/index.js +88 -6
- package/src/components/list-view/block-select-button.js +1 -3
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/style.scss +1 -2
- package/src/components/list-view/use-block-selection.js +38 -32
- package/src/components/media-placeholder/README.md +2 -2
- package/src/components/media-placeholder/index.js +2 -2
- package/src/components/media-placeholder/index.native.js +11 -12
- package/src/components/media-replace-flow/index.js +2 -2
- package/src/components/media-replace-flow/test/index.js +5 -23
- package/src/components/media-upload/README.md +3 -2
- package/src/components/media-upload/constants.js +15 -0
- package/src/components/media-upload/index.native.js +66 -40
- package/src/components/media-upload/style.native.scss +4 -0
- package/src/components/media-upload/test/index.native.js +2 -2
- package/src/components/preview-options/README.md +7 -0
- package/src/components/preview-options/index.js +1 -1
- package/src/components/rich-text/index.js +48 -44
- package/src/components/rich-text/index.native.js +14 -42
- package/src/components/rich-text/multiline.js +121 -0
- package/src/components/rich-text/split-value.js +10 -35
- package/src/components/rich-text/use-enter.js +32 -42
- package/src/components/rich-text/use-paste-handler.js +16 -40
- package/src/components/spacing-sizes-control/style.scss +5 -7
- package/src/components/spacing-sizes-control/utils.js +1 -2
- package/src/components/use-block-commands/index.js +28 -20
- package/src/components/use-block-display-information/index.js +3 -0
- package/src/hooks/background.js +299 -0
- package/src/hooks/background.scss +75 -0
- package/src/hooks/block-hooks.js +257 -0
- package/src/hooks/block-hooks.scss +16 -0
- package/src/hooks/block-rename-ui.js +231 -0
- package/src/hooks/block-rename-ui.scss +3 -0
- package/src/hooks/duotone.js +42 -43
- package/src/hooks/index.js +2 -2
- package/src/hooks/layout.js +31 -33
- package/src/hooks/position.js +4 -3
- package/src/hooks/style.js +11 -2
- package/src/hooks/test/align.native.js +4 -3
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +52 -10
- package/src/store/private-actions.js +37 -6
- package/src/store/private-selectors.js +28 -3
- package/src/store/reducer.js +38 -0
- package/src/store/selectors.js +107 -26
- package/src/store/test/actions.js +19 -8
- package/src/store/test/private-actions.js +17 -0
- package/src/store/test/reducer.js +25 -0
- package/src/store/test/selectors.js +130 -123
- package/src/store/utils.js +3 -10
- package/src/style.scss +4 -0
- package/build/components/duotone/components.js +0 -135
- package/build/components/duotone/components.js.map +0 -1
- package/build/components/duotone/index.js +0 -38
- package/build/components/duotone/index.js.map +0 -1
- package/build/components/global-styles/behaviors-panel.js +0 -64
- package/build/components/global-styles/behaviors-panel.js.map +0 -1
- package/build/components/inserter/reusable-blocks-tab.js +0 -85
- package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build/hooks/auto-inserting-blocks.js +0 -174
- package/build/hooks/auto-inserting-blocks.js.map +0 -1
- package/build/hooks/behaviors.js +0 -173
- package/build/hooks/behaviors.js.map +0 -1
- package/build-module/components/duotone/components.js +0 -126
- package/build-module/components/duotone/components.js.map +0 -1
- package/build-module/components/duotone/index.js +0 -3
- package/build-module/components/duotone/index.js.map +0 -1
- package/build-module/components/global-styles/behaviors-panel.js +0 -57
- package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
- package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build-module/hooks/auto-inserting-blocks.js +0 -167
- package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
- package/build-module/hooks/behaviors.js +0 -166
- package/build-module/hooks/behaviors.js.map +0 -1
- package/src/components/duotone/components.js +0 -133
- package/src/components/duotone/index.js +0 -7
- package/src/components/global-styles/behaviors-panel.js +0 -71
- package/src/components/inserter/reusable-blocks-tab.js +0 -84
- package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
- package/src/hooks/auto-inserting-blocks.js +0 -232
- package/src/hooks/behaviors.js +0 -206
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createHigherOrderComponent","useInstanceId","addFilter","__","sprintf","getBlockSupport","MenuItem","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","TextControl","Modal","useState","speak","BlockSettingsMenuControls","useBlockDisplayInformation","InspectorControls","emptyString","testString","trim","length","RenameModal","blockName","originalBlockName","onClose","onSave","editedBlockName","setEditedBlockName","nameHasChanged","nameIsOriginal","nameIsEmpty","isNameValid","autoSelectInputText","event","target","select","dialogDescription","handleSubmit","createElement","title","onRequestClose","overlayClassName","aria","describedby","focusOnMount","id","onSubmit","e","preventDefault","spacing","__nextHasNoMarginBottom","value","label","hideLabelFromVision","placeholder","onChange","onFocus","justify","variant","onClick","type","BlockRenameControl","props","renamingBlock","setRenamingBlock","clientId","customName","blockInformation","Fragment","group","selectedClientIds","canRename","newName","undefined","withBlockRenameControl","BlockEdit","name","attributes","setAttributes","metaDataSupport","supportsBlockNaming","metadata","key"],"sources":["@wordpress/block-editor/src/hooks/block-rename-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\tMenuItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tTextControl,\n\tModal,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockDisplayInformation,\n\tInspectorControls,\n} from '../components';\n\nconst emptyString = ( testString ) => testString?.trim()?.length === 0;\n\nfunction RenameModal( { blockName, originalBlockName, onClose, onSave } ) {\n\tconst [ editedBlockName, setEditedBlockName ] = useState( blockName );\n\n\tconst nameHasChanged = editedBlockName !== blockName;\n\tconst nameIsOriginal = editedBlockName === originalBlockName;\n\tconst nameIsEmpty = emptyString( editedBlockName );\n\n\tconst isNameValid = nameHasChanged || nameIsOriginal;\n\n\tconst autoSelectInputText = ( event ) => event.target.select();\n\n\tconst dialogDescription = useInstanceId(\n\t\tRenameModal,\n\t\t`block-editor-rename-modal__description`\n\t);\n\n\tconst handleSubmit = () => {\n\t\t// Must be assertive to immediately announce change.\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %1$s: type of update (either reset of changed). %2$s: new name/label for the block */\n\t\t\t\t__( 'Block name %1$s to: \"%2$s\".' ),\n\t\t\t\tnameIsOriginal || nameIsEmpty ? __( 'reset' ) : __( 'changed' ),\n\t\t\t\teditedBlockName\n\t\t\t),\n\t\t\t'assertive'\n\t\t);\n\n\t\tonSave( editedBlockName );\n\n\t\t// Immediate close avoids ability to hit save multiple times.\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-rename-modal\"\n\t\t\taria={ {\n\t\t\t\tdescribedby: dialogDescription,\n\t\t\t} }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t>\n\t\t\t<p id={ dialogDescription }>\n\t\t\t\t{ __( 'Enter a custom name for this block.' ) }\n\t\t\t</p>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( e ) => {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif ( ! isNameValid ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\thandleSubmit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ editedBlockName }\n\t\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tplaceholder={ originalBlockName }\n\t\t\t\t\t\tonChange={ setEditedBlockName }\n\t\t\t\t\t\tonFocus={ autoSelectInputText }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\taria-disabled={ ! isNameValid }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n\nfunction BlockRenameControl( props ) {\n\tconst [ renamingBlock, setRenamingBlock ] = useState( false );\n\n\tconst { clientId, customName, onChange } = props;\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\tvalue={ customName || '' }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t// Only enabled for single selections.\n\t\t\t\t\tconst canRename =\n\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\tclientId === selectedClientIds[ 0 ];\n\n\t\t\t\t\t// This check ensures the `BlockSettingsMenuControls` fill\n\t\t\t\t\t// doesn't render multiple times and also that it renders for\n\t\t\t\t\t// the block from which the menu was triggered.\n\t\t\t\t\tif ( ! canRename ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetRenamingBlock( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-expanded={ renamingBlock }\n\t\t\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Rename' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t{ renamingBlock && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tblockName={ customName || '' }\n\t\t\t\t\toriginalBlockName={ blockInformation?.title }\n\t\t\t\t\tonClose={ () => setRenamingBlock( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\t// If the new value is the block's original name (e.g. `Group`)\n\t\t\t\t\t\t// or it is an empty string then assume the intent is to reset\n\t\t\t\t\t\t// the value. Therefore reset the metadata.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnewName === blockInformation?.title ||\n\t\t\t\t\t\t\temptyString( newName )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnewName = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonChange( newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const withBlockRenameControl = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { clientId, name, attributes, setAttributes } = props;\n\n\t\tconst metaDataSupport = getBlockSupport(\n\t\t\tname,\n\t\t\t'__experimentalMetadata',\n\t\t\tfalse\n\t\t);\n\n\t\tconst supportsBlockNaming = !! (\n\t\t\ttrue === metaDataSupport || metaDataSupport?.name\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ supportsBlockNaming && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tcustomName={ attributes?.metadata?.name }\n\t\t\t\t\t\t\tonChange={ ( newName ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t\t\t...( attributes?.metadata &&\n\t\t\t\t\t\t\t\t\t\t\tattributes?.metadata ),\n\t\t\t\t\t\t\t\t\t\tname: newName,\n\t\t\t\t\t\t\t\t\t},\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) }\n\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/block-rename-ui/with-block-rename-control',\n\twithBlockRenameControl\n);\n"],"mappings":"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"}
|
|
@@ -12,50 +12,23 @@ import namesPlugin from 'colord/plugins/names';
|
|
|
12
12
|
import { getBlockSupport, getBlockType, hasBlockSupport } from '@wordpress/blocks';
|
|
13
13
|
import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
|
|
14
14
|
import { addFilter } from '@wordpress/hooks';
|
|
15
|
-
import { useMemo,
|
|
15
|
+
import { useMemo, useEffect } from '@wordpress/element';
|
|
16
|
+
import { useDispatch } from '@wordpress/data';
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Internal dependencies
|
|
19
20
|
*/
|
|
20
21
|
import { BlockControls, InspectorControls, __experimentalDuotoneControl as DuotoneControl, useSetting } from '../components';
|
|
21
|
-
import
|
|
22
|
-
import { __unstableDuotoneFilter as DuotoneFilter, __unstableDuotoneStylesheet as DuotoneStylesheet, __unstableDuotoneUnsetStylesheet as DuotoneUnsetStylesheet } from '../components/duotone';
|
|
22
|
+
import { getDuotoneFilter, getDuotoneStylesheet, getDuotoneUnsetStylesheet } from '../components/duotone/utils';
|
|
23
23
|
import { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';
|
|
24
24
|
import { scopeSelector } from '../components/global-styles/utils';
|
|
25
25
|
import { useBlockSettings } from './utils';
|
|
26
26
|
import { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';
|
|
27
27
|
import { useBlockEditingMode } from '../components/block-editing-mode';
|
|
28
|
+
import { store as blockEditorStore } from '../store';
|
|
29
|
+
import { unlock } from '../lock-unlock';
|
|
28
30
|
const EMPTY_ARRAY = [];
|
|
29
31
|
extend([namesPlugin]);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* SVG and stylesheet needed for rendering the duotone filter.
|
|
33
|
-
*
|
|
34
|
-
* @param {Object} props Duotone props.
|
|
35
|
-
* @param {string} props.selector Selector to apply the filter to.
|
|
36
|
-
* @param {string} props.id Unique id for this duotone filter.
|
|
37
|
-
* @param {string[]|"unset"} props.colors Array of RGB color strings ordered from dark to light.
|
|
38
|
-
*
|
|
39
|
-
* @return {WPElement} Duotone element.
|
|
40
|
-
*/
|
|
41
|
-
function InlineDuotone({
|
|
42
|
-
selector,
|
|
43
|
-
id,
|
|
44
|
-
colors
|
|
45
|
-
}) {
|
|
46
|
-
if (colors === 'unset') {
|
|
47
|
-
return createElement(DuotoneUnsetStylesheet, {
|
|
48
|
-
selector: selector
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return createElement(Fragment, null, createElement(DuotoneFilter, {
|
|
52
|
-
id: id,
|
|
53
|
-
colors: colors
|
|
54
|
-
}), createElement(DuotoneStylesheet, {
|
|
55
|
-
id: id,
|
|
56
|
-
selector: selector
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
32
|
function useMultiOriginPresets({
|
|
60
33
|
presetSetting,
|
|
61
34
|
defaultSetting
|
|
@@ -211,7 +184,6 @@ function DuotoneStyles({
|
|
|
211
184
|
selector: duotoneSelector,
|
|
212
185
|
attribute: duotoneAttr
|
|
213
186
|
}) {
|
|
214
|
-
const element = useContext(BlockList.__unstableElementContext);
|
|
215
187
|
const duotonePalette = useMultiOriginPresets({
|
|
216
188
|
presetSetting: 'color.duotone',
|
|
217
189
|
defaultSetting: 'color.defaultDuotone'
|
|
@@ -249,15 +221,30 @@ function DuotoneStyles({
|
|
|
249
221
|
// Assuming the selector part is a subclass selector (not a tag name)
|
|
250
222
|
// so we can prepend the filter id class. If we want to support elements
|
|
251
223
|
// such as `img` or namespaces, we'll need to add a case for that here.
|
|
252
|
-
return
|
|
224
|
+
return `.${filterId}${selectorPart.trim()}`;
|
|
253
225
|
});
|
|
254
226
|
const selector = selectorsScoped.join(', ');
|
|
255
227
|
const isValidFilter = Array.isArray(colors) || colors === 'unset';
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
228
|
+
const {
|
|
229
|
+
setStyleOverride,
|
|
230
|
+
deleteStyleOverride
|
|
231
|
+
} = unlock(useDispatch(blockEditorStore));
|
|
232
|
+
useEffect(() => {
|
|
233
|
+
if (!isValidFilter) return;
|
|
234
|
+
setStyleOverride(filterId, {
|
|
235
|
+
css: colors !== 'unset' ? getDuotoneStylesheet(selector, filterId) : getDuotoneUnsetStylesheet(selector),
|
|
236
|
+
__unstableType: 'presets'
|
|
237
|
+
});
|
|
238
|
+
setStyleOverride(`duotone-${filterId}`, {
|
|
239
|
+
assets: colors !== 'unset' ? getDuotoneFilter(filterId, colors) : '',
|
|
240
|
+
__unstableType: 'svgs'
|
|
241
|
+
});
|
|
242
|
+
return () => {
|
|
243
|
+
deleteStyleOverride(filterId);
|
|
244
|
+
deleteStyleOverride(`duotone-${filterId}`);
|
|
245
|
+
};
|
|
246
|
+
}, [isValidFilter, colors, selector, filterId, setStyleOverride, deleteStyleOverride]);
|
|
247
|
+
return null;
|
|
261
248
|
}
|
|
262
249
|
|
|
263
250
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","createHigherOrderComponent","useInstanceId","addFilter","useMemo","useContext","createPortal","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSetting","BlockList","__unstableDuotoneFilter","DuotoneFilter","__unstableDuotoneStylesheet","DuotoneStylesheet","__unstableDuotoneUnsetStylesheet","DuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","default","StylesFiltersPanel","useBlockEditingMode","EMPTY_ARRAY","InlineDuotone","selector","id","colors","createElement","Fragment","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","colorPalette","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","addDuotoneAttributes","Object","assign","type","withDuotoneControls","BlockEdit","props","hasDuotoneSupport","blockEditingMode","DuotoneStyles","filterId","duotoneSelector","attribute","duotoneAttr","element","__unstableElementContext","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","withDuotoneStyles","BlockListBlock","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSetting,\n} from '../components';\nimport BlockList from '../components/block-list';\nimport {\n\t__unstableDuotoneFilter as DuotoneFilter,\n\t__unstableDuotoneStylesheet as DuotoneStylesheet,\n\t__unstableDuotoneUnsetStylesheet as DuotoneUnsetStylesheet,\n} from '../components/duotone';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\n\nconst EMPTY_ARRAY = [];\n\nextend( [ namesPlugin ] );\n\n/**\n * SVG and stylesheet needed for rendering the duotone filter.\n *\n * @param {Object} props Duotone props.\n * @param {string} props.selector Selector to apply the filter to.\n * @param {string} props.id Unique id for this duotone filter.\n * @param {string[]|\"unset\"} props.colors Array of RGB color strings ordered from dark to light.\n *\n * @return {WPElement} Duotone element.\n */\nfunction InlineDuotone( { selector, id, colors } ) {\n\tif ( colors === 'unset' ) {\n\t\treturn <DuotoneUnsetStylesheet selector={ selector } />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DuotoneFilter id={ id } colors={ colors } />\n\t\t\t<DuotoneStylesheet id={ id } selector={ selector } />\n\t\t</>\n\t);\n}\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst disableCustomColors = ! useSetting( 'color.custom' );\n\tconst disableCustomDuotone =\n\t\t! useSetting( 'color.customDuotone' ) ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst element = useContext( BlockList.__unstableElementContext );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.editor-styles-wrapper .${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\treturn (\n\t\telement &&\n\t\tisValidFilter &&\n\t\tcreatePortal(\n\t\t\t<InlineDuotone\n\t\t\t\tselector={ selector }\n\t\t\t\tid={ filterId }\n\t\t\t\tcolors={ colors }\n\t\t\t/>,\n\t\t\telement\n\t\t)\n\t);\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","extend","namesPlugin","getBlockSupport","getBlockType","hasBlockSupport","createHigherOrderComponent","useInstanceId","addFilter","useMemo","useEffect","useDispatch","BlockControls","InspectorControls","__experimentalDuotoneControl","DuotoneControl","useSetting","getDuotoneFilter","getDuotoneStylesheet","getDuotoneUnsetStylesheet","getBlockCSSSelector","scopeSelector","useBlockSettings","default","StylesFiltersPanel","useBlockEditingMode","store","blockEditorStore","unlock","EMPTY_ARRAY","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","userPresets","themePresets","defaultPresets","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","colorPalette","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","createElement","Fragment","group","value","filter","onChange","newDuotone","newStyle","__experimentalShareWithChildBlocks","maybePreset","addDuotoneAttributes","Object","assign","type","withDuotoneControls","BlockEdit","props","hasDuotoneSupport","blockEditingMode","DuotoneStyles","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","setStyleOverride","deleteStyleOverride","css","__unstableType","assets","withDuotoneStyles","BlockListBlock","blockType","duotoneSupport","experimentalDuotone","rootSelector","fallback","filterClass","shouldRender","className"],"sources":["@wordpress/block-editor/src/hooks/duotone.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSetting,\n} from '../components';\nimport {\n\tgetDuotoneFilter,\n\tgetDuotoneStylesheet,\n\tgetDuotoneUnsetStylesheet,\n} from '../components/duotone/utils';\nimport { getBlockCSSSelector } from '../components/global-styles/get-block-css-selector';\nimport { scopeSelector } from '../components/global-styles/utils';\nimport { useBlockSettings } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_ARRAY = [];\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function getColorsFromDuotonePreset( duotone, duotonePalette ) {\n\tif ( ! duotone ) {\n\t\treturn;\n\t}\n\tconst preset = duotonePalette?.find( ( { slug } ) => {\n\t\treturn duotone === `var:preset|duotone|${ slug }`;\n\t} );\n\n\treturn preset ? preset.colors : undefined;\n}\n\nexport function getDuotonePresetFromColors( colors, duotonePalette ) {\n\tif ( ! colors || ! Array.isArray( colors ) ) {\n\t\treturn;\n\t}\n\n\tconst preset = duotonePalette?.find( ( duotonePreset ) => {\n\t\treturn duotonePreset?.colors?.every(\n\t\t\t( val, index ) => val === colors[ index ]\n\t\t);\n\t} );\n\n\treturn preset ? `var:preset|duotone|${ preset.slug }` : undefined;\n}\n\nfunction DuotonePanel( { attributes, setAttributes, name } ) {\n\tconst style = attributes?.style;\n\tconst duotoneStyle = style?.color?.duotone;\n\tconst settings = useBlockSettings( name );\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\tconst disableCustomColors = ! useSetting( 'color.custom' );\n\tconst disableCustomDuotone =\n\t\t! useSetting( 'color.customDuotone' ) ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tconst duotonePresetOrColors = ! Array.isArray( duotoneStyle )\n\t\t? getColorsFromDuotonePreset( duotoneStyle, duotonePalette )\n\t\t: duotoneStyle;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"filter\">\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tvalue={ { filter: { duotone: duotonePresetOrColors } } }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...newDuotone?.filter,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\" __experimentalShareWithChildBlocks>\n\t\t\t\t<DuotoneControl\n\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\tdisableCustomDuotone={ disableCustomDuotone }\n\t\t\t\t\tdisableCustomColors={ disableCustomColors }\n\t\t\t\t\tvalue={ duotonePresetOrColors }\n\t\t\t\t\tonChange={ ( newDuotone ) => {\n\t\t\t\t\t\tconst maybePreset = getDuotonePresetFromColors(\n\t\t\t\t\t\t\tnewDuotone,\n\t\t\t\t\t\t\tduotonePalette\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst newStyle = {\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\tduotone: maybePreset ?? newDuotone, // use preset or fallback to custom colors.\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsetAttributes( { style: newStyle } );\n\t\t\t\t\t} }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * the `duotone` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addDuotoneAttributes( settings ) {\n\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\tif ( ! hasBlockSupport( settings, 'filter.duotone' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify their own attribute definition with default\n\t// values if needed.\n\tif ( ! settings.attributes.style ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include toolbar controls for duotone if the\n * block supports duotone.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\t// Previous `color.__experimentalDuotone` support flag is migrated via\n\t\t// block_type_metadata_settings filter in `lib/block-supports/duotone.php`.\n\t\tconst hasDuotoneSupport = hasBlockSupport(\n\t\t\tprops.name,\n\t\t\t'filter.duotone'\n\t\t);\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ hasDuotoneSupport && blockEditingMode === 'default' && (\n\t\t\t\t\t<DuotonePanel { ...props } />\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tid: filterId,\n\tselector: duotoneSelector,\n\tattribute: duotoneAttr,\n} ) {\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\n\t// Possible values for duotone attribute:\n\t// 1. Array of colors - e.g. ['#000000', '#ffffff'].\n\t// 2. Variable for an existing Duotone preset - e.g. 'var:preset|duotone|green-blue' or 'var(--wp--preset--duotone--green-blue)''\n\t// 3. A CSS string - e.g. 'unset' to remove globally applied duotone.\n\tconst isCustom = Array.isArray( duotoneAttr );\n\tconst duotonePreset = isCustom\n\t\t? undefined\n\t\t: getColorsFromDuotonePreset( duotoneAttr, duotonePalette );\n\tconst isPreset = typeof duotoneAttr === 'string' && duotonePreset;\n\tconst isCSS = typeof duotoneAttr === 'string' && ! isPreset;\n\n\t// Match the structure of WP_Duotone_Gutenberg::render_duotone_support() in PHP.\n\tlet colors = null;\n\tif ( isPreset ) {\n\t\t// Array of colors.\n\t\tcolors = duotonePreset;\n\t} else if ( isCSS ) {\n\t\t// CSS filter property string (e.g. 'unset').\n\t\tcolors = duotoneAttr;\n\t} else if ( isCustom ) {\n\t\t// Array of colors.\n\t\tcolors = duotoneAttr;\n\t}\n\n\t// Build the CSS selectors to which the filter will be applied.\n\tconst selectors = duotoneSelector.split( ',' );\n\n\tconst selectorsScoped = selectors.map( ( selectorPart ) => {\n\t\t// Extra .editor-styles-wrapper specificity is needed in the editor\n\t\t// since we're not using inline styles to apply the filter. We need to\n\t\t// override duotone applied by global styles and theme.json.\n\n\t\t// Assuming the selector part is a subclass selector (not a tag name)\n\t\t// so we can prepend the filter id class. If we want to support elements\n\t\t// such as `img` or namespaces, we'll need to add a case for that here.\n\t\treturn `.${ filterId }${ selectorPart.trim() }`;\n\t} );\n\n\tconst selector = selectorsScoped.join( ', ' );\n\n\tconst isValidFilter = Array.isArray( colors ) || colors === 'unset';\n\n\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) return;\n\n\t\tsetStyleOverride( filterId, {\n\t\t\tcss:\n\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t__unstableType: 'presets',\n\t\t} );\n\t\tsetStyleOverride( `duotone-${ filterId }`, {\n\t\t\tassets:\n\t\t\t\tcolors !== 'unset' ? getDuotoneFilter( filterId, colors ) : '',\n\t\t\t__unstableType: 'svgs',\n\t\t} );\n\n\t\treturn () => {\n\t\t\tdeleteStyleOverride( filterId );\n\t\t\tdeleteStyleOverride( `duotone-${ filterId }` );\n\t\t};\n\t}, [\n\t\tisValidFilter,\n\t\tcolors,\n\t\tselector,\n\t\tfilterId,\n\t\tsetStyleOverride,\n\t\tdeleteStyleOverride,\n\t] );\n\n\treturn null;\n}\n\n/**\n * Override the default block element to include duotone styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withDuotoneStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst id = useInstanceId( BlockListBlock );\n\n\t\tconst selector = useMemo( () => {\n\t\t\tconst blockType = getBlockType( props.name );\n\n\t\t\tif ( blockType ) {\n\t\t\t\t// Backwards compatibility for `supports.color.__experimentalDuotone`\n\t\t\t\t// is provided via the `block_type_metadata_settings` filter. If\n\t\t\t\t// `supports.filter.duotone` has not been set and the\n\t\t\t\t// experimental property has been, the experimental property\n\t\t\t\t// value is copied into `supports.filter.duotone`.\n\t\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'filter.duotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( ! duotoneSupport ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// If the experimental duotone support was set, that value is\n\t\t\t\t// to be treated as a selector and requires scoping.\n\t\t\t\tconst experimentalDuotone = getBlockSupport(\n\t\t\t\t\tblockType,\n\t\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tif ( experimentalDuotone ) {\n\t\t\t\t\tconst rootSelector = getBlockCSSSelector( blockType );\n\t\t\t\t\treturn typeof experimentalDuotone === 'string'\n\t\t\t\t\t\t? scopeSelector( rootSelector, experimentalDuotone )\n\t\t\t\t\t\t: rootSelector;\n\t\t\t\t}\n\n\t\t\t\t// Regular filter.duotone support uses filter.duotone selectors with fallbacks.\n\t\t\t\treturn getBlockCSSSelector( blockType, 'filter.duotone', {\n\t\t\t\t\tfallback: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, [ props.name ] );\n\n\t\tconst attribute = props?.attributes?.style?.color?.duotone;\n\n\t\tconst filterClass = `wp-duotone-${ id }`;\n\n\t\tconst shouldRender = selector && attribute;\n\n\t\tconst className = shouldRender\n\t\t\t? classnames( props?.className, filterClass )\n\t\t\t: props?.className;\n\n\t\t// CAUTION: code added before this line will be executed\n\t\t// for all blocks, not just those that support duotone. Code added\n\t\t// above this line should be carefully evaluated for its impact on\n\t\t// performance.\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRender && (\n\t\t\t\t\t<DuotoneStyles\n\t\t\t\t\t\tid={ filterClass }\n\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/editor/duotone/add-attributes',\n\taddDuotoneAttributes\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/duotone/with-editor-controls',\n\twithDuotoneControls\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/duotone/with-styles',\n\twithDuotoneStyles\n);\n"],"mappings":"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"}
|
|
@@ -20,9 +20,9 @@ import './layout';
|
|
|
20
20
|
import './content-lock-ui';
|
|
21
21
|
import './metadata';
|
|
22
22
|
import './metadata-name';
|
|
23
|
-
import './behaviors';
|
|
24
23
|
import './custom-fields';
|
|
25
|
-
import './
|
|
24
|
+
import './block-hooks';
|
|
25
|
+
import './block-rename-ui';
|
|
26
26
|
export { useCustomSides } from './dimensions';
|
|
27
27
|
export { useLayoutClasses, useLayoutStyles } from './layout';
|
|
28
28
|
export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './
|
|
1
|
+
{"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './custom-fields';\nimport './block-hooks';\nimport './block-rename-ui';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,OAAO,mBAAmB;AAE1B,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB"}
|
|
@@ -10,10 +10,10 @@ import classnames from 'classnames';
|
|
|
10
10
|
import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
|
|
11
11
|
import { addFilter } from '@wordpress/hooks';
|
|
12
12
|
import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
|
|
13
|
-
import { useSelect } from '@wordpress/data';
|
|
13
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
14
14
|
import { Button, ButtonGroup, ToggleControl, PanelBody } from '@wordpress/components';
|
|
15
15
|
import { __ } from '@wordpress/i18n';
|
|
16
|
-
import {
|
|
16
|
+
import { useEffect } from '@wordpress/element';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Internal dependencies
|
|
@@ -21,13 +21,12 @@ import { useContext, createPortal } from '@wordpress/element';
|
|
|
21
21
|
import { store as blockEditorStore } from '../store';
|
|
22
22
|
import { InspectorControls } from '../components';
|
|
23
23
|
import useSetting from '../components/use-setting';
|
|
24
|
-
import { LayoutStyle } from '../components/block-list/layout';
|
|
25
|
-
import BlockList from '../components/block-list';
|
|
26
24
|
import { getLayoutType, getLayoutTypes } from '../layouts';
|
|
27
25
|
import { useBlockEditingMode } from '../components/block-editing-mode';
|
|
28
26
|
import { LAYOUT_DEFINITIONS } from '../layouts/definitions';
|
|
29
27
|
import { kebabCase } from '../utils/object';
|
|
30
28
|
import { useBlockSettings } from './utils';
|
|
29
|
+
import { unlock } from '../lock-unlock';
|
|
31
30
|
const layoutBlockSupportKey = 'layout';
|
|
32
31
|
function hasLayoutBlockSupport(blockName) {
|
|
33
32
|
return hasBlockSupport(blockName, 'layout') || hasBlockSupport(blockName, '__experimentalLayout');
|
|
@@ -291,7 +290,6 @@ export const withLayoutStyles = createHigherOrderComponent(BlockListBlock => pro
|
|
|
291
290
|
});
|
|
292
291
|
const shouldRenderLayoutStyles = blockSupportsLayout && !disableLayoutStyles;
|
|
293
292
|
const id = useInstanceId(BlockListBlock);
|
|
294
|
-
const element = useContext(BlockList.__unstableElementContext);
|
|
295
293
|
const {
|
|
296
294
|
layout
|
|
297
295
|
} = attributes;
|
|
@@ -326,16 +324,23 @@ export const withLayoutStyles = createHigherOrderComponent(BlockListBlock => pro
|
|
|
326
324
|
const layoutClassNames = classnames({
|
|
327
325
|
[`wp-container-${id}`]: shouldRenderLayoutStyles && !!css // Only attach a container class if there is generated CSS to be attached.
|
|
328
326
|
}, layoutClasses);
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
327
|
+
const {
|
|
328
|
+
setStyleOverride,
|
|
329
|
+
deleteStyleOverride
|
|
330
|
+
} = unlock(useDispatch(blockEditorStore));
|
|
331
|
+
useEffect(() => {
|
|
332
|
+
if (!css) return;
|
|
333
|
+
setStyleOverride(id, {
|
|
334
|
+
css
|
|
335
|
+
});
|
|
336
|
+
return () => {
|
|
337
|
+
deleteStyleOverride(id);
|
|
338
|
+
};
|
|
339
|
+
}, [id, css, setStyleOverride, deleteStyleOverride]);
|
|
340
|
+
return createElement(BlockListBlock, {
|
|
336
341
|
...props,
|
|
337
342
|
__unstableLayoutClassNames: layoutClassNames
|
|
338
|
-
})
|
|
343
|
+
});
|
|
339
344
|
}, 'withLayoutStyles');
|
|
340
345
|
|
|
341
346
|
/**
|
|
@@ -366,7 +371,6 @@ export const withChildLayoutStyles = createHigherOrderComponent(BlockListBlock =
|
|
|
366
371
|
return !!getSettings().disableLayoutStyles;
|
|
367
372
|
});
|
|
368
373
|
const shouldRenderChildLayoutStyles = hasChildLayout && !disableLayoutStyles;
|
|
369
|
-
const element = useContext(BlockList.__unstableElementContext);
|
|
370
374
|
const id = useInstanceId(BlockListBlock);
|
|
371
375
|
const selector = `.wp-container-content-${id}`;
|
|
372
376
|
let css = '';
|
|
@@ -386,10 +390,23 @@ export const withChildLayoutStyles = createHigherOrderComponent(BlockListBlock =
|
|
|
386
390
|
[`wp-container-content-${id}`]: shouldRenderChildLayoutStyles && !!css // Only attach a container class if there is generated CSS to be attached.
|
|
387
391
|
});
|
|
388
392
|
|
|
389
|
-
|
|
393
|
+
const {
|
|
394
|
+
setStyleOverride,
|
|
395
|
+
deleteStyleOverride
|
|
396
|
+
} = unlock(useDispatch(blockEditorStore));
|
|
397
|
+
useEffect(() => {
|
|
398
|
+
if (!css) return;
|
|
399
|
+
setStyleOverride(id, {
|
|
400
|
+
css
|
|
401
|
+
});
|
|
402
|
+
return () => {
|
|
403
|
+
deleteStyleOverride(id);
|
|
404
|
+
};
|
|
405
|
+
}, [id, css, setStyleOverride, deleteStyleOverride]);
|
|
406
|
+
return createElement(BlockListBlock, {
|
|
390
407
|
...props,
|
|
391
408
|
className: className
|
|
392
|
-
})
|
|
409
|
+
});
|
|
393
410
|
}, 'withChildLayoutStyles');
|
|
394
411
|
addFilter('blocks.registerBlockType', 'core/layout/addAttribute', addAttribute);
|
|
395
412
|
addFilter('editor.BlockListBlock', 'core/editor/layout/with-layout-styles', withLayoutStyles);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","createHigherOrderComponent","useInstanceId","addFilter","getBlockSupport","hasBlockSupport","useSelect","Button","ButtonGroup","ToggleControl","PanelBody","__","useContext","createPortal","store","blockEditorStore","InspectorControls","useSetting","LayoutStyle","BlockList","getLayoutType","getLayoutTypes","useBlockEditingMode","LAYOUT_DEFINITIONS","kebabCase","useBlockSettings","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","useLayoutClasses","blockAttributes","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","title","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","map","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","element","__unstableElementContext","layoutClasses","layoutClassNames","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, createPortal } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { LayoutStyle } from '../components/block-list/layout';\nimport BlockList from '../components/block-list';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\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\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && blockEditingMode === 'default' && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasLayoutBlockSupport( blockName );\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\treturn [\n\t\t\tsupportLayout && blockEditingMode === 'default' && (\n\t\t\t\t<LayoutPanel key=\"layout\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\tblockName={ name }\n\t\t\t\t\t\t\tselector={ selector }\n\t\t\t\t\t\t\tcss={ css }\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tstyle={ attributes?.style }\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\telement\n\t\t\t\t\t) }\n\t\t\t\t<BlockListBlock\n\t\t\t\t\t{ ...props }\n\t\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst element = useContext( BlockList.__unstableElementContext );\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ shouldRenderChildLayoutStyles &&\n\t\t\t\t\telement &&\n\t\t\t\t\t!! css &&\n\t\t\t\t\tcreatePortal( <style>{ css }</style>, element ) }\n\t\t\t\t<BlockListBlock { ...props } className={ className } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","createHigherOrderComponent","useInstanceId","addFilter","getBlockSupport","hasBlockSupport","useSelect","useDispatch","Button","ButtonGroup","ToggleControl","PanelBody","__","useEffect","store","blockEditorStore","InspectorControls","useSetting","getLayoutType","getLayoutTypes","useBlockEditingMode","LAYOUT_DEFINITIONS","kebabCase","useBlockSettings","unlock","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","useLayoutClasses","blockAttributes","rootPaddingAlignment","select","getSettings","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","blockGapSupport","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","createElement","Fragment","title","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","map","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","BlockEdit","props","supportLayout","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","layoutClasses","layoutClassNames","setStyleOverride","deleteStyleOverride","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles"],"sources":["@wordpress/block-editor/src/hooks/layout.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tButtonGroup,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport useSetting from '../components/use-setting';\nimport { getLayoutType, getLayoutTypes } from '../layouts';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { LAYOUT_DEFINITIONS } from '../layouts/definitions';\nimport { kebabCase } from '../utils/object';\nimport { useBlockSettings } from './utils';\nimport { unlock } from '../lock-unlock';\n\nconst layoutBlockSupportKey = 'layout';\n\nfunction hasLayoutBlockSupport( blockName ) {\n\treturn (\n\t\thasBlockSupport( blockName, 'layout' ) ||\n\t\thasBlockSupport( blockName, '__experimentalLayout' )\n\t);\n}\n\n/**\n * Generates the utility classnames for the given block's layout attributes.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n *\n * @return { Array } Array of CSS classname strings.\n */\nexport function useLayoutClasses( blockAttributes = {}, blockName = '' ) {\n\tconst rootPaddingAlignment = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalFeatures\n\t\t\t?.useRootPaddingAwareAlignments;\n\t}, [] );\n\tconst { layout } = blockAttributes;\n\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( blockName, layoutBlockSupportKey ) || {};\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || defaultBlockLayout || {};\n\n\tconst layoutClassnames = [];\n\n\tif ( LAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className ) {\n\t\tconst baseClassName =\n\t\t\tLAYOUT_DEFINITIONS[ usedLayout?.type || 'default' ]?.className;\n\t\tconst splitBlockName = blockName.split( '/' );\n\t\tconst fullBlockName =\n\t\t\tsplitBlockName[ 0 ] === 'core'\n\t\t\t\t? splitBlockName.pop()\n\t\t\t\t: splitBlockName.join( '-' );\n\t\tconst compoundClassName = `wp-block-${ fullBlockName }-${ baseClassName }`;\n\t\tlayoutClassnames.push( baseClassName, compoundClassName );\n\t}\n\n\tif (\n\t\t( usedLayout?.inherit ||\n\t\t\tusedLayout?.contentSize ||\n\t\t\tusedLayout?.type === 'constrained' ) &&\n\t\trootPaddingAlignment\n\t) {\n\t\tlayoutClassnames.push( 'has-global-padding' );\n\t}\n\n\tif ( usedLayout?.orientation ) {\n\t\tlayoutClassnames.push( `is-${ kebabCase( usedLayout.orientation ) }` );\n\t}\n\n\tif ( usedLayout?.justifyContent ) {\n\t\tlayoutClassnames.push(\n\t\t\t`is-content-justification-${ kebabCase(\n\t\t\t\tusedLayout.justifyContent\n\t\t\t) }`\n\t\t);\n\t}\n\n\tif ( usedLayout?.flexWrap && usedLayout.flexWrap === 'nowrap' ) {\n\t\tlayoutClassnames.push( 'is-nowrap' );\n\t}\n\n\treturn layoutClassnames;\n}\n\n/**\n * Generates a CSS rule with the given block's layout styles.\n *\n * @param { Object } blockAttributes Block attributes.\n * @param { string } blockName Block name.\n * @param { string } selector A selector to use in generating the CSS rule.\n *\n * @return { string } CSS rule.\n */\nexport function useLayoutStyles( blockAttributes = {}, blockName, selector ) {\n\tconst { layout = {}, style = {} } = blockAttributes;\n\t// Update type for blocks using legacy layouts.\n\tconst usedLayout =\n\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t: layout || {};\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName,\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\thasBlockGapSupport,\n\t} );\n\treturn css;\n}\n\nfunction LayoutPanel( { setAttributes, attributes, name: blockName } ) {\n\tconst settings = useBlockSettings( blockName );\n\tconst {\n\t\tlayout: { allowEditing: allowEditingSetting },\n\t} = settings;\n\n\tconst { layout } = attributes;\n\tconst defaultThemeLayout = useSetting( 'layout' );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst layoutBlockSupport = getBlockSupport(\n\t\tblockName,\n\t\tlayoutBlockSupportKey,\n\t\t{}\n\t);\n\tconst {\n\t\tallowSwitching,\n\t\tallowEditing = allowEditingSetting ?? true,\n\t\tallowInheriting = true,\n\t\tdefault: defaultBlockLayout,\n\t} = layoutBlockSupport;\n\n\tif ( ! allowEditing ) {\n\t\treturn null;\n\t}\n\n\t// Only show the inherit toggle if it's supported,\n\t// a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),\n\t// and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.\n\tconst showInheritToggle = !! (\n\t\tallowInheriting &&\n\t\t!! defaultThemeLayout &&\n\t\t( ! layout?.type ||\n\t\t\tlayout?.type === 'default' ||\n\t\t\tlayout?.type === 'constrained' ||\n\t\t\tlayout?.inherit )\n\t);\n\n\tconst usedLayout = layout || defaultBlockLayout || {};\n\tconst {\n\t\tinherit = false,\n\t\ttype = 'default',\n\t\tcontentSize = null,\n\t} = usedLayout;\n\t/**\n\t * `themeSupportsLayout` is only relevant to the `default/flow` or\n\t * `constrained` layouts and it should not be taken into account when other\n\t * `layout` types are used.\n\t */\n\tif (\n\t\t( type === 'default' || type === 'constrained' ) &&\n\t\t! themeSupportsLayout\n\t) {\n\t\treturn null;\n\t}\n\tconst layoutType = getLayoutType( type );\n\tconst constrainedType = getLayoutType( 'constrained' );\n\tconst displayControlsForLegacyLayouts =\n\t\t! usedLayout.type && ( contentSize || inherit );\n\tconst hasContentSizeOrLegacySettings = !! inherit || !! contentSize;\n\n\tconst onChangeType = ( newType ) =>\n\t\tsetAttributes( { layout: { type: newType } } );\n\tconst onChangeLayout = ( newLayout ) =>\n\t\tsetAttributes( { layout: newLayout } );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Layout' ) }>\n\t\t\t\t\t{ showInheritToggle && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-hooks__toggle-control\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Inner blocks use content width' ) }\n\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t\t\t\t\tlayoutType?.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t'constrained' ||\n\t\t\t\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'constrained',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlayoutType?.name === 'constrained' ||\n\t\t\t\t\t\t\t\t\thasContentSizeOrLegacySettings\n\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks use content width with options for full and wide widths.'\n\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Nested blocks will fill the width of this container. Toggle to constrain.'\n\t\t\t\t\t\t\t\t\t\t )\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\n\t\t\t\t\t{ ! inherit && allowSwitching && (\n\t\t\t\t\t\t<LayoutTypeSwitcher\n\t\t\t\t\t\t\ttype={ type }\n\t\t\t\t\t\t\tonChange={ onChangeType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ layoutType && layoutType.name !== 'default' && (\n\t\t\t\t\t\t<layoutType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ constrainedType && displayControlsForLegacyLayouts && (\n\t\t\t\t\t\t<constrainedType.inspectorControls\n\t\t\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ ! inherit && blockEditingMode === 'default' && layoutType && (\n\t\t\t\t<layoutType.toolBarControls\n\t\t\t\t\tlayout={ usedLayout }\n\t\t\t\t\tonChange={ onChangeLayout }\n\t\t\t\t\tlayoutBlockSupport={ layoutBlockSupport }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction LayoutTypeSwitcher( { type, onChange } ) {\n\treturn (\n\t\t<ButtonGroup>\n\t\t\t{ getLayoutTypes().map( ( { name, label } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\tisPressed={ type === name }\n\t\t\t\t\t\tonClick={ () => onChange( name ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ButtonGroup>\n\t);\n}\n\n/**\n * Filters registered block settings, extending attributes to include `layout`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( 'type' in ( settings.attributes?.layout ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasLayoutBlockSupport( settings ) ) {\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\tconst supportLayout = hasLayoutBlockSupport( blockName );\n\n\t\tconst blockEditingMode = useBlockEditingMode();\n\t\treturn [\n\t\t\tsupportLayout && blockEditingMode === 'default' && (\n\t\t\t\t<LayoutPanel key=\"layout\" { ...props } />\n\t\t\t),\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withInspectorControls'\n);\n\n/**\n * Override the default block element to add the layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst blockSupportsLayout = hasLayoutBlockSupport( name );\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderLayoutStyles =\n\t\t\tblockSupportsLayout && ! disableLayoutStyles;\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst { layout } = attributes;\n\t\tconst { default: defaultBlockLayout } =\n\t\t\tgetBlockSupport( name, layoutBlockSupportKey ) || {};\n\t\tconst usedLayout =\n\t\t\tlayout?.inherit || layout?.contentSize || layout?.wideSize\n\t\t\t\t? { ...layout, type: 'constrained' }\n\t\t\t\t: layout || defaultBlockLayout || {};\n\t\tconst layoutClasses = blockSupportsLayout\n\t\t\t? useLayoutClasses( attributes, name )\n\t\t\t: null;\n\t\t// Higher specificity to override defaults from theme.json.\n\t\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\t\tconst blockGapSupport = useSetting( 'spacing.blockGap' );\n\t\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t\t// Get CSS string for the current layout type.\n\t\t// The CSS and `style` element is only output if it is not empty.\n\t\tlet css;\n\t\tif ( shouldRenderLayoutStyles ) {\n\t\t\tconst fullLayoutType = getLayoutType(\n\t\t\t\tusedLayout?.type || 'default'\n\t\t\t);\n\t\t\tcss = fullLayoutType?.getLayoutStyle?.( {\n\t\t\t\tblockName: name,\n\t\t\t\tselector,\n\t\t\t\tlayout: usedLayout,\n\t\t\t\tstyle: attributes?.style,\n\t\t\t\thasBlockGapSupport,\n\t\t\t} );\n\t\t}\n\n\t\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\t\tconst layoutClassNames = classnames(\n\t\t\t{\n\t\t\t\t[ `wp-container-${ id }` ]: shouldRenderLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t\t},\n\t\t\tlayoutClasses\n\t\t);\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( id, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( id );\n\t\t\t};\n\t\t}, [ id, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn (\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t/>\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\n/**\n * Override the default block element to add the child layout styles.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withChildLayoutStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { attributes } = props;\n\t\tconst { style: { layout = {} } = {} } = attributes;\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\t\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\treturn !! getSettings().disableLayoutStyles;\n\t\t} );\n\t\tconst shouldRenderChildLayoutStyles =\n\t\t\thasChildLayout && ! disableLayoutStyles;\n\n\t\tconst id = useInstanceId( BlockListBlock );\n\t\tconst selector = `.wp-container-content-${ id }`;\n\n\t\tlet css = '';\n\n\t\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t\t} else if ( selfStretch === 'fill' ) {\n\t\t\tcss += `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t\t}\n\n\t\t// Attach a `wp-container-content` id-based classname.\n\t\tconst className = classnames( props?.className, {\n\t\t\t[ `wp-container-content-${ id }` ]:\n\t\t\t\tshouldRenderChildLayoutStyles && !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t} );\n\n\t\tconst { setStyleOverride, deleteStyleOverride } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! css ) return;\n\t\t\tsetStyleOverride( id, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( id );\n\t\t\t};\n\t\t}, [ id, css, setStyleOverride, deleteStyleOverride ] );\n\n\t\treturn <BlockListBlock { ...props } className={ className } />;\n\t},\n\t'withChildLayoutStyles'\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/layout/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-layout-styles',\n\twithLayoutStyles\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/layout/with-child-layout-styles',\n\twithChildLayoutStyles\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/layout/with-inspector-controls',\n\twithInspectorControls\n);\n"],"mappings":"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"}
|
|
@@ -298,7 +298,8 @@ export const withInspectorControls = createHigherOrderComponent(BlockEdit => pro
|
|
|
298
298
|
name: blockName
|
|
299
299
|
} = props;
|
|
300
300
|
const positionSupport = hasBlockSupport(blockName, POSITION_SUPPORT_KEY);
|
|
301
|
-
const
|
|
301
|
+
const isPositionDisabled = useIsPositionDisabled(props);
|
|
302
|
+
const showPositionControls = positionSupport && !isPositionDisabled;
|
|
302
303
|
return [showPositionControls && createElement(PositionPanel, {
|
|
303
304
|
key: "position",
|
|
304
305
|
...props
|
|
@@ -321,7 +322,8 @@ export const withPositionStyles = createHigherOrderComponent(BlockListBlock => p
|
|
|
321
322
|
attributes
|
|
322
323
|
} = props;
|
|
323
324
|
const hasPositionBlockSupport = hasBlockSupport(name, POSITION_SUPPORT_KEY);
|
|
324
|
-
const
|
|
325
|
+
const isPositionDisabled = useIsPositionDisabled(props);
|
|
326
|
+
const allowPositionStyles = hasPositionBlockSupport && !isPositionDisabled;
|
|
325
327
|
const id = useInstanceId(BlockListBlock);
|
|
326
328
|
const element = useContext(BlockList.__unstableElementContext);
|
|
327
329
|
|