@wordpress/edit-site 5.19.0 → 5.19.2
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/build/components/add-new-pattern/index.js +3 -3
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +73 -0
- package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -0
- package/build/components/block-editor/block-editor-provider/index.js +31 -0
- package/build/components/block-editor/block-editor-provider/index.js.map +1 -0
- package/build/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
- package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +1 -0
- package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +76 -0
- package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -0
- package/build/components/block-editor/index.js +2 -9
- package/build/components/block-editor/index.js.map +1 -1
- package/build/components/block-editor/site-editor-canvas.js +1 -1
- package/build/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build/components/create-template-part-modal/index.js +8 -12
- package/build/components/create-template-part-modal/index.js.map +1 -1
- package/build/components/editor/index.js +4 -1
- package/build/components/editor/index.js.map +1 -1
- package/build/components/global-styles/font-families.js +2 -1
- package/build/components/global-styles/font-families.js.map +1 -1
- package/build/components/global-styles/font-family-item.js +2 -2
- package/build/components/global-styles/font-family-item.js.map +1 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js +49 -0
- package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -0
- package/build/components/global-styles/font-library-modal/collection-font-variant.js +55 -0
- package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -0
- package/build/components/global-styles/font-library-modal/context.js +26 -2
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-card.js +7 -4
- package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +172 -0
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -0
- package/build/components/global-styles/font-library-modal/font-demo.js +30 -13
- package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +41 -0
- package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -0
- package/build/components/global-styles/font-library-modal/index.js +25 -7
- package/build/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/library-font-card.js +0 -5
- package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
- package/build/components/global-styles/font-library-modal/library-font-details.js +2 -1
- package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -1
- package/build/components/global-styles/font-library-modal/resolvers.js +16 -0
- package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build/components/global-styles/font-library-modal/tab-layout.js +2 -2
- package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/constants.js +1 -7
- package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +21 -0
- package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/fonts-outline.js +20 -0
- package/build/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/index.js +2 -52
- 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 +76 -0
- package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js +36 -0
- package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -0
- package/build/components/global-styles/screen-typography.js +1 -1
- package/build/components/global-styles/screen-typography.js.map +1 -1
- package/build/components/header-edit-mode/document-actions/index.js +9 -8
- package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
- package/build/components/header-edit-mode/index.js +4 -1
- package/build/components/header-edit-mode/index.js.map +1 -1
- package/build/components/layout/index.js +5 -1
- package/build/components/layout/index.js.map +1 -1
- package/build/components/list/added-by.js +13 -8
- package/build/components/list/added-by.js.map +1 -1
- package/build/components/list/index.js +2 -1
- package/build/components/list/index.js.map +1 -1
- package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -3
- package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
- package/build/components/page-patterns/duplicate-menu-item.js +5 -5
- package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build/components/page-patterns/grid-item.js +5 -5
- package/build/components/page-patterns/grid-item.js.map +1 -1
- package/build/components/page-patterns/index.js +1 -1
- package/build/components/page-patterns/index.js.map +1 -1
- package/build/components/page-patterns/search-items.js +1 -1
- package/build/components/page-patterns/search-items.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +28 -34
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-template-parts/add-new-template-part.js +3 -2
- package/build/components/page-template-parts/add-new-template-part.js.map +1 -1
- package/build/components/page-template-parts/index.js +2 -1
- package/build/components/page-template-parts/index.js.map +1 -1
- package/build/components/page-templates/index.js +3 -2
- package/build/components/page-templates/index.js.map +1 -1
- package/build/components/save-hub/index.js +2 -1
- package/build/components/save-hub/index.js.map +1 -1
- package/build/components/secondary-sidebar/list-view-sidebar.js +24 -17
- package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js +21 -3
- package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/hooks.js +2 -1
- package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
- package/build/components/sidebar-edit-mode/settings-header/index.js +2 -6
- package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +2 -1
- package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
- package/build/components/sidebar-navigation-screen-navigation-menus/index.js +3 -2
- package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-page/page-details.js +2 -1
- package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pages/index.js +5 -4
- package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/index.js +2 -1
- package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +3 -2
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +8 -7
- package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/index.js +3 -3
- package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +7 -2
- package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
- package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +7 -2
- package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
- package/build/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
- package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates/index.js +4 -3
- package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/index.js +3 -2
- package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build/components/start-template-options/index.js +20 -2
- package/build/components/start-template-options/index.js.map +1 -1
- package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -4
- 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 +4 -3
- package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
- package/build/components/template-actions/index.js +2 -1
- package/build/components/template-actions/index.js.map +1 -1
- package/build/components/template-actions/rename-menu-item.js +8 -3
- package/build/components/template-actions/rename-menu-item.js.map +1 -1
- package/build/hooks/commands/use-edit-mode-commands.js +4 -3
- package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build/hooks/navigation-menu-edit.js +2 -1
- package/build/hooks/navigation-menu-edit.js.map +1 -1
- package/build/hooks/template-part-edit.js +2 -1
- package/build/hooks/template-part-edit.js.map +1 -1
- package/build/store/actions.js +10 -9
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js +1 -9
- package/build/store/constants.js.map +1 -1
- package/build/store/private-actions.js +21 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +23 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +19 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +3 -2
- package/build/store/selectors.js.map +1 -1
- package/build/utils/constants.js +22 -3
- package/build/utils/constants.js.map +1 -1
- package/build/utils/is-template-removable.js +1 -1
- package/build/utils/is-template-removable.js.map +1 -1
- package/build/utils/is-template-revertable.js +1 -1
- package/build/utils/is-template-revertable.js.map +1 -1
- package/build/utils/template-part-create.js +6 -1
- package/build/utils/template-part-create.js.map +1 -1
- package/build-module/components/add-new-pattern/index.js +3 -3
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +65 -0
- package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -0
- package/build-module/components/block-editor/block-editor-provider/index.js +23 -0
- package/build-module/components/block-editor/block-editor-provider/index.js.map +1 -0
- package/build-module/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
- package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +1 -0
- package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +70 -0
- package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -0
- package/build-module/components/block-editor/index.js +1 -8
- package/build-module/components/block-editor/index.js.map +1 -1
- package/build-module/components/block-editor/site-editor-canvas.js +2 -2
- package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
- package/build-module/components/create-template-part-modal/index.js +8 -12
- package/build-module/components/create-template-part-modal/index.js.map +1 -1
- package/build-module/components/editor/index.js +4 -1
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/global-styles/font-families.js +3 -2
- package/build-module/components/global-styles/font-families.js.map +1 -1
- package/build-module/components/global-styles/font-family-item.js +2 -2
- package/build-module/components/global-styles/font-family-item.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js +40 -0
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +45 -0
- package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/context.js +27 -3
- package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-card.js +8 -5
- package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/font-collection.js +164 -0
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -13
- package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +33 -0
- package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/index.js +26 -7
- package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -5
- package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/library-font-details.js +2 -1
- package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/resolvers.js +14 -0
- package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/tab-layout.js +2 -2
- package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/constants.js +1 -6
- package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +15 -0
- package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js +13 -0
- package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/index.js +2 -51
- 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 +68 -0
- package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js +30 -0
- package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -0
- package/build-module/components/global-styles/screen-typography.js +1 -1
- package/build-module/components/global-styles/screen-typography.js.map +1 -1
- package/build-module/components/header-edit-mode/document-actions/index.js +9 -8
- package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
- package/build-module/components/header-edit-mode/index.js +4 -1
- package/build-module/components/header-edit-mode/index.js.map +1 -1
- package/build-module/components/layout/index.js +5 -1
- package/build-module/components/layout/index.js.map +1 -1
- package/build-module/components/list/added-by.js +13 -8
- package/build-module/components/list/added-by.js.map +1 -1
- package/build-module/components/list/index.js +2 -1
- package/build-module/components/list/index.js.map +1 -1
- package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -3
- package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
- package/build-module/components/page-patterns/duplicate-menu-item.js +5 -5
- package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
- package/build-module/components/page-patterns/grid-item.js +5 -5
- package/build-module/components/page-patterns/grid-item.js.map +1 -1
- package/build-module/components/page-patterns/index.js +1 -1
- package/build-module/components/page-patterns/index.js.map +1 -1
- package/build-module/components/page-patterns/search-items.js +2 -2
- package/build-module/components/page-patterns/search-items.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +28 -35
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-template-parts/add-new-template-part.js +3 -2
- package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -1
- package/build-module/components/page-template-parts/index.js +2 -1
- package/build-module/components/page-template-parts/index.js.map +1 -1
- package/build-module/components/page-templates/index.js +3 -2
- package/build-module/components/page-templates/index.js.map +1 -1
- package/build-module/components/save-hub/index.js +2 -1
- package/build-module/components/save-hub/index.js.map +1 -1
- package/build-module/components/secondary-sidebar/list-view-sidebar.js +26 -19
- package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +21 -3
- 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 +2 -1
- package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/settings-header/index.js +2 -6
- package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +3 -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-navigation-menus/index.js +3 -2
- package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-page/page-details.js +2 -1
- package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pages/index.js +5 -4
- package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/index.js +2 -1
- package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +3 -2
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
- package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +8 -7
- 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 +4 -4
- 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 +8 -3
- package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +7 -2
- package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates/index.js +4 -3
- package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +3 -2
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build-module/components/start-template-options/index.js +20 -2
- package/build-module/components/start-template-options/index.js.map +1 -1
- package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -4
- 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 +4 -3
- 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 +2 -1
- package/build-module/components/template-actions/index.js.map +1 -1
- package/build-module/components/template-actions/rename-menu-item.js +8 -3
- package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
- package/build-module/hooks/commands/use-edit-mode-commands.js +4 -3
- package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
- package/build-module/hooks/navigation-menu-edit.js +2 -1
- package/build-module/hooks/navigation-menu-edit.js.map +1 -1
- package/build-module/hooks/template-part-edit.js +2 -1
- package/build-module/hooks/template-part-edit.js.map +1 -1
- package/build-module/store/actions.js +10 -10
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js +0 -4
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/private-actions.js +19 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +22 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +18 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +3 -3
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/constants.js +17 -1
- package/build-module/utils/constants.js.map +1 -1
- package/build-module/utils/is-template-removable.js +2 -2
- package/build-module/utils/is-template-removable.js.map +1 -1
- package/build-module/utils/is-template-revertable.js +2 -2
- package/build-module/utils/is-template-revertable.js.map +1 -1
- package/build-module/utils/template-part-create.js +6 -1
- package/build-module/utils/template-part-create.js.map +1 -1
- package/build-style/style-rtl.css +23 -0
- package/build-style/style.css +23 -0
- package/package.json +40 -40
- package/src/components/add-new-pattern/index.js +3 -3
- package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +70 -0
- package/src/components/block-editor/block-editor-provider/index.js +29 -0
- package/src/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
- package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +87 -0
- package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +77 -0
- package/src/components/block-editor/index.js +1 -14
- package/src/components/block-editor/site-editor-canvas.js +5 -2
- package/src/components/create-template-part-modal/index.js +11 -12
- package/src/components/editor/index.js +6 -2
- package/src/components/global-styles/font-families.js +5 -1
- package/src/components/global-styles/font-family-item.js +2 -2
- package/src/components/global-styles/font-library-modal/collection-font-details.js +56 -0
- package/src/components/global-styles/font-library-modal/collection-font-variant.js +45 -0
- package/src/components/global-styles/font-library-modal/context.js +33 -2
- package/src/components/global-styles/font-library-modal/font-card.js +9 -4
- package/src/components/global-styles/font-library-modal/font-collection.js +257 -0
- package/src/components/global-styles/font-library-modal/font-demo.js +36 -10
- package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +50 -0
- package/src/components/global-styles/font-library-modal/index.js +30 -5
- package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
- package/src/components/global-styles/font-library-modal/library-font-card.js +1 -8
- package/src/components/global-styles/font-library-modal/library-font-details.js +2 -3
- package/src/components/global-styles/font-library-modal/resolvers.js +16 -0
- package/src/components/global-styles/font-library-modal/style.scss +26 -0
- package/src/components/global-styles/font-library-modal/tab-layout.js +2 -2
- package/src/components/global-styles/font-library-modal/utils/constants.js +1 -9
- package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +18 -0
- package/src/components/global-styles/font-library-modal/utils/fonts-outline.js +21 -0
- package/src/components/global-styles/font-library-modal/utils/index.js +9 -69
- package/src/components/global-styles/font-library-modal/utils/preview-styles.js +86 -0
- package/src/components/global-styles/font-library-modal/utils/sort-font-faces.js +33 -0
- package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +69 -0
- package/src/components/global-styles/font-library-modal/utils/test/fonts-outline.spec.js +109 -0
- package/src/components/global-styles/font-library-modal/utils/test/{getPreviewStyle.spec.js → preview-styles.spec.js} +49 -9
- package/src/components/global-styles/font-library-modal/utils/test/sort-font-faces.js +74 -0
- package/src/components/global-styles/screen-typography.js +4 -1
- package/src/components/header-edit-mode/document-actions/index.js +17 -8
- package/src/components/header-edit-mode/index.js +2 -1
- package/src/components/layout/index.js +10 -1
- package/src/components/list/added-by.js +29 -11
- package/src/components/list/index.js +7 -1
- package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -8
- package/src/components/page-patterns/duplicate-menu-item.js +5 -5
- package/src/components/page-patterns/grid-item.js +5 -5
- package/src/components/page-patterns/index.js +1 -1
- package/src/components/page-patterns/search-items.js +7 -1
- package/src/components/page-patterns/use-patterns.js +190 -134
- package/src/components/page-template-parts/add-new-template-part.js +5 -2
- package/src/components/page-template-parts/index.js +2 -1
- package/src/components/page-templates/index.js +3 -2
- package/src/components/save-hub/index.js +2 -1
- package/src/components/secondary-sidebar/list-view-sidebar.js +31 -26
- package/src/components/sidebar-edit-mode/page-panels/edit-template.js +48 -20
- package/src/components/sidebar-edit-mode/page-panels/hooks.js +9 -4
- package/src/components/sidebar-edit-mode/page-panels/style.scss +6 -0
- package/src/components/sidebar-edit-mode/settings-header/index.js +4 -7
- package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
- package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
- package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +3 -1
- package/src/components/sidebar-navigation-screen-navigation-menus/index.js +3 -2
- package/src/components/sidebar-navigation-screen-page/page-details.js +2 -1
- package/src/components/sidebar-navigation-screen-pages/index.js +5 -4
- package/src/components/sidebar-navigation-screen-pattern/index.js +2 -1
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +8 -2
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +7 -1
- package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
- package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +18 -8
- package/src/components/sidebar-navigation-screen-patterns/index.js +8 -4
- package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +16 -3
- package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +12 -2
- package/src/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
- package/src/components/sidebar-navigation-screen-templates/index.js +4 -3
- package/src/components/sidebar-navigation-screen-templates-browse/index.js +6 -2
- package/src/components/start-template-options/index.js +39 -2
- package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +10 -4
- package/src/components/sync-state-with-url/use-sync-path-with-url.js +8 -3
- package/src/components/template-actions/index.js +2 -1
- package/src/components/template-actions/rename-menu-item.js +8 -3
- package/src/hooks/commands/use-edit-mode-commands.js +4 -3
- package/src/hooks/navigation-menu-edit.js +2 -1
- package/src/hooks/template-part-edit.js +2 -1
- package/src/store/actions.js +18 -10
- package/src/store/constants.js +0 -5
- package/src/store/private-actions.js +19 -0
- package/src/store/private-selectors.js +22 -0
- package/src/store/reducer.js +18 -0
- package/src/store/selectors.js +6 -3
- package/src/store/test/reducer.js +18 -0
- package/src/utils/constants.js +17 -1
- package/src/utils/is-template-removable.js +2 -2
- package/src/utils/is-template-revertable.js +2 -2
- package/src/utils/template-part-create.js +6 -1
- package/build/components/block-editor/get-block-editor-provider.js +0 -35
- package/build/components/block-editor/get-block-editor-provider.js.map +0 -1
- package/build/components/block-editor/providers/default-block-editor-provider.js +0 -49
- package/build/components/block-editor/providers/default-block-editor-provider.js.map +0 -1
- package/build/components/block-editor/providers/navigation-block-editor-provider.js.map +0 -1
- package/build-module/components/block-editor/get-block-editor-provider.js +0 -28
- package/build-module/components/block-editor/get-block-editor-provider.js.map +0 -1
- package/build-module/components/block-editor/providers/default-block-editor-provider.js +0 -41
- package/build-module/components/block-editor/providers/default-block-editor-provider.js.map +0 -1
- package/build-module/components/block-editor/providers/navigation-block-editor-provider.js.map +0 -1
- package/src/components/block-editor/get-block-editor-provider.js +0 -29
- package/src/components/block-editor/providers/default-block-editor-provider.js +0 -44
|
@@ -64,8 +64,12 @@ function FontFamilies() {
|
|
|
64
64
|
);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
const FontFamiliesComponent = ( { ...props } ) => (
|
|
68
68
|
<FontLibraryProvider>
|
|
69
69
|
<FontFamilies { ...props } />
|
|
70
70
|
</FontLibraryProvider>
|
|
71
71
|
);
|
|
72
|
+
|
|
73
|
+
export default process.env.IS_GUTENBERG_PLUGIN
|
|
74
|
+
? FontFamiliesComponent
|
|
75
|
+
: undefined;
|
|
@@ -13,7 +13,7 @@ import { useContext } from '@wordpress/element';
|
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
15
|
import { FontLibraryContext } from './font-library-modal/context';
|
|
16
|
-
import {
|
|
16
|
+
import { getFamilyPreviewStyle } from './font-library-modal/utils/preview-styles';
|
|
17
17
|
|
|
18
18
|
function FontFamilyItem( { font } ) {
|
|
19
19
|
const { handleSetLibraryFontSelected, toggleModal } =
|
|
@@ -26,7 +26,7 @@ function FontFamilyItem( { font } ) {
|
|
|
26
26
|
toggleModal( 'installed-fonts' );
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
const previewStyle =
|
|
29
|
+
const previewStyle = getFamilyPreviewStyle( font );
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
32
|
<Item onClick={ handleClick }>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
__experimentalVStack as VStack,
|
|
6
|
+
__experimentalSpacer as Spacer,
|
|
7
|
+
} from '@wordpress/components';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import CollectionFontVariant from './collection-font-variant';
|
|
13
|
+
import { isFontFontFaceInOutline } from './utils/fonts-outline';
|
|
14
|
+
import { sortFontFaces } from './utils/sort-font-faces';
|
|
15
|
+
|
|
16
|
+
function CollectionFontDetails( {
|
|
17
|
+
font,
|
|
18
|
+
handleToggleVariant,
|
|
19
|
+
fontToInstallOutline,
|
|
20
|
+
} ) {
|
|
21
|
+
const fontFaces =
|
|
22
|
+
font.fontFace && font.fontFace.length
|
|
23
|
+
? sortFontFaces( font.fontFace )
|
|
24
|
+
: [
|
|
25
|
+
{
|
|
26
|
+
fontFamily: font.fontFamily,
|
|
27
|
+
fontStyle: 'normal',
|
|
28
|
+
fontWeight: '400',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<>
|
|
34
|
+
<Spacer margin={ 4 } />
|
|
35
|
+
<VStack spacing={ 0 }>
|
|
36
|
+
<Spacer margin={ 8 } />
|
|
37
|
+
{ fontFaces.map( ( face, i ) => (
|
|
38
|
+
<CollectionFontVariant
|
|
39
|
+
font={ font }
|
|
40
|
+
face={ face }
|
|
41
|
+
key={ `face${ i }` }
|
|
42
|
+
handleToggleVariant={ handleToggleVariant }
|
|
43
|
+
selected={ isFontFontFaceInOutline(
|
|
44
|
+
font.slug,
|
|
45
|
+
face,
|
|
46
|
+
fontToInstallOutline
|
|
47
|
+
) }
|
|
48
|
+
/>
|
|
49
|
+
) ) }
|
|
50
|
+
</VStack>
|
|
51
|
+
<Spacer margin={ 8 } />
|
|
52
|
+
</>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default CollectionFontDetails;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { CheckboxControl, Flex } from '@wordpress/components';
|
|
5
|
+
/**
|
|
6
|
+
* Internal dependencies
|
|
7
|
+
*/
|
|
8
|
+
import { getFontFaceVariantName } from './utils';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
import FontFaceDemo from './font-demo';
|
|
14
|
+
|
|
15
|
+
function CollectionFontVariant( {
|
|
16
|
+
face,
|
|
17
|
+
font,
|
|
18
|
+
handleToggleVariant,
|
|
19
|
+
selected,
|
|
20
|
+
} ) {
|
|
21
|
+
const handleToggleActivation = () => {
|
|
22
|
+
if ( font?.fontFace ) {
|
|
23
|
+
handleToggleVariant( font, face );
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
handleToggleVariant( font );
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const displayName = font.name + ' ' + getFontFaceVariantName( face );
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<div className="font-library-modal__library-font-variant">
|
|
33
|
+
<Flex justify="space-between" align="center" gap="1rem">
|
|
34
|
+
<FontFaceDemo fontFace={ face } text={ displayName } />
|
|
35
|
+
<CheckboxControl
|
|
36
|
+
checked={ selected }
|
|
37
|
+
onChange={ handleToggleActivation }
|
|
38
|
+
__nextHasNoMarginBottom={ true }
|
|
39
|
+
/>
|
|
40
|
+
</Flex>
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default CollectionFontVariant;
|
|
@@ -15,7 +15,12 @@ import { __ } from '@wordpress/i18n';
|
|
|
15
15
|
/**
|
|
16
16
|
* Internal dependencies
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
fetchInstallFonts,
|
|
20
|
+
fetchUninstallFonts,
|
|
21
|
+
fetchFontCollections,
|
|
22
|
+
fetchFontCollection,
|
|
23
|
+
} from './resolvers';
|
|
19
24
|
import { unlock } from '../../../lock-unlock';
|
|
20
25
|
const { useGlobalSetting } = unlock( blockEditorPrivateApis );
|
|
21
26
|
import {
|
|
@@ -52,7 +57,7 @@ function FontLibraryProvider( { children } ) {
|
|
|
52
57
|
const [ refreshKey, setRefreshKey ] = useState( 0 );
|
|
53
58
|
|
|
54
59
|
const refreshLibrary = () => {
|
|
55
|
-
setRefreshKey( (
|
|
60
|
+
setRefreshKey( Date.now() );
|
|
56
61
|
};
|
|
57
62
|
|
|
58
63
|
const {
|
|
@@ -313,6 +318,30 @@ function FontLibraryProvider( { children } ) {
|
|
|
313
318
|
loadedFontUrls.add( src );
|
|
314
319
|
};
|
|
315
320
|
|
|
321
|
+
// Font Collections
|
|
322
|
+
const [ collections, setFontCollections ] = useState( [] );
|
|
323
|
+
const getFontCollections = async () => {
|
|
324
|
+
const response = await fetchFontCollections();
|
|
325
|
+
setFontCollections( response );
|
|
326
|
+
};
|
|
327
|
+
const getFontCollection = async ( id ) => {
|
|
328
|
+
const hasData = !! collections.find(
|
|
329
|
+
( collection ) => collection.id === id
|
|
330
|
+
)?.data;
|
|
331
|
+
if ( hasData ) return;
|
|
332
|
+
const response = await fetchFontCollection( id );
|
|
333
|
+
const updatedCollections = collections.map( ( collection ) =>
|
|
334
|
+
collection.id === id
|
|
335
|
+
? { ...collection, data: { ...response?.data } }
|
|
336
|
+
: collection
|
|
337
|
+
);
|
|
338
|
+
setFontCollections( updatedCollections );
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
useEffect( () => {
|
|
342
|
+
getFontCollections();
|
|
343
|
+
}, [] );
|
|
344
|
+
|
|
316
345
|
return (
|
|
317
346
|
<FontLibraryContext.Provider
|
|
318
347
|
value={ {
|
|
@@ -337,6 +366,8 @@ function FontLibraryProvider( { children } ) {
|
|
|
337
366
|
isResolvingLibrary,
|
|
338
367
|
hasResolvedLibrary,
|
|
339
368
|
isInstalling,
|
|
369
|
+
collections,
|
|
370
|
+
getFontCollection,
|
|
340
371
|
} }
|
|
341
372
|
>
|
|
342
373
|
{ children }
|
|
@@ -7,15 +7,17 @@ import {
|
|
|
7
7
|
Button,
|
|
8
8
|
Flex,
|
|
9
9
|
FlexItem,
|
|
10
|
+
Icon,
|
|
10
11
|
} from '@wordpress/components';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Internal dependencies
|
|
14
15
|
*/
|
|
15
16
|
import FontDemo from './font-demo';
|
|
16
|
-
import {
|
|
17
|
+
import { getFamilyPreviewStyle } from './utils/preview-styles';
|
|
18
|
+
import { chevronRight } from '@wordpress/icons';
|
|
17
19
|
|
|
18
|
-
function FontCard( { font, onClick,
|
|
20
|
+
function FontCard( { font, onClick, variantsText } ) {
|
|
19
21
|
const fakeFontFace = {
|
|
20
22
|
fontStyle: 'normal',
|
|
21
23
|
fontWeight: '400',
|
|
@@ -31,7 +33,7 @@ function FontCard( { font, onClick, actionHandler, variantsText } ) {
|
|
|
31
33
|
) || font.fontFace[ 0 ]
|
|
32
34
|
: fakeFontFace;
|
|
33
35
|
|
|
34
|
-
const demoStyle =
|
|
36
|
+
const demoStyle = getFamilyPreviewStyle( font );
|
|
35
37
|
|
|
36
38
|
const variantsCount = font.fontFace?.length || 1;
|
|
37
39
|
|
|
@@ -47,6 +49,7 @@ function FontCard( { font, onClick, actionHandler, variantsText } ) {
|
|
|
47
49
|
>
|
|
48
50
|
<Flex justify="space-between" wrap={ false }>
|
|
49
51
|
<FontDemo
|
|
52
|
+
customPreviewUrl={ font.preview }
|
|
50
53
|
fontFace={ displayFontFace }
|
|
51
54
|
text={ font.name }
|
|
52
55
|
style={ demoStyle }
|
|
@@ -60,7 +63,9 @@ function FontCard( { font, onClick, actionHandler, variantsText } ) {
|
|
|
60
63
|
_n( 'variant', 'variants', variantsCount ) }
|
|
61
64
|
</Text>
|
|
62
65
|
</FlexItem>
|
|
63
|
-
<FlexItem>
|
|
66
|
+
<FlexItem>
|
|
67
|
+
<Icon icon={ chevronRight } />
|
|
68
|
+
</FlexItem>
|
|
64
69
|
</Flex>
|
|
65
70
|
</Flex>
|
|
66
71
|
</Button>
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useContext, useEffect, useState, useMemo } from '@wordpress/element';
|
|
5
|
+
import {
|
|
6
|
+
__experimentalSpacer as Spacer,
|
|
7
|
+
__experimentalInputControl as InputControl,
|
|
8
|
+
__experimentalText as Text,
|
|
9
|
+
SelectControl,
|
|
10
|
+
Spinner,
|
|
11
|
+
Icon,
|
|
12
|
+
FlexItem,
|
|
13
|
+
Flex,
|
|
14
|
+
Button,
|
|
15
|
+
} from '@wordpress/components';
|
|
16
|
+
import { debounce } from '@wordpress/compose';
|
|
17
|
+
import { __ } from '@wordpress/i18n';
|
|
18
|
+
import { search, closeSmall } from '@wordpress/icons';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Internal dependencies
|
|
22
|
+
*/
|
|
23
|
+
import TabLayout from './tab-layout';
|
|
24
|
+
import { FontLibraryContext } from './context';
|
|
25
|
+
import FontsGrid from './fonts-grid';
|
|
26
|
+
import FontCard from './font-card';
|
|
27
|
+
import filterFonts from './utils/filter-fonts';
|
|
28
|
+
import CollectionFontDetails from './collection-font-details';
|
|
29
|
+
import { toggleFont } from './utils/toggleFont';
|
|
30
|
+
import { getFontsOutline } from './utils/fonts-outline';
|
|
31
|
+
import GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';
|
|
32
|
+
|
|
33
|
+
const DEFAULT_CATEGORY = {
|
|
34
|
+
id: 'all',
|
|
35
|
+
name: __( 'All' ),
|
|
36
|
+
};
|
|
37
|
+
function FontCollection( { id } ) {
|
|
38
|
+
const requiresPermission = id === 'default-font-collection';
|
|
39
|
+
|
|
40
|
+
const getGoogleFontsPermissionFromStorage = () => {
|
|
41
|
+
return (
|
|
42
|
+
window.localStorage.getItem(
|
|
43
|
+
'wp-font-library-default-font-collection-permission'
|
|
44
|
+
) === 'true'
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const [ selectedFont, setSelectedFont ] = useState( null );
|
|
49
|
+
const [ fontsToInstall, setFontsToInstall ] = useState( [] );
|
|
50
|
+
const [ filters, setFilters ] = useState( {} );
|
|
51
|
+
const [ renderConfirmDialog, setRenderConfirmDialog ] = useState(
|
|
52
|
+
requiresPermission && ! getGoogleFontsPermissionFromStorage()
|
|
53
|
+
);
|
|
54
|
+
const { collections, getFontCollection } = useContext( FontLibraryContext );
|
|
55
|
+
const selectedCollection = collections.find(
|
|
56
|
+
( collection ) => collection.id === id
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
useEffect( () => {
|
|
60
|
+
const handleStorage = () => {
|
|
61
|
+
setRenderConfirmDialog(
|
|
62
|
+
requiresPermission && ! getGoogleFontsPermissionFromStorage()
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
handleStorage();
|
|
66
|
+
window.addEventListener( 'storage', handleStorage );
|
|
67
|
+
return () => window.removeEventListener( 'storage', handleStorage );
|
|
68
|
+
}, [ id, requiresPermission ] );
|
|
69
|
+
|
|
70
|
+
useEffect( () => {
|
|
71
|
+
getFontCollection( id );
|
|
72
|
+
resetFilters();
|
|
73
|
+
}, [ id, getFontCollection ] );
|
|
74
|
+
|
|
75
|
+
useEffect( () => {
|
|
76
|
+
setSelectedFont( null );
|
|
77
|
+
}, [ id ] );
|
|
78
|
+
|
|
79
|
+
const collectionFonts = useMemo(
|
|
80
|
+
() => selectedCollection?.data?.fontFamilies ?? [],
|
|
81
|
+
[ selectedCollection ]
|
|
82
|
+
);
|
|
83
|
+
const collectionCategories = selectedCollection?.data?.categories ?? [];
|
|
84
|
+
|
|
85
|
+
const categories = [ DEFAULT_CATEGORY, ...collectionCategories ];
|
|
86
|
+
|
|
87
|
+
const fonts = useMemo(
|
|
88
|
+
() => filterFonts( collectionFonts, filters ),
|
|
89
|
+
[ collectionFonts, filters ]
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
const handleCategoryFilter = ( category ) => {
|
|
93
|
+
setFilters( { ...filters, category } );
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const handleUpdateSearchInput = ( value ) => {
|
|
97
|
+
setFilters( { ...filters, search: value } );
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );
|
|
101
|
+
|
|
102
|
+
const resetFilters = () => {
|
|
103
|
+
setFilters( {} );
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const resetSearch = () => {
|
|
107
|
+
setFilters( { ...filters, search: '' } );
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const handleUnselectFont = () => {
|
|
111
|
+
setSelectedFont( null );
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const handleToggleVariant = ( font, face ) => {
|
|
115
|
+
const newFontsToInstall = toggleFont( font, face, fontsToInstall );
|
|
116
|
+
setFontsToInstall( newFontsToInstall );
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const fontToInstallOutline = getFontsOutline( fontsToInstall );
|
|
120
|
+
|
|
121
|
+
const resetFontsToInstall = () => {
|
|
122
|
+
setFontsToInstall( [] );
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<TabLayout
|
|
127
|
+
title={
|
|
128
|
+
! selectedFont ? selectedCollection.name : selectedFont.name
|
|
129
|
+
}
|
|
130
|
+
description={
|
|
131
|
+
! selectedFont
|
|
132
|
+
? selectedCollection.description
|
|
133
|
+
: __( 'Select font variants to install.' )
|
|
134
|
+
}
|
|
135
|
+
handleBack={ !! selectedFont && handleUnselectFont }
|
|
136
|
+
footer={
|
|
137
|
+
fontsToInstall.length > 0 && (
|
|
138
|
+
<Footer
|
|
139
|
+
fontsToInstall={ fontsToInstall }
|
|
140
|
+
resetFontsToInstall={ resetFontsToInstall }
|
|
141
|
+
/>
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
>
|
|
145
|
+
{ renderConfirmDialog && (
|
|
146
|
+
<>
|
|
147
|
+
<Spacer margin={ 8 } />
|
|
148
|
+
<GoogleFontsConfirmDialog />
|
|
149
|
+
</>
|
|
150
|
+
) }
|
|
151
|
+
|
|
152
|
+
{ ! renderConfirmDialog && ! selectedCollection.data && (
|
|
153
|
+
<Spinner />
|
|
154
|
+
) }
|
|
155
|
+
|
|
156
|
+
{ ! renderConfirmDialog && ! selectedFont && (
|
|
157
|
+
<Flex>
|
|
158
|
+
<FlexItem>
|
|
159
|
+
<InputControl
|
|
160
|
+
value={ filters.search }
|
|
161
|
+
placeholder={ __( 'Font name…' ) }
|
|
162
|
+
label={ __( 'Search' ) }
|
|
163
|
+
onChange={ debouncedUpdateSearchInput }
|
|
164
|
+
prefix={ <Icon icon={ search } /> }
|
|
165
|
+
suffix={
|
|
166
|
+
filters?.search ? (
|
|
167
|
+
<Icon
|
|
168
|
+
icon={ closeSmall }
|
|
169
|
+
onClick={ resetSearch }
|
|
170
|
+
/>
|
|
171
|
+
) : null
|
|
172
|
+
}
|
|
173
|
+
/>
|
|
174
|
+
</FlexItem>
|
|
175
|
+
<FlexItem>
|
|
176
|
+
<SelectControl
|
|
177
|
+
label={ __( 'Category' ) }
|
|
178
|
+
value={ filters.category }
|
|
179
|
+
onChange={ handleCategoryFilter }
|
|
180
|
+
>
|
|
181
|
+
{ categories &&
|
|
182
|
+
categories.map( ( category ) => (
|
|
183
|
+
<option
|
|
184
|
+
value={ category.id }
|
|
185
|
+
key={ category.id }
|
|
186
|
+
>
|
|
187
|
+
{ category.name }
|
|
188
|
+
</option>
|
|
189
|
+
) ) }
|
|
190
|
+
</SelectControl>
|
|
191
|
+
</FlexItem>
|
|
192
|
+
</Flex>
|
|
193
|
+
) }
|
|
194
|
+
|
|
195
|
+
<Spacer margin={ 4 } />
|
|
196
|
+
|
|
197
|
+
{ ! renderConfirmDialog &&
|
|
198
|
+
! selectedCollection?.data?.fontFamilies && <Spinner /> }
|
|
199
|
+
|
|
200
|
+
{ ! renderConfirmDialog &&
|
|
201
|
+
!! selectedCollection?.data?.fontFamilies?.length &&
|
|
202
|
+
! fonts.length && (
|
|
203
|
+
<Text>
|
|
204
|
+
{ __(
|
|
205
|
+
'No fonts found. Try with a different seach term'
|
|
206
|
+
) }
|
|
207
|
+
</Text>
|
|
208
|
+
) }
|
|
209
|
+
|
|
210
|
+
{ ! renderConfirmDialog && selectedFont && (
|
|
211
|
+
<CollectionFontDetails
|
|
212
|
+
font={ selectedFont }
|
|
213
|
+
handleToggleVariant={ handleToggleVariant }
|
|
214
|
+
fontToInstallOutline={ fontToInstallOutline }
|
|
215
|
+
/>
|
|
216
|
+
) }
|
|
217
|
+
|
|
218
|
+
{ ! renderConfirmDialog && ! selectedFont && (
|
|
219
|
+
<FontsGrid>
|
|
220
|
+
{ fonts.map( ( font ) => (
|
|
221
|
+
<FontCard
|
|
222
|
+
key={ font.slug }
|
|
223
|
+
font={ font }
|
|
224
|
+
onClick={ () => {
|
|
225
|
+
setSelectedFont( font );
|
|
226
|
+
} }
|
|
227
|
+
/>
|
|
228
|
+
) ) }
|
|
229
|
+
</FontsGrid>
|
|
230
|
+
) }
|
|
231
|
+
</TabLayout>
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function Footer( { fontsToInstall, resetFontsToInstall } ) {
|
|
236
|
+
const { installFonts, isInstalling } = useContext( FontLibraryContext );
|
|
237
|
+
|
|
238
|
+
const handleInstall = async () => {
|
|
239
|
+
await installFonts( fontsToInstall );
|
|
240
|
+
resetFontsToInstall();
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
return (
|
|
244
|
+
<Flex justify="flex-end">
|
|
245
|
+
<Button
|
|
246
|
+
variant="primary"
|
|
247
|
+
onClick={ handleInstall }
|
|
248
|
+
isBusy={ isInstalling }
|
|
249
|
+
disabled={ isInstalling }
|
|
250
|
+
>
|
|
251
|
+
{ __( 'Install' ) }
|
|
252
|
+
</Button>
|
|
253
|
+
</Flex>
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export default FontCollection;
|
|
@@ -8,24 +8,41 @@ import { useContext, useEffect, useState, useRef } from '@wordpress/element';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { FontLibraryContext } from './context';
|
|
11
|
+
import { getFacePreviewStyle } from './utils/preview-styles';
|
|
11
12
|
|
|
12
|
-
function
|
|
13
|
+
function getPreviewUrl( fontFace ) {
|
|
14
|
+
if ( fontFace.preview ) {
|
|
15
|
+
return fontFace.preview;
|
|
16
|
+
}
|
|
17
|
+
if ( fontFace.src ) {
|
|
18
|
+
return Array.isArray( fontFace.src ) ? fontFace.src[ 0 ] : fontFace.src;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function FontFaceDemo( { customPreviewUrl, fontFace, text, style = {} } ) {
|
|
13
23
|
const ref = useRef( null );
|
|
14
24
|
const [ isIntersecting, setIsIntersecting ] = useState( false );
|
|
15
25
|
const [ isAssetLoaded, setIsAssetLoaded ] = useState( false );
|
|
16
26
|
const { loadFontFaceAsset } = useContext( FontLibraryContext );
|
|
17
|
-
const { fontFamily, fontStyle, fontWeight } = fontFace;
|
|
18
27
|
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
const previewUrl = customPreviewUrl ?? getPreviewUrl( fontFace );
|
|
29
|
+
const isPreviewImage =
|
|
30
|
+
previewUrl && previewUrl.match( /\.(png|jpg|jpeg|gif|svg)$/i );
|
|
31
|
+
|
|
32
|
+
const faceStyles = getFacePreviewStyle( fontFace );
|
|
33
|
+
const textDemoStyle = {
|
|
34
|
+
whiteSpace: 'nowrap',
|
|
23
35
|
flexShrink: 0,
|
|
24
36
|
fontSize: '18px',
|
|
25
37
|
opacity: isAssetLoaded ? '1' : '0',
|
|
26
38
|
transition: 'opacity 0.3s ease-in-out',
|
|
39
|
+
...faceStyles,
|
|
27
40
|
...style,
|
|
28
41
|
};
|
|
42
|
+
const imageDemoStyle = {
|
|
43
|
+
height: '23px',
|
|
44
|
+
width: 'auto',
|
|
45
|
+
};
|
|
29
46
|
|
|
30
47
|
useEffect( () => {
|
|
31
48
|
const observer = new window.IntersectionObserver( ( [ entry ] ) => {
|
|
@@ -38,7 +55,7 @@ function FontFaceDemo( { fontFace, text, style = {} } ) {
|
|
|
38
55
|
useEffect( () => {
|
|
39
56
|
const loadAsset = async () => {
|
|
40
57
|
if ( isIntersecting ) {
|
|
41
|
-
if ( fontFace.src ) {
|
|
58
|
+
if ( ! isPreviewImage && fontFace.src ) {
|
|
42
59
|
await loadFontFaceAsset( fontFace );
|
|
43
60
|
}
|
|
44
61
|
setIsAssetLoaded( true );
|
|
@@ -48,9 +65,18 @@ function FontFaceDemo( { fontFace, text, style = {} } ) {
|
|
|
48
65
|
}, [ fontFace, isIntersecting, loadFontFaceAsset ] );
|
|
49
66
|
|
|
50
67
|
return (
|
|
51
|
-
<
|
|
52
|
-
{
|
|
53
|
-
|
|
68
|
+
<div ref={ ref }>
|
|
69
|
+
{ isPreviewImage ? (
|
|
70
|
+
<img
|
|
71
|
+
src={ previewUrl }
|
|
72
|
+
loading="lazy"
|
|
73
|
+
alt={ text }
|
|
74
|
+
style={ imageDemoStyle }
|
|
75
|
+
/>
|
|
76
|
+
) : (
|
|
77
|
+
<Text style={ textDemoStyle }>{ text }</Text>
|
|
78
|
+
) }
|
|
79
|
+
</div>
|
|
54
80
|
);
|
|
55
81
|
}
|
|
56
82
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
Card,
|
|
8
|
+
CardBody,
|
|
9
|
+
__experimentalText as Text,
|
|
10
|
+
__experimentalSpacer as Spacer,
|
|
11
|
+
} from '@wordpress/components';
|
|
12
|
+
|
|
13
|
+
function GoogleFontsConfirmDialog() {
|
|
14
|
+
const handleConfirm = () => {
|
|
15
|
+
// eslint-disable-next-line no-undef
|
|
16
|
+
window.localStorage.setItem(
|
|
17
|
+
'wp-font-library-default-font-collection-permission',
|
|
18
|
+
'true'
|
|
19
|
+
);
|
|
20
|
+
window.dispatchEvent( new Event( 'storage' ) );
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<div className="font-library__google-fonts-confirm">
|
|
25
|
+
<Card>
|
|
26
|
+
<CardBody>
|
|
27
|
+
<Text as="h3">Connect to Google Fonts</Text>
|
|
28
|
+
<Spacer margin={ 6 } />
|
|
29
|
+
<Text as="p">
|
|
30
|
+
{ __(
|
|
31
|
+
'To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.'
|
|
32
|
+
) }
|
|
33
|
+
</Text>
|
|
34
|
+
<Spacer margin={ 3 } />
|
|
35
|
+
<Text as="p">
|
|
36
|
+
{ __(
|
|
37
|
+
'You can alternatively upload files directly on the Library tab.'
|
|
38
|
+
) }
|
|
39
|
+
</Text>
|
|
40
|
+
<Spacer margin={ 6 } />
|
|
41
|
+
<Button variant="primary" onClick={ handleConfirm }>
|
|
42
|
+
{ __( 'Allow access to Google Fonts' ) }
|
|
43
|
+
</Button>
|
|
44
|
+
</CardBody>
|
|
45
|
+
</Card>
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default GoogleFontsConfirmDialog;
|
|
@@ -3,35 +3,60 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { __ } from '@wordpress/i18n';
|
|
5
5
|
import { Modal, TabPanel } from '@wordpress/components';
|
|
6
|
+
import { useContext } from '@wordpress/element';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Internal dependencies
|
|
9
10
|
*/
|
|
10
11
|
import InstalledFonts from './installed-fonts';
|
|
11
|
-
import
|
|
12
|
+
import FontCollection from './font-collection';
|
|
13
|
+
import { FontLibraryContext } from './context';
|
|
14
|
+
|
|
15
|
+
const INSTALLED_FONTS_TAB = {
|
|
16
|
+
name: 'installed-fonts',
|
|
17
|
+
title: __( 'Library' ),
|
|
18
|
+
className: 'installed-fonts',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const tabsFromCollections = ( collections ) =>
|
|
22
|
+
collections.map( ( { id, name } ) => ( {
|
|
23
|
+
name: id,
|
|
24
|
+
title:
|
|
25
|
+
collections.length === 1 && id === 'default-font-collection'
|
|
26
|
+
? __( 'Install Fonts' )
|
|
27
|
+
: name,
|
|
28
|
+
className: 'collection',
|
|
29
|
+
} ) );
|
|
12
30
|
|
|
13
31
|
function FontLibraryModal( {
|
|
14
32
|
onRequestClose,
|
|
15
33
|
initialTabName = 'installed-fonts',
|
|
16
34
|
} ) {
|
|
35
|
+
const { collections } = useContext( FontLibraryContext );
|
|
36
|
+
|
|
37
|
+
const tabs = [
|
|
38
|
+
INSTALLED_FONTS_TAB,
|
|
39
|
+
...tabsFromCollections( collections || [] ),
|
|
40
|
+
];
|
|
41
|
+
|
|
17
42
|
return (
|
|
18
43
|
<Modal
|
|
19
44
|
title={ __( 'Fonts' ) }
|
|
20
45
|
onRequestClose={ onRequestClose }
|
|
21
|
-
isFullScreen
|
|
46
|
+
isFullScreen
|
|
22
47
|
className="font-library-modal"
|
|
23
|
-
style={ { width: '65vw' } }
|
|
24
48
|
>
|
|
25
49
|
<TabPanel
|
|
26
50
|
className="font-library-modal__tab-panel"
|
|
27
51
|
initialTabName={ initialTabName }
|
|
28
|
-
tabs={
|
|
52
|
+
tabs={ tabs }
|
|
29
53
|
>
|
|
30
54
|
{ ( tab ) => {
|
|
31
55
|
switch ( tab.name ) {
|
|
32
56
|
case 'installed-fonts':
|
|
33
|
-
default:
|
|
34
57
|
return <InstalledFonts />;
|
|
58
|
+
default:
|
|
59
|
+
return <FontCollection id={ tab.name } />;
|
|
35
60
|
}
|
|
36
61
|
} }
|
|
37
62
|
</TabPanel>
|