@wordpress/edit-site 5.30.0 → 5.32.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 +4 -0
- package/build/components/block-editor/editor-canvas.js +24 -4
- package/build/components/block-editor/editor-canvas.js.map +1 -1
- package/build/components/block-editor/site-editor-canvas.js +15 -4
- package/build/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build/components/block-editor/use-site-editor-settings.js +1 -1
- package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build/components/editor/index.js +12 -3
- package/build/components/editor/index.js.map +1 -1
- package/build/components/editor-canvas-container/index.js +1 -2
- package/build/components/editor-canvas-container/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +38 -0
- package/build/components/global-styles/background-panel.js.map +1 -0
- package/build/components/global-styles/color-palette-panel.js +0 -9
- package/build/components/global-styles/color-palette-panel.js.map +1 -1
- package/build/components/global-styles/font-families.js +1 -1
- package/build/components/global-styles/font-families.js.map +1 -1
- package/build/components/global-styles/font-library-modal/context.js +53 -17
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +4 -3
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/upload-fonts.js +44 -10
- package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/index.js +22 -4
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
- package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
- package/build/components/global-styles/header.js +1 -1
- package/build/components/global-styles/header.js.map +1 -1
- package/build/components/global-styles/hooks.js +50 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/palette.js +3 -1
- package/build/components/global-styles/palette.js.map +1 -1
- package/build/components/global-styles/preview-colors.js +2 -2
- package/build/components/global-styles/preview-colors.js.map +1 -1
- package/build/components/global-styles/preview-iframe.js +0 -1
- package/build/components/global-styles/preview-iframe.js.map +1 -1
- package/build/components/global-styles/preview-styles.js +2 -2
- package/build/components/global-styles/preview-styles.js.map +1 -1
- package/build/components/global-styles/root-menu.js +8 -2
- package/build/components/global-styles/root-menu.js.map +1 -1
- package/build/components/global-styles/screen-background.js +34 -0
- package/build/components/global-styles/screen-background.js.map +1 -0
- package/build/components/global-styles/screen-color-palette.js +2 -2
- package/build/components/global-styles/screen-color-palette.js.map +1 -1
- package/build/components/global-styles/screen-colors.js +5 -10
- package/build/components/global-styles/screen-colors.js.map +1 -1
- package/build/components/global-styles/screen-style-variations.js +3 -37
- package/build/components/global-styles/screen-style-variations.js.map +1 -1
- package/build/components/global-styles/screen-typography.js +6 -11
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/style-variations-container.js +5 -2
- package/build/components/global-styles/style-variations-container.js.map +1 -1
- package/build/components/global-styles/typography-elements.js +3 -1
- package/build/components/global-styles/typography-elements.js.map +1 -1
- package/build/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
- package/build/components/global-styles/typography-example.js.map +1 -0
- package/build/components/global-styles/typography-preview.js +3 -1
- package/build/components/global-styles/typography-preview.js.map +1 -1
- package/build/components/global-styles/ui.js +4 -1
- package/build/components/global-styles/ui.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/global-styles/variations/variations-color.js +13 -7
- package/build/components/global-styles/variations/variations-color.js.map +1 -1
- package/build/components/global-styles/variations/variations-typography.js +34 -37
- package/build/components/global-styles/variations/variations-typography.js.map +1 -1
- package/build/components/header-edit-mode/index.js +2 -1
- package/build/components/header-edit-mode/index.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
- package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/index.js +3 -0
- package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/global.js +17 -3
- package/build/components/keyboard-shortcuts/global.js.map +1 -1
- package/build/components/layout/animation.js +129 -0
- package/build/components/layout/animation.js.map +1 -0
- package/build/components/layout/index.js +9 -17
- package/build/components/layout/index.js.map +1 -1
- package/build/components/layout/router.js +22 -22
- package/build/components/layout/router.js.map +1 -1
- package/build/components/page-pages/index.js +24 -27
- package/build/components/page-pages/index.js.map +1 -1
- package/build/components/page-patterns/delete-category-menu-item.js +6 -1
- package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
- package/build/components/page-patterns/index.js +19 -32
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-patterns/search-items.js +16 -58
- package/build/components/page-patterns/search-items.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +9 -9
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-templates-template-parts/actions.js +54 -41
- package/build/components/page-templates-template-parts/actions.js.map +1 -1
- package/build/components/page-templates-template-parts/index.js +31 -69
- package/build/components/page-templates-template-parts/index.js.map +1 -1
- package/build/components/plugin-template-setting-panel/index.js +12 -1
- package/build/components/plugin-template-setting-panel/index.js.map +1 -1
- package/build/components/save-button/index.js +45 -16
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/save-hub/index.js +8 -112
- package/build/components/save-hub/index.js.map +1 -1
- package/build/components/save-panel/index.js +14 -9
- package/build/components/save-panel/index.js.map +1 -1
- package/build/components/sidebar/index.js +3 -8
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
- package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
- package/build/components/sidebar-dataviews/dataview-item.js +2 -2
- package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
- package/build/components/sidebar-dataviews/default-views.js +3 -3
- package/build/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build/components/sidebar-dataviews/index.js +5 -4
- package/build/components/sidebar-dataviews/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/index.js +1 -2
- package/build/components/sidebar-edit-mode/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/index.js +7 -17
- package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
- package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/index.js +32 -18
- package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-details-footer/index.js +5 -1
- package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js +18 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
- package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
- package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
- package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/index.js +1 -5
- package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-template/index.js +5 -1
- package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build/components/style-book/index.js +1 -1
- package/build/components/style-book/index.js.map +1 -1
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
- package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
- package/build/components/template-actions/index.js +44 -27
- package/build/components/template-actions/index.js.map +1 -1
- package/build/components/welcome-guide/editor.js +11 -2
- package/build/components/welcome-guide/editor.js.map +1 -1
- package/build/hooks/index.js +0 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
- package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
- package/build/store/selectors.js +1 -9
- package/build/store/selectors.js.map +1 -1
- package/build/utils/constants.js +5 -3
- package/build/utils/constants.js.map +1 -1
- package/build/utils/get-is-list-page.js +1 -1
- package/build/utils/get-is-list-page.js.map +1 -1
- package/build/utils/math.js +98 -0
- package/build/utils/math.js.map +1 -0
- package/build-module/components/block-editor/editor-canvas.js +24 -4
- package/build-module/components/block-editor/editor-canvas.js.map +1 -1
- package/build-module/components/block-editor/site-editor-canvas.js +15 -4
- package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build-module/components/editor/index.js +13 -4
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/editor-canvas-container/index.js +1 -2
- package/build-module/components/editor-canvas-container/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +31 -0
- package/build-module/components/global-styles/background-panel.js.map +1 -0
- package/build-module/components/global-styles/color-palette-panel.js +0 -8
- package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
- package/build-module/components/global-styles/font-families.js +1 -1
- package/build-module/components/global-styles/font-families.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/context.js +54 -18
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +4 -3
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js +44 -10
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/index.js +22 -4
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +3 -0
- package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
- package/build-module/components/global-styles/header.js +1 -1
- package/build-module/components/global-styles/header.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +48 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/palette.js +3 -1
- package/build-module/components/global-styles/palette.js.map +1 -1
- package/build-module/components/global-styles/preview-colors.js +2 -2
- package/build-module/components/global-styles/preview-colors.js.map +1 -1
- package/build-module/components/global-styles/preview-iframe.js +0 -1
- package/build-module/components/global-styles/preview-iframe.js.map +1 -1
- package/build-module/components/global-styles/preview-styles.js +2 -2
- package/build-module/components/global-styles/preview-styles.js.map +1 -1
- package/build-module/components/global-styles/root-menu.js +9 -3
- package/build-module/components/global-styles/root-menu.js.map +1 -1
- package/build-module/components/global-styles/screen-background.js +26 -0
- package/build-module/components/global-styles/screen-background.js.map +1 -0
- package/build-module/components/global-styles/screen-color-palette.js +2 -2
- package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
- package/build-module/components/global-styles/screen-colors.js +5 -10
- package/build-module/components/global-styles/screen-colors.js.map +1 -1
- package/build-module/components/global-styles/screen-style-variations.js +4 -38
- package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
- package/build-module/components/global-styles/screen-typography.js +6 -11
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/style-variations-container.js +5 -2
- package/build-module/components/global-styles/style-variations-container.js.map +1 -1
- package/build-module/components/global-styles/typography-elements.js +3 -1
- package/build-module/components/global-styles/typography-elements.js.map +1 -1
- package/build-module/components/global-styles/{preview-typography.js → typography-example.js} +4 -2
- package/build-module/components/global-styles/typography-example.js.map +1 -0
- package/build-module/components/global-styles/typography-preview.js +3 -1
- package/build-module/components/global-styles/typography-preview.js.map +1 -1
- package/build-module/components/global-styles/ui.js +4 -1
- package/build-module/components/global-styles/ui.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/global-styles/variations/variations-color.js +13 -7
- package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
- package/build-module/components/global-styles/variations/variations-typography.js +35 -38
- package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
- package/build-module/components/header-edit-mode/index.js +2 -1
- package/build-module/components/header-edit-mode/index.js.map +1 -1
- package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
- package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
- package/build-module/components/keyboard-shortcut-help-modal/index.js +3 -0
- package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/global.js +17 -3
- package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
- package/build-module/components/layout/animation.js +122 -0
- package/build-module/components/layout/animation.js.map +1 -0
- package/build-module/components/layout/index.js +9 -17
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/layout/router.js +22 -22
- package/build-module/components/layout/router.js.map +1 -1
- package/build-module/components/page-pages/index.js +25 -28
- package/build-module/components/page-pages/index.js.map +1 -1
- package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
- package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/index.js +21 -34
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-patterns/search-items.js +14 -55
- package/build-module/components/page-patterns/search-items.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +9 -9
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-templates-template-parts/actions.js +54 -40
- package/build-module/components/page-templates-template-parts/actions.js.map +1 -1
- package/build-module/components/page-templates-template-parts/index.js +34 -72
- package/build-module/components/page-templates-template-parts/index.js.map +1 -1
- package/build-module/components/plugin-template-setting-panel/index.js +12 -1
- package/build-module/components/plugin-template-setting-panel/index.js.map +1 -1
- package/build-module/components/save-button/index.js +46 -17
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/save-hub/index.js +10 -114
- package/build-module/components/save-hub/index.js.map +1 -1
- package/build-module/components/save-panel/index.js +14 -9
- package/build-module/components/save-panel/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +3 -8
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
- package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
- package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
- package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
- package/build-module/components/sidebar-dataviews/default-views.js +4 -4
- package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
- package/build-module/components/sidebar-dataviews/index.js +5 -4
- package/build-module/components/sidebar-dataviews/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/index.js +1 -2
- package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/index.js +10 -20
- package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
- package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/index.js +33 -19
- package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-details-footer/index.js +5 -1
- package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js +19 -2
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
- package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
- package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/index.js +1 -5
- package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-template/index.js +5 -1
- package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build-module/components/style-book/index.js +1 -1
- package/build-module/components/style-book/index.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
- package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
- package/build-module/components/template-actions/index.js +44 -27
- package/build-module/components/template-actions/index.js.map +1 -1
- package/build-module/components/welcome-guide/editor.js +11 -2
- package/build-module/components/welcome-guide/editor.js.map +1 -1
- package/build-module/hooks/index.js +0 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +15 -2
- package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
- package/build-module/store/selectors.js +1 -9
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/constants.js +4 -2
- package/build-module/utils/constants.js.map +1 -1
- package/build-module/utils/get-is-list-page.js +1 -1
- package/build-module/utils/get-is-list-page.js.map +1 -1
- package/build-module/utils/math.js +92 -0
- package/build-module/utils/math.js.map +1 -0
- package/build-style/style-rtl.css +146 -130
- package/build-style/style.css +146 -130
- package/package.json +44 -44
- package/src/components/block-editor/editor-canvas.js +34 -9
- package/src/components/block-editor/site-editor-canvas.js +10 -7
- package/src/components/block-editor/use-site-editor-settings.js +0 -2
- package/src/components/editor/index.js +11 -4
- package/src/components/editor-canvas-container/index.js +0 -1
- package/src/components/global-styles/background-panel.js +34 -0
- package/src/components/global-styles/color-palette-panel.js +0 -11
- package/src/components/global-styles/font-families.js +1 -1
- package/src/components/global-styles/font-library-modal/context.js +77 -31
- package/src/components/global-styles/font-library-modal/font-collection.js +4 -3
- package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
- package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
- package/src/components/global-styles/font-library-modal/style.scss +15 -6
- package/src/components/global-styles/font-library-modal/upload-fonts.js +53 -8
- package/src/components/global-styles/font-library-modal/utils/index.js +21 -8
- package/src/components/global-styles/font-library-modal/utils/preview-styles.js +4 -0
- package/src/components/global-styles/header.js +1 -1
- package/src/components/global-styles/hooks.js +68 -1
- package/src/components/global-styles/palette.js +3 -1
- package/src/components/global-styles/preview-colors.js +2 -2
- package/src/components/global-styles/preview-iframe.js +0 -1
- package/src/components/global-styles/preview-styles.js +2 -2
- package/src/components/global-styles/root-menu.js +12 -1
- package/src/components/global-styles/screen-background.js +29 -0
- package/src/components/global-styles/screen-color-palette.js +2 -2
- package/src/components/global-styles/screen-colors.js +4 -15
- package/src/components/global-styles/screen-style-variations.js +4 -36
- package/src/components/global-styles/screen-typography.js +6 -20
- package/src/components/global-styles/style-variations-container.js +2 -1
- package/src/components/global-styles/style.scss +15 -10
- package/src/components/global-styles/typography-elements.js +5 -1
- package/src/components/global-styles/{preview-typography.js → typography-example.js} +3 -1
- package/src/components/global-styles/typography-preview.js +3 -1
- package/src/components/global-styles/ui.js +5 -0
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/global-styles/variations/style.scss +32 -23
- package/src/components/global-styles/variations/variations-color.js +12 -6
- package/src/components/global-styles/variations/variations-typography.js +41 -60
- package/src/components/header-edit-mode/index.js +1 -0
- package/src/components/header-edit-mode/style.scss +28 -17
- package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
- package/src/components/keyboard-shortcut-help-modal/index.js +4 -0
- package/src/components/keyboard-shortcuts/global.js +16 -4
- package/src/components/layout/animation.js +122 -0
- package/src/components/layout/index.js +12 -27
- package/src/components/layout/router.js +26 -25
- package/src/components/layout/style.scss +2 -0
- package/src/components/page-pages/index.js +33 -54
- package/src/components/page-patterns/delete-category-menu-item.js +7 -0
- package/src/components/page-patterns/index.js +22 -31
- package/src/components/page-patterns/search-items.js +13 -58
- package/src/components/page-patterns/use-patterns.js +17 -10
- package/src/components/page-templates-template-parts/actions.js +106 -91
- package/src/components/page-templates-template-parts/index.js +41 -93
- package/src/components/page-templates-template-parts/style.scss +5 -0
- package/src/components/plugin-template-setting-panel/index.js +14 -1
- package/src/components/save-button/index.js +55 -26
- package/src/components/save-hub/index.js +20 -164
- package/src/components/save-panel/index.js +24 -17
- package/src/components/sidebar/index.js +2 -8
- package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
- package/src/components/sidebar-dataviews/dataview-item.js +2 -2
- package/src/components/sidebar-dataviews/default-views.js +12 -4
- package/src/components/sidebar-dataviews/index.js +5 -4
- package/src/components/sidebar-edit-mode/index.js +0 -2
- package/src/components/sidebar-edit-mode/page-panels/index.js +31 -62
- package/src/components/sidebar-edit-mode/page-panels/page-content.js +10 -10
- package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
- package/src/components/sidebar-edit-mode/template-panel/index.js +33 -24
- package/src/components/sidebar-edit-mode/template-panel/style.scss +1 -29
- package/src/components/sidebar-navigation-screen/style.scss +21 -9
- package/src/components/sidebar-navigation-screen-details-footer/index.js +6 -2
- package/src/components/sidebar-navigation-screen-global-styles/index.js +29 -2
- package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +2 -3
- package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
- package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
- package/src/components/sidebar-navigation-screen-patterns/index.js +0 -7
- package/src/components/sidebar-navigation-screen-template/index.js +6 -1
- package/src/components/sidebar-navigation-screen-templates-browse/content.js +2 -2
- package/src/components/style-book/index.js +1 -3
- package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -3
- package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
- package/src/components/template-actions/index.js +63 -46
- package/src/components/welcome-guide/editor.js +9 -6
- package/src/hooks/index.js +0 -1
- package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +21 -4
- package/src/store/selectors.js +3 -15
- package/src/style.scss +0 -2
- package/src/utils/constants.js +4 -2
- package/src/utils/get-is-list-page.js +1 -1
- package/src/utils/math.js +93 -0
- package/build/components/actions/index.js +0 -321
- package/build/components/actions/index.js.map +0 -1
- package/build/components/global-styles/preview-typography.js.map +0 -1
- package/build/components/sidebar-edit-mode/sidebar-card/index.js +0 -42
- package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
- package/build/components/sidebar-edit-mode/template-panel/template-areas.js +0 -70
- package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
- package/build/components/sidebar-navigation-screen-pages/index.js +0 -175
- package/build/components/sidebar-navigation-screen-pages/index.js.map +0 -1
- package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
- package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
- package/build/hooks/template-part-edit.js +0 -82
- package/build/hooks/template-part-edit.js.map +0 -1
- package/build/store/utils.js +0 -71
- package/build/store/utils.js.map +0 -1
- package/build-module/components/actions/index.js +0 -310
- package/build-module/components/actions/index.js.map +0 -1
- package/build-module/components/global-styles/preview-typography.js.map +0 -1
- package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
- package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +0 -1
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
- package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +0 -63
- package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +0 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
- package/build-module/components/sidebar-navigation-screen-pages/index.js +0 -167
- package/build-module/components/sidebar-navigation-screen-pages/index.js.map +0 -1
- package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
- package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
- package/build-module/hooks/template-part-edit.js +0 -75
- package/build-module/hooks/template-part-edit.js.map +0 -1
- package/build-module/store/utils.js +0 -64
- package/build-module/store/utils.js.map +0 -1
- package/src/components/actions/index.js +0 -411
- package/src/components/sidebar-edit-mode/sidebar-card/index.js +0 -34
- package/src/components/sidebar-edit-mode/sidebar-card/style.scss +0 -37
- package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
- package/src/components/sidebar-edit-mode/template-panel/template-areas.js +0 -86
- package/src/components/sidebar-navigation-screen-pages/index.js +0 -238
- package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
- package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
- package/src/hooks/template-part-edit.js +0 -89
- package/src/store/test/utils.js +0 -191
- package/src/store/utils.js +0 -69
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MenuItem","__experimentalConfirmDialog","ConfirmDialog","store","coreStore","useDispatch","useState","decodeEntities","__","sprintf","noticesStore","privateApis","routerPrivateApis","unlock","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","useHistory","DeleteCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","history","createSuccessNotice","createErrorNotice","deleteEntityRecord","invalidateResolution","onDelete","id","force","throwOnError","user","per_page","label","type","push","path","categoryType","theme","categoryId","error","errorMessage","message","code","createElement","Fragment","isDestructive","onClick","isOpen","onConfirm","onCancel","confirmButtonText","className"],"sources":["@wordpress/edit-site/src/components/page-patterns/delete-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DeleteCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\n\tconst onDelete = async () => {\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\tcategory.id,\n\t\t\t\t{ force: true },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Prevent the need to refresh the page to get up-to-date categories\n\t\t\t// and pattern categorization.\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tinvalidateResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{ per_page: -1 },\n\t\t\t] );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The pattern category's name */\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\tcategory.label\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'pattern-category-delete' }\n\t\t\t);\n\n\t\t\tonClose?.();\n\t\t\thistory.push( {\n\t\t\t\tpath: `/patterns`,\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while deleting the pattern category.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-delete',\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onDelete }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\tclassName=\"edit-site-patterns__delete-modal\"\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete the category \"%s\"? The patterns will not be deleted.'\n\t\t\t\t\t),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,QAAQ,EACRC,2BAA2B,IAAIC,aAAa,QACtC,uBAAuB;AAC9B,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASN,KAAK,IAAIO,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,WAAW,IAAIC,iBAAiB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,aAAa,EAAEC,wBAAwB,QAAQ,uBAAuB;AAE/E,MAAM;EAAEC;AAAW,CAAC,GAAGH,MAAM,CAAED,iBAAkB,CAAC;AAElD,eAAe,SAASK,sBAAsBA,CAAE;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,EAAG;EACvE,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAGf,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAMgB,OAAO,GAAGN,UAAU,CAAC,CAAC;EAE5B,MAAM;IAAEO,mBAAmB;IAAEC;EAAkB,CAAC,GAC/CnB,WAAW,CAAEK,YAAa,CAAC;EAC5B,MAAM;IAAEe,kBAAkB;IAAEC;EAAqB,CAAC,GACjDrB,WAAW,CAAED,SAAU,CAAC;EAEzB,MAAMuB,QAAQ,GAAG,MAAAA,CAAA,KAAY;IAC5B,IAAI;MACH,MAAMF,kBAAkB,CACvB,UAAU,EACV,qBAAqB,EACrBP,QAAQ,CAACU,EAAE,EACX;QAAEC,KAAK,EAAE;MAAK,CAAC,EACf;QAAEC,YAAY,EAAE;MAAK,CACtB,CAAC;;MAED;MACA;MACAJ,oBAAoB,CAAE,0BAA2B,CAAC;MAClDA,oBAAoB,CAAE,kBAAkB,EAAE,CACzC,UAAU,EACVZ,aAAa,CAACiB,IAAI,EAClB;QAAEC,QAAQ,EAAE,CAAC;MAAE,CAAC,CACf,CAAC;MAEHT,mBAAmB,CAClBd,OAAO,EACN;MACAD,EAAE,CAAE,eAAgB,CAAC,EACrBU,QAAQ,CAACe,KACV,CAAC,EACD;QAAEC,IAAI,EAAE,UAAU;QAAEN,EAAE,EAAE;MAA0B,CACnD,CAAC;MAEDT,OAAO,GAAG,CAAC;MACXG,OAAO,CAACa,IAAI,CAAE;QACbC,IAAI,EAAG,WAAU;QACjBC,YAAY,EAAEvB,aAAa,CAACwB,KAAK;QACjCC,UAAU,EAAExB;MACb,CAAE,CAAC;IACJ,CAAC,CAAC,OAAQyB,KAAK,EAAG;MACjB,MAAMC,YAAY,GACjBD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,IAAI,KAAK,eAAe,GAC5CH,KAAK,CAACE,OAAO,GACblC,EAAE,CACF,wDACA,CAAC;MAELgB,iBAAiB,CAAEiB,YAAY,EAAE;QAChCP,IAAI,EAAE,UAAU;QAChBN,EAAE,EAAE;MACL,CAAE,CAAC;IACJ;EACD,CAAC;EAED,OACCgB,aAAA,CAAAC,QAAA,QACCD,aAAA,CAAC5C,QAAQ;IAAC8C,aAAa;IAACC,OAAO,EAAGA,CAAA,KAAM1B,cAAc,CAAE,IAAK;EAAG,GAC7Db,EAAE,CAAE,QAAS,CACN,CAAC,EACXoC,aAAA,CAAC1C,aAAa;IACb8C,MAAM,EAAG5B,WAAa;IACtB6B,SAAS,EAAGtB,QAAU;IACtBuB,QAAQ,EAAGA,CAAA,KAAM7B,cAAc,CAAE,KAAM,CAAG;IAC1C8B,iBAAiB,EAAG3C,EAAE,CAAE,QAAS,CAAG;IACpC4C,SAAS,EAAC;
|
|
1
|
+
{"version":3,"names":["MenuItem","__experimentalConfirmDialog","ConfirmDialog","store","coreStore","useDispatch","useState","decodeEntities","__","sprintf","noticesStore","privateApis","routerPrivateApis","unlock","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","useHistory","DeleteCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","history","createSuccessNotice","createErrorNotice","deleteEntityRecord","invalidateResolution","onDelete","id","force","throwOnError","user","per_page","label","type","push","path","categoryType","theme","categoryId","error","errorMessage","message","code","createElement","Fragment","isDestructive","onClick","isOpen","onConfirm","onCancel","confirmButtonText","className","title","size","__experimentalHideHeader"],"sources":["@wordpress/edit-site/src/components/page-patterns/delete-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DeleteCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\n\tconst onDelete = async () => {\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\tcategory.id,\n\t\t\t\t{ force: true },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Prevent the need to refresh the page to get up-to-date categories\n\t\t\t// and pattern categorization.\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tinvalidateResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{ per_page: -1 },\n\t\t\t] );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The pattern category's name */\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\tcategory.label\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'pattern-category-delete' }\n\t\t\t);\n\n\t\t\tonClose?.();\n\t\t\thistory.push( {\n\t\t\t\tpath: `/patterns`,\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while deleting the pattern category.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-delete',\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onDelete }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\tclassName=\"edit-site-patterns__delete-modal\"\n\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__( 'Delete \"%s\"?' ),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t\tsize=\"medium\"\n\t\t\t\t__experimentalHideHeader={ false }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete the category \"%s\"? The patterns will not be deleted.'\n\t\t\t\t\t),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { getQueryArgs } from '@wordpress/url';
|
|
|
7
7
|
import { __, _x } from '@wordpress/i18n';
|
|
8
8
|
import { useState, useMemo, useCallback, useId, useEffect } from '@wordpress/element';
|
|
9
9
|
import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
|
|
10
|
-
import { DataViews,
|
|
10
|
+
import { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';
|
|
11
11
|
import { Icon, header, footer, symbolFilled as uncategorized, symbol, lockSmall } from '@wordpress/icons';
|
|
12
12
|
import { usePrevious } from '@wordpress/compose';
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ import { usePrevious } from '@wordpress/compose';
|
|
|
15
15
|
* Internal dependencies
|
|
16
16
|
*/
|
|
17
17
|
import Page from '../page';
|
|
18
|
-
import { LAYOUT_GRID, PATTERN_TYPES, TEMPLATE_PART_POST_TYPE, PATTERN_SYNC_TYPES, PATTERN_DEFAULT_CATEGORY, ENUMERATION_TYPE,
|
|
18
|
+
import { LAYOUT_GRID, LAYOUT_TABLE, PATTERN_TYPES, TEMPLATE_PART_POST_TYPE, PATTERN_SYNC_TYPES, PATTERN_DEFAULT_CATEGORY, ENUMERATION_TYPE, OPERATOR_IS } from '../../utils/constants';
|
|
19
19
|
import { exportJSONaction, renameAction, resetAction, deleteAction, duplicatePatternAction, duplicateTemplatePartAction } from './dataviews-pattern-actions';
|
|
20
20
|
import usePatternSettings from './use-pattern-settings';
|
|
21
21
|
import { unlock } from '../../lock-unlock';
|
|
@@ -33,6 +33,9 @@ const templatePartIcons = {
|
|
|
33
33
|
};
|
|
34
34
|
const EMPTY_ARRAY = [];
|
|
35
35
|
const defaultConfigPerViewType = {
|
|
36
|
+
[LAYOUT_TABLE]: {
|
|
37
|
+
primaryField: 'title'
|
|
38
|
+
},
|
|
36
39
|
[LAYOUT_GRID]: {
|
|
37
40
|
mediaField: 'preview',
|
|
38
41
|
primaryField: 'title'
|
|
@@ -104,7 +107,8 @@ function Preview({
|
|
|
104
107
|
postType: item.type,
|
|
105
108
|
postId: isUserPattern ? item.id : item.name,
|
|
106
109
|
categoryId,
|
|
107
|
-
categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme
|
|
110
|
+
categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,
|
|
111
|
+
canvas: 'edit'
|
|
108
112
|
});
|
|
109
113
|
return createElement(Fragment, null, createElement("div", {
|
|
110
114
|
className: `page-patterns-preview-field is-viewtype-${viewType}`,
|
|
@@ -116,7 +120,8 @@ function Preview({
|
|
|
116
120
|
onClick: onClick,
|
|
117
121
|
ariaDescribedBy: ariaDescriptions.length ? ariaDescriptions.map((_, index) => `${descriptionId}-${index}`).join(' ') : undefined
|
|
118
122
|
}, isEmpty && isTemplatePart && __('Empty template part'), isEmpty && !isTemplatePart && __('Empty pattern'), !isEmpty && createElement(BlockPreview, {
|
|
119
|
-
blocks: item.blocks
|
|
123
|
+
blocks: item.blocks,
|
|
124
|
+
viewportWidth: item.viewportWidth
|
|
120
125
|
}))), ariaDescriptions.map((ariaDescription, index) => createElement("div", {
|
|
121
126
|
key: index,
|
|
122
127
|
hidden: true,
|
|
@@ -137,7 +142,8 @@ function Title({
|
|
|
137
142
|
postType: item.type,
|
|
138
143
|
postId: isUserPattern ? item.id : item.name,
|
|
139
144
|
categoryId,
|
|
140
|
-
categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme
|
|
145
|
+
categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,
|
|
146
|
+
canvas: 'edit'
|
|
141
147
|
});
|
|
142
148
|
if (!isUserPattern && templatePartIcons[categoryId]) {
|
|
143
149
|
itemIcon = templatePartIcons[categoryId];
|
|
@@ -210,9 +216,6 @@ export default function DataviewsPatterns() {
|
|
|
210
216
|
}, {
|
|
211
217
|
header: __('Title'),
|
|
212
218
|
id: 'title',
|
|
213
|
-
getValue: ({
|
|
214
|
-
item
|
|
215
|
-
}) => item.title,
|
|
216
219
|
render: ({
|
|
217
220
|
item
|
|
218
221
|
}) => createElement(Title, {
|
|
@@ -239,7 +242,7 @@ export default function DataviewsPatterns() {
|
|
|
239
242
|
type: ENUMERATION_TYPE,
|
|
240
243
|
elements: SYNC_FILTERS,
|
|
241
244
|
filterBy: {
|
|
242
|
-
operators: [
|
|
245
|
+
operators: [OPERATOR_IS],
|
|
243
246
|
isPrimary: true
|
|
244
247
|
},
|
|
245
248
|
enableSorting: false
|
|
@@ -257,30 +260,14 @@ export default function DataviewsPatterns() {
|
|
|
257
260
|
data,
|
|
258
261
|
paginationInfo
|
|
259
262
|
} = useMemo(() => {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
let filteredData = [...patterns];
|
|
270
|
-
// Handle sorting.
|
|
271
|
-
if (view.sort) {
|
|
272
|
-
filteredData = sortByTextFields({
|
|
273
|
-
data: filteredData,
|
|
274
|
-
view,
|
|
275
|
-
fields,
|
|
276
|
-
textFields: ['title', 'author']
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
// Handle pagination.
|
|
280
|
-
return getPaginationResults({
|
|
281
|
-
data: filteredData,
|
|
282
|
-
view
|
|
283
|
-
});
|
|
263
|
+
// Since filters are applied server-side,
|
|
264
|
+
// we need to remove them from the view
|
|
265
|
+
const viewWithoutFilters = {
|
|
266
|
+
...view
|
|
267
|
+
};
|
|
268
|
+
delete viewWithoutFilters.search;
|
|
269
|
+
viewWithoutFilters.filters = [];
|
|
270
|
+
return filterSortAndPaginate(patterns, viewWithoutFilters, fields);
|
|
284
271
|
}, [patterns, view, fields]);
|
|
285
272
|
const actions = useMemo(() => [renameAction, duplicatePatternAction, duplicateTemplatePartAction, exportJSONaction, resetAction, deleteAction], []);
|
|
286
273
|
const onChangeView = useCallback(newView => {
|
|
@@ -320,7 +307,7 @@ export default function DataviewsPatterns() {
|
|
|
320
307
|
view: view,
|
|
321
308
|
onChangeView: onChangeView,
|
|
322
309
|
deferredRendering: true,
|
|
323
|
-
supportedLayouts: [LAYOUT_GRID]
|
|
310
|
+
supportedLayouts: [LAYOUT_GRID, LAYOUT_TABLE]
|
|
324
311
|
})));
|
|
325
312
|
}
|
|
326
313
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__experimentalHStack","HStack","Button","Tooltip","Flex","getQueryArgs","__","_x","useState","useMemo","useCallback","useId","useEffect","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","sortByTextFields","getPaginationResults","Icon","header","footer","symbolFilled","uncategorized","symbol","lockSmall","usePrevious","Page","LAYOUT_GRID","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","PATTERN_DEFAULT_CATEGORY","ENUMERATION_TYPE","OPERATOR_IN","exportJSONaction","renameAction","resetAction","deleteAction","duplicatePatternAction","duplicateTemplatePartAction","usePatternSettings","unlock","usePatterns","PatternsHeader","useLink","ExperimentalBlockEditorProvider","useGlobalStyle","templatePartIcons","EMPTY_ARRAY","defaultConfigPerViewType","mediaField","primaryField","DEFAULT_VIEW","type","search","page","perPage","hiddenFields","layout","filters","SYNC_FILTERS","value","full","label","description","unsynced","PreviewWrapper","item","onClick","ariaDescribedBy","children","theme","createElement","className","title","Preview","categoryId","viewType","descriptionId","isUserPattern","user","isNonUserPattern","isTemplatePart","isEmpty","blocks","length","isCustomPattern","isCustom","ariaDescriptions","push","backgroundColor","postType","postId","id","name","categoryType","Fragment","style","map","_","index","join","undefined","ariaDescription","key","hidden","Title","itemIcon","syncStatus","alignment","justify","spacing","as","gap","variant","tabIndex","placement","text","icon","size","DataviewsPatterns","window","location","href","view","setView","isUncategorizedThemePatterns","previousCategoryId","viewSyncStatus","find","field","patterns","isResolving","fields","_fields","render","enableSorting","enableHiding","getValue","elements","filterBy","operators","isPrimary","data","paginationInfo","totalItems","totalPages","filteredData","sort","textFields","actions","onChangeView","newView","settings","hideTitleFromUI","titleId","getItemId","isLoading","deferredRendering","supportedLayouts"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { getQueryArgs } from '@wordpress/url';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tuseId,\n\tuseEffect,\n} from '@wordpress/element';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tDataViews,\n\tsortByTextFields,\n\tgetPaginationResults,\n} from '@wordpress/dataviews';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport {\n\tLAYOUT_GRID,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tENUMERATION_TYPE,\n\tOPERATOR_IN,\n} from '../../utils/constants';\nimport {\n\texportJSONaction,\n\trenameAction,\n\tresetAction,\n\tdeleteAction,\n\tduplicatePatternAction,\n\tduplicateTemplatePartAction,\n} from './dataviews-pattern-actions';\nimport usePatternSettings from './use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport usePatterns from './use-patterns';\nimport PatternsHeader from './header';\nimport { useLink } from '../routes/link';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\n\nconst templatePartIcons = { header, footer, uncategorized };\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\thiddenFields: [ 'sync-status' ],\n\tlayout: {\n\t\t...defaultConfigPerViewType[ LAYOUT_GRID ],\n\t},\n\tfilters: [],\n};\n\nconst SYNC_FILTERS = [\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.full,\n\t\tlabel: _x( 'Synced', 'Option that shows all synchronized patterns' ),\n\t\tdescription: __( 'Patterns that are kept in sync across the site.' ),\n\t},\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.unsynced,\n\t\tlabel: _x(\n\t\t\t'Not synced',\n\t\t\t'Option that shows all patterns that are not synchronized'\n\t\t),\n\t\tdescription: __(\n\t\t\t'Patterns that can be changed freely without affecting the site.'\n\t\t),\n\t},\n];\n\nfunction PreviewWrapper( { item, onClick, ariaDescribedBy, children } ) {\n\tif ( item.type === PATTERN_TYPES.theme ) {\n\t\treturn children;\n\t}\n\treturn (\n\t\t<button\n\t\t\tclassName=\"page-patterns-preview-field__button\"\n\t\t\ttype=\"button\"\n\t\t\tonClick={ onClick }\n\t\t\taria-label={ item.title }\n\t\t\taria-describedby={ ariaDescribedBy }\n\t\t>\n\t\t\t{ children }\n\t\t</button>\n\t);\n}\n\nfunction Preview( { item, categoryId, viewType } ) {\n\tconst descriptionId = useId();\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isEmpty = ! item.blocks?.length;\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst ariaDescriptions = [];\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `page-patterns-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t<PreviewWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tariaDescribedBy={\n\t\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t\t{ ! isEmpty && <BlockPreview blocks={ item.blocks } /> }\n\t\t\t\t</PreviewWrapper>\n\t\t\t</div>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction Title( { item, categoryId } ) {\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tlet itemIcon;\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\n\tif ( ! isUserPattern && templatePartIcons[ categoryId ] ) {\n\t\titemIcon = templatePartIcons[ categoryId ];\n\t} else {\n\t\titemIcon =\n\t\t\titem.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;\n\t}\n\treturn (\n\t\t<HStack alignment=\"center\" justify=\"flex-start\" spacing={ 2 }>\n\t\t\t<Flex\n\t\t\t\tas=\"div\"\n\t\t\t\tgap={ 0 }\n\t\t\t\tjustify=\"left\"\n\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t>\n\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\titem.title\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ item.title || item.name }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n\nexport default function DataviewsPatterns() {\n\tconst { categoryType, categoryId = PATTERN_DEFAULT_CATEGORY } =\n\t\tgetQueryArgs( window.location.href );\n\tconst type = categoryType || PATTERN_TYPES.theme;\n\tconst [ view, setView ] = useState( DEFAULT_VIEW );\n\tconst isUncategorizedThemePatterns =\n\t\ttype === PATTERN_TYPES.theme && categoryId === 'uncategorized';\n\tconst previousCategoryId = usePrevious( categoryId );\n\tconst viewSyncStatus = view.filters?.find(\n\t\t( { field } ) => field === 'sync-status'\n\t)?.value;\n\tconst { patterns, isResolving } = usePatterns(\n\t\ttype,\n\t\tisUncategorizedThemePatterns ? '' : categoryId,\n\t\t{\n\t\t\tsearch: view.search,\n\t\t\tsyncStatus: viewSyncStatus,\n\t\t}\n\t);\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Preview\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\tviewType={ view.type }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } categoryId={ categoryId } />\n\t\t\t\t),\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\t\tif ( type === PATTERN_TYPES.theme ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Sync Status' ),\n\t\t\t\tid: 'sync-status',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\t// User patterns can have their sync statuses checked directly.\n\t\t\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\t\t\treturn (\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) => value === item.syncStatus\n\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) =>\n\t\t\t\t\t\t\t\tvalue === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t).label\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttype: ENUMERATION_TYPE,\n\t\t\t\telements: SYNC_FILTERS,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IN ],\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t}\n\t\treturn _fields;\n\t}, [ view.type, categoryId, type ] );\n\t// Reset the page number when the category changes.\n\tuseEffect( () => {\n\t\tif ( previousCategoryId !== categoryId ) {\n\t\t\tsetView( DEFAULT_VIEW );\n\t\t}\n\t}, [ categoryId, previousCategoryId ] );\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\tif ( ! patterns ) {\n\t\t\treturn {\n\t\t\t\tdata: EMPTY_ARRAY,\n\t\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t\t};\n\t\t}\n\t\tlet filteredData = [ ...patterns ];\n\t\t// Handle sorting.\n\t\tif ( view.sort ) {\n\t\t\tfilteredData = sortByTextFields( {\n\t\t\t\tdata: filteredData,\n\t\t\t\tview,\n\t\t\t\tfields,\n\t\t\t\ttextFields: [ 'title', 'author' ],\n\t\t\t} );\n\t\t}\n\t\t// Handle pagination.\n\t\treturn getPaginationResults( {\n\t\t\tdata: filteredData,\n\t\t\tview,\n\t\t} );\n\t}, [ patterns, view, fields ] );\n\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\trenameAction,\n\t\t\tduplicatePatternAction,\n\t\t\tduplicateTemplatePartAction,\n\t\t\texportJSONaction,\n\t\t\tresetAction,\n\t\t\tdeleteAction,\n\t\t],\n\t\t[]\n\t);\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView ]\n\t);\n\tconst id = useId();\n\tconst settings = usePatternSettings();\n\t// Wrap everything in a block editor provider.\n\t// This ensures 'styles' that are needed for the previews are synced\n\t// from the site editor store to the block editor store.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<Page\n\t\t\t\ttitle={ __( 'Patterns content' ) }\n\t\t\t\tclassName=\"edit-site-page-patterns-dataviews\"\n\t\t\t\thideTitleFromUI\n\t\t\t>\n\t\t\t\t<PatternsHeader\n\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\ttitleId={ `${ id }-title` }\n\t\t\t\t\tdescriptionId={ `${ id }-description` }\n\t\t\t\t/>\n\t\t\t\t<DataViews\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data || EMPTY_ARRAY }\n\t\t\t\t\tgetItemId={ ( item ) => item.name }\n\t\t\t\t\tisLoading={ isResolving }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tdeferredRendering\n\t\t\t\t\tsupportedLayouts={ [ LAYOUT_GRID ] }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["__experimentalHStack","HStack","Button","Tooltip","Flex","getQueryArgs","__","_x","useState","useMemo","useCallback","useId","useEffect","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","Icon","header","footer","symbolFilled","uncategorized","symbol","lockSmall","usePrevious","Page","LAYOUT_GRID","LAYOUT_TABLE","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","PATTERN_DEFAULT_CATEGORY","ENUMERATION_TYPE","OPERATOR_IS","exportJSONaction","renameAction","resetAction","deleteAction","duplicatePatternAction","duplicateTemplatePartAction","usePatternSettings","unlock","usePatterns","PatternsHeader","useLink","ExperimentalBlockEditorProvider","useGlobalStyle","templatePartIcons","EMPTY_ARRAY","defaultConfigPerViewType","primaryField","mediaField","DEFAULT_VIEW","type","search","page","perPage","hiddenFields","layout","filters","SYNC_FILTERS","value","full","label","description","unsynced","PreviewWrapper","item","onClick","ariaDescribedBy","children","theme","createElement","className","title","Preview","categoryId","viewType","descriptionId","isUserPattern","user","isNonUserPattern","isTemplatePart","isEmpty","blocks","length","isCustomPattern","isCustom","ariaDescriptions","push","backgroundColor","postType","postId","id","name","categoryType","canvas","Fragment","style","map","_","index","join","undefined","viewportWidth","ariaDescription","key","hidden","Title","itemIcon","syncStatus","alignment","justify","spacing","as","gap","variant","tabIndex","placement","text","icon","size","DataviewsPatterns","window","location","href","view","setView","isUncategorizedThemePatterns","previousCategoryId","viewSyncStatus","find","field","patterns","isResolving","fields","_fields","render","enableSorting","enableHiding","elements","filterBy","operators","isPrimary","data","paginationInfo","viewWithoutFilters","actions","onChangeView","newView","settings","hideTitleFromUI","titleId","getItemId","isLoading","deferredRendering","supportedLayouts"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { getQueryArgs } from '@wordpress/url';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tuseId,\n\tuseEffect,\n} from '@wordpress/element';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tENUMERATION_TYPE,\n\tOPERATOR_IS,\n} from '../../utils/constants';\nimport {\n\texportJSONaction,\n\trenameAction,\n\tresetAction,\n\tdeleteAction,\n\tduplicatePatternAction,\n\tduplicateTemplatePartAction,\n} from './dataviews-pattern-actions';\nimport usePatternSettings from './use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport usePatterns from './use-patterns';\nimport PatternsHeader from './header';\nimport { useLink } from '../routes/link';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\n\nconst templatePartIcons = { header, footer, uncategorized };\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\thiddenFields: [ 'sync-status' ],\n\tlayout: {\n\t\t...defaultConfigPerViewType[ LAYOUT_GRID ],\n\t},\n\tfilters: [],\n};\n\nconst SYNC_FILTERS = [\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.full,\n\t\tlabel: _x( 'Synced', 'Option that shows all synchronized patterns' ),\n\t\tdescription: __( 'Patterns that are kept in sync across the site.' ),\n\t},\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.unsynced,\n\t\tlabel: _x(\n\t\t\t'Not synced',\n\t\t\t'Option that shows all patterns that are not synchronized'\n\t\t),\n\t\tdescription: __(\n\t\t\t'Patterns that can be changed freely without affecting the site.'\n\t\t),\n\t},\n];\n\nfunction PreviewWrapper( { item, onClick, ariaDescribedBy, children } ) {\n\tif ( item.type === PATTERN_TYPES.theme ) {\n\t\treturn children;\n\t}\n\treturn (\n\t\t<button\n\t\t\tclassName=\"page-patterns-preview-field__button\"\n\t\t\ttype=\"button\"\n\t\t\tonClick={ onClick }\n\t\t\taria-label={ item.title }\n\t\t\taria-describedby={ ariaDescribedBy }\n\t\t>\n\t\t\t{ children }\n\t\t</button>\n\t);\n}\n\nfunction Preview( { item, categoryId, viewType } ) {\n\tconst descriptionId = useId();\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isEmpty = ! item.blocks?.length;\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst ariaDescriptions = [];\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t\tcanvas: 'edit',\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `page-patterns-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t<PreviewWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tariaDescribedBy={\n\t\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\t\t\tviewportWidth={ item.viewportWidth }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PreviewWrapper>\n\t\t\t</div>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction Title( { item, categoryId } ) {\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tlet itemIcon;\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t\tcanvas: 'edit',\n\t} );\n\tif ( ! isUserPattern && templatePartIcons[ categoryId ] ) {\n\t\titemIcon = templatePartIcons[ categoryId ];\n\t} else {\n\t\titemIcon =\n\t\t\titem.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;\n\t}\n\treturn (\n\t\t<HStack alignment=\"center\" justify=\"flex-start\" spacing={ 2 }>\n\t\t\t<Flex\n\t\t\t\tas=\"div\"\n\t\t\t\tgap={ 0 }\n\t\t\t\tjustify=\"left\"\n\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t>\n\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\titem.title\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ item.title || item.name }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t</HStack>\n\t);\n}\n\nexport default function DataviewsPatterns() {\n\tconst { categoryType, categoryId = PATTERN_DEFAULT_CATEGORY } =\n\t\tgetQueryArgs( window.location.href );\n\tconst type = categoryType || PATTERN_TYPES.theme;\n\tconst [ view, setView ] = useState( DEFAULT_VIEW );\n\tconst isUncategorizedThemePatterns =\n\t\ttype === PATTERN_TYPES.theme && categoryId === 'uncategorized';\n\tconst previousCategoryId = usePrevious( categoryId );\n\tconst viewSyncStatus = view.filters?.find(\n\t\t( { field } ) => field === 'sync-status'\n\t)?.value;\n\tconst { patterns, isResolving } = usePatterns(\n\t\ttype,\n\t\tisUncategorizedThemePatterns ? '' : categoryId,\n\t\t{\n\t\t\tsearch: view.search,\n\t\t\tsyncStatus: viewSyncStatus,\n\t\t}\n\t);\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Preview\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\tviewType={ view.type }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } categoryId={ categoryId } />\n\t\t\t\t),\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\t\tif ( type === PATTERN_TYPES.theme ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Sync Status' ),\n\t\t\t\tid: 'sync-status',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\t// User patterns can have their sync statuses checked directly.\n\t\t\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\t\t\treturn (\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) => value === item.syncStatus\n\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) =>\n\t\t\t\t\t\t\t\tvalue === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t).label\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttype: ENUMERATION_TYPE,\n\t\t\t\telements: SYNC_FILTERS,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IS ],\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t}\n\t\treturn _fields;\n\t}, [ view.type, categoryId, type ] );\n\t// Reset the page number when the category changes.\n\tuseEffect( () => {\n\t\tif ( previousCategoryId !== categoryId ) {\n\t\t\tsetView( DEFAULT_VIEW );\n\t\t}\n\t}, [ categoryId, previousCategoryId ] );\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\t// Since filters are applied server-side,\n\t\t// we need to remove them from the view\n\t\tconst viewWithoutFilters = { ...view };\n\t\tdelete viewWithoutFilters.search;\n\t\tviewWithoutFilters.filters = [];\n\t\treturn filterSortAndPaginate( patterns, viewWithoutFilters, fields );\n\t}, [ patterns, view, fields ] );\n\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\trenameAction,\n\t\t\tduplicatePatternAction,\n\t\t\tduplicateTemplatePartAction,\n\t\t\texportJSONaction,\n\t\t\tresetAction,\n\t\t\tdeleteAction,\n\t\t],\n\t\t[]\n\t);\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView ]\n\t);\n\tconst id = useId();\n\tconst settings = usePatternSettings();\n\t// Wrap everything in a block editor provider.\n\t// This ensures 'styles' that are needed for the previews are synced\n\t// from the site editor store to the block editor store.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<Page\n\t\t\t\ttitle={ __( 'Patterns content' ) }\n\t\t\t\tclassName=\"edit-site-page-patterns-dataviews\"\n\t\t\t\thideTitleFromUI\n\t\t\t>\n\t\t\t\t<PatternsHeader\n\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\ttitleId={ `${ id }-title` }\n\t\t\t\t\tdescriptionId={ `${ id }-description` }\n\t\t\t\t/>\n\t\t\t\t<DataViews\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data || EMPTY_ARRAY }\n\t\t\t\t\tgetItemId={ ( item ) => item.name }\n\t\t\t\t\tisLoading={ isResolving }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tdeferredRendering\n\t\t\t\t\tsupportedLayouts={ [ LAYOUT_GRID, LAYOUT_TABLE ] }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
|
|
4
|
+
import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { unlock } from '../../lock-unlock';
|
|
10
|
+
const {
|
|
11
|
+
extractWords,
|
|
12
|
+
getNormalizedSearchTerms,
|
|
13
|
+
normalizeString
|
|
14
|
+
} = unlock(blockEditorPrivateApis);
|
|
6
15
|
|
|
7
16
|
/**
|
|
8
17
|
* Internal dependencies
|
|
@@ -15,56 +24,6 @@ const defaultGetTitle = item => item.title;
|
|
|
15
24
|
const defaultGetDescription = item => item.description || '';
|
|
16
25
|
const defaultGetKeywords = item => item.keywords || [];
|
|
17
26
|
const defaultHasCategory = () => false;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Extracts words from an input string.
|
|
21
|
-
*
|
|
22
|
-
* @param {string} input The input string.
|
|
23
|
-
*
|
|
24
|
-
* @return {Array} Words, extracted from the input string.
|
|
25
|
-
*/
|
|
26
|
-
function extractWords(input = '') {
|
|
27
|
-
return noCase(input, {
|
|
28
|
-
splitRegexp: [/([\p{Ll}\p{Lo}\p{N}])([\p{Lu}\p{Lt}])/gu,
|
|
29
|
-
// One lowercase or digit, followed by one uppercase.
|
|
30
|
-
/([\p{Lu}\p{Lt}])([\p{Lu}\p{Lt}][\p{Ll}\p{Lo}])/gu // One uppercase followed by one uppercase and one lowercase.
|
|
31
|
-
],
|
|
32
|
-
stripRegexp: /(\p{C}|\p{P}|\p{S})+/giu // Anything that's not a punctuation, symbol or control/format character.
|
|
33
|
-
}).split(' ').filter(Boolean);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Sanitizes the search input string.
|
|
38
|
-
*
|
|
39
|
-
* @param {string} input The search input to normalize.
|
|
40
|
-
*
|
|
41
|
-
* @return {string} The normalized search input.
|
|
42
|
-
*/
|
|
43
|
-
function normalizeSearchInput(input = '') {
|
|
44
|
-
// Disregard diacritics.
|
|
45
|
-
// Input: "média"
|
|
46
|
-
input = removeAccents(input);
|
|
47
|
-
|
|
48
|
-
// Accommodate leading slash, matching autocomplete expectations.
|
|
49
|
-
// Input: "/media"
|
|
50
|
-
input = input.replace(/^\//, '');
|
|
51
|
-
|
|
52
|
-
// Lowercase.
|
|
53
|
-
// Input: "MEDIA"
|
|
54
|
-
input = input.toLowerCase();
|
|
55
|
-
return input;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Converts the search term into a list of normalized terms.
|
|
60
|
-
*
|
|
61
|
-
* @param {string} input The search term to normalize.
|
|
62
|
-
*
|
|
63
|
-
* @return {string[]} The normalized list of search terms.
|
|
64
|
-
*/
|
|
65
|
-
export const getNormalizedSearchTerms = (input = '') => {
|
|
66
|
-
return extractWords(normalizeSearchInput(input));
|
|
67
|
-
};
|
|
68
27
|
const removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => {
|
|
69
28
|
return unmatchedTerms.filter(term => !getNormalizedSearchTerms(unprocessedTerms).some(unprocessedTerm => unprocessedTerm.includes(term)));
|
|
70
29
|
};
|
|
@@ -134,8 +93,8 @@ function getItemSearchRank(item, searchTerm, config) {
|
|
|
134
93
|
const title = getTitle(item);
|
|
135
94
|
const description = getDescription(item);
|
|
136
95
|
const keywords = getKeywords(item);
|
|
137
|
-
const normalizedSearchInput =
|
|
138
|
-
const normalizedTitle =
|
|
96
|
+
const normalizedSearchInput = normalizeString(searchTerm);
|
|
97
|
+
const normalizedTitle = normalizeString(title);
|
|
139
98
|
|
|
140
99
|
// Prefers exact matches
|
|
141
100
|
// Then prefers if the beginning of the title matches the search term
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["removeAccents","noCase","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_TYPES","defaultGetName","item","name","defaultGetTitle","title","defaultGetDescription","description","defaultGetKeywords","keywords","defaultHasCategory","extractWords","input","splitRegexp","stripRegexp","split","filter","Boolean","normalizeSearchInput","replace","toLowerCase","getNormalizedSearchTerms","removeMatchingTerms","unmatchedTerms","unprocessedTerms","term","some","unprocessedTerm","includes","searchItems","items","searchInput","config","normalizedSearchTerms","onlyFilterByCategory","categoryId","length","searchRankConfig","threshold","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","hasCategory","type","user","normalizedSearchInput","normalizedTitle","startsWith","terms","join"],"sources":["@wordpress/edit-site/src/components/page-patterns/search-items.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\nimport { noCase } from 'change-case';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => item.name || '';\nconst defaultGetTitle = ( item ) => item.title;\nconst defaultGetDescription = ( item ) => item.description || '';\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultHasCategory = () => false;\n\n/**\n * Extracts words from an input string.\n *\n * @param {string} input The input string.\n *\n * @return {Array} Words, extracted from the input string.\n */\nfunction extractWords( input = '' ) {\n\treturn noCase( input, {\n\t\tsplitRegexp: [\n\t\t\t/([\\p{Ll}\\p{Lo}\\p{N}])([\\p{Lu}\\p{Lt}])/gu, // One lowercase or digit, followed by one uppercase.\n\t\t\t/([\\p{Lu}\\p{Lt}])([\\p{Lu}\\p{Lt}][\\p{Ll}\\p{Lo}])/gu, // One uppercase followed by one uppercase and one lowercase.\n\t\t],\n\t\tstripRegexp: /(\\p{C}|\\p{P}|\\p{S})+/giu, // Anything that's not a punctuation, symbol or control/format character.\n\t} )\n\t\t.split( ' ' )\n\t\t.filter( Boolean );\n}\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nfunction normalizeSearchInput( input = '' ) {\n\t// Disregard diacritics.\n\t// Input: \"média\"\n\tinput = removeAccents( input );\n\n\t// Accommodate leading slash, matching autocomplete expectations.\n\t// Input: \"/media\"\n\tinput = input.replace( /^\\//, '' );\n\n\t// Lowercase.\n\t// Input: \"MEDIA\"\n\tinput = input.toLowerCase();\n\n\treturn input;\n}\n\n/**\n * Converts the search term into a list of normalized terms.\n *\n * @param {string} input The search term to normalize.\n *\n * @return {string[]} The normalized list of search terms.\n */\nexport const getNormalizedSearchTerms = ( input = '' ) => {\n\treturn extractWords( normalizeSearchInput( input ) );\n};\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\t// Filter patterns by category: the default category indicates that all patterns will be shown.\n\tconst onlyFilterByCategory =\n\t\tconfig.categoryId !== PATTERN_DEFAULT_CATEGORY &&\n\t\t! normalizedSearchTerms.length;\n\tconst searchRankConfig = { ...config, onlyFilterByCategory };\n\n\t// If we aren't filtering on search terms, matching on category is satisfactory.\n\t// If we are, then we need more than a category match.\n\tconst threshold = onlyFilterByCategory ? 0 : 1;\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [\n\t\t\t\titem,\n\t\t\t\tgetItemSearchRank( item, searchInput, searchRankConfig ),\n\t\t\t];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > threshold );\n\n\t// If we didn't have terms to search on, there's no point sorting.\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn rankedItems.map( ( [ item ] ) => item );\n\t}\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nfunction getItemSearchRank( item, searchTerm, config ) {\n\tconst {\n\t\tcategoryId,\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\thasCategory = defaultHasCategory,\n\t\tonlyFilterByCategory,\n\t} = config;\n\n\tlet rank =\n\t\tcategoryId === PATTERN_DEFAULT_CATEGORY ||\n\t\t( categoryId === PATTERN_USER_CATEGORY &&\n\t\t\titem.type === PATTERN_TYPES.user ) ||\n\t\thasCategory( item, categoryId )\n\t\t\t? 1\n\t\t\t: 0;\n\n\t// If an item doesn't belong to the current category or we don't have\n\t// search terms to filter by, return the initial rank value.\n\tif ( ! rank || onlyFilterByCategory ) {\n\t\treturn rank;\n\t}\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\n\tconst normalizedSearchInput = normalizeSearchInput( searchTerm );\n\tconst normalizedTitle = normalizeSearchInput( title );\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, description matches come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [ name, title, description, ...keywords ].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["privateApis","blockEditorPrivateApis","unlock","extractWords","getNormalizedSearchTerms","normalizeString","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_TYPES","defaultGetName","item","name","defaultGetTitle","title","defaultGetDescription","description","defaultGetKeywords","keywords","defaultHasCategory","removeMatchingTerms","unmatchedTerms","unprocessedTerms","filter","term","some","unprocessedTerm","includes","searchItems","items","searchInput","config","normalizedSearchTerms","onlyFilterByCategory","categoryId","length","searchRankConfig","threshold","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","hasCategory","type","user","normalizedSearchInput","normalizedTitle","startsWith","terms","join"],"sources":["@wordpress/edit-site/src/components/page-patterns/search-items.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { extractWords, getNormalizedSearchTerms, normalizeString } = unlock(\n\tblockEditorPrivateApis\n);\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => item.name || '';\nconst defaultGetTitle = ( item ) => item.title;\nconst defaultGetDescription = ( item ) => item.description || '';\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultHasCategory = () => false;\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\t// Filter patterns by category: the default category indicates that all patterns will be shown.\n\tconst onlyFilterByCategory =\n\t\tconfig.categoryId !== PATTERN_DEFAULT_CATEGORY &&\n\t\t! normalizedSearchTerms.length;\n\tconst searchRankConfig = { ...config, onlyFilterByCategory };\n\n\t// If we aren't filtering on search terms, matching on category is satisfactory.\n\t// If we are, then we need more than a category match.\n\tconst threshold = onlyFilterByCategory ? 0 : 1;\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [\n\t\t\t\titem,\n\t\t\t\tgetItemSearchRank( item, searchInput, searchRankConfig ),\n\t\t\t];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > threshold );\n\n\t// If we didn't have terms to search on, there's no point sorting.\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn rankedItems.map( ( [ item ] ) => item );\n\t}\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nfunction getItemSearchRank( item, searchTerm, config ) {\n\tconst {\n\t\tcategoryId,\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\thasCategory = defaultHasCategory,\n\t\tonlyFilterByCategory,\n\t} = config;\n\n\tlet rank =\n\t\tcategoryId === PATTERN_DEFAULT_CATEGORY ||\n\t\t( categoryId === PATTERN_USER_CATEGORY &&\n\t\t\titem.type === PATTERN_TYPES.user ) ||\n\t\thasCategory( item, categoryId )\n\t\t\t? 1\n\t\t\t: 0;\n\n\t// If an item doesn't belong to the current category or we don't have\n\t// search terms to filter by, return the initial rank value.\n\tif ( ! rank || onlyFilterByCategory ) {\n\t\treturn rank;\n\t}\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\n\tconst normalizedSearchInput = normalizeString( searchTerm );\n\tconst normalizedTitle = normalizeString( title );\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, description matches come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [ name, title, description, ...keywords ].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,sBAAsB,QAAQ,yBAAyB;;AAE/E;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC,YAAY;EAAEC,wBAAwB;EAAEC;AAAgB,CAAC,GAAGH,MAAM,CACzED,sBACD,CAAC;;AAED;AACA;AACA;AACA,SACCK,wBAAwB,EACxBC,qBAAqB,EACrBC,aAAa,QACP,uBAAuB;;AAE9B;AACA,MAAMC,cAAc,GAAKC,IAAI,IAAMA,IAAI,CAACC,IAAI,IAAI,EAAE;AAClD,MAAMC,eAAe,GAAKF,IAAI,IAAMA,IAAI,CAACG,KAAK;AAC9C,MAAMC,qBAAqB,GAAKJ,IAAI,IAAMA,IAAI,CAACK,WAAW,IAAI,EAAE;AAChE,MAAMC,kBAAkB,GAAKN,IAAI,IAAMA,IAAI,CAACO,QAAQ,IAAI,EAAE;AAC1D,MAAMC,kBAAkB,GAAGA,CAAA,KAAM,KAAK;AAEtC,MAAMC,mBAAmB,GAAGA,CAAEC,cAAc,EAAEC,gBAAgB,KAAM;EACnE,OAAOD,cAAc,CAACE,MAAM,CACzBC,IAAI,IACL,CAAEnB,wBAAwB,CAAEiB,gBAAiB,CAAC,CAACG,IAAI,CAChDC,eAAe,IAAMA,eAAe,CAACC,QAAQ,CAAEH,IAAK,CACvD,CACF,CAAC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,WAAW,GAAGA,CAAEC,KAAK,GAAG,EAAE,EAAEC,WAAW,GAAG,EAAE,EAAEC,MAAM,GAAG,CAAC,CAAC,KAAM;EAC3E,MAAMC,qBAAqB,GAAG3B,wBAAwB,CAAEyB,WAAY,CAAC;EACrE;EACA,MAAMG,oBAAoB,GACzBF,MAAM,CAACG,UAAU,KAAK3B,wBAAwB,IAC9C,CAAEyB,qBAAqB,CAACG,MAAM;EAC/B,MAAMC,gBAAgB,GAAG;IAAE,GAAGL,MAAM;IAAEE;EAAqB,CAAC;;EAE5D;EACA;EACA,MAAMI,SAAS,GAAGJ,oBAAoB,GAAG,CAAC,GAAG,CAAC;EAE9C,MAAMK,WAAW,GAAGT,KAAK,CACvBU,GAAG,CAAI5B,IAAI,IAAM;IACjB,OAAO,CACNA,IAAI,EACJ6B,iBAAiB,CAAE7B,IAAI,EAAEmB,WAAW,EAAEM,gBAAiB,CAAC,CACxD;EACF,CAAE,CAAC,CACFb,MAAM,CAAE,CAAE,GAAIkB,IAAI,CAAE,KAAMA,IAAI,GAAGJ,SAAU,CAAC;;EAE9C;EACA,IAAKL,qBAAqB,CAACG,MAAM,KAAK,CAAC,EAAG;IACzC,OAAOG,WAAW,CAACC,GAAG,CAAE,CAAE,CAAE5B,IAAI,CAAE,KAAMA,IAAK,CAAC;EAC/C;EAEA2B,WAAW,CAACI,IAAI,CAAE,CAAE,GAAIC,KAAK,CAAE,EAAE,GAAIC,KAAK,CAAE,KAAMA,KAAK,GAAGD,KAAM,CAAC;EACjE,OAAOL,WAAW,CAACC,GAAG,CAAE,CAAE,CAAE5B,IAAI,CAAE,KAAMA,IAAK,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6B,iBAAiBA,CAAE7B,IAAI,EAAEkC,UAAU,EAAEd,MAAM,EAAG;EACtD,MAAM;IACLG,UAAU;IACVY,OAAO,GAAGpC,cAAc;IACxBqC,QAAQ,GAAGlC,eAAe;IAC1BmC,cAAc,GAAGjC,qBAAqB;IACtCkC,WAAW,GAAGhC,kBAAkB;IAChCiC,WAAW,GAAG/B,kBAAkB;IAChCc;EACD,CAAC,GAAGF,MAAM;EAEV,IAAIU,IAAI,GACPP,UAAU,KAAK3B,wBAAwB,IACrC2B,UAAU,KAAK1B,qBAAqB,IACrCG,IAAI,CAACwC,IAAI,KAAK1C,aAAa,CAAC2C,IAAM,IACnCF,WAAW,CAAEvC,IAAI,EAAEuB,UAAW,CAAC,GAC5B,CAAC,GACD,CAAC;;EAEL;EACA;EACA,IAAK,CAAEO,IAAI,IAAIR,oBAAoB,EAAG;IACrC,OAAOQ,IAAI;EACZ;EAEA,MAAM7B,IAAI,GAAGkC,OAAO,CAAEnC,IAAK,CAAC;EAC5B,MAAMG,KAAK,GAAGiC,QAAQ,CAAEpC,IAAK,CAAC;EAC9B,MAAMK,WAAW,GAAGgC,cAAc,CAAErC,IAAK,CAAC;EAC1C,MAAMO,QAAQ,GAAG+B,WAAW,CAAEtC,IAAK,CAAC;EAEpC,MAAM0C,qBAAqB,GAAG/C,eAAe,CAAEuC,UAAW,CAAC;EAC3D,MAAMS,eAAe,GAAGhD,eAAe,CAAEQ,KAAM,CAAC;;EAEhD;EACA;EACA;EACA,IAAKuC,qBAAqB,KAAKC,eAAe,EAAG;IAChDb,IAAI,IAAI,EAAE;EACX,CAAC,MAAM,IAAKa,eAAe,CAACC,UAAU,CAAEF,qBAAsB,CAAC,EAAG;IACjEZ,IAAI,IAAI,EAAE;EACX,CAAC,MAAM;IACN,MAAMe,KAAK,GAAG,CAAE5C,IAAI,EAAEE,KAAK,EAAEE,WAAW,EAAE,GAAGE,QAAQ,CAAE,CAACuC,IAAI,CAAE,GAAI,CAAC;IACnE,MAAMzB,qBAAqB,GAAG5B,YAAY,CAAEiD,qBAAsB,CAAC;IACnE,MAAMhC,cAAc,GAAGD,mBAAmB,CACzCY,qBAAqB,EACrBwB,KACD,CAAC;IAED,IAAKnC,cAAc,CAACc,MAAM,KAAK,CAAC,EAAG;MAClCM,IAAI,IAAI,EAAE;IACX;EACD;EAEA,OAAOA,IAAI;AACZ"}
|
|
@@ -40,7 +40,7 @@ const selectTemplatePartsAsPatterns = createSelector((select, categoryId, search
|
|
|
40
40
|
var _getEntityRecords;
|
|
41
41
|
const {
|
|
42
42
|
getEntityRecords,
|
|
43
|
-
|
|
43
|
+
isResolving: isResolvingSelector
|
|
44
44
|
} = select(coreStore);
|
|
45
45
|
const {
|
|
46
46
|
__experimentalGetDefaultTemplatePartAreas
|
|
@@ -62,7 +62,7 @@ const selectTemplatePartsAsPatterns = createSelector((select, categoryId, search
|
|
|
62
62
|
}
|
|
63
63
|
return item.templatePart.area === category || !templatePartAreas.includes(item.templatePart.area);
|
|
64
64
|
};
|
|
65
|
-
const isResolving =
|
|
65
|
+
const isResolving = isResolvingSelector('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, query]);
|
|
66
66
|
const patterns = searchItems(templateParts, search, {
|
|
67
67
|
categoryId,
|
|
68
68
|
hasCategory: templatePartHasCategory
|
|
@@ -73,7 +73,7 @@ const selectTemplatePartsAsPatterns = createSelector((select, categoryId, search
|
|
|
73
73
|
};
|
|
74
74
|
}, select => [select(coreStore).getEntityRecords('postType', TEMPLATE_PART_POST_TYPE, {
|
|
75
75
|
per_page: -1
|
|
76
|
-
}), select(coreStore).
|
|
76
|
+
}), select(coreStore).isResolving('getEntityRecords', ['postType', TEMPLATE_PART_POST_TYPE, {
|
|
77
77
|
per_page: -1
|
|
78
78
|
}]), select(editorStore).__experimentalGetDefaultTemplatePartAreas()]);
|
|
79
79
|
const selectThemePatterns = createSelector(select => {
|
|
@@ -82,7 +82,7 @@ const selectThemePatterns = createSelector(select => {
|
|
|
82
82
|
getSettings
|
|
83
83
|
} = unlock(select(editSiteStore));
|
|
84
84
|
const {
|
|
85
|
-
|
|
85
|
+
isResolving: isResolvingSelector
|
|
86
86
|
} = select(coreStore);
|
|
87
87
|
const settings = getSettings();
|
|
88
88
|
const blockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns;
|
|
@@ -97,9 +97,9 @@ const selectThemePatterns = createSelector(select => {
|
|
|
97
97
|
}));
|
|
98
98
|
return {
|
|
99
99
|
patterns,
|
|
100
|
-
isResolving:
|
|
100
|
+
isResolving: isResolvingSelector('getBlockPatterns')
|
|
101
101
|
};
|
|
102
|
-
}, select => [select(coreStore).getBlockPatterns(), select(coreStore).
|
|
102
|
+
}, select => [select(coreStore).getBlockPatterns(), select(coreStore).isResolving('getBlockPatterns'), unlock(select(editSiteStore)).getSettings()]);
|
|
103
103
|
const selectPatterns = createSelector((select, categoryId, syncStatus, search = '') => {
|
|
104
104
|
const {
|
|
105
105
|
patterns: themePatterns,
|
|
@@ -160,7 +160,7 @@ const convertPatternPostToItem = (patternPost, categories) => ({
|
|
|
160
160
|
const selectUserPatterns = createSelector((select, syncStatus, search = '') => {
|
|
161
161
|
const {
|
|
162
162
|
getEntityRecords,
|
|
163
|
-
|
|
163
|
+
isResolving: isResolvingSelector,
|
|
164
164
|
getUserPatternCategories
|
|
165
165
|
} = select(coreStore);
|
|
166
166
|
const query = {
|
|
@@ -171,7 +171,7 @@ const selectUserPatterns = createSelector((select, syncStatus, search = '') => {
|
|
|
171
171
|
const categories = new Map();
|
|
172
172
|
userPatternCategories.forEach(userCategory => categories.set(userCategory.id, userCategory));
|
|
173
173
|
let patterns = patternPosts ? patternPosts.map(record => convertPatternPostToItem(record, categories)) : EMPTY_PATTERN_LIST;
|
|
174
|
-
const isResolving =
|
|
174
|
+
const isResolving = isResolvingSelector('getEntityRecords', ['postType', PATTERN_TYPES.user, query]);
|
|
175
175
|
if (syncStatus) {
|
|
176
176
|
patterns = patterns.filter(pattern => pattern.syncStatus === syncStatus);
|
|
177
177
|
}
|
|
@@ -188,7 +188,7 @@ const selectUserPatterns = createSelector((select, syncStatus, search = '') => {
|
|
|
188
188
|
};
|
|
189
189
|
}, select => [select(coreStore).getEntityRecords('postType', PATTERN_TYPES.user, {
|
|
190
190
|
per_page: -1
|
|
191
|
-
}), select(coreStore).
|
|
191
|
+
}), select(coreStore).isResolving('getEntityRecords', ['postType', PATTERN_TYPES.user, {
|
|
192
192
|
per_page: -1
|
|
193
193
|
}]), select(coreStore).getUserPatternCategories()]);
|
|
194
194
|
export const usePatterns = (categoryType, categoryId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSelector","parse","useSelect","store","coreStore","editorStore","decodeEntities","filterOutDuplicatesByName","EXCLUDED_PATTERN_SOURCES","PATTERN_TYPES","PATTERN_SYNC_TYPES","TEMPLATE_PART_POST_TYPE","TEMPLATE_ORIGINS","TEMPLATE_PART_AREA_DEFAULT_CATEGORY","unlock","searchItems","editSiteStore","EMPTY_PATTERN_LIST","createTemplatePartId","theme","slug","templatePartToPattern","templatePart","blocks","content","raw","__unstableSkipMigrationLogs","categories","area","description","isCustom","source","custom","keywords","id","name","title","rendered","type","selectTemplatePartsAsPatterns","select","categoryId","search","_getEntityRecords","getEntityRecords","getIsResolving","__experimentalGetDefaultTemplatePartAreas","query","per_page","rawTemplateParts","templateParts","map","knownAreas","templatePartAreas","templatePartHasCategory","item","category","includes","isResolving","patterns","hasCategory","selectThemePatterns","_settings$__experimen","getSettings","settings","blockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","restBlockPatterns","getBlockPatterns","filter","pattern","inserter","selectPatterns","syncStatus","themePatterns","isResolvingThemePatterns","userPatterns","isResolvingUserPatterns","selectUserPatterns","user","unsynced","currentCategory","hasOwnProperty","convertPatternPostToItem","patternPost","wp_pattern_category","length","patternCategoryId","get","termLabels","label","wp_pattern_sync_status","full","getUserPatternCategories","patternPosts","userPatternCategories","Map","forEach","userCategory","set","record","usePatterns","categoryType"],"sources":["@wordpress/edit-site/src/components/page-patterns/use-patterns.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { filterOutDuplicatesByName } from './utils';\nimport {\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_TYPES,\n\tPATTERN_SYNC_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_ORIGINS,\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { searchItems } from './search-items';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_PATTERN_LIST = [];\n\nconst createTemplatePartId = ( theme, slug ) =>\n\ttheme && slug ? theme + '//' + slug : null;\n\nconst templatePartToPattern = ( templatePart ) => ( {\n\tblocks: parse( templatePart.content.raw, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} ),\n\tcategories: [ templatePart.area ],\n\tdescription: templatePart.description || '',\n\tisCustom: templatePart.source === TEMPLATE_ORIGINS.custom,\n\tkeywords: templatePart.keywords || [],\n\tid: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\ttitle: decodeEntities( templatePart.title.rendered ),\n\ttype: templatePart.type,\n\ttemplatePart,\n} );\n\nconst selectTemplatePartsAsPatterns = createSelector(\n\t( select, categoryId, search = '' ) => {\n\t\tconst { getEntityRecords, getIsResolving } = select( coreStore );\n\t\tconst { __experimentalGetDefaultTemplatePartAreas } =\n\t\t\tselect( editorStore );\n\t\tconst query = { per_page: -1 };\n\t\tconst rawTemplateParts =\n\t\t\tgetEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, query ) ??\n\t\t\tEMPTY_PATTERN_LIST;\n\t\tconst templateParts = rawTemplateParts.map( ( templatePart ) =>\n\t\t\ttemplatePartToPattern( templatePart )\n\t\t);\n\n\t\t// In the case where a custom template part area has been removed we need\n\t\t// the current list of areas to cross check against so orphaned template\n\t\t// parts can be treated as uncategorized.\n\t\tconst knownAreas = __experimentalGetDefaultTemplatePartAreas() || [];\n\t\tconst templatePartAreas = knownAreas.map( ( area ) => area.area );\n\n\t\tconst templatePartHasCategory = ( item, category ) => {\n\t\t\tif ( category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY ) {\n\t\t\t\treturn item.templatePart.area === category;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\titem.templatePart.area === category ||\n\t\t\t\t! templatePartAreas.includes( item.templatePart.area )\n\t\t\t);\n\t\t};\n\n\t\tconst isResolving = getIsResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\tquery,\n\t\t] );\n\n\t\tconst patterns = searchItems( templateParts, search, {\n\t\t\tcategoryId,\n\t\t\thasCategory: templatePartHasCategory,\n\t\t} );\n\n\t\treturn { patterns, isResolving };\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t),\n\t\tselect( coreStore ).getIsResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( editorStore ).__experimentalGetDefaultTemplatePartAreas(),\n\t]\n);\n\nconst selectThemePatterns = createSelector(\n\t( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\tconst { getIsResolving } = select( coreStore );\n\t\tconst settings = getSettings();\n\t\tconst blockPatterns =\n\t\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\t\tsettings.__experimentalBlockPatterns;\n\n\t\tconst restBlockPatterns = select( coreStore ).getBlockPatterns();\n\n\t\tconst patterns = [\n\t\t\t...( blockPatterns || [] ),\n\t\t\t...( restBlockPatterns || [] ),\n\t\t]\n\t\t\t.filter(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\t! EXCLUDED_PATTERN_SOURCES.includes( pattern.source )\n\t\t\t)\n\t\t\t.filter( filterOutDuplicatesByName )\n\t\t\t.filter( ( pattern ) => pattern.inserter !== false )\n\t\t\t.map( ( pattern ) => ( {\n\t\t\t\t...pattern,\n\t\t\t\tkeywords: pattern.keywords || [],\n\t\t\t\ttype: PATTERN_TYPES.theme,\n\t\t\t\tblocks: parse( pattern.content, {\n\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\treturn { patterns, isResolving: getIsResolving( 'getBlockPatterns' ) };\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getBlockPatterns(),\n\t\tselect( coreStore ).getIsResolving( 'getBlockPatterns' ),\n\t\tunlock( select( editSiteStore ) ).getSettings(),\n\t]\n);\n\nconst selectPatterns = createSelector(\n\t( select, categoryId, syncStatus, search = '' ) => {\n\t\tconst {\n\t\t\tpatterns: themePatterns,\n\t\t\tisResolving: isResolvingThemePatterns,\n\t\t} = selectThemePatterns( select );\n\t\tconst { patterns: userPatterns, isResolving: isResolvingUserPatterns } =\n\t\t\tselectUserPatterns( select );\n\n\t\tlet patterns = [\n\t\t\t...( themePatterns || [] ),\n\t\t\t...( userPatterns || [] ),\n\t\t];\n\n\t\tif ( syncStatus ) {\n\t\t\t// User patterns can have their sync statuses checked directly\n\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\tpatterns = patterns.filter( ( pattern ) => {\n\t\t\t\treturn pattern.type === PATTERN_TYPES.user\n\t\t\t\t\t? pattern.syncStatus === syncStatus\n\t\t\t\t\t: syncStatus === PATTERN_SYNC_TYPES.unsynced;\n\t\t\t} );\n\t\t}\n\n\t\tif ( categoryId ) {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\tcategoryId,\n\t\t\t\thasCategory: ( item, currentCategory ) =>\n\t\t\t\t\titem.categories?.includes( currentCategory ),\n\t\t\t} );\n\t\t} else {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\thasCategory: ( item ) => ! item.hasOwnProperty( 'categories' ),\n\t\t\t} );\n\t\t}\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving: isResolvingThemePatterns || isResolvingUserPatterns,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselectThemePatterns( select ),\n\t\tselectUserPatterns( select ),\n\t]\n);\n\n/**\n * Converts a post of type `wp_block` to a 'pattern item' that more closely\n * matches the structure of theme provided patterns.\n *\n * @param {Object} patternPost The `wp_block` record being normalized.\n * @param {Map} categories A Map of user created categories.\n *\n * @return {Object} The normalized item.\n */\nconst convertPatternPostToItem = ( patternPost, categories ) => ( {\n\tblocks: parse( patternPost.content.raw, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} ),\n\t...( patternPost.wp_pattern_category.length > 0 && {\n\t\tcategories: patternPost.wp_pattern_category.map(\n\t\t\t( patternCategoryId ) =>\n\t\t\t\tcategories && categories.get( patternCategoryId )\n\t\t\t\t\t? categories.get( patternCategoryId ).slug\n\t\t\t\t\t: patternCategoryId\n\t\t),\n\t} ),\n\ttermLabels: patternPost.wp_pattern_category.map( ( patternCategoryId ) =>\n\t\tcategories?.get( patternCategoryId )\n\t\t\t? categories.get( patternCategoryId ).label\n\t\t\t: patternCategoryId\n\t),\n\tid: patternPost.id,\n\tname: patternPost.slug,\n\tsyncStatus: patternPost.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,\n\ttitle: patternPost.title.raw,\n\ttype: patternPost.type,\n\tpatternPost,\n} );\n\nconst selectUserPatterns = createSelector(\n\t( select, syncStatus, search = '' ) => {\n\t\tconst { getEntityRecords, getIsResolving, getUserPatternCategories } =\n\t\t\tselect( coreStore );\n\n\t\tconst query = { per_page: -1 };\n\t\tconst patternPosts = getEntityRecords(\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery\n\t\t);\n\t\tconst userPatternCategories = getUserPatternCategories();\n\t\tconst categories = new Map();\n\t\tuserPatternCategories.forEach( ( userCategory ) =>\n\t\t\tcategories.set( userCategory.id, userCategory )\n\t\t);\n\t\tlet patterns = patternPosts\n\t\t\t? patternPosts.map( ( record ) =>\n\t\t\t\t\tconvertPatternPostToItem( record, categories )\n\t\t\t )\n\t\t\t: EMPTY_PATTERN_LIST;\n\n\t\tconst isResolving = getIsResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery,\n\t\t] );\n\n\t\tif ( syncStatus ) {\n\t\t\tpatterns = patterns.filter(\n\t\t\t\t( pattern ) => pattern.syncStatus === syncStatus\n\t\t\t);\n\t\t}\n\n\t\tpatterns = searchItems( patterns, search, {\n\t\t\t// We exit user pattern retrieval early if we aren't in the\n\t\t\t// catch-all category for user created patterns, so it has\n\t\t\t// to be in the category.\n\t\t\thasCategory: () => true,\n\t\t} );\n\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving,\n\t\t\tcategories: userPatternCategories,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords( 'postType', PATTERN_TYPES.user, {\n\t\t\tper_page: -1,\n\t\t} ),\n\t\tselect( coreStore ).getIsResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( coreStore ).getUserPatternCategories(),\n\t]\n);\n\nexport const usePatterns = (\n\tcategoryType,\n\tcategoryId,\n\t{ search = '', syncStatus } = {}\n) => {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( categoryType === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t\treturn selectTemplatePartsAsPatterns(\n\t\t\t\t\tselect,\n\t\t\t\t\tcategoryId,\n\t\t\t\t\tsearch\n\t\t\t\t);\n\t\t\t} else if ( categoryType === PATTERN_TYPES.theme ) {\n\t\t\t\treturn selectPatterns( select, categoryId, syncStatus, search );\n\t\t\t} else if ( categoryType === PATTERN_TYPES.user ) {\n\t\t\t\treturn selectUserPatterns( select, syncStatus, search );\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpatterns: EMPTY_PATTERN_LIST,\n\t\t\t\tisResolving: false,\n\t\t\t};\n\t\t},\n\t\t[ categoryId, categoryType, search, syncStatus ]\n\t);\n};\n\nexport default usePatterns;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createSelector","parse","useSelect","store","coreStore","editorStore","decodeEntities","filterOutDuplicatesByName","EXCLUDED_PATTERN_SOURCES","PATTERN_TYPES","PATTERN_SYNC_TYPES","TEMPLATE_PART_POST_TYPE","TEMPLATE_ORIGINS","TEMPLATE_PART_AREA_DEFAULT_CATEGORY","unlock","searchItems","editSiteStore","EMPTY_PATTERN_LIST","createTemplatePartId","theme","slug","templatePartToPattern","templatePart","blocks","content","raw","__unstableSkipMigrationLogs","categories","area","description","isCustom","source","custom","keywords","id","name","title","rendered","type","selectTemplatePartsAsPatterns","select","categoryId","search","_getEntityRecords","getEntityRecords","isResolving","isResolvingSelector","__experimentalGetDefaultTemplatePartAreas","query","per_page","rawTemplateParts","templateParts","map","knownAreas","templatePartAreas","templatePartHasCategory","item","category","includes","patterns","hasCategory","selectThemePatterns","_settings$__experimen","getSettings","settings","blockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","restBlockPatterns","getBlockPatterns","filter","pattern","inserter","selectPatterns","syncStatus","themePatterns","isResolvingThemePatterns","userPatterns","isResolvingUserPatterns","selectUserPatterns","user","unsynced","currentCategory","hasOwnProperty","convertPatternPostToItem","patternPost","wp_pattern_category","length","patternCategoryId","get","termLabels","label","wp_pattern_sync_status","full","getUserPatternCategories","patternPosts","userPatternCategories","Map","forEach","userCategory","set","record","usePatterns","categoryType"],"sources":["@wordpress/edit-site/src/components/page-patterns/use-patterns.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { filterOutDuplicatesByName } from './utils';\nimport {\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_TYPES,\n\tPATTERN_SYNC_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_ORIGINS,\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { searchItems } from './search-items';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_PATTERN_LIST = [];\n\nconst createTemplatePartId = ( theme, slug ) =>\n\ttheme && slug ? theme + '//' + slug : null;\n\nconst templatePartToPattern = ( templatePart ) => ( {\n\tblocks: parse( templatePart.content.raw, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} ),\n\tcategories: [ templatePart.area ],\n\tdescription: templatePart.description || '',\n\tisCustom: templatePart.source === TEMPLATE_ORIGINS.custom,\n\tkeywords: templatePart.keywords || [],\n\tid: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\ttitle: decodeEntities( templatePart.title.rendered ),\n\ttype: templatePart.type,\n\ttemplatePart,\n} );\n\nconst selectTemplatePartsAsPatterns = createSelector(\n\t( select, categoryId, search = '' ) => {\n\t\tconst { getEntityRecords, isResolving: isResolvingSelector } =\n\t\t\tselect( coreStore );\n\t\tconst { __experimentalGetDefaultTemplatePartAreas } =\n\t\t\tselect( editorStore );\n\t\tconst query = { per_page: -1 };\n\t\tconst rawTemplateParts =\n\t\t\tgetEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, query ) ??\n\t\t\tEMPTY_PATTERN_LIST;\n\t\tconst templateParts = rawTemplateParts.map( ( templatePart ) =>\n\t\t\ttemplatePartToPattern( templatePart )\n\t\t);\n\n\t\t// In the case where a custom template part area has been removed we need\n\t\t// the current list of areas to cross check against so orphaned template\n\t\t// parts can be treated as uncategorized.\n\t\tconst knownAreas = __experimentalGetDefaultTemplatePartAreas() || [];\n\t\tconst templatePartAreas = knownAreas.map( ( area ) => area.area );\n\n\t\tconst templatePartHasCategory = ( item, category ) => {\n\t\t\tif ( category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY ) {\n\t\t\t\treturn item.templatePart.area === category;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\titem.templatePart.area === category ||\n\t\t\t\t! templatePartAreas.includes( item.templatePart.area )\n\t\t\t);\n\t\t};\n\n\t\tconst isResolving = isResolvingSelector( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\tquery,\n\t\t] );\n\n\t\tconst patterns = searchItems( templateParts, search, {\n\t\t\tcategoryId,\n\t\t\thasCategory: templatePartHasCategory,\n\t\t} );\n\n\t\treturn { patterns, isResolving };\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t),\n\t\tselect( coreStore ).isResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( editorStore ).__experimentalGetDefaultTemplatePartAreas(),\n\t]\n);\n\nconst selectThemePatterns = createSelector(\n\t( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\tconst { isResolving: isResolvingSelector } = select( coreStore );\n\t\tconst settings = getSettings();\n\t\tconst blockPatterns =\n\t\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\t\tsettings.__experimentalBlockPatterns;\n\n\t\tconst restBlockPatterns = select( coreStore ).getBlockPatterns();\n\n\t\tconst patterns = [\n\t\t\t...( blockPatterns || [] ),\n\t\t\t...( restBlockPatterns || [] ),\n\t\t]\n\t\t\t.filter(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\t! EXCLUDED_PATTERN_SOURCES.includes( pattern.source )\n\t\t\t)\n\t\t\t.filter( filterOutDuplicatesByName )\n\t\t\t.filter( ( pattern ) => pattern.inserter !== false )\n\t\t\t.map( ( pattern ) => ( {\n\t\t\t\t...pattern,\n\t\t\t\tkeywords: pattern.keywords || [],\n\t\t\t\ttype: PATTERN_TYPES.theme,\n\t\t\t\tblocks: parse( pattern.content, {\n\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving: isResolvingSelector( 'getBlockPatterns' ),\n\t\t};\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getBlockPatterns(),\n\t\tselect( coreStore ).isResolving( 'getBlockPatterns' ),\n\t\tunlock( select( editSiteStore ) ).getSettings(),\n\t]\n);\n\nconst selectPatterns = createSelector(\n\t( select, categoryId, syncStatus, search = '' ) => {\n\t\tconst {\n\t\t\tpatterns: themePatterns,\n\t\t\tisResolving: isResolvingThemePatterns,\n\t\t} = selectThemePatterns( select );\n\t\tconst { patterns: userPatterns, isResolving: isResolvingUserPatterns } =\n\t\t\tselectUserPatterns( select );\n\n\t\tlet patterns = [\n\t\t\t...( themePatterns || [] ),\n\t\t\t...( userPatterns || [] ),\n\t\t];\n\n\t\tif ( syncStatus ) {\n\t\t\t// User patterns can have their sync statuses checked directly\n\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\tpatterns = patterns.filter( ( pattern ) => {\n\t\t\t\treturn pattern.type === PATTERN_TYPES.user\n\t\t\t\t\t? pattern.syncStatus === syncStatus\n\t\t\t\t\t: syncStatus === PATTERN_SYNC_TYPES.unsynced;\n\t\t\t} );\n\t\t}\n\n\t\tif ( categoryId ) {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\tcategoryId,\n\t\t\t\thasCategory: ( item, currentCategory ) =>\n\t\t\t\t\titem.categories?.includes( currentCategory ),\n\t\t\t} );\n\t\t} else {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\thasCategory: ( item ) => ! item.hasOwnProperty( 'categories' ),\n\t\t\t} );\n\t\t}\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving: isResolvingThemePatterns || isResolvingUserPatterns,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselectThemePatterns( select ),\n\t\tselectUserPatterns( select ),\n\t]\n);\n\n/**\n * Converts a post of type `wp_block` to a 'pattern item' that more closely\n * matches the structure of theme provided patterns.\n *\n * @param {Object} patternPost The `wp_block` record being normalized.\n * @param {Map} categories A Map of user created categories.\n *\n * @return {Object} The normalized item.\n */\nconst convertPatternPostToItem = ( patternPost, categories ) => ( {\n\tblocks: parse( patternPost.content.raw, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} ),\n\t...( patternPost.wp_pattern_category.length > 0 && {\n\t\tcategories: patternPost.wp_pattern_category.map(\n\t\t\t( patternCategoryId ) =>\n\t\t\t\tcategories && categories.get( patternCategoryId )\n\t\t\t\t\t? categories.get( patternCategoryId ).slug\n\t\t\t\t\t: patternCategoryId\n\t\t),\n\t} ),\n\ttermLabels: patternPost.wp_pattern_category.map( ( patternCategoryId ) =>\n\t\tcategories?.get( patternCategoryId )\n\t\t\t? categories.get( patternCategoryId ).label\n\t\t\t: patternCategoryId\n\t),\n\tid: patternPost.id,\n\tname: patternPost.slug,\n\tsyncStatus: patternPost.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,\n\ttitle: patternPost.title.raw,\n\ttype: patternPost.type,\n\tpatternPost,\n} );\n\nconst selectUserPatterns = createSelector(\n\t( select, syncStatus, search = '' ) => {\n\t\tconst {\n\t\t\tgetEntityRecords,\n\t\t\tisResolving: isResolvingSelector,\n\t\t\tgetUserPatternCategories,\n\t\t} = select( coreStore );\n\n\t\tconst query = { per_page: -1 };\n\t\tconst patternPosts = getEntityRecords(\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery\n\t\t);\n\t\tconst userPatternCategories = getUserPatternCategories();\n\t\tconst categories = new Map();\n\t\tuserPatternCategories.forEach( ( userCategory ) =>\n\t\t\tcategories.set( userCategory.id, userCategory )\n\t\t);\n\t\tlet patterns = patternPosts\n\t\t\t? patternPosts.map( ( record ) =>\n\t\t\t\t\tconvertPatternPostToItem( record, categories )\n\t\t\t )\n\t\t\t: EMPTY_PATTERN_LIST;\n\n\t\tconst isResolving = isResolvingSelector( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery,\n\t\t] );\n\n\t\tif ( syncStatus ) {\n\t\t\tpatterns = patterns.filter(\n\t\t\t\t( pattern ) => pattern.syncStatus === syncStatus\n\t\t\t);\n\t\t}\n\n\t\tpatterns = searchItems( patterns, search, {\n\t\t\t// We exit user pattern retrieval early if we aren't in the\n\t\t\t// catch-all category for user created patterns, so it has\n\t\t\t// to be in the category.\n\t\t\thasCategory: () => true,\n\t\t} );\n\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving,\n\t\t\tcategories: userPatternCategories,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords( 'postType', PATTERN_TYPES.user, {\n\t\t\tper_page: -1,\n\t\t} ),\n\t\tselect( coreStore ).isResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( coreStore ).getUserPatternCategories(),\n\t]\n);\n\nexport const usePatterns = (\n\tcategoryType,\n\tcategoryId,\n\t{ search = '', syncStatus } = {}\n) => {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( categoryType === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t\treturn selectTemplatePartsAsPatterns(\n\t\t\t\t\tselect,\n\t\t\t\t\tcategoryId,\n\t\t\t\t\tsearch\n\t\t\t\t);\n\t\t\t} else if ( categoryType === PATTERN_TYPES.theme ) {\n\t\t\t\treturn selectPatterns( select, categoryId, syncStatus, search );\n\t\t\t} else if ( categoryType === PATTERN_TYPES.user ) {\n\t\t\t\treturn selectUserPatterns( select, syncStatus, search );\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpatterns: EMPTY_PATTERN_LIST,\n\t\t\t\tisResolving: false,\n\t\t\t};\n\t\t},\n\t\t[ categoryId, categoryType, search, syncStatus ]\n\t);\n};\n\nexport default usePatterns;\n"],"mappings":"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"}
|