@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
|
@@ -22,13 +22,21 @@ import {
|
|
|
22
22
|
FOCUSABLE_ENTITIES,
|
|
23
23
|
NAVIGATION_POST_TYPE,
|
|
24
24
|
} from '../../utils/constants';
|
|
25
|
+
import { computeIFrameScale } from '../../utils/math';
|
|
25
26
|
|
|
26
27
|
const { EditorCanvas: EditorCanvasRoot } = unlock( editorPrivateApis );
|
|
27
28
|
|
|
28
|
-
function EditorCanvas( {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
function EditorCanvas( {
|
|
30
|
+
enableResizing,
|
|
31
|
+
settings,
|
|
32
|
+
children,
|
|
33
|
+
onClick,
|
|
34
|
+
...props
|
|
35
|
+
} ) {
|
|
36
|
+
const { hasBlocks, isFocusMode, templateType, canvasMode, isZoomOutMode } =
|
|
37
|
+
useSelect( ( select ) => {
|
|
38
|
+
const { getBlockCount, __unstableGetEditorMode } =
|
|
39
|
+
select( blockEditorStore );
|
|
32
40
|
const { getEditedPostType, getCanvasMode } = unlock(
|
|
33
41
|
select( editSiteStore )
|
|
34
42
|
);
|
|
@@ -37,12 +45,11 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
|
|
|
37
45
|
return {
|
|
38
46
|
templateType: _templateType,
|
|
39
47
|
isFocusMode: FOCUSABLE_ENTITIES.includes( _templateType ),
|
|
48
|
+
isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
|
|
40
49
|
canvasMode: getCanvasMode(),
|
|
41
50
|
hasBlocks: !! getBlockCount(),
|
|
42
51
|
};
|
|
43
|
-
},
|
|
44
|
-
[]
|
|
45
|
-
);
|
|
52
|
+
}, [] );
|
|
46
53
|
const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
|
|
47
54
|
const [ isFocused, setIsFocused ] = useState( false );
|
|
48
55
|
|
|
@@ -68,7 +75,13 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
|
|
|
68
75
|
setCanvasMode( 'edit' );
|
|
69
76
|
}
|
|
70
77
|
},
|
|
71
|
-
onClick: () =>
|
|
78
|
+
onClick: () => {
|
|
79
|
+
if ( !! onClick ) {
|
|
80
|
+
onClick();
|
|
81
|
+
} else {
|
|
82
|
+
setCanvasMode( 'edit' );
|
|
83
|
+
}
|
|
84
|
+
},
|
|
72
85
|
readonly: true,
|
|
73
86
|
};
|
|
74
87
|
const isTemplateTypeNavigation = templateType === NAVIGATION_POST_TYPE;
|
|
@@ -102,6 +115,17 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
|
|
|
102
115
|
[ settings.styles, enableResizing, canvasMode ]
|
|
103
116
|
);
|
|
104
117
|
|
|
118
|
+
const frameSize = isZoomOutMode ? 20 : undefined;
|
|
119
|
+
|
|
120
|
+
const scale = isZoomOutMode
|
|
121
|
+
? ( contentWidth ) =>
|
|
122
|
+
computeIFrameScale(
|
|
123
|
+
{ width: 1000, scale: 0.45 },
|
|
124
|
+
{ width: 400, scale: 0.9 },
|
|
125
|
+
contentWidth
|
|
126
|
+
)
|
|
127
|
+
: undefined;
|
|
128
|
+
|
|
105
129
|
return (
|
|
106
130
|
<EditorCanvasRoot
|
|
107
131
|
className={ classnames( 'edit-site-editor-canvas__block-list', {
|
|
@@ -110,7 +134,8 @@ function EditorCanvas( { enableResizing, settings, children, ...props } ) {
|
|
|
110
134
|
renderAppender={ showBlockAppender }
|
|
111
135
|
styles={ styles }
|
|
112
136
|
iframeProps={ {
|
|
113
|
-
|
|
137
|
+
scale,
|
|
138
|
+
frameSize,
|
|
114
139
|
className: classnames(
|
|
115
140
|
'edit-site-visual-editor__editor-canvas',
|
|
116
141
|
{
|
|
@@ -7,6 +7,7 @@ import classnames from 'classnames';
|
|
|
7
7
|
*/
|
|
8
8
|
import { useSelect } from '@wordpress/data';
|
|
9
9
|
import { useViewportMatch, useResizeObserver } from '@wordpress/compose';
|
|
10
|
+
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Internal dependencies
|
|
@@ -26,24 +27,23 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
|
|
|
26
27
|
|
|
27
28
|
const { useLocation } = unlock( routerPrivateApis );
|
|
28
29
|
|
|
29
|
-
export default function SiteEditorCanvas() {
|
|
30
|
+
export default function SiteEditorCanvas( { onClick } ) {
|
|
30
31
|
const location = useLocation();
|
|
31
|
-
const { templateType, isFocusableEntity, isViewMode } =
|
|
32
|
-
( select ) => {
|
|
32
|
+
const { templateType, isFocusableEntity, isViewMode, isZoomOutMode } =
|
|
33
|
+
useSelect( ( select ) => {
|
|
33
34
|
const { getEditedPostType, getCanvasMode } = unlock(
|
|
34
35
|
select( editSiteStore )
|
|
35
36
|
);
|
|
36
|
-
|
|
37
|
+
const { __unstableGetEditorMode } = select( blockEditorStore );
|
|
37
38
|
const _templateType = getEditedPostType();
|
|
38
39
|
|
|
39
40
|
return {
|
|
40
41
|
templateType: _templateType,
|
|
41
42
|
isFocusableEntity: FOCUSABLE_ENTITIES.includes( _templateType ),
|
|
42
43
|
isViewMode: getCanvasMode() === 'view',
|
|
44
|
+
isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
|
|
43
45
|
};
|
|
44
|
-
},
|
|
45
|
-
[]
|
|
46
|
-
);
|
|
46
|
+
}, [] );
|
|
47
47
|
const isFocusMode = location.params.focusMode || isFocusableEntity;
|
|
48
48
|
const [ resizeObserver, sizes ] = useResizeObserver();
|
|
49
49
|
|
|
@@ -55,6 +55,8 @@ export default function SiteEditorCanvas() {
|
|
|
55
55
|
! isViewMode &&
|
|
56
56
|
// Disable resizing in mobile viewport.
|
|
57
57
|
! isMobileViewport &&
|
|
58
|
+
// Dsiable resizing in zoomed-out mode.
|
|
59
|
+
! isZoomOutMode &&
|
|
58
60
|
// Disable resizing when editing a template in focus mode.
|
|
59
61
|
templateType !== TEMPLATE_POST_TYPE;
|
|
60
62
|
|
|
@@ -87,6 +89,7 @@ export default function SiteEditorCanvas() {
|
|
|
87
89
|
<EditorCanvas
|
|
88
90
|
enableResizing={ enableResizing }
|
|
89
91
|
settings={ settings }
|
|
92
|
+
onClick={ onClick }
|
|
90
93
|
>
|
|
91
94
|
{ resizeObserver }
|
|
92
95
|
</EditorCanvas>
|
|
@@ -101,8 +101,6 @@ function useNavigateToPreviousEntityRecord() {
|
|
|
101
101
|
( location.params.postId &&
|
|
102
102
|
FOCUSABLE_ENTITIES.includes( location.params.postType ) );
|
|
103
103
|
const didComeFromEditorCanvas =
|
|
104
|
-
previousLocation?.params.postId &&
|
|
105
|
-
previousLocation?.params.postType &&
|
|
106
104
|
previousLocation?.params.canvas === 'edit';
|
|
107
105
|
const showBackButton = isFocusMode && didComeFromEditorCanvas;
|
|
108
106
|
return showBackButton ? () => history.back() : undefined;
|
|
@@ -6,7 +6,7 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { useSelect } from '@wordpress/data';
|
|
9
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
10
10
|
import { Notice } from '@wordpress/components';
|
|
11
11
|
import { useInstanceId, useViewportMatch } from '@wordpress/compose';
|
|
12
12
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
@@ -72,7 +72,7 @@ const interfaceLabels = {
|
|
|
72
72
|
footer: __( 'Editor footer' ),
|
|
73
73
|
};
|
|
74
74
|
|
|
75
|
-
export default function Editor( { isLoading } ) {
|
|
75
|
+
export default function Editor( { isLoading, onClick } ) {
|
|
76
76
|
const {
|
|
77
77
|
record: editedPost,
|
|
78
78
|
getTitle,
|
|
@@ -174,6 +174,8 @@ export default function Editor( { isLoading } ) {
|
|
|
174
174
|
'edit-site-editor__loading-progress'
|
|
175
175
|
);
|
|
176
176
|
|
|
177
|
+
const { closeGeneralSidebar } = useDispatch( editSiteStore );
|
|
178
|
+
|
|
177
179
|
const settings = useSpecificEditorSettings();
|
|
178
180
|
const isReady =
|
|
179
181
|
! isLoading &&
|
|
@@ -225,7 +227,7 @@ export default function Editor( { isLoading } ) {
|
|
|
225
227
|
{ ! isLargeViewport && (
|
|
226
228
|
<BlockToolbar hideDragHandle />
|
|
227
229
|
) }
|
|
228
|
-
<SiteEditorCanvas />
|
|
230
|
+
<SiteEditorCanvas onClick={ onClick } />
|
|
229
231
|
<PatternModal />
|
|
230
232
|
</>
|
|
231
233
|
) }
|
|
@@ -243,7 +245,12 @@ export default function Editor( { isLoading } ) {
|
|
|
243
245
|
}
|
|
244
246
|
secondarySidebar={
|
|
245
247
|
isEditMode &&
|
|
246
|
-
( ( shouldShowInserter &&
|
|
248
|
+
( ( shouldShowInserter && (
|
|
249
|
+
<InserterSidebar
|
|
250
|
+
closeGeneralSidebar={ closeGeneralSidebar }
|
|
251
|
+
isRightSidebarOpen={ isRightSidebarOpen }
|
|
252
|
+
/>
|
|
253
|
+
) ) ||
|
|
247
254
|
( shouldShowListView && <ListViewSidebar /> ) )
|
|
248
255
|
}
|
|
249
256
|
sidebar={
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { unlock } from '../../lock-unlock';
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
useGlobalStyle,
|
|
13
|
+
useGlobalSetting,
|
|
14
|
+
BackgroundPanel: StylesBackgroundPanel,
|
|
15
|
+
} = unlock( blockEditorPrivateApis );
|
|
16
|
+
|
|
17
|
+
export default function BackgroundPanel() {
|
|
18
|
+
const [ style ] = useGlobalStyle( '', undefined, 'user', {
|
|
19
|
+
shouldDecodeEncode: false,
|
|
20
|
+
} );
|
|
21
|
+
const [ inheritedStyle, setStyle ] = useGlobalStyle( '', undefined, 'all', {
|
|
22
|
+
shouldDecodeEncode: false,
|
|
23
|
+
} );
|
|
24
|
+
const [ settings ] = useGlobalSetting( '' );
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<StylesBackgroundPanel
|
|
28
|
+
inheritedValue={ inheritedStyle }
|
|
29
|
+
value={ style }
|
|
30
|
+
onChange={ setStyle }
|
|
31
|
+
settings={ settings }
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
@@ -13,8 +13,6 @@ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
|
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
15
|
import { unlock } from '../../lock-unlock';
|
|
16
|
-
import ColorVariations from './variations/variations-color';
|
|
17
|
-
import { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../../hooks/use-theme-style-variations/use-theme-style-variations-by-property';
|
|
18
16
|
|
|
19
17
|
const { useGlobalSetting } = unlock( blockEditorPrivateApis );
|
|
20
18
|
const mobilePopoverProps = { placement: 'bottom-start', offset: 8 };
|
|
@@ -47,12 +45,6 @@ export default function ColorPalettePanel( { name } ) {
|
|
|
47
45
|
'color.defaultPalette',
|
|
48
46
|
name
|
|
49
47
|
);
|
|
50
|
-
const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig( {
|
|
51
|
-
property: 'color',
|
|
52
|
-
filter: ( variation ) =>
|
|
53
|
-
variation?.settings?.color &&
|
|
54
|
-
Object.keys( variation?.settings?.color ).length,
|
|
55
|
-
} );
|
|
56
48
|
const isMobileViewport = useViewportMatch( 'small', '<' );
|
|
57
49
|
const popoverProps = isMobileViewport ? mobilePopoverProps : undefined;
|
|
58
50
|
|
|
@@ -85,9 +77,6 @@ export default function ColorPalettePanel( { name } ) {
|
|
|
85
77
|
popoverProps={ popoverProps }
|
|
86
78
|
/>
|
|
87
79
|
) }
|
|
88
|
-
{ !! colorVariations.length && (
|
|
89
|
-
<ColorVariations variations={ colorVariations } />
|
|
90
|
-
) }
|
|
91
80
|
<PaletteEdit
|
|
92
81
|
colors={ customColors }
|
|
93
82
|
onChange={ setCustomColors }
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
useEntityRecords,
|
|
10
10
|
store as coreStore,
|
|
11
11
|
} from '@wordpress/core-data';
|
|
12
|
-
import { __
|
|
12
|
+
import { __ } from '@wordpress/i18n';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Internal dependencies
|
|
@@ -105,18 +105,31 @@ function FontLibraryProvider( { children } ) {
|
|
|
105
105
|
const [ modalTabOpen, setModalTabOpen ] = useState( false );
|
|
106
106
|
const [ libraryFontSelected, setLibraryFontSelected ] = useState( null );
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
? baseFontFamilies.theme
|
|
110
|
-
.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )
|
|
111
|
-
.sort( ( a, b ) => a.name.localeCompare( b.name ) )
|
|
112
|
-
: [];
|
|
113
|
-
|
|
108
|
+
// Themes Fonts are the fonts defined in the global styles (database persisted theme.json data).
|
|
114
109
|
const themeFonts = fontFamilies?.theme
|
|
115
110
|
? fontFamilies.theme
|
|
116
111
|
.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )
|
|
117
112
|
.sort( ( a, b ) => a.name.localeCompare( b.name ) )
|
|
118
113
|
: [];
|
|
119
114
|
|
|
115
|
+
const themeFontsSlugs = new Set( themeFonts.map( ( f ) => f.slug ) );
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* Base Theme Fonts are the fonts defined in the theme.json *file*.
|
|
119
|
+
*
|
|
120
|
+
* Uses the fonts from global styles + the ones from the theme.json file that hasn't repeated slugs.
|
|
121
|
+
* Avoids incosistencies with the fonts listed in the font library modal as base (unactivated).
|
|
122
|
+
* These inconsistencies can happen when the active theme fonts in global styles aren't defined in theme.json file as when a theme style variation is applied.
|
|
123
|
+
*/
|
|
124
|
+
const baseThemeFonts = baseFontFamilies?.theme
|
|
125
|
+
? themeFonts.concat(
|
|
126
|
+
baseFontFamilies.theme
|
|
127
|
+
.filter( ( f ) => ! themeFontsSlugs.has( f.slug ) )
|
|
128
|
+
.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )
|
|
129
|
+
.sort( ( a, b ) => a.name.localeCompare( b.name ) )
|
|
130
|
+
)
|
|
131
|
+
: [];
|
|
132
|
+
|
|
120
133
|
const customFonts = fontFamilies?.custom
|
|
121
134
|
? fontFamilies.custom
|
|
122
135
|
.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )
|
|
@@ -144,8 +157,7 @@ function FontLibraryProvider( { children } ) {
|
|
|
144
157
|
return;
|
|
145
158
|
}
|
|
146
159
|
|
|
147
|
-
const fonts =
|
|
148
|
-
font.source === 'theme' ? baseThemeFonts : baseCustomFonts;
|
|
160
|
+
const fonts = font.source === 'theme' ? themeFonts : baseCustomFonts;
|
|
149
161
|
|
|
150
162
|
// Tries to find the font in the installed fonts
|
|
151
163
|
const fontSelected = fonts.find( ( f ) => f.slug === font.slug );
|
|
@@ -269,13 +281,29 @@ function FontLibraryProvider( { children } ) {
|
|
|
269
281
|
sucessfullyInstalledFontFaces?.length > 0 ||
|
|
270
282
|
alreadyInstalledFontFaces?.length > 0
|
|
271
283
|
) {
|
|
272
|
-
|
|
284
|
+
// Use font data from REST API not from client to ensure
|
|
285
|
+
// correct font information is used.
|
|
286
|
+
installedFontFamily.fontFace = [
|
|
273
287
|
...sucessfullyInstalledFontFaces,
|
|
274
|
-
...alreadyInstalledFontFaces,
|
|
275
288
|
];
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
289
|
+
|
|
290
|
+
fontFamiliesToActivate.push( installedFontFamily );
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// If it's a system font but was installed successfully, activate it.
|
|
294
|
+
if (
|
|
295
|
+
installedFontFamily &&
|
|
296
|
+
! fontFamilyToInstall?.fontFace?.length
|
|
297
|
+
) {
|
|
298
|
+
fontFamiliesToActivate.push( installedFontFamily );
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// If the font family is new and is not a system font, delete it to avoid having font families without font faces.
|
|
302
|
+
if (
|
|
303
|
+
isANewFontFamily &&
|
|
304
|
+
fontFamilyToInstall?.fontFace?.length > 0 &&
|
|
305
|
+
sucessfullyInstalledFontFaces?.length === 0
|
|
306
|
+
) {
|
|
279
307
|
await fetchUninstallFontFamily( installedFontFamily.id );
|
|
280
308
|
}
|
|
281
309
|
|
|
@@ -284,6 +312,14 @@ function FontLibraryProvider( { children } ) {
|
|
|
284
312
|
);
|
|
285
313
|
}
|
|
286
314
|
|
|
315
|
+
installationErrors = installationErrors.reduce(
|
|
316
|
+
( unique, item ) =>
|
|
317
|
+
unique.includes( item.message )
|
|
318
|
+
? unique
|
|
319
|
+
: [ ...unique, item.message ],
|
|
320
|
+
[]
|
|
321
|
+
);
|
|
322
|
+
|
|
287
323
|
if ( fontFamiliesToActivate.length > 0 ) {
|
|
288
324
|
// Activate the font family (add the font family to the global styles).
|
|
289
325
|
activateCustomFontFamilies( fontFamiliesToActivate );
|
|
@@ -300,18 +336,13 @@ function FontLibraryProvider( { children } ) {
|
|
|
300
336
|
}
|
|
301
337
|
|
|
302
338
|
if ( installationErrors.length > 0 ) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
/* translators: %s: Specific error message returned from server. */
|
|
306
|
-
__( 'There were some errors installing fonts. %s' ),
|
|
307
|
-
installationErrors.reduce(
|
|
308
|
-
( errorMessageCollection, error ) => {
|
|
309
|
-
return `${ errorMessageCollection } ${ error.message }`;
|
|
310
|
-
},
|
|
311
|
-
''
|
|
312
|
-
)
|
|
313
|
-
)
|
|
339
|
+
const installError = new Error(
|
|
340
|
+
__( 'There was an error installing fonts.' )
|
|
314
341
|
);
|
|
342
|
+
|
|
343
|
+
installError.installationErrors = installationErrors;
|
|
344
|
+
|
|
345
|
+
throw installError;
|
|
315
346
|
}
|
|
316
347
|
} finally {
|
|
317
348
|
setIsInstalling( false );
|
|
@@ -373,14 +404,29 @@ function FontLibraryProvider( { children } ) {
|
|
|
373
404
|
};
|
|
374
405
|
|
|
375
406
|
const activateCustomFontFamilies = ( fontsToAdd ) => {
|
|
376
|
-
//
|
|
407
|
+
// Removes the id from the families and faces to avoid saving that to global styles post content.
|
|
408
|
+
const fontsToActivate = fontsToAdd.map(
|
|
409
|
+
( { id: _familyDbId, fontFace, ...font } ) => ( {
|
|
410
|
+
...font,
|
|
411
|
+
...( fontFace && fontFace.length > 0
|
|
412
|
+
? {
|
|
413
|
+
fontFace: fontFace.map(
|
|
414
|
+
( { id: _faceDbId, ...face } ) => face
|
|
415
|
+
),
|
|
416
|
+
}
|
|
417
|
+
: {} ),
|
|
418
|
+
} )
|
|
419
|
+
);
|
|
420
|
+
|
|
377
421
|
// Activate the fonts by set the new custom fonts array.
|
|
378
422
|
setFontFamilies( {
|
|
379
423
|
...fontFamilies,
|
|
380
|
-
|
|
424
|
+
// Merge the existing custom fonts with the new fonts.
|
|
425
|
+
custom: mergeFontFamilies( fontFamilies?.custom, fontsToActivate ),
|
|
381
426
|
} );
|
|
427
|
+
|
|
382
428
|
// Add custom fonts to the browser.
|
|
383
|
-
|
|
429
|
+
fontsToActivate.forEach( ( font ) => {
|
|
384
430
|
if ( font.fontFace ) {
|
|
385
431
|
font.fontFace.forEach( ( face ) => {
|
|
386
432
|
// Load font faces just in the iframe because they already are in the document.
|
|
@@ -408,15 +454,15 @@ function FontLibraryProvider( { children } ) {
|
|
|
408
454
|
|
|
409
455
|
const isFaceActivated = isFontActivated(
|
|
410
456
|
font.slug,
|
|
411
|
-
face
|
|
412
|
-
face
|
|
457
|
+
face?.fontStyle,
|
|
458
|
+
face?.fontWeight,
|
|
413
459
|
font.source
|
|
414
460
|
);
|
|
415
461
|
|
|
416
462
|
if ( isFaceActivated ) {
|
|
417
463
|
loadFontFaceInBrowser(
|
|
418
464
|
face,
|
|
419
|
-
getDisplaySrcFromFontFace( face
|
|
465
|
+
getDisplaySrcFromFontFace( face?.src ),
|
|
420
466
|
'all'
|
|
421
467
|
);
|
|
422
468
|
} else {
|
|
@@ -344,8 +344,9 @@ function FontCollection( { slug } ) {
|
|
|
344
344
|
size="small"
|
|
345
345
|
onClick={ () => {
|
|
346
346
|
setSelectedFont( null );
|
|
347
|
+
setNotice( null );
|
|
347
348
|
} }
|
|
348
|
-
|
|
349
|
+
label={ __( 'Back' ) }
|
|
349
350
|
/>
|
|
350
351
|
<Heading
|
|
351
352
|
level={ 2 }
|
|
@@ -441,13 +442,13 @@ function FontCollection( { slug } ) {
|
|
|
441
442
|
sprintf(
|
|
442
443
|
// translators: %s: Total number of pages.
|
|
443
444
|
_x(
|
|
444
|
-
'Page <
|
|
445
|
+
'Page <CurrentPageControl /> of %s',
|
|
445
446
|
'paging'
|
|
446
447
|
),
|
|
447
448
|
totalPages
|
|
448
449
|
),
|
|
449
450
|
{
|
|
450
|
-
|
|
451
|
+
CurrentPageControl: (
|
|
451
452
|
<SelectControl
|
|
452
453
|
aria-label={ __( 'Current page' ) }
|
|
453
454
|
value={ page }
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
Button,
|
|
7
7
|
Card,
|
|
8
8
|
CardBody,
|
|
9
|
+
__experimentalHeading as Heading,
|
|
9
10
|
__experimentalText as Text,
|
|
10
11
|
__experimentalSpacer as Spacer,
|
|
11
12
|
} from '@wordpress/components';
|
|
@@ -24,7 +25,9 @@ function GoogleFontsConfirmDialog() {
|
|
|
24
25
|
<div className="font-library__google-fonts-confirm">
|
|
25
26
|
<Card>
|
|
26
27
|
<CardBody>
|
|
27
|
-
<
|
|
28
|
+
<Heading level={ 2 }>
|
|
29
|
+
{ __( 'Connect to Google Fonts' ) }
|
|
30
|
+
</Heading>
|
|
28
31
|
<Spacer margin={ 6 } />
|
|
29
32
|
<Text as="p">
|
|
30
33
|
{ __(
|
|
@@ -38,7 +41,11 @@ function GoogleFontsConfirmDialog() {
|
|
|
38
41
|
) }
|
|
39
42
|
</Text>
|
|
40
43
|
<Spacer margin={ 6 } />
|
|
41
|
-
<Button
|
|
44
|
+
<Button
|
|
45
|
+
__next40pxDefaultSize
|
|
46
|
+
variant="primary"
|
|
47
|
+
onClick={ handleConfirm }
|
|
48
|
+
>
|
|
42
49
|
{ __( 'Allow access to Google Fonts' ) }
|
|
43
50
|
</Button>
|
|
44
51
|
</CardBody>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.font-library-modal {
|
|
2
|
-
// @todo
|
|
2
|
+
// @todo If a new prop is added to the Modal component that constrains
|
|
3
3
|
// the content width, we should use that prop instead of this style.
|
|
4
4
|
// see https://github.com/WordPress/gutenberg/issues/54471.
|
|
5
5
|
&.font-library-modal {
|
|
@@ -125,13 +125,22 @@ button.font-library-modal__upload-area {
|
|
|
125
125
|
align-items: center;
|
|
126
126
|
margin-top: $grid-unit-80;
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
p {
|
|
129
|
+
line-height: $default-line-height;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
h2 {
|
|
133
|
+
font-size: 1.2rem;
|
|
134
|
+
font-weight: 400;
|
|
130
135
|
}
|
|
131
136
|
|
|
132
137
|
.components-card {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
padding: $grid-unit-20;
|
|
139
|
+
width: 400px;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.components-button {
|
|
143
|
+
width: 100%;
|
|
144
|
+
justify-content: center;
|
|
136
145
|
}
|
|
137
146
|
}
|
|
@@ -45,29 +45,48 @@ function UploadFonts() {
|
|
|
45
45
|
* @param {Array} files The files to be filtered
|
|
46
46
|
* @return {void}
|
|
47
47
|
*/
|
|
48
|
-
const handleFilesUpload = ( files ) => {
|
|
48
|
+
const handleFilesUpload = async ( files ) => {
|
|
49
49
|
setNotice( null );
|
|
50
50
|
setIsUploading( true );
|
|
51
51
|
const uniqueFilenames = new Set();
|
|
52
52
|
const selectedFiles = [ ...files ];
|
|
53
|
-
|
|
53
|
+
let hasInvalidFiles = false;
|
|
54
|
+
|
|
55
|
+
// Use map to create a promise for each file check, then filter with Promise.all.
|
|
56
|
+
const checkFilesPromises = selectedFiles.map( async ( file ) => {
|
|
57
|
+
const isFont = await isFontFile( file );
|
|
58
|
+
if ( ! isFont ) {
|
|
59
|
+
hasInvalidFiles = true;
|
|
60
|
+
return null; // Return null for invalid files.
|
|
61
|
+
}
|
|
62
|
+
// Check for duplicates
|
|
54
63
|
if ( uniqueFilenames.has( file.name ) ) {
|
|
55
|
-
return
|
|
64
|
+
return null; // Return null for duplicates.
|
|
56
65
|
}
|
|
57
|
-
//
|
|
66
|
+
// Check if the file extension is allowed.
|
|
58
67
|
const fileExtension = file.name.split( '.' ).pop().toLowerCase();
|
|
59
68
|
if ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {
|
|
60
69
|
uniqueFilenames.add( file.name );
|
|
61
|
-
return
|
|
70
|
+
return file; // Return the file if it passes all checks.
|
|
62
71
|
}
|
|
63
|
-
return
|
|
72
|
+
return null; // Return null for disallowed file extensions.
|
|
64
73
|
} );
|
|
74
|
+
|
|
75
|
+
// Filter out the nulls after all promises have resolved.
|
|
76
|
+
const allowedFiles = ( await Promise.all( checkFilesPromises ) ).filter(
|
|
77
|
+
( file ) => null !== file
|
|
78
|
+
);
|
|
79
|
+
|
|
65
80
|
if ( allowedFiles.length > 0 ) {
|
|
66
81
|
loadFiles( allowedFiles );
|
|
67
82
|
} else {
|
|
83
|
+
const message = hasInvalidFiles
|
|
84
|
+
? __( 'Sorry, you are not allowed to upload this file type.' )
|
|
85
|
+
: __( 'No fonts found to install.' );
|
|
86
|
+
|
|
68
87
|
setNotice( {
|
|
69
88
|
type: 'error',
|
|
70
|
-
message
|
|
89
|
+
message,
|
|
71
90
|
} );
|
|
72
91
|
setIsUploading( false );
|
|
73
92
|
}
|
|
@@ -94,6 +113,23 @@ function UploadFonts() {
|
|
|
94
113
|
handleInstall( fontFacesLoaded );
|
|
95
114
|
};
|
|
96
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Checks if a file is a valid Font file.
|
|
118
|
+
*
|
|
119
|
+
* @param {File} file The file to be checked.
|
|
120
|
+
* @return {boolean} Whether the file is a valid font file.
|
|
121
|
+
*/
|
|
122
|
+
async function isFontFile( file ) {
|
|
123
|
+
const font = new Font( 'Uploaded Font' );
|
|
124
|
+
try {
|
|
125
|
+
const buffer = await readFileAsArrayBuffer( file );
|
|
126
|
+
await font.fromDataBuffer( buffer, 'font' );
|
|
127
|
+
return true;
|
|
128
|
+
} catch ( error ) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
97
133
|
// Create a function to read the file as array buffer
|
|
98
134
|
async function readFileAsArrayBuffer( file ) {
|
|
99
135
|
return new Promise( ( resolve, reject ) => {
|
|
@@ -154,6 +190,7 @@ function UploadFonts() {
|
|
|
154
190
|
setNotice( {
|
|
155
191
|
type: 'error',
|
|
156
192
|
message: error.message,
|
|
193
|
+
errors: error?.installationErrors,
|
|
157
194
|
} );
|
|
158
195
|
}
|
|
159
196
|
|
|
@@ -167,9 +204,17 @@ function UploadFonts() {
|
|
|
167
204
|
{ notice && (
|
|
168
205
|
<Notice
|
|
169
206
|
status={ notice.type }
|
|
207
|
+
__unstableHTML
|
|
170
208
|
onRemove={ () => setNotice( null ) }
|
|
171
209
|
>
|
|
172
210
|
{ notice.message }
|
|
211
|
+
{ notice.errors && (
|
|
212
|
+
<ul>
|
|
213
|
+
{ notice.errors.map( ( error, index ) => (
|
|
214
|
+
<li key={ index }>{ error }</li>
|
|
215
|
+
) ) }
|
|
216
|
+
</ul>
|
|
217
|
+
) }
|
|
173
218
|
</Notice>
|
|
174
219
|
) }
|
|
175
220
|
{ isUploading && (
|
|
@@ -199,7 +244,7 @@ function UploadFonts() {
|
|
|
199
244
|
<Spacer margin={ 2 } />
|
|
200
245
|
<Text className="font-library-modal__upload-area__text">
|
|
201
246
|
{ __(
|
|
202
|
-
'Uploaded fonts appear in your library and can be used in your theme. Supported formats: .
|
|
247
|
+
'Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.'
|
|
203
248
|
) }
|
|
204
249
|
</Text>
|
|
205
250
|
</VStack>
|