@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +33 -3
- package/build/components/block-canvas/index.js +107 -0
- package/build/components/block-canvas/index.js.map +1 -0
- package/build/components/block-inspector/index.js +4 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +19 -4
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +66 -0
- package/build/components/block-patterns-paging/index.js.map +1 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -7
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +1 -0
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +5 -1
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +1 -1
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/border-radius-control/linked-button.js +2 -4
- package/build/components/border-radius-control/linked-button.js.map +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/default-block-appender/index.native.js +20 -1
- package/build/components/default-block-appender/index.native.js.map +1 -1
- package/build/components/duotone/utils.js +68 -0
- package/build/components/duotone/utils.js.map +1 -1
- package/build/components/editor-styles/index.js +28 -9
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/global-styles/hooks.js +2 -101
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +61 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -0
- package/build/components/global-styles/index.js +11 -17
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +19 -15
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +67 -33
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +2 -5
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-editor/use-transform-image.js +9 -9
- package/build/components/image-editor/use-transform-image.js.map +1 -1
- package/build/components/index.js +8 -12
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +6 -5
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-source-filter.js +54 -0
- package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-sync-filter.js +46 -0
- package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +91 -45
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build/components/inserter/hooks/use-patterns-state.js +21 -10
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/menu.js +13 -11
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-results.js +4 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -12
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls/block-support-slot-container.js +12 -1
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build/components/inspector-controls/fill.js +24 -13
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/groups.js +5 -3
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +13 -0
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/components/link-control/index.js +12 -2
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +1 -3
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +13 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +29 -24
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +11 -11
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +2 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/constants.js +30 -0
- package/build/components/media-upload/constants.js.map +1 -0
- package/build/components/media-upload/index.native.js +63 -53
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +1 -1
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/index.js +34 -35
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +14 -32
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/multiline.js +95 -0
- package/build/components/rich-text/multiline.js.map +1 -0
- package/build/components/rich-text/split-value.js +10 -16
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-enter.js +31 -40
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +18 -33
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/use-block-commands/index.js +30 -18
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +5 -2
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/hooks/background.js +258 -0
- package/build/hooks/background.js.map +1 -0
- package/build/hooks/block-hooks.js +188 -0
- package/build/hooks/block-hooks.js.map +1 -0
- package/build/hooks/block-rename-ui.js +160 -0
- package/build/hooks/block-rename-ui.js.map +1 -0
- package/build/hooks/duotone.js +29 -42
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +2 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +31 -14
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +4 -2
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +10 -3
- package/build/hooks/style.js.map +1 -1
- package/build/private-apis.js +2 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +33 -10
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +42 -8
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +23 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +43 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +84 -23
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +0 -4
- package/build/store/utils.js.map +1 -1
- package/build-module/components/block-canvas/index.js +97 -0
- package/build-module/components/block-canvas/index.js.map +1 -0
- package/build-module/components/block-inspector/index.js +4 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +20 -5
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +59 -0
- package/build-module/components/block-patterns-paging/index.js.map +1 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +4 -7
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +1 -0
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +5 -1
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +1 -1
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/border-radius-control/linked-button.js +2 -4
- package/build-module/components/border-radius-control/linked-button.js.map +1 -1
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/default-block-appender/index.native.js +20 -1
- package/build-module/components/default-block-appender/index.native.js.map +1 -1
- package/build-module/components/duotone/utils.js +65 -0
- package/build-module/components/duotone/utils.js.map +1 -1
- package/build-module/components/editor-styles/index.js +28 -9
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -100
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +53 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
- package/build-module/components/global-styles/index.js +2 -2
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +18 -16
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +66 -33
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +2 -5
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-editor/use-transform-image.js +9 -9
- package/build-module/components/image-editor/use-transform-image.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
- package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
- package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +87 -46
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
- package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/menu.js +13 -11
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-results.js +4 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -12
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +25 -14
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +5 -3
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +15 -1
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/components/link-control/index.js +12 -2
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +1 -3
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +13 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +30 -25
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +2 -2
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +7 -7
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +2 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/constants.js +14 -0
- package/build-module/components/media-upload/constants.js.map +1 -0
- package/build-module/components/media-upload/index.native.js +53 -34
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +1 -1
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +35 -37
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +15 -33
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/multiline.js +87 -0
- package/build-module/components/rich-text/multiline.js.map +1 -0
- package/build-module/components/rich-text/split-value.js +10 -16
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +33 -42
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +19 -34
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +2 -2
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +28 -16
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -2
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/hooks/background.js +244 -0
- package/build-module/hooks/background.js.map +1 -0
- package/build-module/hooks/block-hooks.js +181 -0
- package/build-module/hooks/block-hooks.js.map +1 -0
- package/build-module/hooks/block-rename-ui.js +153 -0
- package/build-module/hooks/block-rename-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +26 -39
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -2
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +33 -16
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +4 -2
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +10 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/private-apis.js +2 -0
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +33 -10
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +39 -8
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +21 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +41 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +78 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +0 -4
- package/build-module/store/utils.js.map +1 -1
- package/build-style/content-rtl.css +0 -1
- package/build-style/content.css +0 -1
- package/build-style/style-rtl.css +170 -127
- package/build-style/style.css +170 -127
- package/package.json +32 -32
- package/src/components/block-canvas/index.js +108 -0
- package/src/components/block-inspector/index.js +5 -1
- package/src/components/block-list/content.scss +0 -1
- package/src/components/block-patterns-list/index.js +32 -7
- package/src/components/block-patterns-list/style.scss +26 -9
- package/src/components/block-patterns-paging/index.js +92 -0
- package/src/components/block-patterns-paging/style.scss +42 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
- package/src/components/block-settings-menu-controls/index.js +4 -9
- package/src/components/block-styles/index.js +1 -0
- package/src/components/block-styles/style.scss +3 -3
- package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
- package/src/components/block-tools/block-contextual-toolbar.js +16 -5
- package/src/components/block-tools/block-selection-button.js +9 -1
- package/src/components/block-tools/style.scss +0 -98
- package/src/components/border-radius-control/input-controls.js +1 -1
- package/src/components/border-radius-control/linked-button.js +8 -11
- package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
- package/src/components/colors/with-colors.js +3 -2
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
- package/src/components/default-block-appender/index.native.js +26 -3
- package/src/components/duotone/utils.js +65 -0
- package/src/components/editor-styles/index.js +32 -23
- package/src/components/global-styles/hooks.js +4 -112
- package/src/components/global-styles/image-settings-panel.js +71 -0
- package/src/components/global-styles/index.js +4 -3
- package/src/components/global-styles/use-global-styles-output.js +25 -16
- package/src/components/global-styles/utils.js +1 -2
- package/src/components/iframe/index.js +72 -33
- package/src/components/image-editor/use-save-image.js +2 -9
- package/src/components/image-editor/use-transform-image.js +9 -9
- package/src/components/index.js +1 -1
- package/src/components/index.native.js +2 -2
- package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
- package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
- package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
- package/src/components/inserter/block-patterns-source-filter.js +40 -0
- package/src/components/inserter/block-patterns-sync-filter.js +35 -0
- package/src/components/inserter/block-patterns-tab.js +168 -57
- package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
- package/src/components/inserter/hooks/use-patterns-state.js +27 -16
- package/src/components/inserter/menu.js +15 -17
- package/src/components/inserter/search-results.js +6 -4
- package/src/components/inserter/style.scss +23 -2
- package/src/components/inserter/tabs.js +2 -12
- package/src/components/inserter/test/index.native.js +8 -12
- package/src/components/inspector-controls/block-support-slot-container.js +19 -3
- package/src/components/inspector-controls/fill.js +28 -14
- package/src/components/inspector-controls/groups.js +6 -2
- package/src/components/inspector-controls/slot.js +28 -3
- package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
- package/src/components/link-control/index.js +13 -0
- package/src/components/link-control/style.scss +23 -2
- package/src/components/link-control/test/index.js +88 -6
- package/src/components/list-view/block-select-button.js +1 -3
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/style.scss +1 -2
- package/src/components/list-view/use-block-selection.js +38 -32
- package/src/components/media-placeholder/README.md +2 -2
- package/src/components/media-placeholder/index.js +2 -2
- package/src/components/media-placeholder/index.native.js +11 -12
- package/src/components/media-replace-flow/index.js +2 -2
- package/src/components/media-replace-flow/test/index.js +5 -23
- package/src/components/media-upload/README.md +3 -2
- package/src/components/media-upload/constants.js +15 -0
- package/src/components/media-upload/index.native.js +66 -40
- package/src/components/media-upload/style.native.scss +4 -0
- package/src/components/media-upload/test/index.native.js +2 -2
- package/src/components/preview-options/README.md +7 -0
- package/src/components/preview-options/index.js +1 -1
- package/src/components/rich-text/index.js +48 -44
- package/src/components/rich-text/index.native.js +14 -42
- package/src/components/rich-text/multiline.js +121 -0
- package/src/components/rich-text/split-value.js +10 -35
- package/src/components/rich-text/use-enter.js +32 -42
- package/src/components/rich-text/use-paste-handler.js +16 -40
- package/src/components/spacing-sizes-control/style.scss +5 -7
- package/src/components/spacing-sizes-control/utils.js +1 -2
- package/src/components/use-block-commands/index.js +28 -20
- package/src/components/use-block-display-information/index.js +3 -0
- package/src/hooks/background.js +288 -0
- package/src/hooks/background.scss +57 -0
- package/src/hooks/block-hooks.js +257 -0
- package/src/hooks/block-hooks.scss +16 -0
- package/src/hooks/block-rename-ui.js +230 -0
- package/src/hooks/block-rename-ui.scss +3 -0
- package/src/hooks/duotone.js +42 -43
- package/src/hooks/index.js +2 -2
- package/src/hooks/layout.js +31 -33
- package/src/hooks/position.js +4 -3
- package/src/hooks/style.js +11 -2
- package/src/hooks/test/align.native.js +4 -3
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +52 -10
- package/src/store/private-actions.js +37 -6
- package/src/store/private-selectors.js +21 -0
- package/src/store/reducer.js +38 -0
- package/src/store/selectors.js +107 -26
- package/src/store/test/actions.js +19 -8
- package/src/store/test/private-actions.js +17 -0
- package/src/store/test/reducer.js +25 -0
- package/src/store/test/selectors.js +130 -123
- package/src/store/utils.js +3 -10
- package/src/style.scss +4 -0
- package/build/components/duotone/components.js +0 -135
- package/build/components/duotone/components.js.map +0 -1
- package/build/components/duotone/index.js +0 -38
- package/build/components/duotone/index.js.map +0 -1
- package/build/components/global-styles/behaviors-panel.js +0 -64
- package/build/components/global-styles/behaviors-panel.js.map +0 -1
- package/build/components/inserter/reusable-blocks-tab.js +0 -85
- package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build/hooks/auto-inserting-blocks.js +0 -174
- package/build/hooks/auto-inserting-blocks.js.map +0 -1
- package/build/hooks/behaviors.js +0 -173
- package/build/hooks/behaviors.js.map +0 -1
- package/build-module/components/duotone/components.js +0 -126
- package/build-module/components/duotone/components.js.map +0 -1
- package/build-module/components/duotone/index.js +0 -3
- package/build-module/components/duotone/index.js.map +0 -1
- package/build-module/components/global-styles/behaviors-panel.js +0 -57
- package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
- package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
- package/build-module/hooks/auto-inserting-blocks.js +0 -167
- package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
- package/build-module/hooks/behaviors.js +0 -166
- package/build-module/hooks/behaviors.js.map +0 -1
- package/src/components/duotone/components.js +0 -133
- package/src/components/duotone/index.js +0 -7
- package/src/components/global-styles/behaviors-panel.js +0 -71
- package/src/components/inserter/reusable-blocks-tab.js +0 -84
- package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
- package/src/hooks/auto-inserting-blocks.js +0 -232
- package/src/hooks/behaviors.js +0 -206
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_components","require","_i18n","SYNC_TYPES","full","unsynced","exports","patternSyncOptions","value","label","__","BlockPatternsSyncFilter","setPatternSyncFilter","patternSyncFilter","_element","createElement","SelectControl","className","options","onChange"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-sync-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nexport const SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nconst patternSyncOptions = [\n\t{ value: 'all', label: __( 'All' ) },\n\t{ value: SYNC_TYPES.full, label: __( 'Synced' ) },\n\t{ value: SYNC_TYPES.unsynced, label: __( 'Standard' ) },\n];\n\nexport function BlockPatternsSyncFilter( {\n\tsetPatternSyncFilter,\n\tpatternSyncFilter,\n} ) {\n\treturn (\n\t\t<SelectControl\n\t\t\tclassName=\"block-editor-patterns__sync-status-filter\"\n\t\t\tlabel={ __( 'Syncing' ) }\n\t\t\toptions={ patternSyncOptions }\n\t\t\tvalue={ patternSyncFilter }\n\t\t\tonChange={ setPatternSyncFilter }\n\t\t\taria-label={ __( 'Filter patterns by sync type' ) }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACO,MAAME,UAAU,GAAG;EACzBC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;AAACC,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAEF,MAAMI,kBAAkB,GAAG,CAC1B;EAAEC,KAAK,EAAE,KAAK;EAAEC,KAAK,EAAE,IAAAC,QAAE,EAAE,KAAM;AAAE,CAAC,EACpC;EAAEF,KAAK,EAAEL,UAAU,CAACC,IAAI;EAAEK,KAAK,EAAE,IAAAC,QAAE,EAAE,QAAS;AAAE,CAAC,EACjD;EAAEF,KAAK,EAAEL,UAAU,CAACE,QAAQ;EAAEI,KAAK,EAAE,IAAAC,QAAE,EAAE,UAAW;AAAE,CAAC,CACvD;AAEM,SAASC,uBAAuBA,CAAE;EACxCC,oBAAoB;EACpBC;AACD,CAAC,EAAG;EACH,OACC,IAAAC,QAAA,CAAAC,aAAA,EAACf,WAAA,CAAAgB,aAAa;IACbC,SAAS,EAAC,2CAA2C;IACrDR,KAAK,EAAG,IAAAC,QAAE,EAAE,SAAU,CAAG;IACzBQ,OAAO,EAAGX,kBAAoB;IAC9BC,KAAK,EAAGK,iBAAmB;IAC3BM,QAAQ,EAAGP,oBAAsB;IACjC,cAAa,IAAAF,QAAE,EAAE,8BAA+B;EAAG,CACnD,CAAC;AAEJ"}
|
|
@@ -6,17 +6,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.BlockPatternsCategoryDialog = BlockPatternsCategoryDialog;
|
|
8
8
|
exports.BlockPatternsCategoryPanel = BlockPatternsCategoryPanel;
|
|
9
|
-
exports.default = void 0;
|
|
9
|
+
exports.default = exports.allPatternsCategory = void 0;
|
|
10
|
+
exports.isPatternFiltered = isPatternFiltered;
|
|
11
|
+
exports.usePatternsCategories = usePatternsCategories;
|
|
10
12
|
var _element = require("@wordpress/element");
|
|
11
13
|
var _i18n = require("@wordpress/i18n");
|
|
12
14
|
var _compose = require("@wordpress/compose");
|
|
13
15
|
var _components = require("@wordpress/components");
|
|
14
16
|
var _icons = require("@wordpress/icons");
|
|
15
17
|
var _dom = require("@wordpress/dom");
|
|
18
|
+
var _a11y = require("@wordpress/a11y");
|
|
16
19
|
var _usePatternsState = _interopRequireDefault(require("./hooks/use-patterns-state"));
|
|
17
20
|
var _blockPatternsList = _interopRequireDefault(require("../block-patterns-list"));
|
|
18
21
|
var _explorer = _interopRequireDefault(require("./block-patterns-explorer/explorer"));
|
|
19
22
|
var _mobileTabNavigation = _interopRequireDefault(require("./mobile-tab-navigation"));
|
|
23
|
+
var _blockPatternsPaging = _interopRequireDefault(require("../block-patterns-paging"));
|
|
24
|
+
var _usePatternsPaging = _interopRequireDefault(require("./hooks/use-patterns-paging"));
|
|
25
|
+
var _blockPatternsSourceFilter = _interopRequireWildcard(require("./block-patterns-source-filter"));
|
|
26
|
+
var _blockPatternsSyncFilter = require("./block-patterns-sync-filter");
|
|
27
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
29
|
/**
|
|
21
30
|
* WordPress dependencies
|
|
22
31
|
*/
|
|
@@ -26,12 +35,29 @@ var _mobileTabNavigation = _interopRequireDefault(require("./mobile-tab-navigati
|
|
|
26
35
|
*/
|
|
27
36
|
|
|
28
37
|
const noop = () => {};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
const allPatternsCategory = {
|
|
39
|
+
name: 'allPatterns',
|
|
40
|
+
label: (0, _i18n.__)('All categories')
|
|
41
|
+
};
|
|
42
|
+
exports.allPatternsCategory = allPatternsCategory;
|
|
43
|
+
function isPatternFiltered(pattern, sourceFilter, syncFilter) {
|
|
44
|
+
if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.theme && pattern.name.startsWith('core/block')) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && !pattern.id) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && syncFilter === _blockPatternsSyncFilter.SYNC_TYPES.full && pattern.syncStatus !== '') {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && syncFilter === _blockPatternsSyncFilter.SYNC_TYPES.unsynced && pattern.syncStatus !== 'unsynced') {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
function usePatternsCategories(rootClientId, sourceFilter = 'all') {
|
|
59
|
+
const [patterns, allCategories] = (0, _usePatternsState.default)(undefined, rootClientId);
|
|
60
|
+
const filteredPatterns = (0, _element.useMemo)(() => sourceFilter === 'all' ? patterns : patterns.filter(pattern => !isPatternFiltered(pattern, sourceFilter)), [sourceFilter, patterns]);
|
|
35
61
|
const hasRegisteredCategory = (0, _element.useCallback)(pattern => {
|
|
36
62
|
if (!pattern.categories || !pattern.categories.length) {
|
|
37
63
|
return false;
|
|
@@ -41,27 +67,23 @@ function usePatternsCategories(rootClientId) {
|
|
|
41
67
|
|
|
42
68
|
// Remove any empty categories.
|
|
43
69
|
const populatedCategories = (0, _element.useMemo)(() => {
|
|
44
|
-
const categories = allCategories.filter(category =>
|
|
45
|
-
|
|
46
|
-
}, {
|
|
47
|
-
name: bName
|
|
48
|
-
}) => {
|
|
49
|
-
// Sort categories according to `patternCategoriesOrder`.
|
|
50
|
-
let aIndex = patternCategoriesOrder.indexOf(aName);
|
|
51
|
-
let bIndex = patternCategoriesOrder.indexOf(bName);
|
|
52
|
-
// All other categories should come after that.
|
|
53
|
-
if (aIndex < 0) aIndex = patternCategoriesOrder.length;
|
|
54
|
-
if (bIndex < 0) bIndex = patternCategoriesOrder.length;
|
|
55
|
-
return aIndex - bIndex;
|
|
56
|
-
});
|
|
57
|
-
if (allPatterns.some(pattern => !hasRegisteredCategory(pattern)) && !categories.find(category => category.name === 'uncategorized')) {
|
|
70
|
+
const categories = allCategories.filter(category => filteredPatterns.some(pattern => pattern.categories?.includes(category.name))).sort((a, b) => a.label.localeCompare(b.label));
|
|
71
|
+
if (filteredPatterns.some(pattern => !hasRegisteredCategory(pattern)) && !categories.find(category => category.name === 'uncategorized')) {
|
|
58
72
|
categories.push({
|
|
59
73
|
name: 'uncategorized',
|
|
60
74
|
label: (0, _i18n._x)('Uncategorized')
|
|
61
75
|
});
|
|
62
76
|
}
|
|
77
|
+
if (filteredPatterns.length > 0) {
|
|
78
|
+
categories.unshift({
|
|
79
|
+
name: allPatternsCategory.name,
|
|
80
|
+
label: allPatternsCategory.label
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
(0, _a11y.speak)((0, _i18n.sprintf)( /* translators: %d: number of categories . */
|
|
84
|
+
(0, _i18n._n)('%d category button displayed.', '%d category buttons displayed.', categories.length), categories.length));
|
|
63
85
|
return categories;
|
|
64
|
-
}, [allCategories,
|
|
86
|
+
}, [allCategories, filteredPatterns, hasRegisteredCategory]);
|
|
65
87
|
return populatedCategories;
|
|
66
88
|
}
|
|
67
89
|
function BlockPatternsCategoryDialog({
|
|
@@ -69,7 +91,8 @@ function BlockPatternsCategoryDialog({
|
|
|
69
91
|
onInsert,
|
|
70
92
|
onHover,
|
|
71
93
|
category,
|
|
72
|
-
showTitlesAsTooltip
|
|
94
|
+
showTitlesAsTooltip,
|
|
95
|
+
patternFilter
|
|
73
96
|
}) {
|
|
74
97
|
const container = (0, _element.useRef)();
|
|
75
98
|
(0, _element.useEffect)(() => {
|
|
@@ -87,7 +110,8 @@ function BlockPatternsCategoryDialog({
|
|
|
87
110
|
onInsert: onInsert,
|
|
88
111
|
onHover: onHover,
|
|
89
112
|
category: category,
|
|
90
|
-
showTitlesAsTooltip: showTitlesAsTooltip
|
|
113
|
+
showTitlesAsTooltip: showTitlesAsTooltip,
|
|
114
|
+
patternFilter: patternFilter
|
|
91
115
|
}));
|
|
92
116
|
}
|
|
93
117
|
function BlockPatternsCategoryPanel({
|
|
@@ -95,12 +119,21 @@ function BlockPatternsCategoryPanel({
|
|
|
95
119
|
onInsert,
|
|
96
120
|
onHover = noop,
|
|
97
121
|
category,
|
|
98
|
-
showTitlesAsTooltip
|
|
122
|
+
showTitlesAsTooltip,
|
|
123
|
+
patternFilter
|
|
99
124
|
}) {
|
|
100
|
-
const [allPatterns,,
|
|
101
|
-
const
|
|
125
|
+
const [allPatterns,, onClickPattern] = (0, _usePatternsState.default)(onInsert, rootClientId);
|
|
126
|
+
const [patternSyncFilter, setPatternSyncFilter] = (0, _element.useState)('all');
|
|
127
|
+
const availableCategories = usePatternsCategories(rootClientId, patternFilter);
|
|
128
|
+
const container = (0, _element.useRef)();
|
|
102
129
|
const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
|
|
103
130
|
var _pattern$categories$f;
|
|
131
|
+
if (isPatternFiltered(pattern, patternFilter, patternSyncFilter)) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if (category.name === allPatternsCategory.name) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
104
137
|
if (category.name !== 'uncategorized') {
|
|
105
138
|
return pattern.categories?.includes(category.name);
|
|
106
139
|
}
|
|
@@ -109,28 +142,33 @@ function BlockPatternsCategoryPanel({
|
|
|
109
142
|
// or with no available category.
|
|
110
143
|
const availablePatternCategories = (_pattern$categories$f = pattern.categories?.filter(cat => availableCategories.find(availableCategory => availableCategory.name === cat))) !== null && _pattern$categories$f !== void 0 ? _pattern$categories$f : [];
|
|
111
144
|
return availablePatternCategories.length === 0;
|
|
112
|
-
}), [allPatterns, availableCategories, category.name]);
|
|
113
|
-
const
|
|
145
|
+
}), [allPatterns, availableCategories, category.name, patternFilter, patternSyncFilter]);
|
|
146
|
+
const pagingProps = (0, _usePatternsPaging.default)(currentCategoryPatterns, category, container);
|
|
114
147
|
|
|
115
148
|
// Hide block pattern preview on unmount.
|
|
149
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
150
|
(0, _element.useEffect)(() => () => onHover(null), []);
|
|
117
|
-
if (!currentCategoryPatterns.length) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
151
|
return (0, _element.createElement)("div", {
|
|
121
|
-
className: "block-editor-inserter__patterns-category-panel"
|
|
152
|
+
className: "block-editor-inserter__patterns-category-panel",
|
|
153
|
+
ref: container
|
|
122
154
|
}, (0, _element.createElement)("div", {
|
|
123
155
|
className: "block-editor-inserter__patterns-category-panel-title"
|
|
124
|
-
}, category.label), (0, _element.createElement)("p", null, category.description), (0, _element.createElement)(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
156
|
+
}, category.label), (0, _element.createElement)("p", null, category.description), patternFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && (0, _element.createElement)(_blockPatternsSyncFilter.BlockPatternsSyncFilter, {
|
|
157
|
+
patternSyncFilter: patternSyncFilter,
|
|
158
|
+
setPatternSyncFilter: setPatternSyncFilter
|
|
159
|
+
}), !currentCategoryPatterns.length && (0, _element.createElement)("div", null, (0, _i18n.__)('No results found')), currentCategoryPatterns.length > 0 && (0, _element.createElement)(_blockPatternsList.default, {
|
|
160
|
+
shownPatterns: pagingProps.categoryPatternsAsyncList,
|
|
161
|
+
blockPatterns: pagingProps.categoryPatterns,
|
|
162
|
+
onClickPattern: onClickPattern,
|
|
128
163
|
onHover: onHover,
|
|
129
164
|
label: category.label,
|
|
130
165
|
orientation: "vertical",
|
|
131
|
-
category: category.
|
|
166
|
+
category: category.name,
|
|
132
167
|
isDraggable: true,
|
|
133
|
-
showTitlesAsTooltip: showTitlesAsTooltip
|
|
168
|
+
showTitlesAsTooltip: showTitlesAsTooltip,
|
|
169
|
+
patternFilter: patternFilter
|
|
170
|
+
}), pagingProps.numPages > 1 && (0, _element.createElement)(_blockPatternsPaging.default, {
|
|
171
|
+
...pagingProps
|
|
134
172
|
}));
|
|
135
173
|
}
|
|
136
174
|
function BlockPatternsTabs({
|
|
@@ -140,20 +178,27 @@ function BlockPatternsTabs({
|
|
|
140
178
|
rootClientId
|
|
141
179
|
}) {
|
|
142
180
|
const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
|
|
143
|
-
const
|
|
181
|
+
const [patternSourceFilter, setPatternSourceFilter] = (0, _element.useState)('all');
|
|
182
|
+
const categories = usePatternsCategories(rootClientId, patternSourceFilter);
|
|
144
183
|
const initialCategory = selectedCategory || categories[0];
|
|
145
184
|
const isMobile = (0, _compose.useViewportMatch)('medium', '<');
|
|
146
185
|
return (0, _element.createElement)(_element.Fragment, null, !isMobile && (0, _element.createElement)("div", {
|
|
147
186
|
className: "block-editor-inserter__block-patterns-tabs-container"
|
|
148
187
|
}, (0, _element.createElement)("nav", {
|
|
149
|
-
"aria-label": (0, _i18n.__)('Block pattern categories')
|
|
150
|
-
}, (0, _element.createElement)(_components.__experimentalItemGroup, {
|
|
151
|
-
role: "list",
|
|
188
|
+
"aria-label": (0, _i18n.__)('Block pattern categories'),
|
|
152
189
|
className: "block-editor-inserter__block-patterns-tabs"
|
|
190
|
+
}, (0, _element.createElement)(_blockPatternsSourceFilter.default, {
|
|
191
|
+
value: patternSourceFilter,
|
|
192
|
+
onChange: value => {
|
|
193
|
+
setPatternSourceFilter(value);
|
|
194
|
+
onSelectCategory(allPatternsCategory, value);
|
|
195
|
+
}
|
|
196
|
+
}), (0, _element.createElement)(_components.__experimentalItemGroup, {
|
|
197
|
+
role: "list"
|
|
153
198
|
}, categories.map(category => (0, _element.createElement)(_components.__experimentalItem, {
|
|
154
199
|
role: "listitem",
|
|
155
200
|
key: category.name,
|
|
156
|
-
onClick: () => onSelectCategory(category),
|
|
201
|
+
onClick: () => onSelectCategory(category, patternSourceFilter),
|
|
157
202
|
className: category === selectedCategory ? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category' : 'block-editor-inserter__patterns-category',
|
|
158
203
|
"aria-label": category.label,
|
|
159
204
|
"aria-current": category === selectedCategory ? 'true' : undefined
|
|
@@ -175,7 +220,8 @@ function BlockPatternsTabs({
|
|
|
175
220
|
})), showPatternsExplorer && (0, _element.createElement)(_explorer.default, {
|
|
176
221
|
initialCategory: initialCategory,
|
|
177
222
|
patternCategories: categories,
|
|
178
|
-
onModalClose: () => setShowPatternsExplorer(false)
|
|
223
|
+
onModalClose: () => setShowPatternsExplorer(false),
|
|
224
|
+
rootClientId: rootClientId
|
|
179
225
|
}));
|
|
180
226
|
}
|
|
181
227
|
var _default = BlockPatternsTabs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","noop","patternCategoriesOrder","usePatternsCategories","rootClientId","allPatterns","allCategories","usePatternsState","undefined","hasRegisteredCategory","useCallback","pattern","categories","length","some","cat","category","name","populatedCategories","useMemo","filter","includes","sort","aName","bName","aIndex","indexOf","bIndex","find","push","label","_x","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","categoryPatternsList","useAsyncList","description","default","shownPatterns","blockPatterns","onClickPattern","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","useState","initialCategory","isMobile","useViewportMatch","Fragment","__","__experimentalItemGroup","role","map","__experimentalItem","key","__experimentalHStack","FlexBlock","Icon","icon","isRTL","chevronLeft","chevronRight","Button","variant","patternCategories","onModalClose","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, isRTL } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nconst noop = () => {};\n\n// Preferred order of pattern categories. Any other categories should\n// be at the bottom without any re-ordering.\nconst patternCategoriesOrder = [\n\t'custom',\n\t'featured',\n\t'posts',\n\t'text',\n\t'gallery',\n\t'call-to-action',\n\t'banner',\n\t'header',\n\t'footer',\n];\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: aName }, { name: bName } ) => {\n\t\t\t\t// Sort categories according to `patternCategoriesOrder`.\n\t\t\t\tlet aIndex = patternCategoriesOrder.indexOf( aName );\n\t\t\t\tlet bIndex = patternCategoriesOrder.indexOf( bName );\n\t\t\t\t// All other categories should come after that.\n\t\t\t\tif ( aIndex < 0 ) aIndex = patternCategoriesOrder.length;\n\t\t\t\tif ( bIndex < 0 ) bIndex = patternCategoriesOrder.length;\n\t\t\t\treturn aIndex - bIndex;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allCategories, allPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, availableCategories, category.name ]\n\t);\n\n\tconst categoryPatternsList = useAsyncList( currentCategoryPatterns );\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ categoryPatternsList }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\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</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_a11y","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","_blockPatternsPaging","_usePatternsPaging","_blockPatternsSourceFilter","_interopRequireWildcard","_blockPatternsSyncFilter","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","noop","allPatternsCategory","name","label","__","exports","isPatternFiltered","pattern","sourceFilter","syncFilter","PATTERN_TYPES","theme","startsWith","user","id","SYNC_TYPES","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","usePatternsState","undefined","filteredPatterns","useMemo","filter","hasRegisteredCategory","useCallback","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","_x","unshift","speak","sprintf","_n","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","useState","availableCategories","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","usePatternsPaging","description","BlockPatternsSyncFilter","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","numPages","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","patternSourceFilter","setPatternSourceFilter","initialCategory","isMobile","useViewportMatch","Fragment","value","onChange","__experimentalItemGroup","role","map","__experimentalItem","onClick","__experimentalHStack","FlexBlock","Icon","icon","isRTL","chevronLeft","chevronRight","Button","variant","patternCategories","onModalClose","_default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport BlockPatternsPaging from '../block-patterns-paging';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tPATTERN_TYPES,\n\tdefault as BlockPatternsSourceFilter,\n} from './block-patterns-source-filter';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n} from './block-patterns-sync-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All categories' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\tpattern.name.startsWith( 'core/block' )\n\t) {\n\t\treturn true;\n\t}\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tsyncFilter === SYNC_TYPES.full &&\n\t\tpattern.syncStatus !== ''\n\t) {\n\t\treturn true;\n\t}\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced'\n\t) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternFilter\n\t);\n\tconst container = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tcontainer\n\t);\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-inserter__patterns-category-panel\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t{ patternFilter === PATTERN_TYPES.user && (\n\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\tsetPatternSyncFilter={ setPatternSyncFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t<div>{ __( 'No results found' ) }</div>\n\t\t\t) }\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ pagingProps.numPages > 1 && (\n\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst categories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockPatternsSourceFilter\n\t\t\t\t\t\t\tvalue={ patternSourceFilter }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetPatternSourceFilter( value );\n\t\t\t\t\t\t\t\tonSelectCategory( allPatternsCategory, value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory(\n\t\t\t\t\t\t\t\t\t\t\tcategory,\n\t\t\t\t\t\t\t\t\t\t\tpatternSourceFilter\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\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\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</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = usePatternsPaging;
|
|
7
|
+
var _element = require("@wordpress/element");
|
|
8
|
+
var _compose = require("@wordpress/compose");
|
|
9
|
+
var _dom = require("@wordpress/dom");
|
|
10
|
+
/**
|
|
11
|
+
* WordPress dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const PAGE_SIZE = 20;
|
|
15
|
+
const INITIAL_INSERTER_RESULTS = 5;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Supplies values needed to page the patterns list client side.
|
|
19
|
+
*
|
|
20
|
+
* @param {Array} currentCategoryPatterns An array of the current patterns to display.
|
|
21
|
+
* @param {string} currentCategory The currently selected category.
|
|
22
|
+
* @param {Object} scrollContainerRef Ref of container to to find scroll container for when moving between pages.
|
|
23
|
+
* @param {string} currentFilter The currently search filter.
|
|
24
|
+
*
|
|
25
|
+
* @return {Object} Returns the relevant paging values. (totalItems, categoryPatternsList, numPages, changePage, currentPage)
|
|
26
|
+
*/
|
|
27
|
+
function usePatternsPaging(currentCategoryPatterns, currentCategory, scrollContainerRef, currentFilter = '') {
|
|
28
|
+
const [currentPage, setCurrentPage] = (0, _element.useState)(1);
|
|
29
|
+
const previousCategory = (0, _compose.usePrevious)(currentCategory);
|
|
30
|
+
const previousFilter = (0, _compose.usePrevious)(currentFilter);
|
|
31
|
+
if ((previousCategory !== currentCategory || previousFilter !== currentFilter) && currentPage !== 1) {
|
|
32
|
+
setCurrentPage(1);
|
|
33
|
+
}
|
|
34
|
+
const totalItems = currentCategoryPatterns.length;
|
|
35
|
+
const pageIndex = currentPage - 1;
|
|
36
|
+
const categoryPatterns = (0, _element.useMemo)(() => {
|
|
37
|
+
return currentCategoryPatterns.slice(pageIndex * PAGE_SIZE, pageIndex * PAGE_SIZE + PAGE_SIZE);
|
|
38
|
+
}, [pageIndex, currentCategoryPatterns]);
|
|
39
|
+
const categoryPatternsAsyncList = (0, _compose.useAsyncList)(categoryPatterns, {
|
|
40
|
+
step: INITIAL_INSERTER_RESULTS
|
|
41
|
+
});
|
|
42
|
+
const numPages = Math.ceil(currentCategoryPatterns.length / PAGE_SIZE);
|
|
43
|
+
const changePage = page => {
|
|
44
|
+
const scrollContainer = (0, _dom.getScrollContainer)(scrollContainerRef?.current);
|
|
45
|
+
scrollContainer?.scrollTo(0, 0);
|
|
46
|
+
setCurrentPage(page);
|
|
47
|
+
};
|
|
48
|
+
return {
|
|
49
|
+
totalItems,
|
|
50
|
+
categoryPatterns,
|
|
51
|
+
categoryPatternsAsyncList,
|
|
52
|
+
numPages,
|
|
53
|
+
changePage,
|
|
54
|
+
currentPage
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=use-patterns-paging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_element","require","_compose","_dom","PAGE_SIZE","INITIAL_INSERTER_RESULTS","usePatternsPaging","currentCategoryPatterns","currentCategory","scrollContainerRef","currentFilter","currentPage","setCurrentPage","useState","previousCategory","usePrevious","previousFilter","totalItems","length","pageIndex","categoryPatterns","useMemo","slice","categoryPatternsAsyncList","useAsyncList","step","numPages","Math","ceil","changePage","page","scrollContainer","getScrollContainer","current","scrollTo"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-paging.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { useAsyncList, usePrevious } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\nconst PAGE_SIZE = 20;\nconst INITIAL_INSERTER_RESULTS = 5;\n\n/**\n * Supplies values needed to page the patterns list client side.\n *\n * @param {Array} currentCategoryPatterns An array of the current patterns to display.\n * @param {string} currentCategory The currently selected category.\n * @param {Object} scrollContainerRef Ref of container to to find scroll container for when moving between pages.\n * @param {string} currentFilter The currently search filter.\n *\n * @return {Object} Returns the relevant paging values. (totalItems, categoryPatternsList, numPages, changePage, currentPage)\n */\nexport default function usePatternsPaging(\n\tcurrentCategoryPatterns,\n\tcurrentCategory,\n\tscrollContainerRef,\n\tcurrentFilter = ''\n) {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst previousCategory = usePrevious( currentCategory );\n\tconst previousFilter = usePrevious( currentFilter );\n\tif (\n\t\t( previousCategory !== currentCategory ||\n\t\t\tpreviousFilter !== currentFilter ) &&\n\t\tcurrentPage !== 1\n\t) {\n\t\tsetCurrentPage( 1 );\n\t}\n\tconst totalItems = currentCategoryPatterns.length;\n\tconst pageIndex = currentPage - 1;\n\tconst categoryPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.slice(\n\t\t\tpageIndex * PAGE_SIZE,\n\t\t\tpageIndex * PAGE_SIZE + PAGE_SIZE\n\t\t);\n\t}, [ pageIndex, currentCategoryPatterns ] );\n\tconst categoryPatternsAsyncList = useAsyncList( categoryPatterns, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst numPages = Math.ceil( currentCategoryPatterns.length / PAGE_SIZE );\n\tconst changePage = ( page ) => {\n\t\tconst scrollContainer = getScrollContainer(\n\t\t\tscrollContainerRef?.current\n\t\t);\n\t\tscrollContainer?.scrollTo( 0, 0 );\n\n\t\tsetCurrentPage( page );\n\t};\n\treturn {\n\t\ttotalItems,\n\t\tcategoryPatterns,\n\t\tcategoryPatternsAsyncList,\n\t\tnumPages,\n\t\tchangePage,\n\t\tcurrentPage,\n\t};\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKA,MAAMG,SAAS,GAAG,EAAE;AACpB,MAAMC,wBAAwB,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,iBAAiBA,CACxCC,uBAAuB,EACvBC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,GAAG,EAAE,EACjB;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,CAAE,CAAC;EACrD,MAAMC,gBAAgB,GAAG,IAAAC,oBAAW,EAAEP,eAAgB,CAAC;EACvD,MAAMQ,cAAc,GAAG,IAAAD,oBAAW,EAAEL,aAAc,CAAC;EACnD,IACC,CAAEI,gBAAgB,KAAKN,eAAe,IACrCQ,cAAc,KAAKN,aAAa,KACjCC,WAAW,KAAK,CAAC,EAChB;IACDC,cAAc,CAAE,CAAE,CAAC;EACpB;EACA,MAAMK,UAAU,GAAGV,uBAAuB,CAACW,MAAM;EACjD,MAAMC,SAAS,GAAGR,WAAW,GAAG,CAAC;EACjC,MAAMS,gBAAgB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACvC,OAAOd,uBAAuB,CAACe,KAAK,CACnCH,SAAS,GAAGf,SAAS,EACrBe,SAAS,GAAGf,SAAS,GAAGA,SACzB,CAAC;EACF,CAAC,EAAE,CAAEe,SAAS,EAAEZ,uBAAuB,CAAG,CAAC;EAC3C,MAAMgB,yBAAyB,GAAG,IAAAC,qBAAY,EAAEJ,gBAAgB,EAAE;IACjEK,IAAI,EAAEpB;EACP,CAAE,CAAC;EACH,MAAMqB,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAAErB,uBAAuB,CAACW,MAAM,GAAGd,SAAU,CAAC;EACxE,MAAMyB,UAAU,GAAKC,IAAI,IAAM;IAC9B,MAAMC,eAAe,GAAG,IAAAC,uBAAkB,EACzCvB,kBAAkB,EAAEwB,OACrB,CAAC;IACDF,eAAe,EAAEG,QAAQ,CAAE,CAAC,EAAE,CAAE,CAAC;IAEjCtB,cAAc,CAAEkB,IAAK,CAAC;EACvB,CAAC;EACD,OAAO;IACNb,UAAU;IACVG,gBAAgB;IAChBG,yBAAyB;IACzBG,QAAQ;IACRG,UAAU;IACVlB;EACD,CAAC;AACF"}
|
|
@@ -18,12 +18,6 @@ var _store = require("../../../store");
|
|
|
18
18
|
* Internal dependencies
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
const CUSTOM_CATEGORY = {
|
|
22
|
-
name: 'custom',
|
|
23
|
-
label: (0, _i18n.__)('My patterns'),
|
|
24
|
-
description: (0, _i18n.__)('Custom patterns added by site users.')
|
|
25
|
-
};
|
|
26
|
-
|
|
27
21
|
/**
|
|
28
22
|
* Retrieves the block patterns inserter state.
|
|
29
23
|
*
|
|
@@ -35,23 +29,40 @@ const CUSTOM_CATEGORY = {
|
|
|
35
29
|
const usePatternsState = (onInsert, rootClientId) => {
|
|
36
30
|
const {
|
|
37
31
|
patternCategories,
|
|
38
|
-
patterns
|
|
32
|
+
patterns,
|
|
33
|
+
userPatternCategories
|
|
39
34
|
} = (0, _data.useSelect)(select => {
|
|
40
35
|
const {
|
|
41
36
|
__experimentalGetAllowedPatterns,
|
|
42
37
|
getSettings
|
|
43
38
|
} = select(_store.store);
|
|
39
|
+
const {
|
|
40
|
+
__experimentalUserPatternCategories,
|
|
41
|
+
__experimentalBlockPatternCategories
|
|
42
|
+
} = getSettings();
|
|
44
43
|
return {
|
|
45
44
|
patterns: __experimentalGetAllowedPatterns(rootClientId),
|
|
46
|
-
|
|
45
|
+
userPatternCategories: __experimentalUserPatternCategories,
|
|
46
|
+
patternCategories: __experimentalBlockPatternCategories
|
|
47
47
|
};
|
|
48
48
|
}, [rootClientId]);
|
|
49
|
-
const allCategories = (0, _element.useMemo)(() =>
|
|
49
|
+
const allCategories = (0, _element.useMemo)(() => {
|
|
50
|
+
const categories = [...patternCategories];
|
|
51
|
+
userPatternCategories?.forEach(userCategory => {
|
|
52
|
+
if (!categories.find(existingCategory => existingCategory.name === userCategory.name)) {
|
|
53
|
+
categories.push(userCategory);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return categories;
|
|
57
|
+
}, [patternCategories, userPatternCategories]);
|
|
50
58
|
const {
|
|
51
59
|
createSuccessNotice
|
|
52
60
|
} = (0, _data.useDispatch)(_notices.store);
|
|
53
61
|
const onClickPattern = (0, _element.useCallback)((pattern, blocks) => {
|
|
54
|
-
|
|
62
|
+
const patternBlocks = pattern.id && pattern.syncStatus !== 'unsynced' ? [(0, _blocks.createBlock)('core/block', {
|
|
63
|
+
ref: pattern.id
|
|
64
|
+
})] : blocks;
|
|
65
|
+
onInsert((patternBlocks !== null && patternBlocks !== void 0 ? patternBlocks : []).map(block => (0, _blocks.cloneBlock)(block)), pattern.name);
|
|
55
66
|
createSuccessNotice((0, _i18n.sprintf)( /* translators: %s: block pattern title. */
|
|
56
67
|
(0, _i18n.__)('Block pattern "%s" inserted.'), pattern.title), {
|
|
57
68
|
type: 'snackbar',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_blocks","_data","_i18n","_notices","_store","
|
|
1
|
+
{"version":3,"names":["_element","require","_blocks","_data","_i18n","_notices","_store","usePatternsState","onInsert","rootClientId","patternCategories","patterns","userPatternCategories","useSelect","select","__experimentalGetAllowedPatterns","getSettings","blockEditorStore","__experimentalUserPatternCategories","__experimentalBlockPatternCategories","allCategories","useMemo","categories","forEach","userCategory","find","existingCategory","name","push","createSuccessNotice","useDispatch","noticesStore","onClickPattern","useCallback","pattern","blocks","patternBlocks","id","syncStatus","createBlock","ref","map","block","cloneBlock","sprintf","__","title","type","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-state.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Retrieves the block patterns inserter state.\n *\n * @param {Function} onInsert function called when inserter a list of blocks.\n * @param {string=} rootClientId Insertion's root client ID.\n *\n * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler)\n */\nconst usePatternsState = ( onInsert, rootClientId ) => {\n\tconst { patternCategories, patterns, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst {\n\t\t\t\t__experimentalUserPatternCategories,\n\t\t\t\t__experimentalBlockPatternCategories,\n\t\t\t} = getSettings();\n\t\t\treturn {\n\t\t\t\tpatterns: __experimentalGetAllowedPatterns( rootClientId ),\n\t\t\t\tuserPatternCategories: __experimentalUserPatternCategories,\n\t\t\t\tpatternCategories: __experimentalBlockPatternCategories,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst allCategories = useMemo( () => {\n\t\tconst categories = [ ...patternCategories ];\n\t\tuserPatternCategories?.forEach( ( userCategory ) => {\n\t\t\tif (\n\t\t\t\t! categories.find(\n\t\t\t\t\t( existingCategory ) =>\n\t\t\t\t\t\texistingCategory.name === userCategory.name\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategories.push( userCategory );\n\t\t\t}\n\t\t} );\n\t\treturn categories;\n\t}, [ patternCategories, userPatternCategories ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onClickPattern = useCallback(\n\t\t( pattern, blocks ) => {\n\t\t\tconst patternBlocks =\n\t\t\t\tpattern.id && pattern.syncStatus !== 'unsynced'\n\t\t\t\t\t? [ createBlock( 'core/block', { ref: pattern.id } ) ]\n\t\t\t\t\t: blocks;\n\t\t\tonInsert(\n\t\t\t\t( patternBlocks ?? [] ).map( ( block ) => cloneBlock( block ) ),\n\t\t\t\tpattern.name\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: block pattern title. */\n\t\t\t\t\t__( 'Block pattern \"%s\" inserted.' ),\n\t\t\t\t\tpattern.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'block-pattern-inserted-notice',\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t[ createSuccessNotice, onInsert ]\n\t);\n\n\treturn [ patterns, allCategories, onClickPattern ];\n};\n\nexport default usePatternsState;\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AAZA;AACA;AACA;;AAOA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,gBAAgB,GAAGA,CAAEC,QAAQ,EAAEC,YAAY,KAAM;EACtD,MAAM;IAAEC,iBAAiB;IAAEC,QAAQ;IAAEC;EAAsB,CAAC,GAAG,IAAAC,eAAS,EACrEC,MAAM,IAAM;IACb,MAAM;MAAEC,gCAAgC;MAAEC;IAAY,CAAC,GACtDF,MAAM,CAAEG,YAAiB,CAAC;IAC3B,MAAM;MACLC,mCAAmC;MACnCC;IACD,CAAC,GAAGH,WAAW,CAAC,CAAC;IACjB,OAAO;MACNL,QAAQ,EAAEI,gCAAgC,CAAEN,YAAa,CAAC;MAC1DG,qBAAqB,EAAEM,mCAAmC;MAC1DR,iBAAiB,EAAES;IACpB,CAAC;EACF,CAAC,EACD,CAAEV,YAAY,CACf,CAAC;EAED,MAAMW,aAAa,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACpC,MAAMC,UAAU,GAAG,CAAE,GAAGZ,iBAAiB,CAAE;IAC3CE,qBAAqB,EAAEW,OAAO,CAAIC,YAAY,IAAM;MACnD,IACC,CAAEF,UAAU,CAACG,IAAI,CACdC,gBAAgB,IACjBA,gBAAgB,CAACC,IAAI,KAAKH,YAAY,CAACG,IACzC,CAAC,EACA;QACDL,UAAU,CAACM,IAAI,CAAEJ,YAAa,CAAC;MAChC;IACD,CAAE,CAAC;IACH,OAAOF,UAAU;EAClB,CAAC,EAAE,CAAEZ,iBAAiB,EAAEE,qBAAqB,CAAG,CAAC;EAEjD,MAAM;IAAEiB;EAAoB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAa,CAAC;EAC3D,MAAMC,cAAc,GAAG,IAAAC,oBAAW,EACjC,CAAEC,OAAO,EAAEC,MAAM,KAAM;IACtB,MAAMC,aAAa,GAClBF,OAAO,CAACG,EAAE,IAAIH,OAAO,CAACI,UAAU,KAAK,UAAU,GAC5C,CAAE,IAAAC,mBAAW,EAAE,YAAY,EAAE;MAAEC,GAAG,EAAEN,OAAO,CAACG;IAAG,CAAE,CAAC,CAAE,GACpDF,MAAM;IACV3B,QAAQ,CACP,CAAE4B,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,EAAE,EAAGK,GAAG,CAAIC,KAAK,IAAM,IAAAC,kBAAU,EAAED,KAAM,CAAE,CAAC,EAC/DR,OAAO,CAACP,IACT,CAAC;IACDE,mBAAmB,CAClB,IAAAe,aAAO,GACN;IACA,IAAAC,QAAE,EAAE,8BAA+B,CAAC,EACpCX,OAAO,CAACY,KACT,CAAC,EACD;MACCC,IAAI,EAAE,UAAU;MAChBV,EAAE,EAAE;IACL,CACD,CAAC;EACF,CAAC,EACD,CAAER,mBAAmB,EAAErB,QAAQ,CAChC,CAAC;EAED,OAAO,CAAEG,QAAQ,EAAES,aAAa,EAAEY,cAAc,CAAE;AACnD,CAAC;AAAC,IAAAgB,QAAA,GAEazC,gBAAgB;AAAA0C,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
|
@@ -14,7 +14,6 @@ var _tips = _interopRequireDefault(require("./tips"));
|
|
|
14
14
|
var _previewPanel = _interopRequireDefault(require("./preview-panel"));
|
|
15
15
|
var _blockTypesTab = _interopRequireDefault(require("./block-types-tab"));
|
|
16
16
|
var _blockPatternsTab = _interopRequireWildcard(require("./block-patterns-tab"));
|
|
17
|
-
var _reusableBlocksTab = _interopRequireDefault(require("./reusable-blocks-tab"));
|
|
18
17
|
var _mediaTab = require("./media-tab");
|
|
19
18
|
var _searchResults = _interopRequireDefault(require("./search-results"));
|
|
20
19
|
var _useDebouncedInput = _interopRequireDefault(require("./hooks/use-debounced-input"));
|
|
@@ -50,6 +49,7 @@ function InserterMenu({
|
|
|
50
49
|
const [filterValue, setFilterValue, delayedFilterValue] = (0, _useDebouncedInput.default)(__experimentalFilterValue);
|
|
51
50
|
const [hoveredItem, setHoveredItem] = (0, _element.useState)(null);
|
|
52
51
|
const [selectedPatternCategory, setSelectedPatternCategory] = (0, _element.useState)(null);
|
|
52
|
+
const [patternFilter, setPatternFilter] = (0, _element.useState)('all');
|
|
53
53
|
const [selectedMediaCategory, setSelectedMediaCategory] = (0, _element.useState)(null);
|
|
54
54
|
const [selectedTab, setSelectedTab] = (0, _element.useState)(null);
|
|
55
55
|
const [destinationRootClientId, onInsertBlocks, onToggleInsertionPoint] = (0, _useInsertionPoint.default)({
|
|
@@ -96,8 +96,9 @@ function InserterMenu({
|
|
|
96
96
|
const onHoverPattern = (0, _element.useCallback)(item => {
|
|
97
97
|
onToggleInsertionPoint(!!item);
|
|
98
98
|
}, [onToggleInsertionPoint]);
|
|
99
|
-
const onClickPatternCategory = (0, _element.useCallback)(patternCategory => {
|
|
99
|
+
const onClickPatternCategory = (0, _element.useCallback)((patternCategory, filter) => {
|
|
100
100
|
setSelectedPatternCategory(patternCategory);
|
|
101
|
+
setPatternFilter(filter);
|
|
101
102
|
}, [setSelectedPatternCategory]);
|
|
102
103
|
const blocksTab = (0, _element.useMemo)(() => (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("div", {
|
|
103
104
|
className: "block-editor-inserter__block-list"
|
|
@@ -117,11 +118,6 @@ function InserterMenu({
|
|
|
117
118
|
onSelectCategory: onClickPatternCategory,
|
|
118
119
|
selectedCategory: selectedPatternCategory
|
|
119
120
|
}), [destinationRootClientId, onInsertPattern, onClickPatternCategory, selectedPatternCategory]);
|
|
120
|
-
const reusableBlocksTab = (0, _element.useMemo)(() => (0, _element.createElement)(_reusableBlocksTab.default, {
|
|
121
|
-
rootClientId: destinationRootClientId,
|
|
122
|
-
onInsert: onInsert,
|
|
123
|
-
onHover: onHover
|
|
124
|
-
}), [destinationRootClientId, onInsert, onHover]);
|
|
125
121
|
const mediaTab = (0, _element.useMemo)(() => (0, _element.createElement)(_mediaTab.MediaTab, {
|
|
126
122
|
rootClientId: destinationRootClientId,
|
|
127
123
|
selectedCategory: selectedMediaCategory,
|
|
@@ -133,12 +129,10 @@ function InserterMenu({
|
|
|
133
129
|
return blocksTab;
|
|
134
130
|
} else if (tab.name === 'patterns') {
|
|
135
131
|
return patternsTab;
|
|
136
|
-
} else if (tab.name === 'reusable') {
|
|
137
|
-
return reusableBlocksTab;
|
|
138
132
|
} else if (tab.name === 'media') {
|
|
139
133
|
return mediaTab;
|
|
140
134
|
}
|
|
141
|
-
}, [blocksTab, patternsTab,
|
|
135
|
+
}, [blocksTab, patternsTab, mediaTab]);
|
|
142
136
|
const searchRef = (0, _element.useRef)();
|
|
143
137
|
(0, _element.useImperativeHandle)(ref, () => ({
|
|
144
138
|
focusSearch: () => {
|
|
@@ -148,6 +142,13 @@ function InserterMenu({
|
|
|
148
142
|
const showPatternPanel = selectedTab === 'patterns' && !delayedFilterValue && selectedPatternCategory;
|
|
149
143
|
const showAsTabs = !delayedFilterValue && (showPatterns || hasReusableBlocks || showMedia);
|
|
150
144
|
const showMediaPanel = selectedTab === 'media' && !delayedFilterValue && selectedMediaCategory;
|
|
145
|
+
const handleSetSelectedTab = value => {
|
|
146
|
+
// If no longer on patterns tab remove the category setting.
|
|
147
|
+
if (value !== 'patterns') {
|
|
148
|
+
setSelectedPatternCategory(null);
|
|
149
|
+
}
|
|
150
|
+
setSelectedTab(value);
|
|
151
|
+
};
|
|
151
152
|
return (0, _element.createElement)("div", {
|
|
152
153
|
className: "block-editor-inserter__menu"
|
|
153
154
|
}, (0, _element.createElement)("div", {
|
|
@@ -183,7 +184,7 @@ function InserterMenu({
|
|
|
183
184
|
showReusableBlocks: hasReusableBlocks,
|
|
184
185
|
showMedia: showMedia,
|
|
185
186
|
prioritizePatterns: prioritizePatterns,
|
|
186
|
-
onSelect:
|
|
187
|
+
onSelect: handleSetSelectedTab
|
|
187
188
|
}, getCurrentTab), !delayedFilterValue && !showAsTabs && (0, _element.createElement)("div", {
|
|
188
189
|
className: "block-editor-inserter__no-tab-container"
|
|
189
190
|
}, blocksTab)), showMediaPanel && (0, _element.createElement)(_mediaTab.MediaCategoryDialog, {
|
|
@@ -197,6 +198,7 @@ function InserterMenu({
|
|
|
197
198
|
onInsert: onInsertPattern,
|
|
198
199
|
onHover: onHoverPattern,
|
|
199
200
|
category: selectedPatternCategory,
|
|
201
|
+
patternFilter: patternFilter,
|
|
200
202
|
showTitlesAsTooltip: true
|
|
201
203
|
}));
|
|
202
204
|
}
|