@wordpress/block-editor 12.12.2-next.f8d8eceb.0 → 12.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1
- package/build/components/block-heading-level-dropdown/index.js +1 -1
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-list/index.js +2 -9
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list-appender/index.js +16 -3
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +6 -4
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-styles/index.js +0 -8
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -2
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +11 -81
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/empty-block-inserter.js +56 -0
- package/build/components/block-tools/empty-block-inserter.js.map +1 -0
- package/build/components/block-tools/index.js +48 -9
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/selected-block-tools.js +113 -0
- package/build/components/block-tools/selected-block-tools.js.map +1 -0
- package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
- package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
- package/build/components/editable-text/index.js +1 -2
- package/build/components/editable-text/index.js.map +1 -1
- package/build/components/iframe/index.js +4 -3
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/index.js +75 -0
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
- package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/utils.js +70 -0
- package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
- package/build/components/inserter/media-tab/media-list.js +9 -5
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +15 -12
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/menu.js +3 -4
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/link-control/index.js +6 -5
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +39 -0
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +16 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +3 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +69 -18
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -14
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/resizable-box-popover/index.js +1 -1
- package/build/components/resizable-box-popover/index.js.map +1 -1
- package/build/components/rich-text/index.js +0 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +3 -1
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/format-edit.js +45 -0
- package/build/components/rich-text/native/format-edit.js.map +1 -0
- package/build/components/rich-text/native/get-format-colors.native.js +41 -0
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
- package/build/components/rich-text/native/index.js +9 -0
- package/build/components/rich-text/native/index.js.map +1 -0
- package/build/components/rich-text/native/index.native.js +1158 -0
- package/build/components/rich-text/native/index.native.js.map +1 -0
- package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
- package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
- package/build/components/rich-text/native/use-format-types.js +111 -0
- package/build/components/rich-text/native/use-format-types.js.map +1 -0
- package/build/components/rich-text/use-paste-handler.js +2 -5
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -1
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +7 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +10 -10
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +2 -2
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/anchor.js +7 -6
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +16 -4
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +7 -8
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-rename-ui.js +7 -5
- package/build/hooks/block-rename-ui.js.map +1 -1
- package/build/hooks/content-lock-ui.js +5 -5
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/custom-class-name.js +8 -7
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/custom-fields.js +4 -4
- package/build/hooks/custom-fields.js.map +1 -1
- package/build/hooks/duotone.js +14 -22
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/layout.js +90 -86
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +10 -9
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +10 -13
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +30 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +3 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +30 -37
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +18 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +16 -13
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-list/index.js +3 -10
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +16 -3
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +7 -5
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +0 -8
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +1 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/empty-block-inserter.js +48 -0
- package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
- package/build-module/components/block-tools/index.js +48 -9
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/selected-block-tools.js +105 -0
- package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
- package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
- package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
- package/build-module/components/editable-text/index.js +1 -2
- package/build-module/components/editable-text/index.js.map +1 -1
- package/build-module/components/iframe/index.js +4 -3
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +2 -2
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
- package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js +58 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
- package/build-module/components/inserter/media-tab/media-list.js +9 -5
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +15 -12
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/menu.js +4 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/link-control/index.js +7 -6
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +39 -0
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +16 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +3 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +69 -17
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -14
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/resizable-box-popover/index.js +1 -1
- package/build-module/components/resizable-box-popover/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +0 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +3 -1
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/format-edit.js +38 -0
- package/build-module/components/rich-text/native/format-edit.js.map +1 -0
- package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
- package/build-module/components/rich-text/native/index.js +2 -0
- package/build-module/components/rich-text/native/index.js.map +1 -0
- package/build-module/components/rich-text/native/index.native.js +1148 -0
- package/build-module/components/rich-text/native/index.native.js.map +1 -0
- package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
- package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
- package/build-module/components/rich-text/native/use-format-types.js +104 -0
- package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
- package/build-module/components/rich-text/use-paste-handler.js +2 -5
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -1
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +7 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +8 -8
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +2 -2
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/anchor.js +5 -4
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +17 -5
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +5 -6
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-rename-ui.js +5 -3
- package/build-module/hooks/block-rename-ui.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +3 -3
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +6 -5
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/custom-fields.js +4 -4
- package/build-module/hooks/custom-fields.js.map +1 -1
- package/build-module/hooks/duotone.js +15 -23
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/layout.js +90 -86
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +11 -10
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +10 -13
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +30 -1
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +4 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +29 -37
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +17 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +15 -13
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +16 -15
- package/build-style/style.css +16 -15
- package/package.json +31 -31
- package/src/components/block-heading-level-dropdown/index.js +1 -1
- package/src/components/block-list/index.js +4 -18
- package/src/components/block-list-appender/index.js +20 -4
- package/src/components/block-quick-navigation/index.js +11 -5
- package/src/components/block-styles/index.js +0 -10
- package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
- package/src/components/block-toolbar/style.scss +8 -0
- package/src/components/block-tools/back-compat.js +1 -1
- package/src/components/block-tools/block-contextual-toolbar.js +11 -134
- package/src/components/block-tools/empty-block-inserter.js +56 -0
- package/src/components/block-tools/index.js +72 -16
- package/src/components/block-tools/selected-block-tools.js +127 -0
- package/src/components/block-tools/style.scss +0 -10
- package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
- package/src/components/editable-text/index.js +1 -8
- package/src/components/iframe/index.js +4 -3
- package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
- package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -1
- package/src/components/inserter/block-patterns-tab/index.js +118 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +175 -0
- package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +96 -0
- package/src/components/inserter/block-patterns-tab/utils.js +76 -0
- package/src/components/inserter/media-tab/media-list.js +7 -7
- package/src/components/inserter/media-tab/media-preview.js +27 -22
- package/src/components/inserter/menu.js +4 -5
- package/src/components/link-control/README.md +2 -2
- package/src/components/link-control/index.js +15 -6
- package/src/components/link-control/style.scss +8 -5
- package/src/components/list-view/block-select-button.js +44 -1
- package/src/components/list-view/block.js +11 -11
- package/src/components/list-view/index.js +2 -0
- package/src/components/media-replace-flow/style.scss +2 -2
- package/src/components/navigable-toolbar/index.js +71 -25
- package/src/components/plain-text/README.md +3 -3
- package/src/components/provider/use-block-sync.js +2 -21
- package/src/components/resizable-box-popover/index.js +1 -1
- package/src/components/rich-text/README.md +9 -8
- package/src/components/rich-text/index.js +0 -1
- package/src/components/rich-text/index.native.js +3 -1
- package/src/components/rich-text/native/format-edit.js +44 -0
- package/src/components/rich-text/native/get-format-colors.native.js +54 -0
- package/src/components/rich-text/native/index.js +1 -0
- package/src/components/rich-text/native/index.native.js +1363 -0
- package/src/components/rich-text/native/style.native.scss +28 -0
- package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
- package/src/components/rich-text/native/test/index.native.js +278 -0
- package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
- package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
- package/src/components/rich-text/native/use-format-types.js +146 -0
- package/src/components/rich-text/use-paste-handler.js +1 -6
- package/src/components/url-popover/image-url-input-ui.js +1 -0
- package/src/components/writing-flow/use-tab-nav.js +8 -3
- package/src/hooks/align.js +8 -8
- package/src/hooks/align.native.js +2 -2
- package/src/hooks/anchor.js +21 -23
- package/src/hooks/background.js +28 -6
- package/src/hooks/block-hooks.js +20 -16
- package/src/hooks/block-rename-ui.js +6 -4
- package/src/hooks/content-lock-ui.js +3 -3
- package/src/hooks/custom-class-name.js +7 -6
- package/src/hooks/custom-fields.js +5 -5
- package/src/hooks/duotone.js +29 -38
- package/src/hooks/layout.js +114 -105
- package/src/hooks/position.js +8 -21
- package/src/hooks/style.js +17 -31
- package/src/hooks/test/align.js +4 -4
- package/src/hooks/utils.js +33 -1
- package/src/private-apis.js +4 -1
- package/src/store/actions.js +26 -72
- package/src/store/reducer.js +19 -0
- package/src/store/selectors.js +13 -19
- package/build/components/block-tools/selected-block-popover.js +0 -221
- package/build/components/block-tools/selected-block-popover.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
- package/build/components/inserter/block-patterns-filter.js.map +0 -1
- package/build/components/inserter/block-patterns-tab.js +0 -270
- package/build/components/inserter/block-patterns-tab.js.map +0 -1
- package/build/store/utils.js +0 -22
- package/build/store/utils.js.map +0 -1
- package/build-module/components/block-tools/selected-block-popover.js +0 -213
- package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
- package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
- package/build-module/components/inserter/block-patterns-tab.js +0 -254
- package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
- package/build-module/store/utils.js +0 -16
- package/build-module/store/utils.js.map +0 -1
- package/src/components/block-tools/selected-block-popover.js +0 -265
- package/src/components/inserter/block-patterns-tab.js +0 -448
- package/src/store/utils.js +0 -12
- /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_colord","_names","_blocks","_compose","_hooks","_element","_data","_components","_utils","_getBlockCssSelector","_utils2","_utils3","_filtersPanel","_blockEditingMode","_useBlockRefs","_store","_lockUnlock","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","extend","namesPlugin","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","useSettings","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","useBlockSettings","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","_react","createElement","Fragment","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","addDuotoneAttributes","hasBlockSupport","Object","assign","type","withDuotoneControls","createHigherOrderComponent","BlockEdit","props","hasDuotoneSupport","blockEditingMode","useBlockEditingMode","DuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","setStyleOverride","deleteStyleOverride","unlock","useDispatch","blockEditorStore","blockElement","useBlockElement","useEffect","css","getDuotoneStylesheet","getDuotoneUnsetStylesheet","__unstableType","assets","getDuotoneFilter","display","offsetHeight","withDuotoneStyles","BlockListBlock","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","classnames","addFilter"],"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\tuseSettings,\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 { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, 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 [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\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\tclientId,\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\tconst blockElement = useBlockElement( clientId );\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\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\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\tblockElement,\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\tclientId={ props.clientId }\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","_interopRequireDefault","require","_colord","_names","_blocks","_compose","_hooks","_element","_components","_utils","_getBlockCssSelector","_utils2","_utils3","_filtersPanel","_blockEditingMode","_useBlockRefs","EMPTY_ARRAY","isSafari","window","navigator","userAgent","includes","extend","namesPlugin","useMultiOriginPresets","presetSetting","defaultSetting","enableDefault","userPresets","themePresets","defaultPresets","useSettings","useMemo","getColorsFromDuotonePreset","duotone","duotonePalette","preset","find","slug","colors","undefined","getDuotonePresetFromColors","Array","isArray","duotonePreset","every","val","index","DuotonePanel","attributes","setAttributes","name","style","duotoneStyle","color","settings","useBlockSettings","blockEditingMode","useBlockEditingMode","colorPalette","enableCustomColors","enableCustomDuotone","disableCustomColors","disableCustomDuotone","length","duotonePresetOrColors","_react","createElement","Fragment","InspectorControls","group","default","value","filter","onChange","newDuotone","newStyle","BlockControls","__experimentalShareWithChildBlocks","__experimentalDuotoneControl","maybePreset","addDuotoneAttributes","hasBlockSupport","Object","assign","type","withDuotoneControls","createHigherOrderComponent","BlockEdit","props","hasDuotoneSupport","DuotoneStyles","clientId","id","filterId","selector","duotoneSelector","attribute","duotoneAttr","isCustom","isPreset","isCSS","selectors","split","selectorsScoped","map","selectorPart","trim","join","isValidFilter","useStyleOverride","css","getDuotoneStylesheet","getDuotoneUnsetStylesheet","__unstableType","assets","getDuotoneFilter","blockElement","useBlockElement","useEffect","display","offsetHeight","withDuotoneStyles","BlockListBlock","useInstanceId","blockType","getBlockType","duotoneSupport","getBlockSupport","experimentalDuotone","rootSelector","getBlockCSSSelector","scopeSelector","fallback","filterClass","shouldRender","className","classnames","addFilter"],"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';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalDuotoneControl as DuotoneControl,\n\tuseSettings,\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, useStyleOverride } from './utils';\nimport { default as StylesFiltersPanel } from '../components/global-styles/filters-panel';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { __unstableUseBlockElement as useBlockElement } from '../components/block-list/use-block-props/use-block-refs';\n\nconst EMPTY_ARRAY = [];\n\n// Safari does not always update the duotone filter when the duotone colors\n// are changed. This browser check is later used to force a re-render of the block\n// element to ensure the duotone filter is updated. The check is included at the\n// root of this file as it only needs to be run once per page load.\nconst isSafari =\n\twindow?.navigator.userAgent &&\n\twindow.navigator.userAgent.includes( 'Safari' ) &&\n\t! window.navigator.userAgent.includes( 'Chrome' ) &&\n\t! window.navigator.userAgent.includes( 'Chromium' );\n\nextend( [ namesPlugin ] );\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst [ enableDefault, userPresets, themePresets, defaultPresets ] =\n\t\tuseSettings(\n\t\t\tdefaultSetting,\n\t\t\t`${ presetSetting }.custom`,\n\t\t\t`${ presetSetting }.theme`,\n\t\t\t`${ presetSetting }.default`\n\t\t);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...( userPresets || EMPTY_ARRAY ),\n\t\t\t...( themePresets || EMPTY_ARRAY ),\n\t\t\t...( ( enableDefault && defaultPresets ) || EMPTY_ARRAY ),\n\t\t],\n\t\t[ enableDefault, 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\tconst blockEditingMode = useBlockEditingMode();\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 [ enableCustomColors, enableCustomDuotone ] = useSettings(\n\t\t'color.custom',\n\t\t'color.customDuotone'\n\t);\n\tconst disableCustomColors = ! enableCustomColors;\n\tconst disableCustomDuotone =\n\t\t! enableCustomDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tif ( duotonePalette?.length === 0 && disableCustomDuotone ) {\n\t\treturn null;\n\t}\n\n\tif ( blockEditingMode !== 'default' ) {\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\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 && <DuotonePanel { ...props } /> }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withDuotoneControls'\n);\n\nfunction DuotoneStyles( {\n\tclientId,\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\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneStylesheet( selector, filterId )\n\t\t\t\t\t\t\t: getDuotoneUnsetStylesheet( selector ),\n\t\t\t\t\t__unstableType: 'presets',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\tuseStyleOverride(\n\t\tisValidFilter\n\t\t\t? {\n\t\t\t\t\tassets:\n\t\t\t\t\t\tcolors !== 'unset'\n\t\t\t\t\t\t\t? getDuotoneFilter( filterId, colors )\n\t\t\t\t\t\t\t: '',\n\t\t\t\t\t__unstableType: 'svgs',\n\t\t\t }\n\t\t\t: undefined\n\t);\n\n\tconst blockElement = useBlockElement( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! isValidFilter ) return;\n\n\t\t// Safari does not always update the duotone filter when the duotone colors\n\t\t// are changed. When using Safari, force the block element to be repainted by\n\t\t// the browser to ensure any changes are reflected visually. This logic matches\n\t\t// that used on the site frontend in `block-supports/duotone.php`.\n\t\tif ( blockElement && isSafari ) {\n\t\t\tconst display = blockElement.style.display;\n\t\t\t// Switch to `inline-block` to force a repaint. In the editor, `inline-block`\n\t\t\t// is used instead of `none` to ensure that scroll position is not affected,\n\t\t\t// as `none` results in the editor scrolling to the top of the block.\n\t\t\tblockElement.style.display = 'inline-block';\n\t\t\t// Simply accessing el.offsetHeight flushes layout and style\n\t\t\t// changes in WebKit without having to wait for setTimeout.\n\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\tblockElement.offsetHeight;\n\t\t\tblockElement.style.display = display;\n\t\t}\n\t}, [ isValidFilter, blockElement ] );\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\tclientId={ props.clientId }\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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"}
|
package/build/hooks/layout.js
CHANGED
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.addAttribute = addAttribute;
|
|
8
8
|
exports.useLayoutClasses = useLayoutClasses;
|
|
9
9
|
exports.useLayoutStyles = useLayoutStyles;
|
|
10
|
-
exports.withLayoutStyles = exports.
|
|
10
|
+
exports.withLayoutStyles = exports.withLayoutControls = exports.withChildLayoutStyles = void 0;
|
|
11
11
|
var _react = require("react");
|
|
12
12
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
13
|
var _compose = require("@wordpress/compose");
|
|
@@ -16,7 +16,6 @@ var _blocks = require("@wordpress/blocks");
|
|
|
16
16
|
var _data = require("@wordpress/data");
|
|
17
17
|
var _components = require("@wordpress/components");
|
|
18
18
|
var _i18n = require("@wordpress/i18n");
|
|
19
|
-
var _element = require("@wordpress/element");
|
|
20
19
|
var _store = require("../store");
|
|
21
20
|
var _components2 = require("../components");
|
|
22
21
|
var _useSettings = require("../components/use-settings");
|
|
@@ -25,7 +24,6 @@ var _blockEditingMode = require("../components/block-editing-mode");
|
|
|
25
24
|
var _definitions = require("../layouts/definitions");
|
|
26
25
|
var _object = require("../utils/object");
|
|
27
26
|
var _utils = require("./utils");
|
|
28
|
-
var _lockUnlock = require("../lock-unlock");
|
|
29
27
|
/**
|
|
30
28
|
* External dependencies
|
|
31
29
|
*/
|
|
@@ -268,7 +266,7 @@ function addAttribute(settings) {
|
|
|
268
266
|
*
|
|
269
267
|
* @return {Function} Wrapped component.
|
|
270
268
|
*/
|
|
271
|
-
const
|
|
269
|
+
const withLayoutControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
272
270
|
const supportLayout = hasLayoutBlockSupport(props.name);
|
|
273
271
|
return [supportLayout && (0, _react.createElement)(LayoutPanel, {
|
|
274
272
|
key: "layout",
|
|
@@ -277,29 +275,16 @@ const withInspectorControls = (0, _compose.createHigherOrderComponent)(BlockEdit
|
|
|
277
275
|
key: "edit",
|
|
278
276
|
...props
|
|
279
277
|
})];
|
|
280
|
-
}, '
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
*
|
|
287
|
-
* @return {Function} Wrapped component.
|
|
288
|
-
*/
|
|
289
|
-
exports.withInspectorControls = withInspectorControls;
|
|
290
|
-
const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock => props => {
|
|
278
|
+
}, 'withLayoutControls');
|
|
279
|
+
exports.withLayoutControls = withLayoutControls;
|
|
280
|
+
function BlockWithLayoutStyles({
|
|
281
|
+
block: BlockListBlock,
|
|
282
|
+
props
|
|
283
|
+
}) {
|
|
291
284
|
const {
|
|
292
285
|
name,
|
|
293
286
|
attributes
|
|
294
287
|
} = props;
|
|
295
|
-
const blockSupportsLayout = hasLayoutBlockSupport(name);
|
|
296
|
-
const disableLayoutStyles = (0, _data.useSelect)(select => {
|
|
297
|
-
const {
|
|
298
|
-
getSettings
|
|
299
|
-
} = select(_store.store);
|
|
300
|
-
return !!getSettings().disableLayoutStyles;
|
|
301
|
-
});
|
|
302
|
-
const shouldRenderLayoutStyles = blockSupportsLayout && !disableLayoutStyles;
|
|
303
288
|
const id = (0, _compose.useInstanceId)(BlockListBlock);
|
|
304
289
|
const {
|
|
305
290
|
layout
|
|
@@ -311,7 +296,8 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
|
|
|
311
296
|
...layout,
|
|
312
297
|
type: 'constrained'
|
|
313
298
|
} : layout || defaultBlockLayout || {};
|
|
314
|
-
const layoutClasses =
|
|
299
|
+
const layoutClasses = useLayoutClasses(attributes, name);
|
|
300
|
+
|
|
315
301
|
// Higher specificity to override defaults from theme.json.
|
|
316
302
|
const selector = `.wp-container-${id}.wp-container-${id}`;
|
|
317
303
|
const [blockGapSupport] = (0, _useSettings.useSettings)('spacing.blockGap');
|
|
@@ -319,110 +305,128 @@ const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock
|
|
|
319
305
|
|
|
320
306
|
// Get CSS string for the current layout type.
|
|
321
307
|
// The CSS and `style` element is only output if it is not empty.
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
hasBlockGapSupport
|
|
331
|
-
});
|
|
332
|
-
}
|
|
308
|
+
const fullLayoutType = (0, _layouts.getLayoutType)(usedLayout?.type || 'default');
|
|
309
|
+
const css = fullLayoutType?.getLayoutStyle?.({
|
|
310
|
+
blockName: name,
|
|
311
|
+
selector,
|
|
312
|
+
layout: usedLayout,
|
|
313
|
+
style: attributes?.style,
|
|
314
|
+
hasBlockGapSupport
|
|
315
|
+
});
|
|
333
316
|
|
|
334
317
|
// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.
|
|
335
318
|
const layoutClassNames = (0, _classnames.default)({
|
|
336
|
-
[`wp-container-${id}`]:
|
|
319
|
+
[`wp-container-${id}`]: !!css // Only attach a container class if there is generated CSS to be attached.
|
|
337
320
|
}, layoutClasses);
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
} = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
|
|
342
|
-
(0, _element.useEffect)(() => {
|
|
343
|
-
if (!css) return;
|
|
344
|
-
setStyleOverride(selector, {
|
|
345
|
-
css
|
|
346
|
-
});
|
|
347
|
-
return () => {
|
|
348
|
-
deleteStyleOverride(selector);
|
|
349
|
-
};
|
|
350
|
-
}, [selector, css, setStyleOverride, deleteStyleOverride]);
|
|
321
|
+
(0, _utils.useStyleOverride)({
|
|
322
|
+
css
|
|
323
|
+
});
|
|
351
324
|
return (0, _react.createElement)(BlockListBlock, {
|
|
352
325
|
...props,
|
|
353
326
|
__unstableLayoutClassNames: layoutClassNames
|
|
354
327
|
});
|
|
355
|
-
}
|
|
328
|
+
}
|
|
356
329
|
|
|
357
330
|
/**
|
|
358
|
-
* Override the default block element to add the
|
|
331
|
+
* Override the default block element to add the layout styles.
|
|
359
332
|
*
|
|
360
333
|
* @param {Function} BlockListBlock Original component.
|
|
361
334
|
*
|
|
362
335
|
* @return {Function} Wrapped component.
|
|
363
336
|
*/
|
|
337
|
+
const withLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock => props => {
|
|
338
|
+
const blockSupportsLayout = hasLayoutBlockSupport(props.name);
|
|
339
|
+
const shouldRenderLayoutStyles = (0, _data.useSelect)(select => {
|
|
340
|
+
// The callback returns early to avoid block editor subscription.
|
|
341
|
+
if (!blockSupportsLayout) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
return !select(_store.store).getSettings().disableLayoutStyles;
|
|
345
|
+
}, [blockSupportsLayout]);
|
|
346
|
+
if (!shouldRenderLayoutStyles) {
|
|
347
|
+
return (0, _react.createElement)(BlockListBlock, {
|
|
348
|
+
...props
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
return (0, _react.createElement)(BlockWithLayoutStyles, {
|
|
352
|
+
block: BlockListBlock,
|
|
353
|
+
props: props
|
|
354
|
+
});
|
|
355
|
+
}, 'withLayoutStyles');
|
|
364
356
|
exports.withLayoutStyles = withLayoutStyles;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
layout = {}
|
|
372
|
-
} = {}
|
|
373
|
-
} = attributes;
|
|
357
|
+
function BlockWithChildLayoutStyles({
|
|
358
|
+
block: BlockListBlock,
|
|
359
|
+
props
|
|
360
|
+
}) {
|
|
361
|
+
var _props$attributes$sty;
|
|
362
|
+
const layout = (_props$attributes$sty = props.attributes.style?.layout) !== null && _props$attributes$sty !== void 0 ? _props$attributes$sty : {};
|
|
374
363
|
const {
|
|
375
364
|
selfStretch,
|
|
376
365
|
flexSize
|
|
377
366
|
} = layout;
|
|
378
|
-
const hasChildLayout = selfStretch || flexSize;
|
|
379
|
-
const disableLayoutStyles = (0, _data.useSelect)(select => {
|
|
380
|
-
const {
|
|
381
|
-
getSettings
|
|
382
|
-
} = select(_store.store);
|
|
383
|
-
return !!getSettings().disableLayoutStyles;
|
|
384
|
-
});
|
|
385
|
-
const shouldRenderChildLayoutStyles = hasChildLayout && !disableLayoutStyles;
|
|
386
367
|
const id = (0, _compose.useInstanceId)(BlockListBlock);
|
|
387
368
|
const selector = `.wp-container-content-${id}`;
|
|
388
369
|
let css = '';
|
|
389
370
|
if (selfStretch === 'fixed' && flexSize) {
|
|
390
|
-
css
|
|
371
|
+
css = `${selector} {
|
|
391
372
|
flex-basis: ${flexSize};
|
|
392
373
|
box-sizing: border-box;
|
|
393
374
|
}`;
|
|
394
375
|
} else if (selfStretch === 'fill') {
|
|
395
|
-
css
|
|
376
|
+
css = `${selector} {
|
|
396
377
|
flex-grow: 1;
|
|
397
378
|
}`;
|
|
398
379
|
}
|
|
399
380
|
|
|
400
381
|
// Attach a `wp-container-content` id-based classname.
|
|
401
|
-
const className = (0, _classnames.default)(props
|
|
402
|
-
[`wp-container-content-${id}`]:
|
|
382
|
+
const className = (0, _classnames.default)(props.className, {
|
|
383
|
+
[`wp-container-content-${id}`]: !!css // Only attach a container class if there is generated CSS to be attached.
|
|
403
384
|
});
|
|
404
385
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
} = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
|
|
409
|
-
(0, _element.useEffect)(() => {
|
|
410
|
-
if (!css) return;
|
|
411
|
-
setStyleOverride(selector, {
|
|
412
|
-
css
|
|
413
|
-
});
|
|
414
|
-
return () => {
|
|
415
|
-
deleteStyleOverride(selector);
|
|
416
|
-
};
|
|
417
|
-
}, [selector, css, setStyleOverride, deleteStyleOverride]);
|
|
386
|
+
(0, _utils.useStyleOverride)({
|
|
387
|
+
css
|
|
388
|
+
});
|
|
418
389
|
return (0, _react.createElement)(BlockListBlock, {
|
|
419
390
|
...props,
|
|
420
391
|
className: className
|
|
421
392
|
});
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Override the default block element to add the child layout styles.
|
|
397
|
+
*
|
|
398
|
+
* @param {Function} BlockListBlock Original component.
|
|
399
|
+
*
|
|
400
|
+
* @return {Function} Wrapped component.
|
|
401
|
+
*/
|
|
402
|
+
const withChildLayoutStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock => props => {
|
|
403
|
+
var _props$attributes$sty2;
|
|
404
|
+
const layout = (_props$attributes$sty2 = props.attributes.style?.layout) !== null && _props$attributes$sty2 !== void 0 ? _props$attributes$sty2 : {};
|
|
405
|
+
const {
|
|
406
|
+
selfStretch,
|
|
407
|
+
flexSize
|
|
408
|
+
} = layout;
|
|
409
|
+
const hasChildLayout = selfStretch || flexSize;
|
|
410
|
+
const shouldRenderChildLayoutStyles = (0, _data.useSelect)(select => {
|
|
411
|
+
// The callback returns early to avoid block editor subscription.
|
|
412
|
+
if (!hasChildLayout) {
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
return !select(_store.store).getSettings().disableLayoutStyles;
|
|
416
|
+
}, [hasChildLayout]);
|
|
417
|
+
if (!shouldRenderChildLayoutStyles) {
|
|
418
|
+
return (0, _react.createElement)(BlockListBlock, {
|
|
419
|
+
...props
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
return (0, _react.createElement)(BlockWithChildLayoutStyles, {
|
|
423
|
+
block: BlockListBlock,
|
|
424
|
+
props: props
|
|
425
|
+
});
|
|
422
426
|
}, 'withChildLayoutStyles');
|
|
423
427
|
exports.withChildLayoutStyles = withChildLayoutStyles;
|
|
424
428
|
(0, _hooks.addFilter)('blocks.registerBlockType', 'core/layout/addAttribute', addAttribute);
|
|
425
429
|
(0, _hooks.addFilter)('editor.BlockListBlock', 'core/editor/layout/with-layout-styles', withLayoutStyles);
|
|
426
430
|
(0, _hooks.addFilter)('editor.BlockListBlock', 'core/editor/layout/with-child-layout-styles', withChildLayoutStyles);
|
|
427
|
-
(0, _hooks.addFilter)('editor.BlockEdit', 'core/editor/layout/with-inspector-controls',
|
|
431
|
+
(0, _hooks.addFilter)('editor.BlockEdit', 'core/editor/layout/with-inspector-controls', withLayoutControls);
|
|
428
432
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_compose","_hooks","_blocks","_data","_components","_i18n","_element","_store","_components2","_useSettings","_layouts","_blockEditingMode","_definitions","_object","_utils","_lockUnlock","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","hasBlockSupport","useLayoutClasses","blockAttributes","rootPaddingAlignment","useSelect","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","getBlockSupport","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","LAYOUT_DEFINITIONS","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","kebabCase","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","getLayoutType","blockGapSupport","useSettings","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","useBlockSettings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","useBlockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","_react","createElement","Fragment","InspectorControls","PanelBody","title","__","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","ButtonGroup","getLayoutTypes","map","Button","key","isPressed","onClick","addAttribute","_settings$attributes$","withInspectorControls","createHigherOrderComponent","BlockEdit","props","supportLayout","exports","withLayoutStyles","BlockListBlock","blockSupportsLayout","disableLayoutStyles","shouldRenderLayoutStyles","id","useInstanceId","layoutClasses","layoutClassNames","classnames","setStyleOverride","deleteStyleOverride","unlock","useDispatch","useEffect","__unstableLayoutClassNames","withChildLayoutStyles","selfStretch","flexSize","hasChildLayout","shouldRenderChildLayoutStyles","addFilter"],"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 { useSettings } from '../components/use-settings';\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 ] = useSettings( '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 ] = useSettings( '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\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\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 && 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 supportLayout = hasLayoutBlockSupport( props.name );\n\n\t\treturn [\n\t\t\tsupportLayout && <LayoutPanel key=\"layout\" { ...props } />,\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 ] = useSettings( '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( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, 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( selector, { css } );\n\t\t\treturn () => {\n\t\t\t\tdeleteStyleOverride( selector );\n\t\t\t};\n\t\t}, [ selector, 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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"}
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_compose","_hooks","_blocks","_data","_components","_i18n","_store","_components2","_useSettings","_layouts","_blockEditingMode","_definitions","_object","_utils","layoutBlockSupportKey","hasLayoutBlockSupport","blockName","hasBlockSupport","useLayoutClasses","blockAttributes","rootPaddingAlignment","useSelect","select","getSettings","blockEditorStore","__experimentalFeatures","useRootPaddingAwareAlignments","layout","default","defaultBlockLayout","getBlockSupport","usedLayout","inherit","contentSize","wideSize","type","layoutClassnames","LAYOUT_DEFINITIONS","className","baseClassName","splitBlockName","split","fullBlockName","pop","join","compoundClassName","push","orientation","kebabCase","justifyContent","flexWrap","useLayoutStyles","selector","style","fullLayoutType","getLayoutType","blockGapSupport","useSettings","hasBlockGapSupport","css","getLayoutStyle","LayoutPanel","setAttributes","attributes","name","settings","useBlockSettings","allowEditing","allowEditingSetting","defaultThemeLayout","themeSupportsLayout","supportsLayout","blockEditingMode","useBlockEditingMode","layoutBlockSupport","allowSwitching","allowInheriting","showInheritToggle","layoutType","constrainedType","displayControlsForLegacyLayouts","hasContentSizeOrLegacySettings","onChangeType","newType","onChangeLayout","newLayout","_react","createElement","Fragment","InspectorControls","PanelBody","title","__","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","help","LayoutTypeSwitcher","inspectorControls","toolBarControls","ButtonGroup","getLayoutTypes","map","Button","key","isPressed","onClick","addAttribute","_settings$attributes$","withLayoutControls","createHigherOrderComponent","BlockEdit","props","supportLayout","exports","BlockWithLayoutStyles","block","BlockListBlock","id","useInstanceId","layoutClasses","layoutClassNames","classnames","useStyleOverride","__unstableLayoutClassNames","withLayoutStyles","blockSupportsLayout","shouldRenderLayoutStyles","disableLayoutStyles","BlockWithChildLayoutStyles","_props$attributes$sty","selfStretch","flexSize","withChildLayoutStyles","_props$attributes$sty2","hasChildLayout","shouldRenderChildLayoutStyles","addFilter"],"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';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { InspectorControls } from '../components';\nimport { useSettings } from '../components/use-settings';\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, useStyleOverride } 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 ] = useSettings( '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 ] = useSettings( '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\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\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 && 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 withLayoutControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst supportLayout = hasLayoutBlockSupport( props.name );\n\n\t\treturn [\n\t\t\tsupportLayout && <LayoutPanel key=\"layout\" { ...props } />,\n\t\t\t<BlockEdit key=\"edit\" { ...props } />,\n\t\t];\n\t},\n\t'withLayoutControls'\n);\n\nfunction BlockWithLayoutStyles( { block: BlockListBlock, props } ) {\n\tconst { name, attributes } = props;\n\tconst id = useInstanceId( BlockListBlock );\n\tconst { layout } = attributes;\n\tconst { default: defaultBlockLayout } =\n\t\tgetBlockSupport( name, 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\tconst layoutClasses = useLayoutClasses( attributes, name );\n\n\t// Higher specificity to override defaults from theme.json.\n\tconst selector = `.wp-container-${ id }.wp-container-${ id }`;\n\tconst [ blockGapSupport ] = useSettings( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGapSupport !== null;\n\n\t// Get CSS string for the current layout type.\n\t// The CSS and `style` element is only output if it is not empty.\n\tconst fullLayoutType = getLayoutType( usedLayout?.type || 'default' );\n\tconst css = fullLayoutType?.getLayoutStyle?.( {\n\t\tblockName: name,\n\t\tselector,\n\t\tlayout: usedLayout,\n\t\tstyle: attributes?.style,\n\t\thasBlockGapSupport,\n\t} );\n\n\t// Attach a `wp-container-` id-based class name as well as a layout class name such as `is-layout-flex`.\n\tconst layoutClassNames = classnames(\n\t\t{\n\t\t\t[ `wp-container-${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t\t},\n\t\tlayoutClasses\n\t);\n\n\tuseStyleOverride( { css } );\n\n\treturn (\n\t\t<BlockListBlock\n\t\t\t{ ...props }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t/>\n\t);\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 blockSupportsLayout = hasLayoutBlockSupport( props.name );\n\t\tconst shouldRenderLayoutStyles = useSelect(\n\t\t\t( select ) => {\n\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\tif ( ! blockSupportsLayout ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn ! select( blockEditorStore ).getSettings()\n\t\t\t\t\t.disableLayoutStyles;\n\t\t\t},\n\t\t\t[ blockSupportsLayout ]\n\t\t);\n\n\t\tif ( ! shouldRenderLayoutStyles ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<BlockWithLayoutStyles block={ BlockListBlock } props={ props } />\n\t\t);\n\t},\n\t'withLayoutStyles'\n);\n\nfunction BlockWithChildLayoutStyles( { block: BlockListBlock, props } ) {\n\tconst layout = props.attributes.style?.layout ?? {};\n\tconst { selfStretch, flexSize } = layout;\n\n\tconst id = useInstanceId( BlockListBlock );\n\tconst selector = `.wp-container-content-${ id }`;\n\n\tlet css = '';\n\tif ( selfStretch === 'fixed' && flexSize ) {\n\t\tcss = `${ selector } {\n\t\t\t\tflex-basis: ${ flexSize };\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}`;\n\t} else if ( selfStretch === 'fill' ) {\n\t\tcss = `${ selector } {\n\t\t\t\tflex-grow: 1;\n\t\t\t}`;\n\t}\n\n\t// Attach a `wp-container-content` id-based classname.\n\tconst className = classnames( props.className, {\n\t\t[ `wp-container-content-${ id }` ]: !! css, // Only attach a container class if there is generated CSS to be attached.\n\t} );\n\n\tuseStyleOverride( { css } );\n\n\treturn <BlockListBlock { ...props } className={ className } />;\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 layout = props.attributes.style?.layout ?? {};\n\t\tconst { selfStretch, flexSize } = layout;\n\t\tconst hasChildLayout = selfStretch || flexSize;\n\n\t\tconst shouldRenderChildLayoutStyles = useSelect(\n\t\t\t( select ) => {\n\t\t\t\t// The callback returns early to avoid block editor subscription.\n\t\t\t\tif ( ! hasChildLayout ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn ! select( blockEditorStore ).getSettings()\n\t\t\t\t\t.disableLayoutStyles;\n\t\t\t},\n\t\t\t[ hasChildLayout ]\n\t\t);\n\n\t\tif ( ! shouldRenderChildLayoutStyles ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<BlockWithChildLayoutStyles\n\t\t\t\tblock={ BlockListBlock }\n\t\t\t\tprops={ props }\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\twithLayoutControls\n);\n"],"mappings":"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"}
|
package/build/hooks/position.js
CHANGED
|
@@ -13,7 +13,7 @@ exports.hasStickyOrFixedPositionValue = hasStickyOrFixedPositionValue;
|
|
|
13
13
|
exports.hasStickyPositionSupport = hasStickyPositionSupport;
|
|
14
14
|
exports.resetPosition = resetPosition;
|
|
15
15
|
exports.useIsPositionDisabled = useIsPositionDisabled;
|
|
16
|
-
exports.withPositionStyles = exports.
|
|
16
|
+
exports.withPositionStyles = exports.withPositionControls = void 0;
|
|
17
17
|
var _react = require("react");
|
|
18
18
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
19
19
|
var _i18n = require("@wordpress/i18n");
|
|
@@ -23,7 +23,6 @@ var _compose = require("@wordpress/compose");
|
|
|
23
23
|
var _data = require("@wordpress/data");
|
|
24
24
|
var _element = require("@wordpress/element");
|
|
25
25
|
var _hooks = require("@wordpress/hooks");
|
|
26
|
-
var _blockList = _interopRequireDefault(require("../components/block-list"));
|
|
27
26
|
var _useSettings = require("../components/use-settings");
|
|
28
27
|
var _inspectorControls = _interopRequireDefault(require("../components/inspector-controls"));
|
|
29
28
|
var _useBlockDisplayInformation = _interopRequireDefault(require("../components/use-block-display-information"));
|
|
@@ -309,7 +308,7 @@ function PositionPanel(props) {
|
|
|
309
308
|
*
|
|
310
309
|
* @return {Function} Wrapped component.
|
|
311
310
|
*/
|
|
312
|
-
const
|
|
311
|
+
const withPositionControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
313
312
|
const {
|
|
314
313
|
name: blockName
|
|
315
314
|
} = props;
|
|
@@ -323,7 +322,7 @@ const withInspectorControls = (0, _compose.createHigherOrderComponent)(BlockEdit
|
|
|
323
322
|
key: "edit",
|
|
324
323
|
...props
|
|
325
324
|
})];
|
|
326
|
-
}, '
|
|
325
|
+
}, 'withPositionControls');
|
|
327
326
|
|
|
328
327
|
/**
|
|
329
328
|
* Override the default block element to add the position styles.
|
|
@@ -332,7 +331,7 @@ const withInspectorControls = (0, _compose.createHigherOrderComponent)(BlockEdit
|
|
|
332
331
|
*
|
|
333
332
|
* @return {Function} Wrapped component.
|
|
334
333
|
*/
|
|
335
|
-
exports.
|
|
334
|
+
exports.withPositionControls = withPositionControls;
|
|
336
335
|
const withPositionStyles = (0, _compose.createHigherOrderComponent)(BlockListBlock => props => {
|
|
337
336
|
const {
|
|
338
337
|
name,
|
|
@@ -342,7 +341,6 @@ const withPositionStyles = (0, _compose.createHigherOrderComponent)(BlockListBlo
|
|
|
342
341
|
const isPositionDisabled = useIsPositionDisabled(props);
|
|
343
342
|
const allowPositionStyles = hasPositionBlockSupport && !isPositionDisabled;
|
|
344
343
|
const id = (0, _compose.useInstanceId)(BlockListBlock);
|
|
345
|
-
const element = (0, _element.useContext)(_blockList.default.__unstableElementContext);
|
|
346
344
|
|
|
347
345
|
// Higher specificity to override defaults in editor UI.
|
|
348
346
|
const positionSelector = `.wp-container-${id}.wp-container-${id}`;
|
|
@@ -362,12 +360,15 @@ const withPositionStyles = (0, _compose.createHigherOrderComponent)(BlockListBlo
|
|
|
362
360
|
// Only attach a container class if there is generated CSS to be attached.
|
|
363
361
|
[`is-position-${attributes?.style?.position?.type}`]: allowPositionStyles && !!css && !!attributes?.style?.position?.type
|
|
364
362
|
});
|
|
365
|
-
|
|
363
|
+
(0, _utils.useStyleOverride)({
|
|
364
|
+
css
|
|
365
|
+
});
|
|
366
|
+
return (0, _react.createElement)(BlockListBlock, {
|
|
366
367
|
...props,
|
|
367
368
|
className: className
|
|
368
|
-
})
|
|
369
|
+
});
|
|
369
370
|
}, 'withPositionStyles');
|
|
370
371
|
exports.withPositionStyles = withPositionStyles;
|
|
371
372
|
(0, _hooks.addFilter)('editor.BlockListBlock', 'core/editor/position/with-position-styles', withPositionStyles);
|
|
372
|
-
(0, _hooks.addFilter)('editor.BlockEdit', 'core/editor/position/with-inspector-controls',
|
|
373
|
+
(0, _hooks.addFilter)('editor.BlockEdit', 'core/editor/position/with-inspector-controls', withPositionControls);
|
|
373
374
|
//# sourceMappingURL=position.js.map
|