@wordpress/edit-site 5.18.0 → 5.19.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 +2 -0
- package/build/components/add-new-pattern/index.js +62 -1
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/add-new-template/index.js +3 -2
- package/build/components/add-new-template/index.js.map +1 -1
- package/build/components/add-new-template/new-template.js +6 -1
- package/build/components/add-new-template/new-template.js.map +1 -1
- package/build/components/add-new-template/utils.js +6 -1
- package/build/components/add-new-template/utils.js.map +1 -1
- package/build/components/app/index.js +2 -7
- package/build/components/app/index.js.map +1 -1
- package/build/components/block-editor/back-button.js +3 -2
- package/build/components/block-editor/back-button.js.map +1 -1
- package/build/components/block-editor/editor-canvas.js +20 -16
- package/build/components/block-editor/editor-canvas.js.map +1 -1
- package/build/components/block-editor/site-editor-canvas.js +1 -3
- package/build/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build/components/block-editor/use-site-editor-settings.js +8 -4
- package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build/components/canvas-loader/index.js +18 -1
- package/build/components/canvas-loader/index.js.map +1 -1
- package/build/components/editor/index.js +3 -8
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +5 -4
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/font-families.js +68 -0
- package/build/components/global-styles/font-families.js.map +1 -0
- package/build/components/global-styles/font-family-item.js +47 -0
- package/build/components/global-styles/font-family-item.js.map +1 -0
- package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +31 -0
- package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
- package/build/components/global-styles/font-library-modal/context.js +285 -0
- package/build/components/global-styles/font-library-modal/context.js.map +1 -0
- package/build/components/global-styles/font-library-modal/font-card.js +58 -0
- package/build/components/global-styles/font-library-modal/font-card.js.map +1 -0
- package/build/components/global-styles/font-library-modal/font-demo.js +69 -0
- package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -0
- package/build/components/global-styles/font-library-modal/font-variant.js +51 -0
- package/build/components/global-styles/font-library-modal/font-variant.js.map +1 -0
- package/build/components/global-styles/font-library-modal/fonts-grid.js +54 -0
- package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
- package/build/components/global-styles/font-library-modal/index.js +47 -0
- package/build/components/global-styles/font-library-modal/index.js.map +1 -0
- package/build/components/global-styles/font-library-modal/installed-fonts.js +128 -0
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
- package/build/components/global-styles/font-library-modal/library-font-card.js +44 -0
- package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
- package/build/components/global-styles/font-library-modal/library-font-details.js +43 -0
- package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
- package/build/components/global-styles/font-library-modal/library-font-variant.js +59 -0
- package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
- package/build/components/global-styles/font-library-modal/local-fonts.js +143 -0
- package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
- package/build/components/global-styles/font-library-modal/resolvers.js +37 -0
- package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -0
- package/build/components/global-styles/font-library-modal/tab-layout.js +45 -0
- package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/constants.js +37 -0
- package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
- package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/index.js +205 -0
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js +22 -0
- package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/toggleFont.js +92 -0
- package/build/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
- package/build/components/global-styles/global-styles-provider.js +7 -12
- package/build/components/global-styles/global-styles-provider.js.map +1 -1
- package/build/components/global-styles/screen-block.js +34 -21
- package/build/components/global-styles/screen-block.js.map +1 -1
- package/build/components/global-styles/screen-revisions/index.js +1 -3
- package/build/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
- package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
- package/build/components/global-styles/screen-typography.js +4 -72
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/global-styles/style-variations-container.js +3 -5
- package/build/components/global-styles/style-variations-container.js.map +1 -1
- package/build/components/global-styles/typogrphy-elements.js +96 -0
- package/build/components/global-styles/typogrphy-elements.js.map +1 -0
- package/build/components/page-patterns/duplicate-menu-item.js +52 -16
- package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build/components/page-patterns/grid-item.js +46 -20
- package/build/components/page-patterns/grid-item.js.map +1 -1
- package/build/components/page-patterns/header.js +3 -7
- package/build/components/page-patterns/header.js.map +1 -1
- package/build/components/page-patterns/index.js +3 -3
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-patterns/patterns-list.js +7 -7
- package/build/components/page-patterns/patterns-list.js.map +1 -1
- package/build/components/page-patterns/rename-menu-item.js +6 -5
- package/build/components/page-patterns/rename-menu-item.js.map +1 -1
- package/build/components/page-patterns/search-items.js +8 -2
- package/build/components/page-patterns/search-items.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +53 -27
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-patterns/utils.js +1 -20
- package/build/components/page-patterns/utils.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js +33 -24
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/hooks.js +64 -0
- package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
- package/build/components/sidebar-edit-mode/page-panels/index.js +1 -4
- package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
- package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +56 -0
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
- package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +91 -0
- package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
- package/build/components/sidebar-edit-mode/template-panel/index.js +11 -9
- package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/last-revision.js +6 -4
- package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +211 -0
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
- package/build/components/sidebar-navigation-screen/index.js +6 -4
- package/build/components/sidebar-navigation-screen/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-details-footer/index.js +32 -4
- package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
- package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
- package/build/components/sidebar-navigation-screen-global-styles/index.js +4 -31
- package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-page/index.js +3 -3
- package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/index.js +18 -8
- package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
- package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/index.js +7 -35
- package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
- package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
- package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
- package/build/components/sidebar-navigation-screen-template/index.js +2 -2
- package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates/index.js +1 -1
- package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
- package/build/components/template-actions/index.js +7 -4
- package/build/components/template-actions/index.js.map +1 -1
- package/build/components/template-actions/rename-menu-item.js +3 -2
- package/build/components/template-actions/rename-menu-item.js.map +1 -1
- package/build/components/welcome-guide/styles.js +2 -2
- package/build/components/welcome-guide/styles.js.map +1 -1
- package/build/hooks/push-changes-to-global-styles/index.js +5 -37
- package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build/store/actions.js +29 -6
- package/build/store/actions.js.map +1 -1
- package/build/utils/constants.js +45 -2
- package/build/utils/constants.js.map +1 -1
- package/build/utils/is-template-removable.js +6 -1
- package/build/utils/is-template-removable.js.map +1 -1
- package/build/utils/is-template-revertable.js +6 -1
- package/build/utils/is-template-revertable.js.map +1 -1
- package/build-module/components/add-new-pattern/index.js +66 -5
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/add-new-template/index.js +3 -2
- package/build-module/components/add-new-template/index.js.map +1 -1
- package/build-module/components/add-new-template/new-template.js +6 -1
- package/build-module/components/add-new-template/new-template.js.map +1 -1
- package/build-module/components/add-new-template/utils.js +6 -1
- package/build-module/components/add-new-template/utils.js.map +1 -1
- package/build-module/components/app/index.js +2 -7
- package/build-module/components/app/index.js.map +1 -1
- package/build-module/components/block-editor/back-button.js +3 -2
- package/build-module/components/block-editor/back-button.js.map +1 -1
- package/build-module/components/block-editor/editor-canvas.js +21 -17
- package/build-module/components/block-editor/editor-canvas.js.map +1 -1
- package/build-module/components/block-editor/site-editor-canvas.js +3 -5
- package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build-module/components/block-editor/use-site-editor-settings.js +8 -4
- package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
- package/build-module/components/canvas-loader/index.js +18 -1
- package/build-module/components/canvas-loader/index.js.map +1 -1
- package/build-module/components/editor/index.js +3 -8
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +5 -4
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/font-families.js +58 -0
- package/build-module/components/global-styles/font-families.js.map +1 -0
- package/build-module/components/global-styles/font-family-item.js +40 -0
- package/build-module/components/global-styles/font-family-item.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +23 -0
- package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/context.js +276 -0
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/font-card.js +49 -0
- package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/font-demo.js +62 -0
- package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/font-variant.js +42 -0
- package/build-module/components/global-styles/font-library-modal/font-variant.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js +47 -0
- package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/index.js +38 -0
- package/build-module/components/global-styles/font-library-modal/index.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +120 -0
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/library-font-card.js +36 -0
- package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/library-font-details.js +34 -0
- package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/library-font-variant.js +50 -0
- package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/local-fonts.js +135 -0
- package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/resolvers.js +28 -0
- package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/tab-layout.js +37 -0
- package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/constants.js +26 -0
- package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +52 -0
- package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/index.js +190 -0
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js +16 -0
- package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js +86 -0
- package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
- package/build-module/components/global-styles/global-styles-provider.js +7 -12
- package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
- package/build-module/components/global-styles/screen-block.js +34 -21
- package/build-module/components/global-styles/screen-block.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/index.js +1 -3
- package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
- package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
- package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
- package/build-module/components/global-styles/screen-typography.js +6 -74
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/global-styles/style-variations-container.js +3 -5
- package/build-module/components/global-styles/style-variations-container.js.map +1 -1
- package/build-module/components/global-styles/typogrphy-elements.js +87 -0
- package/build-module/components/global-styles/typogrphy-elements.js.map +1 -0
- package/build-module/components/page-patterns/duplicate-menu-item.js +51 -16
- package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/grid-item.js +47 -21
- package/build-module/components/page-patterns/grid-item.js.map +1 -1
- package/build-module/components/page-patterns/header.js +3 -7
- package/build-module/components/page-patterns/header.js.map +1 -1
- package/build-module/components/page-patterns/index.js +3 -3
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-patterns/patterns-list.js +7 -7
- package/build-module/components/page-patterns/patterns-list.js.map +1 -1
- package/build-module/components/page-patterns/rename-menu-item.js +6 -5
- package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/search-items.js +8 -2
- package/build-module/components/page-patterns/search-items.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +54 -28
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-patterns/utils.js +0 -11
- package/build-module/components/page-patterns/utils.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +34 -27
- package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +54 -0
- package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/page-panels/index.js +1 -4
- package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
- package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +49 -0
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +85 -0
- package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/template-panel/index.js +12 -10
- package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +8 -6
- package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +202 -0
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen/index.js +6 -4
- package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-details-footer/index.js +32 -5
- package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
- package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -33
- package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-page/index.js +3 -3
- package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/index.js +19 -9
- package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
- package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/index.js +10 -38
- package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
- package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -2
- package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-template/index.js +2 -2
- package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates/index.js +1 -1
- package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
- package/build-module/components/template-actions/index.js +7 -4
- package/build-module/components/template-actions/index.js.map +1 -1
- package/build-module/components/template-actions/rename-menu-item.js +3 -2
- package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
- package/build-module/components/welcome-guide/styles.js +2 -2
- package/build-module/components/welcome-guide/styles.js.map +1 -1
- package/build-module/hooks/push-changes-to-global-styles/index.js +5 -37
- package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
- package/build-module/store/actions.js +30 -7
- package/build-module/store/actions.js.map +1 -1
- package/build-module/utils/constants.js +35 -1
- package/build-module/utils/constants.js.map +1 -1
- package/build-module/utils/is-template-removable.js +6 -1
- package/build-module/utils/is-template-removable.js.map +1 -1
- package/build-module/utils/is-template-revertable.js +6 -1
- package/build-module/utils/is-template-revertable.js.map +1 -1
- package/build-style/style-rtl.css +244 -37
- package/build-style/style.css +244 -37
- package/lib/inflate.js +4082 -0
- package/lib/lib-font.browser.js +3831 -0
- package/lib/unbrotli.js +2679 -0
- package/package.json +40 -40
- package/src/components/add-new-pattern/index.js +83 -5
- package/src/components/add-new-template/index.js +3 -2
- package/src/components/add-new-template/new-template.js +6 -1
- package/src/components/add-new-template/utils.js +12 -3
- package/src/components/app/index.js +9 -12
- package/src/components/block-editor/back-button.js +6 -2
- package/src/components/block-editor/editor-canvas.js +31 -19
- package/src/components/block-editor/site-editor-canvas.js +2 -10
- package/src/components/block-editor/style.scss +88 -1
- package/src/components/block-editor/use-site-editor-settings.js +26 -19
- package/src/components/canvas-loader/index.js +12 -1
- package/src/components/canvas-loader/style.scss +1 -1
- package/src/components/editor/index.js +3 -8
- package/src/components/global-styles/dimensions-panel.js +8 -4
- package/src/components/global-styles/font-families.js +71 -0
- package/src/components/global-styles/font-family-item.js +44 -0
- package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +33 -0
- package/src/components/global-styles/font-library-modal/context.js +347 -0
- package/src/components/global-styles/font-library-modal/font-card.js +70 -0
- package/src/components/global-styles/font-library-modal/font-demo.js +57 -0
- package/src/components/global-styles/font-library-modal/font-variant.js +53 -0
- package/src/components/global-styles/font-library-modal/fonts-grid.js +55 -0
- package/src/components/global-styles/font-library-modal/index.js +42 -0
- package/src/components/global-styles/font-library-modal/installed-fonts.js +174 -0
- package/src/components/global-styles/font-library-modal/library-font-card.js +40 -0
- package/src/components/global-styles/font-library-modal/library-font-details.js +46 -0
- package/src/components/global-styles/font-library-modal/library-font-variant.js +54 -0
- package/src/components/global-styles/font-library-modal/local-fonts.js +160 -0
- package/src/components/global-styles/font-library-modal/resolvers.js +29 -0
- package/src/components/global-styles/font-library-modal/style.scss +113 -0
- package/src/components/global-styles/font-library-modal/tab-layout.js +50 -0
- package/src/components/global-styles/font-library-modal/utils/constants.js +31 -0
- package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
- package/src/components/global-styles/font-library-modal/utils/index.js +213 -0
- package/src/components/global-styles/font-library-modal/utils/make-families-from-faces.js +15 -0
- package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +53 -0
- package/src/components/global-styles/font-library-modal/utils/test/getFontFaceVariantName.spec.js +30 -0
- package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +240 -0
- package/src/components/global-styles/font-library-modal/utils/test/getPreviewStyle.spec.js +121 -0
- package/src/components/global-styles/font-library-modal/utils/test/isUrlEncoded.spec.js +31 -0
- package/src/components/global-styles/font-library-modal/utils/test/makeFamiliesFromFaces.spec.js +57 -0
- package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +62 -0
- package/src/components/global-styles/font-library-modal/utils/test/mergeFontFaces.spec.js +56 -0
- package/src/components/global-styles/font-library-modal/utils/test/mergeFontFamilies.spec.js +108 -0
- package/src/components/global-styles/font-library-modal/utils/test/setUIValuesNeeded.spec.js +41 -0
- package/src/components/global-styles/font-library-modal/utils/test/toggleFont.spec.js +141 -0
- package/src/components/global-styles/font-library-modal/utils/toggleFont.js +90 -0
- package/src/components/global-styles/global-styles-provider.js +2 -7
- package/src/components/global-styles/screen-block.js +42 -20
- package/src/components/global-styles/screen-revisions/index.js +0 -2
- package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
- package/src/components/global-styles/screen-typography.js +7 -95
- package/src/components/global-styles/style-variations-container.js +0 -2
- package/src/components/global-styles/typogrphy-elements.js +110 -0
- package/src/components/list/style.scss +2 -0
- package/src/components/page-patterns/duplicate-menu-item.js +63 -20
- package/src/components/page-patterns/grid-item.js +77 -30
- package/src/components/page-patterns/header.js +3 -12
- package/src/components/page-patterns/index.js +3 -3
- package/src/components/page-patterns/patterns-list.js +7 -7
- package/src/components/page-patterns/rename-menu-item.js +18 -7
- package/src/components/page-patterns/search-items.js +14 -2
- package/src/components/page-patterns/style.scss +1 -5
- package/src/components/page-patterns/use-patterns.js +67 -33
- package/src/components/page-patterns/utils.js +0 -19
- package/src/components/sidebar-edit-mode/page-panels/edit-template.js +47 -33
- package/src/components/sidebar-edit-mode/page-panels/hooks.js +83 -0
- package/src/components/sidebar-edit-mode/page-panels/index.js +0 -4
- package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
- package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +44 -0
- package/src/components/sidebar-edit-mode/page-panels/style.scss +41 -10
- package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +82 -0
- package/src/components/sidebar-edit-mode/template-panel/index.js +28 -24
- package/src/components/sidebar-edit-mode/template-panel/last-revision.js +19 -15
- package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +270 -0
- package/src/components/sidebar-navigation-screen/index.js +4 -9
- package/src/components/sidebar-navigation-screen/style.scss +7 -1
- package/src/components/sidebar-navigation-screen-details-footer/index.js +38 -10
- package/src/components/sidebar-navigation-screen-details-footer/style.scss +10 -3
- package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +2 -0
- package/src/components/sidebar-navigation-screen-global-styles/index.js +6 -44
- package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +0 -4
- package/src/components/sidebar-navigation-screen-page/index.js +3 -3
- package/src/components/sidebar-navigation-screen-pattern/index.js +20 -7
- package/src/components/sidebar-navigation-screen-pattern/style.scss +0 -3
- package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +46 -13
- package/src/components/sidebar-navigation-screen-patterns/index.js +14 -49
- package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +48 -6
- package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -5
- package/src/components/sidebar-navigation-screen-template/index.js +2 -4
- package/src/components/sidebar-navigation-screen-templates/index.js +1 -1
- package/src/components/template-actions/index.js +14 -8
- package/src/components/template-actions/rename-menu-item.js +15 -4
- package/src/components/welcome-guide/styles.js +2 -2
- package/src/hooks/push-changes-to-global-styles/index.js +6 -49
- package/src/store/actions.js +39 -13
- package/src/store/test/actions.js +0 -1
- package/src/store/test/reducer.js +0 -1
- package/src/style.scss +1 -1
- package/src/utils/constants.js +38 -3
- package/src/utils/is-template-removable.js +8 -1
- package/src/utils/is-template-revertable.js +8 -1
- package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -30
- package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
- package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -23
- package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
- package/src/components/sidebar-navigation-screen-global-styles/style.scss +0 -12
- package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -24
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
5
|
+
import {
|
|
6
|
+
__experimentalItemGroup as ItemGroup,
|
|
7
|
+
__experimentalVStack as VStack,
|
|
8
|
+
__experimentalHStack as HStack,
|
|
9
|
+
FlexItem,
|
|
10
|
+
} from '@wordpress/components';
|
|
11
|
+
import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { NavigationButtonAsItem } from './navigation-button';
|
|
17
|
+
import Subtitle from './subtitle';
|
|
18
|
+
|
|
19
|
+
import { unlock } from '../../lock-unlock';
|
|
20
|
+
const { useGlobalStyle } = unlock( blockEditorPrivateApis );
|
|
21
|
+
|
|
22
|
+
function ElementItem( { parentMenu, element, label } ) {
|
|
23
|
+
const prefix =
|
|
24
|
+
element === 'text' || ! element ? '' : `elements.${ element }.`;
|
|
25
|
+
const extraStyles =
|
|
26
|
+
element === 'link'
|
|
27
|
+
? {
|
|
28
|
+
textDecoration: 'underline',
|
|
29
|
+
}
|
|
30
|
+
: {};
|
|
31
|
+
const [ fontFamily ] = useGlobalStyle( prefix + 'typography.fontFamily' );
|
|
32
|
+
const [ fontStyle ] = useGlobalStyle( prefix + 'typography.fontStyle' );
|
|
33
|
+
const [ fontWeight ] = useGlobalStyle( prefix + 'typography.fontWeight' );
|
|
34
|
+
const [ letterSpacing ] = useGlobalStyle(
|
|
35
|
+
prefix + 'typography.letterSpacing'
|
|
36
|
+
);
|
|
37
|
+
const [ backgroundColor ] = useGlobalStyle( prefix + 'color.background' );
|
|
38
|
+
const [ gradientValue ] = useGlobalStyle( prefix + 'color.gradient' );
|
|
39
|
+
const [ color ] = useGlobalStyle( prefix + 'color.text' );
|
|
40
|
+
|
|
41
|
+
const navigationButtonLabel = sprintf(
|
|
42
|
+
// translators: %s: is a subset of Typography, e.g., 'text' or 'links'.
|
|
43
|
+
__( 'Typography %s styles' ),
|
|
44
|
+
label
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<NavigationButtonAsItem
|
|
49
|
+
path={ parentMenu + '/typography/' + element }
|
|
50
|
+
aria-label={ navigationButtonLabel }
|
|
51
|
+
>
|
|
52
|
+
<HStack justify="flex-start">
|
|
53
|
+
<FlexItem
|
|
54
|
+
className="edit-site-global-styles-screen-typography__indicator"
|
|
55
|
+
style={ {
|
|
56
|
+
fontFamily: fontFamily ?? 'serif',
|
|
57
|
+
background: gradientValue ?? backgroundColor,
|
|
58
|
+
color,
|
|
59
|
+
fontStyle,
|
|
60
|
+
fontWeight,
|
|
61
|
+
letterSpacing,
|
|
62
|
+
...extraStyles,
|
|
63
|
+
} }
|
|
64
|
+
>
|
|
65
|
+
{ __( 'Aa' ) }
|
|
66
|
+
</FlexItem>
|
|
67
|
+
<FlexItem>{ label }</FlexItem>
|
|
68
|
+
</HStack>
|
|
69
|
+
</NavigationButtonAsItem>
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function TypographyElements() {
|
|
74
|
+
const parentMenu = '';
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<VStack spacing={ 3 }>
|
|
78
|
+
<Subtitle level={ 3 }>{ __( 'Elements' ) }</Subtitle>
|
|
79
|
+
<ItemGroup isBordered isSeparated>
|
|
80
|
+
<ElementItem
|
|
81
|
+
parentMenu={ parentMenu }
|
|
82
|
+
element="text"
|
|
83
|
+
label={ __( 'Text' ) }
|
|
84
|
+
/>
|
|
85
|
+
<ElementItem
|
|
86
|
+
parentMenu={ parentMenu }
|
|
87
|
+
element="link"
|
|
88
|
+
label={ __( 'Links' ) }
|
|
89
|
+
/>
|
|
90
|
+
<ElementItem
|
|
91
|
+
parentMenu={ parentMenu }
|
|
92
|
+
element="heading"
|
|
93
|
+
label={ __( 'Headings' ) }
|
|
94
|
+
/>
|
|
95
|
+
<ElementItem
|
|
96
|
+
parentMenu={ parentMenu }
|
|
97
|
+
element="caption"
|
|
98
|
+
label={ __( 'Captions' ) }
|
|
99
|
+
/>
|
|
100
|
+
<ElementItem
|
|
101
|
+
parentMenu={ parentMenu }
|
|
102
|
+
element="button"
|
|
103
|
+
label={ __( 'Buttons' ) }
|
|
104
|
+
/>
|
|
105
|
+
</ItemGroup>
|
|
106
|
+
</VStack>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export default TypographyElements;
|
|
@@ -130,6 +130,8 @@
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
.edit-site-list__rename-modal {
|
|
133
|
+
// The rename dropdown popover is open at the same time as the rename modal. The latter has to be higher.
|
|
134
|
+
z-index: z-index(".edit-site-list__rename-modal");
|
|
133
135
|
.components-base-control {
|
|
134
136
|
@include break-medium() {
|
|
135
137
|
width: $grid-unit * 40;
|
|
@@ -12,31 +12,30 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
|
12
12
|
* Internal dependencies
|
|
13
13
|
*/
|
|
14
14
|
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
USER_PATTERN_CATEGORY,
|
|
20
|
-
} from './utils';
|
|
15
|
+
TEMPLATE_PART_POST_TYPE,
|
|
16
|
+
PATTERN_TYPES,
|
|
17
|
+
PATTERN_SYNC_TYPES,
|
|
18
|
+
} from '../../utils/constants';
|
|
21
19
|
import {
|
|
22
20
|
useExistingTemplateParts,
|
|
23
21
|
getUniqueTemplatePartTitle,
|
|
24
22
|
getCleanTemplatePartSlug,
|
|
25
23
|
} from '../../utils/template-part-create';
|
|
26
24
|
import { unlock } from '../../lock-unlock';
|
|
25
|
+
import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
|
|
27
26
|
|
|
28
27
|
const { useHistory } = unlock( routerPrivateApis );
|
|
29
28
|
|
|
30
29
|
function getPatternMeta( item ) {
|
|
31
|
-
if ( item.type ===
|
|
32
|
-
return { wp_pattern_sync_status:
|
|
30
|
+
if ( item.type === PATTERN_TYPES.theme ) {
|
|
31
|
+
return { wp_pattern_sync_status: PATTERN_SYNC_TYPES.unsynced };
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
const syncStatus = item.
|
|
36
|
-
const isUnsynced = syncStatus ===
|
|
34
|
+
const syncStatus = item.patternBlock.wp_pattern_sync_status;
|
|
35
|
+
const isUnsynced = syncStatus === PATTERN_SYNC_TYPES.unsynced;
|
|
37
36
|
|
|
38
37
|
return {
|
|
39
|
-
...item.
|
|
38
|
+
...item.patternBlock.meta,
|
|
40
39
|
wp_pattern_sync_status: isUnsynced ? syncStatus : undefined,
|
|
41
40
|
};
|
|
42
41
|
}
|
|
@@ -47,12 +46,13 @@ export default function DuplicateMenuItem( {
|
|
|
47
46
|
label = __( 'Duplicate' ),
|
|
48
47
|
onClose,
|
|
49
48
|
} ) {
|
|
50
|
-
const { saveEntityRecord } = useDispatch( coreStore );
|
|
49
|
+
const { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );
|
|
51
50
|
const { createErrorNotice, createSuccessNotice } =
|
|
52
51
|
useDispatch( noticesStore );
|
|
53
52
|
|
|
54
53
|
const history = useHistory();
|
|
55
54
|
const existingTemplateParts = useExistingTemplateParts();
|
|
55
|
+
const { patternCategories } = usePatternCategories();
|
|
56
56
|
|
|
57
57
|
async function createTemplatePart() {
|
|
58
58
|
try {
|
|
@@ -88,9 +88,9 @@ export default function DuplicateMenuItem( {
|
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
history.push( {
|
|
91
|
-
postType:
|
|
91
|
+
postType: TEMPLATE_PART_POST_TYPE,
|
|
92
92
|
postId: result?.id,
|
|
93
|
-
categoryType:
|
|
93
|
+
categoryType: TEMPLATE_PART_POST_TYPE,
|
|
94
94
|
categoryId,
|
|
95
95
|
} );
|
|
96
96
|
|
|
@@ -111,14 +111,54 @@ export default function DuplicateMenuItem( {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
async function findOrCreateTerm( term ) {
|
|
115
|
+
try {
|
|
116
|
+
const newTerm = await saveEntityRecord(
|
|
117
|
+
'taxonomy',
|
|
118
|
+
'wp_pattern_category',
|
|
119
|
+
{
|
|
120
|
+
name: term.label,
|
|
121
|
+
slug: term.name,
|
|
122
|
+
description: term.description,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
throwOnError: true,
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
invalidateResolution( 'getUserPatternCategories' );
|
|
129
|
+
return newTerm.id;
|
|
130
|
+
} catch ( error ) {
|
|
131
|
+
if ( error.code !== 'term_exists' ) {
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return error.data.term_id;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async function getCategories( categories ) {
|
|
140
|
+
const terms = categories.map( ( category ) => {
|
|
141
|
+
const fullCategory = patternCategories.find(
|
|
142
|
+
( cat ) => cat.name === category
|
|
143
|
+
);
|
|
144
|
+
if ( fullCategory.id ) {
|
|
145
|
+
return fullCategory.id;
|
|
146
|
+
}
|
|
147
|
+
return findOrCreateTerm( fullCategory );
|
|
148
|
+
} );
|
|
149
|
+
|
|
150
|
+
return Promise.all( terms );
|
|
151
|
+
}
|
|
152
|
+
|
|
114
153
|
async function createPattern() {
|
|
115
154
|
try {
|
|
116
|
-
const isThemePattern = item.type ===
|
|
155
|
+
const isThemePattern = item.type === PATTERN_TYPES.theme;
|
|
117
156
|
const title = sprintf(
|
|
118
157
|
/* translators: %s: Existing pattern title */
|
|
119
158
|
__( '%s (Copy)' ),
|
|
120
159
|
item.title
|
|
121
160
|
);
|
|
161
|
+
const categories = await getCategories( item.categories );
|
|
122
162
|
|
|
123
163
|
const result = await saveEntityRecord(
|
|
124
164
|
'postType',
|
|
@@ -126,10 +166,11 @@ export default function DuplicateMenuItem( {
|
|
|
126
166
|
{
|
|
127
167
|
content: isThemePattern
|
|
128
168
|
? item.content
|
|
129
|
-
: item.
|
|
169
|
+
: item.patternBlock.content,
|
|
130
170
|
meta: getPatternMeta( item ),
|
|
131
171
|
status: 'publish',
|
|
132
172
|
title,
|
|
173
|
+
wp_pattern_category: categories,
|
|
133
174
|
},
|
|
134
175
|
{ throwOnError: true }
|
|
135
176
|
);
|
|
@@ -147,9 +188,9 @@ export default function DuplicateMenuItem( {
|
|
|
147
188
|
);
|
|
148
189
|
|
|
149
190
|
history.push( {
|
|
150
|
-
categoryType:
|
|
151
|
-
categoryId
|
|
152
|
-
postType:
|
|
191
|
+
categoryType: PATTERN_TYPES.theme,
|
|
192
|
+
categoryId,
|
|
193
|
+
postType: PATTERN_TYPES.user,
|
|
153
194
|
postId: result?.id,
|
|
154
195
|
} );
|
|
155
196
|
|
|
@@ -169,7 +210,9 @@ export default function DuplicateMenuItem( {
|
|
|
169
210
|
}
|
|
170
211
|
|
|
171
212
|
const createItem =
|
|
172
|
-
item.type ===
|
|
213
|
+
item.type === TEMPLATE_PART_POST_TYPE
|
|
214
|
+
? createTemplatePart
|
|
215
|
+
: createPattern;
|
|
173
216
|
|
|
174
217
|
return <MenuItem onClick={ createItem }>{ label }</MenuItem>;
|
|
175
218
|
}
|
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import classnames from 'classnames';
|
|
5
|
+
import downloadjs from 'downloadjs';
|
|
6
|
+
import { paramCase as kebabCase } from 'change-case';
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* WordPress dependencies
|
|
8
10
|
*/
|
|
9
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
BlockPreview,
|
|
13
|
+
privateApis as blockEditorPrivateApis,
|
|
14
|
+
} from '@wordpress/block-editor';
|
|
10
15
|
import {
|
|
11
16
|
Button,
|
|
12
17
|
__experimentalConfirmDialog as ConfirmDialog,
|
|
@@ -38,15 +43,23 @@ import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
|
|
|
38
43
|
*/
|
|
39
44
|
import RenameMenuItem from './rename-menu-item';
|
|
40
45
|
import DuplicateMenuItem from './duplicate-menu-item';
|
|
41
|
-
import {
|
|
46
|
+
import {
|
|
47
|
+
PATTERN_TYPES,
|
|
48
|
+
TEMPLATE_PART_POST_TYPE,
|
|
49
|
+
PATTERN_SYNC_TYPES,
|
|
50
|
+
} from '../../utils/constants';
|
|
42
51
|
import { store as editSiteStore } from '../../store';
|
|
43
52
|
import { useLink } from '../routes/link';
|
|
53
|
+
import { unlock } from '../../lock-unlock';
|
|
54
|
+
|
|
55
|
+
const { useGlobalStyle } = unlock( blockEditorPrivateApis );
|
|
44
56
|
|
|
45
57
|
const templatePartIcons = { header, footer, uncategorized };
|
|
46
58
|
|
|
47
59
|
function GridItem( { categoryId, item, ...props } ) {
|
|
48
60
|
const descriptionId = useId();
|
|
49
61
|
const [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );
|
|
62
|
+
const [ backgroundColor ] = useGlobalStyle( 'color.background' );
|
|
50
63
|
|
|
51
64
|
const { removeTemplate } = useDispatch( editSiteStore );
|
|
52
65
|
const { __experimentalDeleteReusableBlock } =
|
|
@@ -54,9 +67,9 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
54
67
|
const { createErrorNotice, createSuccessNotice } =
|
|
55
68
|
useDispatch( noticesStore );
|
|
56
69
|
|
|
57
|
-
const isUserPattern = item.type ===
|
|
58
|
-
const isNonUserPattern = item.type ===
|
|
59
|
-
const isTemplatePart = item.type ===
|
|
70
|
+
const isUserPattern = item.type === PATTERN_TYPES.user;
|
|
71
|
+
const isNonUserPattern = item.type === PATTERN_TYPES.theme;
|
|
72
|
+
const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
|
|
60
73
|
|
|
61
74
|
const { onClick } = useLink( {
|
|
62
75
|
postType: item.type,
|
|
@@ -97,6 +110,20 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
97
110
|
};
|
|
98
111
|
const deleteItem = () =>
|
|
99
112
|
isTemplatePart ? removeTemplate( item ) : deletePattern();
|
|
113
|
+
const exportAsJSON = () => {
|
|
114
|
+
const json = {
|
|
115
|
+
__file: item.type,
|
|
116
|
+
title: item.title,
|
|
117
|
+
content: item.patternBlock.content.raw,
|
|
118
|
+
syncStatus: item.patternBlock.wp_pattern_sync_status,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return downloadjs(
|
|
122
|
+
JSON.stringify( json, null, 2 ),
|
|
123
|
+
`${ kebabCase( item.title ) }.json`,
|
|
124
|
+
'application/json'
|
|
125
|
+
);
|
|
126
|
+
};
|
|
100
127
|
|
|
101
128
|
// Only custom patterns or custom template parts can be renamed or deleted.
|
|
102
129
|
const isCustomPattern =
|
|
@@ -119,9 +146,13 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
119
146
|
);
|
|
120
147
|
}
|
|
121
148
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
149
|
+
let itemIcon;
|
|
150
|
+
if ( ! isUserPattern && templatePartIcons[ categoryId ] ) {
|
|
151
|
+
itemIcon = templatePartIcons[ categoryId ];
|
|
152
|
+
} else {
|
|
153
|
+
itemIcon =
|
|
154
|
+
item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
|
|
155
|
+
}
|
|
125
156
|
|
|
126
157
|
const confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );
|
|
127
158
|
const confirmPrompt = hasThemeFile
|
|
@@ -132,6 +163,10 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
132
163
|
item.title
|
|
133
164
|
);
|
|
134
165
|
|
|
166
|
+
const additionalStyles = ! backgroundColor
|
|
167
|
+
? [ { css: 'body { background: #fff; }' } ]
|
|
168
|
+
: undefined;
|
|
169
|
+
|
|
135
170
|
return (
|
|
136
171
|
<li className={ patternClassNames }>
|
|
137
172
|
<button
|
|
@@ -140,8 +175,12 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
140
175
|
// @see https://reakit.io/docs/composite/#performance.
|
|
141
176
|
id={ `edit-site-patterns-${ item.name }` }
|
|
142
177
|
{ ...props }
|
|
143
|
-
onClick={
|
|
144
|
-
|
|
178
|
+
onClick={
|
|
179
|
+
item.type !== PATTERN_TYPES.theme ? onClick : undefined
|
|
180
|
+
}
|
|
181
|
+
aria-disabled={
|
|
182
|
+
item.type !== PATTERN_TYPES.theme ? 'false' : 'true'
|
|
183
|
+
}
|
|
145
184
|
aria-label={ item.title }
|
|
146
185
|
aria-describedby={
|
|
147
186
|
ariaDescriptions.length
|
|
@@ -154,8 +193,14 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
154
193
|
: undefined
|
|
155
194
|
}
|
|
156
195
|
>
|
|
157
|
-
{ isEmpty && __( 'Empty
|
|
158
|
-
{ !
|
|
196
|
+
{ isEmpty && isTemplatePart && __( 'Empty template part' ) }
|
|
197
|
+
{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }
|
|
198
|
+
{ ! isEmpty && (
|
|
199
|
+
<BlockPreview
|
|
200
|
+
blocks={ item.blocks }
|
|
201
|
+
additionalStyles={ additionalStyles }
|
|
202
|
+
/>
|
|
203
|
+
) }
|
|
159
204
|
</button>
|
|
160
205
|
{ ariaDescriptions.map( ( ariaDescription, index ) => (
|
|
161
206
|
<div
|
|
@@ -178,21 +223,19 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
178
223
|
>
|
|
179
224
|
{ itemIcon && ! isNonUserPattern && (
|
|
180
225
|
<Tooltip
|
|
181
|
-
|
|
226
|
+
placement="top"
|
|
182
227
|
text={ __(
|
|
183
228
|
'Editing this pattern will also update anywhere it is used'
|
|
184
229
|
) }
|
|
185
230
|
>
|
|
186
|
-
<
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
/>
|
|
191
|
-
</span>
|
|
231
|
+
<Icon
|
|
232
|
+
className="edit-site-patterns__pattern-icon"
|
|
233
|
+
icon={ itemIcon }
|
|
234
|
+
/>
|
|
192
235
|
</Tooltip>
|
|
193
236
|
) }
|
|
194
237
|
<Flex as="span" gap={ 0 } justify="left">
|
|
195
|
-
{ item.type ===
|
|
238
|
+
{ item.type === PATTERN_TYPES.theme ? (
|
|
196
239
|
item.title
|
|
197
240
|
) : (
|
|
198
241
|
<Heading level={ 5 }>
|
|
@@ -207,14 +250,16 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
207
250
|
</Button>
|
|
208
251
|
</Heading>
|
|
209
252
|
) }
|
|
210
|
-
{ item.type ===
|
|
253
|
+
{ item.type === PATTERN_TYPES.theme && (
|
|
211
254
|
<Tooltip
|
|
212
|
-
|
|
255
|
+
placement="top"
|
|
213
256
|
text={ __( 'This pattern cannot be edited.' ) }
|
|
214
257
|
>
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
258
|
+
<Icon
|
|
259
|
+
className="edit-site-patterns__pattern-lock-icon"
|
|
260
|
+
icon={ lockSmall }
|
|
261
|
+
size={ 24 }
|
|
262
|
+
/>
|
|
218
263
|
</Tooltip>
|
|
219
264
|
) }
|
|
220
265
|
</Flex>
|
|
@@ -245,12 +290,14 @@ function GridItem( { categoryId, item, ...props } ) {
|
|
|
245
290
|
categoryId={ categoryId }
|
|
246
291
|
item={ item }
|
|
247
292
|
onClose={ onClose }
|
|
248
|
-
label={
|
|
249
|
-
isNonUserPattern
|
|
250
|
-
? __( 'Copy to My patterns' )
|
|
251
|
-
: __( 'Duplicate' )
|
|
252
|
-
}
|
|
293
|
+
label={ __( 'Duplicate' ) }
|
|
253
294
|
/>
|
|
295
|
+
{ item.type === PATTERN_TYPES.user && (
|
|
296
|
+
<MenuItem onClick={ () => exportAsJSON() }>
|
|
297
|
+
{ __( 'Export as JSON' ) }
|
|
298
|
+
</MenuItem>
|
|
299
|
+
) }
|
|
300
|
+
|
|
254
301
|
{ isCustomPattern && (
|
|
255
302
|
<MenuItem
|
|
256
303
|
isDestructive={ ! hasThemeFile }
|
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
__experimentalHeading as Heading,
|
|
7
7
|
__experimentalText as Text,
|
|
8
8
|
} from '@wordpress/components';
|
|
9
|
-
import { __ } from '@wordpress/i18n';
|
|
10
9
|
import { store as editorStore } from '@wordpress/editor';
|
|
11
10
|
import { useSelect } from '@wordpress/data';
|
|
12
11
|
|
|
@@ -14,12 +13,7 @@ import { useSelect } from '@wordpress/data';
|
|
|
14
13
|
* Internal dependencies
|
|
15
14
|
*/
|
|
16
15
|
import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
|
|
17
|
-
import {
|
|
18
|
-
USER_PATTERN_CATEGORY,
|
|
19
|
-
USER_PATTERNS,
|
|
20
|
-
TEMPLATE_PARTS,
|
|
21
|
-
PATTERNS,
|
|
22
|
-
} from './utils';
|
|
16
|
+
import { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';
|
|
23
17
|
|
|
24
18
|
export default function PatternsHeader( {
|
|
25
19
|
categoryId,
|
|
@@ -35,16 +29,13 @@ export default function PatternsHeader( {
|
|
|
35
29
|
);
|
|
36
30
|
|
|
37
31
|
let title, description;
|
|
38
|
-
if (
|
|
39
|
-
title = __( 'My Patterns' );
|
|
40
|
-
description = '';
|
|
41
|
-
} else if ( type === TEMPLATE_PARTS ) {
|
|
32
|
+
if ( type === TEMPLATE_PART_POST_TYPE ) {
|
|
42
33
|
const templatePartArea = templatePartAreas.find(
|
|
43
34
|
( area ) => area.area === categoryId
|
|
44
35
|
);
|
|
45
36
|
title = templatePartArea?.label;
|
|
46
37
|
description = templatePartArea?.description;
|
|
47
|
-
} else if ( type ===
|
|
38
|
+
} else if ( type === PATTERN_TYPES.theme ) {
|
|
48
39
|
const patternCategory = patternCategories.find(
|
|
49
40
|
( category ) => category.name === categoryId
|
|
50
41
|
);
|
|
@@ -8,7 +8,7 @@ import { getQueryArgs } from '@wordpress/url';
|
|
|
8
8
|
/**
|
|
9
9
|
* Internal dependencies
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { PATTERN_DEFAULT_CATEGORY, PATTERN_TYPES } from '../../utils/constants';
|
|
12
12
|
import Page from '../page';
|
|
13
13
|
import PatternsList from './patterns-list';
|
|
14
14
|
import usePatternSettings from './use-pattern-settings';
|
|
@@ -18,8 +18,8 @@ const { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );
|
|
|
18
18
|
|
|
19
19
|
export default function PagePatterns() {
|
|
20
20
|
const { categoryType, categoryId } = getQueryArgs( window.location.href );
|
|
21
|
-
const type = categoryType ||
|
|
22
|
-
const category = categoryId ||
|
|
21
|
+
const type = categoryType || PATTERN_TYPES.user;
|
|
22
|
+
const category = categoryId || PATTERN_DEFAULT_CATEGORY;
|
|
23
23
|
const settings = usePatternSettings();
|
|
24
24
|
|
|
25
25
|
// Wrap everything in a block editor provider.
|
|
@@ -27,23 +27,23 @@ import usePatterns from './use-patterns';
|
|
|
27
27
|
import SidebarButton from '../sidebar-button';
|
|
28
28
|
import useDebouncedInput from '../../utils/use-debounced-input';
|
|
29
29
|
import { unlock } from '../../lock-unlock';
|
|
30
|
-
import {
|
|
30
|
+
import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../../utils/constants';
|
|
31
31
|
import Pagination from './pagination';
|
|
32
32
|
|
|
33
33
|
const { useLocation, useHistory } = unlock( routerPrivateApis );
|
|
34
34
|
|
|
35
35
|
const SYNC_FILTERS = {
|
|
36
36
|
all: __( 'All' ),
|
|
37
|
-
[
|
|
38
|
-
[
|
|
37
|
+
[ PATTERN_SYNC_TYPES.full ]: __( 'Synced' ),
|
|
38
|
+
[ PATTERN_SYNC_TYPES.unsynced ]: __( 'Standard' ),
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
const SYNC_DESCRIPTIONS = {
|
|
42
42
|
all: '',
|
|
43
|
-
[
|
|
43
|
+
[ PATTERN_SYNC_TYPES.full ]: __(
|
|
44
44
|
'Patterns that are kept in sync across the site.'
|
|
45
45
|
),
|
|
46
|
-
[
|
|
46
|
+
[ PATTERN_SYNC_TYPES.unsynced ]: __(
|
|
47
47
|
'Patterns that can be changed freely without affecting the site.'
|
|
48
48
|
),
|
|
49
49
|
};
|
|
@@ -64,7 +64,7 @@ export default function PatternsList( { categoryId, type } ) {
|
|
|
64
64
|
const deferredSyncedFilter = useDeferredValue( syncFilter );
|
|
65
65
|
|
|
66
66
|
const isUncategorizedThemePatterns =
|
|
67
|
-
type ===
|
|
67
|
+
type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
|
|
68
68
|
|
|
69
69
|
const { patterns, isResolving } = usePatterns(
|
|
70
70
|
type,
|
|
@@ -155,7 +155,7 @@ export default function PatternsList( { categoryId, type } ) {
|
|
|
155
155
|
__nextHasNoMarginBottom
|
|
156
156
|
/>
|
|
157
157
|
</FlexBlock>
|
|
158
|
-
{
|
|
158
|
+
{ type === PATTERN_TYPES.theme && (
|
|
159
159
|
<ToggleGroupControl
|
|
160
160
|
className="edit-site-patterns__sync-status-filter"
|
|
161
161
|
hideLabelFromVision
|
|
@@ -18,7 +18,7 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
18
18
|
/**
|
|
19
19
|
* Internal dependencies
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
21
|
+
import { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';
|
|
22
22
|
|
|
23
23
|
export default function RenameMenuItem( { item, onClose } ) {
|
|
24
24
|
const [ title, setTitle ] = useState( () => item.title );
|
|
@@ -29,7 +29,7 @@ export default function RenameMenuItem( { item, onClose } ) {
|
|
|
29
29
|
const { createSuccessNotice, createErrorNotice } =
|
|
30
30
|
useDispatch( noticesStore );
|
|
31
31
|
|
|
32
|
-
if ( item.type ===
|
|
32
|
+
if ( item.type === TEMPLATE_PART_POST_TYPE && ! item.isCustom ) {
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -49,14 +49,25 @@ export default function RenameMenuItem( { item, onClose } ) {
|
|
|
49
49
|
throwOnError: true,
|
|
50
50
|
} );
|
|
51
51
|
|
|
52
|
-
createSuccessNotice(
|
|
53
|
-
type
|
|
54
|
-
|
|
52
|
+
createSuccessNotice(
|
|
53
|
+
item.type === TEMPLATE_PART_POST_TYPE
|
|
54
|
+
? __( 'Template part renamed.' )
|
|
55
|
+
: __( 'Pattern renamed.' ),
|
|
56
|
+
{
|
|
57
|
+
type: 'snackbar',
|
|
58
|
+
}
|
|
59
|
+
);
|
|
55
60
|
} catch ( error ) {
|
|
61
|
+
const fallbackErrorMessage =
|
|
62
|
+
item.type === TEMPLATE_PART_POST_TYPE
|
|
63
|
+
? __(
|
|
64
|
+
'An error occurred while reverting the template part.'
|
|
65
|
+
)
|
|
66
|
+
: __( 'An error occurred while reverting the pattern.' );
|
|
56
67
|
const errorMessage =
|
|
57
68
|
error.message && error.code !== 'unknown_error'
|
|
58
69
|
? error.message
|
|
59
|
-
:
|
|
70
|
+
: fallbackErrorMessage;
|
|
60
71
|
|
|
61
72
|
createErrorNotice( errorMessage, { type: 'snackbar' } );
|
|
62
73
|
}
|
|
@@ -79,7 +90,7 @@ export default function RenameMenuItem( { item, onClose } ) {
|
|
|
79
90
|
setIsModalOpen( false );
|
|
80
91
|
onClose();
|
|
81
92
|
} }
|
|
82
|
-
overlayClassName="edit-site-
|
|
93
|
+
overlayClassName="edit-site-list__rename-modal"
|
|
83
94
|
>
|
|
84
95
|
<form onSubmit={ onRename }>
|
|
85
96
|
<VStack spacing="5">
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
import removeAccents from 'remove-accents';
|
|
5
5
|
import { noCase } from 'change-case';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';
|
|
11
|
+
|
|
7
12
|
// Default search helpers.
|
|
8
13
|
const defaultGetName = ( item ) => item.name || '';
|
|
9
14
|
const defaultGetTitle = ( item ) => item.title;
|
|
@@ -84,7 +89,10 @@ const removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {
|
|
|
84
89
|
*/
|
|
85
90
|
export const searchItems = ( items = [], searchInput = '', config = {} ) => {
|
|
86
91
|
const normalizedSearchTerms = getNormalizedSearchTerms( searchInput );
|
|
87
|
-
|
|
92
|
+
// Filter patterns by category: the default category indicates that all patterns will be shown.
|
|
93
|
+
const onlyFilterByCategory =
|
|
94
|
+
config.categoryId !== PATTERN_DEFAULT_CATEGORY &&
|
|
95
|
+
! normalizedSearchTerms.length;
|
|
88
96
|
const searchRankConfig = { ...config, onlyFilterByCategory };
|
|
89
97
|
|
|
90
98
|
// If we aren't filtering on search terms, matching on category is satisfactory.
|
|
@@ -131,7 +139,11 @@ function getItemSearchRank( item, searchTerm, config ) {
|
|
|
131
139
|
onlyFilterByCategory,
|
|
132
140
|
} = config;
|
|
133
141
|
|
|
134
|
-
let rank =
|
|
142
|
+
let rank =
|
|
143
|
+
categoryId === PATTERN_DEFAULT_CATEGORY ||
|
|
144
|
+
hasCategory( item, categoryId )
|
|
145
|
+
? 1
|
|
146
|
+
: 0;
|
|
135
147
|
|
|
136
148
|
// If an item doesn't belong to the current category or we don't have
|
|
137
149
|
// search terms to filter by, return the initial rank value.
|