@wordpress/edit-site 5.19.2 → 5.19.4
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 +6 -10
- package/build/components/add-new-pattern/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js +3 -1
- package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
- package/build/components/global-styles/font-library-modal/context.js +26 -30
- package/build/components/global-styles/font-library-modal/context.js.map +1 -1
- package/build/components/global-styles/font-library-modal/font-collection.js +31 -11
- package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build/components/global-styles/font-library-modal/index.js +10 -3
- package/build/components/global-styles/font-library-modal/index.js.map +1 -1
- package/build/components/global-styles/font-library-modal/installed-fonts.js +27 -7
- package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/local-fonts.js +35 -8
- package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
- package/build/components/global-styles/font-library-modal/resolvers.js +1 -1
- package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build/components/global-styles/font-library-modal/upload-fonts.js +26 -0
- package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -1
- package/build/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -1
- package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +71 -0
- package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +1 -0
- package/build/components/global-styles/font-library-modal/utils/index.js +4 -1
- package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build/components/page-patterns/grid.js +0 -1
- package/build/components/page-patterns/grid.js.map +1 -1
- package/build/components/page-patterns/patterns-list.js +1 -1
- package/build/components/page-patterns/patterns-list.js.map +1 -1
- package/build/components/page-patterns/use-patterns.js +5 -1
- package/build/components/page-patterns/use-patterns.js.map +1 -1
- package/build/components/page-template-parts/index.js +12 -1
- package/build/components/page-template-parts/index.js.map +1 -1
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +1 -1
- package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/hooks.js +71 -0
- package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +2 -2
- package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +82 -0
- package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js +10 -3
- package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
- package/build/components/sidebar-edit-mode/template-panel/template-areas.js +1 -1
- package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -3
- 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 +5 -4
- 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 +8 -1
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +29 -0
- package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
- package/build/components/sidebar-navigation-screen-patterns/index.js +14 -2
- package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-template/home-template-details.js +13 -18
- package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/index.js +16 -4
- package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build/store/selectors.js +4 -5
- package/build/store/selectors.js.map +1 -1
- package/build/utils/constants.js +1 -1
- package/build/utils/constants.js.map +1 -1
- package/build-module/components/add-new-pattern/index.js +7 -11
- package/build-module/components/add-new-pattern/index.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js +3 -1
- package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/context.js +26 -30
- 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 +32 -12
- package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/index.js +10 -3
- 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 +28 -8
- package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/local-fonts.js +38 -11
- package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/resolvers.js +1 -1
- package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js +17 -0
- package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -1
- package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -1
- package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +63 -0
- package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +1 -0
- package/build-module/components/global-styles/font-library-modal/utils/index.js +4 -1
- package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
- package/build-module/components/page-patterns/grid.js +0 -1
- package/build-module/components/page-patterns/grid.js.map +1 -1
- package/build-module/components/page-patterns/patterns-list.js +1 -1
- package/build-module/components/page-patterns/patterns-list.js.map +1 -1
- package/build-module/components/page-patterns/use-patterns.js +5 -1
- package/build-module/components/page-patterns/use-patterns.js.map +1 -1
- package/build-module/components/page-template-parts/index.js +12 -1
- package/build-module/components/page-template-parts/index.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +1 -1
- package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +64 -0
- package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +3 -3
- package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +76 -0
- package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +1 -0
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +10 -3
- package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js +1 -1
- package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -3
- 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 +5 -4
- 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 +7 -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-navigation-menu-title.js +22 -0
- package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js.map +1 -0
- package/build-module/components/sidebar-navigation-screen-patterns/index.js +14 -2
- package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +14 -19
- package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +16 -4
- package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
- package/build-module/store/selectors.js +4 -5
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/constants.js +1 -1
- package/build-module/utils/constants.js.map +1 -1
- package/build-style/style-rtl.css +35 -2
- package/build-style/style.css +35 -2
- package/package.json +40 -40
- package/src/components/add-new-pattern/index.js +7 -10
- package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
- package/src/components/global-styles/font-library-modal/context.js +36 -38
- package/src/components/global-styles/font-library-modal/font-collection.js +41 -12
- package/src/components/global-styles/font-library-modal/index.js +16 -6
- package/src/components/global-styles/font-library-modal/installed-fonts.js +36 -6
- package/src/components/global-styles/font-library-modal/local-fonts.js +65 -23
- package/src/components/global-styles/font-library-modal/resolvers.js +1 -1
- package/src/components/global-styles/font-library-modal/style.scss +18 -1
- package/src/components/global-styles/font-library-modal/upload-fonts.js +20 -0
- package/src/components/global-styles/font-library-modal/utils/fonts-outline.js +4 -3
- package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +62 -0
- package/src/components/global-styles/font-library-modal/utils/index.js +5 -1
- package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +1 -1
- package/src/components/page-patterns/grid.js +1 -1
- package/src/components/page-patterns/patterns-list.js +1 -1
- package/src/components/page-patterns/use-patterns.js +7 -3
- package/src/components/page-template-parts/index.js +14 -1
- package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +1 -1
- package/src/components/sidebar-edit-mode/template-panel/hooks.js +97 -0
- package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +18 -16
- package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +89 -0
- package/src/components/sidebar-edit-mode/template-panel/style.scss +18 -0
- package/src/components/sidebar-edit-mode/template-panel/template-actions.js +27 -12
- package/src/components/sidebar-edit-mode/template-panel/template-areas.js +1 -1
- package/src/components/sidebar-navigation-screen/style.scss +0 -1
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +5 -8
- package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +5 -9
- package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -5
- package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-title.js +32 -0
- package/src/components/sidebar-navigation-screen-patterns/index.js +25 -4
- package/src/components/sidebar-navigation-screen-template/home-template-details.js +27 -35
- package/src/components/sidebar-navigation-screen-templates-browse/index.js +12 -4
- package/src/store/selectors.js +9 -10
- package/src/utils/constants.js +1 -1
|
@@ -12,11 +12,11 @@ var _icons = require("@wordpress/icons");
|
|
|
12
12
|
var _data = require("@wordpress/data");
|
|
13
13
|
var _router = require("@wordpress/router");
|
|
14
14
|
var _patterns = require("@wordpress/patterns");
|
|
15
|
+
var _coreData = require("@wordpress/core-data");
|
|
15
16
|
var _notices = require("@wordpress/notices");
|
|
16
17
|
var _createTemplatePartModal = _interopRequireDefault(require("../create-template-part-modal"));
|
|
17
18
|
var _sidebarButton = _interopRequireDefault(require("../sidebar-button"));
|
|
18
19
|
var _lockUnlock = require("../../lock-unlock");
|
|
19
|
-
var _store = require("../../store");
|
|
20
20
|
var _constants = require("../../utils/constants");
|
|
21
21
|
var _usePatternCategories = _interopRequireDefault(require("../sidebar-navigation-screen-patterns/use-pattern-categories"));
|
|
22
22
|
/**
|
|
@@ -41,9 +41,8 @@ function AddNewPattern() {
|
|
|
41
41
|
} = useLocation();
|
|
42
42
|
const [showPatternModal, setShowPatternModal] = (0, _element.useState)(false);
|
|
43
43
|
const [showTemplatePartModal, setShowTemplatePartModal] = (0, _element.useState)(false);
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
return !!settings.supportsTemplatePartsMode;
|
|
44
|
+
const isBlockBasedTheme = (0, _data.useSelect)(select => {
|
|
45
|
+
return select(_coreData.store).getCurrentTheme()?.is_block_theme;
|
|
47
46
|
}, []);
|
|
48
47
|
const {
|
|
49
48
|
createPatternFromFile
|
|
@@ -64,7 +63,7 @@ function AddNewPattern() {
|
|
|
64
63
|
history.push({
|
|
65
64
|
postId: pattern.id,
|
|
66
65
|
postType: _constants.PATTERN_TYPES.user,
|
|
67
|
-
categoryType: _constants.PATTERN_TYPES.
|
|
66
|
+
categoryType: _constants.PATTERN_TYPES.theme,
|
|
68
67
|
categoryId,
|
|
69
68
|
canvas: 'edit'
|
|
70
69
|
});
|
|
@@ -88,10 +87,7 @@ function AddNewPattern() {
|
|
|
88
87
|
onClick: () => setShowPatternModal(true),
|
|
89
88
|
title: (0, _i18n.__)('Create pattern')
|
|
90
89
|
}];
|
|
91
|
-
|
|
92
|
-
// Remove condition when command palette issues are resolved.
|
|
93
|
-
// See: https://github.com/WordPress/gutenberg/issues/52154.
|
|
94
|
-
if (!isTemplatePartsMode) {
|
|
90
|
+
if (isBlockBasedTheme) {
|
|
95
91
|
controls.push({
|
|
96
92
|
icon: _icons.symbolFilled,
|
|
97
93
|
onClick: () => setShowTemplatePartModal(true),
|
|
@@ -99,7 +95,7 @@ function AddNewPattern() {
|
|
|
99
95
|
});
|
|
100
96
|
}
|
|
101
97
|
controls.push({
|
|
102
|
-
icon: _icons.
|
|
98
|
+
icon: _icons.upload,
|
|
103
99
|
onClick: () => {
|
|
104
100
|
patternUploadInputRef.current.click();
|
|
105
101
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_components","_i18n","_icons","_data","_router","_patterns","_notices","_createTemplatePartModal","_interopRequireDefault","_sidebarButton","_lockUnlock","_store","_constants","_usePatternCategories","useHistory","useLocation","unlock","routerPrivateApis","CreatePatternModal","editPatternsPrivateApis","AddNewPattern","history","params","showPatternModal","setShowPatternModal","useState","showTemplatePartModal","setShowTemplatePartModal","isTemplatePartsMode","useSelect","select","settings","editSiteStore","getSettings","supportsTemplatePartsMode","createPatternFromFile","useDispatch","patternsStore","createSuccessNotice","createErrorNotice","noticesStore","patternUploadInputRef","useRef","patternCategories","usePatternCategories","handleCreatePattern","pattern","categoryId","push","postId","id","postType","PATTERN_TYPES","user","categoryType","canvas","handleCreateTemplatePart","templatePart","TEMPLATE_PART_POST_TYPE","handleError","controls","icon","symbol","onClick","title","__","symbolFilled","current","click","createElement","Fragment","DropdownMenu","toggleProps","as","SidebarButton","plus","label","onClose","onSuccess","onError","default","closeModal","blocks","onCreate","type","accept","hidden","ref","onChange","event","file","target","files","currentCategoryId","find","category","name","undefined","path","theme","PATTERN_DEFAULT_CATEGORY","sprintf","raw","err","message","value"],"sources":["@wordpress/edit-site/src/components/add-new-pattern/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { useState, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { plus, symbol, symbolFilled } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editPatternsPrivateApis,\n\tstore as patternsStore,\n} from '@wordpress/patterns';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreateTemplatePartModal from '../create-template-part-modal';\nimport SidebarButton from '../sidebar-button';\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { CreatePatternModal } = unlock( editPatternsPrivateApis );\n\nexport default function AddNewPattern() {\n\tconst history = useHistory();\n\tconst { params } = useLocation();\n\tconst [ showPatternModal, setShowPatternModal ] = useState( false );\n\tconst [ showTemplatePartModal, setShowTemplatePartModal ] =\n\t\tuseState( false );\n\tconst isTemplatePartsMode = useSelect( ( select ) => {\n\t\tconst settings = select( editSiteStore ).getSettings();\n\t\treturn !! settings.supportsTemplatePartsMode;\n\t}, [] );\n\tconst { createPatternFromFile } = unlock( useDispatch( patternsStore ) );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst patternUploadInputRef = useRef();\n\tconst { patternCategories } = usePatternCategories();\n\n\tfunction handleCreatePattern( { pattern, categoryId } ) {\n\t\tsetShowPatternModal( false );\n\n\t\thistory.push( {\n\t\t\tpostId: pattern.id,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tcategoryType: PATTERN_TYPES.user,\n\t\t\tcategoryId,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleCreateTemplatePart( templatePart ) {\n\t\tsetShowTemplatePartModal( false );\n\n\t\t// Navigate to the created template part editor.\n\t\thistory.push( {\n\t\t\tpostId: templatePart.id,\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleError() {\n\t\tsetShowPatternModal( false );\n\t\tsetShowTemplatePartModal( false );\n\t}\n\n\tconst controls = [\n\t\t{\n\t\t\ticon: symbol,\n\t\t\tonClick: () => setShowPatternModal( true ),\n\t\t\ttitle: __( 'Create pattern' ),\n\t\t},\n\t];\n\n\t// Remove condition when command palette issues are resolved.\n\t// See: https://github.com/WordPress/gutenberg/issues/52154.\n\tif ( ! isTemplatePartsMode ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbolFilled,\n\t\t\tonClick: () => setShowTemplatePartModal( true ),\n\t\t\ttitle: __( 'Create template part' ),\n\t\t} );\n\t}\n\n\tcontrols.push( {\n\t\ticon: symbol,\n\t\tonClick: () => {\n\t\t\tpatternUploadInputRef.current.click();\n\t\t},\n\t\ttitle: __( 'Import pattern from JSON' ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tcontrols={ controls }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tas: SidebarButton,\n\t\t\t\t} }\n\t\t\t\ticon={ plus }\n\t\t\t\tlabel={ __( 'Create pattern' ) }\n\t\t\t/>\n\t\t\t{ showPatternModal && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tonClose={ () => setShowPatternModal( false ) }\n\t\t\t\t\tonSuccess={ handleCreatePattern }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTemplatePartModal && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setShowTemplatePartModal( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ handleCreateTemplatePart }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".json\"\n\t\t\t\thidden\n\t\t\t\tref={ patternUploadInputRef }\n\t\t\t\tonChange={ async ( event ) => {\n\t\t\t\t\tconst file = event.target.files?.[ 0 ];\n\t\t\t\t\tif ( ! file ) return;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentCategoryId =\n\t\t\t\t\t\t\tparams.categoryType !== TEMPLATE_PART_POST_TYPE &&\n\t\t\t\t\t\t\tpatternCategories.find(\n\t\t\t\t\t\t\t\t( category ) =>\n\t\t\t\t\t\t\t\t\tcategory.name === params.categoryId\n\t\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst pattern = await createPatternFromFile(\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tcurrentCategoryId\n\t\t\t\t\t\t\t\t? [ currentCategoryId ]\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Navigate to the All patterns category for the newly created pattern\n\t\t\t\t\t\t// if we're not on that page already.\n\t\t\t\t\t\tif ( ! currentCategoryId ) {\n\t\t\t\t\t\t\thistory.push( {\n\t\t\t\t\t\t\t\tpath: `/patterns`,\n\t\t\t\t\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\t\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The imported pattern's title.\n\t\t\t\t\t\t\t\t__( 'Imported \"%s\" from JSON.' ),\n\t\t\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'import-pattern-success',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\tcreateErrorNotice( err.message, {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'import-pattern-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tevent.target.value = '';\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_components","_i18n","_icons","_data","_router","_patterns","_coreData","_notices","_createTemplatePartModal","_interopRequireDefault","_sidebarButton","_lockUnlock","_constants","_usePatternCategories","useHistory","useLocation","unlock","routerPrivateApis","CreatePatternModal","editPatternsPrivateApis","AddNewPattern","history","params","showPatternModal","setShowPatternModal","useState","showTemplatePartModal","setShowTemplatePartModal","isBlockBasedTheme","useSelect","select","coreStore","getCurrentTheme","is_block_theme","createPatternFromFile","useDispatch","patternsStore","createSuccessNotice","createErrorNotice","noticesStore","patternUploadInputRef","useRef","patternCategories","usePatternCategories","handleCreatePattern","pattern","categoryId","push","postId","id","postType","PATTERN_TYPES","user","categoryType","theme","canvas","handleCreateTemplatePart","templatePart","TEMPLATE_PART_POST_TYPE","handleError","controls","icon","symbol","onClick","title","__","symbolFilled","upload","current","click","createElement","Fragment","DropdownMenu","toggleProps","as","SidebarButton","plus","label","onClose","onSuccess","onError","default","closeModal","blocks","onCreate","type","accept","hidden","ref","onChange","event","file","target","files","currentCategoryId","find","category","name","undefined","path","PATTERN_DEFAULT_CATEGORY","sprintf","raw","err","message","value"],"sources":["@wordpress/edit-site/src/components/add-new-pattern/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { useState, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { plus, symbol, symbolFilled, upload } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editPatternsPrivateApis,\n\tstore as patternsStore,\n} from '@wordpress/patterns';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreateTemplatePartModal from '../create-template-part-modal';\nimport SidebarButton from '../sidebar-button';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { CreatePatternModal } = unlock( editPatternsPrivateApis );\n\nexport default function AddNewPattern() {\n\tconst history = useHistory();\n\tconst { params } = useLocation();\n\tconst [ showPatternModal, setShowPatternModal ] = useState( false );\n\tconst [ showTemplatePartModal, setShowTemplatePartModal ] =\n\t\tuseState( false );\n\tconst isBlockBasedTheme = useSelect( ( select ) => {\n\t\treturn select( coreStore ).getCurrentTheme()?.is_block_theme;\n\t}, [] );\n\tconst { createPatternFromFile } = unlock( useDispatch( patternsStore ) );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst patternUploadInputRef = useRef();\n\tconst { patternCategories } = usePatternCategories();\n\n\tfunction handleCreatePattern( { pattern, categoryId } ) {\n\t\tsetShowPatternModal( false );\n\n\t\thistory.push( {\n\t\t\tpostId: pattern.id,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\tcategoryId,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleCreateTemplatePart( templatePart ) {\n\t\tsetShowTemplatePartModal( false );\n\n\t\t// Navigate to the created template part editor.\n\t\thistory.push( {\n\t\t\tpostId: templatePart.id,\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcanvas: 'edit',\n\t\t} );\n\t}\n\n\tfunction handleError() {\n\t\tsetShowPatternModal( false );\n\t\tsetShowTemplatePartModal( false );\n\t}\n\n\tconst controls = [\n\t\t{\n\t\t\ticon: symbol,\n\t\t\tonClick: () => setShowPatternModal( true ),\n\t\t\ttitle: __( 'Create pattern' ),\n\t\t},\n\t];\n\n\tif ( isBlockBasedTheme ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbolFilled,\n\t\t\tonClick: () => setShowTemplatePartModal( true ),\n\t\t\ttitle: __( 'Create template part' ),\n\t\t} );\n\t}\n\n\tcontrols.push( {\n\t\ticon: upload,\n\t\tonClick: () => {\n\t\t\tpatternUploadInputRef.current.click();\n\t\t},\n\t\ttitle: __( 'Import pattern from JSON' ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tcontrols={ controls }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tas: SidebarButton,\n\t\t\t\t} }\n\t\t\t\ticon={ plus }\n\t\t\t\tlabel={ __( 'Create pattern' ) }\n\t\t\t/>\n\t\t\t{ showPatternModal && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tonClose={ () => setShowPatternModal( false ) }\n\t\t\t\t\tonSuccess={ handleCreatePattern }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTemplatePartModal && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setShowTemplatePartModal( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ handleCreateTemplatePart }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".json\"\n\t\t\t\thidden\n\t\t\t\tref={ patternUploadInputRef }\n\t\t\t\tonChange={ async ( event ) => {\n\t\t\t\t\tconst file = event.target.files?.[ 0 ];\n\t\t\t\t\tif ( ! file ) return;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst currentCategoryId =\n\t\t\t\t\t\t\tparams.categoryType !== TEMPLATE_PART_POST_TYPE &&\n\t\t\t\t\t\t\tpatternCategories.find(\n\t\t\t\t\t\t\t\t( category ) =>\n\t\t\t\t\t\t\t\t\tcategory.name === params.categoryId\n\t\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst pattern = await createPatternFromFile(\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tcurrentCategoryId\n\t\t\t\t\t\t\t\t? [ currentCategoryId ]\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Navigate to the All patterns category for the newly created pattern\n\t\t\t\t\t\t// if we're not on that page already.\n\t\t\t\t\t\tif ( ! currentCategoryId ) {\n\t\t\t\t\t\t\thistory.push( {\n\t\t\t\t\t\t\t\tpath: `/patterns`,\n\t\t\t\t\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\t\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The imported pattern's title.\n\t\t\t\t\t\t\t\t__( 'Imported \"%s\" from JSON.' ),\n\t\t\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'import-pattern-success',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\tcreateErrorNotice( err.message, {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'import-pattern-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tevent.target.value = '';\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -39,7 +39,9 @@ function CollectionFontDetails({
|
|
|
39
39
|
face: face,
|
|
40
40
|
key: `face${i}`,
|
|
41
41
|
handleToggleVariant: handleToggleVariant,
|
|
42
|
-
selected: (0, _fontsOutline.isFontFontFaceInOutline)(font.slug, face,
|
|
42
|
+
selected: (0, _fontsOutline.isFontFontFaceInOutline)(font.slug, font.fontFace ? face : null,
|
|
43
|
+
// If the font has no fontFace, we want to check if the font is in the outline
|
|
44
|
+
fontToInstallOutline)
|
|
43
45
|
}))), (0, _element.createElement)(_components.__experimentalSpacer, {
|
|
44
46
|
margin: 8
|
|
45
47
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","_collectionFontVariant","_interopRequireDefault","_fontsOutline","_sortFontFaces","CollectionFontDetails","font","handleToggleVariant","fontToInstallOutline","fontFaces","fontFace","length","sortFontFaces","fontFamily","fontStyle","fontWeight","_element","createElement","Fragment","__experimentalSpacer","margin","__experimentalVStack","spacing","map","face","i","default","key","selected","isFontFontFaceInOutline","slug","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/collection-font-details.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport CollectionFontVariant from './collection-font-variant';\nimport { isFontFontFaceInOutline } from './utils/fonts-outline';\nimport { sortFontFaces } from './utils/sort-font-faces';\n\nfunction CollectionFontDetails( {\n\tfont,\n\thandleToggleVariant,\n\tfontToInstallOutline,\n} ) {\n\tconst fontFaces =\n\t\tfont.fontFace && font.fontFace.length\n\t\t\t? sortFontFaces( font.fontFace )\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfontFamily: font.fontFamily,\n\t\t\t\t\t\tfontStyle: 'normal',\n\t\t\t\t\t\tfontWeight: '400',\n\t\t\t\t\t},\n\t\t\t ];\n\n\treturn (\n\t\t<>\n\t\t\t<Spacer margin={ 4 } />\n\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t{ fontFaces.map( ( face, i ) => (\n\t\t\t\t\t<CollectionFontVariant\n\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\tface={ face }\n\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\t\tselected={ isFontFontFaceInOutline(\n\t\t\t\t\t\t\tfont.slug,\n\t\t\t\t\t\t\
|
|
1
|
+
{"version":3,"names":["_components","require","_collectionFontVariant","_interopRequireDefault","_fontsOutline","_sortFontFaces","CollectionFontDetails","font","handleToggleVariant","fontToInstallOutline","fontFaces","fontFace","length","sortFontFaces","fontFamily","fontStyle","fontWeight","_element","createElement","Fragment","__experimentalSpacer","margin","__experimentalVStack","spacing","map","face","i","default","key","selected","isFontFontFaceInOutline","slug","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/collection-font-details.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport CollectionFontVariant from './collection-font-variant';\nimport { isFontFontFaceInOutline } from './utils/fonts-outline';\nimport { sortFontFaces } from './utils/sort-font-faces';\n\nfunction CollectionFontDetails( {\n\tfont,\n\thandleToggleVariant,\n\tfontToInstallOutline,\n} ) {\n\tconst fontFaces =\n\t\tfont.fontFace && font.fontFace.length\n\t\t\t? sortFontFaces( font.fontFace )\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfontFamily: font.fontFamily,\n\t\t\t\t\t\tfontStyle: 'normal',\n\t\t\t\t\t\tfontWeight: '400',\n\t\t\t\t\t},\n\t\t\t ];\n\n\treturn (\n\t\t<>\n\t\t\t<Spacer margin={ 4 } />\n\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t{ fontFaces.map( ( face, i ) => (\n\t\t\t\t\t<CollectionFontVariant\n\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\tface={ face }\n\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\t\tselected={ isFontFontFaceInOutline(\n\t\t\t\t\t\t\tfont.slug,\n\t\t\t\t\t\t\tfont.fontFace ? face : null, // If the font has no fontFace, we want to check if the font is in the outline\n\t\t\t\t\t\t\tfontToInstallOutline\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</VStack>\n\t\t\t<Spacer margin={ 8 } />\n\t\t</>\n\t);\n}\n\nexport default CollectionFontDetails;\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAQA,IAAAC,sBAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAbA;AACA;AACA;;AAMA;AACA;AACA;;AAKA,SAASK,qBAAqBA,CAAE;EAC/BC,IAAI;EACJC,mBAAmB;EACnBC;AACD,CAAC,EAAG;EACH,MAAMC,SAAS,GACdH,IAAI,CAACI,QAAQ,IAAIJ,IAAI,CAACI,QAAQ,CAACC,MAAM,GAClC,IAAAC,4BAAa,EAAEN,IAAI,CAACI,QAAS,CAAC,GAC9B,CACA;IACCG,UAAU,EAAEP,IAAI,CAACO,UAAU;IAC3BC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE;EACb,CAAC,CACA;EAEL,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACC,IAAAF,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAAoB,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CAAC,EACvB,IAAAJ,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAAsB,oBAAM;IAACC,OAAO,EAAG;EAAG,GACpB,IAAAN,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAAoB,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CAAC,EACrBX,SAAS,CAACc,GAAG,CAAE,CAAEC,IAAI,EAAEC,CAAC,KACzB,IAAAT,QAAA,CAAAC,aAAA,EAAChB,sBAAA,CAAAyB,OAAqB;IACrBpB,IAAI,EAAGA,IAAM;IACbkB,IAAI,EAAGA,IAAM;IACbG,GAAG,EAAI,OAAOF,CAAG,EAAG;IACpBlB,mBAAmB,EAAGA,mBAAqB;IAC3CqB,QAAQ,EAAG,IAAAC,qCAAuB,EACjCvB,IAAI,CAACwB,IAAI,EACTxB,IAAI,CAACI,QAAQ,GAAGc,IAAI,GAAG,IAAI;IAAE;IAC7BhB,oBACD;EAAG,CACH,CACA,CACK,CAAC,EACT,IAAAQ,QAAA,CAAAC,aAAA,EAAClB,WAAA,CAAAoB,oBAAM;IAACC,MAAM,EAAG;EAAG,CAAE,CACrB,CAAC;AAEL;AAAC,IAAAW,QAAA,GAEc1B,qBAAqB;AAAA2B,OAAA,CAAAN,OAAA,GAAAK,QAAA"}
|
|
@@ -9,8 +9,6 @@ var _element = require("@wordpress/element");
|
|
|
9
9
|
var _blockEditor = require("@wordpress/block-editor");
|
|
10
10
|
var _data = require("@wordpress/data");
|
|
11
11
|
var _coreData = require("@wordpress/core-data");
|
|
12
|
-
var _notices = require("@wordpress/notices");
|
|
13
|
-
var _i18n = require("@wordpress/i18n");
|
|
14
12
|
var _resolvers = require("./resolvers");
|
|
15
13
|
var _lockUnlock = require("../../../lock-unlock");
|
|
16
14
|
var _utils = require("./utils");
|
|
@@ -47,9 +45,6 @@ function FontLibraryProvider({
|
|
|
47
45
|
});
|
|
48
46
|
const globalStyles = (0, _coreData.useEntityRecord)('root', 'globalStyles', globalStylesId);
|
|
49
47
|
const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
|
|
50
|
-
const {
|
|
51
|
-
createErrorNotice
|
|
52
|
-
} = (0, _data.useDispatch)(_notices.store);
|
|
53
48
|
const [isInstalling, setIsInstalling] = (0, _element.useState)(false);
|
|
54
49
|
const [refreshKey, setRefreshKey] = (0, _element.useState)(0);
|
|
55
50
|
const refreshLibrary = () => {
|
|
@@ -161,7 +156,8 @@ function FontLibraryProvider({
|
|
|
161
156
|
// Prepare formData to install.
|
|
162
157
|
const formData = (0, _utils.makeFormDataFromFontFamilies)(fonts);
|
|
163
158
|
// Install the fonts (upload the font files to the server and create the post in the database).
|
|
164
|
-
const
|
|
159
|
+
const response = await (0, _resolvers.fetchInstallFonts)(formData);
|
|
160
|
+
const fontsInstalled = response?.successes || [];
|
|
165
161
|
// Get intersecting font faces between the fonts we tried to installed and the fonts that were installed
|
|
166
162
|
// (to avoid activating a non installed font).
|
|
167
163
|
const fontToBeActivated = (0, _getIntersectingFontFaces.default)(fontsInstalled, fonts);
|
|
@@ -171,35 +167,33 @@ function FontLibraryProvider({
|
|
|
171
167
|
saveSpecifiedEntityEdits('root', 'globalStyles', globalStylesId, ['settings.typography.fontFamilies']);
|
|
172
168
|
refreshLibrary();
|
|
173
169
|
setIsInstalling(false);
|
|
174
|
-
return
|
|
175
|
-
} catch (
|
|
176
|
-
// eslint-disable-next-line no-console
|
|
177
|
-
console.error(e);
|
|
178
|
-
createErrorNotice((0, _i18n.__)('Error installing fonts.'), {
|
|
179
|
-
type: 'snackbar'
|
|
180
|
-
});
|
|
170
|
+
return response;
|
|
171
|
+
} catch (error) {
|
|
181
172
|
setIsInstalling(false);
|
|
182
|
-
return
|
|
173
|
+
return {
|
|
174
|
+
errors: [error]
|
|
175
|
+
};
|
|
183
176
|
}
|
|
184
177
|
}
|
|
185
178
|
async function uninstallFont(font) {
|
|
186
179
|
try {
|
|
187
180
|
// Uninstall the font (remove the font files from the server and the post from the database).
|
|
188
|
-
await (0, _resolvers.fetchUninstallFonts)([font]);
|
|
181
|
+
const response = await (0, _resolvers.fetchUninstallFonts)([font]);
|
|
189
182
|
// Deactivate the font family (remove the font family from the global styles).
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
183
|
+
if (!response.errors) {
|
|
184
|
+
deactivateFontFamily(font);
|
|
185
|
+
// Save the global styles to the database.
|
|
186
|
+
await saveSpecifiedEntityEdits('root', 'globalStyles', globalStylesId, ['settings.typography.fontFamilies']);
|
|
187
|
+
}
|
|
193
188
|
// Refresh the library (the the library font families from database).
|
|
194
189
|
refreshLibrary();
|
|
195
|
-
return
|
|
196
|
-
} catch (
|
|
190
|
+
return response;
|
|
191
|
+
} catch (error) {
|
|
197
192
|
// eslint-disable-next-line no-console
|
|
198
|
-
console.error(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
return false;
|
|
193
|
+
console.error(error);
|
|
194
|
+
return {
|
|
195
|
+
errors: [error]
|
|
196
|
+
};
|
|
203
197
|
}
|
|
204
198
|
}
|
|
205
199
|
const deactivateFontFamily = font => {
|
|
@@ -223,10 +217,12 @@ function FontLibraryProvider({
|
|
|
223
217
|
});
|
|
224
218
|
// Add custom fonts to the browser.
|
|
225
219
|
fontsToAdd.forEach(font => {
|
|
226
|
-
font.fontFace
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
220
|
+
if (font.fontFace) {
|
|
221
|
+
font.fontFace.forEach(face => {
|
|
222
|
+
// Load font faces just in the iframe because they already are in the document.
|
|
223
|
+
(0, _utils.loadFontFaceInBrowser)(face, (0, _utils.getDisplaySrcFromFontFace)(face.src), 'iframe');
|
|
224
|
+
});
|
|
225
|
+
}
|
|
230
226
|
});
|
|
231
227
|
};
|
|
232
228
|
const toggleActivateFont = (font, face) => {
|
|
@@ -248,7 +244,7 @@ function FontLibraryProvider({
|
|
|
248
244
|
// Get the src of the font.
|
|
249
245
|
const src = (0, _utils.getDisplaySrcFromFontFace)(fontFace.src, themeUrl);
|
|
250
246
|
// If the font is already loaded, don't load it again.
|
|
251
|
-
if (loadedFontUrls.has(src)) return;
|
|
247
|
+
if (!src || loadedFontUrls.has(src)) return;
|
|
252
248
|
// Load the font in the browser.
|
|
253
249
|
(0, _utils.loadFontFaceInBrowser)(fontFace, src, 'document');
|
|
254
250
|
// Add the font to the loaded fonts list.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_blockEditor","_data","_coreData","_notices","_i18n","_resolvers","_lockUnlock","_utils","_toggleFont","_getIntersectingFontFaces","_interopRequireDefault","useGlobalSetting","unlock","blockEditorPrivateApis","FontLibraryContext","createContext","exports","FontLibraryProvider","children","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","useDispatch","coreStore","globalStylesId","useSelect","select","__experimentalGetCurrentGlobalStylesId","globalStyles","useEntityRecord","fontFamiliesHasChanges","edits","settings","typography","fontFamilies","createErrorNotice","noticesStore","isInstalling","setIsInstalling","useState","refreshKey","setRefreshKey","refreshLibrary","Date","now","records","libraryPosts","isResolving","isResolvingLibrary","hasResolved","hasResolvedLibrary","useEntityRecords","libraryFonts","map","post","JSON","parse","content","raw","setFontFamilies","baseFontFamilies","undefined","saveFontFamilies","modalTabOpen","setModalTabOpen","libraryFontSelected","setLibraryFontSelected","baseThemeFonts","theme","f","setUIValuesNeeded","source","sort","a","b","name","localeCompare","themeFonts","customFonts","custom","baseCustomFonts","useEffect","handleSetLibraryFontSelected","font","fonts","fontSelected","find","slug","toggleModal","tabName","loadedFontUrls","Set","site","currentTheme","getSite","getCurrentTheme","themeUrl","url","stylesheet","getAvailableFontsOutline","availableFontFamilies","outline","reduce","acc","availableFontFaces","Array","isArray","fontFace","face","fontStyle","fontWeight","getActivatedFontsOutline","isFontActivated","style","weight","includes","getFontFacesActivated","installFonts","formData","makeFormDataFromFontFamilies","fontsInstalled","fetchInstallFonts","fontToBeActivated","getIntersectingFontFaces","activateCustomFontFamilies","e","console","error","__","type","uninstallFont","fetchUninstallFonts","deactivateFontFamily","_fontFamilies$font$so","initialCustomFonts","newCustomFonts","filter","fontsToAdd","mergeFontFamilies","forEach","loadFontFaceInBrowser","getDisplaySrcFromFontFace","src","toggleActivateFont","_fontFamilies$font$so2","initialFonts","newFonts","toggleFont","loadFontFaceAsset","has","add","collections","setFontCollections","getFontCollections","response","fetchFontCollections","getFontCollection","id","hasData","collection","data","fetchFontCollection","updatedCollections","createElement","Provider","value","_default","default"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/context.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext, useState, useEffect } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseEntityRecord,\n\tuseEntityRecords,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tfetchInstallFonts,\n\tfetchUninstallFonts,\n\tfetchFontCollections,\n\tfetchFontCollection,\n} from './resolvers';\nimport { unlock } from '../../../lock-unlock';\nconst { useGlobalSetting } = unlock( blockEditorPrivateApis );\nimport {\n\tsetUIValuesNeeded,\n\tmergeFontFamilies,\n\tloadFontFaceInBrowser,\n\tgetDisplaySrcFromFontFace,\n\tmakeFormDataFromFontFamilies,\n} from './utils';\nimport { toggleFont } from './utils/toggleFont';\nimport getIntersectingFontFaces from './utils/get-intersecting-font-faces';\n\nexport const FontLibraryContext = createContext( {} );\n\nfunction FontLibraryProvider( { children } ) {\n\tconst { __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits } =\n\t\tuseDispatch( coreStore );\n\tconst { globalStylesId } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentGlobalStylesId } = select( coreStore );\n\t\treturn { globalStylesId: __experimentalGetCurrentGlobalStylesId() };\n\t} );\n\n\tconst globalStyles = useEntityRecord(\n\t\t'root',\n\t\t'globalStyles',\n\t\tglobalStylesId\n\t);\n\tconst fontFamiliesHasChanges =\n\t\t!! globalStyles?.edits?.settings?.typography?.fontFamilies;\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst [ isInstalling, setIsInstalling ] = useState( false );\n\tconst [ refreshKey, setRefreshKey ] = useState( 0 );\n\n\tconst refreshLibrary = () => {\n\t\tsetRefreshKey( Date.now() );\n\t};\n\n\tconst {\n\t\trecords: libraryPosts = [],\n\t\tisResolving: isResolvingLibrary,\n\t\thasResolved: hasResolvedLibrary,\n\t} = useEntityRecords( 'postType', 'wp_font_family', { refreshKey } );\n\n\tconst libraryFonts =\n\t\t( libraryPosts || [] ).map( ( post ) =>\n\t\t\tJSON.parse( post.content.raw )\n\t\t) || [];\n\n\t// Global Styles (settings) font families\n\tconst [ fontFamilies, setFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies'\n\t);\n\t// theme.json file font families\n\tconst [ baseFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies',\n\t\tundefined,\n\t\t'base'\n\t);\n\n\t// Save font families to the global styles post in the database.\n\tconst saveFontFamilies = () => {\n\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t'settings.typography.fontFamilies',\n\t\t] );\n\t};\n\n\t// Library Fonts\n\tconst [ modalTabOpen, setModalTabOpen ] = useState( false );\n\tconst [ libraryFontSelected, setLibraryFontSelected ] = useState( null );\n\n\tconst baseThemeFonts = baseFontFamilies?.theme\n\t\t? baseFontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst themeFonts = fontFamilies?.theme\n\t\t? fontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst customFonts = fontFamilies?.custom\n\t\t? fontFamilies.custom\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst baseCustomFonts = libraryFonts\n\t\t? libraryFonts\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tuseEffect( () => {\n\t\tif ( ! modalTabOpen ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t}\n\t}, [ modalTabOpen ] );\n\n\tconst handleSetLibraryFontSelected = ( font ) => {\n\t\t// If font is null, reset the selected font\n\t\tif ( ! font ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst fonts =\n\t\t\tfont.source === 'theme' ? baseThemeFonts : baseCustomFonts;\n\n\t\t// Tries to find the font in the installed fonts\n\t\tconst fontSelected = fonts.find( ( f ) => f.slug === font.slug );\n\t\t// If the font is not found (it is only defined in custom styles), use the font from custom styles\n\t\tsetLibraryFontSelected( {\n\t\t\t...( fontSelected || font ),\n\t\t\tsource: font.source,\n\t\t} );\n\t};\n\n\tconst toggleModal = ( tabName ) => {\n\t\tsetModalTabOpen( tabName || null );\n\t};\n\n\t// Demo\n\tconst [ loadedFontUrls ] = useState( new Set() );\n\n\t// Theme data\n\tconst { site, currentTheme } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tsite: select( coreStore ).getSite(),\n\t\t\tcurrentTheme: select( coreStore ).getCurrentTheme(),\n\t\t};\n\t} );\n\tconst themeUrl =\n\t\tsite?.url + '/wp-content/themes/' + currentTheme?.stylesheet;\n\n\tconst getAvailableFontsOutline = ( availableFontFamilies ) => {\n\t\tconst outline = availableFontFamilies.reduce( ( acc, font ) => {\n\t\t\tconst availableFontFaces = Array.isArray( font?.fontFace )\n\t\t\t\t? font?.fontFace.map(\n\t\t\t\t\t\t( face ) => `${ face.fontStyle + face.fontWeight }`\n\t\t\t\t )\n\t\t\t\t: [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400\n\n\t\t\tacc[ font.slug ] = availableFontFaces;\n\t\t\treturn acc;\n\t\t}, {} );\n\t\treturn outline;\n\t};\n\n\tconst getActivatedFontsOutline = ( source ) => {\n\t\tswitch ( source ) {\n\t\t\tcase 'theme':\n\t\t\t\treturn getAvailableFontsOutline( themeFonts );\n\t\t\tcase 'custom':\n\t\t\tdefault:\n\t\t\t\treturn getAvailableFontsOutline( customFonts );\n\t\t}\n\t};\n\n\tconst isFontActivated = ( slug, style, weight, source ) => {\n\t\tif ( ! style && ! weight ) {\n\t\t\treturn !! getActivatedFontsOutline( source )[ slug ];\n\t\t}\n\t\treturn !! getActivatedFontsOutline( source )[ slug ]?.includes(\n\t\t\tstyle + weight\n\t\t);\n\t};\n\n\tconst getFontFacesActivated = ( slug, source ) => {\n\t\treturn getActivatedFontsOutline( source )[ slug ] || [];\n\t};\n\n\tasync function installFonts( fonts ) {\n\t\tsetIsInstalling( true );\n\t\ttry {\n\t\t\t// Prepare formData to install.\n\t\t\tconst formData = makeFormDataFromFontFamilies( fonts );\n\t\t\t// Install the fonts (upload the font files to the server and create the post in the database).\n\t\t\tconst fontsInstalled = await fetchInstallFonts( formData );\n\t\t\t// Get intersecting font faces between the fonts we tried to installed and the fonts that were installed\n\t\t\t// (to avoid activating a non installed font).\n\t\t\tconst fontToBeActivated = getIntersectingFontFaces(\n\t\t\t\tfontsInstalled,\n\t\t\t\tfonts\n\t\t\t);\n\t\t\t// Activate the font families (add the font families to the global styles).\n\t\t\tactivateCustomFontFamilies( fontToBeActivated );\n\t\t\t// Save the global styles to the database.\n\t\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t\t'settings.typography.fontFamilies',\n\t\t\t] );\n\t\t\trefreshLibrary();\n\t\t\tsetIsInstalling( false );\n\t\t\treturn true;\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tcreateErrorNotice( __( 'Error installing fonts.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tsetIsInstalling( false );\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync function uninstallFont( font ) {\n\t\ttry {\n\t\t\t// Uninstall the font (remove the font files from the server and the post from the database).\n\t\t\tawait fetchUninstallFonts( [ font ] );\n\t\t\t// Deactivate the font family (remove the font family from the global styles).\n\t\t\tdeactivateFontFamily( font );\n\t\t\t// Save the global styles to the database.\n\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t'root',\n\t\t\t\t'globalStyles',\n\t\t\t\tglobalStylesId,\n\t\t\t\t[ 'settings.typography.fontFamilies' ]\n\t\t\t);\n\t\t\t// Refresh the library (the the library font families from database).\n\t\t\trefreshLibrary();\n\t\t\treturn true;\n\t\t} catch ( e ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( e );\n\t\t\tcreateErrorNotice( __( 'Error uninstalling fonts.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst deactivateFontFamily = ( font ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialCustomFonts = fontFamilies?.[ font.source ] ?? [];\n\t\tconst newCustomFonts = initialCustomFonts.filter(\n\t\t\t( f ) => f.slug !== font.slug\n\t\t);\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newCustomFonts,\n\t\t} );\n\t};\n\n\tconst activateCustomFontFamilies = ( fontsToAdd ) => {\n\t\t// Merge the existing custom fonts with the new fonts.\n\t\tconst newCustomFonts = mergeFontFamilies(\n\t\t\tfontFamilies?.custom,\n\t\t\tfontsToAdd\n\t\t);\n\t\t// Activate the fonts by set the new custom fonts array.\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\tcustom: newCustomFonts,\n\t\t} );\n\t\t// Add custom fonts to the browser.\n\t\tfontsToAdd.forEach( ( font ) => {\n\t\t\tfont.fontFace.forEach( ( face ) => {\n\t\t\t\t// Load font faces just in the iframe because they already are in the document.\n\t\t\t\tloadFontFaceInBrowser(\n\t\t\t\t\tface,\n\t\t\t\t\tgetDisplaySrcFromFontFace( face.src ),\n\t\t\t\t\t'iframe'\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t};\n\n\tconst toggleActivateFont = ( font, face ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialFonts = fontFamilies?.[ font.source ] ?? [];\n\t\t// Toggles the received font family or font face\n\t\tconst newFonts = toggleFont( font, face, initialFonts );\n\t\t// Updates the font families activated in global settings:\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newFonts,\n\t\t} );\n\t};\n\n\tconst loadFontFaceAsset = async ( fontFace ) => {\n\t\t// If the font doesn't have a src, don't load it.\n\t\tif ( ! fontFace.src ) return;\n\t\t// Get the src of the font.\n\t\tconst src = getDisplaySrcFromFontFace( fontFace.src, themeUrl );\n\t\t// If the font is already loaded, don't load it again.\n\t\tif ( loadedFontUrls.has( src ) ) return;\n\t\t// Load the font in the browser.\n\t\tloadFontFaceInBrowser( fontFace, src, 'document' );\n\t\t// Add the font to the loaded fonts list.\n\t\tloadedFontUrls.add( src );\n\t};\n\n\t// Font Collections\n\tconst [ collections, setFontCollections ] = useState( [] );\n\tconst getFontCollections = async () => {\n\t\tconst response = await fetchFontCollections();\n\t\tsetFontCollections( response );\n\t};\n\tconst getFontCollection = async ( id ) => {\n\t\tconst hasData = !! collections.find(\n\t\t\t( collection ) => collection.id === id\n\t\t)?.data;\n\t\tif ( hasData ) return;\n\t\tconst response = await fetchFontCollection( id );\n\t\tconst updatedCollections = collections.map( ( collection ) =>\n\t\t\tcollection.id === id\n\t\t\t\t? { ...collection, data: { ...response?.data } }\n\t\t\t\t: collection\n\t\t);\n\t\tsetFontCollections( updatedCollections );\n\t};\n\n\tuseEffect( () => {\n\t\tgetFontCollections();\n\t}, [] );\n\n\treturn (\n\t\t<FontLibraryContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tlibraryFontSelected,\n\t\t\t\thandleSetLibraryFontSelected,\n\t\t\t\tthemeFonts,\n\t\t\t\tbaseThemeFonts,\n\t\t\t\tcustomFonts,\n\t\t\t\tbaseCustomFonts,\n\t\t\t\tisFontActivated,\n\t\t\t\tgetFontFacesActivated,\n\t\t\t\tloadFontFaceAsset,\n\t\t\t\tinstallFonts,\n\t\t\t\tuninstallFont,\n\t\t\t\ttoggleActivateFont,\n\t\t\t\tgetAvailableFontsOutline,\n\t\t\t\tmodalTabOpen,\n\t\t\t\ttoggleModal,\n\t\t\t\trefreshLibrary,\n\t\t\t\tsaveFontFamilies,\n\t\t\t\tfontFamiliesHasChanges,\n\t\t\t\tisResolvingLibrary,\n\t\t\t\thasResolvedLibrary,\n\t\t\t\tisInstalling,\n\t\t\t\tcollections,\n\t\t\t\tgetFontCollection,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</FontLibraryContext.Provider>\n\t);\n}\n\nexport default FontLibraryProvider;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_blockEditor","_data","_coreData","_resolvers","_lockUnlock","_utils","_toggleFont","_getIntersectingFontFaces","_interopRequireDefault","useGlobalSetting","unlock","blockEditorPrivateApis","FontLibraryContext","createContext","exports","FontLibraryProvider","children","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","useDispatch","coreStore","globalStylesId","useSelect","select","__experimentalGetCurrentGlobalStylesId","globalStyles","useEntityRecord","fontFamiliesHasChanges","edits","settings","typography","fontFamilies","isInstalling","setIsInstalling","useState","refreshKey","setRefreshKey","refreshLibrary","Date","now","records","libraryPosts","isResolving","isResolvingLibrary","hasResolved","hasResolvedLibrary","useEntityRecords","libraryFonts","map","post","JSON","parse","content","raw","setFontFamilies","baseFontFamilies","undefined","saveFontFamilies","modalTabOpen","setModalTabOpen","libraryFontSelected","setLibraryFontSelected","baseThemeFonts","theme","f","setUIValuesNeeded","source","sort","a","b","name","localeCompare","themeFonts","customFonts","custom","baseCustomFonts","useEffect","handleSetLibraryFontSelected","font","fonts","fontSelected","find","slug","toggleModal","tabName","loadedFontUrls","Set","site","currentTheme","getSite","getCurrentTheme","themeUrl","url","stylesheet","getAvailableFontsOutline","availableFontFamilies","outline","reduce","acc","availableFontFaces","Array","isArray","fontFace","face","fontStyle","fontWeight","getActivatedFontsOutline","isFontActivated","style","weight","includes","getFontFacesActivated","installFonts","formData","makeFormDataFromFontFamilies","response","fetchInstallFonts","fontsInstalled","successes","fontToBeActivated","getIntersectingFontFaces","activateCustomFontFamilies","error","errors","uninstallFont","fetchUninstallFonts","deactivateFontFamily","console","_fontFamilies$font$so","initialCustomFonts","newCustomFonts","filter","fontsToAdd","mergeFontFamilies","forEach","loadFontFaceInBrowser","getDisplaySrcFromFontFace","src","toggleActivateFont","_fontFamilies$font$so2","initialFonts","newFonts","toggleFont","loadFontFaceAsset","has","add","collections","setFontCollections","getFontCollections","fetchFontCollections","getFontCollection","id","hasData","collection","data","fetchFontCollection","updatedCollections","createElement","Provider","value","_default","default"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/context.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext, useState, useEffect } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseEntityRecord,\n\tuseEntityRecords,\n\tstore as coreStore,\n} from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tfetchInstallFonts,\n\tfetchUninstallFonts,\n\tfetchFontCollections,\n\tfetchFontCollection,\n} from './resolvers';\nimport { unlock } from '../../../lock-unlock';\nconst { useGlobalSetting } = unlock( blockEditorPrivateApis );\nimport {\n\tsetUIValuesNeeded,\n\tmergeFontFamilies,\n\tloadFontFaceInBrowser,\n\tgetDisplaySrcFromFontFace,\n\tmakeFormDataFromFontFamilies,\n} from './utils';\nimport { toggleFont } from './utils/toggleFont';\nimport getIntersectingFontFaces from './utils/get-intersecting-font-faces';\n\nexport const FontLibraryContext = createContext( {} );\n\nfunction FontLibraryProvider( { children } ) {\n\tconst { __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits } =\n\t\tuseDispatch( coreStore );\n\tconst { globalStylesId } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentGlobalStylesId } = select( coreStore );\n\t\treturn { globalStylesId: __experimentalGetCurrentGlobalStylesId() };\n\t} );\n\n\tconst globalStyles = useEntityRecord(\n\t\t'root',\n\t\t'globalStyles',\n\t\tglobalStylesId\n\t);\n\tconst fontFamiliesHasChanges =\n\t\t!! globalStyles?.edits?.settings?.typography?.fontFamilies;\n\n\tconst [ isInstalling, setIsInstalling ] = useState( false );\n\tconst [ refreshKey, setRefreshKey ] = useState( 0 );\n\n\tconst refreshLibrary = () => {\n\t\tsetRefreshKey( Date.now() );\n\t};\n\n\tconst {\n\t\trecords: libraryPosts = [],\n\t\tisResolving: isResolvingLibrary,\n\t\thasResolved: hasResolvedLibrary,\n\t} = useEntityRecords( 'postType', 'wp_font_family', { refreshKey } );\n\n\tconst libraryFonts =\n\t\t( libraryPosts || [] ).map( ( post ) =>\n\t\t\tJSON.parse( post.content.raw )\n\t\t) || [];\n\n\t// Global Styles (settings) font families\n\tconst [ fontFamilies, setFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies'\n\t);\n\t// theme.json file font families\n\tconst [ baseFontFamilies ] = useGlobalSetting(\n\t\t'typography.fontFamilies',\n\t\tundefined,\n\t\t'base'\n\t);\n\n\t// Save font families to the global styles post in the database.\n\tconst saveFontFamilies = () => {\n\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t'settings.typography.fontFamilies',\n\t\t] );\n\t};\n\n\t// Library Fonts\n\tconst [ modalTabOpen, setModalTabOpen ] = useState( false );\n\tconst [ libraryFontSelected, setLibraryFontSelected ] = useState( null );\n\n\tconst baseThemeFonts = baseFontFamilies?.theme\n\t\t? baseFontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst themeFonts = fontFamilies?.theme\n\t\t? fontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst customFonts = fontFamilies?.custom\n\t\t? fontFamilies.custom\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst baseCustomFonts = libraryFonts\n\t\t? libraryFonts\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tuseEffect( () => {\n\t\tif ( ! modalTabOpen ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t}\n\t}, [ modalTabOpen ] );\n\n\tconst handleSetLibraryFontSelected = ( font ) => {\n\t\t// If font is null, reset the selected font\n\t\tif ( ! font ) {\n\t\t\tsetLibraryFontSelected( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst fonts =\n\t\t\tfont.source === 'theme' ? baseThemeFonts : baseCustomFonts;\n\n\t\t// Tries to find the font in the installed fonts\n\t\tconst fontSelected = fonts.find( ( f ) => f.slug === font.slug );\n\t\t// If the font is not found (it is only defined in custom styles), use the font from custom styles\n\t\tsetLibraryFontSelected( {\n\t\t\t...( fontSelected || font ),\n\t\t\tsource: font.source,\n\t\t} );\n\t};\n\n\tconst toggleModal = ( tabName ) => {\n\t\tsetModalTabOpen( tabName || null );\n\t};\n\n\t// Demo\n\tconst [ loadedFontUrls ] = useState( new Set() );\n\n\t// Theme data\n\tconst { site, currentTheme } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tsite: select( coreStore ).getSite(),\n\t\t\tcurrentTheme: select( coreStore ).getCurrentTheme(),\n\t\t};\n\t} );\n\tconst themeUrl =\n\t\tsite?.url + '/wp-content/themes/' + currentTheme?.stylesheet;\n\n\tconst getAvailableFontsOutline = ( availableFontFamilies ) => {\n\t\tconst outline = availableFontFamilies.reduce( ( acc, font ) => {\n\t\t\tconst availableFontFaces = Array.isArray( font?.fontFace )\n\t\t\t\t? font?.fontFace.map(\n\t\t\t\t\t\t( face ) => `${ face.fontStyle + face.fontWeight }`\n\t\t\t\t )\n\t\t\t\t: [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400\n\n\t\t\tacc[ font.slug ] = availableFontFaces;\n\t\t\treturn acc;\n\t\t}, {} );\n\t\treturn outline;\n\t};\n\n\tconst getActivatedFontsOutline = ( source ) => {\n\t\tswitch ( source ) {\n\t\t\tcase 'theme':\n\t\t\t\treturn getAvailableFontsOutline( themeFonts );\n\t\t\tcase 'custom':\n\t\t\tdefault:\n\t\t\t\treturn getAvailableFontsOutline( customFonts );\n\t\t}\n\t};\n\n\tconst isFontActivated = ( slug, style, weight, source ) => {\n\t\tif ( ! style && ! weight ) {\n\t\t\treturn !! getActivatedFontsOutline( source )[ slug ];\n\t\t}\n\t\treturn !! getActivatedFontsOutline( source )[ slug ]?.includes(\n\t\t\tstyle + weight\n\t\t);\n\t};\n\n\tconst getFontFacesActivated = ( slug, source ) => {\n\t\treturn getActivatedFontsOutline( source )[ slug ] || [];\n\t};\n\n\tasync function installFonts( fonts ) {\n\t\tsetIsInstalling( true );\n\t\ttry {\n\t\t\t// Prepare formData to install.\n\t\t\tconst formData = makeFormDataFromFontFamilies( fonts );\n\t\t\t// Install the fonts (upload the font files to the server and create the post in the database).\n\t\t\tconst response = await fetchInstallFonts( formData );\n\t\t\tconst fontsInstalled = response?.successes || [];\n\t\t\t// Get intersecting font faces between the fonts we tried to installed and the fonts that were installed\n\t\t\t// (to avoid activating a non installed font).\n\t\t\tconst fontToBeActivated = getIntersectingFontFaces(\n\t\t\t\tfontsInstalled,\n\t\t\t\tfonts\n\t\t\t);\n\t\t\t// Activate the font families (add the font families to the global styles).\n\t\t\tactivateCustomFontFamilies( fontToBeActivated );\n\t\t\t// Save the global styles to the database.\n\t\t\tsaveSpecifiedEntityEdits( 'root', 'globalStyles', globalStylesId, [\n\t\t\t\t'settings.typography.fontFamilies',\n\t\t\t] );\n\t\t\trefreshLibrary();\n\t\t\tsetIsInstalling( false );\n\n\t\t\treturn response;\n\t\t} catch ( error ) {\n\t\t\tsetIsInstalling( false );\n\t\t\treturn {\n\t\t\t\terrors: [ error ],\n\t\t\t};\n\t\t}\n\t}\n\n\tasync function uninstallFont( font ) {\n\t\ttry {\n\t\t\t// Uninstall the font (remove the font files from the server and the post from the database).\n\t\t\tconst response = await fetchUninstallFonts( [ font ] );\n\t\t\t// Deactivate the font family (remove the font family from the global styles).\n\t\t\tif ( ! response.errors ) {\n\t\t\t\tdeactivateFontFamily( font );\n\t\t\t\t// Save the global styles to the database.\n\t\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t\t'root',\n\t\t\t\t\t'globalStyles',\n\t\t\t\t\tglobalStylesId,\n\t\t\t\t\t[ 'settings.typography.fontFamilies' ]\n\t\t\t\t);\n\t\t\t}\n\t\t\t// Refresh the library (the the library font families from database).\n\t\t\trefreshLibrary();\n\t\t\treturn response;\n\t\t} catch ( error ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( error );\n\t\t\treturn {\n\t\t\t\terrors: [ error ],\n\t\t\t};\n\t\t}\n\t}\n\n\tconst deactivateFontFamily = ( font ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialCustomFonts = fontFamilies?.[ font.source ] ?? [];\n\t\tconst newCustomFonts = initialCustomFonts.filter(\n\t\t\t( f ) => f.slug !== font.slug\n\t\t);\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newCustomFonts,\n\t\t} );\n\t};\n\n\tconst activateCustomFontFamilies = ( fontsToAdd ) => {\n\t\t// Merge the existing custom fonts with the new fonts.\n\t\tconst newCustomFonts = mergeFontFamilies(\n\t\t\tfontFamilies?.custom,\n\t\t\tfontsToAdd\n\t\t);\n\t\t// Activate the fonts by set the new custom fonts array.\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\tcustom: newCustomFonts,\n\t\t} );\n\t\t// Add custom fonts to the browser.\n\t\tfontsToAdd.forEach( ( font ) => {\n\t\t\tif ( font.fontFace ) {\n\t\t\t\tfont.fontFace.forEach( ( face ) => {\n\t\t\t\t\t// Load font faces just in the iframe because they already are in the document.\n\t\t\t\t\tloadFontFaceInBrowser(\n\t\t\t\t\t\tface,\n\t\t\t\t\t\tgetDisplaySrcFromFontFace( face.src ),\n\t\t\t\t\t\t'iframe'\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst toggleActivateFont = ( font, face ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialFonts = fontFamilies?.[ font.source ] ?? [];\n\t\t// Toggles the received font family or font face\n\t\tconst newFonts = toggleFont( font, face, initialFonts );\n\t\t// Updates the font families activated in global settings:\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ]: newFonts,\n\t\t} );\n\t};\n\n\tconst loadFontFaceAsset = async ( fontFace ) => {\n\t\t// If the font doesn't have a src, don't load it.\n\t\tif ( ! fontFace.src ) return;\n\t\t// Get the src of the font.\n\t\tconst src = getDisplaySrcFromFontFace( fontFace.src, themeUrl );\n\t\t// If the font is already loaded, don't load it again.\n\t\tif ( ! src || loadedFontUrls.has( src ) ) return;\n\t\t// Load the font in the browser.\n\t\tloadFontFaceInBrowser( fontFace, src, 'document' );\n\t\t// Add the font to the loaded fonts list.\n\t\tloadedFontUrls.add( src );\n\t};\n\n\t// Font Collections\n\tconst [ collections, setFontCollections ] = useState( [] );\n\tconst getFontCollections = async () => {\n\t\tconst response = await fetchFontCollections();\n\t\tsetFontCollections( response );\n\t};\n\tconst getFontCollection = async ( id ) => {\n\t\tconst hasData = !! collections.find(\n\t\t\t( collection ) => collection.id === id\n\t\t)?.data;\n\t\tif ( hasData ) return;\n\t\tconst response = await fetchFontCollection( id );\n\t\tconst updatedCollections = collections.map( ( collection ) =>\n\t\t\tcollection.id === id\n\t\t\t\t? { ...collection, data: { ...response?.data } }\n\t\t\t\t: collection\n\t\t);\n\t\tsetFontCollections( updatedCollections );\n\t};\n\n\tuseEffect( () => {\n\t\tgetFontCollections();\n\t}, [] );\n\n\treturn (\n\t\t<FontLibraryContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tlibraryFontSelected,\n\t\t\t\thandleSetLibraryFontSelected,\n\t\t\t\tthemeFonts,\n\t\t\t\tbaseThemeFonts,\n\t\t\t\tcustomFonts,\n\t\t\t\tbaseCustomFonts,\n\t\t\t\tisFontActivated,\n\t\t\t\tgetFontFacesActivated,\n\t\t\t\tloadFontFaceAsset,\n\t\t\t\tinstallFonts,\n\t\t\t\tuninstallFont,\n\t\t\t\ttoggleActivateFont,\n\t\t\t\tgetAvailableFontsOutline,\n\t\t\t\tmodalTabOpen,\n\t\t\t\ttoggleModal,\n\t\t\t\trefreshLibrary,\n\t\t\t\tsaveFontFamilies,\n\t\t\t\tfontFamiliesHasChanges,\n\t\t\t\tisResolvingLibrary,\n\t\t\t\thasResolvedLibrary,\n\t\t\t\tisInstalling,\n\t\t\t\tcollections,\n\t\t\t\tgetFontCollection,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</FontLibraryContext.Provider>\n\t);\n}\n\nexport default FontLibraryProvider;\n"],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ var _collectionFontDetails = _interopRequireDefault(require("./collection-font-d
|
|
|
19
19
|
var _toggleFont = require("./utils/toggleFont");
|
|
20
20
|
var _fontsOutline = require("./utils/fonts-outline");
|
|
21
21
|
var _googleFontsConfirmDialog = _interopRequireDefault(require("./google-fonts-confirm-dialog"));
|
|
22
|
+
var _getNoticeFromResponse = require("./utils/get-notice-from-response");
|
|
22
23
|
/**
|
|
23
24
|
* WordPress dependencies
|
|
24
25
|
*/
|
|
@@ -39,13 +40,15 @@ function FontCollection({
|
|
|
39
40
|
const getGoogleFontsPermissionFromStorage = () => {
|
|
40
41
|
return window.localStorage.getItem('wp-font-library-default-font-collection-permission') === 'true';
|
|
41
42
|
};
|
|
43
|
+
const [notice, setNotice] = (0, _element.useState)(null);
|
|
42
44
|
const [selectedFont, setSelectedFont] = (0, _element.useState)(null);
|
|
43
45
|
const [fontsToInstall, setFontsToInstall] = (0, _element.useState)([]);
|
|
44
46
|
const [filters, setFilters] = (0, _element.useState)({});
|
|
45
47
|
const [renderConfirmDialog, setRenderConfirmDialog] = (0, _element.useState)(requiresPermission && !getGoogleFontsPermissionFromStorage());
|
|
46
48
|
const {
|
|
47
49
|
collections,
|
|
48
|
-
getFontCollection
|
|
50
|
+
getFontCollection,
|
|
51
|
+
installFonts
|
|
49
52
|
} = (0, _element.useContext)(_context.FontLibraryContext);
|
|
50
53
|
const selectedCollection = collections.find(collection => collection.id === id);
|
|
51
54
|
(0, _element.useEffect)(() => {
|
|
@@ -63,6 +66,16 @@ function FontCollection({
|
|
|
63
66
|
(0, _element.useEffect)(() => {
|
|
64
67
|
setSelectedFont(null);
|
|
65
68
|
}, [id]);
|
|
69
|
+
|
|
70
|
+
// Reset notice after 5 seconds
|
|
71
|
+
(0, _element.useEffect)(() => {
|
|
72
|
+
if (notice) {
|
|
73
|
+
const timeout = setTimeout(() => {
|
|
74
|
+
setNotice(null);
|
|
75
|
+
}, 5000);
|
|
76
|
+
return () => clearTimeout(timeout);
|
|
77
|
+
}
|
|
78
|
+
}, [notice]);
|
|
66
79
|
const collectionFonts = (0, _element.useMemo)(() => {
|
|
67
80
|
var _selectedCollection$d;
|
|
68
81
|
return (_selectedCollection$d = selectedCollection?.data?.fontFamilies) !== null && _selectedCollection$d !== void 0 ? _selectedCollection$d : [];
|
|
@@ -103,17 +116,30 @@ function FontCollection({
|
|
|
103
116
|
const resetFontsToInstall = () => {
|
|
104
117
|
setFontsToInstall([]);
|
|
105
118
|
};
|
|
119
|
+
const handleInstall = async () => {
|
|
120
|
+
const response = await installFonts(fontsToInstall);
|
|
121
|
+
const installNotice = (0, _getNoticeFromResponse.getNoticeFromInstallResponse)(response);
|
|
122
|
+
setNotice(installNotice);
|
|
123
|
+
resetFontsToInstall();
|
|
124
|
+
};
|
|
106
125
|
return (0, _element.createElement)(_tabLayout.default, {
|
|
107
126
|
title: !selectedFont ? selectedCollection.name : selectedFont.name,
|
|
108
127
|
description: !selectedFont ? selectedCollection.description : (0, _i18n.__)('Select font variants to install.'),
|
|
109
128
|
handleBack: !!selectedFont && handleUnselectFont,
|
|
110
129
|
footer: fontsToInstall.length > 0 && (0, _element.createElement)(Footer, {
|
|
111
|
-
|
|
112
|
-
resetFontsToInstall: resetFontsToInstall
|
|
130
|
+
handleInstall: handleInstall
|
|
113
131
|
})
|
|
114
132
|
}, renderConfirmDialog && (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.__experimentalSpacer, {
|
|
115
133
|
margin: 8
|
|
116
|
-
}), (0, _element.createElement)(_googleFontsConfirmDialog.default, null)), !renderConfirmDialog && !selectedCollection.data && (0, _element.createElement)(_components.Spinner, null),
|
|
134
|
+
}), (0, _element.createElement)(_googleFontsConfirmDialog.default, null)), !renderConfirmDialog && !selectedCollection.data && (0, _element.createElement)(_components.Spinner, null), notice && (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.__experimentalSpacer, {
|
|
135
|
+
margin: 2
|
|
136
|
+
}), (0, _element.createElement)(_components.Notice, {
|
|
137
|
+
isDismissible: false,
|
|
138
|
+
status: notice.type,
|
|
139
|
+
className: "font-library-modal__font-collection__notice"
|
|
140
|
+
}, notice.message)), (0, _element.createElement)(_components.__experimentalSpacer, {
|
|
141
|
+
margin: 2
|
|
142
|
+
})), !renderConfirmDialog && !selectedFont && (0, _element.createElement)(_components.Flex, null, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.__experimentalInputControl, {
|
|
117
143
|
value: filters.search,
|
|
118
144
|
placeholder: (0, _i18n.__)('Font name…'),
|
|
119
145
|
label: (0, _i18n.__)('Search'),
|
|
@@ -147,17 +173,11 @@ function FontCollection({
|
|
|
147
173
|
}))));
|
|
148
174
|
}
|
|
149
175
|
function Footer({
|
|
150
|
-
|
|
151
|
-
resetFontsToInstall
|
|
176
|
+
handleInstall
|
|
152
177
|
}) {
|
|
153
178
|
const {
|
|
154
|
-
installFonts,
|
|
155
179
|
isInstalling
|
|
156
180
|
} = (0, _element.useContext)(_context.FontLibraryContext);
|
|
157
|
-
const handleInstall = async () => {
|
|
158
|
-
await installFonts(fontsToInstall);
|
|
159
|
-
resetFontsToInstall();
|
|
160
|
-
};
|
|
161
181
|
return (0, _element.createElement)(_components.Flex, {
|
|
162
182
|
justify: "flex-end"
|
|
163
183
|
}, (0, _element.createElement)(_components.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_components","_compose","_i18n","_icons","_tabLayout","_interopRequireDefault","_context","_fontsGrid","_fontCard","_filterFonts","_collectionFontDetails","_toggleFont","_fontsOutline","_googleFontsConfirmDialog","DEFAULT_CATEGORY","id","name","__","FontCollection","_selectedCollection$d2","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","selectedFont","setSelectedFont","useState","fontsToInstall","setFontsToInstall","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","useContext","FontLibraryContext","selectedCollection","find","collection","useEffect","handleStorage","addEventListener","removeEventListener","resetFilters","collectionFonts","useMemo","_selectedCollection$d","data","fontFamilies","collectionCategories","categories","fonts","filterFonts","handleCategoryFilter","category","handleUpdateSearchInput","value","search","debouncedUpdateSearchInput","debounce","resetSearch","handleUnselectFont","handleToggleVariant","font","face","newFontsToInstall","toggleFont","fontToInstallOutline","getFontsOutline","resetFontsToInstall","createElement","default","title","description","handleBack","footer","length","Footer","Fragment","__experimentalSpacer","margin","Spinner","Flex","FlexItem","__experimentalInputControl","placeholder","label","onChange","prefix","Icon","icon","suffix","closeSmall","onClick","SelectControl","map","key","__experimentalText","slug","installFonts","isInstalling","handleInstall","justify","Button","variant","isBusy","disabled","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext, useEffect, useState, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalInputControl as InputControl,\n\t__experimentalText as Text,\n\tSelectControl,\n\tSpinner,\n\tIcon,\n\tFlexItem,\n\tFlex,\n\tButton,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { search, closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport CollectionFontDetails from './collection-font-details';\nimport { toggleFont } from './utils/toggleFont';\nimport { getFontsOutline } from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\n\nconst DEFAULT_CATEGORY = {\n\tid: 'all',\n\tname: __( 'All' ),\n};\nfunction FontCollection( { id } ) {\n\tconst requiresPermission = id === 'default-font-collection';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(\n\t\t\t\t'wp-font-library-default-font-collection-permission'\n\t\t\t) === 'true'\n\t\t);\n\t};\n\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { collections, getFontCollection } = useContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.id === id\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ id, requiresPermission ] );\n\n\tuseEffect( () => {\n\t\tgetFontCollection( id );\n\t\tresetFilters();\n\t}, [ id, getFontCollection ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t}, [ id ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.data?.fontFamilies ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.data?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t};\n\n\tconst resetSearch = () => {\n\t\tsetFilters( { ...filters, search: '' } );\n\t};\n\n\tconst handleUnselectFont = () => {\n\t\tsetSelectedFont( null );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={\n\t\t\t\t! selectedFont ? selectedCollection.name : selectedFont.name\n\t\t\t}\n\t\t\tdescription={\n\t\t\t\t! selectedFont\n\t\t\t\t\t? selectedCollection.description\n\t\t\t\t\t: __( 'Select font variants to install.' )\n\t\t\t}\n\t\t\thandleBack={ !! selectedFont && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\tfontsToInstall.length > 0 && (\n\t\t\t\t\t<Footer\n\t\t\t\t\t\tfontsToInstall={ fontsToInstall }\n\t\t\t\t\t\tresetFontsToInstall={ resetFontsToInstall }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ renderConfirmDialog && (\n\t\t\t\t<>\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<GoogleFontsConfirmDialog />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedCollection.data && (\n\t\t\t\t<Spinner />\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\tprefix={ <Icon icon={ search } /> }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tfilters?.search ? (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\t\t\t\tonClick={ resetSearch }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tvalue={ category.id }\n\t\t\t\t\t\t\t\t\t\tkey={ category.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t! selectedCollection?.data?.fontFamilies && <Spinner /> }\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t!! selectedCollection?.data?.fontFamilies?.length &&\n\t\t\t\t! fonts.length && (\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'No fonts found. Try with a different seach term'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && selectedFont && (\n\t\t\t\t<CollectionFontDetails\n\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\tfontToInstallOutline={ fontToInstallOutline }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<FontsGrid>\n\t\t\t\t\t{ fonts.map( ( font ) => (\n\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetSelectedFont( font );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</FontsGrid>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { fontsToInstall, resetFontsToInstall } ) {\n\tconst { installFonts, isInstalling } = useContext( FontLibraryContext );\n\n\tconst handleInstall = async () => {\n\t\tawait installFonts( fontsToInstall );\n\t\tresetFontsToInstall();\n\t};\n\n\treturn (\n\t\t<Flex justify=\"flex-end\">\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ handleInstall }\n\t\t\t\tisBusy={ isInstalling }\n\t\t\t\tdisabled={ isInstalling }\n\t\t\t>\n\t\t\t\t{ __( 'Install' ) }\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_components","_compose","_i18n","_icons","_tabLayout","_interopRequireDefault","_context","_fontsGrid","_fontCard","_filterFonts","_collectionFontDetails","_toggleFont","_fontsOutline","_googleFontsConfirmDialog","_getNoticeFromResponse","DEFAULT_CATEGORY","id","name","__","FontCollection","_selectedCollection$d2","requiresPermission","getGoogleFontsPermissionFromStorage","window","localStorage","getItem","notice","setNotice","useState","selectedFont","setSelectedFont","fontsToInstall","setFontsToInstall","filters","setFilters","renderConfirmDialog","setRenderConfirmDialog","collections","getFontCollection","installFonts","useContext","FontLibraryContext","selectedCollection","find","collection","useEffect","handleStorage","addEventListener","removeEventListener","resetFilters","timeout","setTimeout","clearTimeout","collectionFonts","useMemo","_selectedCollection$d","data","fontFamilies","collectionCategories","categories","fonts","filterFonts","handleCategoryFilter","category","handleUpdateSearchInput","value","search","debouncedUpdateSearchInput","debounce","resetSearch","handleUnselectFont","handleToggleVariant","font","face","newFontsToInstall","toggleFont","fontToInstallOutline","getFontsOutline","resetFontsToInstall","handleInstall","response","installNotice","getNoticeFromInstallResponse","createElement","default","title","description","handleBack","footer","length","Footer","Fragment","__experimentalSpacer","margin","Spinner","FlexItem","Notice","isDismissible","status","type","className","message","Flex","__experimentalInputControl","placeholder","label","onChange","prefix","Icon","icon","suffix","closeSmall","onClick","SelectControl","map","key","__experimentalText","slug","isInstalling","justify","Button","variant","isBusy","disabled","_default","exports"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/font-collection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext, useEffect, useState, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalInputControl as InputControl,\n\t__experimentalText as Text,\n\tSelectControl,\n\tSpinner,\n\tIcon,\n\tFlexItem,\n\tFlex,\n\tButton,\n\tNotice,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { search, closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TabLayout from './tab-layout';\nimport { FontLibraryContext } from './context';\nimport FontsGrid from './fonts-grid';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport CollectionFontDetails from './collection-font-details';\nimport { toggleFont } from './utils/toggleFont';\nimport { getFontsOutline } from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\nimport { getNoticeFromInstallResponse } from './utils/get-notice-from-response';\n\nconst DEFAULT_CATEGORY = {\n\tid: 'all',\n\tname: __( 'All' ),\n};\nfunction FontCollection( { id } ) {\n\tconst requiresPermission = id === 'default-font-collection';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn (\n\t\t\twindow.localStorage.getItem(\n\t\t\t\t'wp-font-library-default-font-collection-permission'\n\t\t\t) === 'true'\n\t\t);\n\t};\n\n\tconst [ notice, setNotice ] = useState( null );\n\tconst [ selectedFont, setSelectedFont ] = useState( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState( [] );\n\tconst [ filters, setFilters ] = useState( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { collections, getFontCollection, installFonts } =\n\t\tuseContext( FontLibraryContext );\n\tconst selectedCollection = collections.find(\n\t\t( collection ) => collection.id === id\n\t);\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ id, requiresPermission ] );\n\n\tuseEffect( () => {\n\t\tgetFontCollection( id );\n\t\tresetFilters();\n\t}, [ id, getFontCollection ] );\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t}, [ id ] );\n\n\t// Reset notice after 5 seconds\n\tuseEffect( () => {\n\t\tif ( notice ) {\n\t\t\tconst timeout = setTimeout( () => {\n\t\t\t\tsetNotice( null );\n\t\t\t}, 5000 );\n\t\t\treturn () => clearTimeout( timeout );\n\t\t}\n\t}, [ notice ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() => selectedCollection?.data?.fontFamilies ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.data?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\tconst handleCategoryFilter = ( category ) => {\n\t\tsetFilters( { ...filters, category } );\n\t};\n\n\tconst handleUpdateSearchInput = ( value ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t};\n\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst resetFilters = () => {\n\t\tsetFilters( {} );\n\t};\n\n\tconst resetSearch = () => {\n\t\tsetFilters( { ...filters, search: '' } );\n\t};\n\n\tconst handleUnselectFont = () => {\n\t\tsetSelectedFont( null );\n\t};\n\n\tconst handleToggleVariant = ( font, face ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\tconst handleInstall = async () => {\n\t\tconst response = await installFonts( fontsToInstall );\n\t\tconst installNotice = getNoticeFromInstallResponse( response );\n\t\tsetNotice( installNotice );\n\t\tresetFontsToInstall();\n\t};\n\n\treturn (\n\t\t<TabLayout\n\t\t\ttitle={\n\t\t\t\t! selectedFont ? selectedCollection.name : selectedFont.name\n\t\t\t}\n\t\t\tdescription={\n\t\t\t\t! selectedFont\n\t\t\t\t\t? selectedCollection.description\n\t\t\t\t\t: __( 'Select font variants to install.' )\n\t\t\t}\n\t\t\thandleBack={ !! selectedFont && handleUnselectFont }\n\t\t\tfooter={\n\t\t\t\tfontsToInstall.length > 0 && (\n\t\t\t\t\t<Footer handleInstall={ handleInstall } />\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ renderConfirmDialog && (\n\t\t\t\t<>\n\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t<GoogleFontsConfirmDialog />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedCollection.data && (\n\t\t\t\t<Spinner />\n\t\t\t) }\n\n\t\t\t{ notice && (\n\t\t\t\t<>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\tclassName=\"font-library-modal__font-collection__notice\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\tplaceholder={ __( 'Font name…' ) }\n\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\tprefix={ <Icon icon={ search } /> }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tfilters?.search ? (\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\t\t\t\tonClick={ resetSearch }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tvalue={ category.id }\n\t\t\t\t\t\t\t\t\t\tkey={ category.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t) }\n\n\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t! selectedCollection?.data?.fontFamilies && <Spinner /> }\n\n\t\t\t{ ! renderConfirmDialog &&\n\t\t\t\t!! selectedCollection?.data?.fontFamilies?.length &&\n\t\t\t\t! fonts.length && (\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'No fonts found. Try with a different seach term'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && selectedFont && (\n\t\t\t\t<CollectionFontDetails\n\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\thandleToggleVariant={ handleToggleVariant }\n\t\t\t\t\tfontToInstallOutline={ fontToInstallOutline }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! renderConfirmDialog && ! selectedFont && (\n\t\t\t\t<FontsGrid>\n\t\t\t\t\t{ fonts.map( ( font ) => (\n\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetSelectedFont( font );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</FontsGrid>\n\t\t\t) }\n\t\t</TabLayout>\n\t);\n}\n\nfunction Footer( { handleInstall } ) {\n\tconst { isInstalling } = useContext( FontLibraryContext );\n\n\treturn (\n\t\t<Flex justify=\"flex-end\">\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ handleInstall }\n\t\t\t\tisBusy={ isInstalling }\n\t\t\t\tdisabled={ isInstalling }\n\t\t\t>\n\t\t\t\t{ __( 'Install' ) }\n\t\t\t</Button>\n\t\t</Flex>\n\t);\n}\n\nexport default FontCollection;\n"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ var _i18n = require("@wordpress/i18n");
|
|
|
10
10
|
var _components = require("@wordpress/components");
|
|
11
11
|
var _installedFonts = _interopRequireDefault(require("./installed-fonts"));
|
|
12
12
|
var _fontCollection = _interopRequireDefault(require("./font-collection"));
|
|
13
|
+
var _uploadFonts = _interopRequireDefault(require("./upload-fonts"));
|
|
13
14
|
var _context = require("./context");
|
|
14
15
|
/**
|
|
15
16
|
* WordPress dependencies
|
|
@@ -19,11 +20,15 @@ var _context = require("./context");
|
|
|
19
20
|
* Internal dependencies
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
|
-
const
|
|
23
|
+
const DEFAULT_TABS = [{
|
|
23
24
|
name: 'installed-fonts',
|
|
24
25
|
title: (0, _i18n.__)('Library'),
|
|
25
26
|
className: 'installed-fonts'
|
|
26
|
-
}
|
|
27
|
+
}, {
|
|
28
|
+
name: 'upload-fonts',
|
|
29
|
+
title: (0, _i18n.__)('Upload'),
|
|
30
|
+
className: 'upload-fonts'
|
|
31
|
+
}];
|
|
27
32
|
const tabsFromCollections = collections => collections.map(({
|
|
28
33
|
id,
|
|
29
34
|
name
|
|
@@ -39,7 +44,7 @@ function FontLibraryModal({
|
|
|
39
44
|
const {
|
|
40
45
|
collections
|
|
41
46
|
} = (0, _element.useContext)(_context.FontLibraryContext);
|
|
42
|
-
const tabs = [
|
|
47
|
+
const tabs = [...DEFAULT_TABS, ...tabsFromCollections(collections || [])];
|
|
43
48
|
return (0, _element.createElement)(_components.Modal, {
|
|
44
49
|
title: (0, _i18n.__)('Fonts'),
|
|
45
50
|
onRequestClose: onRequestClose,
|
|
@@ -51,6 +56,8 @@ function FontLibraryModal({
|
|
|
51
56
|
tabs: tabs
|
|
52
57
|
}, tab => {
|
|
53
58
|
switch (tab.name) {
|
|
59
|
+
case 'upload-fonts':
|
|
60
|
+
return (0, _element.createElement)(_uploadFonts.default, null);
|
|
54
61
|
case 'installed-fonts':
|
|
55
62
|
return (0, _element.createElement)(_installedFonts.default, null);
|
|
56
63
|
default:
|